Beispiel #1
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);
        }
Beispiel #2
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();
        }
Beispiel #3
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);
        }
Beispiel #4
0
  // opcode 31 - grab keyboard
  /**
   * @param pointer_mode valid:
   * {@link #SYNCHRONOUS},
   * {@link #ASYNCHRONOUS}
   * 
   * @param keyboard_mode valid: 
   * {@link #SYNCHRONOUS},
   * {@link #ASYNCHRONOUS}
   * 
   * @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="XGrabKeyboard.html">XGrabKeyboard</a>
   */
  public int grab_keyboard  (bool owner_events, int pointer_mode, 
    int keyboard_mode, int time) { 

    Request request = new Request (display, 31, owner_events, 4);
    request.write4 (id);
    request.write4 (time);
    request.write1 (pointer_mode);
    request.write1 (keyboard_mode);
    return display.read_reply (request).read1 (1);
  }
Beispiel #5
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);
        }
Beispiel #6
0
        //throws NotFoundException {
        // dbe opcode 0 - get version
        public DBE(gnu.x11.Display display)
            : base(display, "DOUBLE-BUFFER", MINOR_OPCODE_STRINGS, 1, 0)
        {
            // check version before any other operations
            Request request = new Request (display, major_opcode, 0, 2);
            request.write1 (CLIENT_MAJOR_VERSION);
            request.write1 (CLIENT_MINOR_VERSION);

            Data reply = display.read_reply (request);
            server_major_version = reply.read1 (8);
            server_minor_version = reply.read1 (9);
        }
Beispiel #7
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);
  }
Beispiel #8
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);
        }
Beispiel #9
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);  
  }
Beispiel #10
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);
        }
Beispiel #11
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);
 }
Beispiel #12
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);
        }
Beispiel #13
0
        // opcode 116 - set pointer mapping

        /**
         * @return valid:
         * {@link #SUCCESS},
         * {@link #BUSY}
         *
         * @see <a href="XSetPointerMapping.html">XSetPointerMapping</a>
         */
        public int set_pointer_mapping(byte [] map)
        {
            Request request = new Request(display, 116, map.Length, 2 + Data.unit(map));

            request.write1(map);
            return(display.read_reply(request).read1(1));
        }
Beispiel #14
0
        // opcode 118 - set modifier mapping

        /**
         * @return valid:
         * {@link #SUCCESS},
         * {@link #BUSY},
         * {@link #FAILED}
         *
         * @see <a href="XSetModifierMapping.html">XSetModifierMapping</a>
         */
        public int set_modifier_mapping(int keycodes_per_modifier,
                                        byte [] keycodes)
        {
            Request request = new Request(display, 118, keycodes_per_modifier,
                                          1 + Data.unit(keycodes));

            request.write1(keycodes);
            return(display.read_reply(request).read1(1));
        }
Beispiel #15
0
  // opcode 25 - send event
  /**
   * @see <a href="XSendEvent.html">XSendEvent</a>
   */
  public void send_event (bool propagate, int event_mask, 
    Event evt) {

    Request request = new Request (display, 25, propagate, 11);
    request.write4 (id);
    request.write4 (event_mask);
    request.write1 (evt.data);
    display.send_request (request);
  }
Beispiel #16
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)));
        }
Beispiel #17
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);
        }
Beispiel #18
0
        // opcode 48 - query text extents

        /**
         * @see <a href="XQueryTextExtents.html">XQueryTextExtents</a>
         */
        public TextExtentReply text_extent(String s)
        {
            Request request = new Request(display, 48, s.Length % 2 == 1,
                                          2 + Data.unit(s));

            request.write4(id);
            request.write1(s);
            return(new TextExtentReply(display.read_reply(request)));
        }
Beispiel #19
0
        // opcode 100 - change keyboard mapping

        /**
         * @see <a href="XChangeKeyboardMapping.html">XChangeKeyboardMapping</a>
         */
        public void change_keyboard_mapping(int first_keycode,
                                            int keysyms_per_keycode, int [] keysyms)
        {
            int keycode_count = keysyms.Length / keysyms_per_keycode;

            Request request = new Request(display, 100, keycode_count, 2 + keysyms.Length);

            request.write1(first_keycode);
            request.write1(keysyms_per_keycode);
            request.write2_unused();

            for (int i = 0; i < keysyms.Length; i++)
            {
                request.write4(keysyms [i]);
            }

            display.send_request(request);
        }
