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: EXTERN_C_BEGIN
51: static void (PETSC_STDCALL *f1)(PetscDraw *,void *,int *);
52: static int ourdrawzoom(PetscDraw draw,void *ctx)
53: {
54: int 0;
56: (*f1)(&draw,ctx,&ierr);
57: return 0;
58: }
60: void PETSC_STDCALL petscdrawzoom_(PetscDraw *draw,void (PETSC_STDCALL *f)(PetscDraw *,void *,int *),void *ctx,int *ierr)
61: {
62: f1 = f;
63: *PetscDrawZoom(*draw,ourdrawzoom,ctx);
64: }
66: void PETSC_STDCALL petscviewerdrawgetdraw_(PetscViewer *vin,int *win,PetscDraw *draw,int *ierr)
67: {
68: PetscViewer v;
69: PetscPatchDefaultViewers_Fortran(vin,v);
70: *PetscViewerDrawGetDraw(v,*win,draw);
71: }
73: void PETSC_STDCALL petscviewerdrawgetdrawlg_(PetscViewer *vin,int *win,PetscDrawLG *drawlg,int *ierr)
74: {
75: PetscViewer v;
76: PetscPatchDefaultViewers_Fortran(vin,v);
77: *PetscViewerDrawGetDrawLG(v,*win,drawlg);
78: }
80: void PETSC_STDCALL petscdrawsettype_(PetscDraw *ctx,CHAR text PETSC_MIXED_LEN(len),
81: int *ierr PETSC_END_LEN(len)){
82: char *t;
83: FIXCHAR(text,len,t);
84: *PetscDrawSetType(*ctx,t);
85: FREECHAR(text,t);
86: }
88: void PETSC_STDCALL petscdrawstring_(PetscDraw *ctx,double* xl,double* yl,int* cl,CHAR text PETSC_MIXED_LEN(len),
89: int *ierr PETSC_END_LEN(len)){
90: char *t;
91: FIXCHAR(text,len,t);
92: *PetscDrawString(*ctx,*xl,*yl,*cl,t);
93: FREECHAR(text,t);
94: }
95: void PETSC_STDCALL petscdrawstringvertical_(PetscDraw *ctx,double *xl,double *yl,int *cl,
96: CHAR text PETSC_MIXED_LEN(len),int *ierr PETSC_END_LEN(len))
97: {
98: char *t;
99: FIXCHAR(text,len,t);
100: *PetscDrawStringVertical(*ctx,*xl,*yl,*cl,t);
101: FREECHAR(text,t);
102: }
104: void PETSC_STDCALL petscdrawdestroy_(PetscDraw *ctx,int *ierr)
105: {
106: *PetscDrawDestroy(*ctx);
107: }
109: void PETSC_STDCALL petscdrawcreate_(MPI_Comm *comm,CHAR display PETSC_MIXED_LEN(len1),
110: CHAR title PETSC_MIXED_LEN(len2),int *x,int *y,int *w,int *h,PetscDraw* inctx,
111: int *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
112: {
113: char *t1,*t2;
115: FIXCHAR(display,len1,t1);
116: FIXCHAR(title,len2,t2);
117: *PetscDrawCreate((MPI_Comm)PetscToPointerComm(*comm),t1,t2,*x,*y,*w,*h,inctx);
118: FREECHAR(display,t1);
119: FREECHAR(title,t2);
120: }
122: #if defined(PETSC_HAVE_X11)
123: void PETSC_STDCALL petscdrawopenx_(MPI_Comm *comm,CHAR display PETSC_MIXED_LEN(len1),
124: CHAR title PETSC_MIXED_LEN(len2),int *x,int *y,int *w,int *h,PetscDraw* inctx,
125: int *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2))
126: {
127: char *t1,*t2;
129: FIXCHAR(display,len1,t1);
130: FIXCHAR(title,len2,t2);
131: *PetscDrawOpenX((MPI_Comm)PetscToPointerComm(*comm),t1,t2,*x,*y,*w,*h,inctx);
132: FREECHAR(display,t1);
133: FREECHAR(title,t2);
134: }
135: #endif
137: void PETSC_STDCALL petscdrawlggetaxis_(PetscDrawLG *lg,PetscDrawAxis *axis,int *ierr)
138: {
139: *PetscDrawLGGetAxis(*lg,axis);
140: }
142: void PETSC_STDCALL petscdrawlggetdraw_(PetscDrawLG *lg,PetscDraw *win,int *ierr)
143: {
144: *PetscDrawLGGetDraw(*lg,win);
145: }
147: void PETSC_STDCALL petscdrawlgdestroy_(PetscDrawLG *lg,int *ierr)
148: {
149: *PetscDrawLGDestroy(*lg);
150: }
152: void PETSC_STDCALL petscdrawlgcreate_(PetscDraw *win,int *dim,PetscDrawLG *outctx,int *ierr)
153: {
154: *PetscDrawLGCreate(*win,*dim,outctx);
155: }
157: void PETSC_STDCALL petscdrawaxissetlabels_(PetscDrawAxis *axis,CHAR top PETSC_MIXED_LEN(len1),
158: CHAR xlabel PETSC_MIXED_LEN(len2),CHAR ylabel PETSC_MIXED_LEN(len3),
159: int *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2) PETSC_END_LEN(len3))
160: {
161: char *t1,*t2,*t3;
162:
163: FIXCHAR(top,len1,t1);
164: FIXCHAR(xlabel,len2,t2);
165: FIXCHAR(ylabel,len3,t3);
166: *PetscDrawAxisSetLabels(*axis,t1,t2,t3);
167: FREECHAR(top,t1);
168: FREECHAR(xlabel,t2);
169: FREECHAR(ylabel,t3);
170: }
172: void PETSC_STDCALL petscdrawaxisdestroy_(PetscDrawAxis *axis,int *ierr)
173: {
174: *PetscDrawAxisDestroy(*axis);
175: }
177: void PETSC_STDCALL petscdrawaxiscreate_(PetscDraw *win,PetscDrawAxis *ctx,int *ierr)
178: {
179: *PetscDrawAxisCreate(*win,ctx);
180: }
182: void PETSC_STDCALL petscdrawgettitle_(PetscDraw *draw,CHAR title PETSC_MIXED_LEN(len),
183: int *ierr PETSC_END_LEN(len))
184: {
185: char *c3,*t;
186: int len3;
187: #if defined(PETSC_USES_CPTOFCD)
188: c3 = _fcdtocp(title);
189: len3 = _fcdlen(title) - 1;
190: #else
191: c3 = title;
192: len3 = len - 1;
193: #endif
194: *PetscDrawGetTitle(*draw,&t);
195: *PetscStrncpy(c3,t,len3);
196: }
198: void PETSC_STDCALL petscdrawsettitle_(PetscDraw *draw,CHAR title PETSC_MIXED_LEN(len),
199: int *ierr PETSC_END_LEN(len))
200: {
201: char *t1;
202: FIXCHAR(title,len,t1);
203: *PetscDrawSetTitle(*draw,t1);
204: FREECHAR(title,t1);
205: }
207: void PETSC_STDCALL petscdrawappendtitle_(PetscDraw *draw,CHAR title PETSC_MIXED_LEN(len),
208: int *ierr PETSC_END_LEN(len))
209: {
210: char *t1;
211: FIXCHAR(title,len,t1);
212: *PetscDrawAppendTitle(*draw,t1);
213: FREECHAR(title,t1);
214: }
216: void PETSC_STDCALL petscdrawgetpopup_(PetscDraw *draw,PetscDraw *popup,int *ierr)
217: {
218: *PetscDrawGetPopup(*draw,popup);
219: }
221: EXTERN_C_END