aspektors

Untitled

Jun 22nd, 2012
26
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.49 KB | None | 0 0
  1. void drawRectangles (Rectangle [] rects) {
  2.     int /*long*/ window = OS.gdk_get_default_root_window();
  3.     if (parent != null) {
  4.         window = OS.GTK_WIDGET_WINDOW (parent.paintHandle());
  5.     }
  6.     if (window == 0) return;
  7.  
  8.     if (OS.USE_CAIRO) {
  9.        
  10.         if(parent != null){
  11.             int /*long*/ cairo = OS.gdk_cairo_create(window);
  12.             if (cairo == 0) error (SWT.ERROR_NO_HANDLES);
  13.             Cairo.cairo_set_source_rgb(cairo, 1, 1, 1);
  14.             Cairo.cairo_set_line_width(cairo, 1);
  15.             Cairo.cairo_set_operator(cairo,Cairo.CAIRO_OPERATOR_DIFFERENCE);
  16.             Cairo.cairo_set_antialias(cairo, Cairo.CAIRO_ANTIALIAS_NONE);
  17.             for (int i=0; i<rects.length; i++) {
  18.                 Rectangle rect = rects [i];
  19.                 Cairo.cairo_rectangle (cairo, rect.x, rect.y, rect.width, rect.height);
  20.                 Cairo.cairo_stroke(cairo);
  21.             }
  22.             Cairo.cairo_destroy(cairo);    
  23.             return;
  24.         }else{
  25.                 int /*long*/ width = OS.gdk_window_get_width(window);
  26.                 int /*long*/ height = OS.gdk_window_get_height(window);
  27.                 int /*long*/ xDisplay = OS.gdk_x11_display_get_xdisplay(OS.gdk_display_get_default());
  28.                 int /*long*/ xDrawable = OS.gdk_x11_drawable_get_xid(window);
  29.                 int /*long*/ xVisual = OS.gdk_x11_visual_get_xvisual(OS.gdk_visual_get_system());
  30.                 int /*long*/ srcSurface = Cairo.cairo_xlib_surface_create(xDisplay, xDrawable, xVisual, width, height);
  31.                 int /*long*/ cairo = Cairo.cairo_create(srcSurface);
  32.                 if (cairo == 0) error (SWT.ERROR_NO_HANDLES);
  33.             Cairo.cairo_set_source_rgb(cairo, 1, 1, 1);
  34.             Cairo.cairo_set_line_width(cairo, 1);
  35.             Cairo.cairo_set_operator(cairo,Cairo.CAIRO_OPERATOR_DIFFERENCE);
  36.             Cairo.cairo_set_antialias(cairo, Cairo.CAIRO_ANTIALIAS_NONE);
  37.             for (int i=0; i<rects.length; i++) {
  38.                 Rectangle rect = rects [i];
  39.                 Cairo.cairo_rectangle (cairo, rect.x, rect.y, rect.width, rect.height);
  40.                 Cairo.cairo_stroke(cairo);
  41.             }
  42.             Cairo.cairo_destroy(cairo);    
  43.             return;
  44.         }
  45.        
  46.     }
  47.    
  48.     int /*long*/ gc = OS.gdk_gc_new (window);
  49.     if (gc == 0) return;
  50.     int /*long*/ colormap = OS.gdk_colormap_get_system ();
  51.     GdkColor color = new GdkColor ();
  52.     OS.gdk_color_white (colormap, color);
  53.     OS.gdk_gc_set_foreground (gc, color);
  54.     OS.gdk_gc_set_subwindow (gc, OS.GDK_INCLUDE_INFERIORS);
  55.     OS.gdk_gc_set_function (gc, OS.GDK_XOR);
  56.     for (int i=0; i<rects.length; i++) {
  57.         Rectangle rect = rects [i];
  58.         int x = rect.x;
  59.         if (parent != null && (parent.style & SWT.MIRRORED) != 0) x = parent.getClientWidth () - rect.width - x;
  60.         OS.gdk_draw_rectangle (window, gc, 0, x, rect.y, rect.width, rect.height);
  61.     }
  62.     OS.g_object_unref (gc);
  63. }
Advertisement
Add Comment
Please, Sign In to add comment