Search in sources :

Example 61 with Pixel

use of org.jwildfire.image.Pixel in project JWildfire by thargor6.

the class MeshPreviewRenderer method renderMesh.

public static SimpleImage renderMesh(Mesh pMesh, int pWidth, int pHeight, double pPositionX, double pPositionY, double pSize, double pScaleZ, double pRotateAlpha, double pRotateBeta) {
    if (pMesh.getFaces().size() == 0)
        return new SimpleImage(pWidth, pHeight);
    Mesh3D mesh3d = new Mesh3D();
    mesh3d.setImageWidth(pWidth);
    mesh3d.setImageHeight(pHeight);
    int pCount = pMesh.getVertices().size();
    mesh3d.setPCount(pCount);
    double[] x = new double[pCount];
    double[] y = new double[pCount];
    double[] z = new double[pCount];
    double cx = pWidth / 2;
    double cy = pHeight / 2;
    int idx = 0;
    double xmin = pMesh.getPMin().x;
    double ymin = pMesh.getPMin().y;
    double zmin = pMesh.getPMin().z;
    double xmax = pMesh.getPMax().x;
    double ymax = pMesh.getPMax().y;
    double zmax = pMesh.getPMax().z;
    double size = (xmax - xmin + ymax - ymin + zmax - zmin) / 3.0;
    for (Point3f point : pMesh.getVertices()) {
        double currX = (point.x - xmin) / size * pWidth - cx;
        double currY = (point.y - ymin) / size * pHeight - cy;
        double currZ = pScaleZ * (point.z - zmin) / size * pHeight;
        x[idx] = currX;
        y[idx] = currY;
        z[idx] = currZ;
        idx++;
    }
    mesh3d.setX(x);
    mesh3d.setY(y);
    mesh3d.setZ(z);
    int fCount = pMesh.getFaces().size();
    mesh3d.setFCount(fCount);
    mesh3d.setU(null);
    mesh3d.setV(null);
    mesh3d.setTexture(null);
    int[] pp1 = new int[fCount];
    int[] pp2 = new int[fCount];
    int[] pp3 = new int[fCount];
    idx = 0;
    for (Face face : pMesh.getFaces()) {
        pp1[idx] = face.a;
        pp2[idx] = face.b;
        pp3[idx] = face.c;
        idx++;
    }
    mesh3d.setPP1(pp1);
    mesh3d.setPP2(pp2);
    mesh3d.setPP3(pp3);
    int[] color = new int[fCount];
    Pixel toolPixel = new Pixel();
    toolPixel.setRGB(225, 185, 160);
    int argb = toolPixel.getARGBValue();
    for (int c = 0; c < fCount; c++) {
        color[c] = argb;
    }
    mesh3d.setColor(color);
    PerspectiveTransformer trans = new PerspectiveTransformer();
    trans.setInputMesh3D(mesh3d);
    trans.setDoCam(true);
    trans.setCentreX(trans.getCentreX() * (1.0 + pPositionX));
    trans.setCentreY(trans.getCentreY() * (1.0 - pPositionY));
    trans.setZoom(pSize * 0.5);
    trans.setLight(Light.NORMAL);
    trans.setDoRotate(Rotate.YZ);
    trans.setSmoothing(0);
    trans.setAmbient(0.4);
    trans.setDoCam(false);
    trans.setAlpha(pRotateAlpha);
    trans.setBeta(pRotateBeta);
    trans.setLight1Color(new Color(255, 245, 180));
    SimpleImage out = new SimpleImage(pWidth, pHeight);
    trans.transformImage(out);
    return out;
}
Also used : Mesh3D(org.jwildfire.transform.Mesh3D) PerspectiveTransformer(org.jwildfire.transform.PerspectiveTransformer) SimpleImage(org.jwildfire.image.SimpleImage) Color(java.awt.Color) Pixel(org.jwildfire.image.Pixel)

Example 62 with Pixel

use of org.jwildfire.image.Pixel in project JWildfire by thargor6.

the class RGBPalette method transformColors.

