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