diff options
author | Karl Berry <karl@freefriends.org> | 2008-01-30 22:53:16 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2008-01-30 22:53:16 +0000 |
commit | 5b220dd618918fcba08d8a57a50ca22f637f2080 (patch) | |
tree | c57b1cadff663cb55d585011e58dcf6e2f81d37c /Build/source/texk/windvi/sfDraw.c | |
parent | cbadb342afed31e4056992d557544e1904e55827 (diff) |
remove windows sources no longer used, per akira
git-svn-id: svn://tug.org/texlive/trunk@6454 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Build/source/texk/windvi/sfDraw.c')
-rw-r--r-- | Build/source/texk/windvi/sfDraw.c | 938 |
1 files changed, 0 insertions, 938 deletions
diff --git a/Build/source/texk/windvi/sfDraw.c b/Build/source/texk/windvi/sfDraw.c deleted file mode 100644 index 45f67157800..00000000000 --- a/Build/source/texk/windvi/sfDraw.c +++ /dev/null @@ -1,938 +0,0 @@ -/* - * Copyright 1989 Software Research Associates, Inc., Tokyo, Japan - * - * Permission to use, copy, modify, and distribute this software and its - * documentation for any purpose and without fee is hereby granted, provided - * that the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of Software Research Associates not be used - * in advertising or publicity pertaining to distribution of the software - * without specific, written prior permission. Software Research Associates - * makes no representations about the suitability of this software for any - * purpose. It is provided "as is" without express or implied warranty. - * - * SOFTWARE RESEARCH ASSOCIATES DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS - * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, - * IN NO EVENT SHALL SOFTWARE RESEARCH ASSOCIATES BE LIABLE FOR ANY SPECIAL, - * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM - * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE - * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR - * PERFORMANCE OF THIS SOFTWARE. - * - * Author: Erik M. van der Poel - * Software Research Associates, Inc., Tokyo, Japan - * erik@sra.co.jp - */ - -#ifdef HAVE_CONFIG_H -#include "c-auto.h" -#endif - -#if !defined (NOSELFILE) && !defined (NOTOOL) /* for xdvik */ - -#include <kpathsea/c-auto.h> -#include <kpathsea/config.h> -#include <kpathsea/c-stat.h> - -#include <stdio.h> -#include "sfinternal.h" -#include <X11/StringDefs.h> -#include <X11/Xaw/Scrollbar.h> -#include <X11/Xaw/Cardinals.h> - -#define SF_DEFAULT_FONT "9x15" - -#ifdef ABS -#undef ABS -#endif -#define ABS(x) (((x) < 0) ? (-(x)) : (x)) - -typedef struct { - char *fontname; -} TextData, *textPtr; - -int SFcharWidth, SFcharAscent, SFcharHeight; - -int SFcurrentInvert[3] = { -1, -1, -1 }; - -static GC SFlineGC, SFscrollGC, SFinvertGC, SFtextGC; - -static XtResource textResources[] = { - {XtNfont, XtCFont, XtRString, sizeof (char *), - XtOffset(textPtr, fontname), XtRString, SF_DEFAULT_FONT}, -}; - -static XFontStruct *SFfont; - -static int SFcurrentListY; - -static XtIntervalId SFscrollTimerId; - -void -SFinitFont() -{ - TextData *data; - - data = XtNew(TextData); - - XtGetApplicationResources(selFileForm, (XtPointer) data, textResources, - XtNumber(textResources), (Arg *) NULL, ZERO); - - SFfont = XLoadQueryFont(SFdisplay, data->fontname); - if (!SFfont) { - SFfont = XLoadQueryFont(SFdisplay, SF_DEFAULT_FONT); - if (!SFfont) { - char sbuf[256]; - - (void) sprintf(sbuf, "XsraSelFile: can't get font %s", - SF_DEFAULT_FONT); - - XtAppError(SFapp, sbuf); - } - } - - SFcharWidth = (SFfont->max_bounds.width + SFfont->min_bounds.width) / 2; - SFcharAscent = SFfont->max_bounds.ascent; - SFcharHeight = SFcharAscent + SFfont->max_bounds.descent; -} - -void -SFcreateGC() -{ - XGCValues gcValues; - XRectangle rectangles[1]; - - gcValues.foreground = SFfore; - - SFlineGC = XtGetGC( - selFileLists[0], - (XtGCMask) - GCForeground | - 0, - &gcValues - ); - - SFscrollGC = XtGetGC( - selFileLists[0], - (XtGCMask) - 0, - &gcValues - ); - - gcValues.function = GXinvert; - gcValues.plane_mask = (SFfore ^ SFback); - - SFinvertGC = XtGetGC( - selFileLists[0], - (XtGCMask) - GCFunction | - GCPlaneMask | - 0, - &gcValues - ); - - gcValues.foreground = SFfore; - gcValues.background = SFback; - gcValues.font = SFfont->fid; - - SFtextGC = XCreateGC( - SFdisplay, - XtWindow(selFileLists[0]), - (unsigned long) - GCForeground | - GCBackground | - GCFont | - 0, - &gcValues - ); - - rectangles[0].x = SFlineToTextH + SFbesideText; - rectangles[0].y = 0; - rectangles[0].width = SFcharsPerEntry * SFcharWidth; - rectangles[0].height = SFupperY + 1; - - XSetClipRectangles( - SFdisplay, - SFtextGC, - 0, - 0, - rectangles, - 1, - Unsorted - ); -} - -void -SFclearList(n, doScroll) - int n; - int doScroll; -{ - SFDir *dir; - - SFcurrentInvert[n] = -1; - - XClearWindow(SFdisplay, XtWindow(selFileLists[n])); - - XDrawSegments(SFdisplay, XtWindow(selFileLists[n]), SFlineGC, SFsegs, - 2); - - if (doScroll) { - dir = &(SFdirs[SFdirPtr + n]); - - if ((SFdirPtr + n < SFdirEnd) && dir->nEntries && dir->nChars) { - XawScrollbarSetThumb( - selFileVScrolls[n], - (float) (((double) dir->vOrigin) / - dir->nEntries), - (float) (((double) ((dir->nEntries < SFlistSize) - ? dir->nEntries : SFlistSize)) / - dir->nEntries) - ); - - XawScrollbarSetThumb( - selFileHScrolls[n], - (float) (((double) dir->hOrigin) / dir->nChars), - (float) (((double) ((dir->nChars < - SFcharsPerEntry) ? dir->nChars : - SFcharsPerEntry)) / dir->nChars) - ); - } else { - XawScrollbarSetThumb(selFileVScrolls[n], (float) 0.0, - (float) 1.0); - XawScrollbarSetThumb(selFileHScrolls[n], (float) 0.0, - (float) 1.0); - } - } -} - -static void -SFdeleteEntry(dir, entry) - SFDir *dir; - SFEntry *entry; -{ - register SFEntry *e; - register SFEntry *end; - int n; - int idx; - - idx = entry - dir->entries; - - if (idx < dir->beginSelection) { - dir->beginSelection--; - } - if (idx <= dir->endSelection) { - dir->endSelection--; - } - if (dir->beginSelection > dir->endSelection) { - dir->beginSelection = dir->endSelection = -1; - } - - if (idx < dir->vOrigin) { - dir->vOrigin--; - } - - XtFree(entry->real); - - end = &(dir->entries[dir->nEntries - 1]); - - for (e = entry; e < end; e++) { - *e = *(e + 1); - } - - if (!(--dir->nEntries)) { - return; - } - - n = dir - &(SFdirs[SFdirPtr]); - if ((n < 0) || (n > 2)) { - return; - } - - XawScrollbarSetThumb( - selFileVScrolls[n], - (float) (((double) dir->vOrigin) / dir->nEntries), - (float) (((double) ((dir->nEntries < SFlistSize) ? - dir->nEntries : SFlistSize)) / dir->nEntries) - ); -} - -static void -SFwriteStatChar(name, last, statBuf) - char *name; - int last; - struct stat *statBuf; -{ - name[last] = SFstatChar(statBuf); -} - -static int -SFstatAndCheck(dir, entry) - SFDir *dir; - SFEntry *entry; -{ - struct stat statBuf; - char save; - int last; - extern int SFchdir (); - - /* - * must be restored before returning - */ - save = *(dir->path); - *(dir->path) = 0; - - if (!SFchdir(SFcurrentPath)) { - last = strlen(entry->real) - 1; - entry->real[last] = 0; - entry->statDone = 1; - if ( - (!stat(entry->real, &statBuf)) - -#ifdef S_IFLNK - - || (!lstat(entry->real, &statBuf)) - -#endif /* ndef S_IFLNK */ - - ) { - if (SFfunc) { - char *shown; - - shown = NULL; - if (SFfunc(entry->real, &shown, &statBuf)) { - if (shown) { - int len; - - len = strlen(shown); - entry->shown = XtMalloc( - (unsigned) (len + 2) - ); - (void) strcpy(entry->shown, - shown); - SFwriteStatChar( - entry->shown, - len, - &statBuf - ); - entry->shown[len + 1] = 0; - } - } else { - SFdeleteEntry(dir, entry); - - *(dir->path) = save; - return 1; - } - } - SFwriteStatChar(entry->real, last, &statBuf); - } else { - entry->real[last] = ' '; - } - } - - *(dir->path) = save; - return 0; -} - -static void -SFdrawStrings(w, dir, from, to) - register Window w; - register SFDir *dir; - register int from; - register int to; -{ - register int i; - register SFEntry *entry; - int x; - - x = SFtextX - dir->hOrigin * SFcharWidth; - - if (dir->vOrigin + to >= dir->nEntries) { - to = dir->nEntries - dir->vOrigin - 1; - } - for (i = from; i <= to; i++) { - entry = &(dir->entries[dir->vOrigin + i]); - if (!(entry->statDone)) { - if (SFstatAndCheck(dir, entry)) { - if (dir->vOrigin + to >= dir->nEntries) { - to = dir->nEntries - dir->vOrigin - 1; - } - i--; - continue; - } - } - XDrawImageString( - SFdisplay, - w, - SFtextGC, - x, - SFtextYoffset + i * SFentryHeight, - entry->shown, - strlen(entry->shown) - ); - if (dir->vOrigin + i == dir->beginSelection) { - XDrawLine( - SFdisplay, - w, - SFlineGC, - SFlineToTextH + 1, - SFlowerY + i * SFentryHeight, - SFlineToTextH + SFentryWidth - 2, - SFlowerY + i * SFentryHeight - ); - } - if ( - (dir->vOrigin + i >= dir->beginSelection) && - (dir->vOrigin + i <= dir->endSelection) - ) { - SFcompletionSegs[0].y1 = SFcompletionSegs[1].y1 = - SFlowerY + i * SFentryHeight; - SFcompletionSegs[0].y2 = SFcompletionSegs[1].y2 = - SFlowerY + (i + 1) * SFentryHeight - 1; - XDrawSegments( - SFdisplay, - w, - SFlineGC, - SFcompletionSegs, - 2 - ); - } - if (dir->vOrigin + i == dir->endSelection) { - XDrawLine( - SFdisplay, - w, - SFlineGC, - SFlineToTextH + 1, - SFlowerY + (i + 1) * SFentryHeight - 1, - SFlineToTextH + SFentryWidth - 2, - SFlowerY + (i + 1) * SFentryHeight - 1 - ); - } - } -} - -void -SFdrawList(n, doScroll) - int n; - int doScroll; -{ - SFDir *dir; - Window w; - - SFclearList(n, doScroll); - - if (SFdirPtr + n < SFdirEnd) { - dir = &(SFdirs[SFdirPtr + n]); - w = XtWindow(selFileLists[n]); - XDrawImageString( - SFdisplay, - w, - SFtextGC, - SFtextX - dir->hOrigin * SFcharWidth, - SFlineToTextV + SFaboveAndBelowText + SFcharAscent, - dir->dir, - strlen(dir->dir) - ); - SFdrawStrings(w, dir, 0, SFlistSize - 1); - } -} - -void -SFdrawLists(doScroll) - int doScroll; -{ - int i; - - for (i = 0; i < 3; i++) { - SFdrawList(i, doScroll); - } -} - -static void -SFinvertEntry(n) - register int n; -{ - XFillRectangle( - SFdisplay, - XtWindow(selFileLists[n]), - SFinvertGC, - SFlineToTextH, - SFcurrentInvert[n] * SFentryHeight + SFlowerY, - SFentryWidth, - SFentryHeight - ); -} - -static unsigned long -SFscrollTimerInterval() -{ - static int maxVal = 200; - 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(p, id) - XtPointer p; - XtIntervalId *id; -{ - SFDir *dir; - int save; - int n; - - n = (int) p; - - dir = &(SFdirs[SFdirPtr + n]); - save = dir->vOrigin; - - if (SFcurrentListY < SFlowerY) { - if (dir->vOrigin > 0) { - SFvSliderMovedCallback(selFileVScrolls[n], n, - dir->vOrigin - 1); - } - } else if (SFcurrentListY > SFupperY) { - if (dir->vOrigin < dir->nEntries - SFlistSize) { - SFvSliderMovedCallback(selFileVScrolls[n], n, - 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(n, event) - register int n; - register XMotionEvent *event; -{ - register int x, y; - register 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) - ) { - register 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; - } -} - -/* ARGSUSED */ -void -SFenterList(w, n, event) - Widget w; - register int n; - register XEnterWindowEvent *event; -{ - register int new; - - /* sanity */ - if (SFcurrentInvert[n] != -1) { - SFinvertEntry(n); - SFcurrentInvert[n] = -1; - } - - new = SFnewInvertEntry(n, (XMotionEvent *) event); - if (new != -1) { - SFcurrentInvert[n] = new; - SFinvertEntry(n); - } -} - -/* ARGSUSED */ -void -SFleaveList(w, n, event) - Widget w; - register int n; - XEvent *event; -{ - if (SFcurrentInvert[n] != -1) { - SFinvertEntry(n); - SFcurrentInvert[n] = -1; - } -} - -/* ARGSUSED */ -void -SFmotionList(w, n, event) - Widget w; - register int n; - register XMotionEvent *event; -{ - register int new; - - new = SFnewInvertEntry(n, event); - - if (new != SFcurrentInvert[n]) { - if (SFcurrentInvert[n] != -1) { - SFinvertEntry(n); - } - SFcurrentInvert[n] = new; - if (new != -1) { - SFinvertEntry(n); - } - } -} - -/* ARGSUSED */ -void -SFvFloatSliderMovedCallback(w, n, fnew) - Widget w; - int n; - float *fnew; -{ - int new; - - new = (*fnew) * SFdirs[SFdirPtr + n].nEntries; - - SFvSliderMovedCallback(w, n, new); -} - -/* ARGSUSED */ -void -SFvSliderMovedCallback(w, n, new) - Widget w; - int n; - int new; -{ - int old; - register Window win; - SFDir *dir; - - 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); - } -} - -/* ARGSUSED */ -void -SFvAreaSelectedCallback(w, n, pnew) - Widget w; - int n; - int pnew; -{ - SFDir *dir; - int new; - - 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, n, new); -} - -/* ARGSUSED */ -void -SFhSliderMovedCallback(w, n, new) - Widget w; - int n; - float *new; -{ - SFDir *dir; - int save; - - dir = &(SFdirs[SFdirPtr + n]); - save = dir->hOrigin; - dir->hOrigin = (*new) * dir->nChars; - if (dir->hOrigin == save) { - return; - } - - SFdrawList(n, SF_DO_NOT_SCROLL); -} - -/* ARGSUSED */ -void -SFhAreaSelectedCallback(w, n, pnew) - Widget w; - int n; - int pnew; -{ - SFDir *dir; - int new; - - 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, n, &f); - } -} - -/* ARGSUSED */ -void -SFpathSliderMovedCallback(w, client_data, new) - Widget w; - XtPointer client_data; - float *new; -{ - SFDir *dir; - int n; - XawTextPosition pos; - int SFdirPtrSave; - - 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); -} - -/* ARGSUSED */ - -void -SFpathAreaSelectedCallback(w, client_data, pnew) - Widget w; - XtPointer client_data; - int pnew; -{ - int new; - float f; - - 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() -{ - register SFDir *dir; - register 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)) { - (void) SFstatAndCheck(dir, entry); - return False; - } - } - } - - SFworkProcAdded = 0; - - return True; -} - -#endif /* not NOSELFILE and not NOTOOL */ - |