OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libjava/] [classpath/] [java/] [awt/] [Graphics.java] - Blame information for rev 771

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 771 jeremybenn
/* Graphics.java -- Abstract Java drawing class
2
   Copyright (C) 1999, 2000, 2002, 2004, 2005  Free Software Foundation, Inc.
3
 
4
This file is part of GNU Classpath.
5
 
6
GNU Classpath is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2, or (at your option)
9
any later version.
10
 
11
GNU Classpath is distributed in the hope that it will be useful, but
12
WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14
General Public License for more details.
15
 
16
You should have received a copy of the GNU General Public License
17
along with GNU Classpath; see the file COPYING.  If not, write to the
18
Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
19
02110-1301 USA.
20
 
21
Linking this library statically or dynamically with other modules is
22
making a combined work based on this library.  Thus, the terms and
23
conditions of the GNU General Public License cover the whole
24
combination.
25
 
26
As a special exception, the copyright holders of this library give you
27
permission to link this library with independent modules to produce an
28
executable, regardless of the license terms of these independent
29
modules, and to copy and distribute the resulting executable under
30
terms of your choice, provided that you also meet, for each linked
31
independent module, the terms and conditions of the license of that
32
module.  An independent module is a module which is not derived from
33
or based on this library.  If you modify this library, you may extend
34
this exception to your version of the library, but you are not
35
obligated to do so.  If you do not wish to do so, delete this
36
exception statement from your version. */
37
 
38
 
39
package java.awt;
40
 
41
import java.awt.image.ImageObserver;
42
import java.text.AttributedCharacterIterator;
43
 
44
/**
45
 * This is the abstract superclass of classes for drawing to graphics
46
 * devices such as the screen or printers.
47
 *
48
 * @author Aaron M. Renn (arenn@urbanophile.com)
49
 * @author Warren Levy (warrenl@cygnus.com)
50
 */
