Revision 44
trunk/org.gvsig.app.document.layout.app/org.gvsig.app.document.layout.app.mainplugin/src/main/java/org/gvsig/app/project/documents/layout/fframes/FFrameOverView.java | ||
---|---|---|
23 | 23 |
|
24 | 24 |
import java.awt.Color; |
25 | 25 |
import java.awt.Dimension; |
26 |
import java.awt.Graphics; |
|
26 | 27 |
import java.awt.Graphics2D; |
28 |
import java.awt.Image; |
|
27 | 29 |
import java.awt.geom.AffineTransform; |
28 |
import java.awt.geom.Line2D; |
|
29 | 30 |
import java.awt.geom.Rectangle2D; |
30 | 31 |
import java.awt.image.BufferedImage; |
31 | 32 |
|
... | ... | |
96 | 97 |
extent = vpOrig.getAdjustedEnvelope(); |
97 | 98 |
} |
98 | 99 |
vp.refreshExtent(); |
100 |
|
|
101 |
Image ov_img = new BufferedImage( |
|
102 |
vp.getImageWidth(), |
|
103 |
vp.getImageHeight(), |
|
104 |
BufferedImage.TYPE_INT_ARGB); |
|
105 |
Graphics ov_img_gra = ov_img.getGraphics(); |
|
106 |
|
|
107 |
/* |
|
108 |
* Fill with transparent color |
|
109 |
*/ |
|
110 |
ov_img_gra.setColor(new Color(0, 0, 0, 0)); |
|
111 |
ov_img_gra.fillRect(0, 0, |
|
112 |
vp.getImageWidth(), vp.getImageHeight()); |
|
113 |
|
|
114 |
|
|
99 | 115 |
Rectangle2D aux = |
100 | 116 |
new Rectangle2D.Double(extent.getMinimum(0), |
101 | 117 |
extent.getMinimum(1), extent.getLength(0), |
102 | 118 |
extent.getLength(1)); |
103 | 119 |
Rectangle2D extentPixels = vp.fromMapRectangle(aux); |
104 | 120 |
|
105 |
extentPixels.setFrame(extentPixels.getX(), extentPixels.getY(), |
|
121 |
/* |
|
122 |
* Area of interest in pixels, inside ov_img image |
|
123 |
*/ |
|
124 |
extentPixels.setFrame( |
|
125 |
extentPixels.getMinX(), extentPixels.getMinY(), |
|
106 | 126 |
extentPixels.getWidth(), extentPixels.getHeight()); |
127 |
|
|
128 |
/* |
|
129 |
* Fill (gray) and perimeter (red) |
|
130 |
*/ |
|
131 |
ov_img_gra.setColor(new Color(100, 100, 100, 100)); |
|
132 |
ov_img_gra.fillRect((int) extentPixels.getMinX(), |
|
133 |
(int) extentPixels.getMinY(), |
|
134 |
(int) extentPixels.getWidth(), |
|
135 |
(int) extentPixels.getHeight()); |
|
136 |
ov_img_gra.setColor(Color.red); |
|
137 |
ov_img_gra.drawRect((int) extentPixels.getMinX(), |
|
138 |
(int) extentPixels.getMinY(), |
|
139 |
(int) extentPixels.getWidth(), |
|
140 |
(int) extentPixels.getHeight()); |
|
141 |
|
|
142 |
/* |
|
143 |
* Draw vertical, horizontal lines |
|
144 |
*/ |
|
145 |
ov_img_gra.setColor(Color.darkGray); |
|
146 |
int cx = (int) extentPixels.getCenterX(); |
|
147 |
int cy = (int) extentPixels.getCenterY(); |
|
148 |
int maxx = vp.getImageWidth(); |
|
149 |
int maxy = vp.getImageHeight(); |
|
150 |
ov_img_gra.drawLine(cx, 0, cx, maxy); |
|
151 |
ov_img_gra.drawLine(0, cy, maxx, cy); |
|
152 |
/* |
|
153 |
* Semi-transparent image is ready |
|
154 |
*/ |
|
155 |
|
|
156 |
/* |
|
157 |
* Save clip area |
|
158 |
*/ |
|
107 | 159 |
Rectangle2D clip = g.getClipBounds(); |
108 |
|
|
109 | 160 |
g.setClip((int) r.getX(), (int) r.getY(), (int) r.getWidth(), |
110 | 161 |
(int) r.getHeight()); |
111 |
g.setColor(Color.red); |
|
112 |
g.draw(extentPixels); |
|
113 |
// System.err.println("extentPixels = |
|
114 |
// "+extentPixels.getX()+","+extentPixels.getY()+", |
|
115 |
// "+extentPixels.getWidth()+","+extentPixels.getHeight()); |
|
116 |
g.setColor(new Color(100, 100, 100, 100)); |
|
117 |
g.fill(extentPixels); |
|
118 |
// dibujamos las l?neas vertical y horizontal |
|
119 |
double pRightUp = (int) (r.getWidth() + r.getX()); |
|
120 | 162 |
|
121 |
Line2D.Double linVert =
|
|
122 |
new Line2D.Double(extentPixels.getCenterX(), r.getY(),
|
|
123 |
extentPixels.getCenterX(), r.getMaxY());
|
|
124 |
Line2D.Double linHoriz =
|
|
125 |
new Line2D.Double(r.getX(), extentPixels.getCenterY(),
|
|
126 |
pRightUp, extentPixels.getCenterY());
|
|
127 |
|
|
128 |
g.setColor(Color.darkGray); |
|
129 |
g.draw(linVert);
|
|
130 |
g.draw(linHoriz);
|
|
131 |
|
|
163 |
/*
|
|
164 |
* Paste resized image (with transparency)
|
|
165 |
*/
|
|
166 |
ov_img = ov_img.getScaledInstance(
|
|
167 |
(int) r.getWidth(),
|
|
168 |
(int) r.getHeight(), Image.SCALE_SMOOTH);
|
|
169 |
g.drawImage(ov_img, (int) r.getX(), (int) r.getY(), null); |
|
170 |
|
|
171 |
/*
|
|
172 |
* Restore clip area
|
|
173 |
*/ |
|
132 | 174 |
g.setClip((int) clip.getX(), (int) clip.getY(), |
133 | 175 |
(int) clip.getWidth(), (int) clip.getHeight()); |
134 | 176 |
extent = null; |
... | ... | |
327 | 369 |
super.loadFromState(state); |
328 | 370 |
fframeViewDependence = |
329 | 371 |
(FFrameView) state.get(FFRAMEVIEWDEPENDENCE_FIELD); |
372 |
|
|
373 |
/* |
|
374 |
* force refreshment of other fields |
|
375 |
*/ |
|
376 |
this.setView(viewDocument); |
|
330 | 377 |
} |
331 | 378 |
|
332 | 379 |
@Override |
Also available in: Unified diff