Revision 4226 trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/core/v02/FTextLayout.java

View differences:

FTextLayout.java
1 1
package com.iver.cit.gvsig.fmap.core.v02;
2 2

  
3
import com.iver.cit.gvsig.fmap.ViewPort;
4

  
5
import java.awt.Color;
6
import java.awt.Dimension;
7 3
import java.awt.Font;
8 4
import java.awt.FontMetrics;
9 5
import java.awt.Graphics2D;
6
import java.awt.Point;
10 7
import java.awt.Shape;
11
import java.awt.event.MouseAdapter;
12
import java.awt.event.MouseEvent;
13 8
import java.awt.font.FontRenderContext;
14 9
import java.awt.font.TextHitInfo;
15
import java.awt.font.TextLayout;
16 10
import java.awt.geom.Point2D;
17 11
import java.awt.geom.Rectangle2D;
18 12

  
13
import com.iver.cit.gvsig.fmap.ViewPort;
19 14

  
15

  
20 16
/**
21 17
 * DOCUMENT ME!
22 18
 *
......
56 52
        Rectangle2D bounding = vp.toMapRectangle(bound);
57 53

  
58 54
        FontMetrics metrics = g.getFontMetrics();
59
        double dist = vp.toMapDistance(3);
55

  
60 56
        int w = metrics.stringWidth(s);
61 57
        double width = vp.toMapDistance(w);
62 58
        int h = metrics.getMaxAscent();
63 59
        double height = vp.toMapDistance(h);
60
        double dist = vp.toMapDistance(3);
64 61

  
65 62
        switch (justification) {
66 63
            case FLabel.LEFT_BOTTOM:
......
125 122
     * @param y DOCUMENT ME!
126 123
     */
127 124
    private Rectangle2D justification(Point2D p, Rectangle2D r, double x, double y) {
128
        r.setRect(p.getX() + x, p.getY() + y, r.getWidth(), r.getHeight());
125
        r.setRect(p.getX() + x, p.getY() - y, r.getWidth(), r.getHeight());
129 126
        return r;
130 127
    }
131 128

  
......
141 138
        float height = metrics.getMaxAscent();
142 139

  
143 140
        switch (justification) {
141
        /*
144 142
            case FLabel.LEFT_BOTTOM:
145 143
                tl.draw(g2, 0, -3);
146 144

  
......
185 183
                tl.draw(g2, -width, -height);
186 184

  
187 185
                break;
188
        }
189
        if (isSelected){
190
        Shape[] carets = tl.getCaretShapes(0);
186
                */
187
            case FLabel.LEFT_BOTTOM:
188
				g2.drawString(s, 0, 0 - 3);
191 189

  
192
    	// Draw the carets.  carets[0] is the strong caret, and
193
    	// is never null.  carets[1], if it is not null, is the
194
    	// weak caret.
195
    	g2.setColor(Color.red);
196
    	g2.draw(carets[0]);
190
				break;
197 191

  
198
    	if (carets[1] != null) {
199
        	g2.setColor(Color.blue);
200
        	g2.draw(carets[1]);
201
    	}
202
    	Rectangle2D r=getBoundingBox(new Point2D.Double(0,0),justification,g2);
203
        g2.setColor(Color.blue);
204
        g2.drawRect((int)r.getX(),(int)r.getY(),(int)r.getWidth(),(int)r.getHeight());
192
			case FLabel.LEFT_CENTER:
193
				g2.drawString(s, 0, 0 - (height / 2));
194

  
195
				break;
196

  
197
			case FLabel.LEFT_TOP:
198
				g2.drawString(s, 0, 0 - height);
199

  
200
				break;
201

  
202
			case FLabel.CENTER_BOTTOM:
203
				g2.drawString(s, 0 - (width / 2), 0 - 3);
204

  
205
				break;
206

  
207
			case FLabel.CENTER_CENTER:
208
				g2.drawString(s, 0 - (width / 2),
209
					0 - (height / 2));
210

  
211
				break;
212

  
213
			case FLabel.CENTER_TOP:
214
				g2.drawString(s, 0 - (width / 2), 0 -
215
					height);
216

  
217
				break;
218

  
219
			case FLabel.RIGHT_BOTTOM:
220
				g2.drawString(s, 0 - width, 0 - 3);
221

  
222
				break;
223

  
224
			case FLabel.RIGHT_CENTER:
225
				g2.drawString(s, 0 - width, 0 -
226
					(height / 2));
227

  
228
				break;
229

  
230
			case FLabel.RIGHT_TOP:
231
				g2.drawString(s, 0 - width, 0 - height);
232

  
233
				break;
234

  
205 235
        }
206

  
207 236
    }
208 237

  
209 238
	public TextHitInfo getNextRightHit(int insertionIndex) {
......
218 247
		isSelected=b;
219 248
	}
220 249

  
221
	public Rectangle2D getBoundingBox(Point2D p,int justification,Graphics2D g){
250
	public Rectangle2D getBoundingBox(Point2D p1,int justification,Graphics2D g,ViewPort vp){
222 251
		Rectangle2D bounding=tl.getBounds();
223 252

  
224 253
	    FontMetrics metrics = g.getFontMetrics();
225
	    double dist = 3;
254
	    double dist = -12;
226 255
	    int width = metrics.stringWidth(s);
227 256
	    int height = metrics.getMaxAscent();
228

  
229

  
257
	    //Point2D p=vp.fromMapPoint(p1);
258
	    Point p=new Point(0,0);
230 259
	    switch (justification) {
231 260
        case FLabel.LEFT_BOTTOM:
232
        	bounding =justification(p, bounding, 0, -height);
261
        	bounding =justification(p, bounding, 0, -dist);
233 262
        	break;
234 263

  
235 264
        case FLabel.LEFT_CENTER:
......
282 311
		return isSelected;
283 312
	}
284 313

  
314
	public void addChar(char keyChar) {
315
		s.concat(String.valueOf(keyChar));
316

  
317
	}
318

  
319
	public Shape[] getCaretShapes(int insertionIndex) {
320
		return tl.getCaretShapes(insertionIndex);
321
	}
322

  
285 323
}

Also available in: Unified diff