Revision 11138 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/rendering/styling/LinePlacementConstraints.java
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