Package org.joshy.sketch.actions.io

Source Code of org.joshy.sketch.actions.io.PNGExportTest

package org.joshy.sketch.actions.io;

import org.joshy.gfx.Core;
import org.joshy.gfx.draw.FlatColor;
import org.joshy.gfx.draw.LinearGradientFill;
import org.joshy.gfx.draw.MultiGradientFill;
import org.joshy.gfx.util.u;
import org.joshy.sketch.model.*;
import org.junit.Before;
import org.junit.Test;

import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.geom.Area;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.net.URL;

import static org.junit.Assert.assertTrue;

/**
* Created by IntelliJ IDEA.
* User: joshmarinacci
* Date: Oct 11, 2010
* Time: 1:51:53 PM
* To change this template use File | Settings | File Templates.
*/
public class PNGExportTest {
    private SketchDocument doc;
    private SketchDocument.SketchPage page;

    @Before
    public void setUp() throws Exception {
        try {
            Core.init();
            doc = new SketchDocument();
            page = doc.getCurrentPage();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }


    @Test public void testRectangle() throws IOException {
        page.clear();
        page.add(new SRect(0, 0, 20, 20).setFillPaint(FlatColor.RED));
        assertTrue(saveAndReadbackPixel(doc,1,1) == 0xffff0000);       
    }

    @Test public void testOval() throws IOException {
        page.clear();
        page.add(new SOval(0,0,20,20).setFillPaint(FlatColor.GREEN));
        assertTrue(saveAndReadbackPixel(doc,10,10) == 0xFF00FF00);
    }

    @Test public void testPolygon() throws IOException {
        //test a polygon
        SPoly poly = new SPoly();
        poly.setFillPaint(FlatColor.BLUE);
        poly.addPoint(new Point(0,0));
        poly.addPoint(new Point(10,0));
        poly.addPoint(new Point(0,10));
        poly.setClosed(true);
        page.clear();
        page.add(poly);
        assertTrue(saveAndReadbackPixel(doc,5,3) == 0xFF0000FF);
    }

    @Test public void testNGon() throws IOException {
        NGon ngon = new NGon();
        ngon.setRadius(20);
        ngon.setFillPaint(FlatColor.RED);
        ngon.setSides(5);
        page.clear();
        page.add(ngon);
        assertTrue(saveAndReadbackPixel(doc,20,20) == 0xFFFF0000);
    }


    @Test public void testPath() throws IOException {
        SPath path = new SPath();
        path.setFillPaint(FlatColor.RED);
        path.addPoint(new SPath.PathPoint(0,0, -5,0, 5,0));
        path.addPoint(new SPath.PathPoint(10,10, 10,5, 10,15));
        path.addPoint(new SPath.PathPoint(0,205,20, 0,15));
        path.close();
        page.clear();
        page.add(path);
        assertTrue(saveAndReadbackPixel(doc,5,10) == 0xFFFF0000);
    }

    @Test public void testText() throws IOException {
        SText text = new SText();
        text.setText("ABC");
        text.setFontSize(100);
        text.setFillPaint(FlatColor.GREEN);
        page.clear();
        page.add(text);
        assertTrue(saveAndReadbackPixel(doc, 110,27) == 0xff00ff00);
    }

    @Test public void testImage() throws IOException {
        URL url = this.getClass().getResource("redrect.png");
        SImage image = new SImage(url,"redrect.png");
        page.clear();
        page.add(image);
        assertTrue(saveAndReadbackPixel(doc,10,10) == 0xffff0000);
    }

    @Test public void testGroup() throws IOException {
        SRect rect = new SRect(0,0,10,10);
        rect.setFillPaint(FlatColor.RED);
        SOval oval = new SOval(0,0,10,10);
        oval.setFillPaint(FlatColor.BLUE);
        rect.setTranslateX(100);
        oval.setTranslateY(100);
        SGroup group = new SGroup();
        group.addAll(rect,oval);
        group.setTranslateX(50);
        group.setTranslateY(50);
        page.clear();
        page.add(group);
        SRect rect2 = new SRect(0,0,10,10);
        rect2.setFillPaint(FlatColor.GREEN);
        page.add(rect2);
        assertTrue(saveAndReadbackPixel(doc,5,5) == 0xff00ff00);
        assertTrue(saveAndReadbackPixel(doc,155,55) == 0xffff0000);
        assertTrue(saveAndReadbackPixel(doc,55,155) == 0xff0000ff);
    }
   
    @Test public void testArea() throws IOException {
        SRect rect = new SRect(0,0,10,10);
        rect.setFillPaint(FlatColor.RED);
        SOval oval = new SOval(5,5,10,10);
        oval.setFillPaint(FlatColor.BLUE);
        Area area = new Area();
        area.add(rect.toArea());
        area.add(oval.toArea());
        SArea sarea = new SArea(area);
        sarea.setTranslateX(10);
        sarea.setTranslateY(10);
        sarea.setFillPaint(FlatColor.GREEN);
        page.clear();
        page.add(sarea);
        assertTrue(saveAndReadbackPixel(doc,7,7) == 0xFF00FF00);
    }

    @Test public void testArrow() {

    }
   
    @Test public void testGradientRect() throws IOException {
        MultiGradientFill grad = new LinearGradientFill()
                .setStartX(3).setStartY(0).setEndX(97).setEndY(0)
                .addStop(0, FlatColor.BLUE)
                .addStop(1, FlatColor.RED);
        SRect rect = new SRect(0,0,100,100);
        rect.setFillPaint(grad);
        rect.setStrokeWidth(0);
        page.clear();
        page.add(rect);
        assertTrue(saveAndReadbackPixel(doc,0,0) == 0xFF0000FF);
        assertTrue(saveAndReadbackPixel(doc,99,0) == 0xFFFF0000);
    }


    private int saveAndReadbackPixel(SketchDocument doc, int x, int y) throws IOException {
        File file = File.createTempFile("amino.test", ".png");
        u.p("wrote to tempfile: " + file.getAbsolutePath());
        SavePNGAction.exportStatic(file, (CanvasDocument) doc);

        BufferedImage image = ImageIO.read(file);
        int rgb = image.getRGB(x,y);
        u.p("read back pixel = " + Integer.toHexString(rgb));
        return rgb;
    }

}
TOP

Related Classes of org.joshy.sketch.actions.io.PNGExportTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.