summaryrefslogtreecommitdiffstats
path: root/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java
diff options
context:
space:
mode:
authorSilenio Quarti <silenio>2005-04-07 19:38:00 +0000
committerSilenio Quarti <silenio>2005-04-07 19:38:00 +0000
commitb2343fc03843d983cdbcf528d75f7e9524819b07 (patch)
tree6924d22c9c7057ba9f5b38a5c096b7a60feefc03 /bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java
parent4b21419a582289fce72ef15bfe70049085b3c772 (diff)
downloadeclipse.platform.swt-b2343fc03843d983cdbcf528d75f7e9524819b07.tar.gz
eclipse.platform.swt-b2343fc03843d983cdbcf528d75f7e9524819b07.tar.xz
eclipse.platform.swt-b2343fc03843d983cdbcf528d75f7e9524819b07.zip
pattern API
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java')
-rwxr-xr-xbundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java74
1 files changed, 68 insertions, 6 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java
index 7c5a5fb9dc..55cbb9c2ab 100755
--- a/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java
@@ -1375,7 +1375,11 @@ public void fillArc(int x, int y, int width, int height, int startAngle, int arc
color.pixel = values.background;
OS.XQueryColor(xDisplay, data.colormap, color);
Cairo.cairo_save(cairo);
- Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ if (data.backgroundPattern != null) {
+ Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+ } else {
+ Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ }
Cairo.cairo_translate(cairo, x + width / 2f, y + height / 2f);
Cairo.cairo_scale(cairo, width / 2f, height / 2f);
Cairo.cairo_arc_negative(cairo, 0, 0, 1, -startAngle * (float)Compatibility.PI / 180, -(startAngle + arcAngle) * (float)Compatibility.PI / 180);
@@ -1541,7 +1545,11 @@ public void fillOval (int x, int y, int width, int height) {
color.pixel = values.background;
OS.XQueryColor(display, data.colormap, color);
Cairo.cairo_save(cairo);
- Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ if (data.backgroundPattern != null) {
+ Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+ } else {
+ Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ }
Cairo.cairo_translate(cairo, x + width / 2f, y + height / 2f);
Cairo.cairo_scale(cairo, width / 2f, height / 2f);
Cairo.cairo_arc_negative(cairo, 0, 0, 1, 0, 2 * (float)Compatibility.PI);
@@ -1568,7 +1576,11 @@ public void fillPath (Path path) {
OS.XQueryColor(display, data.colormap, color);
int /*long*/ cairo = data.cairo;
Cairo.cairo_save(cairo);
- Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ if (data.backgroundPattern != null) {
+ Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+ } else {
+ Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ }
Cairo.cairo_add_path(cairo, path.handle);
Cairo.cairo_fill(cairo);
Cairo.cairo_restore(cairo);
@@ -1604,7 +1616,11 @@ public void fillPolygon(int[] pointArray) {
color.pixel = values.background;
OS.XQueryColor(xDisplay, data.colormap, color);
Cairo.cairo_save(cairo);
- Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ if (data.backgroundPattern != null) {
+ Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+ } else {
+ Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ }
drawPolyline(cairo, pointArray, true);
Cairo.cairo_fill(cairo);
Cairo.cairo_restore(cairo);
@@ -1652,7 +1668,11 @@ public void fillRectangle (int x, int y, int width, int height) {
color.pixel = values.background;
OS.XQueryColor(xDisplay, data.colormap, color);
Cairo.cairo_save(cairo);
- Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ if (data.backgroundPattern != null) {
+ Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+ } else {
+ Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ }
Cairo.cairo_rectangle(cairo, x, y, width, height);
Cairo.cairo_fill(cairo);
Cairo.cairo_restore(cairo);
@@ -1729,7 +1749,11 @@ public void fillRoundRectangle (int x, int y, int width, int height, int arcWidt
color.pixel = values.background;
OS.XQueryColor(xDisplay, data.colormap, color);
Cairo.cairo_save(cairo);
- Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ if (data.backgroundPattern != null) {
+ Cairo.cairo_set_pattern(cairo, data.backgroundPattern.handle);
+ } else {
+ Cairo.cairo_set_rgb_color(cairo, (color.red & 0xFFFF) / (float)0xFFFF, (color.green & 0xFFFF) / (float)0xFFFF, (color.blue & 0xFFFF) / (float)0xFFFF);
+ }
Cairo.cairo_translate(cairo, nx, ny);
Cairo.cairo_scale(cairo, naw2, nah2);
Cairo.cairo_move_to(cairo, fw - 1, 0);
@@ -1969,6 +1993,13 @@ public Color getBackground() {
}
/**
+ * WARNING API STILL UNDER CONSTRUCTION AND SUBJECT TO CHANGE
+ */
+public Pattern getBackgroundPattern() {
+ if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
+ return data.backgroundPattern;
+}
+/**
* Returns the width of the specified character in the font
* selected into the receiver.
* <p>
@@ -2479,6 +2510,13 @@ public Color getForeground() {
/**
* WARNING API STILL UNDER CONSTRUCTION AND SUBJECT TO CHANGE
*/
+public Pattern getForegroundPattern() {
+ if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
+ return data.foregroundPattern;
+}
+/**
+ * WARNING API STILL UNDER CONSTRUCTION AND SUBJECT TO CHANGE
+ */
public int getInterpolation() {
if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
return data.interpolation;
@@ -2856,6 +2894,17 @@ public void setBackground (Color color) {
if (color == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
if (color.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
OS.XSetBackground(data.display, handle, color.handle.pixel);
+ data.backgroundPattern = null;
+}
+/**
+ * WARNING API STILL UNDER CONSTRUCTION AND SUBJECT TO CHANGE
+ */
+public void setBackgroundPattern(Pattern pattern) {
+ if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
+ if (pattern == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
+ if (pattern.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
+ initCairo();
+ data.backgroundPattern = pattern;
}
static void setCairoFont(int /*long*/ cairo, Font font) {
//TODO - use X font instead of loading new one???
@@ -3067,6 +3116,19 @@ public void setForeground (Color color) {
XColor xColor = color.handle;
Cairo.cairo_set_rgb_color(cairo, (xColor.red & 0xFFFF) / (float)0xFFFF, (xColor.green & 0xFFFF) / (float)0xFFFF, (xColor.blue & 0xFFFF) / (float)0xFFFF);
}
+ data.foregroundPattern = null;
+}
+/**
+ * WARNING API STILL UNDER CONSTRUCTION AND SUBJECT TO CHANGE
+ */
+public void setForegroundPattern(Pattern pattern) {
+ if (handle == 0) SWT.error(SWT.ERROR_GRAPHIC_DISPOSED);
+ if (pattern == null) SWT.error(SWT.ERROR_NULL_ARGUMENT);
+ if (pattern.isDisposed()) SWT.error(SWT.ERROR_INVALID_ARGUMENT);
+ initCairo();
+ int /*long*/ cairo = data.cairo;
+ Cairo.cairo_set_pattern(cairo, pattern.handle);
+ data.foregroundPattern = pattern;
}
/**
* WARNING API STILL UNDER CONSTRUCTION AND SUBJECT TO CHANGE