Пример #1
0
        /**
         * @see <a href="XOpenDisplay.html">XOpenDisplay</a>
         */
        public Display(String hostname, int display_no, int screen_no)
        {
            default_screen_no = screen_no;
            connection        = new Connection(this, hostname, display_no);

            // authorization protocol
            String auth_name = "";
            String auth_data = "";
            int    n         = Data.len(auth_name);
            int    d         = Data.len(auth_data);

            Request request = new Request(this, 'B', // java = MSB
                                          3 + Data.unit(auth_name) + Data.unit(auth_data));

            request.index = 2;  // connection setup request hack
            request.write2(11); // major version
            request.write2(0);  // minor version
            request.write2(auth_name.Length);
            request.write2(auth_data.Length);
            request.write1(auth_name);
            request.write1(auth_data);

            init_server_info(read_reply(request));
            init_defaults();
            init_big_request_extension();
        }
Пример #2
0
        // opcode 74 - poly text8

        /**
         * @see <a href="XDrawText.html">XDrawText</a>
         */
        public void poly_text(GC gc, int x, int y, Text [] texts)
        {
            Request request = new Request(display, 74,
                                          4 + Data.unit(length(texts, 8)));

            request.write4(id);
            request.write4(gc.id);
            request.write2(x);
            request.write2(y);

            for (int i = 0; i < texts.Length; i++)
            {
                if (texts [i].font != null)
                {
                    request.write1(255);               // font-shift indicator
                    request.write4(texts [i].font.id); // java = MSB
                }

                request.write1(texts [i].s.Length);
                request.write1(texts [i].delta);
                request.write1(texts [i].s);
            }

            display.send_request(request);
        }
Пример #3
0
        // opcode 89 - store colors

        /**
         * @see <a href="XStoreColors.html">XStoreColors</a>
         */
        public void store_colors(int [] pixels, bool [] do_reds,
                                 bool [] do_greens, bool [] do_blues, RGB [] rgbs)
        {
            Request request = new Request(display, 89, 2 + 3 * pixels.Length);

            request.write4(id);

            for (int i = 0; i < pixels.Length; i++)
            {
                request.write4(pixels [i]);
                request.write2(rgbs [i].red);
                request.write2(rgbs [i].green);
                request.write2(rgbs [i].blue);

                int do_color = 0;
                if (do_reds [i])
                {
                    do_color |= 0x01;
                }
                if (do_greens [i])
                {
                    do_color |= 0x02;
                }
                if (do_blues [i])
                {
                    do_color |= 0x04;
                }

                request.write1(do_color);
                request.write1_unused();
            }

            display.send_request(request);
        }
Пример #4
0
 // opcode 7 - reparent window
 /**
  * @see <a href="XReparentWindow.html">XReparentWindow</a>
  */
 public void reparent (Window parent, int x, int y) {
   Request request = new Request (display, 7, 4);
   request.write4 (id);
   request.write4 (parent.id);
   request.write2 (x);
   request.write2 (y);
   display.send_request (request);
 }
Пример #5
0
        // opcode 58 - set dashes

        /**
         * @see <a href="XSetDashes.html">XSetDashes</a>
         */
        public void set_dashes(int dash_offset, byte [] dashes)
        {
            Request request = new Request(display, 58, 3 + Data.unit(dashes));

            request.write4(id);
            request.write2(dash_offset);
            request.write2(dashes.Length);
            request.write1(dashes);
            display.send_request(request);
        }
Пример #6
0
        // opcode 97 - query best size
        /**
           * @param klass valid:
           * {@link #CURSOR},
           * {@link #TILE},
           * {@link #STIPPLE}
           *
           * @see <a href="XQueryBestSize.html">XQueryBestSize</a>
           */
        public Size best_size(int klass, int width, int height)
        {
            Request request = new Request (display, 97, 3);
            request.write4 (id);
            request.write2 (width);
            request.write2 (height);

            Data reply = display.read_reply (request);
            return new Size (reply.read2 (8), reply.read2 (10));
        }
Пример #7
0
  // opcode 40 - translate coordinates
  /**
   * @see <a href="XTranslateCoordinates.html">XTranslateCoordinates</a>
   */
  public CoordinateReply translate_coordinates (Window src, 
    int src_x, int src_y) {

    Request request = new Request (display, 40, 4);
    request.write4 (src.id);
    request.write4 (id);
    request.write2 (src_x);
    request.write2 (src_y);
    return new CoordinateReply (display.read_reply (request));
  }
Пример #8
0
        // opcode 86 - alloc color cells

        /**
         * @see <a href="XAllocColorCells.html">XAllocColorCells</a>
         */
        public ColorCellsReply alloc_color_cells(bool contiguous,
                                                 int color_count, int plane_count)
        {
            Request request = new Request(display, 86, contiguous, 3);

            request.write4(id);
            request.write2(color_count);
            request.write2(plane_count);
            return(new ColorCellsReply(display.read_reply(request)));
        }
