xref: /petsc/src/sys/classes/draw/impls/x/drawopenx.c (revision d5b43468fb8780a8feea140ccd6fa3e6a50411cc)
1 
2 /*
3     Defines the operations for the X PetscDraw implementation.
4 */
5 
6 #include <../src/sys/classes/draw/impls/x/ximpl.h> /*I  "petscsys.h" I*/
7 
8 /*@C
9    PetscDrawOpenX - Opens an X-window for use with the `PetscDraw` routines.
10 
11    Collective
12 
13    Input Parameters:
14 +  comm - the communicator that will share X-window
15 .  display - the X display on which to open,or null for the local machine
16 .  title - the title to put in the title bar,or null for no title
17 .  x,y - the screen coordinates of the upper left corner of window
18           may use `PETSC_DECIDE` for these two arguments, then PETSc places the
19           window
20 -  w, h - the screen width and height in pixels,  or `PETSC_DRAW_HALF_SIZE`, `PETSC_DRAW_FULL_SIZE`,
21           or `PETSC_DRAW_THIRD_SIZE` or `PETSC_DRAW_QUARTER_SIZE`
22 
23    Output Parameter:
24 .  draw - the drawing context.
25 
26    Options Database Keys:
27 +  -nox - Disables all x-windows output
28 .  -display <name> - Sets name of machine for the X display
29 .  -draw_pause <pause> - Sets time (in seconds) that the
30        program pauses after PetscDrawPause() has been called
31        (0 is default, -1 implies until user input).
32 .  -draw_cmap <name> - Sets the colormap to use.
33 .  -draw_cmap_reverse - Reverses the colormap.
34 .  -draw_cmap_brighten - Brighten (0 < beta < 1) or darken (-1 < beta < 0) the colormap.
35 .  -draw_x_shared_colormap - Causes PETSc to use a shared
36        colormap. By default PETSc creates a separate color
37        for its windows, you must put the mouse into the graphics
38        window to see  the correct colors. This options forces
39        PETSc to use the default colormap which will usually result
40        in bad contour plots.
41 .  -draw_fast - Does not create colormap for countour plots.
42 .  -draw_double_buffer - Uses double buffering for smooth animation.
43 -  -geometry - Indicates location and size of window.
44 
45    Level: beginner
46 
47    Note:
48    When finished with the drawing context, it should be destroyed
49    with `PetscDrawDestroy()`.
50 
51    Note for Fortran Programmers:
52    Whenever indicating null character data in a Fortran code,
53    `PETSC_NULL_CHARACTER` must be employed; using NULL is not
54    correct for character data!  Thus, `PETSC_NULL_CHARACTER` can be
55    used for the display and title input parameters.
56 
57 .seealso: `PetscDrawFlush()`, `PetscDrawDestroy()`, `PetscDrawCreate()`, `PetscDrawOpnOpenGL()`
58 @*/
59 PetscErrorCode PetscDrawOpenX(MPI_Comm comm, const char display[], const char title[], int x, int y, int w, int h, PetscDraw *draw)
60 {
61   PetscFunctionBegin;
62   PetscCall(PetscDrawCreate(comm, display, title, x, y, w, h, draw));
63   PetscCall(PetscDrawSetType(*draw, PETSC_DRAW_X));
64   PetscFunctionReturn(0);
65 }
66