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

📄 draw.c

📁 Graphviz - Graph Drawing Programs from AT&T Research and Lucent Bell Labs See doc/build.html for
💻 C
📖 第 1 页 / 共 2 页
字号:
    static int varyDist = 50;    static int minDist = 50;    int        t;    int        dist;    if (SFcurrentListY < SFlowerY) {        dist = SFlowerY - SFcurrentListY;    } else if (SFcurrentListY > SFupperY) {        dist = SFcurrentListY - SFupperY;    } else {        return (unsigned long) 1;    }    t = maxVal - ((maxVal / varyDist) * (dist - minDist));    if (t < 1) {        t = 1;    }    if (t > maxVal) {        t = maxVal;    }    return (unsigned long) t;}static void SFscrollTimer (XtPointer cd, XtIntervalId *id) {    SFDir *dir;    int   save;    intptr_t   n;    n = (intptr_t) cd;    dir = &(SFdirs[SFdirPtr + n]);    save = dir->vOrigin;    if (SFcurrentListY < SFlowerY) {        if (dir->vOrigin > 0) {            SFvSliderMovedCallback (                selFileVScrolls[n],                (XtPointer) n, (XtPointer) ((intptr_t)(dir->vOrigin) - 1)            );        }    } else if (SFcurrentListY > SFupperY) {        if (dir->vOrigin < dir->nEntries - SFlistSize) {            SFvSliderMovedCallback (                selFileVScrolls[n], (XtPointer) n,                (XtPointer) ((intptr_t)(dir->vOrigin) + 1)            );        }    }    if (dir->vOrigin != save) {        if (dir->nEntries) {            XawScrollbarSetThumb (                selFileVScrolls[n],                (float) (((double) dir->vOrigin) / dir->nEntries),                (float) (((double) ((                    dir->nEntries < SFlistSize                ) ? dir->nEntries : SFlistSize)) / dir->nEntries)            );        }    }    if (SFbuttonPressed) {        SFscrollTimerId = XtAppAddTimeOut (            SFapp, SFscrollTimerInterval (), SFscrollTimer, (XtPointer) n        );    }}static int SFnewInvertEntry (intptr_t n, XMotionEvent *event) {    int        x, y;    int        new;    static int SFscrollTimerAdded = 0;    x = event->x;    y = event->y;    if (SFdirPtr + n >= SFdirEnd) {        return -1;    } else if (        (x >= 0) && (x <= SFupperX) && (y >= SFlowerY) && (y <= SFupperY)    ) {        SFDir *dir = &(SFdirs[SFdirPtr + n]);        if (SFscrollTimerAdded) {            SFscrollTimerAdded = 0;            XtRemoveTimeOut (SFscrollTimerId);        }        new = (y - SFlowerY) / SFentryHeight;        if (dir->vOrigin + new >= dir->nEntries) {            return -1;        }        return new;    } else {        if (SFbuttonPressed) {            SFcurrentListY = y;            if (!SFscrollTimerAdded) {                SFscrollTimerAdded = 1;                SFscrollTimerId = XtAppAddTimeOut (                    SFapp, SFscrollTimerInterval (), SFscrollTimer,                    (XtPointer) n                );            }        }        return -1;    }}void SFenterList (Widget w, XtPointer cl, XEvent *ev, Boolean *b) {    int new;    intptr_t n;    XEnterWindowEvent *event;    n = (intptr_t) cl;    event = (XEnterWindowEvent *) ev;    /* sanity */    if (SFcurrentInvert[n] != -1) {        SFinvertEntry (n);        SFcurrentInvert[n] = -1;    }    new = SFnewInvertEntry (n, (XMotionEvent *) event);    if (new != -1) {        SFcurrentInvert[n] = new;        SFinvertEntry (n);    }}void SFleaveList (Widget w, XtPointer cl, XEvent *ev, Boolean *b) {    intptr_t n;    n = (intptr_t) cl;    if (SFcurrentInvert[n] != -1) {        SFinvertEntry (n);        SFcurrentInvert[n] = -1;    }}void SFmotionList (Widget w, XtPointer cl, XEvent *ev, Boolean *b) {    int new;    intptr_t n;    XMotionEvent *event;    n = (intptr_t) cl;    event = (XMotionEvent *) ev;    new = SFnewInvertEntry (n, event);    if (new != SFcurrentInvert[n]) {        if (SFcurrentInvert[n] != -1) {            SFinvertEntry (n);        }        SFcurrentInvert[n] = new;        if (new != -1) {            SFinvertEntry (n);        }    }}void SFvFloatSliderMovedCallback (Widget w, XtPointer cl, XtPointer cd) {    intptr_t n, new;    float *fnew;    n = (intptr_t) cl;    fnew = (float *) cd;    new = (*fnew) * SFdirs[SFdirPtr + n].nEntries;    SFvSliderMovedCallback (w, (XtPointer) n, (XtPointer) new);}void SFvSliderMovedCallback (Widget w, XtPointer cl, XtPointer cd) {    intptr_t    n, new, old;    Window win;    SFDir  *dir;    n = (intptr_t) cl;    new = (intptr_t) cd;    dir = &(SFdirs[SFdirPtr + n]);    old = dir->vOrigin;    dir->vOrigin = new;    if (old == new) {        return;    }    win = XtWindow (selFileLists[n]);    if (ABS (new - old) < SFlistSize) {        if (new > old) {            XCopyArea (                SFdisplay, win, win, SFscrollGC, SFlineToTextH,                SFlowerY + (new - old) * SFentryHeight,                SFentryWidth + SFlineToTextH,                (SFlistSize - (new - old)) * SFentryHeight,                SFlineToTextH, SFlowerY            );            XClearArea (                SFdisplay, win, SFlineToTextH,                SFlowerY + (SFlistSize - (new - old)) * SFentryHeight,                SFentryWidth + SFlineToTextH, (new - old) * SFentryHeight,                False            );            SFdrawStrings (win, dir, SFlistSize - (new - old), SFlistSize - 1);        } else {            XCopyArea (                SFdisplay, win, win, SFscrollGC, SFlineToTextH,                SFlowerY, SFentryWidth + SFlineToTextH,                (SFlistSize - (old - new)) * SFentryHeight, SFlineToTextH,                SFlowerY + (old - new) * SFentryHeight            );            XClearArea (                SFdisplay, win, SFlineToTextH, SFlowerY,                SFentryWidth + SFlineToTextH, (old - new) * SFentryHeight,                False            );            SFdrawStrings (win, dir, 0, old - new);        }    } else {        XClearArea (            SFdisplay, win, SFlineToTextH, SFlowerY,            SFentryWidth + SFlineToTextH, SFlistSize * SFentryHeight, False        );        SFdrawStrings (win, dir, 0, SFlistSize - 1);    }}void SFvAreaSelectedCallback (Widget w, XtPointer cl, XtPointer cd) {    SFDir *dir;    intptr_t   n, pnew, new;    n = (intptr_t) cl;    pnew = (intptr_t) cd;    dir = &(SFdirs[SFdirPtr + n]);    new = dir->vOrigin + (((double) pnew) / SFvScrollHeight) * dir->nEntries;    if (new > dir->nEntries - SFlistSize) {        new = dir->nEntries - SFlistSize;    }    if (new < 0) {        new = 0;    }    if (dir->nEntries) {        float f;        f = ((double) new) / dir->nEntries;        XawScrollbarSetThumb (            w, f,            (float) (((double) ((                dir->nEntries < SFlistSize            ) ? dir->nEntries : SFlistSize)) / dir->nEntries)        );    }    SFvSliderMovedCallback (w, (XtPointer) n, (XtPointer) new);}void SFhSliderMovedCallback (Widget w, XtPointer cl, XtPointer cd) {    SFDir *dir;    int   save;    float *new;    intptr_t   n;    n = (intptr_t) cl;    new = (float *) cd;    dir = &(SFdirs[SFdirPtr + n]);    save = dir->hOrigin;    dir->hOrigin = (*new) * dir->nChars;    if (dir->hOrigin == save) {        return;    }    SFdrawList (n, SF_DO_NOT_SCROLL);}void SFhAreaSelectedCallback (Widget w, XtPointer cl, XtPointer cd) {    SFDir *dir;    intptr_t   n, pnew, new;    n = (intptr_t) cl;    pnew = (intptr_t) cd;    dir = &(SFdirs[SFdirPtr + n]);    new = dir->hOrigin + (((double) pnew) / SFhScrollWidth) * dir->nChars;    if (new > dir->nChars - SFcharsPerEntry) {        new = dir->nChars - SFcharsPerEntry;    }    if (new < 0) {        new = 0;    }    if (dir->nChars) {        float f;        f = ((double) new) / dir->nChars;        XawScrollbarSetThumb (            w, f,            (float) (((double) ((                dir->nChars < SFcharsPerEntry            ) ? dir->nChars : SFcharsPerEntry)) / dir->nChars)        );        SFhSliderMovedCallback (w, (XtPointer) n, &f);    }}void SFpathSliderMovedCallback (Widget w, XtPointer cl, XtPointer cd) {    SFDir           *dir;    float           *new;    int             n;    XawTextPosition pos;    int             SFdirPtrSave;    new = (float *) cl;    SFdirPtrSave = SFdirPtr;    SFdirPtr = (*new) * SFdirEnd;    if (SFdirPtr == SFdirPtrSave) {        return;    }    SFdrawLists (SF_DO_SCROLL);    n = 2;    while (SFdirPtr + n >= SFdirEnd) {        n--;    }    dir = &(SFdirs[SFdirPtr + n]);    pos = dir->path - SFcurrentPath;    if (!strncmp (SFcurrentPath, SFstartDir, strlen (SFstartDir))) {        pos -= strlen (SFstartDir);        if (pos < 0) {            pos = 0;        }    }    XawTextSetInsertionPoint (selFileField, pos);}void SFpathAreaSelectedCallback (Widget w, XtPointer cl, XtPointer cd) {    intptr_t   pnew, new;    float f;    pnew = (intptr_t) cd;    new = SFdirPtr + (((double) pnew) / SFpathScrollWidth) * SFdirEnd;    if (new > SFdirEnd - 3) {        new = SFdirEnd - 3;    }    if (new < 0) {        new = 0;    }    f = ((double) new) / SFdirEnd;    XawScrollbarSetThumb (        w, f, (float) (((double) ((SFdirEnd < 3) ? SFdirEnd : 3)) / SFdirEnd)    );    SFpathSliderMovedCallback (w, (XtPointer) NULL, &f);}Boolean SFworkProc (XtPointer cl) {    SFDir   *dir;    SFEntry *entry;    for (dir = &(SFdirs[SFdirEnd - 1]); dir >= SFdirs; dir--) {        if (! (dir->nEntries)) {            continue;        }        for (            entry = & (dir->entries[dir->nEntries - 1]);            entry >= dir->entries; entry--        ) {            if (!(entry->statDone)) {                SFstatAndCheck (dir, entry);                return False;            }        }    }    SFworkProcAdded = 0;    return True;}

⌨️ 快捷键说明

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