Пример #9
0
        // opcode 107 - set screen saver

        /**
         * @param prefer_blanking valid:
         * {@link #NO},
         * {@link #YES},
         * {@link #DEFAULT}
         *
         * @param allow_exposures valid:
         * {@link #NO},
         * {@link #YES},
         * {@link #DEFAULT}
         *
         * @see <a href="XSetScreenSaver.html">XSetScreenSaver</a>
         */
        public void set_screen_saver(int timeout, int interval,
                                     int prefer_blanking, int allow_exposures)
        {
            Request request = new Request(this, 107, 3);

            request.write2(timeout);
            request.write2(interval);
            request.write1(prefer_blanking);
            request.write1(allow_exposures);
            send_request(request);
        }
Пример #10
0
  // opcode 61 - clear area
  /**
   * @see <a href="XClearArea.html">XClearArea</a>
   */
  public void clear_area (int x, int y, int width, int height, 
    bool exposures) {

    Request request = new Request (display, 61, exposures, 4);
    request.write4 (id);
    request.write2 (x);
    request.write2 (y);
    request.write2 (width);
    request.write2 (height);
    display.send_request (request);
  }
Пример #11
0
  // opcode 114 - rotate properties
  /**
   * @see <a href="XRotateWindowProperties.html">
   * XRotateWindowProperties</a>
   */
  public void rotate_properties (Atom [] properties, int delta) {
    Request request = new Request (display, 114, 3+properties.Length);
    request.write4 (id);
    request.write2 (properties.Length);
    request.write2 (delta);
    
    for (int i=0; i<properties.Length; i++)
      request.write4 (properties [i].id);

    display.send_request (request);
  }
Пример #12
0
        // opcode 87 - alloc color planes

        /**
         * @see <a href="XAllocColorPlanes.html">XAllocColorPlanes</a>
         */
        public Data alloc_planes(bool contiguous, int color_count,
                                 int red_count, int green_count, int blue_count)
        {
            Request request = new Request(display, 87, contiguous, 4);

            request.write4(id);
            request.write2(color_count);
            request.write2(red_count);
            request.write2(green_count);
            request.write2(blue_count);
            return(display.read_reply(request));
        }
Пример #13
0
        public Enum fonts(String pattern, int max_name_count)
        {
            Request request = new Request(this, 49, 2 + Data.unit(pattern));

            request.write2(max_name_count);
            request.write2(pattern.Length);
            request.write1(pattern);

            Data reply = read_reply(request);

            return(new FontsEnum(this, reply, 32, reply.read2(8)));
        }
Пример #14
0
        // opcode 77 - image text16

        /**
         * @see <a href="XDrawImageString16.html">XDrawImageString16</a>
         */
        public void image_text16(GC gc, int x, int y, String s)
        {
            Request request = new Request(display, 77, s.Length / 2,
                                          4 + Data.unit(s));

            request.write4(id);
            request.write4(gc.id);
            request.write2(x);
            request.write2(y);
            request.write1(s);
            display.send_request(request);
        }
Пример #15
0
        //throws NotFoundException {
        // xc-misc opcode 0 - get version
        public XCMisc(gnu.x11.Display display)
            : base(display, "XC-MISC", MINOR_OPCODE_STRINGS)
        {
            // check version before any other operations
            Request request = new Request (display, major_opcode, 0, 2);
            request.write2 (CLIENT_MAJOR_VERSION);
            request.write2 (CLIENT_MINOR_VERSION);

            Data reply = display.read_reply (request);
            server_major_version = reply.read2 (8);
            server_minor_version = reply.read2 (10);
        }
Пример #16
0
        // opcode 97 - query best size

        /**
         * @param klass valid:
         * {@link #CURSOR},
         * {@link #TILE},
         * {@link #STIPPLE}
         *
         * @see <a href="XQueryBestSize.html">XQueryBestSize</a>
         */
        public Size best_size(int klass, int width, int height)
        {
            Request request = new Request(display, 97, 3);

            request.write4(id);
            request.write2(width);
            request.write2(height);

            Data reply = display.read_reply(request);

            return(new Size(reply.read2(8), reply.read2(10)));
        }
Пример #17
0
        // opcode 50 - list fonts with info

        /**
         * @see <a href="XListFontsWithInfo.html">XListFontsWithInfo</a>
         */
        public Data fonts_with_info(String pattern,
                                    int max_name_count)
        {
            Request request = new Request(this, 50, 2 + Data.unit(pattern));

            request.write2(max_name_count);
            request.write2(pattern.Length);
            request.write1(pattern);

            // TODO deal with multiple replies
            return(read_reply(request));
        }
