add support for rounded rectangles

Signed-off-by: Florian Thienel <florian@thienel.org>
diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/FakeGraphics.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/FakeGraphics.java
index 944fede..6eb0c4f 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/FakeGraphics.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/FakeGraphics.java
@@ -141,6 +141,10 @@
 	}
 
 	@Override
+	public void drawRoundRect(final int x, final int y, final int width, final int height, final int arcWidth, final int arcHeight) {
+	}
+
+	@Override
 	public void drawImage(final Image image, final int x, final int y, final int width, final int height) {
 		Assert.isTrue(image instanceof FakeImage);
 		lastDrawnImageUrl = ((FakeImage) image).url;
@@ -159,6 +163,10 @@
 	}
 
 	@Override
+	public void fillRoundRect(final int x, final int y, final int width, final int height, final int arcWidth, final int arcHeight) {
+	}
+
+	@Override
 	public Rectangle getClipBounds() {
 		return new Rectangle(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE);
 	}
diff --git a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/endtoend/TracingGraphics.java b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/endtoend/TracingGraphics.java
index 0f1109f..3c433a9 100644
--- a/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/endtoend/TracingGraphics.java
+++ b/org.eclipse.vex.core.tests/src/org/eclipse/vex/core/internal/layout/endtoend/TracingGraphics.java
@@ -135,7 +135,11 @@
 
 	@Override
 	public void drawRect(final int x, final int y, final int width, final int height) {
-		tracer.trace("Graphics.drawRect({0,number,#}, {1,number,#}, {2,number,#}, {3,number,#})", x, y, width, height);
+	}
+
+	@Override
+	public void drawRoundRect(final int x, final int y, final int width, final int height, final int arcWidth, final int arcHeight) {
+		tracer.trace("Graphics.drawRoundRect({0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, {4,number,#}, {5,number,#})", x, y, width, height, arcWidth, arcHeight);
 	}
 
 	@Override
@@ -154,6 +158,11 @@
 	}
 
 	@Override
+	public void fillRoundRect(final int x, final int y, final int width, final int height, final int arcWidth, final int arcHeight) {
+		tracer.trace("Graphics.fillRoundRect({0,number,#}, {1,number,#}, {2,number,#}, {3,number,#}, {4,number,#}, {5,number,#})", x, y, width, height, arcWidth, arcHeight);
+	}
+
+	@Override
 	public Rectangle getClipBounds() {
 		return new Rectangle(0, 0, Integer.MAX_VALUE, Integer.MAX_VALUE);
 	}
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/core/Graphics.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/core/Graphics.java
index f844893..35bdb48 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/core/Graphics.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/core/Graphics.java
@@ -48,12 +48,16 @@
 
 	public void drawRect(int x, int y, int width, int height);
 
+	public void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight);
+
 	public void drawImage(Image image, int x, int y, int width, int height);
 
 	public void fillOval(int x, int y, int width, int height);
 
 	public void fillRect(int x, int y, int width, int height);
 
+	public void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight);
+
 	public Rectangle getClipBounds();
 
 	public FontResource getCurrentFont();
diff --git a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/SwtGraphics.java b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/SwtGraphics.java
index d3c0206..544a593 100644
--- a/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/SwtGraphics.java
+++ b/org.eclipse.vex.core/src/org/eclipse/vex/core/internal/widget/swt/SwtGraphics.java
@@ -126,6 +126,11 @@
 	}
 
 	@Override
+	public void drawRoundRect(final int x, final int y, final int width, final int height, final int arcWidth, final int arcHeight) {
+		gc.drawRoundRectangle(x + offsetX, y + offsetY, width, height, arcWidth, arcHeight);
+	}
+
+	@Override
 	public void drawString(final String s, final int x, final int y) {
 		gc.drawString(s, x + offsetX, y + offsetY, true);
 	}
@@ -160,6 +165,11 @@
 	}
 
 	@Override
+	public void fillRoundRect(final int x, final int y, final int width, final int height, final int arcWidth, final int arcHeight) {
+		gc.fillRoundRectangle(x + offsetX, y + offsetY, width, height, arcWidth, arcHeight);
+	}
+
+	@Override
 	public Rectangle getClipBounds() {
 		final org.eclipse.swt.graphics.Rectangle r = gc.getClipping();
 		return new Rectangle(r.x - offsetX, r.y - offsetY, r.width, r.height);