1 #include <petsc/private/fortranimpl.h> 2 #include <petscdraw.h> 3 #include <petscviewer.h> 4 5 #if defined(PETSC_HAVE_FORTRAN_CAPS) 6 #define petsc_viewer_draw__ PETSC_VIEWER_DRAW_BROKEN 7 #define petscviewerdrawgetdraw_ PETSCVIEWERDRAWGETDRAW 8 #define petscviewerdrawgetdrawlg_ PETSCVIEWERDRAWGETDRAWLG 9 #define petscviewerdrawopen_ PETSCVIEWERDRAWOPEN 10 #elif !defined(PETSC_HAVE_FORTRAN_UNDERSCORE) 11 #define petsc_viewer_draw__ petsc_viewer_draw_ 12 #define petscviewerdrawgetdraw_ petscviewerdrawgetdraw 13 #define petscviewerdrawgetdrawlg_ petscviewerdrawgetdrawlg 14 #define petscviewerdrawopen_ petscviewerdrawopen 15 #endif 16 17 #if defined(PETSC_HAVE_FORTRAN_UNDERSCORE_UNDERSCORE) 18 #define petsc_viewer_draw__ petsc_viewer_draw___ 19 #endif 20 21 PETSC_EXTERN PetscViewer PETSC_STDCALL petsc_viewer_draw__(MPI_Comm *comm) 22 { 23 return PETSC_VIEWER_DRAW_(MPI_Comm_f2c(*(MPI_Fint*)&*comm)); 24 } 25 26 PETSC_EXTERN void PETSC_STDCALL petscviewerdrawgetdraw_(PetscViewer *vin,int *win,PetscDraw *draw,PetscErrorCode *ierr) 27 { 28 PetscViewer v; 29 PetscPatchDefaultViewers_Fortran(vin,v); 30 *ierr = PetscViewerDrawGetDraw(v,*win,draw); 31 } 32 33 PETSC_EXTERN void PETSC_STDCALL petscviewerdrawgetdrawlg_(PetscViewer *vin,int *win,PetscDrawLG *drawlg,PetscErrorCode *ierr) 34 { 35 PetscViewer v; 36 PetscPatchDefaultViewers_Fortran(vin,v); 37 *ierr = PetscViewerDrawGetDrawLG(v,*win,drawlg); 38 } 39 40 PETSC_EXTERN void PETSC_STDCALL petscviewerdrawopen_(MPI_Comm *comm,char* display PETSC_MIXED_LEN(len1), 41 char* title PETSC_MIXED_LEN(len2),int *x,int*y,int*w,int*h,PetscViewer *v, 42 PetscErrorCode *ierr PETSC_END_LEN(len1) PETSC_END_LEN(len2)) 43 { 44 char *c1,*c2; 45 46 FIXCHAR(display,len1,c1); 47 FIXCHAR(title,len2,c2); 48 *ierr = PetscViewerDrawOpen(MPI_Comm_f2c(*(MPI_Fint*)&*comm),c1,c2,*x,*y,*w,*h,v); 49 FREECHAR(display,c1); 50 FREECHAR(title,c2); 51 } 52 53