Пример #18
0
        // opcode 53 - create pixmap
        /**
           * @see <a href="XCreatePixmap.html">XCreatePixmap</a>
           */
        public Pixmap(Drawable drawable, int width, int height, int depth)
            : base(drawable.display)
        {
            this.width = width;
            this.height = height;

            Request request = new Request (display, 53, depth, 4);
            request.write4 (id);
            request.write4 (drawable.id);
            request.write2 (width);
            request.write2 (height);
            display.send_request (request);
        }
Пример #19
0
        // opcode 105 - change pointer control

        /**
         * @see <a href="XChangePointerControl.html">XChangePointerControl</a>
         */
        public void change_pointer_control(bool do_accel,
                                           bool do_threshold, int accel_numerator, int accel_denominator,
                                           int threshold)
        {
            Request request = new Request(display, 105, 3);

            request.write2(accel_numerator);
            request.write2(accel_denominator);
            request.write2(threshold);
            request.write1(do_accel);
            request.write1(do_threshold);
            display.send_request(request);
        }
Пример #20
0
        // opcode 84 - alloc color
        /**
           * @see <a href="XAllocColor.html">XAllocColor</a>
           */
        public Color alloc_color(int red, int green, int blue)
        {
            Request request = new Request (display, 84, 4);
            request.write4 (id);
            request.write2 (red);
            request.write2 (green);
            request.write2 (blue);

            Data reply = display.read_reply (request);
            Color color = new Color (reply.read4 (16));
            color.exact = new RGB (reply.read2 (8), reply.read2 (10), reply.read2 (12));
            return color;
        }
Пример #21
0
        // opcode 73 - get image TODO

        /**
         * @see <a href="XGetImage.html">XGetImage</a>
         */
        public Data image(int x, int y, int width, int height,
                          int plane_mask, int format)
        {
            Request request = new Request(display, 73, format, 5);

            request.write4(id);
            request.write2(x);
            request.write2(y);
            request.write2(width);
            request.write2(height);
            request.write2(plane_mask);

            return(display.read_reply(request));
        }
Пример #22
0
        // opcode 53 - create pixmap

        /**
         * @see <a href="XCreatePixmap.html">XCreatePixmap</a>
         */
        public Pixmap(Drawable drawable, int width, int height, int depth)
            : base(drawable.display)
        {
            this.width  = width;
            this.height = height;

            Request request = new Request(display, 53, depth, 4);

            request.write4(id);
            request.write4(drawable.id);
            request.write2(width);
            request.write2(height);
            display.send_request(request);
        }
Пример #23
0
        // opcode 84 - alloc color

        /**
         * @see <a href="XAllocColor.html">XAllocColor</a>
         */
        public Color alloc_color(int red, int green, int blue)
        {
            Request request = new Request(display, 84, 4);

            request.write4(id);
            request.write2(red);
            request.write2(green);
            request.write2(blue);

            Data  reply = display.read_reply(request);
            Color color = new Color(reply.read4(16));

            color.exact = new RGB(reply.read2(8), reply.read2(10), reply.read2(12));
            return(color);
        }
Пример #24
0
        // opcode 90 - store named color

        /**
         * @see <a href="XStoreNamedColor.html">XStoreNamedColor</a>
         */
        public void store_named_color(int pixel, String name, bool do_reds,
                                      bool do_greens, bool do_blues)
        {
            int do_color = 0;

            if (do_reds)
            {
                do_color |= 0x01;
            }
            if (do_greens)
            {
                do_color |= 0x02;
            }
            if (do_blues)
            {
                do_color |= 0x04;
            }

            Request request = new Request(display, 90, do_color, 4 + Data.unit(name));

            request.write4(id);
            request.write4(pixel);
            request.write2(name.Length);
            request.write1(name);
            display.send_request(request);
        }
Пример #25
0
 // opcode 28 - grab button
 /**
  * @param button possible: {@link #ANY_BUTTON}
  * @param modifiers possible: {@link #ANY_MODIFIER}
  * @param pointer_mode valid:
  * {@link #SYNCHRONOUS},
  * {@link #ASYNCHRONOUS}
  * 
  * @param keyboard_mode valid:
  * {@link #SYNCHRONOUS},
  * {@link #ASYNCHRONOUS}
  * 
  * @param confine_to possible: {@link #NONE}
  * @param cursor possible: {@link Cursor#NONE}
  * @see <a href="XGrabButton.html">XGrabButton</a>
  */
 public void grab_button (int button, int modifiers, bool owner_events,
   int event_mask, int pointer_mode, int keyboard_mode, Window confine_to,
   Cursor cursor) { 
   
   Request request = new Request (display, 28, owner_events, 6);
   request.write4 (id);
   request.write2 (event_mask);
   request.write1 (pointer_mode);
   request.write1 (keyboard_mode);
   request.write4 (confine_to.id);
   request.write4 (cursor.id);
   request.write1 (button);
   request.write1_unused ();
   request.write2 (modifiers);
   display.send_request (request);
 }
