URI:
       tdat.h - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
       tdat.h (5719B)
       ---
            1 #define STACK 32768
            2 #undef Borderwidth
            3 #define Borderwidth 0
            4 
            5 #undef TRUE        /* OS X */
            6 #undef FALSE
            7 
            8 typedef        struct        Consreadmesg Consreadmesg;
            9 typedef        struct        Conswritemesg Conswritemesg;
           10 typedef        struct        Stringpair Stringpair;
           11 typedef        struct        Dirtab Dirtab;
           12 typedef        struct        Mouseinfo        Mouseinfo;
           13 typedef        struct        Mousereadmesg Mousereadmesg;
           14 typedef        struct        Mousestate        Mousestate;
           15 typedef        struct        Timer Timer;
           16 typedef        struct        Wctlmesg Wctlmesg;
           17 typedef        struct        Window Window;
           18 
           19 enum
           20 {
           21         Selborder                = 0,                /* border of selected window */
           22         Unselborder        = 0,                /* border of unselected window */
           23         Scrollwid                 = 12,                /* width of scroll bar */
           24         Scrollgap                 = 4,                /* gap right of scroll bar */
           25         BIG                        = 3,                /* factor by which window dimension can exceed screen */
           26         TRUE                = 1,
           27         FALSE                = 0
           28 };
           29 
           30 enum
           31 {
           32         Kscrolloneup = KF|0x20,
           33         Kscrollonedown = KF|0x21
           34 };
           35 
           36 enum        /* control messages */
           37 {
           38         Wakeup,
           39         Reshaped,
           40         Moved,
           41         Refresh,
           42         Movemouse,
           43         Rawon,
           44         Rawoff,
           45         Holdon,
           46         Holdoff,
           47         Deleted,
           48         Exited
           49 };
           50 
           51 struct Wctlmesg
           52 {
           53         int                type;
           54         Rectangle        r;
           55         Image        *image;
           56 };
           57 
           58 struct Conswritemesg
           59 {
           60         Channel        *cw;                /* chan(Stringpair) */
           61 };
           62 
           63 struct Consreadmesg
           64 {
           65         Channel        *c1;                /* chan(tuple(char*, int) == Stringpair) */
           66         Channel        *c2;                /* chan(tuple(char*, int) == Stringpair) */
           67 };
           68 
           69 struct Mousereadmesg
           70 {
           71         Channel        *cm;                /* chan(Mouse) */
           72 };
           73 
           74 struct Stringpair        /* rune and nrune or byte and nbyte */
           75 {
           76         void                *s;
           77         int                ns;
           78 };
           79 
           80 struct Mousestate
           81 {
           82         Mouse        m;
           83         ulong        counter;        /* serial no. of mouse event */
           84 };
           85 
           86 struct Mouseinfo
           87 {
           88         Mousestate        queue[16];
           89         int        ri;        /* read index into queue */
           90         int        wi;        /* write index */
           91         ulong        counter;        /* serial no. of last mouse event we received */
           92         ulong        lastcounter;        /* serial no. of last mouse event sent to client */
           93         int        lastb;        /* last button state we received */
           94         uchar        qfull;        /* filled the queue; no more recording until client comes back */
           95 };
           96 
           97 struct Window
           98 {
           99         Ref        ref;
          100         QLock        lk;
          101         Frame        f;
          102         Image                *i;
          103         Mousectl                mc;
          104         Mouseinfo        mouse;
          105         Channel                *ck;                        /* chan(Rune[10]) */
          106         Channel                *cctl;                /* chan(Wctlmesg)[20] */
          107         Channel                *conswrite;        /* chan(Conswritemesg) */
          108         Channel                *consread;        /* chan(Consreadmesg) */
          109         Channel                *mouseread;        /* chan(Mousereadmesg) */
          110         Channel                *wctlread;                /* chan(Consreadmesg) */
          111         uint                        nr;                        /* number of runes in window */
          112         uint                        maxr;                /* number of runes allocated in r */
          113         Rune                        *r;
          114         uint                        nraw;
          115         Rune                        *raw;
          116         uint                        org;
          117         uint                        q0;
          118         uint                        q1;
          119         uint                        qh;
          120         uint                        iq1;                        /* last input position */
          121         int                        id;
          122         char                        name[32];
          123         uint                        namecount;
          124         Rectangle                scrollr;
          125         /*
          126          * Rio once used originwindow, so screenr could be different from i->r.
          127          * Now they're always the same but the code doesn't assume so.
          128         */
          129         Rectangle                screenr;        /* screen coordinates of window */
          130         int                        resized;
          131         int                        wctlready;
          132         Rectangle                lastsr;
          133         int                        topped;
          134         int                        notefd;
          135         uchar                scrolling;
          136         Cursor                cursor;
          137         Cursor                *cursorp;
          138         uchar                holding;
          139         uchar                rawing;
          140         uchar                ctlopen;
          141         uchar                wctlopen;
          142         uchar                deleted;
          143         uchar                mouseopen;
          144         char                        *label;
          145         int                        pid;
          146         char                        *dir;
          147 };
          148 
          149 int                winborder(Window*, Point);
          150 void                winctl(void*);
          151 void                winshell(void*);
          152 Window*        wlookid(int);
          153 Window*        wmk(Image*, Mousectl*, Channel*, Channel*, int);
          154 Window*        wpointto(Point);
          155 Window*        wtop(Point);
          156 void                wtopme(Window*);
          157 void                wbottomme(Window*);
          158 char*        wcontents(Window*, int*);
          159 int                wbswidth(Window*, Rune);
          160 int                wclickmatch(Window*, int, int, int, uint*);
          161 int                wclose(Window*);
          162 int                wctlmesg(Window*, int, Rectangle, Image*);
          163 int                wctlmesg(Window*, int, Rectangle, Image*);
          164 uint                wbacknl(Window*, uint, uint);
          165 uint                winsert(Window*, Rune*, int, uint);
          166 void                waddraw(Window*, Rune*, int);
          167 void                wborder(Window*, int);
          168 void                wclosewin(Window*);
          169 void                wcurrent(Window*);
          170 void                wcut(Window*);
          171 void                wdelete(Window*, uint, uint);
          172 void                wdoubleclick(Window*, uint*, uint*);
          173 void                wfill(Window*);
          174 void                wframescroll(Window*, int);
          175 void                wkeyctl(Window*, Rune);
          176 void                wmousectl(Window*);
          177 void                wmovemouse(Window*, Point);
          178 void                wpaste(Window*);
          179 void                wplumb(Window*);
          180 void                wlook(Window*);
          181 void                wrefresh(Window*, Rectangle);
          182 void                wrepaint(Window*);
          183 void                wresize(Window*, Image*, int);
          184 void                wscrdraw(Window*);
          185 void                wscroll(Window*, int);
          186 void                wselect(Window*);
          187 void                wsendctlmesg(Window*, int, Rectangle, Image*);
          188 void                wsetcursor(Window*, int);
          189 void                wsetname(Window*);
          190 void                wsetorigin(Window*, uint, int);
          191 void                wsetpid(Window*, int, int);
          192 void                wsetselect(Window*, uint, uint);
          193 void                wshow(Window*, uint);
          194 void                wsnarf(Window*);
          195 void                 wscrsleep(Window*, uint);
          196 void                wsetcols(Window*);
          197 
          198 void                deletetimeoutproc(void*);
          199 
          200 struct Timer
          201 {
          202         int                dt;
          203         int                cancel;
          204         Channel        *c;        /* chan(int) */
          205         Timer        *next;
          206 };
          207 
          208 #ifndef Extern
          209 #define Extern extern
          210 #endif
          211 
          212 Extern        Font                *font;
          213 Extern        Mousectl        *mousectl;
          214 Extern        Mouse        *mouse;
          215 Extern        Keyboardctl        *keyboardctl;
          216 Extern        Display        *display;
          217 Extern        Image        *view;
          218 Extern        Screen        *wscreen;
          219 Extern        Cursor        boxcursor;
          220 Extern        Cursor        crosscursor;
          221 Extern        Cursor        sightcursor;
          222 Extern        Cursor        whitearrow;
          223 Extern        Cursor        query;
          224 Extern        Cursor        *corners[9];
          225 Extern        Image        *background;
          226 Extern        Image        *lightgrey;
          227 Extern        Image        *red;
          228 Extern        Window        **window;
          229 Extern        Window        *wkeyboard;        /* window of simulated keyboard */
          230 Extern        int                nwindow;
          231 Extern        int                snarffd;
          232 Extern        Window        *input;
          233 Extern        QLock        all;                        /* BUG */
          234 Extern        Window        *hidden[100];
          235 Extern        int                nhidden;
          236 Extern        int                nsnarf;
          237 Extern        Rune*        snarf;
          238 Extern        int                scrolling;
          239 Extern        int                maxtab;
          240 Extern        Channel*        winclosechan;
          241 Extern        Channel*        deletechan;
          242 Extern        char                *startdir;
          243 Extern        int                sweeping;
          244 Extern        int                wctlfd;
          245 Extern        int                errorshouldabort;
          246 Extern        int                menuing;                /* menu action is pending; waiting for window to be indicated */
          247 Extern        int                snarfversion;        /* updated each time it is written */
          248 Extern        int                messagesize;                /* negotiated in 9P version setup */