Package org.geotools.styling

Source Code of org.geotools.styling.TextSymbolTest

/*
*    GeoTools - The Open Source Java GIS Toolkit
*    http://geotools.org
*
*    (C) 2002-2008, Open Source Geospatial Foundation (OSGeo)
*
*    This library is free software; you can redistribute it and/or
*    modify it under the terms of the GNU Lesser General Public
*    License as published by the Free Software Foundation;
*    version 2.1 of the License.
*
*    This library is distributed in the hope that it will be useful,
*    but WITHOUT ANY WARRANTY; without even the implied warranty of
*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
*    Lesser General Public License for more details.
*
*    Created on April 12, 2002, 1:18 PM
*/
package org.geotools.styling;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;

import org.geotools.data.memory.MemoryDataStore;
import org.geotools.data.simple.SimpleFeatureCollection;
import org.geotools.factory.CommonFactoryFinder;
import org.geotools.feature.simple.SimpleFeatureBuilder;
import org.geotools.feature.simple.SimpleFeatureTypeBuilder;
import org.opengis.feature.simple.SimpleFeature;
import org.opengis.feature.simple.SimpleFeatureType;
import org.opengis.filter.FilterFactory;
import org.opengis.filter.expression.PropertyName;

import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;


/**
* Test for text symbols.
*
* @author jamesm
*
* @task REVISIT: redo the Map stuff - I commented it out since DefaultMap is
*       deprecated - cholmes.
*
*
* @source $URL$
*/
public class TextSymbolTest extends TestCase {
    private static final FilterFactory filterFactory = CommonFactoryFinder.getFilterFactory(null);

    String dataFolder;

    public TextSymbolTest(java.lang.String testName) {
        super(testName);
        dataFolder = System.getProperty("dataFolder");

        if (dataFolder == null) {
            //then we are being run by maven
            dataFolder = System.getProperty("basedir");
            dataFolder += "/tests/unit/testData";
        }
    }

    public static void main(java.lang.String[] args) {
        junit.textui.TestRunner.run(suite());
    }

    public static Test suite() {
        TestSuite suite = new TestSuite(TextSymbolTest.class);

        return suite;
    }

    public void testRender() throws Exception {
        //System.out.println("\n\nTextSymbolTest\n");

        // Request extent
        GeometryFactory geomFac = new GeometryFactory();
        MemoryDataStore data = new MemoryDataStore();
        SimpleFeatureTypeBuilder ftb = new SimpleFeatureTypeBuilder();
        ftb.setCRS(null);
    ftb.add("centre", com.vividsolutions.jts.geom.Point.class);
    ftb.add("size", Double.class);
    ftb.add("rotation", Double.class);
    ftb.add("symbol", String.class);
    ftb.setName("test");
        SimpleFeatureType pointType = ftb.buildFeatureType();

        //FlatFeatureFactory pointFac = feaTypeFactory.(pointType);
        Point point;
        SimpleFeature pointFeature;

        // load font
        String[] symbol = {
                "\uF04A", "\uF04B", "\uF059", "\uF05A", "\uF06B", "\uF06C",
                "\uF06E"
            };
        double size = 16;
        double rotation = 0.0;
        int rows = 8;

        for (int j = 0; j < rows; j++) {
            for (int i = 0; i < symbol.length; i++) {
                point = makeSamplePoint(geomFac, ((double) i * 5.0) + 5.0,
                        5.0 + (j * 5));
                pointFeature = SimpleFeatureBuilder.build(pointType, new Object[] {
                            point, new Double(size), new Double(rotation),
                            symbol[i]
                        }, null);
                data.addFeature(pointFeature);
            }

            size += 2;
            rotation += 45;
        }

        String typeName = data.getTypeNames()[0];
        SimpleFeatureCollection ft = data.getFeatureSource(typeName).getFeatures();

        //REVISIT: Removed since it is deprecated, not sure what this test is
        //is doing, what should replace it.  If someone with more knowledge of
        //this stuff could update the tests that'd be great - ch.
        //org.geotools.map.Map map = new DefaultMap();
        //The following is complex, and should be built from
        //an SLD document and not by hand

        PropertyName symbExpr = filterFactory.property("symbol");
        Mark textMark = new MarkImpl("square");

        GraphicImpl graphic = new GraphicImpl();
        graphic.addSymbol(textMark);

        PointSymbolizerImpl pointsym = new PointSymbolizerImpl();
        pointsym.setGeometryPropertyName("centre");
        pointsym.setGraphic(graphic);

        RuleImpl rule = new RuleImpl();
        rule.setSymbolizers(new Symbolizer[] { pointsym });

        FeatureTypeStyleImpl fts = new FeatureTypeStyleImpl();
        fts.addRule(rule);
        fts.setFeatureTypeName("testPoint");

        StyleImpl style = new StyleImpl();
        style.addFeatureTypeStyle(fts);

        //map.addFeatureTable(ft,style);

        /*Java2DRenderer renderer = new org.geotools.renderer.Java2DRenderer();
           Frame frame = new Frame("text symbol test");
           frame.addWindowListener(new WindowAdapter() {
               public void windowClosing(WindowEvent e) {e.getWindow().dispose(); }
           });
           Panel p = new Panel();
           frame.add(p);
           frame.setSize(300,300);
           frame.setVisible(true);
           renderer.setOutput(p.getGraphics(),p.getBounds());
           map.render(renderer,ex.getBounds());//and finaly try and draw it!
       
           int w = 400, h =400;
           BufferedImage image = new BufferedImage(w,h,BufferedImage.TYPE_INT_RGB);
           Graphics g = image.getGraphics();
           g.setColor(Color.white);
           g.fillRect(0,0,w,h);
           renderer.setOutput(g,new java.awt.Rectangle(0,0,w,h));
           map.render(renderer,ex.getBounds());//and finaly try and draw it!
           File file = new File(dataFolder, "TextSymbolTest.jpg");
           FileOutputStream out = new FileOutputStream(file);
           ImageIO.write(image, "JPEG", out);
           Thread.sleep(5000);
           frame.dispose();*/
    }

    private Point makeSamplePoint(final GeometryFactory geomFac, double x,
        double y) {
        Coordinate c = new Coordinate(x, y);
        Point point = geomFac.createPoint(c);

        return point;
    }
}
TOP

Related Classes of org.geotools.styling.TextSymbolTest

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.