Пример #26
0
     // render opcode 26 - fill rectangles
     /**
        * @see <a href="XRenderFillRectangle.html">XRenderFillRectangle</a>
        */
     public void fill_rectangle(int op, Color color, int x, int y, 
 int width, int height)
     {
         Request request = new Request (display, render.major_opcode, 26, 7);
         request.write1 (op);
         request.write3_unused ();
         request.write4 (id);
         request.write2 (x);
         request.write2 (y);
         request.write2 (width);
         request.write2 (height);
         request.write2 (color.red);
         request.write2 (color.green);
         request.write2 (color.blue);
         request.write2 (color.alpha);
         display.send_request (request);
     }
Пример #27
0
  // opcode 34 - ungrab key
  /**
   * @param key possible: {@link #ANY_KEY}
   * @param modifiers possible: {@link #ANY_MODIFIER}
   * @see <a href="XUngrabKey.html">XUngrabKey</a>
   */
  public void ungrab_key (int keysym, int modifiers) {
    int keycode = keysym == 0 ? 0 
      : display.input.keysym_to_keycode (keysym);

    Request request = new Request (display, 34, keycode, 3);
    request.write4 (id);
    request.write2 (modifiers);
    display.send_request (request);
  }
Пример #28
0
        // opcode 98 - query extension

        /**
         * @see <a href="XQueryExtension.html">XQueryExtension</a>
         */
        public ExtensionReply extension(String name)
        {
            Request request = new Request(this, 98, 2 + Data.unit(name));

            request.write2(name.Length);
            request.write2_unused();
            request.write1(name);
            return(new ExtensionReply(read_reply(request)));
        }
Пример #29
0
        // opcode 51 - set font path

        /**
         * @see <a href="XSetFontPath.html">XSetFontPath</a>
         */
        public void set_font_path(int count, String path)
        {
            Request request = new Request(this, 51, 2 + Data.unit(path));

            request.write2(count);
            request.write2_unused();
            request.write1(path);
            send_request(request);
        }
Пример #30
0
        // opcode 109 - change hosts

        /**
         * @param mode valid:
         * {@link #INSERT},
         * {@link #DELETE}
         *
         * @see <a href="XAddHost.html">XAddHost</a>
         * @see <a href="XRemoveHost.html">XRemoveHost</a>
         */
        public void change_hosts(int mode, int family, byte [] host)
        {
            Request request = new Request(this, 109, mode, 2 + Data.unit(host));

            request.write1(family);
            request.write1_unused();
            request.write2(host.Length);
            request.write1(host);
            send_request(request);
        }
Пример #31
0
        // opcode 30 - change active pointer grab

        /**
         * @param cursor possible: {@link Cursor#NONE}
         * @param time possible: {@link Display#CURRENT_TIME}
         * @see <a href="XChangeActivePointerGrab.html">
         *  XChangeActivePointerGrab</a>
         */
        public void change_active_pointer_grab(int event_mask,
                                               Cursor cursor, int time)
        {
            Request request = new Request(display, 30, 4);

            request.write4(cursor.id);
            request.write4(time);
            request.write2(event_mask);
            display.send_request(request);
        }
Пример #32
0
        // opcode 45 - open font
        /**
           * @see <a href="XLoadFont.html">XLoadFont</a>
           */
        public Font(Display display, String name)
            : base(display)
        {
            this.name = name;

            Request request = new Request (display, 45, 3+Data.unit (name));
            request.write4 (id);
            request.write2 (name.Length);
            request.write2_unused ();
            request.write1 (name);
            display.send_request (request);
        }
Пример #33
0
        // opcode 72 - put image
        public void put_small_image(GC gc, Image image, int y1, int y2,
                                    int x, int y)
        {
            int offset = image.line_byte_count * y1;
            int length = image.line_byte_count * (y2 - y1);

            Request request = new Request(display, 72, image.format,
                                          6 + Data.unit(length));

            request.write4(id);
            request.write4(gc.id);
            request.write2(image.width);
            request.write2(y2 - y1);
            request.write2(x);
            request.write2(y);
            request.write1(image.left_pad);
            request.write1(image.pixmap_format.depth());
            request.write2_unused();
            request.write1(image.data, offset, length);
            display.send_request(request);
        }