private void transformColors() {
    int startIdx = selectionProvider.getFrom();
    int endIdx = selectionProvider.getTo();
    if (modified) {
        for (int i = 0; i < transformedColors.length; i++) {
            transformedColors[i] = null;
        }
        for (int i = 0; i < PALETTE_SIZE; i++) {
            RGBColor color = getRawColor(i);
            int idx = i + modShift;
            if (idx < 0) {
                idx += PALETTE_SIZE;
            } else if (idx >= PALETTE_SIZE) {
                idx -= PALETTE_SIZE;
            }
            transformedColors[idx] = new RGBColor(color.getRed(), color.getGreen(), color.getBlue());
        }
        if (modFrequency > 1) {
            RGBColor[] newTransformedColors = new RGBColor[PALETTE_SIZE];
            System.arraycopy(transformedColors, 0, newTransformedColors, 0, PALETTE_SIZE);
            int n = PALETTE_SIZE / modFrequency;
            for (int j = 0; j < modFrequency; j++) {
                for (int i = 0; i < n; i++) {
                    int idx = i + j * n;
                    if (idx < PALETTE_SIZE) {
                        newTransformedColors[idx] = transformedColors[i * modFrequency];
                    }
                }
            }
            System.arraycopy(newTransformedColors, 0, transformedColors, 0, PALETTE_SIZE);
            newTransformedColors = null;
        }
        if (modBlur > 0) {
            RGBColor[] newTransformedColors = new RGBColor[PALETTE_SIZE];
            System.arraycopy(transformedColors, 0, newTransformedColors, 0, PALETTE_SIZE);
            for (int i = 0; i < PALETTE_SIZE; i++) {
                int r = 0;
                int g = 0;
                int b = 0;
                int n = -1;
                for (int j = i - modBlur; j <= i + modBlur; j++) {
                    n++;
                    int k = (PALETTE_SIZE + j) % PALETTE_SIZE;
                    if (k != i) {
                        RGBColor color = transformedColors[k];
                        r += color.getRed();
                        g += color.getGreen();
                        b += color.getBlue();
                    }
                }
                if (n != 0) {
                    RGBColor color = new RGBColor(Tools.limitColor(r / n), Tools.limitColor(g / n), Tools.limitColor(b / n));
                    newTransformedColors[i] = color;
                }
            }
            System.arraycopy(newTransformedColors, 0, transformedColors, 0, PALETTE_SIZE);
            newTransformedColors = null;
        }
        SimpleImage img = new RGBPaletteRenderer().renderHorizPalette(transformedColors, PALETTE_SIZE, 1);
        if (modRed != 0 || modGreen != 0 || modBlue != 0 || modContrast != 0 || modGamma != 0 || modBrightness != 0 || modSaturation != 0) {
            BalancingTransformer bT = new BalancingTransformer();
            bT.setRed(modRed);
            bT.setGreen(modGreen);
            bT.setBlue(modBlue);
            bT.setContrast(modContrast);
            bT.setGamma(modGamma);
            bT.setBrightness(modBrightness);
            bT.setSaturation(modSaturation);
            bT.transformImage(img);
        }
        if (modHue != 0) {
            HSLTransformer hT = new HSLTransformer();
            hT.setHue(modHue);
            hT.transformImage(img);
        }
        if (modSwapRGB != 0) {
            SwapRGBTransformer sT = new SwapRGBTransformer();
            int maxValues = Mode.values().length;
            int idx = (int) ((double) Math.abs(modSwapRGB) / (double) 255.0 * (double) (maxValues - 1));
            sT.setMode(Mode.values()[idx]);
            sT.transformImage(img);
        }
        Pixel pixel = new Pixel();
        for (int i = startIdx; i <= endIdx; i++) {
            RGBColor color = transformedColors[i];
            pixel.setARGBValue(img.getARGBValue(i, 0));
            color.setRed(pixel.r);
            color.setGreen(pixel.g);
            color.setBlue(pixel.b);
        }
        modified = false;
    }
}
Also used : SwapRGBTransformer(org.jwildfire.transform.SwapRGBTransformer) BalancingTransformer(org.jwildfire.transform.BalancingTransformer) SimpleImage(org.jwildfire.image.SimpleImage) HSLTransformer(org.jwildfire.transform.HSLTransformer) Pixel(org.jwildfire.image.Pixel)

Aggregations

Pixel (org.jwildfire.image.Pixel)62 SimpleImage (org.jwildfire.image.SimpleImage)37 RGBColor (org.jwildfire.create.tina.palette.RGBColor)5 ArrayList (java.util.ArrayList)4 HashMap (java.util.HashMap)3 HSLPixel (org.jwildfire.transform.HSLTransformer.HSLPixel)3 Color (java.awt.Color)2 Graphics2D (java.awt.Graphics2D)2 BufferedImage (java.awt.image.BufferedImage)2 JEPWrapper (org.jwildfire.base.mathparser.JEPWrapper)2 HSLTransformer (org.jwildfire.transform.HSLTransformer)2 Node (org.nfunk.jep.Node)2 SVGDiagram (com.kitfox.svg.SVGDiagram)1 SVGUniverse (com.kitfox.svg.SVGUniverse)1 Graphics (java.awt.Graphics)1 File (java.io.File)1 FileOutputStream (java.io.FileOutputStream)1 OutputStreamWriter (java.io.OutputStreamWriter)1 StringReader (java.io.StringReader)1 Writer (java.io.Writer)1