pike.git / lib / modules / Protocols.pmod / X.pmod / Requests.pmod

version» Context lines:

pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:14:    * This program is distributed in the hope that it will be useful,    * but WITHOUT ANY WARRANTY; without even the implied warranty of    * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the    * GNU General Public License for more details.    *    * You should have received a copy of the GNU General Public License    * along with this program; if not, write to the Free Software    * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA    */    +  + //! Varios X11 on-wire requests +    #pike __REAL_VERSION__    -  + //!   class request   {    constant reqType = 0;   // constant expect_reply = 0;       array build_value_list(mapping m, array(string) fields)    {    int mask = 0;    int bit = 1;    array v = ({ });       foreach(fields, string f)    { -  if (!zero_type(m[f])) +  if (has_index(m, f))    {    v += ({ objectp(m[f]) ? m[f]->id : m[f] });    mask |= bit;   // werror(sprintf("Request->build_value_list: field %s, mask = %x\n",   // f, mask));    }    bit <<= 1;    }    return ({ mask, sprintf("%@4c", v) });    }
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:66:    }       mixed handle_error(mapping reply)    {    error("Xlib.request: unexpected reply!\n");    return 0;    }   }      class FreeRequest + //!   {    inherit request; -  +     int id; -  +  //!       string to_string()    {    return build_request(sprintf("%4c", id));    }   }         class CloseFont -  + //!   {    inherit FreeRequest;    constant reqType=46;   }      class FreePixmap -  + //!   {    inherit FreeRequest;    constant reqType=54;   }      class FreeGC -  + //!   {    inherit FreeRequest;    constant reqType=60;   }      class FreeColormap -  + //!   {    inherit FreeRequest;    constant reqType=79;   }         class FreeCursor -  + //!   {    inherit FreeRequest;    constant reqType=95;   }      class FreeColors -  + //!   {    inherit request;    constant reqType=79; -  +     array colors;    int colormap;    int plane_mask; -  +  //!       string to_string()    {    return sprintf("%4c%4c%{%4c%}", colormap,plane_mask,colors);    }   }            class ResourceReq -  + //!   {    inherit request;    int id;       string to_string()    {    return build_request(sprintf("%4c", id));    }   }      class CreateWindow -  + //!   {    inherit request;    constant reqType = 1;       int depth; -  +  //!       int wid;    int parent; -  +  //!       int x, y;    int width, height, borderWidth; -  +  //!       int c_class;    int visual; -  +  //!       mapping attributes = ([ ]); -  +  //!       string to_string()    {    return build_request    (sprintf("%4c%4c" "%2c%2c" "%2c%2c%2c" "%2c%4c" "%4c%s",    wid, parent,    x, y,    width, height, borderWidth,    c_class, visual,    @build_value_list(attributes,    ._Xlib.window_attributes) ),    depth);    }   }      class ChangeWindowAttributes -  + //!   {    inherit request;    constant reqType = 2;       int window;    mapping attributes = ([ ]); -  +  //!       string to_string()    {    return build_request    (sprintf("%4c%4c%s", window,    @build_value_list(attributes,    ._Xlib.window_attributes)));    }   }      class MapWindow -  + //!   {    inherit ResourceReq;    constant reqType = 8;   }      class UnmapWindow -  + //!   {    inherit ResourceReq;    constant reqType = 10;   }      class GetKeyboardMapping -  + //!   {    inherit request;    constant reqType = 101; -  +     int first=0;    int num=0; -  +  //!       string to_string()    {    return build_request( sprintf("%c%c\0\0", first, num) );    }       mixed handle_reply(mapping reply)    {    int nkc = (reply->data1-4)*4;    string format;
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:244:    }       mixed handle_error(string reply)    {    error("Xlib.request: unexpected reply!\n");    return 0;    }   }      class ConfigureWindow + //!   {    inherit request;    constant reqType = 12;       int window; -  +     mapping attributes; -  +  //!       string to_string()    {    return build_request    (sprintf("%4c%2c\0\0%s", window,    @build_value_list(attributes,    ._Xlib.window_configure_attributes)));    }   }      class InternAtom -  + //!   {    inherit request;    constant reqType = 16;       int onlyIfExists;    string name; -  +  //!       string to_string()    {    return build_request(sprintf("%2c\0\0%s", sizeof(name), name),    onlyIfExists);    }       mixed handle_reply(mapping reply)    {    int id;
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:296:    case "Alloc":    return reply;    default:    error(sprintf("Requests.InternAtom->handle_error: "    "Unexpected error '%s'\n", reply->errorCode));    }    }   }      class GetAtomName + //!   {    inherit request;    constant reqType = 17;       int atom; -  +  //!       string to_string()    {    return build_request(sprintf("%4c", atom));    }       string handle_reply(mapping reply)    {    int length;    sscanf(reply->rest, "%2c", length);
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:324:    mapping handle_error(mapping reply)    {    if (reply->errorCode != "Atom")    error(sprintf("Requests.GetAtomName->handle_error: "    "Unexpected error '%s'\n", reply->errorCode));    return reply;    }   }      class ChangeProperty + //!   {    inherit request;    constant reqType = 18;       int mode = 0;    int window;    int property;    int type;    int format;    string|array(int) data; -  +  //!       string to_string()    {    string p;    switch(format)    {    case 8:    p = data;    break;    case 16:
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:362:    }    return build_request(sprintf("%4c%4c%4c" "%c\0\0\0" "%4c%s",    window, property, type,    format,    sizeof(data), p),    mode);    }   }      class DeleteProperty + //!   {    inherit request;    constant reqType = 19;       int window;    int property; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c", window, property));    }   }      class GetProperty -  + //!   {    inherit request;    constant reqType = 20;       int delete;    int window;    int property;    int type;    int longOffset = 0;    int longLength = 1024; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%4c" "%4c%4c",    window, property, type,    longOffset, longLength),    delete);    }       mapping handle_reply(mapping reply)
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:460:    default:    error(sprintf("Requests.GetProperty->handle_error: "    "Unexpected error '%s'\n",    reply->errorCode));       }    }   }      class ListProperties + //!   {    inherit request;    constant reqType = 21;       int window; -  +  //!       string to_string()    {    return build_request(sprintf("%4c", window));    }       array handle_reply(mapping reply)    {    int length;    sscanf(reply->rest, "%2c", length);
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:512: Inside #if 0
  }      class UnGrabPointer   {    inherit request;    constant reqType = 27;   }   #endif      class GrabButton + //!   {    inherit request;    constant reqType = 28;       int ownerEvents;    int grabWindow;    int eventMask;    int pointerMode;    int keyboardMode;    int confineTo;    int cursor;    int button;    int modifiers; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%2c" "%c%c" "%4c%4c%c\0%2c",    grabWindow, eventMask,    pointerMode, keyboardMode,    confineTo, cursor, button, modifiers),    ownerEvents);    }   }      #if 0   class UnGrabButton   {    inherit request;    constant reqType = 29;   }   #endif      class OpenFont -  + //!   {    inherit request;    constant reqType = 45;       int fid;    string name; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%2c\0\0%s",    fid, sizeof(name), name));    }   }      class QueryTextExtents -  + //!   {    inherit request;    constant reqType = 48;       int font;    string str; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%s",    font, str), (sizeof(str)/2)&1);    }       mapping(string:int) handle_reply(mapping reply)    {    mapping(string:int) res = (["DrawDirection":reply->data1]);    sscanf(reply->rest, "%2c%2c%2c%2c%4c%4c%4c",    res->FontAscent, res->FontDescent,    res->OverallAscent, res->OverallDescent,    res->OverallWidth, res->OverallLeft, res->OverallRight);    return res;    }   }      class CreatePixmap -  +  //!   {    inherit request;    constant reqType = 53;       int depth; -  +  //!       int pid;    int drawable; -  +  //!       int width, height; -  +  //!       string to_string()    {    return build_request    (sprintf("%4c%4c" "%2c%2c",    pid, drawable,    width, height), depth);    }   }      class CreateGC -  + //!   {    inherit request;    constant reqType = 55;       int gc;    int drawable;    mapping attributes = ([ ]); -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%4c%s", gc, drawable,    @build_value_list(attributes,    ._Xlib.gc_attributes)));    }   }      class ChangeGC -  + //!   {    inherit request;    constant reqType = 56;       int gc;    mapping attributes; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%s", gc,    @build_value_list(attributes,    ._Xlib.gc_attributes)));    }   }      class ClearArea -  + //!   {    inherit request;    constant reqType = 61;       int exposures;    int window;    int x, y;    int width, height; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%2c%2c%2c%2c",    window, x, y, width, height),    exposures);    }   }      class PolyPoint -  + //!   {    inherit request;    constant reqType = 64;       int coordMode;    int drawable;    int gc;    array(object) points; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%@s", drawable, gc,    points->to_string()), coordMode);    }   }      class PolyLine -  + //!   {    inherit PolyPoint;    constant reqType = 65;   }      class FillPoly -  + //!   {    inherit request;    constant reqType = 69;       int drawable;    int gc;    int shape;    int coordMode; -  +  //!       array points; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%c%c%2c%@s",    drawable, gc, shape, coordMode, 0,    points->to_string()));    }   }      class PolyFillRectangle -  + //!   {    inherit request;    constant reqType = 70;       int drawable;    int gc; -  +  //!       array rectangles; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%s", drawable, gc,    rectangles->to_string()*""));    }   }      class PutImage -  + //!   {    inherit request;    constant reqType = 72; -  +     int drawable;    int gc; -  +  //!       int depth;    int width;    int height;    int dst_x;    int dst_y;    int left_pad = 0;    int format = 2; // Bitmap XYPixmap ZPixmap -  +  //!       string data; -  +  //!       string to_string()    {    // werror(sprintf("PutImage>to_string: %d, %d, %d, %d\n",    // dst_x, dst_y, width, height));    string pad="";    while(((sizeof(data)+sizeof(pad))%4)) pad += "\0";    pad = build_request(sprintf("%4c" "%4c"    "%2c" "%2c"    "%2c" "%2c"
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:755:    width, height,    dst_x, dst_y, left_pad, depth,    data,pad), format);    data=0;    return pad;    }      }      class ImageText8 + //!   {    inherit request;    constant reqType = 76;       int drawable;    int gc;    int x, y;    string str; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%2c%2c%s",    drawable, gc, x, y, str), sizeof(str));    }   }      class ImageText16 -  + //!   {    inherit request;    constant reqType = 77;       int drawable;    int gc;    int x, y;    string str; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%2c%2c%s",    drawable, gc, x, y, str), sizeof(str)/2);    }   }      class CreateColormap -  + //!   {    inherit request;    constant reqType = 78;       int cid;    int alloc; -  +  //!       int window;    int visual; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%4c", cid, window, visual), alloc);    }   }    - class Bell { + class Bell + //! + {    inherit request;    constant reqType = 104;       int percent; -  +  //!       string to_string() { return build_request("", percent); }   }      class CopyArea -  + //!   {    inherit request;    constant reqType = 62; -  +     object gc;    object area;    object src, dst;    int x,y; -  +  //!       string to_string()    {    return build_request(sprintf("%4c" "%4c" "%4c" "%2c%2c" "%2c%2c" "%2c%2c",    src->id, dst->id, gc->id, area->x, area->y,    x, y, area->width, area->height));    }   }      class CopyPlane -  + //!   {    inherit CopyArea;    constant reqType = 63; -  +     int plane; -  +  //!       string to_string()    {    return ::to_string()+sprintf("%4c", plane);    }   }      class AllocColor -  + //!   {    inherit request;    constant reqType = 84;       int red, green, blue;    int colormap; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%2c%2c%2c\0\0",    colormap, red, green, blue ));    }       mixed handle_reply(mapping reply)    {    int pixel, r, g, b;
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:871:    return ([ "pixel":pixel, "red":r, "green":g, "blue":b ]);    }       mixed handle_error(string reply)    {    return 0;    }   }      class CreateGlyphCursor + //!   {    inherit request;    constant reqType = 94;       int cid;    int sourcefont, maskfont;    int sourcechar, maskchar;    int forered, foregreen, foreblue;    int backred, backgreen, backblue; -  +  //!       string to_string()    {    return build_request(sprintf("%4c%4c%4c%2c%2c%2c%2c%2c%2c%2c%2c",    cid, sourcefont, maskfont, sourcechar,    maskchar, forered, foregreen, foreblue,    backred, backgreen, backblue));    }   }      class QueryExtension -  + //!   {    inherit request;    constant reqType = 98; -  +     string name; -  +  //!       void create(string n)    {    name = n;    }       string to_string()    {    string pad="";    while(((sizeof(name)+sizeof(pad))%4)) pad += "\0";
pike.git/lib/modules/Protocols.pmod/X.pmod/Requests.pmod:922:    if(present) return ([ "major":major, "event":event, "error":error_code ]);    }       mixed handle_error(string reply)    {    return 0;    }   }      class ExtensionRequest + //! Base class used by extensions   {    int type;    int code;    string data;    function handle_reply;    function handle_error; -  +  //!       array build_value_list(mapping m, array(string) fields)    {    int mask = 0;    int bit = 1;    array v = ({ });       foreach(fields, string f)    { -  if (!zero_type(m[f])) +  if (has_index(m, f))    {    v += ({ objectp(m[f]) ? m[f]->id : m[f] });    mask |= bit;    }    bit <<= 1;    }    return ({ mask, sprintf("%@4c", v) });    }       string build_request(string req, void|int data)