Subversion Repositories planix.SVN

Rev

Blame | Last modification | View Log | RSS feed

#pragma src "/sys/src/libdraw"

typedef struct  Channel Channel;
typedef struct  Cursor Cursor;
typedef struct  Menu Menu;
typedef struct  Mousectl Mousectl;

struct  Mouse
{
        int     buttons;        /* bit array: LMR=124 */
        Point   xy;
        ulong   msec;
};

struct Mousectl
{
        Mouse;
        Channel *c;     /* chan(Mouse) */
        Channel *resizec;       /* chan(int)[2] */
                        /* buffered in case client is waiting for a mouse action before handling resize */

        char            *file;
        int             mfd;            /* to mouse file */
        int             cfd;            /* to cursor file */
        int             pid;            /* of slave proc */
        Image*  image;  /* of associated window/display */
};

struct Menu
{
        char    **item;
        char    *(*gen)(int);
        int     lasthit;
};

/*
 * Mouse
 */
extern Mousectl*        initmouse(char*, Image*);
extern void             moveto(Mousectl*, Point);
extern int                      readmouse(Mousectl*);
extern void             closemouse(Mousectl*);
extern void             setcursor(Mousectl*, Cursor*);
extern void             drawgetrect(Rectangle, int);
extern Rectangle        getrect(int, Mousectl*);
extern int                      menuhit(int, Mousectl*, Menu*, Screen*);