51
public abstract class Graphics
52
{
53
 
54
  /**
55
   * Default constructor for subclasses.
56
   */
57
  protected
58
  Graphics()
59
  {
60
  }
61
 
62
  /**
63
   * Returns a copy of this <code>Graphics</code> object.
64
   *
65
   * @return A copy of this object.
66
   */
67
  public abstract Graphics create();
68
 
69
  /**
70
   * Returns a copy of this <code>Graphics</code> object.  The origin point
71
   * will be translated to the point (x, y) and the cliping rectangle set
72
   * to the intersection of the clipping rectangle in this object and the
73
   * rectangle specified by the parameters to this method.
74
   *
75
   * @param x The new X coordinate of the clipping region rect.
76
   * @param y The new Y coordinate of the clipping region rect.
77
   * @param width The width of the clipping region intersect rectangle.
78
   * @param height The height of the clipping region intersect rectangle.
79
   *
80
   * @return A copy of this object, modified as specified.
81
   */
82
  public Graphics create(int x, int y, int width, int height)
83
  {
84
    Graphics g = create();
85
 
86
    g.translate(x, y);
87
    // FIXME: I'm not sure if this will work.  Are the old clip rect bounds
88
    // translated above?
89
    g.clipRect(0, 0, width, height);
90
 
91
    return(g);
92
  }
93
 
94
  /**
95
   * Translates this context so that its new origin point is the point
96
   * (x, y).
97
   *
98
   * @param x The new X coordinate of the origin.
99
   * @param y The new Y coordinate of the origin.
100
   */
101
  public abstract void translate(int x, int y);
102
 
103
  /**
104
   * Returns the current color for this object.
105
   *
106
   * @return The color for this object.
107
   */
108
  public abstract Color getColor();
109
 
110
  /**
111
   * Sets the current color for this object.
112
   *
113
   * @param color The new color.
114
   */
115
  public abstract void setColor(Color color);
116
 
117
  /**
118
   * Sets this context into "paint" mode, where the target pixels are
119
   * completely overwritten when drawn on.
120
   */
121
  public abstract void setPaintMode();
122
 
123
  /**
124
   * Sets this context info "XOR" mode, where the targe pixles are
125
   * XOR-ed when drawn on.
126
   *
127
   * @param color The color to XOR against.
128
   */
129
  public abstract void setXORMode(Color color);
130
 
131
  /**
132
   * Returns the current font for this graphics context.
133
   *
134
   * @return The current font.
135
   */
136
  public abstract Font getFont();
137
 
138
  /**
139
   * Sets the font for this graphics context to the specified value.
140
   *
141
   * @param font The new font.
142
   */
143
  public abstract void setFont(Font font);
144
 
145
  /**
146
   * Returns the font metrics for the current font.
147
   *
148
   * @return The font metrics for the current font.
149
   */
150
  public FontMetrics getFontMetrics()
151
  {
152
    return getFontMetrics(getFont());
153
  }
154
 
155
  /**
156
   * Returns the font metrics for the specified font.
157
   *
158
   * @param font The font to return metrics for.
159
   *
160
   * @return The requested font metrics.
161
   */
162
  public abstract FontMetrics getFontMetrics(Font font);
163
 
164
  /**
165
   * Returns the bounding rectangle of the clipping region for this
166
   * graphics context.
167
   *
168
   * @return The bounding rectangle for the clipping region.
169
   */
170
  public abstract Rectangle getClipBounds();
171
 
172
  /**
173
   * Returns the bounding rectangle of the clipping region for this
174
   * graphics context.
175
   *
176
   * @return The bounding rectangle for the clipping region.
177
   *
178
   * @deprecated This method is deprecated in favor of
179
   * <code>getClipBounds()</code>.
180
   */
181
  public Rectangle getClipRect()
182
  {
183
    return getClipBounds();
184
  }
185
 
186
  /**
187
   * Sets the clipping region to the intersection of the current clipping
188
   * region and the rectangle determined by the specified parameters.
189
   *
190
   * @param x The X coordinate of the upper left corner of the intersect rect.
191
   * @param y The Y coordinate of the upper left corner of the intersect rect.
192
   * @param width The width of the intersect rect.
193
   * @param height The height of the intersect rect.
194
   */
195
  public abstract void clipRect(int x, int y, int width, int height);
196
 
197
  /**
198
   * Sets the clipping region to the rectangle determined by the specified
199
   * parameters.
200
   *
201
   * @param x The X coordinate of the upper left corner of the rect.
202
   * @param y The Y coordinate of the upper left corner of the rect.
203
   * @param width The width of the rect.
204
   * @param height The height of the rect.
205
   */
206
  public abstract void setClip(int x, int y, int width, int height);
207
 
208
  /**
209
   * Returns the current clipping region as a <code>Shape</code> object.
210
   *
211
   * @return The clipping region as a <code>Shape</code>.
212
   */
213
  public abstract Shape getClip();
214
 
215
  /**
216
   * Sets the clipping region to the specified <code>Shape</code>.
217
   *
218
   * @param clip The new clipping region.
219
   */
220
  public abstract void setClip(Shape clip);
221
 
222
  /**
223
   * Copies the specified rectangle to the specified offset location.
224
   *
225
   * @param x The X coordinate of the upper left corner of the copy rect.
226
   * @param y The Y coordinate of the upper left corner of the copy rect.
227
   * @param width The width of the copy rect.
228
   * @param height The height of the copy rect.
229
   * @param dx The offset from the X value to start drawing.
230
   * @param dy The offset from the Y value to start drawing.
231
   */
232
  public abstract void copyArea(int x, int y, int width, int height, int dx,
233
                                int dy);
234
 
235
  /**
236
   * Draws a line between the two specified points.
237
   *
238
   * @param x1 The X coordinate of the first point.
239
   * @param y1 The Y coordinate of the first point.
240
   * @param x2 The X coordinate of the second point.
241
   * @param y2 The Y coordinate of the second point.
242
   */
243
  public abstract void drawLine(int x1, int y1, int x2, int y2);
244
 
245
  /**
246
   * Fills the area bounded by the specified rectangle.
247
   *
248
   * @param x The X coordinate of the upper left corner of the fill rect.
249
   * @param y The Y coordinate of the upper left corner of the fill rect.
250
   * @param width The width of the fill rect.
251
   * @param height The height of the fill rect.
252
   */
253
  public abstract void fillRect(int x, int y, int width, int height);
254
 
255
  /**
256
   * Draws the outline of the specified rectangle.
257
   *
258
   * @param x The X coordinate of the upper left corner of the draw rect.
259
   * @param y The Y coordinate of the upper left corner of the draw rect.
260
   * @param width The width of the draw rect.
261
   * @param height The height of the draw rect.
262
   */
263
  public void drawRect(int x, int y, int width, int height)
264
  {
265
    int x1 = x;
266
    int y1 = y;
267
    int x2 = x + width;
268
    int y2 = y + height;
269
    drawLine(x1, y1, x2, y1);
270
    drawLine(x2, y1, x2, y2);
271
    drawLine(x2, y2, x1, y2);
272
    drawLine(x1, y2, x1, y1);
273
  }
274
 
275
  /**
276
   * Clears the specified rectangle.
277
   *
278
   * @param x The X coordinate of the upper left corner of the clear rect.
279
   * @param y The Y coordinate of the upper left corner of the clear rect.
280
   * @param width The width of the clear rect.
281
   * @param height The height of the clear rect.
282
   */
283
  public abstract void clearRect(int x, int y, int width, int height);
284
 
285
  /**
286
   * Draws the outline of the specified rectangle with rounded cornders.
287
   *
288
   * @param x The X coordinate of the upper left corner of the draw rect.
289
   * @param y The Y coordinate of the upper left corner of the draw rect.
290
   * @param width The width of the draw rect.
291
   * @param height The height of the draw rect.
292
   * @param arcWidth The width of the corner arcs.
293
   * @param arcHeight The height of the corner arcs.
294
   */
295
  public abstract void drawRoundRect(int x, int y, int width, int height,
296
                                     int arcWidth, int arcHeight);
297
 
298
  /**
299
   * Fills the specified rectangle with rounded cornders.
300
   *
301
   * @param x The X coordinate of the upper left corner of the fill rect.
302
   * @param y The Y coordinate of the upper left corner of the fill rect.
303
   * @param width The width of the fill rect.
304
   * @param height The height of the fill rect.
305
   * @param arcWidth The width of the corner arcs.
306
   * @param arcHeight The height of the corner arcs.
307
   */
308
  public abstract void fillRoundRect(int x, int y, int width, int height,
309
                                     int arcWidth, int arcHeight);
310
 
311
  public void draw3DRect(int x, int y, int width, int height, boolean raised)
312
  {
313
    Color color = getColor();
314
    Color tl = color.brighter();
315
    Color br = color.darker();
316
 
317
    if (!raised)
318
      {
319
        Color tmp = tl;
320
        tl = br;
321
        br = tmp;
322
      }
323
 
324
    int x1 = x;
325
    int y1 = y;
326
    int x2 = x + width;
327
    int y2 = y + height;
328
 
329
    setColor(tl);
330
    drawLine(x1, y1, x2, y1);
331
    drawLine(x1, y2, x1, y1);
332
    setColor(br);
333
    drawLine(x2, y1, x2, y2);
334
    drawLine(x2, y2, x1, y2);
335
    setColor(color);
336
  }
337
 
338
  /**
339
   * Fills the specified rectangle with a 3D effect
340
   *
341
   * @param x The X coordinate of the upper left corner of the fill rect.
342
   * @param y The Y coordinate of the upper left corner of the fill rect.
343
   * @param width The width of the fill rect.
344
   * @param height The height of the fill rect.
345
   * @param raised <code>true</code> if the rectangle appears raised,
346
   * <code>false</code> if it should appear etched.
347
   */
348
  public void fill3DRect(int x, int y, int width, int height, boolean raised)
349
  {
350
    fillRect(x, y, width, height);
351
    draw3DRect(x, y, width-1, height-1, raised);
352
  }
353
 
354
  /**
355
   * Draws an oval that just fits within the specified rectangle.
356
   *
357
   * @param x The X coordinate of the upper left corner of the rect.
358
   * @param y The Y coordinate of the upper left corner of the rect.
359
   * @param width The width of the rect.
360
   * @param height The height of the rect.
361
   */
362
  public abstract void drawOval(int x, int y, int width, int height);
363
 
364
  /**
365
   * Fills an oval that just fits within the specified rectangle.
366
   *
367
   * @param x The X coordinate of the upper left corner of the rect.
368
   * @param y The Y coordinate of the upper left corner of the rect.
369
   * @param width The width of the rect.
370
   * @param height The height of the rect.
371
   */
372
  public abstract void fillOval(int x, int y, int width, int height);
373
 
374
  /**
375
   * Draws an arc using the specified bounding rectangle and the specified
376
   * angle parameter.  The arc is centered at the center of the rectangle.
377
   * The arc starts at the arcAngle position and extend for arcAngle
378
   * degrees.  The degree origin is at the 3 o'clock position.
379
   *
380
   * @param x The X coordinate of the upper left corner of the rect.
381
   * @param y The Y coordinate of the upper left corner of the rect.
382
   * @param width The width of the rect.
383
   * @param height The height of the rect.
384
   * @param arcStart The beginning angle of the arc.
385
   * @param arcAngle The extent of the arc.
386
   */
387
  public abstract void drawArc(int x, int y, int width, int height,
388
                               int arcStart, int arcAngle);
389
 
390
  /**
391
   * Fills the arc define by the specified bounding rectangle and the specified
392
   * angle parameter.  The arc is centered at the center of the rectangle.
393
   * The arc starts at the arcAngle position and extend for arcAngle
394
   * degrees.  The degree origin is at the 3 o'clock position.
395
   *
396
   * @param x The X coordinate of the upper left corner of the rect.
397
   * @param y The Y coordinate of the upper left corner of the rect.
398
   * @param width The width of the rect.
399
   * @param height The height of the rect.
400
   * @param arcStart The beginning angle of the arc.
401
   * @param arcAngle The extent of the arc.
402
   */
403
  public abstract void fillArc(int x, int y, int width, int height,
404
                               int arcStart, int arcAngle);
405
 
406
  /**
407
   * Draws a series of interconnected lines determined by the arrays
408
   * of corresponding x and y coordinates.
409
   *
410
   * @param xPoints The X coordinate array.
411
   * @param yPoints The Y coordinate array.
412
   * @param npoints The number of points to draw.
413
   */
414
  public abstract void drawPolyline(int xPoints[], int yPoints[], int npoints);
415
 
416
  /**
417
   * Draws a series of interconnected lines determined by the arrays
418
   * of corresponding x and y coordinates.  The figure is closed if necessary
419
   * by connecting the first and last points.
420
   *
421
   * @param xPoints The X coordinate array.
422
   * @param yPoints The Y coordinate array.
423
   * @param npoints The number of points to draw.
424
   */
425
  public abstract void drawPolygon(int xPoints[], int yPoints[], int npoints);
426
 
427
  /**
428
   * Draws the specified polygon.
429
   *
430
   * @param polygon The polygon to draw.
431
   */
432
  public void drawPolygon(Polygon polygon)
433
  {
434
    drawPolygon(polygon.xpoints, polygon.ypoints, polygon.npoints);
435
  }
436
 
437
  /**
438
   * Fills the polygon determined by the arrays
439
   * of corresponding x and y coordinates.
440
   *
441
   * @param xPoints The X coordinate array.
442
   * @param yPoints The Y coordinate array.
443
   * @param npoints The number of points to draw.
444
   */
445
  public abstract void fillPolygon(int xPoints[], int yPoints[], int npoints);
446
 
447
  /**
448
   * Fills the specified polygon
449
   *
450
   * @param polygon The polygon to fill.
451
   */
452
  public void fillPolygon(Polygon polygon)
453
  {
454
    fillPolygon(polygon.xpoints, polygon.ypoints, polygon.npoints);
455
  }
456
 
457
  /**
458
   * Draws the specified string starting at the specified point.
459
   *
460
   * @param string The string to draw.
461
   * @param x The X coordinate of the point to draw at.
462
   * @param y The Y coordinate of the point to draw at.
463
   */
464
  public abstract void drawString(String string, int x, int y);
465
 
466
  public abstract void drawString (AttributedCharacterIterator ci, int x,
467
                                   int y);
468
 
469
  /**
470
   * Draws the specified characters starting at the specified point.
471
   *
472
   * @param data The array of characters to draw.
473
   * @param offset The offset into the array to start drawing characters from.
474
   * @param length The number of characters to draw.
475
   * @param x The X coordinate of the point to draw at.
476
   * @param y The Y coordinate of the point to draw at.
477
   */
478
  public void drawChars(char data[], int offset, int length, int x, int y)
479
  {
480
    drawString(new String(data, offset, length), x, y);
481
  }
482
 
483
  public void drawBytes(byte[] data, int offset, int length, int x, int y)
484
  {
485
    String str = new String(data, offset, length);
486
    drawString(str, x, y);
487
  }
488
 
489
  /**
490
   * Draws all of the image that is available and returns.  If the image
491
   * is not completely loaded, <code>false</code> is returned and
492
   * the specified iamge observer is notified as more data becomes
493
   * available.
494
   *
495
   * @param image The image to draw.
496
   * @param x The X coordinate of the point to draw at.
497
   * @param y The Y coordinate of the point to draw at.
498
   * @param observer The image observer to notify as data becomes available.
499
   *
500
   * @return <code>true</code> if all the image data is available,
501
   * <code>false</code> otherwise.
502
   */
503
  public abstract boolean drawImage(Image image, int x, int y,
504
                                    ImageObserver observer);
505
 
506
  /**
507
   * Draws all of the image that is available and returns.  The image
508
   * is scaled to fit in the specified rectangle.  If the image
509
   * is not completely loaded, <code>false</code> is returned and
510
   * the specified iamge observer is notified as more data becomes
511
   * available.
512
   *
513
   * @param image The image to draw.
514
   * @param x The X coordinate of the point to draw at.
515
   * @param y The Y coordinate of the point to draw at.
516
   * @param width The width of the rectangle to draw in.
517
   * @param height The height of the rectangle to draw in.
518
   * @param observer The image observer to notify as data becomes available.
519
   *
520
   * @return <code>true</code> if all the image data is available,
521
   * <code>false</code> otherwise.
522
   */
523
  public abstract boolean drawImage(Image image, int x, int y, int width,
524
                                    int height, ImageObserver observer);
525
 
526
  /**
527
   * Draws all of the image that is available and returns.  If the image
528
   * is not completely loaded, <code>false</code> is returned and
529
   * the specified iamge observer is notified as more data becomes
530
   * available.
531
   *
532
   * @param image The image to draw.
533
   * @param x The X coordinate of the point to draw at.
534
   * @param y The Y coordinate of the point to draw at.
535
   * @param bgcolor The background color to use for the image.
536
   * @param observer The image observer to notify as data becomes available.
537
   *
538
   * @return <code>true</code> if all the image data is available,
539
   * <code>false</code> otherwise.
540
   */
541
  public abstract boolean drawImage(Image image, int x, int y, Color bgcolor,
542
                                    ImageObserver observer);
543
 
544
  /**
545
   * Draws all of the image that is available and returns.  The image
546
   * is scaled to fit in the specified rectangle.  If the image
547
   * is not completely loaded, <code>false</code> is returned and
548
   * the specified iamge observer is notified as more data becomes
549
   * available.
550
   *
551
   * @param image The image to draw.
552
   * @param x The X coordinate of the point to draw at.
553
   * @param y The Y coordinate of the point to draw at.
554
   * @param width The width of the rectangle to draw in.
555
   * @param height The height of the rectangle to draw in.
556
   * @param bgcolor The background color to use for the image.
557
   * @param observer The image observer to notify as data becomes available.
558
   *
559
   * @return <code>true</code> if all the image data is available,
560
   * <code>false</code> otherwise.
561
   */
562
  public abstract boolean drawImage(Image image, int x, int y, int width,
563
                                    int height, Color bgcolor,
564
                                    ImageObserver observer);
565
 
566
  /**
567
   * FIXME: Write Javadocs for this when you understand it.
568
   */
569
  public abstract boolean drawImage(Image image, int dx1, int dy1, int dx2,
570
                                    int dy2, int sx1, int sy1, int sx2,
571
                                    int sy2, ImageObserver observer);
572
 
573
  /**
574
   * FIXME: Write Javadocs for this when you understand it.
575
   */
576
  public abstract boolean drawImage(Image image, int dx1, int dy1, int dx2,
577
                                    int dy2, int sx1, int sy1, int sx2,
578
                                    int sy2, Color bgcolor,
579
                                    ImageObserver observer);
580
 
581
  /**
582
   * Free any resources held by this graphics context immediately instead
583
   * of waiting for the object to be garbage collected and finalized.
584
   */
585
  public abstract void dispose();
586
 
587
  /**
588
   * Frees the resources held by this graphics context when it is
589
   * garbage collected.
590
   */
591
  public void finalize()
592
  {
593
    dispose();
594
  }
595
 
596
  /**
597
   * Returns a string representation of this object.
598
   *
599
   * @return A string representation of this object.
600
   */
601
  public String toString()
602
  {
603
    return getClass ().getName () + "[font=" + getFont () + ",color="
604
           + getColor () + "]";
605
  }
606
 
607
  /**
608
   * Returns <code>true</code> if the specified rectangle intersects with the
609
   * current clip, <code>false</code> otherwise.
610
   *
611
   * @param x the X coordinate of the upper left corner of the test rectangle
612
   * @param y the Y coordinate of the upper left corner of the test rectangle
613
   * @param width the width of the upper left corner of the test rectangle
614
   * @param height the height of the upper left corner of the test rectangle
615
   * @return <code>true</code> if the specified rectangle intersects with the
616
   *         current clip, <code>false</code> otherwise
617
   */
618
  public boolean hitClip(int x, int y, int width, int height)
619
  {
620
    Shape clip = getClip();
621
    if (clip == null)
622
      return true;
623
    return getClip().intersects(x, y, width, height);
624
  }
625
 
626
  public Rectangle getClipBounds(Rectangle r)
627
  {
628
    Rectangle clipBounds = getClipBounds();
629
 
630
    if (r == null)
631
      return clipBounds;
632
 
633
    r.x      = clipBounds.x;
634
    r.y      = clipBounds.y;
635
    r.width  = clipBounds.width;
636
    r.height = clipBounds.height;
637
    return r;
638
  }
639
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.