xref: /petsc/src/sys/classes/viewer/impls/draw/ftn-custom/zdrawvf.c (revision bcee047adeeb73090d7e36cc71e39fc287cdbb97)
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_viewer_draw__(MPI_Comm *comm)
22 {
23   return PETSC_VIEWER_DRAW_(MPI_Comm_f2c(*(MPI_Fint *)&*comm));
24 }
25 
26 PETSC_EXTERN void 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 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 petscviewerdrawopen_(MPI_Comm *comm, char *display, char *title, int *x, int *y, int *w, int *h, PetscViewer *v, PetscErrorCode *ierr, PETSC_FORTRAN_CHARLEN_T len1, PETSC_FORTRAN_CHARLEN_T len2)
41 {
42   char *c1, *c2;
43 
44   FIXCHAR(display, len1, c1);
45   FIXCHAR(title, len2, c2);
46   *ierr = PetscViewerDrawOpen(MPI_Comm_f2c(*(MPI_Fint *)&*comm), c1, c2, *x, *y, *w, *h, v);
47   if (*ierr) return;
48   FREECHAR(display, c1);
49   FREECHAR(title, c2);
50 }
51