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