Actual source code: zdraw.c
1: /*$Id: zdraw.c,v 1.39 2001/01/17 19:47:04 balay Exp $*/
3: #include src/fortran/custom/zpetsc.h
5: #ifdef PETSC_HAVE_FORTRAN_CAPS
6: #define petscdrawsettype_ PETSCDRAWSETTYPE
7: #define petscdrawcreate_ PETSCDRAWCREATE
8: #define petscdrawaxisdestroy_ PETSCDRAWAXISDESTROY
9: #define petscdrawaxiscreate_ PETSCDRAWAXISCREATE
10: #define petscdrawaxissetlabels_ PETSCDRAWAXISSETLABELS
11: #define petscdrawlgcreate_ PETSCDRAWLGCREATE
12: #define petscdrawlgdestroy_ PETSCDRAWLGDESTROY
13: #define petscdrawlggetaxis_ PETSCDRAWLGGETAXIS
14: #define petscdrawlggetdraw_ PETSCDRAWLGGETDRAW
15: #define petscdrawopenx_ PETSCDRAWOPENX
16: #define petscdrawstring_ PETSCDRAWSTRING
17: #define petscdrawstringvertical_ PETSCDRAWSTRINGVERTICAL
18: #define petscdrawdestroy_ PETSCDRAWDESTROY
19: #define petscviewerdrawgetdraw_ PETSCVIEWERDRAWGETDRAW
20: #define petscviewerdrawgetdrawlg_ PETSCVIEWERDRAWGETDRAWLG
21: #define petscdrawgettitle_ PETSCDRAWGETTITLE
22: #define petscdrawsettitle_ PETSCDRAWSETTITLE
23: #define petscdrawappendtitle_ PETSCDRAWAPPENDTITLE
24: #define petscdrawgetpopup_ PETSCDRAWGETPOPUP
25: #define petscdrawzoom_ PETSCDRAWZOOM
26: #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE)
27: #define petscdrawcreate_ petscdrawcreate
28: #define petscdrawsettype_ petscdrawsettype
29: #define petscdrawzoom_ petscdrawzoom
30: #define petscdrawaxisdestroy_ petscdrawaxisdestroy
31: #define petscdrawaxiscreate_ petscdrawaxiscreate
32: #define petscdrawaxissetlabels_ petscdrawaxissetlabels
33: #define petscdrawlgcreate_ petscdrawlgcreate
34: #define petscdrawlgdestroy_ petscdrawlgdestroy
35: #define petscdrawlggetaxis_ petscdrawlggetaxis
36: #define petscdrawlggetdraw_ petscdrawlggetdraw
37: #define petscdrawopenx_ petscdrawopenx
38: #define petscdrawstring_ petscdrawstring
39: #define petscdrawstringvertical_ petscdrawstringvertical
40: #define petscdrawdestroy_ petscdrawdestroy
41: #define petscviewerdrawgetdraw_ petscviewerdrawgetdraw
42: #define petscviewerdrawgetdrawlg_ petscviewerdrawgetdrawlg
43: #define petscdrawgettitle_ petscdrawgettitle
44: #define petscdrawsettitle_ petscdrawsettitle
45: #define petscdrawappendtitle_ petscdrawappendtitle
46: #define petscdrawgetpopup_ petscdrawgetpopup
47: #endif
49: typedef void (PETSC_STDCALL *FCN)(PetscDraw*,void*,int*); /* force argument to next function to not be extern C*/
50: static FCN f1;
52: static int ourdrawzoom(PetscDraw draw,void *ctx)
53: {
54: int 0;
56: (*f1)(&draw,ctx,&ierr);
57: return 0;
58: }
59: EXTERN_C_BEGIN
62: void PETSC_STDCALL petscdrawzoom_(PetscDraw *draw,FCN f,void *ctx,int *ierr)
63: {
64: f1 = f;
65: *PetscDrawZoom(*draw,ourdrawzoom,ctx);
66: }
68: void PETSC_STDCALL petscviewerdrawgetdraw_(PetscViewer *vin,int *win,PetscDraw *draw,int *ierr)
69: {
70: PetscViewer v;
71: PetscPatchDefaultViewers_Fortran(vin,v);
72: *PetscViewerDrawGetDraw(v,*win,draw);
73: }
75: void PETSC_STDCALL petscviewerdrawgetdrawlg_(PetscViewer *vin,int *win,PetscDrawLG *drawlg,int *ierr)
76: {
77: PetscViewer v;
78: PetscPatchDefaultViewers_Fortran(vin,v);
79: *PetscViewerDrawGetDrawLG(v,*win,drawlg);
80: }
82: void PETSC_STDCALL petscdrawsettype_(PetscDraw *ctx,CHAR text PETSC_MIXED_LEN(len),
83: int *ierr PETSC_END_LEN(len)){
84: char *t;
85: FIXCHAR(text,len,t);
86: *PetscDrawSetType(*ctx,t);
87: FREECHAR(text,t);
88: }
90: void PETSC_STDCALL petscdrawstring_(PetscDraw *ctx,double* xl,double* yl,int* cl,CHAR text PETSC_MIXED_LEN(len),
91: int *ierr PETSC_END_LEN(len)){
92: char *t;
93: FIXCHAR(text,len,t);
94: *PetscDrawString(*ctx,*xl,*yl,*cl,t);
95: FREECHAR(text,t);
96: }
97: void PETSC_STDCALL petscdrawstringvertical_(PetscDraw *ctx,double *xl,double *yl,int *cl,
98: CHAR text PETSC_MIXED_LEN(len),int *ierr PETSC_END_LEN(len))
99: {
100: char *t;
101: FIXCHAR(text,len,t);
102: *PetscDrawStringVertical(*ctx,*xl,*yl,*cl,t);
103: FREECHAR(text,t);
104: }
106: void PETSC_STDCALL petscdrawdestroy_(PetscDraw *ctx,int *ierr)
107: {
108: *PetscDrawDestroy(*ctx);
109: }
111: void PETSC_STDCALL petscdrawcreate_(MPI_Comm *comm,CHAR display PETSC_MIXED_LEN(len1),
112: CHAR title PETSC_MIXED_LEN(len2),int *x,int *y,int *w,int *h,PetscDraw* inctx,
113: int *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
114: {
115: char *t1,*t2;
117: FIXCHAR(display,len1,t1);
118: FIXCHAR(title,len2,t2);
119: *PetscDrawCreate((MPI_Comm)PetscToPointerComm(*comm),t1,t2,*x,*y,*w,*h,inctx);
120: FREECHAR(display,t1);
121: FREECHAR(title,t2);
122: }
124: #if defined(PETSC_HAVE_X11)
125: void PETSC_STDCALL petscdrawopenx_(MPI_Comm *comm,CHAR display PETSC_MIXED_LEN(len1),
126: CHAR title PETSC_MIXED_LEN(len2),int *x,int *y,int *w,int *h,PetscDraw* inctx,
127: int *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
128: {
129: char *t1,*t2;
131: FIXCHAR(display,len1,t1);
132: FIXCHAR(title,len2,t2);
133: *PetscDrawOpenX((MPI_Comm)PetscToPointerComm(*comm),t1,t2,*x,*y,*w,*h,inctx);
134: FREECHAR(display,t1);
135: FREECHAR(title,t2);
136: }
137: #endif
139: void PETSC_STDCALL petscdrawlggetaxis_(PetscDrawLG *lg,PetscDrawAxis *axis,int *ierr)
140: {
141: *PetscDrawLGGetAxis(*lg,axis);
142: }
144: void PETSC_STDCALL petscdrawlggetdraw_(PetscDrawLG *lg,PetscDraw *win,int *ierr)
145: {
146: *PetscDrawLGGetDraw(*lg,win);
147: }
149: void PETSC_STDCALL petscdrawlgdestroy_(PetscDrawLG *lg,int *ierr)
150: {
151: *PetscDrawLGDestroy(*lg);
152: }
154: void PETSC_STDCALL petscdrawlgcreate_(PetscDraw *win,int *dim,PetscDrawLG *outctx,int *ierr)
155: {
156: *PetscDrawLGCreate(*win,*dim,outctx);
157: }
159: void PETSC_STDCALL petscdrawaxissetlabels_(PetscDrawAxis *axis,CHAR top PETSC_MIXED_LEN(len1),
160: CHAR xlabel PETSC_MIXED_LEN(len2),CHAR ylabel PETSC_MIXED_LEN(len3),
161: int *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len3))
162: {
163: char *t1,*t2,*t3;
164:
165: FIXCHAR(top,len1,t1);
166: FIXCHAR(xlabel,len2,t2);
167: FIXCHAR(ylabel,len3,t3);
168: *PetscDrawAxisSetLabels(*axis,t1,t2,t3);
169: FREECHAR(top,t1);
170: FREECHAR(xlabel,t2);
171: FREECHAR(ylabel,t3);
172: }
174: void PETSC_STDCALL petscdrawaxisdestroy_(PetscDrawAxis *axis,int *ierr)
175: {
176: *PetscDrawAxisDestroy(*axis);
177: }
179: void PETSC_STDCALL petscdrawaxiscreate_(PetscDraw *win,PetscDrawAxis *ctx,int *ierr)
180: {
181: *PetscDrawAxisCreate(*win,ctx);
182: }
184: void PETSC_STDCALL petscdrawgettitle_(PetscDraw *draw,CHAR title PETSC_MIXED_LEN(len),
185: int *ierr PETSC_END_LEN(len))
186: {
187: char *c3,*t;
188: int len3;
189: #if defined(PETSC_USES_CPTOFCD)
190: c3 = _fcdtocp(title);
191: len3 = _fcdlen(title) - 1;
192: #else
193: c3 = title;
194: len3 = len - 1;
195: #endif
196: *PetscDrawGetTitle(*draw,&t);
197: *PetscStrncpy(c3,t,len3);
198: }
200: void PETSC_STDCALL petscdrawsettitle_(PetscDraw *draw,CHAR title PETSC_MIXED_LEN(len),
201: int *ierr PETSC_END_LEN(len))
202: {
203: char *t1;
204: FIXCHAR(title,len,t1);
205: *PetscDrawSetTitle(*draw,t1);
206: FREECHAR(title,t1);
207: }
209: void PETSC_STDCALL petscdrawappendtitle_(PetscDraw *draw,CHAR title PETSC_MIXED_LEN(len),
210: int *ierr PETSC_END_LEN(len))
211: {
212: char *t1;
213: FIXCHAR(title,len,t1);
214: *PetscDrawAppendTitle(*draw,t1);
215: FREECHAR(title,t1);
216: }
218: void PETSC_STDCALL petscdrawgetpopup_(PetscDraw *draw,PetscDraw *popup,int *ierr)
219: {
220: *PetscDrawGetPopup(*draw,popup);
221: }
223: EXTERN_C_END