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