Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void drawRectangles (Rectangle [] rects) {
- int /*long*/ window = OS.gdk_get_default_root_window();
- if (parent != null) {
- window = OS.GTK_WIDGET_WINDOW (parent.paintHandle());
- }
- if (window == 0) return;
- if (OS.USE_CAIRO) {
- if(parent != null){
- 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;
- }else{
- int /*long*/ width = OS.gdk_window_get_width(window);
- int /*long*/ height = OS.gdk_window_get_height(window);
- int /*long*/ xDisplay = OS.gdk_x11_display_get_xdisplay(OS.gdk_display_get_default());
- int /*long*/ xDrawable = OS.gdk_x11_drawable_get_xid(window);
- int /*long*/ xVisual = OS.gdk_x11_visual_get_xvisual(OS.gdk_visual_get_system());
- int /*long*/ srcSurface = Cairo.cairo_xlib_surface_create(xDisplay, xDrawable, xVisual, width, height);
- int /*long*/ cairo = Cairo.cairo_create(srcSurface);
- 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 ();
- GdkColor color = new GdkColor ();
- OS.gdk_color_white (colormap, color);
- OS.gdk_gc_set_foreground (gc, color);
- OS.gdk_gc_set_subwindow (gc, OS.GDK_INCLUDE_INFERIORS);
- OS.gdk_gc_set_function (gc, OS.GDK_XOR);
- for (int i=0; i<rects.length; i++) {
- Rectangle rect = rects [i];
- int x = rect.x;
- if (parent != null && (parent.style & SWT.MIRRORED) != 0) x = parent.getClientWidth () - rect.width - x;
- OS.gdk_draw_rectangle (window, gc, 0, x, rect.y, rect.width, rect.height);
- }
- OS.g_object_unref (gc);
- }
Advertisement
Add Comment
Please, Sign In to add comment