diff options
author | Roman Kennke <roman@kennke.org> | 2007-07-16 15:04:52 +0000 |
---|---|---|
committer | Roman Kennke <roman@kennke.org> | 2007-07-16 15:04:52 +0000 |
commit | 7801c17a5db13f77124279c85c03e83f6806bc49 (patch) | |
tree | fd86050021cff43f00afdd67bdba57eb9e95ec6f | |
parent | 94b423ecc11794d77252eec9595c48c771c983f9 (diff) | |
download | classpath-7801c17a5db13f77124279c85c03e83f6806bc49.tar.gz |
2007-07-13 Roman Kennke <roman@kennke.org>
* gnu/java/awt/java2d/AbstractGraphics2D.java
(clip(Shape)): Call setClip when the clip changes.
(drawImage): Add translation.
(drawLine): Add translation.
* gnu/java/awt/peer/x/PixmapVolatileImage.java
(getPixmap): New method.
* gnu/java/awt/peer/x/XEventPump.java
(XEventPump): Name thread. Start as daemon thread.
* gnu/java/awt/peer/x/XGraphics2D.java
(rawDrawImage): Special handling for PixmapVolatileImage.
(rawDrawLine): Don't add translation here. This is done in
the superclass.
(rawFillRect): Don't add translation here. This is done in
the superclass.
(renderScanline): Added null check.
-rw-r--r-- | ChangeLog | 18 | ||||
-rw-r--r-- | gnu/java/awt/java2d/AbstractGraphics2D.java | 16 | ||||
-rw-r--r-- | gnu/java/awt/peer/x/PixmapVolatileImage.java | 9 | ||||
-rw-r--r-- | gnu/java/awt/peer/x/XEventPump.java | 5 | ||||
-rw-r--r-- | gnu/java/awt/peer/x/XGraphics2D.java | 17 |
5 files changed, 52 insertions, 13 deletions
@@ -1,5 +1,23 @@ 2007-07-13 Roman Kennke <roman@kennke.org> + * gnu/java/awt/java2d/AbstractGraphics2D.java + (clip(Shape)): Call setClip when the clip changes. + (drawImage): Add translation. + (drawLine): Add translation. + * gnu/java/awt/peer/x/PixmapVolatileImage.java + (getPixmap): New method. + * gnu/java/awt/peer/x/XEventPump.java + (XEventPump): Name thread. Start as daemon thread. + * gnu/java/awt/peer/x/XGraphics2D.java + (rawDrawImage): Special handling for PixmapVolatileImage. + (rawDrawLine): Don't add translation here. This is done in + the superclass. + (rawFillRect): Don't add translation here. This is done in + the superclass. + (renderScanline): Added null check. + +2007-07-13 Roman Kennke <roman@kennke.org> + * gnu/java/awt/peer/x/PixmapVolatileImage.java: New class. * gnu/java/awt/peer/x/XGraphicsConfiguration.java (createCompatibleImage(int,int)): Delegate to the 3-int overload. diff --git a/gnu/java/awt/java2d/AbstractGraphics2D.java b/gnu/java/awt/java2d/AbstractGraphics2D.java index 24256cc07..15ec90da1 100644 --- a/gnu/java/awt/java2d/AbstractGraphics2D.java +++ b/gnu/java/awt/java2d/AbstractGraphics2D.java @@ -914,8 +914,8 @@ public abstract class AbstractGraphics2D { // Initialize clip if not already present. if (clip == null) - clip = s; - + setClip(s); + // This is so common, let's optimize this. else if (clip instanceof Rectangle && s instanceof Rectangle) { @@ -1157,7 +1157,9 @@ public abstract class AbstractGraphics2D { if (isOptimized) { - rawDrawLine(x1, y1, x2, y2); + int tx = (int) transform.getTranslateX(); + int ty = (int) transform.getTranslateY(); + rawDrawLine(x1 + tx, y1 + ty, x2 + tx, y2 + ty); } else { @@ -1197,7 +1199,8 @@ public abstract class AbstractGraphics2D { if (isOptimized) { - rawFillRect(x, y, width, height); + rawFillRect(x + (int) transform.getTranslateX(), + y + (int) transform.getTranslateY(), width, height); } else { @@ -1390,7 +1393,10 @@ public abstract class AbstractGraphics2D { boolean ret; if (isOptimized) - ret = rawDrawImage(image, x, y, observer); + { + ret = rawDrawImage(image, x + (int) transform.getTranslateX(), + y + (int) transform.getTranslateY(), observer); + } else { AffineTransform t = new AffineTransform(); diff --git a/gnu/java/awt/peer/x/PixmapVolatileImage.java b/gnu/java/awt/peer/x/PixmapVolatileImage.java index 5e354694d..131647fab 100644 --- a/gnu/java/awt/peer/x/PixmapVolatileImage.java +++ b/gnu/java/awt/peer/x/PixmapVolatileImage.java @@ -173,4 +173,13 @@ class PixmapVolatileImage return getWidth(); } + /** + * Returns the underlying X pixmap. This is used for the graphics code. + * + * @return the underlying X pixmap + */ + Pixmap getPixmap() + { + return pixmap; + } } diff --git a/gnu/java/awt/peer/x/XEventPump.java b/gnu/java/awt/peer/x/XEventPump.java index 09da06a7d..d376619c5 100644 --- a/gnu/java/awt/peer/x/XEventPump.java +++ b/gnu/java/awt/peer/x/XEventPump.java @@ -97,8 +97,9 @@ public class XEventPump display = d; windows = new HashMap(); drag = -1; - Thread t = new Thread(this); - t.start(); + Thread thread = new Thread(this, "X Event Pump"); + thread.setDaemon(true); + thread.start(); } /** diff --git a/gnu/java/awt/peer/x/XGraphics2D.java b/gnu/java/awt/peer/x/XGraphics2D.java index 3e0fe9499..73e780cc5 100644 --- a/gnu/java/awt/peer/x/XGraphics2D.java +++ b/gnu/java/awt/peer/x/XGraphics2D.java @@ -94,15 +94,12 @@ public class XGraphics2D protected void rawDrawLine(int x0, int y0, int x1, int y1) { - int tx = (int) transform.getTranslateX(); - int ty = (int) transform.getTranslateY(); - xdrawable.segment(xgc, x0 + tx, y0 + ty, x1 + tx, y1 + ty); + xdrawable.segment(xgc, x0, y0, x1, y1); } protected void rawFillRect(int x, int y, int w, int h) { - xdrawable.rectangle(xgc, x + (int) transform.getTranslateX(), - y + (int) transform.getTranslateY(), w, h, true); + xdrawable.rectangle(xgc, x, y, w, h, true); } /** @@ -252,7 +249,8 @@ public class XGraphics2D xdrawable.fill_rectangle(xgc, x0, y, l, 1); } } - xgc.set_foreground(old.getRGB()); + if (old != null) + xgc.set_foreground(old.getRGB()); } protected void fillScanline(int x0, int x1, int y) @@ -314,6 +312,13 @@ public class XGraphics2D xImage.getHeight(obs), x, y); ret = true; } + else if (image instanceof PixmapVolatileImage) + { + PixmapVolatileImage pvi = (PixmapVolatileImage) image; + xdrawable.copy_area(pvi.getPixmap(), xgc, 0, 0, pvi.getWidth(obs), + pvi.getHeight(obs), x, y); + ret = true; + } else { ret = super.rawDrawImage(image, x, y, obs); |