Revision 11138 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/rendering/styling/LinePlacementConstraints.java

View differences:

LinePlacementConstraints.java
43 43
*
44 44
* $Id$
45 45
* $Log$
46
* Revision 1.3  2007-04-02 16:34:56  jaume
46
* Revision 1.4  2007-04-11 16:01:08  jaume
47
* maybe a label placer refactor
48
*
49
* Revision 1.3  2007/04/02 16:34:56  jaume
47 50
* Styled labeling (start commiting)
48 51
*
49 52
* Revision 1.2  2007/03/09 08:33:43  jaume
......
56 59
*/
57 60
package com.iver.cit.gvsig.fmap.rendering.styling;
58 61

  
62
import java.awt.Point;
63
import java.awt.geom.AffineTransform;
64

  
59 65
import org.cresques.px.gml.MultiPolygon;
60 66

  
61 67
import com.iver.cit.gvsig.fmap.core.FShape;
62 68
import com.iver.cit.gvsig.fmap.core.IGeometry;
63
import com.iver.cit.gvsig.fmap.core.symbols.ITextSymbol;
64

  
69
/**
70
 *
71
 * @author jaume dominguez faus - jaume.dominguez@iver.es
72
 *
73
 */
65 74
public class LinePlacementConstraints extends AbstractPlacementConstraints {
66 75
	public FShape[] getLocationsFor(IGeometry geom, FShape labelShape, MultiPolygon exclusionZone) {
67 76
		return new FShape[] { (FShape) geom.getInternalShape() };
68 77
	}
78
	public void placeLabel(IGeometry geom, LabelClass labelShape, MultiPolygon exclusionZone, AffineTransform at) {
79
		Point startingPoint;
80
		if (isFollowingLine()) {
81
			throw new Error("following line option not yet implemented");
82
			// 1. create text path
83
			// 2. convert text symbol to SmartTextSymbol if need
69 84

  
85
		} else {
86
			if (isAtTheBeginingOfLine()) {
87

  
88
			} else if (isAtTheEndOfLine()) {
89

  
90
			} else {
91

  
92
			}
93
		}
94

  
95
		/*
96
		 * Now we have the starting point for the text, we will apply the
97
		 * offset to place the text either over, under or above the line
98
		 */
99
		if (exclusionZone == null) {
100
			// no check for overlapping is needed
101

  
102
			if (isBellowTheLine()) {
103
				// Offset to be on bellow of the line.
104
			} else if (isAboveTheLine()) {
105
				// Offset to be above the line (inverse offset to under the line)
106

  
107
			} else {
108
				// No offset.
109
			}
110

  
111
			/*
112
			 * Now, we'll need to see who is defining the orientation
113
			 * either the line or the page.
114
			 */
115
			if (isPageOriented()) {
116

  
117
			} else {
118
				// The line defines the orientation.
119
			}
120

  
121
			if (isParallel()) {
122
				// get the line theta and apply it
123
			} else if (isPerpendicular()) {
124
				// get the line theta with 90 degrees
125
			}
126

  
127
		} else {
128
			throw new Error("overlapping detection option not yet implemented");
129
		}
130
	}
131

  
70 132
}

Also available in: Unified diff