diff options
author | Anatoly Spektor <aspektor@redhat.com> | 2012-08-08 13:39:58 -0400 |
---|---|---|
committer | Anatoly Spektor <aspektor@redhat.com> | 2012-08-08 13:39:58 -0400 |
commit | 5f1919d867f8814af3bc0b9aefe7af55e116b203 (patch) | |
tree | 3f9c89b6c6530099ac11ac31af1148e6ac147609 | |
parent | a8df1e15257a1f009104e7db01a711e35c6ae971 (diff) | |
download | eclipse.platform.swt-cairo_tracker_widget.tar.gz eclipse.platform.swt-cairo_tracker_widget.tar.xz eclipse.platform.swt-cairo_tracker_widget.zip |
Cairo implementation for tracker widget drawRectangles() method.cairo_tracker_widget
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java index af86c4f365..39c9cdd2a0 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Tracker.java @@ -12,6 +12,7 @@ package org.eclipse.swt.widgets; import org.eclipse.swt.*; +import org.eclipse.swt.internal.cairo.Cairo; import org.eclipse.swt.internal.gtk.*; import org.eclipse.swt.graphics.*; import org.eclipse.swt.events.*; @@ -311,7 +312,21 @@ void drawRectangles (Rectangle [] rects) { window = gtk_widget_get_window (parent.paintHandle()); } if (window == 0) return; - //TODO: Use Cairo + if(OS.USE_CAIRO){ + int /*long*/ cairo = OS.gdk_cairo_create(window); + if (cairo == 0) error (SWT.ERROR_NO_HANDLES); + Cairo.cairo_set_source_rgb(cairo, 1, 1, 1); + Cairo.cairo_set_line_width(cairo, 1); + Cairo.cairo_set_operator(cairo,Cairo.CAIRO_OPERATOR_DIFFERENCE); + Cairo.cairo_set_antialias(cairo, Cairo.CAIRO_ANTIALIAS_NONE); + for (int i=0; i<rects.length; i++) { + Rectangle rect = rects [i]; + Cairo.cairo_rectangle (cairo, rect.x, rect.y, rect.width, rect.height); + Cairo.cairo_stroke(cairo); + } + Cairo.cairo_destroy(cairo); + return; + } int /*long*/ gc = OS.gdk_gc_new (window); if (gc == 0) return; int /*long*/ colormap = OS.gdk_colormap_get_system (); |