xref: /petsc/include/petscdraw.h (revision b0a32e0c6855ee6a6cd3495fa7da12ea9885bc5d)
1 /* $Id: petscdraw.h,v 1.74 2000/06/07 17:42:13 balay Exp bsmith $ */
2 /*
3   Interface to the PETSc graphics (currently only support for X-windows
4 */
5 #if !defined(__PETSCDRAW_H)
6 #define __PETSCDRAW_H
7 #include "petsc.h"
8 
9 #define PETSC_DRAW_COOKIE PETSC_COOKIE+6
10 
11 /* types of draw contexts */
12 #define PETSC_DRAW_X     "x"
13 #define PETSC_DRAW_NULL  "null"
14 #define PETSC_DRAW_PS    "ps"
15 #define PETSC_DRAW_WIN32 "win32"
16 
17 typedef struct _p_PetscDraw* PetscDraw;
18 
19 typedef char* PetscDrawType;
20 extern PetscFList PetscDrawList;
21 EXTERN int PetscDrawRegisterAll(char *);
22 EXTERN int PetscDrawRegisterDestroy(void);
23 
24 EXTERN int PetscDrawRegister(char*,char*,char*,int(*)(PetscDraw));
25 #if defined(PETSC_USE_DYNAMIC_LIBRARIES)
26 #define PetscDrawRegisterDynamic(a,b,c,d) PetscDrawRegister(a,b,c,0)
27 #else
28 #define PetscDrawRegisterDynamic(a,b,c,d) PetscDrawRegister(a,b,c,d)
29 #endif
30 EXTERN int PetscDrawGetType(PetscDraw,PetscDrawType*);
31 EXTERN int PetscDrawSetType(PetscDraw,PetscDrawType);
32 EXTERN int PetscDrawCreate(MPI_Comm,const char[],const char[],int,int,int,int,PetscDraw*);
33 EXTERN int PetscDrawSetFromOptions(PetscDraw);
34 
35 /*
36    Number of basic colors in the draw routines, the others are used
37    for a uniform colormap.
38 */
39 #define PETSC_DRAW_BASIC_COLORS 33
40 
41 #define PETSC_DRAW_ROTATE          -1         /* will rotate through the colors, start with 2 */
42 #define PETSC_DRAW_WHITE            0
43 #define PETSC_DRAW_BLACK            1
44 #define PETSC_DRAW_RED              2
45 #define PETSC_DRAW_GREEN            3
46 #define PETSC_DRAW_CYAN             4
47 #define PETSC_DRAW_BLUE             5
48 #define PETSC_DRAW_MAGENTA          6
49 #define PETSC_DRAW_AQUAMARINE       7
50 #define PETSC_DRAW_FORESTGREEN      8
51 #define PETSC_DRAW_ORANGE           9
52 #define PETSC_DRAW_VIOLET          10
53 #define PETSC_DRAW_BROWN           11
54 #define PETSC_DRAW_PINK            12
55 #define PETSC_DRAW_CORAL           13
56 #define PETSC_DRAW_GRAY            14
57 #define PETSC_DRAW_YELLOW          15
58 
59 #define PETSC_DRAW_GOLD            16
60 #define PETSC_DRAW_LIGHTPINK       17
61 #define PETSC_DRAW_MEDIUMTURQUOISE 18
62 #define PETSC_DRAW_KHAKI           19
63 #define PETSC_DRAW_DIMGRAY         20
64 #define PETSC_DRAW_YELLOWGREEN     21
65 #define PETSC_DRAW_SKYBLUE         22
66 #define PETSC_DRAW_DARKGREEN       23
67 #define PETSC_DRAW_NAVYBLUE        24
68 #define PETSC_DRAW_SANDYBROWN      25
69 #define PETSC_DRAW_CADETBLUE       26
70 #define PETSC_DRAW_POWDERBLUE      27
71 #define PETSC_DRAW_DEEPPINK        28
72 #define PETSC_DRAW_THISTLE         29
73 #define PETSC_DRAW_LIMEGREEN       30
74 #define PETSC_DRAW_LAVENDERBLUSH   31
75 #define PETSC_DRAW_PLUM            32
76 
77 EXTERN int PetscDrawOpenX(MPI_Comm,const char[],const char[],int,int,int,int,PetscDraw*);
78 EXTERN int PetscDrawOpenPS(MPI_Comm,char *,PetscDraw *);
79 #define PETSC_DRAW_FULL_SIZE    -3
80 #define PETSC_DRAW_HALF_SIZE    -4
81 #define PETSC_DRAW_THIRD_SIZE   -5
82 #define PETSC_DRAW_QUARTER_SIZE -6
83 
84 EXTERN int PetscDrawOpenNull(MPI_Comm,PetscDraw *);
85 EXTERN int PetscDrawDestroy(PetscDraw);
86 EXTERN int PetscDrawIsNull(PetscDraw,PetscTruth*);
87 
88 EXTERN int PetscDrawGetPopup(PetscDraw,PetscDraw*);
89 EXTERN int PetscDrawCheckResizedWindow(PetscDraw);
90 EXTERN int PetscDrawResizeWindow(PetscDraw,int,int);
91 
92 EXTERN int PetscDrawScalePopup(PetscDraw,double min,double max);
93 
94 EXTERN int PetscDrawLine(PetscDraw,double,double,double,double,int);
95 EXTERN int PetscDrawLineSetWidth(PetscDraw,double);
96 EXTERN int PetscDrawLineGetWidth(PetscDraw,double*);
97 
98 EXTERN int PetscDrawPoint(PetscDraw,double,double,int);
99 EXTERN int PetscDrawPointSetSize(PetscDraw,double);
100 
101 EXTERN int PetscDrawRectangle(PetscDraw,double,double,double,double,int,int,int,int);
102 EXTERN int PetscDrawTriangle(PetscDraw,double,double,double,double,double,double,int,int,int);
103 EXTERN int PetscDrawTensorContourPatch(PetscDraw,int,int,double*,double*,double,double,Scalar*);
104 EXTERN int PetscDrawTensorContour(PetscDraw,int,int,const double[],const double[],Scalar *);
105 
106 EXTERN int PetscDrawString(PetscDraw,double,double,int,char*);
107 EXTERN int PetscDrawStringVertical(PetscDraw,double,double,int,char*);
108 EXTERN int PetscDrawStringSetSize(PetscDraw,double,double);
109 EXTERN int PetscDrawStringGetSize(PetscDraw,double*,double*);
110 
111 EXTERN int PetscDrawSetViewPort(PetscDraw,double,double,double,double);
112 EXTERN int PetscDrawSplitViewPort(PetscDraw);
113 
114 EXTERN int PetscDrawSetCoordinates(PetscDraw,double,double,double,double);
115 EXTERN int PetscDrawGetCoordinates(PetscDraw,double*,double*,double*,double*);
116 
117 EXTERN int PetscDrawSetTitle(PetscDraw,char *);
118 EXTERN int PetscDrawAppendTitle(PetscDraw,char *);
119 EXTERN int PetscDrawGetTitle(PetscDraw,char **);
120 
121 EXTERN int PetscDrawSetPause(PetscDraw,int);
122 EXTERN int PetscDrawGetPause(PetscDraw,int*);
123 EXTERN int PetscDrawPause(PetscDraw);
124 EXTERN int PetscDrawSetDoubleBuffer(PetscDraw);
125 EXTERN int PetscDrawFlush(PetscDraw);
126 EXTERN int PetscDrawSynchronizedFlush(PetscDraw);
127 EXTERN int PetscDrawClear(PetscDraw);
128 EXTERN int PetscDrawSynchronizedClear(PetscDraw);
129 EXTERN int PetscDrawBOP(PetscDraw);
130 EXTERN int PetscDrawEOP(PetscDraw);
131 
132 EXTERN int PetscDrawGetSingleton(PetscDraw,PetscDraw*);
133 EXTERN int PetscDrawRestoreSingleton(PetscDraw,PetscDraw*);
134 
135 typedef enum {BUTTON_NONE,BUTTON_LEFT,BUTTON_CENTER,BUTTON_RIGHT } PetscDrawButton;
136 EXTERN int PetscDrawGetMouseButton(PetscDraw,PetscDrawButton *,double*,double *,double *,double *);
137 EXTERN int PetscDrawSynchronizedGetMouseButton(PetscDraw,PetscDrawButton *,double*,double *,double *,double *);
138 
139 EXTERN int PetscDrawZoom(PetscDraw,int (*)(PetscDraw,void *),void *);
140 
141 /*   Allows one to maintain a subset of viewports for a single window */
142 typedef struct {
143   int    nports;
144   double *xl,*xr,*yl,*yr;
145   PetscDraw   draw;
146 } PetscDrawViewPorts;
147 EXTERN int PetscDrawViewPortsCreate(PetscDraw,int,PetscDrawViewPorts**);
148 EXTERN int PetscDrawViewPortsDestroy(PetscDrawViewPorts*);
149 EXTERN int PetscDrawViewPortsSet(PetscDrawViewPorts*,int);
150 
151 /*
152     Routines for drawing X-Y axises in a PetscDraw object
153 */
154 typedef struct _p_DrawAxis* PetscDrawAxis;
155 #define DRAWAXIS_COOKIE PETSC_COOKIE+16
156 EXTERN int PetscDrawAxisCreate(PetscDraw,PetscDrawAxis *);
157 EXTERN int PetscDrawAxisDestroy(PetscDrawAxis);
158 EXTERN int PetscDrawAxisDraw(PetscDrawAxis);
159 EXTERN int PetscDrawAxisSetLimits(PetscDrawAxis,double,double,double,double);
160 EXTERN int PetscDrawAxisSetColors(PetscDrawAxis,int,int,int);
161 EXTERN int PetscDrawAxisSetLabels(PetscDrawAxis,char*,char*,char*);
162 
163 /*
164     Routines to draw line curves in X-Y space
165 */
166 typedef struct _p_DrawLG*   PetscDrawLG;
167 #define DRAWLG_COOKIE PETSC_COOKIE+7
168 EXTERN int PetscDrawLGCreate(PetscDraw,int,PetscDrawLG *);
169 EXTERN int PetscDrawLGDestroy(PetscDrawLG);
170 EXTERN int PetscDrawLGAddPoint(PetscDrawLG,double*,double*);
171 EXTERN int PetscDrawLGAddPoints(PetscDrawLG,int,double**,double**);
172 EXTERN int PetscDrawLGDraw(PetscDrawLG);
173 EXTERN int PetscDrawLGReset(PetscDrawLG);
174 EXTERN int PetscDrawLGSetDimension(PetscDrawLG,int);
175 EXTERN int PetscDrawLGGetAxis(PetscDrawLG,PetscDrawAxis *);
176 EXTERN int PetscDrawLGGetDraw(PetscDrawLG,PetscDraw *);
177 EXTERN int PetscDrawLGIndicateDataPoints(PetscDrawLG);
178 EXTERN int PetscDrawLGSetLimits(PetscDrawLG,double,double,double,double);
179 
180 /*
181     Routines to draw scatter plots in complex space
182 */
183 typedef struct _p_DrawSP*   PetscDrawSP;
184 #define DRAWSP_COOKIE PETSC_COOKIE+27
185 EXTERN int PetscDrawSPCreate(PetscDraw,int,PetscDrawSP *);
186 EXTERN int PetscDrawSPDestroy(PetscDrawSP);
187 EXTERN int PetscDrawSPAddPoint(PetscDrawSP,double*,double*);
188 EXTERN int PetscDrawSPAddPoints(PetscDrawSP,int,double**,double**);
189 EXTERN int PetscDrawSPDraw(PetscDrawSP);
190 EXTERN int PetscDrawSPReset(PetscDrawSP);
191 EXTERN int PetscDrawSPSetDimension(PetscDrawSP,int);
192 EXTERN int PetscDrawSPGetAxis(PetscDrawSP,PetscDrawAxis *);
193 EXTERN int PetscDrawSPGetDraw(PetscDrawSP,PetscDraw *);
194 EXTERN int PetscDrawSPSetLimits(PetscDrawSP,double,double,double,double);
195 
196 /*
197     Routines to draw histograms
198 */
199 typedef struct _p_DrawHG*   PetscDrawHG;
200 #define DRAWHG_COOKIE PETSC_COOKIE+15
201 EXTERN int PetscDrawHGCreate(PetscDraw,int,PetscDrawHG *);
202 EXTERN int PetscDrawHGDestroy(PetscDrawHG);
203 EXTERN int PetscDrawHGAddValue(PetscDrawHG,double);
204 EXTERN int PetscDrawHGDraw(PetscDrawHG);
205 EXTERN int PetscDrawHGReset(PetscDrawHG);
206 EXTERN int PetscDrawHGGetAxis(PetscDrawHG,PetscDrawAxis *);
207 EXTERN int PetscDrawHGGetDraw(PetscDrawHG,PetscDraw *);
208 EXTERN int PetscDrawHGSetLimits(PetscDrawHG,double,double,int,int);
209 EXTERN int PetscDrawHGSetNumberBins(PetscDrawHG,int);
210 EXTERN int PetscDrawHGSetColor(PetscDrawHG,int);
211 
212 /*
213     PetscViewer routines that allow you to access underlying PetscDraw objects
214 */
215 EXTERN int PetscViewerDrawGetDraw(PetscViewer,int,PetscDraw*);
216 EXTERN int PetscViewerDrawGetDrawLG(PetscViewer,int,PetscDrawLG*);
217 EXTERN int PetscViewerDrawGetDrawAxis(PetscViewer,int,PetscDrawAxis*);
218 
219 EXTERN int PetscDrawUtilitySetCmapHue(unsigned char *,unsigned char *,unsigned char *,int);
220 EXTERN int PetscDrawUtilitySetGamma(double);
221 
222 /* Mesh management routines */
223 typedef struct _p_DrawMesh* PetscDrawMesh;
224 int PetscDrawMeshCreate(PetscDrawMesh *,
225 		    double *,double *,double *,
226 		    int,int,int,int,int,int,int,int,int,
227 		    int,int,int,int,double *,int);
228 int PetscDrawMeshCreateSimple(PetscDrawMesh *,double *,double *,double *,
229 			  int,int,int,int,double *,int);
230 int PetscDrawMeshDestroy(PetscDrawMesh *);
231 
232 
233 
234 
235 #endif
236 
237 
238 
239 
240 
241