Annotation of OpenXM_contrib/gnuplot/win/wgnuplib.h, Revision 1.1.1.1
1.1 maekawa 1: /*
2: * $Id: wgnuplib.h,v 1.10 1998/03/22 22:35:27 drd Exp $
3: */
4:
5: /* GNUPLOT - win/wgnuplib.h */
6:
7: /*[
8: * Copyright 1982 - 1993, 1998 Russell Lang
9: *
10: * Permission to use, copy, and distribute this software and its
11: * documentation for any purpose with or without fee is hereby granted,
12: * provided that the above copyright notice appear in all copies and
13: * that both that copyright notice and this permission notice appear
14: * in supporting documentation.
15: *
16: * Permission to modify the software is granted, but not the right to
17: * distribute the complete modified source code. Modifications are to
18: * be distributed as patches to the released version. Permission to
19: * distribute binaries produced by compiling modified sources is granted,
20: * provided you
21: * 1. distribute the corresponding source modifications from the
22: * released version in the form of a patch file along with the binaries,
23: * 2. add special version identification to distinguish your version
24: * in addition to the base release version number,
25: * 3. provide your name and address as the primary contact for the
26: * support of your modified version, and
27: * 4. retain our contact information in regard to use of the base
28: * software.
29: * Permission to distribute the released version of the source code along
30: * with corresponding source modifications in the form of a patch file is
31: * granted with same provisions 2 through 4 for binary distributions.
32: *
33: * This software is provided "as is" without express or implied warranty
34: * to the extent permitted by applicable law.
35: ]*/
36:
37: /*
38: * AUTHORS
39: *
40: * Russell Lang
41: *
42: * Send your comments or suggestions to
43: * info-gnuplot@dartmouth.edu.
44: * This is a mailing list; to join it send a note to
45: * majordomo@dartmouth.edu.
46: * Send bug reports to
47: * bug-gnuplot@dartmouth.edu.
48: */
49:
50: /* this file contains items to be visible outside wgnuplot.dll */
51:
52: #ifdef _WINDOWS
53: #define _Windows
54: #endif
55:
56: #ifdef __DLL__
57: #define WINEXPORT _export
58: #else
59: #define WINEXPORT
60: #endif
61:
62: #define WDPROC WINAPI WINEXPORT
63:
64: #define WGNUPLOTVERSION "1.2 1996-01-18"
65: BOOL WDPROC CheckWGNUPLOTVersion(LPSTR str);
66:
67: /* ================================== */
68: /* symbols for the two icons */
69: #define TEXTICON 123
70: #define GRPICON 124
71:
72: /* ================================== */
73: /* For WIN32 API's */
74: #ifdef WIN32
75: /* #define DEFAULT_CHARSET ANSI_CHARSET */
76: #define OFFSETOF(x) (x)
77: #define SELECTOROF(x) (x)
78: #define MoveTo(hdc,x,y) MoveToEx(hdc,x,y,(LPPOINT)NULL);
79: # ifndef __TURBOC__ /* Borland C has these defines, already... */
80: #define farmalloc(x) malloc(x)
81: #define farrealloc(s,n) realloc(s,n)
82: #define farfree(s) free(s)
83: # endif /* __TURBOC__ */
84: #endif
85:
86: #ifdef __MINGW32__
87: /* HBB 980809: MinGW32 doesn't define some of the more traditional
88: * things gnuplot expects in every Windows C compiler, it seems: */
89: typedef LOGPEN *LPLOGPEN;
90: typedef HGLOBAL GLOBALHANDLE;
91: #define WINVER 0x0400
92: #define HFILE_ERROR ((HFILE)-1)
93:
94: /* the far mem/string function family: */
95: #define _fstrstr(s1,s2) (strstr(s1,s2))
96: #define _fstrchr(s,c) (strchr(s,c))
97: #define _fstrrchr(s,c) (strrchr(s,c))
98: #define _fstrlen(s) (strlen(s))
99: #define _fstrcpy(d,s) (strcpy(d,s))
100: #define _fstrncpy(d,s,n) (strncpy(d,s,n))
101: #define _fstrcat(s1,s2) (strcat(s1,s2))
102: #define _fmemset(s,c,n) (memset(s,c,n))
103: #define _fmemmove(d,s,n) (memmove(d,s,n))
104:
105: #endif /* __MINGW32__ */
106: /* ================================== */
107: /* wprinter.c - windows printer routines */
108: void WDPROC DumpPrinter(HWND hwnd, LPSTR szAppName, LPSTR szFileName);
109:
110: typedef struct tagPRINT {
111: HDC hdcPrn;
112: HWND hDlgPrint;
113: BOOL bUserAbort;
114: POINT pdef;
115: POINT psize;
116: POINT poff;
117: struct tagPRINT FAR *next;
118: } PRINT;
119: typedef PRINT FAR* LPPRINT;
120:
121: /* ================================== */
122: /* wpause.c - pause window structure */
123: typedef struct tagPW
124: {
125: HINSTANCE hInstance; /* required */
126: HINSTANCE hPrevInstance; /* required */
127: LPSTR Title; /* required */
128: LPSTR Message; /* required */
129: POINT Origin; /* optional */
130: HWND hWndParent; /* optional */
131: HWND hWndPause;
132: HWND hOK;
133: HWND hCancel;
134: BOOL bPause;
135: BOOL bPauseCancel;
136: BOOL bDefOK;
137: WNDPROC lpfnOK;
138: WNDPROC lpfnCancel;
139: WNDPROC lpfnPauseButtonProc;
140: } PW;
141: typedef PW FAR* LPPW;
142:
143: int WDPROC PauseBox(LPPW lppw);
144:
145: /* ================================== */
146: /* wmenu.c - menu structure */
147: #define BUTTONMAX 10
148: typedef struct tagMW
149: {
150: LPSTR szMenuName; /* required */
151: HMENU hMenu;
152: BYTE FAR * FAR *macro;
153: BYTE FAR *macrobuf;
154: int nCountMenu;
155: DLGPROC lpProcInput;
156: char *szPrompt;
157: char *szAnswer;
158: int nChar;
159: int nButton;
160: HWND hButton[BUTTONMAX];
161: int hButtonID[BUTTONMAX];
162: WNDPROC lpfnMenuButtonProc;
163: WNDPROC lpfnButtonProc[BUTTONMAX];
164: } MW;
165: typedef MW FAR * LPMW;
166:
167: /* ================================== */
168: /* wtext.c text window structure */
169: /* If an optional item is not specified it must be zero */
170: #define MAXFONTNAME 80
171: typedef struct tagTW
172: {
173: LPPRINT lpr; /* must be first */
174: HINSTANCE hInstance; /* required */
175: HINSTANCE hPrevInstance; /* required */
176: LPSTR Title; /* required */
177: LPMW lpmw; /* optional */
178: POINT ScreenSize; /* optional */
179: unsigned int KeyBufSize; /* optional */
180: LPSTR IniFile; /* optional */
181: LPSTR IniSection; /* optional */
182: LPSTR DragPre; /* optional */
183: LPSTR DragPost; /* optional */
184: int nCmdShow; /* optional */
185: FARPROC shutdown; /* optional */
186: HICON hIcon; /* optional */
187: LPSTR AboutText; /* optional */
188: HMENU hPopMenu;
189: HWND hWndText;
190: HWND hWndParent;
191: POINT Origin;
192: POINT Size;
193: BYTE FAR *ScreenBuffer;
194: BYTE FAR *AttrBuffer;
195: BYTE FAR *KeyBuf;
196: BYTE FAR *KeyBufIn;
197: BYTE FAR *KeyBufOut;
198: BYTE Attr;
199: BOOL bFocus;
200: BOOL bGetCh;
201: BOOL bSysColors;
202: HBRUSH hbrBackground;
203: char fontname[MAXFONTNAME]; /* font name */
204: int fontsize; /* font size in pts */
205: HFONT hfont;
206: int CharAscent;
207: int ButtonHeight;
208: int CaretHeight;
209: int CursorFlag;
210: POINT CursorPos;
211: POINT ClientSize;
212: POINT CharSize;
213: POINT ScrollPos;
214: POINT ScrollMax;
215: POINT MarkBegin;
216: POINT MarkEnd;
217: BOOL Marking;
218: } TW;
219: typedef TW FAR* LPTW;
220:
221:
222: /* ================================== */
223: /* wtext.c - Text Window */
224: void WDPROC TextMessage(void);
225: int WDPROC TextInit(LPTW lptw);
226: void WDPROC TextClose(LPTW lptw);
227: void WDPROC TextToCursor(LPTW lptw);
228: int WDPROC TextKBHit(LPTW);
229: int WDPROC TextGetCh(LPTW);
230: int WDPROC TextGetChE(LPTW);
231: LPSTR WDPROC TextGetS(LPTW lptw, LPSTR str, unsigned int size);
232: int WDPROC TextPutCh(LPTW, BYTE);
233: int WDPROC TextPutS(LPTW lptw, LPSTR str);
234: void WDPROC TextGotoXY(LPTW lptw, int x, int y);
235: int WDPROC TextWhereX(LPTW lptw);
236: int WDPROC TextWhereY(LPTW lptw);
237: void WDPROC TextCursorHeight(LPTW lptw, int height);
238: void WDPROC TextClearEOL(LPTW lptw);
239: void WDPROC TextClearEOS(LPTW lptw);
240: void WDPROC TextInsertLine(LPTW lptw);
241: void WDPROC TextDeleteLine(LPTW lptw);
242: void WDPROC TextScrollReverse(LPTW lptw);
243: void WDPROC TextAttr(LPTW lptw, BYTE attr);
244: void WDPROC AboutBox(HWND hwnd, LPSTR str);
245:
246: /* ================================== */
247: /* wgraph.c - graphics window */
248:
249: /* windows data */
250: #define WGNUMPENS 15
251:
252: #define GWOPMAX 4096
253: /* GWOP is 8 bytes long. Array of GWOP kept in global block */
254: struct GWOP {
255: WORD op;
256: WORD x, y;
257: HLOCAL htext;
258: };
259:
260: /* memory block for graph operations */
261: struct GWOPBLK { /* kept in local memory */
262: struct GWOPBLK *next;
263: HGLOBAL hblk; /* handle to a global block */
264: struct GWOP FAR *gwop; /* pointer to global block if locked */
265: UINT used; /* number of GWOP's used */
266: };
267:
268: /* ops */
269: #define W_endoflist 0
270: #define W_dot 10
271: #define W_diamond 11
272: #define W_plus 12
273: #define W_box 13
274: #define W_cross 14
275: #define W_triangle 15
276: #define W_star 16
277: #define W_circle 17
278: #define W_fcircle 18
279: #define W_fbox 19
280: #define W_fdiamond 20
281: #define W_fitriangle 21
282: #define W_itriangle 22
283: #define W_move 30
284: #define W_vect 31
285: #define W_line_type 32
286: #define W_put_text 33
287: #define W_justify 34
288: #define W_text_angle 35
289: #define W_pointsize 36
290:
291: typedef struct tagGW {
292: LPPRINT lpr; /* must be first */
293: HINSTANCE hInstance; /* required */
294: HINSTANCE hPrevInstance; /* required */
295: LPSTR Title; /* required */
296: int xmax; /* required */
297: int ymax; /* required */
298: LPTW lptw; /* optional */ /* associated text window */
299: POINT Origin; /* optional */ /* origin of graph window */
300: POINT Size; /* optional */ /* size of graph window */
301: LPSTR IniFile; /* optional */
302: LPSTR IniSection; /* optional */
303: HWND hWndGraph; /* window handle */
304: HMENU hPopMenu; /* popup menu */
305: int numsolid; /* number of solid pen styles */
306: int pen; /* current pen number */
307: int htic; /* horizontal size of point symbol (xmax units) */
308: int vtic; /* vertical size of point symbol (ymax units)*/
309: int hchar; /* horizontal size of character (xmax units) */
310: int vchar; /* vertical size of character (ymax units)*/
311: int angle; /* text angle */
312: BOOL rotate; /* can text be rotated 90 degrees ? */
313: char fontname[MAXFONTNAME]; /* font name */
314: int fontsize; /* font size in pts */
315: HFONT hfonth; /* horizonal font */
316: HFONT hfontv; /* vertical font */
317: BOOL resized; /* has graph window been resized? */
318: BOOL graphtotop; /* bring graph window to top after every plot? */
319: BOOL color; /* color pens? */
320: HPEN hbpen; /* border pen */
321: HPEN hapen; /* axis pen */
322: HPEN hpen[WGNUMPENS]; /* pens */
323: LOGPEN colorpen[WGNUMPENS+2]; /* logical color pens */
324: LOGPEN monopen[WGNUMPENS+2]; /* logical mono pens */
325: COLORREF background; /* background color */
326: HBRUSH hbrush; /* background brush */
327: HBRUSH colorbrush[WGNUMPENS+2]; /* brushes to fill points */
328: struct GWOPBLK *gwopblk_head;
329: struct GWOPBLK *gwopblk_tail;
330: unsigned int nGWOP;
331: BOOL locked; /* locked if being written */
332: double org_pointsize; /* Original Pointsize */
333: } GW;
334: typedef GW FAR* LPGW;
335:
336: #define WINFONTSIZE 10
337: #define WIN30FONT "Courier"
338: #define WINFONT "Arial"
339:
340: #ifndef LEFT
341: #define LEFT 0
342: #endif
343: #ifndef CENTRE
344: #define CENTRE 1
345: #endif
346: #ifndef RIGHT
347: #define RIGHT 2
348: #endif
349:
350: void WDPROC GraphInit(LPGW lpgw);
351: void WDPROC GraphClose(LPGW lpgw);
352: void WDPROC GraphStart(LPGW lpgw, double pointsize);
353: void WDPROC GraphEnd(LPGW lpgw);
354: void WDPROC GraphResume(LPGW lpgw);
355: void WDPROC GraphOp(LPGW lpgw, WORD op, WORD x, WORD y, LPSTR str);
356: void WDPROC GraphPrint(LPGW lpgw);
357: void WDPROC GraphRedraw(LPGW lpgw);
358:
359: /* ================================== */
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>