Пример #34
0
  // opcode 33 - grab key
  /**
   * @param modifiers possible: {@link #ANY_MODIFIER}
   * @param pointer_mode valid: 
   * {@link #SYNCHRONOUS},
   * {@link #ASYNCHRONOUS}
   * 
   * @param keyboard_mode valid:
   * {@link #SYNCHRONOUS},
   * {@link #ASYNCHRONOUS}
   * 
   * @see <a href="XGrabKey.html">XGrabKey</a>
   */
  public void grab_key (int keysym, int modifiers, bool owner_events, 
    int pointer_mode, int keyboard_mode) {

    int keycode = display.input.keysym_to_keycode (keysym);

    Request request = new Request (display, 33, owner_events, 4);
    request.write4 (id);
    request.write2 (modifiers);
    request.write1 (keycode);
    request.write1 (pointer_mode);
    request.write1 (keyboard_mode);
    display.send_request (request);
  }
Пример #35
0
  // opcode 26 - grab pointer
  /**
   * @param pointer_mode valid:
   * {@link #SYNCHRONOUS},
   * {@link #ASYNCHRONOUS}
   * 
   * @param keyboard_mode valid:
   * {@link #SYNCHRONOUS},
   * {@link #ASYNCHRONOUS}
   * 
   * @param confine_to possible: {@link #NONE}
   * @param cursor possible: {@link Cursor#NONE}
   * @param time possible: {@link Display#CURRENT_TIME}
   *
   * @return valid:
   * {@link #SUCCESS},
   * {@link #ALREADY_GRABBED},
   * {@link #FROZEN},
   * {@link #INVALID_TIME},
   * {@link #NOT_VIEWABLE}
   *
   * @see <a href="XGrabPointer.html">XGrabPointer</a>
   */
  public int grab_pointer (bool owner_events, int event_mask, 
    int pointer_mode, int keyboard_mode, Window confine_to, Cursor cursor,
    int time) { 

    Request request = new Request (display, 26, owner_events, 6);
    request.write4 (id);
    request.write2 (event_mask);
    request.write1 (pointer_mode);
    request.write1 (keyboard_mode);
    request.write4 (confine_to.id);
    request.write4 (cursor.id);
    request.write4 (time);
    return display.read_reply (request).read1 (1);  
  }
Пример #36
0
        // opcode 45 - open font

        /**
         * @see <a href="XLoadFont.html">XLoadFont</a>
         */
        public Font(Display display, String name)

            : base(display)
        {
            this.name = name;

            Request request = new Request(display, 45, 3 + Data.unit(name));

            request.write4(id);
            request.write2(name.Length);
            request.write2_unused();
            request.write1(name);
            display.send_request(request);
        }
Пример #37
0
 // opcode 58 - set dashes
 /**
    * @see <a href="XSetDashes.html">XSetDashes</a>
    */
 public void set_dashes(int dash_offset, byte [] dashes)
 {
     Request request = new Request (display, 58, 3+Data.unit (dashes));
     request.write4 (id);
     request.write2 (dash_offset);
     request.write2 (dashes.Length);
     request.write1 (dashes);
     display.send_request (request);
 }
Пример #38
0
     // render opcode 8 - scale
     public void scale(int color_scale, int alpha_scale, 
 Picture src, int src_x, int src_y, 
 int dst_x, int dst_y, int width, int height)
     {
         Request request = new Request (display, render.major_opcode, 9, 8);
         request.write4 (src.id);
         request.write4 (id);
         request.write4 (color_scale);
         request.write4 (alpha_scale);
         request.write2 (src_x);
         request.write2 (src_y);
         request.write2 (dst_x);
         request.write2 (dst_y);
         request.write2 (width);
         request.write2 (height);
         display.send_request (request);
     }
Пример #39
0
     // opcode 41 - warp pointer
     /**
        * @param src possible: {@link #NONE}
        * @see <a href="XWarpPointer.html">XWarpPointer</a>
        */
     public void warp_pointer(Window src, int src_x, int src_y, 
 int src_width, int src_height, int dest_x, int dest_y)
     {
         Request request = new Request (display, 41, 6);
         request.write4 (src.id);
         request.write4 (id);
         request.write2 (src_x);
         request.write2 (src_y);
         request.write2 (src_width);
         request.write2 (src_height);
         request.write2 (dest_x);
         request.write2 (dest_y);
         display.send_request (request);
     }
Пример #40
0
        // render opcode 6 - set picture clip rectangles
        /**
           * @see <a href="XRenderSetPictureClipRectangles.html">
           * XRenderSetPictureClipRectangles</a>
           */
        public void set_clip_rectangles(int x_origin, int y_origin,
    Rectangle [] rectangles)
        {
            Request request = new Request (display, render.major_opcode, 7,
              3+2*rectangles.Length);
            request.write4 (id);

            for (int i=0; i<rectangles.Length; i++) {
              request.write2 (rectangles [i].x);
              request.write2 (rectangles [i].y);
              request.write2 (rectangles [i].width);
              request.write2 (rectangles [i].height);
            }
            display.send_request (request);
        }
