int GQcreatewidget(Gwidget_t * parent, Gwidget_t * widget, int attrn, Gwattr_t * attrp) { int ai; WQU->mode = G_QWSTRING; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRMODE: if (Strcmp("string", attrp[ai].u.t) == 0) WQU->mode = G_QWSTRING; else if (Strcmp("file", attrp[ai].u.t) == 0) WQU->mode = G_QWFILE; else if (Strcmp("choice", attrp[ai].u.t) == 0) WQU->mode = G_QWCHOICE; else { Gerr(POS, G_ERRBADATTRVALUE, attrp[ai].u.t); return -1; } break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr(POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GLgetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { RECT r; int ai; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GetWindowRect (widget->w, &r); attrp[ai].u.s.x = r.right - r.left; attrp[ai].u.s.y = r.bottom - r.top; break; case G_ATTRBORDERWIDTH: Gerr (POS, G_ERRCANNOTGETATTR, "borderwidth"); return -1; case G_ATTRTEXT: GetWindowText (widget->w, &Gbufp[0], Gbufn); attrp[ai].u.t = &Gbufp[0]; break; case G_ATTRWINDOWID: sprintf (&Gbufp[0], "0x%lx", widget->w); attrp[ai].u.t = &Gbufp[0]; break; case G_ATTREVENTCB: attrp[ai].u.func = WLU->func; break; case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GMcreatewidget ( Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp ) { int ai; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } if (!(widget->w = XtCreatePopupShell ( "menu", simpleMenuWidgetClass, Groot, NULL, 0 ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } XtAddCallback (widget->w, XtNpopdownCallback, mwcallback, (XtPointer) -1); WMU->count = 0; return 0; }
int GSgetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { Dimension width, height; Position x, y; Boolean tf; Gwidget_t *child; int ai, wi; child = NULL; for (ai = 0; ai < attrn; ai++) { RESETARGS; switch (attrp[ai].id) { case G_ATTRSIZE: ADD2ARGS (XtNwidth, &width); ADD2ARGS (XtNheight, &height); XtGetValues (widget->w, argp, argn); attrp[ai].u.s.x = width, attrp[ai].u.s.y = height; break; case G_ATTRBORDERWIDTH: ADD2ARGS (XtNborderWidth, &width); XtGetValues (widget->w, argp, argn); attrp[ai].u.i = width; break; case G_ATTRCHILDCENTER: for (wi = 0; wi < Gwidgetn; wi++) { child = &Gwidgets[wi]; if (child->inuse && child->pwi == widget - &Gwidgets[0]) break; } if (wi == Gwidgetn) { Gerr (POS, G_ERRNOCHILDWIDGET); return -1; } ADD2ARGS (XtNwidth, &width); ADD2ARGS (XtNheight, &height); XtGetValues (widget->w, argp, argn); RESETARGS; ADD2ARGS (XtNx, &x); ADD2ARGS (XtNy, &y); XtGetValues (child->w, argp, argn); attrp[ai].u.p.x = width / 2 - x, attrp[ai].u.p.y = height / 2 - y; break; case G_ATTRMODE: ADD2ARGS (XtNforceBars, &tf); attrp[ai].u.t = (tf == True) ? "forcebars" : ""; break; case G_ATTRWINDOWID: sprintf (&Gbufp[0], "0x%lx", XtWindow (widget->w)); attrp[ai].u.t = &Gbufp[0]; break; case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GCgetwidgetattr(Gwidget_t * widget, int attrn, Gwattr_t * attrp) { GdkColor *cp; int width, height; int ai, color; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: attrp[ai].u.s.x = width, attrp[ai].u.s.y = height; break; case G_ATTRBORDERWIDTH: attrp[ai].u.i = width; break; case G_ATTRCURSOR: /* attrp[ai].u.t = (curcursori == -1) ? "default" : cursormap[curcursori].name; */ attrp[ai].u.t = (curcursori == -1) ? "default" : "watch"; break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color < 0 || color > G_MAXCOLORS) { Gerr(POS, G_ERRBADCOLORINDEX, color); return -1; } if (WCU->colors[color].inuse) { cp = &WCU->colors[color].color; attrp[ai].u.c.r = cp->red / 257.0; attrp[ai].u.c.g = cp->green / 257.0; attrp[ai].u.c.b = cp->blue / 257.0; } else { attrp[ai].u.c.r = -1; attrp[ai].u.c.g = -1; attrp[ai].u.c.b = -1; } break; case G_ATTRVIEWPORT: attrp[ai].u.s = WCU->vsize; break; case G_ATTRWINDOW: attrp[ai].u.r = WCU->wrect; break; case G_ATTRWINDOWID: sprintf(&Gbufp[0], "0x%lx", (unsigned long) widget->w); break; case G_ATTREVENTCB: attrp[ai].u.func = WCU->func; break; case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr(POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GLcreatewidget ( Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp ) { PIXsize_t ps; DWORD wflags; char *s; int ai; if (!parent) { Gerr (POS, G_ERRNOPARENTWIDGET); return -1; } wflags = WS_CHILDWINDOW; WLU->func = NULL; ps.x = ps.y = MINLWSIZE; s = ""; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINLWSIZE); break; case G_ATTRBORDERWIDTH: wflags |= WS_BORDER; break; case G_ATTRTEXT: s = attrp[ai].u.t; break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTREVENTCB: WLU->func = attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } Gadjustwrect (parent, &ps); if (!(widget->w = CreateWindow ( "LabelClass", s, wflags, 0, 0, ps.x, ps.y, parent->w, (HMENU) (widget - &Gwidgets[0]), hinstance, NULL ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } ShowWindow (widget->w, SW_SHOW); UpdateWindow (widget->w); if (parent && parent->type == G_ARRAYWIDGET) Gawinsertchild (parent, widget); return 0; }
int GLsetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { PIXsize_t ps; int ai; XColor c; int color; RESETARGS; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINLWSIZE); ADD2ARGS (XtNwidth, ps.x); ADD2ARGS (XtNheight, ps.y); break; case G_ATTRBORDERWIDTH: ADD2ARGS (XtNborderWidth, attrp[ai].u.i); break; case G_ATTRTEXT: ADD2ARGS (XtNlabel, attrp[ai].u.t); break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color != 0 && color != 1) { Gerr (POS, G_ERRBADCOLORINDEX, color); return -1; } c.red = attrp[ai].u.c.r * 257; c.green = attrp[ai].u.c.g * 257; c.blue = attrp[ai].u.c.b * 257; if (XAllocColor ( Gdisplay, DefaultColormap (Gdisplay, Gscreenn), &c )) { if (color == 0) ADD2ARGS (XtNbackground, c.pixel); else ADD2ARGS (XtNforeground, c.pixel); } break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR2, "windowid"); return -1; case G_ATTREVENTCB: WLU->func = (Glabelcb) attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } XtSetValues (widget->w, argp, argn); return 0; }
int GVcreatewidget ( Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp ) { PIXpoint_t po; PIXsize_t ps; DWORD wflags; char *s; int ai; WVU->func = NULL; WVU->closing = FALSE; wflags = WS_OVERLAPPEDWINDOW; s = "LEFTY"; po.x = po.y = CW_USEDEFAULT; ps.x = ps.y = MINVWSIZE; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRORIGIN: GETORIGIN (attrp[ai].u.p, po); break; case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINVWSIZE); break; case G_ATTRNAME: s = attrp[ai].u.t; break; case G_ATTRZORDER: Gerr (POS, G_ERRCANNOTSETATTR1, "zorder"); return -1; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTREVENTCB: WVU->func = attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } if (!(widget->w = CreateWindow ( "LeftyClass", s, wflags, po.x, po.y, ps.x, ps.y, (HWND) 0, (HMENU) 0, hinstance, NULL ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } ShowWindow (widget->w, SW_SHOW); UpdateWindow (widget->w); return 0; }
int GLcreatewidget(Gwidget_t * parent, Gwidget_t * widget, int attrn, Gwattr_t * attrp) { PIXsize_t ps; int ai; GdkColor c; int color; if (!parent) { Gerr(POS, G_ERRNOPARENTWIDGET); return -1; } WLU->func = NULL; ps.x = ps.y = MINLWSIZE; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE(attrp[ai].u.s, ps, MINLWSIZE); break; case G_ATTRBORDERWIDTH: break; case G_ATTRTEXT: break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color != 0 && color != 1) { Gerr(POS, G_ERRBADCOLORINDEX, color); return -1; } break; case G_ATTRWINDOWID: Gerr(POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTREVENTCB: WLU->func = (Glabelcb) attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr(POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } widget->w = gtk_label_new(NULL); return 0; }
int GVsetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { PIXpoint_t po; PIXsize_t ps; DWORD wflags1, wflags2, wflags3, wflags4; int ai; wflags1 = SWP_NOMOVE | SWP_NOZORDER; wflags2 = SWP_NOSIZE | SWP_NOZORDER; wflags3 = SWP_NOSIZE | SWP_NOMOVE; wflags4 = SWP_NOSIZE | SWP_NOMOVE | SWP_NOACTIVATE; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRORIGIN: GETORIGIN (attrp[ai].u.p, po); SetWindowPos (widget->w, (HWND) NULL, po.x, po.y, 0, 0, wflags2); break; case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINVWSIZE); SetWindowPos (widget->w, (HWND) NULL, 0, 0, ps.x, ps.y, wflags1); break; case G_ATTRNAME: SetWindowText (widget->w, attrp[ai].u.t); return -1; case G_ATTRZORDER: if (strcmp (attrp[ai].u.t, "top") == 0) SetWindowPos (widget->w, (HWND) HWND_TOP, 0, 0, 0, 0, wflags3); else if (strcmp (attrp[ai].u.t, "bottom") == 0) SetWindowPos ( widget->w, (HWND) HWND_BOTTOM, 0, 0, 0, 0, wflags4 ); else { Gerr (POS, G_ERRBADATTRVALUE, attrp[ai].u.t); return -1; } break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTREVENTCB: WVU->func = attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GPgetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { PALETTEENTRY *cp; int color, ai; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRORIGIN: break; case G_ATTRSIZE: break; case G_ATTRNAME: break; case G_ATTRMODE: break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color < 0 || color > G_MAXCOLORS) { Gerr (POS, G_ERRBADCOLORINDEX, color); return -1; } if (WPU->colors[color].inuse) { cp = &WPU->colors[color].color; attrp[ai].u.c.r = cp->peRed; attrp[ai].u.c.g = cp->peGreen; attrp[ai].u.c.b = cp->peBlue; } else { attrp[ai].u.c.r = -1; attrp[ai].u.c.g = -1; attrp[ai].u.c.b = -1; } break; case G_ATTRVIEWPORT: attrp[ai].u.s = WPU->vsize; break; case G_ATTRWINDOW: attrp[ai].u.r = WPU->wrect; break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTGETATTR, "windowid"); break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GBgetwidgetattr(Gwidget_t * widget, int attrn, Gwattr_t * attrp) { int width, height; char *s; int ai; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: break; case G_ATTRBORDERWIDTH: break; case G_ATTRTEXT: break; case G_ATTRWINDOWID: break; case G_ATTRBUTTONCB: attrp[ai].u.func = WBU->func; break; case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr(POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GQgetwidgetattr(Gwidget_t * widget, int attrn, Gwattr_t * attrp) { int ai; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRMODE: switch (WQU->mode) { case G_QWSTRING: attrp[ai].u.t = "string"; break; case G_QWFILE: attrp[ai].u.t = "file"; break; case G_QWCHOICE: attrp[ai].u.t = "choice"; break; } break; case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr(POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GAsetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { Gwidget_t *parent; PIXsize_t ps; DWORD wflags1; int ai; parent = (widget->pwi == -1) ? NULL : &Gwidgets[widget->pwi]; wflags1 = SWP_NOMOVE | SWP_NOZORDER; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINAWSIZE); /* Gadjustwrect (parent, &ps);*/ SetWindowPos (widget->w, (HWND) NULL, 0, 0, ps.x, ps.y, wflags1); break; case G_ATTRBORDERWIDTH: Gerr (POS, G_ERRCANNOTSETATTR2, "borderwidth"); return -1; case G_ATTRMODE: Gerr (POS, G_ERRCANNOTSETATTR2, "mode"); return -1; case G_ATTRLAYOUT: if (strcmp ("on", attrp[ai].u.t) == 0) Gawsetmode (widget, FALSE); else if (strcmp ("off", attrp[ai].u.t) == 0) Gawsetmode (widget, TRUE); else { Gerr (POS, G_ERRBADATTRVALUE, attrp[ai].u.t); return -1; } break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR2, "windowid"); return -1; case G_ATTRRESIZECB: WAU->func = attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GPwritebitmap (Gbitmap_t *bitmap, FILE *fp) { Gwidget_t *widget; HDC gc; COLORREF color; char bufp[2048]; int bufi, x, y, w, h; if (!bitmap) { Gerr (POS, G_ERRNOBITMAP); return -1; } if ( bitmap->canvas < 0 || bitmap->canvas >= Gwidgetn || !Gwidgets[bitmap->canvas].inuse ) { Gerr (POS, G_ERRBADWIDGETID, bitmap->canvas); return -1; } widget = &Gwidgets[bitmap->canvas]; if (widget->type != G_CANVASWIDGET && widget->type != G_PCANVASWIDGET) { Gerr (POS, G_ERRNOTACANVAS, bitmap->canvas); return -1; } gc = CreateCompatibleDC (GC); SelectObject (gc, bitmap->u.bmap.orig); fprintf (fp, "P6\n%d %d 255\n", (int) bitmap->size.x, (int) bitmap->size.y); bufi = 0; w = bitmap->size.x; h = bitmap->size.y; for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { color = GetPixel (gc, x, y); bufp[bufi++] = GetRValue (color); bufp[bufi++] = GetGValue (color); bufp[bufi++] = GetBValue (color); if (bufi + 3 >= 2048) { fwrite (bufp, 1, bufi, fp); bufi = 0; } } } if (bufi > 0) fwrite (bufp, 1, bufi, fp); DeleteDC (gc); return 0; }
int GPdestroybitmap (Gbitmap_t *bitmap) { if (!bitmap) { Gerr (POS, G_ERRNOBITMAP); return -1; } DeleteObject (bitmap->u.bmap.orig); return 0; }
int GTgetwidgetattr(Gwidget_t * widget, int attrn, Gwattr_t * attrp) { int width, height; GtkWidget w; int rtn, ai; long fi, li; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: break; case G_ATTRBORDERWIDTH: break; case G_ATTRTEXT: break; case G_ATTRAPPENDTEXT: Gerr(POS, G_ERRCANNOTGETATTR, "appendtext"); return -1; case G_ATTRSELECTION: break; case G_ATTRMODE: break; case G_ATTRWINDOWID: break; case G_ATTRNEWLINECB: attrp[ai].u.func = WTU->func; break; case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr(POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GQsetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { int ai; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRMODE: Gerr (POS, G_ERRCANNOTSETATTR2, "mode"); return -1; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GTsetwidgetattr(Gwidget_t * widget, int attrn, Gwattr_t * attrp) { PIXsize_t ps; int ai, li; GdkColor c; int color; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE(attrp[ai].u.s, ps, MINTWSIZE); break; case G_ATTRBORDERWIDTH: break; case G_ATTRTEXT: break; case G_ATTRAPPENDTEXT: break; case G_ATTRMODE: break; case G_ATTRCOLOR: break; case G_ATTRWINDOWID: Gerr(POS, G_ERRCANNOTSETATTR2, "windowid"); return -1; case G_ATTRNEWLINECB: WTU->func = (Gtwnewlinecb) attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr(POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GLsetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { Gwidget_t *parent; PIXsize_t ps; RECT r; DWORD wflags1; int ai; parent = (widget->pwi == -1) ? NULL : &Gwidgets[widget->pwi]; wflags1 = SWP_NOMOVE | SWP_NOZORDER; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINLWSIZE); Gadjustwrect (parent, &ps); SetWindowPos (widget->w, (HWND) NULL, 0, 0, ps.x, ps.y, wflags1); r.top = r.left = 0; r.bottom = ps.y, r.right = ps.x; InvalidateRect (widget->w, NULL, FALSE); break; case G_ATTRBORDERWIDTH: Gerr (POS, G_ERRCANNOTSETATTR2, "borderwidth"); return -1; case G_ATTRTEXT: SetWindowText (widget->w, attrp[ai].u.t); GetClientRect (widget->w, &r); InvalidateRect (widget->w, &r, TRUE); break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR2, "windowid"); return -1; case G_ATTREVENTCB: attrp[ai].u.func = WLU->func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GLsetwidgetattr(Gwidget_t * widget, int attrn, Gwattr_t * attrp) { PIXsize_t ps; int ai; GdkColor c; int color; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE(attrp[ai].u.s, ps, MINLWSIZE); break; case G_ATTRBORDERWIDTH: break; case G_ATTRTEXT: break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color != 0 && color != 1) { Gerr(POS, G_ERRBADCOLORINDEX, color); return -1; } break; case G_ATTRWINDOWID: Gerr(POS, G_ERRCANNOTSETATTR2, "windowid"); return -1; case G_ATTREVENTCB: WLU->func = (Glabelcb) attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr(POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GPcreatebitmap (Gwidget_t *widget, Gbitmap_t *bitmap, Gsize_t s) { if (!widget) { Gerr (POS, G_ERRNOPARENTWIDGET); return -1; } if (!bitmap) { Gerr (POS, G_ERRNOBITMAP); return -1; } if (!(bitmap->u.bmap.orig = CreateBitmap ( (int) s.x, (int) s.y, 1, Gdepth, NULL ))) { Gerr (POS, G_ERRCANNOTCREATEBITMAP); return -1; } bitmap->u.bmap.scaled = 0; bitmap->scale.x = bitmap->scale.y = 1; bitmap->ctype = widget->type; bitmap->canvas = widget - &Gwidgets[0]; bitmap->size = s; return 0; }
int GAgetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { RECT r; int ai; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GetWindowRect (widget->w, &r); attrp[ai].u.s.x = r.right - r.left; attrp[ai].u.s.y = r.bottom - r.top; break; case G_ATTRBORDERWIDTH: Gerr (POS, G_ERRCANNOTGETATTR, "borderwidth"); return -1; case G_ATTRMODE: attrp[ai].u.t = ( WAU->mode == G_AWHARRAY ) ? "horizontal" : "vertical"; break; case G_ATTRLAYOUT: attrp[ai].u.t = (Gawgetmode (widget)) ? "off" : "on"; break; case G_ATTRWINDOWID: sprintf (&Gbufp[0], "0x%lx", widget->w); attrp[ai].u.t = &Gbufp[0]; break; case G_ATTRRESIZECB: attrp[ai].u.func = WAU->func; break; case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int Ginitgraphics (void) { argn = 0; #if defined(FEATURE_NEXTAW) || defined(FEATURE_XAW3D) if (!(Groot = XtAppInitialize ( &appcontext, "LEFTY", NULL, 0, &argn, NULL, props, NULL, 0 ))) #else if (!(Groot = XtAppInitialize ( &appcontext, "LEFTY", NULL, 0, &argn, NULL, NULL, NULL, 0 ))) #endif Gerr (POS, G_ERRINITFAILED); XtAppAddActions (appcontext, actiontable, XtNumber (actiontable)); Gtweoltable = XtParseTranslationTable (deftweoltrans); Gqwpoptable = XtParseTranslationTable (defqwpoptrans); Glwanytable = XtParseTranslationTable (deflwanytrans); Gcwanytable = XtParseTranslationTable (defcwanytrans); Gqwdeltable = XtParseTranslationTable (defqwdeltrans); Gwmdeltable = XtParseTranslationTable (defwmdeltrans); XtRegisterGrabAction ( Glwbutaction, True, ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync ); XtRegisterGrabAction ( Gcwbutaction, True, ButtonPressMask | ButtonReleaseMask, GrabModeAsync, GrabModeAsync ); Gdisplay = XtDisplay (Groot); Gscreenn = DefaultScreen (Gdisplay); Gdepth = DefaultDepth (Gdisplay, Gscreenn); deffont = XLoadQueryFont (Gdisplay, "fixed"); Gxfd = ConnectionNumber (Gdisplay); Gqwdelatom = XInternAtom (Gdisplay, "WM_DELETE_WINDOW", False); Gwmdelatom = XInternAtom (Gdisplay, "WM_DELETE_WINDOW", False); Gpopdownflag = FALSE; Glazyq.flag = 0; Gbufp = Marrayalloc ((long) BUFINCR * BUFSIZE); Gbufn = BUFINCR; Gppp = Marrayalloc ((long) PPINCR * PPSIZE); Gppn = PPINCR; Gfontp = Marrayalloc ((long) FONTSIZE); Gfontn = 1; Gfontp[0].name = strdup ("default"); if (!Gdefaultfont) Gfontp[0].font = deffont; else if (Gdefaultfont[0] != '\000') Gfontp[0].font = XLoadQueryFont (Gdisplay, Gdefaultfont); else Gfontp[0].font = NULL; return 0; }
int GBsetwidgetattr(Gwidget_t * widget, int attrn, Gwattr_t * attrp) { PIXsize_t ps; int ai; GdkColor c; int color; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: break; case G_ATTRBORDERWIDTH: break; case G_ATTRTEXT: break; case G_ATTRCOLOR: break; case G_ATTRWINDOWID: Gerr(POS, G_ERRCANNOTSETATTR2, "windowid"); return -1; case G_ATTRBUTTONCB: WBU->func = (Gbuttoncb) attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr(POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GVgetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { RECT r; int ai; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRORIGIN: GetWindowRect (widget->w, &r); attrp[ai].u.p.x = r.left, attrp[ai].u.p.y = r.top; break; case G_ATTRSIZE: GetWindowRect (widget->w, &r); attrp[ai].u.s.x = r.right - r.left; attrp[ai].u.s.y = r.bottom - r.top; break; case G_ATTRNAME: Gerr (POS, G_ERRNOTIMPLEMENTED); return -1; case G_ATTRZORDER: Gerr (POS, G_ERRNOTIMPLEMENTED); return -1; case G_ATTRWINDOWID: sprintf (&Gbufp[0], "0x%lx", widget->w); attrp[ai].u.t = &Gbufp[0]; break; case G_ATTREVENTCB: attrp[ai].u.func = WVU->func; break; case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GBsetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { Gwidget_t *parent; PIXsize_t ps; DWORD wflags1; int ai; parent = (widget->pwi == -1) ? NULL : &Gwidgets[widget->pwi]; wflags1 = SWP_NOMOVE | SWP_NOZORDER; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINBWSIZE); Gadjustwrect (parent, &ps); SetWindowPos (widget->w, (HWND) NULL, 0, 0, ps.x, ps.y, wflags1); break; case G_ATTRBORDERWIDTH: Gerr (POS, G_ERRCANNOTSETATTR2, "borderwidth"); return -1; case G_ATTRTEXT: SetWindowText (widget->w, attrp[ai].u.t); break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR2, "windowid"); return -1; case G_ATTRBUTTONCB: WBU->func = attrp[ai].u.func; break; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GMgetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { int ai; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GLgetwidgetattr (Gwidget_t *widget, int attrn, Gwattr_t *attrp) { Dimension width, height; char *s; int ai; for (ai = 0; ai < attrn; ai++) { RESETARGS; switch (attrp[ai].id) { case G_ATTRSIZE: ADD2ARGS (XtNwidth, &width); ADD2ARGS (XtNheight, &height); XtGetValues (widget->w, argp, argn); attrp[ai].u.s.x = width, attrp[ai].u.s.y = height; break; case G_ATTRBORDERWIDTH: ADD2ARGS (XtNborderWidth, &width); XtGetValues (widget->w, argp, argn); attrp[ai].u.i = width; break; case G_ATTRTEXT: ADD2ARGS (XtNlabel, &s); XtGetValues (widget->w, argp, argn); attrp[ai].u.t = s; break; case G_ATTRWINDOWID: sprintf (&Gbufp[0], "0x%lx", XtWindow (widget->w)); attrp[ai].u.t = &Gbufp[0]; break; case G_ATTREVENTCB: attrp[ai].u.func = WLU->func; break; case G_ATTRUSERDATA: attrp[ai].u.u = widget->udata; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } return 0; }
int GScreatewidget ( Gwidget_t *parent, Gwidget_t *widget, int attrn, Gwattr_t *attrp ) { PIXsize_t ps; #if XlibSpecificationRelease < 5 Widget w; #endif int ai; XColor c; int color; if (!parent) { Gerr (POS, G_ERRNOPARENTWIDGET); return -1; } ps.x = ps.y = MINSWSIZE; RESETARGS; for (ai = 0; ai < attrn; ai++) { switch (attrp[ai].id) { case G_ATTRSIZE: GETSIZE (attrp[ai].u.s, ps, MINSWSIZE); break; case G_ATTRBORDERWIDTH: ADD2ARGS (XtNborderWidth, attrp[ai].u.i); break; case G_ATTRCHILDCENTER: Gerr (POS, G_ERRCANNOTSETATTR1, "childcenter"); return -1; case G_ATTRMODE: if (strcmp ("forcebars", attrp[ai].u.t) == 0) ADD2ARGS (XtNforceBars, True); else { Gerr (POS, G_ERRBADATTRVALUE, attrp[ai].u.t); return -1; } break; case G_ATTRCOLOR: color = attrp[ai].u.c.index; if (color != 0 && color != 1) { Gerr (POS, G_ERRBADCOLORINDEX, color); return -1; } c.red = attrp[ai].u.c.r * 257; c.green = attrp[ai].u.c.g * 257; c.blue = attrp[ai].u.c.b * 257; if (XAllocColor ( Gdisplay, DefaultColormap (Gdisplay, Gscreenn), &c )) { if (color == 0) ADD2ARGS (XtNbackground, c.pixel); else ADD2ARGS (XtNforeground, c.pixel); } break; case G_ATTRWINDOWID: Gerr (POS, G_ERRCANNOTSETATTR1, "windowid"); return -1; case G_ATTRUSERDATA: widget->udata = attrp[ai].u.u; break; default: Gerr (POS, G_ERRBADATTRID, attrp[ai].id); return -1; } } ADD2ARGS (XtNallowHoriz, True); ADD2ARGS (XtNallowVert, True); ADD2ARGS (XtNwidth, ps.x); ADD2ARGS (XtNheight, ps.y); if (!(widget->w = XtCreateWidget ( "scroll", viewportWidgetClass, parent->w, argp, argn ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } #if XlibSpecificationRelease < 5 RESETARGS; ADD2ARGS (XtNwidth, ps.x); ADD2ARGS (XtNheight, ps.y); if (!(w = XtCreateWidget ( "owsucks", formWidgetClass, widget->w, argp, argn ))) { Gerr (POS, G_ERRCANNOTCREATEWIDGET); return -1; } Glazymanage (w); Glazymanage (widget->w); XtDestroyWidget (w); #else Glazymanage (widget->w); #endif return 0; }