Beispiel #20
0
        // opcode 101 - get keyboard mapping

        /**
         * @see <a href="XGetKeyboardMapping.html">XGetKeyboardMapping</a>
         */
        public void keyboard_mapping()
        {
            int keysym_count = max_keycode - min_keycode + 1;

            Request request = new Request(display, 101, 2);

            request.write1(min_keycode);
            request.write1(keysym_count);
            Data reply = display.read_reply(request);

            keysyms_per_keycode = reply.read1(1);
            keysyms             = new int [keysym_count];

            for (int i = 0; i < keysym_count; i++)
            {
                keysyms [i] = reply.read4(32 + 4 * i * keysyms_per_keycode);
            }
        }
Beispiel #21
0
        // opcode 48 - query text extents
        /**
           * @see <a href="XQueryTextExtents.html">XQueryTextExtents</a>
           */
        public TextExtentReply text_extent(String s)
        {
            Request request = new Request (display, 48, s.Length % 2 == 1,
              2+Data.unit (s));

            request.write4 (id);
            request.write1 (s);
            return new TextExtentReply (display.read_reply (request));
        }
Beispiel #22
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);
        }
Beispiel #23
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);
  }
Beispiel #24
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);
        }
Beispiel #25
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));
        }
Beispiel #26
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);
        }
Beispiel #27
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);
        }
Beispiel #28
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)));
        }
Beispiel #29
0
        //throws NotFoundException {
        // xtest opcode 0 - get version
        /**
           * @see <a href="XTestQueryExtension.html">XTestQueryExtension</a>
           */
        public XTest(gnu.x11.Display display)
            : base(display, "XTEST", MINOR_OPCODE_STRINGS)
        {
            // check version before any other operations
            Request request = new Request (display, major_opcode, 0, 2);
            request.write1 (CLIENT_MAJOR_VERSION);
            request.write1_unused ();
            request.write2 (CLIENT_MINOR_VERSION);

            Data reply = display.read_reply (request);
            server_major_version = reply.read1 (1);
            server_minor_version = reply.read2 (10);
        }
Beispiel #30
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);
        }
Beispiel #31
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);
     }
Beispiel #32
0
        // opcode 92 - lookup color

        /**
         * @see <a href="XLookupColor.html">XLookupColor</a>
         */
        public Color lookup_color(String name)
        {
            Request request = new Request(display, 92, 3 + Data.unit(name));

            request.write4(id);
            request.write2(name.Length);
            request.write2_unused();
            request.write1(name);

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

            color.name   = name;
            color.exact  = new RGB(reply.read2(8), reply.read2(10), reply.read2(12));
            color.visual = new RGB(reply.read2(14), reply.read2(16),
                                   reply.read2(18));
            return(color);
        }
Beispiel #33
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);
        }
Beispiel #34
0
        // opcode 75 - poly text16

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

            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
                }

                String s = texts [i].s;

                if (s[0] > 128) // non-ascii
                {
                    request.write1(s.Length / 2);
                    request.write1(texts [i].delta);
                    request.write1(s);
                }
                else    // ascii
                {
                    request.write1(s.Length);
                    request.write1(texts [i].delta);
                    request.write2(s);
                }
            }

            display.send_request(request);
        }
Beispiel #35
0
        // opcode 75 - poly text16
        /**
           * @see <a href="XDrawText16.html">XDrawText16</a>
           */
        public void poly_text16(GC gc, int x, int y, Text [] texts)
        {
            Request request = new Request (display, 75,
              4+Data.unit (length (texts, 16)));

            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
              }

              String s = texts [i].s;

              if (s[0] > 128) { // non-ascii
            request.write1 (s.Length/2);
            request.write1 (texts [i].delta);
            request.write1 (s);

              } else {		// ascii
            request.write1 (s.Length);
            request.write1 (texts [i].delta);
            request.write2 (s);
              }
            }

            display.send_request (request);
        }
Beispiel #36
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 ();
        }
Beispiel #37
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);
        }
Beispiel #38
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);
     }
Beispiel #39
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);
        }
Beispiel #40
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);
        }
Beispiel #41
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);
     }
Beispiel #42
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);
 }
Beispiel #43
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);
     }
Beispiel #44
0
     // opcode 31 - grab keyboard
     /**
        * @param pointer_mode valid:
        * {@link #SYNCHRONOUS},
        * {@link #ASYNCHRONOUS}
        *
        * @param keyboard_mode valid:
        * {@link #SYNCHRONOUS},
        * {@link #ASYNCHRONOUS}
        *
        * @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="XGrabKeyboard.html">XGrabKeyboard</a>
        */
     public int grab_keyboard(bool owner_events, int pointer_mode, 
 int keyboard_mode, int time)
     {
         Request request = new Request (display, 31, owner_events, 4);
         request.write4 (id);
         request.write4 (time);
         request.write1 (pointer_mode);
         request.write1 (keyboard_mode);
         return display.read_reply (request).read1 (1);
     }
