Revision 21100 branches/v2_0_0_prep/libraries/libFMap/src/org/gvsig/fmap/core/geometries/utils/FLabel.java

View differences:

FLabel.java
55 55
import java.awt.geom.Rectangle2D;
56 56

  
57 57
import org.apache.batik.ext.awt.geom.PathLength;
58
import org.gvsig.fmap.core.shapes.FMultiPoint2D;
59
import org.gvsig.fmap.core.shapes.FPoint2D;
60
import org.gvsig.fmap.core.shapes.FShape;
58
import org.gvsig.fmap.geom.aggregate.MultiPoint2D;
59
import org.gvsig.fmap.geom.primitive.FShape;
60
import org.gvsig.fmap.geom.util.Converter;
61 61
import org.gvsig.fmap.mapcontext.ViewPort;
62 62
import org.gvsig.fmap.mapcontext.rendering.symbols.FGraphicUtilities;
63 63
import org.gvsig.fmap.mapcontext.rendering.symbols.FSymbol;
......
299 299
	 *
300 300
	 * @return nuevo FLabel creado.
301 301
	 */
302
	public static FLabel createFLabel(FShape shp) {
302
	public static FLabel createFLabel(org.gvsig.fmap.geom.Geometry geom) {
303 303
		float angle;
304
		Point2D pAux = createLabelPoint(shp);
304
		Point2D pAux = createLabelPoint(geom);
305 305

  
306 306
		FLabel label = new FLabel();
307 307
		label.setOrig(pAux);
308
		switch (shp.getShapeType()) {
309
			case FShape.LINE:
310
            case FShape.LINE + FShape.Z:
311
				PathLength pathLen = new PathLength(shp);
308
		switch (geom.getType()) {
309
			case org.gvsig.fmap.geom.Geometry.TYPES.CURVE:
310
            case org.gvsig.fmap.geom.Geometry.TYPES.CURVE + org.gvsig.fmap.geom.Geometry.TYPES.Z:
311
				PathLength pathLen = new PathLength(geom);
312 312
				float midDistance = pathLen.lengthOfPath() / 2;
313 313
				angle = pathLen.angleAtLength(midDistance);
314 314

  
......
324 324

  
325 325
		return label;
326 326
	}
327
	public static Point2D createLabelPoint(Shape shp) {
327
	public static Point2D createLabelPoint(org.gvsig.fmap.geom.Geometry geom) {
328 328
		Point2D pAux = null;
329
		if (shp instanceof FShape){
330
		switch (((FShape)shp).getShapeType()) {
331
			case FShape.POINT:
332
            case FShape.POINT + FShape.Z:
333
				pAux = new Point2D.Double(((FPoint2D) shp).getX(),
334
						((FPoint2D) shp).getY());
329
		switch (geom.getType()) {
330
			case org.gvsig.fmap.geom.Geometry.TYPES.POINT:
331
            case org.gvsig.fmap.geom.Geometry.TYPES.POINT + org.gvsig.fmap.geom.Geometry.TYPES.Z:
332
				pAux = new Point2D.Double(((org.gvsig.fmap.geom.primitive.Point2D) geom).getX(),
333
						((org.gvsig.fmap.geom.primitive.Point2D) geom).getY());
335 334
				return pAux;
336 335

  
337
			case FShape.LINE:
338
            case FShape.LINE + FShape.Z:
339
				PathLength pathLen = new PathLength(shp);
336
			case org.gvsig.fmap.geom.Geometry.TYPES.CURVE:
337
            case org.gvsig.fmap.geom.Geometry.TYPES.CURVE + org.gvsig.fmap.geom.Geometry.TYPES.Z:
338
				PathLength pathLen = new PathLength(geom);
340 339

  
341 340
				// if (pathLen.lengthOfPath() < width / mT.getScaleX()) return;
342 341
				float midDistance = pathLen.lengthOfPath() / 2;
343 342
				pAux = pathLen.pointAtLength(midDistance);
344 343
				return pAux;
345 344

  
346
			case FShape.POLYGON:
347
            case FShape.POLYGON + FShape.Z:
348
				Geometry geo = FConverter.java2d_to_jts((FShape)shp);
345
			case org.gvsig.fmap.geom.Geometry.TYPES.SURFACE:
346
            case org.gvsig.fmap.geom.Geometry.TYPES.SURFACE + org.gvsig.fmap.geom.Geometry.TYPES.Z:
347
				Geometry geo = Converter.java2d_to_jts((FShape)geom);
349 348

  
350 349
				if (geo == null) {
351 350
					return null;
......
354 353
				Point pJTS = geo.getCentroid();
355 354

  
356 355
				if (pJTS != null) {
357
					FShape pLabel = FConverter.jts_to_java2d(pJTS);
358
					return new Point2D.Double(((FPoint2D) pLabel).getX(),
359
							((FPoint2D) pLabel).getY());
356
					FShape pLabel = Converter.jts_to_java2d(pJTS);
357
					return new Point2D.Double(((org.gvsig.fmap.geom.primitive.Point2D) pLabel).getX(),
358
							((org.gvsig.fmap.geom.primitive.Point2D) pLabel).getY());
360 359
				}
360
				break;
361
            case org.gvsig.fmap.geom.Geometry.TYPES.MULTIPOINT:
362
            	int num=((MultiPoint2D)geom).getPrimitivesNumber();
363
    			Rectangle2D r=null;
364
    			if (num>0){
365
    				r= ((MultiPoint2D)geom).getPoint(0).getBounds2D();
366
    				for (int i=1;i<num;i++){
367
    					org.gvsig.fmap.geom.primitive.Point2D fp=((MultiPoint2D)geom).getPoint(i);
368
    					r.add(new Point2D.Double(fp.getX(),fp.getY()));
369
    				}
370
    			}
371
    			if (r!=null)
372
    			return new Point2D.Double(r.getCenterX(),r.getCenterY());
373
    			break;
374

  
361 375
		} // switch
362
		}else if (shp instanceof FMultiPoint2D){
363
			int num=((FMultiPoint2D)shp).getNumPoints();
364
			Rectangle2D r=null;
365
			if (num>0){
366
				r= ((FMultiPoint2D)shp).getPoint(0).getBounds2D();
367
				for (int i=1;i<num;i++){
368
					FPoint2D fp=((FMultiPoint2D)shp).getPoint(i);
369
					r.add(new Point2D.Double(fp.getX(),fp.getY()));
370
				}
371
			}
372
			if (r!=null)
373
			return new Point2D.Double(r.getCenterX(),r.getCenterY());
374
		}
375 376
				return null;
376 377
	}
377 378
	public void setTypeFont(String t) {
......
425 426
	 */
426 427
	public void draw(Graphics2D g, AffineTransform affineTransform, Shape theShape, ISymbol theSymbol) {
427 428
        FGraphicUtilities.DrawLabel(g, affineTransform,
428
                (FShape) theShape, (FSymbol) theSymbol, this);
429
                (org.gvsig.fmap.geom.Geometry) theShape, (FSymbol) theSymbol, this);
429 430

  
430 431

  
431 432
	}

Also available in: Unified diff