Пример #41
0
     // opcode 107 - set screen saver
     /**
        * @param prefer_blanking valid:
        * {@link #NO},
        * {@link #YES},
        * {@link #DEFAULT}
        *
        * @param allow_exposures valid:
        * {@link #NO},
        * {@link #YES},
        * {@link #DEFAULT}
        *
        * @see <a href="XSetScreenSaver.html">XSetScreenSaver</a>
        */
     public void set_screen_saver(int timeout, int interval, 
 int prefer_blanking, int allow_exposures)
     {
         Request request = new Request (this, 107, 3);
         request.write2 (timeout);
         request.write2 (interval);
         request.write1 (prefer_blanking);
         request.write1 (allow_exposures);
         send_request (request);
     }
Пример #42
0
     // opcode 26 - grab pointer
     /**
        * @param pointer_mode valid:
        * {@link #SYNCHRONOUS},
        * {@link #ASYNCHRONOUS}
        *
        * @param keyboard_mode valid:
        * {@link #SYNCHRONOUS},
        * {@link #ASYNCHRONOUS}
        *
        * @param confine_to possible: {@link #NONE}
        * @param cursor possible: {@link Cursor#NONE}
        * @param time possible: {@link Display#CURRENT_TIME}
        *
        * @return valid:
        * {@link #SUCCESS},
        * {@link #ALREADY_GRABBED},
        * {@link #FROZEN},
        * {@link #INVALID_TIME},
        * {@link #NOT_VIEWABLE}
        *
        * @see <a href="XGrabPointer.html">XGrabPointer</a>
        */
     public int grab_pointer(bool owner_events, int event_mask, 
 int pointer_mode, int keyboard_mode, Window confine_to, Cursor cursor,
 int time)
     {
         Request request = new Request (display, 26, owner_events, 6);
         request.write4 (id);
         request.write2 (event_mask);
         request.write1 (pointer_mode);
         request.write1 (keyboard_mode);
         request.write4 (confine_to.id);
         request.write4 (cursor.id);
         request.write4 (time);
         return display.read_reply (request).read1 (1);
     }
Пример #43
0
 // opcode 51 - set font path
 /**
    * @see <a href="XSetFontPath.html">XSetFontPath</a>
    */
 public void set_font_path(int count, String path)
 {
     Request request = new Request (this, 51, 2+Data.unit (path));
     request.write2 (count);
     request.write2_unused ();
     request.write1 (path);
     send_request (request);
 }
Пример #44
0
     // opcode 30 - change active pointer grab
     /**
        * @param cursor possible: {@link Cursor#NONE}
        * @param time possible: {@link Display#CURRENT_TIME}
        * @see <a href="XChangeActivePointerGrab.html">
        *  XChangeActivePointerGrab</a>
        */
     public void change_active_pointer_grab(int event_mask, 
 Cursor cursor, int time)
     {
         Request request = new Request (display, 30, 4);
         request.write4 (cursor.id);
         request.write4 (time);
         request.write2 (event_mask);
         display.send_request (request);
     }
Пример #45
0
        // opcode 59 - set clip rectangles
        /**
           * @param ordering valid:
           * {@link #UN_SORTED},
           * {@link #Y_SORTED},
           * {@link #YX_SORTED},
           * {@link #YX_BANDED}
           *
           * @see <a href="XSetClipRectangles.html">XSetClipRectangles</a>
           */
        public void set_clip_rectangles(int clip_x_origin, int clip_y_origin,
    Rectangle [] rectangles, int ordering)
        {
            Request request = new Request (display, 59, ordering, 3+2*rectangles.Length);
            request.write4 (id);
            request.write2 (clip_x_origin);
            request.write2 (clip_y_origin);

            for (int i=0; i<rectangles.Length; i++) {
              request.write2 (rectangles [i].x);
              request.write2 (rectangles [i].y);
              request.write2 (rectangles [i].width);
              request.write2 (rectangles [i].height);
            }

            display.send_request (request);
        }
Пример #46
0
        // opcode 18 - change property
        /**
           * Extra parameters (offset and data_format) are used to support Data
           * class as parameter for writing. See set_wm_normal_hints ().
           *
           * @param mode valid:
           * {@link #REPLACE},
           * {@link #PREPEND},
           * {@link #APPEND}
           *
           * @param format: valid:
           * <code>8</code>,
           * <code>16</code>,
           * <code>32</code>
           *
           * @param data_format: valid:
           * <code>8</code>,
           * <code>16</code>,
           * <code>32</code>
           *
           * @see <a href="XChangeProperty.html">XChangeProperty</a>
           */
        public void change_property(int mode, int n, Atom property, Atom type,
    int format, Object data, int offset, int data_format)
        {
            Request request = new Request (display, 18, mode, 6+Data.unit (n*format/8));
            request.write4 (id);
            request.write4 (property.id);
            request.write4 (type.id);
            request.write1 (format);
            request.write3_unused ();
            request.write4 (n);		// data length in format unit

            // data
            switch (data_format) {
            case 8: request.write1 ((byte []) data, offset); break;
            case 16: request.write2 ((int []) data, offset); break;
            case 32: request.write4 ((int []) data, offset); break;
            }
            display.send_request (request);
        }
