diff options
author | Silenio Quarti <silenio> | 2005-04-07 19:38:00 +0000 |
---|---|---|
committer | Silenio Quarti <silenio> | 2005-04-07 19:38:00 +0000 |
commit | b2343fc03843d983cdbcf528d75f7e9524819b07 (patch) | |
tree | 6924d22c9c7057ba9f5b38a5c096b7a60feefc03 /bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java | |
parent | 4b21419a582289fce72ef15bfe70049085b3c772 (diff) | |
download | eclipse.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-x | bundles/org.eclipse.swt/Eclipse SWT/motif/org/eclipse/swt/graphics/GC.java | 74 |
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 |