⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gcommon.c

📁 Graphviz - Graph Drawing Programs from AT&T Research and Lucent Bell Labs See doc/build.html for
💻 C
字号:
/* $Id: gcommon.c,v 1.3 2006/09/07 15:48:30 erg Exp $ $Revision: 1.3 $ *//* vim:set shiftwidth=4 ts=8: *//***********************************************************      This software is part of the graphviz package      **                http://www.graphviz.org/                 **                                                         **            Copyright (c) 1994-2004 AT&T Corp.           **                and is licensed under the                **            Common Public License, Version 1.0           **                      by AT&T Corp.                      **                                                         **        Information and Software Systems Research        **              AT&T Research, Florham Park NJ             ************************************************************//* Lefteris Koutsofios - AT&T Labs Research */#include "common.h"#include "g.h"#include "gcommon.h"#include "mem.h"int Gxfd;Widget Groot;Display *Gdisplay;int Gpopdownflag;int Gscreenn;int Gdepth;Glazyq_t Glazyq;PIXpoint_t *Gppp;int Gppn, Gppi;char *Gbufp = NULL;int Gbufn = 0, Gbufi = 0;Gfont_t *Gfontp;int Gfontn;/* Xt[GS]etValues arguments */Arg argp[MAXARGS];int argn;/* action and translation tables */static XtActionsRec actiontable[] = {    { "cwbut", Gcwbutaction },    { "cwkey", Gcwkeyaction },    { "lwbut", Glwbutaction },    { "lwkey", Glwkeyaction },    { "tweol", Gtweolaction },    { "qwpop", Gqwpopaction },    { "qwdel", Gqwdelaction },    { "wmdel", Gwmdelaction },};static char defcwanytrans[] = "\    <BtnDown>: cwbut()\n\    <BtnUp>: cwbut()\n\    <KeyDown>: cwkey()\n\    <KeyUp>: cwkey()";static char deflwanytrans[] = "\    <BtnDown>: lwbut()\n\    <BtnUp>: lwbut()\n\    <KeyDown>: lwkey()\n\    <KeyUp>: lwkey()";static char deftweoltrans[] = "<Key>Return: newline()\n<KeyUp>Return: tweol()";static char defqwpoptrans[] = "<KeyDown>Return:\n<KeyUp>Return: qwpop()";static char defqwdeltrans[] = "<Message>WM_PROTOCOLS: qwdel()\n";static char defwmdeltrans[] = "<Message>WM_PROTOCOLS: wmdel()\n";XtTranslations Gtweoltable;XtTranslations Gqwpoptable;XtTranslations Glwanytable;XtTranslations Gcwanytable;XtTranslations Gqwdeltable;XtTranslations Gwmdeltable;Atom Gqwdelatom, Gwmdelatom;static XtAppContext appcontext;static XFontStruct *deffont;#ifdef FEATURE_NEXTAWstatic char *props[] = {    "*Font: -*-lucidatypewriter-*-r-*-*-*-120-*-*-*-*-iso8859-1",    "*ShapeStyle: Rectangle",    "*Command.ShapeStyle: Rectangle",    "*Toggle.ShapeStyle: Rectangle",    "*ShadowWidth: 2",    "*Form*Text*Background: white",    "*Form*Text*Scrollbar*Background: gray",    "*Text*Background: white",    "*Text*Foreground: black",    "*Text*ThreeD*Background: gray",    "*Text*Scrollbar*Background: gray",    "*Viewport.background: gray",    "*BeNiceToColormap: 0",    "*Toggle.Font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*",    "*Command.Font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*",    "*Command.Background: gray",    "*Command.highlightThickness: 0",    "*Toggle.highlightThickness: 0",    "*Toggle.Background: gray",    "*MenuButton.Background: gray",    "*SimpleMenu.Background: gray",    "*List*Background: gray",    "*Box.Background: gray",    "*Label.Background: gray",    "*Label.ShadowWidth: 0",    "*Label*shadowWidth: 2",    "*Scrollbar.Background: gray",    "*SimpleMenu*MenuLabel*Background: black",    "*SimpleMenu*MenuLabel*Font: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*",    "*SimpleMenu*Font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*",    "*Dialog.Background: gray",    "*Form*Background: gray",    "*Form*Viewport*Background: white",    "*Form*Viewport*Scrollbar*Background: grey",    "*MenuButton.translations: Any<BtnDown>: PopupMenu()",    NULL};#else#ifdef FEATURE_XAW3Dstatic char *props[] = {    "*Font: -*-lucidatypewriter-*-r-*-*-*-120-*-*-*-*-iso8859-1",    "*ShapeStyle: Rectangle",    "*Command.ShapeStyle: Rectangle",    "*Toggle.ShapeStyle: Rectangle",    "*ShadowWidth: 2",    "*Form*Text*Background: white",    "*Form*Text*Scrollbar*Background: gray",    "*Text*Background: white",    "*Text*Foreground: black",    "*Text*ThreeD*Background: gray",    "*Text*Scrollbar*Background: gray",    "*Viewport.background: gray",    "*BeNiceToColormap: 0",    "*Toggle.Font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*",    "*Command.Font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*",    "*Command.Background: gray",    "*Command.highlightThickness: 0",    "*Toggle.highlightThickness: 0",    "*Toggle.Background: gray",    "*MenuButton.Background: gray",    "*SimpleMenu.Background: gray",    "*List*Background: gray",    "*Box.Background: gray",    "*Label.Background: gray",    "*Label.ShadowWidth: 0",    "*Label*shadowWidth: 2",    "*Scrollbar.Background: gray",    "*SimpleMenu*MenuLabel*Background: black",    "*SimpleMenu*MenuLabel*Font: -adobe-helvetica-bold-r-*-*-12-*-*-*-*-*-*-*",    "*SimpleMenu*Font: -adobe-helvetica-medium-r-*-*-12-*-*-*-*-*-*-*",    "*Dialog.Background: gray",    "*Form*Background: gray",    "*Form*Viewport*Background: white",    "*Form*Viewport*Scrollbar*Background: grey",    "*MenuButton.translations: Any<BtnDown>: PopupMenu()",    NULL};#endif#endifint 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 Gtermgraphics (void) {    int fi;    for (fi = 0; fi < Gfontn; fi++)        free (Gfontp[fi].name);    Marrayfree (Gfontp), Gfontp = NULL, Gfontn = 0;    Marrayfree (Gppp), Gppp = NULL, Gppn = 0;    Marrayfree (Gbufp), Gbufp = NULL, Gbufn = 0;    XtDestroyWidget (Groot);    return 0;}void Gflushlazyq (void) {    if (Glazyq.flag & LAZYMANAGE) {        XtManageChildren (Glazyq.mws, Glazyq.mwn);        Glazyq.flag &= ~LAZYMANAGE;    }    if (Glazyq.flag & LAZYREALIZE) {        XtRealizeWidget (Glazyq.rw);        if (Glazyq.flag & LAZYRHINTS)            XSetWMNormalHints (Gdisplay, XtWindow (Glazyq.rw), &Glazyq.hints);        XSetWMProtocols (Gdisplay, XtWindow (Glazyq.rw), &Gwmdelatom, 1);        XtOverrideTranslations (Glazyq.rw, Gwmdeltable);        Glazyq.flag &= ~LAZYRHINTS;        Glazyq.flag &= ~LAZYREALIZE;    }}void Glazyrealize (Widget w, int hintsflag, XSizeHints *hintsp) {    if (Glazyq.flag & LAZYREALIZE) {        XtRealizeWidget (Glazyq.rw);        if (Glazyq.flag & LAZYRHINTS)            XSetWMNormalHints (Gdisplay, XtWindow (Glazyq.rw), &Glazyq.hints);        XSetWMProtocols (Gdisplay, XtWindow (Glazyq.rw), &Gwmdelatom, 1);        XtOverrideTranslations (Glazyq.rw, Gwmdeltable);    } else        Glazyq.flag |= LAZYREALIZE;    Glazyq.rw = w;    if (hintsflag) {        Glazyq.flag |= LAZYRHINTS;        Glazyq.hints = *hintsp;    } else        Glazyq.flag &= ~LAZYRHINTS;}void Glazymanage (Widget w) {    if (Glazyq.flag & LAZYMANAGE) {        if (            XtParent (Glazyq.mws[Glazyq.mwn - 1]) != XtParent (w) ||            Glazyq.mwn >= LAZYQNUM        ) {            XtManageChildren (Glazyq.mws, Glazyq.mwn);            Glazyq.mwn = 0;        }    } else {        Glazyq.flag |= LAZYMANAGE;        Glazyq.mwn = 0;    }    Glazyq.mws[Glazyq.mwn++] = w;}int Gsync (void) {    if (Glazyq.flag)        Gflushlazyq ();    XFlush (Gdisplay);    return 0;}int Gresetbstate (int wi) {    Gcw_t *cw;    int bn;    cw = Gwidgets[wi].u.c;    bn = (        cw->bstate[0] + cw->bstate[1] + cw->bstate[2] +        cw->bstate[3] + cw->bstate[4]    );    cw->bstate[0] = cw->bstate[1] = cw->bstate[2] = 0;    cw->bstate[3] = cw->bstate[4] = 0;    cw->buttonsdown -= bn;    Gbuttonsdown -= bn;    return 0;}int Gprocessevents (int waitflag, int mode) {    int rtn;    if (Glazyq.flag)        Gflushlazyq ();    rtn = 0;    switch (waitflag) {    case TRUE:        XtAppProcessEvent (appcontext, XtIMAll);        if (mode == G_ONEEVENT)            return 1;        rtn = 1;        /* FALL THROUGH */    case FALSE:        while (XtAppPending (appcontext)) {            XtAppProcessEvent (appcontext, XtIMAll);            if (mode == G_ONEEVENT)                return 1;            rtn = 1;        }        break;    }    return rtn;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -