xref: /petsc/src/sys/classes/draw/impls/x/drawopenx.c (revision cc4c1da905d89950b196b027190941013bd3e15a)
15c6c1daeSBarry Smith /*
25c6c1daeSBarry Smith     Defines the operations for the X PetscDraw implementation.
35c6c1daeSBarry Smith */
45c6c1daeSBarry Smith 
5*cc4c1da9SBarry Smith #include <../src/sys/classes/draw/impls/x/ximpl.h> /*I  "petscdraw.h" I*/
65c6c1daeSBarry Smith 
7*cc4c1da9SBarry Smith /*@
8811af0c4SBarry Smith   PetscDrawOpenX - Opens an X-window for use with the `PetscDraw` routines.
95c6c1daeSBarry Smith 
10d083f849SBarry Smith   Collective
115c6c1daeSBarry Smith 
125c6c1daeSBarry Smith   Input Parameters:
135c6c1daeSBarry Smith + comm    - the communicator that will share X-window
1410450e9eSJacob Faibussowitsch . display - the X display on which to open, or `NULL` for the local machine
1510450e9eSJacob Faibussowitsch . title   - the title to put in the title bar, or `NULL` for no title
1610450e9eSJacob Faibussowitsch . x       - the x screen coordinates of the upper left corner of window (or `PETSC_DECIDE`)
1710450e9eSJacob Faibussowitsch . y       - the y screen coordinates of the upper left corner of window (or `PETSC_DECIDE`)
1810450e9eSJacob Faibussowitsch . w       - the screen width in pixels of (or `PETSC_DRAW_HALF_SIZE`, `PETSC_DRAW_FULL_SIZE`, or `PETSC_DRAW_THIRD_SIZE` or `PETSC_DRAW_QUARTER_SIZE`)
1910450e9eSJacob Faibussowitsch - h       - the screen height in pixels of (or `PETSC_DRAW_HALF_SIZE`, `PETSC_DRAW_FULL_SIZE`, or `PETSC_DRAW_THIRD_SIZE` or `PETSC_DRAW_QUARTER_SIZE`)
205c6c1daeSBarry Smith 
21f899ff85SJose E. Roman   Output Parameter:
225c6c1daeSBarry Smith . draw - the drawing context.
235c6c1daeSBarry Smith 
245c6c1daeSBarry Smith   Options Database Keys:
255c6c1daeSBarry Smith + -nox                    - Disables all x-windows output
265c6c1daeSBarry Smith . -display <name>         - Sets name of machine for the X display
275c6c1daeSBarry Smith . -draw_pause <pause>     - Sets time (in seconds) that the
285c6c1daeSBarry Smith        program pauses after PetscDrawPause() has been called
295c6c1daeSBarry Smith        (0 is default, -1 implies until user input).
3000d931feSLisandro Dalcin . -draw_cmap <name>       - Sets the colormap to use.
3100d931feSLisandro Dalcin . -draw_cmap_reverse      - Reverses the colormap.
3200d931feSLisandro Dalcin . -draw_cmap_brighten     - Brighten (0 < beta < 1) or darken (-1 < beta < 0) the colormap.
335c6c1daeSBarry Smith . -draw_x_shared_colormap - Causes PETSc to use a shared
345c6c1daeSBarry Smith        colormap. By default PETSc creates a separate color
355c6c1daeSBarry Smith        for its windows, you must put the mouse into the graphics
365c6c1daeSBarry Smith        window to see  the correct colors. This options forces
375c6c1daeSBarry Smith        PETSc to use the default colormap which will usually result
385c6c1daeSBarry Smith        in bad contour plots.
3969d47153SPierre Jolivet . -draw_fast              - Does not create colormap for contour plots.
405c6c1daeSBarry Smith . -draw_double_buffer     - Uses double buffering for smooth animation.
4100d931feSLisandro Dalcin - -geometry               - Indicates location and size of window.
425c6c1daeSBarry Smith 
435c6c1daeSBarry Smith   Level: beginner
445c6c1daeSBarry Smith 
4510450e9eSJacob Faibussowitsch   Notes:
4610450e9eSJacob Faibussowitsch   If `x` and `y` are both `PETSC_DECIDE` then PETSc places the window automatically.
4710450e9eSJacob Faibussowitsch 
485c6c1daeSBarry Smith   When finished with the drawing context, it should be destroyed
49811af0c4SBarry Smith   with `PetscDrawDestroy()`.
505c6c1daeSBarry Smith 
5110450e9eSJacob Faibussowitsch   Fortran Notes:
525c6c1daeSBarry Smith   Whenever indicating null character data in a Fortran code,
53811af0c4SBarry Smith   `PETSC_NULL_CHARACTER` must be employed; using NULL is not
54811af0c4SBarry Smith   correct for character data!  Thus, `PETSC_NULL_CHARACTER` can be
555c6c1daeSBarry Smith   used for the display and title input parameters.
565c6c1daeSBarry Smith 
57db781477SPatrick Sanan .seealso: `PetscDrawFlush()`, `PetscDrawDestroy()`, `PetscDrawCreate()`, `PetscDrawOpnOpenGL()`
585c6c1daeSBarry Smith @*/
59d71ae5a4SJacob Faibussowitsch PetscErrorCode PetscDrawOpenX(MPI_Comm comm, const char display[], const char title[], int x, int y, int w, int h, PetscDraw *draw)
60d71ae5a4SJacob Faibussowitsch {
615c6c1daeSBarry Smith   PetscFunctionBegin;
629566063dSJacob Faibussowitsch   PetscCall(PetscDrawCreate(comm, display, title, x, y, w, h, draw));
639566063dSJacob Faibussowitsch   PetscCall(PetscDrawSetType(*draw, PETSC_DRAW_X));
643ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
655c6c1daeSBarry Smith }
66