Revision 44

View differences:

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