Пример #47
0
     // opcode 61 - clear area
     /**
        * @see <a href="XClearArea.html">XClearArea</a>
        */
     public void clear_area(int x, int y, int width, int height, 
 bool exposures)
     {
         Request request = new Request (display, 61, exposures, 4);
         request.write4 (id);
         request.write2 (x);
         request.write2 (y);
         request.write2 (width);
         request.write2 (height);
         display.send_request (request);
     }
Пример #48
0
        // opcode 114 - rotate properties
        /**
           * @see <a href="XRotateWindowProperties.html">
           * XRotateWindowProperties</a>
           */
        public void rotate_properties(Atom [] properties, int delta)
        {
            Request request = new Request (display, 114, 3+properties.Length);
            request.write4 (id);
            request.write2 (properties.Length);
            request.write2 (delta);

            for (int i=0; i<properties.Length; i++)
              request.write4 (properties [i].id);

            display.send_request (request);
        }
Пример #49
0
        /**
           * @see <a href="XOpenDisplay.html">XOpenDisplay</a>
           */
        public Display(String hostname, int display_no, int screen_no)
        {
            default_screen_no = screen_no;
            connection = new Connection (this, hostname, display_no);

            // authorization protocol
            String auth_name = "";
            String auth_data = "";
            int n = Data.len (auth_name);
            int d = Data.len (auth_data);

            Request request = new Request (this, 'B', // java = MSB
              3 + Data.unit (auth_name) + Data.unit (auth_data));
            request.index = 2;		// connection setup request hack
            request.write2 (11);	// major version
            request.write2 (0);		// minor version
            request.write2 (auth_name.Length);
            request.write2 (auth_data.Length);
            request.write1 (auth_name);
            request.write1 (auth_data);

            init_server_info (read_reply (request));
            init_defaults ();
            init_big_request_extension ();
        }
Пример #50
0
        public Enum fonts(String pattern, int max_name_count)
        {
            Request request = new Request (this, 49, 2+Data.unit (pattern));
            request.write2 (max_name_count);
            request.write2 (pattern.Length);
            request.write1 (pattern);

            Data reply = read_reply (request);
            return new FontsEnum (this, reply, 32, reply.read2 (8));
        }
Пример #51
0
     // xtest opcode 2 - fake input
     /**
        * @param type valid:
        * {@link #KEY_PRESS},
        * {@link #KEY_RELEASE},
        * {@link #BUTTON_PRESS},
        * {@link #BUTTON_RELEASE},
        * {@link #MOTION_NOTIFY}
        *
        * @param time possible: {@link gnu.x11.Display#CURRENT_TIME}
        */
     public void fake_input(int type, int detail, int delay, Window root, 
 int x, int y)
     {
         Request request = new Request (display, major_opcode, 2, 9);
         request.write1 (type);
         request.write1 (detail);
         request.write2_unused ();
         request.write4 (delay);
         request.write4 (root.id);
         request.write_unused (8);
         request.write2 (x);
         request.write2 (y);
         display.send_request (request);
     }
Пример #52
0
        // opcode 33 - grab key
        /**
           * @param modifiers possible: {@link #ANY_MODIFIER}
           * @param pointer_mode valid:
           * {@link #SYNCHRONOUS},
           * {@link #ASYNCHRONOUS}
           *
           * @param keyboard_mode valid:
           * {@link #SYNCHRONOUS},
           * {@link #ASYNCHRONOUS}
           *
           * @see <a href="XGrabKey.html">XGrabKey</a>
           */
        public void grab_key(int keysym, int modifiers, bool owner_events, 
    int pointer_mode, int keyboard_mode)
        {
            int keycode = display.input.keysym_to_keycode (keysym);

            Request request = new Request (display, 33, owner_events, 4);
            request.write4 (id);
            request.write2 (modifiers);
            request.write1 (keycode);
            request.write1 (pointer_mode);
            request.write1 (keyboard_mode);
            display.send_request (request);
        }
Пример #53
0
     // opcode 105 - change pointer control
     /**
        * @see <a href="XChangePointerControl.html">XChangePointerControl</a>
        */
     public void change_pointer_control(bool do_accel, 
 bool do_threshold, int accel_numerator, int accel_denominator,
 int threshold)
     {
         Request request = new Request (display, 105, 3);
         request.write2 (accel_numerator);
         request.write2 (accel_denominator);
         request.write2 (threshold);
         request.write1 (do_accel);
         request.write1 (do_threshold);
         display.send_request (request);
     }
