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