Beispiel #45
0
     // opcode 25 - send event
     /**
        * @see <a href="XSendEvent.html">XSendEvent</a>
        */
     public void send_event(bool propagate, int event_mask, 
 Event evt)
     {
         Request request = new Request (display, 25, propagate, 11);
         request.write4 (id);
         request.write4 (event_mask);
         request.write1 (evt.data);
         display.send_request (request);
     }
Beispiel #46
0
        // opcode 118 - set modifier mapping
        /**
           * @return valid:
           * {@link #SUCCESS},
           * {@link #BUSY},
           * {@link #FAILED}
           *
           * @see <a href="XSetModifierMapping.html">XSetModifierMapping</a>
           */
        public int set_modifier_mapping(int keycodes_per_modifier, 
    byte [] keycodes)
        {
            Request request = new Request (display, 118, keycodes_per_modifier,
              1+Data.unit (keycodes));

            request.write1 (keycodes);
            return display.read_reply (request).read1 (1);
        }
Beispiel #47
0
 // xtest opcode 3 - grab control
 /**
    * @see <a href="XTestGrabControl.html">XTestGrabControl</a>
    */
 public void grab_control(bool impervious)
 {
     Request request = new Request (display, major_opcode, 3, 2);
     request.write1 (impervious);
     display.send_request (request);
 }
Beispiel #48
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);
     }
Beispiel #49
0
     // render opcode 8 - composite
     /**
        * @param operation
        * {@link #CLEAR}
        * {@link #SRC}
        * {@link #DST}
        * {@link #OVER}
        * {@link #OVER_REVERSE}
        * {@link #IN}
        * {@link #IN_REVERSE}
        * {@link #OUT}
        * {@link #OUT_REVERSE}
        * {@link #ATOP}
        * {@link #ATOP_REVERSE}
        * {@link #XOR}
        * {@link #ADD}
        * {@link #SATURATE}
        * {@link #MAXIMUM}
        *
        * @see <a href="XRenderComposite.html">XRenderComposite</a>
        */
     public void composite(int op, Picture src, Picture mask, Picture dst, 
 int src_x, int src_y, int mask_x, int mask_y, int dst_x, int dst_y, 
 int width, int height)
     {
         Request request = new Request (display, major_opcode, 8, 9);
         request.write1 (op);
         request.write3_unused ();
         request.write4 (src.id);
         request.write4 (mask.id);
         request.write4 (dst.id);
         request.write2 (src_x);
         request.write2 (src_y);
         request.write2 (mask_x);
         request.write2 (mask_y);
         request.write2 (dst_x);
         request.write2 (dst_y);
         request.write2 (width);
         request.write2 (height);
         display.send_request (request);
     }
Beispiel #50
0
        // opcode 100 - change keyboard mapping
        /**
           * @see <a href="XChangeKeyboardMapping.html">XChangeKeyboardMapping</a>
           */
        public void change_keyboard_mapping(int first_keycode, 
    int keysyms_per_keycode, int [] keysyms)
        {
            int keycode_count = keysyms.Length / keysyms_per_keycode;

            Request request = new Request (display, 100, keycode_count, 2+keysyms.Length);
            request.write1 (first_keycode);
            request.write1 (keysyms_per_keycode);
            request.write2_unused ();

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

            display.send_request (request);
        }
Beispiel #51
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);
        }
Beispiel #52
0
        // opcode 101 - get keyboard mapping
        /**
           * @see <a href="XGetKeyboardMapping.html">XGetKeyboardMapping</a>
           */
        public void keyboard_mapping()
        {
            int keysym_count = max_keycode - min_keycode + 1;

            Request request = new Request (display, 101, 2);
            request.write1 (min_keycode);
            request.write1 (keysym_count);
            Data reply = display.read_reply (request);

            keysyms_per_keycode = reply.read1 (1);
            keysyms = new int [keysym_count];

            for (int i=0; i<keysym_count; i++)
              keysyms [i] = reply.read4 (32 + 4 * i * keysyms_per_keycode);
        }
Beispiel #53
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);
 }
Beispiel #54
0
 // opcode 116 - set pointer mapping
 /**
    * @return valid:
    * {@link #SUCCESS},
    * {@link #BUSY}
    *
    * @see <a href="XSetPointerMapping.html">XSetPointerMapping</a>
    */
 public int set_pointer_mapping(byte [] map)
 {
     Request request = new Request (display, 116, map.Length, 2+Data.unit (map));
     request.write1 (map);
     return display.read_reply (request).read1 (1);
 }
Beispiel #55
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);
     }
Beispiel #56
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));
 }
Beispiel #57
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);
        }
Beispiel #58
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);
        }
Beispiel #59
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));
        }