Пример #54
0
        // opcode 50 - list fonts with info
        /**
           * @see <a href="XListFontsWithInfo.html">XListFontsWithInfo</a>
           */
        public Data fonts_with_info(String pattern, 
    int max_name_count)
        {
            Request request = new Request (this, 50, 2+Data.unit (pattern));
            request.write2 (max_name_count);
            request.write2 (pattern.Length);
            request.write1 (pattern);

            // TODO deal with multiple replies
            return read_reply (request);
        }
Пример #55
0
     // opcode 28 - grab button
     /**
        * @param button possible: {@link #ANY_BUTTON}
        * @param modifiers possible: {@link #ANY_MODIFIER}
        * @param pointer_mode valid:
        * {@link #SYNCHRONOUS},
        * {@link #ASYNCHRONOUS}
        *
        * @param keyboard_mode valid:
        * {@link #SYNCHRONOUS},
        * {@link #ASYNCHRONOUS}
        *
        * @param confine_to possible: {@link #NONE}
        * @param cursor possible: {@link Cursor#NONE}
        * @see <a href="XGrabButton.html">XGrabButton</a>
        */
     public void grab_button(int button, int modifiers, bool owner_events,
 int event_mask, int pointer_mode, int keyboard_mode, Window confine_to,
 Cursor cursor)
     {
         Request request = new Request (display, 28, owner_events, 6);
         request.write4 (id);
         request.write2 (event_mask);
         request.write1 (pointer_mode);
         request.write1 (keyboard_mode);
         request.write4 (confine_to.id);
         request.write4 (cursor.id);
         request.write1 (button);
         request.write1_unused ();
         request.write2 (modifiers);
         display.send_request (request);
     }
Пример #56
0
        // opcode 1 - create window
        /**
           * @param depth possible: {@link #COPY_FROM_PARENT}

           * @param klass valid:
           * {@link #COPY_FROM_PARENT},
           * {@link #INPUT_OUTPUT},
           * {@link #INPUT_ONLY}
           *
           * @param visual_id possible: {@link #COPY_FROM_PARENT}
           * @see <a href="XCreateWindow.html">XCreateWindow</a>
           */
        public void create(int border_width, int depth, int klass, int visual_id,
    Attributes attr)
        {
            Request request = new Request (display, 1, depth, 8+attr.count ());
            request.write4 (id);
            request.write4 (parent.id);
            request.write2 (x);
            request.write2 (y);
            request.write2 (width);
            request.write2 (height);
            request.write2 (border_width);
            request.write2 (klass);
            request.write4 (visual_id);
            request.write4 (attr.bitmask);
            attr.write (request);
            display.send_request (request);
        }
Пример #57
0
        // opcode 109 - change hosts
        /**
           * @param mode valid:
           * {@link #INSERT},
           * {@link #DELETE}
           *
           * @see <a href="XAddHost.html">XAddHost</a>
           * @see <a href="XRemoveHost.html">XRemoveHost</a>
           */
        public void change_hosts(int mode, int family, byte [] host)
        {
            Request request = new Request (this, 109, mode, 2+Data.unit (host));

            request.write1 (family);
            request.write1_unused ();
            request.write2 (host.Length);
            request.write1 (host);
            send_request (request);
        }
Пример #58
0
 // opcode 7 - reparent window
 /**
    * @see <a href="XReparentWindow.html">XReparentWindow</a>
    */
 public void reparent(Window parent, int x, int y)
 {
     Request request = new Request (display, 7, 4);
     request.write4 (id);
     request.write4 (parent.id);
     request.write2 (x);
     request.write2 (y);
     display.send_request (request);
 }
Пример #59
0
        // opcode 16 - intern atom
        /**
           * @see <a href="XInternAtom.html">XInternAtom</a>
           */
        public Atom(Display display, String name, bool only_if_exists)
        {
            this.display = display;
            this.name = name;

            Request request = new Request (display, 16, only_if_exists, 2+Data.unit (name));
            request.write2 (name.Length);
            request.write2_unused ();
            request.write1 (name);

            Data reply = display.read_reply (request);
            id = reply.read4 (8);

            display.atom_ids.Add (id, this);
            display.atom_names.Add (name, this);
        }
Пример #60
0
 // opcode 98 - query extension
 /**
    * @see <a href="XQueryExtension.html">XQueryExtension</a>
    */
 public ExtensionReply extension(String name)
 {
     Request request = new Request (this, 98, 2+Data.unit (name));
     request.write2 (name.Length);
     request.write2_unused ();
     request.write1 (name);
     return new ExtensionReply (read_reply (request));
 }