xref: /petsc/src/sys/classes/draw/impls/null/drawnull.c (revision 811af0c4b09a35de4306c442f88bd09fdc09897d)
145f3bb6eSLisandro Dalcin #include <petsc/private/drawimpl.h> /*I  "petscdraw.h" I*/
245f3bb6eSLisandro Dalcin 
39371c9d4SSatish Balay static PetscErrorCode PetscDrawCoordinateToPixel_Null(PetscDraw draw, PetscReal x, PetscReal y, int *i, int *j) {
445f3bb6eSLisandro Dalcin   PetscFunctionBegin;
545f3bb6eSLisandro Dalcin   *i = *j = 0;
645f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
745f3bb6eSLisandro Dalcin }
845f3bb6eSLisandro Dalcin 
99371c9d4SSatish Balay static PetscErrorCode PetscDrawPixelToCoordinate_Null(PetscDraw draw, int i, int j, PetscReal *x, PetscReal *y) {
1045f3bb6eSLisandro Dalcin   PetscFunctionBegin;
1145f3bb6eSLisandro Dalcin   *x = *y = 0;
1245f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
1345f3bb6eSLisandro Dalcin }
1445f3bb6eSLisandro Dalcin 
159371c9d4SSatish Balay static PetscErrorCode PetscDrawPoint_Null(PetscDraw draw, PetscReal x, PetscReal y, int c) {
1645f3bb6eSLisandro Dalcin   PetscFunctionBegin;
1745f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
1845f3bb6eSLisandro Dalcin }
1945f3bb6eSLisandro Dalcin 
209371c9d4SSatish Balay static PetscErrorCode PetscDrawPointPixel_Null(PetscDraw draw, int x, int y, int c) {
2145f3bb6eSLisandro Dalcin   PetscFunctionBegin;
2245f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
2345f3bb6eSLisandro Dalcin }
2445f3bb6eSLisandro Dalcin 
259371c9d4SSatish Balay static PetscErrorCode PetscDrawLineGetWidth_Null(PetscDraw draw, PetscReal *width) {
2645f3bb6eSLisandro Dalcin   PetscFunctionBegin;
2745f3bb6eSLisandro Dalcin   if (width) *width = 0.01;
2845f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
2945f3bb6eSLisandro Dalcin }
3045f3bb6eSLisandro Dalcin 
319371c9d4SSatish Balay static PetscErrorCode PetscDrawLine_Null(PetscDraw draw, PetscReal xl, PetscReal yl, PetscReal xr, PetscReal yr, int cl) {
3245f3bb6eSLisandro Dalcin   PetscFunctionBegin;
3345f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
3445f3bb6eSLisandro Dalcin }
3545f3bb6eSLisandro Dalcin 
369371c9d4SSatish Balay static PetscErrorCode PetscDrawArrow_Null(PetscDraw draw, PetscReal xl, PetscReal yl, PetscReal xr, PetscReal yr, int cl) {
3745f3bb6eSLisandro Dalcin   PetscFunctionBegin;
3845f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
3945f3bb6eSLisandro Dalcin }
4045f3bb6eSLisandro Dalcin 
419371c9d4SSatish Balay static PetscErrorCode PetscDrawRectangle_Null(PetscDraw draw, PetscReal xl, PetscReal yl, PetscReal xr, PetscReal yr, int c1, int c2, int c3, int c4) {
4245f3bb6eSLisandro Dalcin   PetscFunctionBegin;
4345f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
4445f3bb6eSLisandro Dalcin }
4545f3bb6eSLisandro Dalcin 
469371c9d4SSatish Balay static PetscErrorCode PetscDrawEllipse_Null(PetscDraw Win, PetscReal x, PetscReal y, PetscReal a, PetscReal b, int c) {
4745f3bb6eSLisandro Dalcin   PetscFunctionBegin;
4845f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
4945f3bb6eSLisandro Dalcin }
5045f3bb6eSLisandro Dalcin 
519371c9d4SSatish Balay static PetscErrorCode PetscDrawTriangle_Null(PetscDraw draw, PetscReal X1, PetscReal Y_1, PetscReal X2, PetscReal Y2, PetscReal X3, PetscReal Y3, int c1, int c2, int c3) {
5245f3bb6eSLisandro Dalcin   PetscFunctionBegin;
5345f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
5445f3bb6eSLisandro Dalcin }
5545f3bb6eSLisandro Dalcin 
569371c9d4SSatish Balay static PetscErrorCode PetscDrawStringGetSize_Null(PetscDraw draw, PetscReal *x, PetscReal *y) {
5745f3bb6eSLisandro Dalcin   PetscFunctionBegin;
5845f3bb6eSLisandro Dalcin   if (x) *x = 0.01;
5945f3bb6eSLisandro Dalcin   if (y) *y = 0.01;
6045f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
6145f3bb6eSLisandro Dalcin }
6245f3bb6eSLisandro Dalcin 
639371c9d4SSatish Balay static PetscErrorCode PetscDrawString_Null(PetscDraw draw, PetscReal x, PetscReal y, int c, const char chrs[]) {
6445f3bb6eSLisandro Dalcin   PetscFunctionBegin;
6545f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
6645f3bb6eSLisandro Dalcin }
6745f3bb6eSLisandro Dalcin 
689371c9d4SSatish Balay static PetscErrorCode PetscDrawStringVertical_Null(PetscDraw draw, PetscReal x, PetscReal y, int c, const char chrs[]) {
6945f3bb6eSLisandro Dalcin   PetscFunctionBegin;
7045f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
7145f3bb6eSLisandro Dalcin }
7245f3bb6eSLisandro Dalcin 
739371c9d4SSatish Balay static PetscErrorCode PetscDrawStringBoxed_Null(PetscDraw draw, PetscReal sxl, PetscReal syl, int sc, int bc, const char text[], PetscReal *w, PetscReal *h) {
7445f3bb6eSLisandro Dalcin   PetscFunctionBegin;
7545f3bb6eSLisandro Dalcin   if (w) *w = 0.01;
7645f3bb6eSLisandro Dalcin   if (h) *h = 0.01;
7745f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
7845f3bb6eSLisandro Dalcin }
7945f3bb6eSLisandro Dalcin 
809371c9d4SSatish Balay static PetscErrorCode PetscDrawGetSingleton_Null(PetscDraw draw, PetscDraw *sdraw) {
8145f3bb6eSLisandro Dalcin   PetscFunctionBegin;
829566063dSJacob Faibussowitsch   PetscCall(PetscDrawOpenNull(PETSC_COMM_SELF, sdraw));
8345f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
8445f3bb6eSLisandro Dalcin }
8545f3bb6eSLisandro Dalcin 
869371c9d4SSatish Balay static PetscErrorCode PetscDrawRestoreSingleton_Null(PetscDraw draw, PetscDraw *sdraw) {
8745f3bb6eSLisandro Dalcin   PetscFunctionBegin;
889566063dSJacob Faibussowitsch   PetscCall(PetscDrawDestroy(sdraw));
8945f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
9045f3bb6eSLisandro Dalcin }
9145f3bb6eSLisandro Dalcin 
9245f3bb6eSLisandro Dalcin static struct _PetscDrawOps DvOps = {NULL, /* PetscDrawSetDoubleBuffer_Null */
9345f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawFlush_Null */
9445f3bb6eSLisandro Dalcin                                      PetscDrawLine_Null,
9545f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawLineSetWidth_Null */
9645f3bb6eSLisandro Dalcin                                      PetscDrawLineGetWidth_Null,
9745f3bb6eSLisandro Dalcin                                      PetscDrawPoint_Null,
9845f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawPointSetSize_Null */
9945f3bb6eSLisandro Dalcin                                      PetscDrawString_Null,
10045f3bb6eSLisandro Dalcin                                      PetscDrawStringVertical_Null,
10145f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawStringSetSize_Null */
10245f3bb6eSLisandro Dalcin                                      PetscDrawStringGetSize_Null,
10345f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawSetViewport_Null */
10445f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawClear_Null */
10545f3bb6eSLisandro Dalcin                                      PetscDrawRectangle_Null,
10645f3bb6eSLisandro Dalcin                                      PetscDrawTriangle_Null,
10745f3bb6eSLisandro Dalcin                                      PetscDrawEllipse_Null,
10845f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawGetMouseButton_Null */
10945f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawPause_Null */
11045f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawBeginPage_Null */
11145f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawEndPage_Null */
11245f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawGetPopup_Null */
11345f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawSetTitle_Null */
11445f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawCheckResizedWindow_Null */
11545f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawResizeWindow_Null */
11645f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawDestroy_Null */
11745f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawView_Null */
11845f3bb6eSLisandro Dalcin                                      PetscDrawGetSingleton_Null,
11945f3bb6eSLisandro Dalcin                                      PetscDrawRestoreSingleton_Null,
12045f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawSave_Null */
12145f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawGetImage_Null */
12245f3bb6eSLisandro Dalcin                                      NULL, /* PetscDrawSetCoordinates_Null */
12345f3bb6eSLisandro Dalcin                                      PetscDrawArrow_Null,
12445f3bb6eSLisandro Dalcin                                      PetscDrawCoordinateToPixel_Null,
12545f3bb6eSLisandro Dalcin                                      PetscDrawPixelToCoordinate_Null,
12645f3bb6eSLisandro Dalcin                                      PetscDrawPointPixel_Null,
12745f3bb6eSLisandro Dalcin                                      PetscDrawStringBoxed_Null};
12845f3bb6eSLisandro Dalcin 
12945f3bb6eSLisandro Dalcin /*MC
13045f3bb6eSLisandro Dalcin      PETSC_DRAW_NULL - PETSc graphics device that ignores all draw commands
13145f3bb6eSLisandro Dalcin 
13245f3bb6eSLisandro Dalcin    Level: beginner
13345f3bb6eSLisandro Dalcin 
134*811af0c4SBarry Smith    Note:
135*811af0c4SBarry Smith     A `PETSC_DRAW_NULL` is useful in places where `PetscDraw` routines are called but no graphics window, for example, is available.
136*811af0c4SBarry Smith 
137*811af0c4SBarry Smith .seealso: `PetscDraw`, `PetscDrawOpenNull()`, `PETSC_DRAW_X`, `PetscDrawOpenNull()`, `PetscDrawIsNull()`
13845f3bb6eSLisandro Dalcin M*/
13945f3bb6eSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDrawCreate_Null(PetscDraw);
14045f3bb6eSLisandro Dalcin 
1419371c9d4SSatish Balay PETSC_EXTERN PetscErrorCode PetscDrawCreate_Null(PetscDraw draw) {
14245f3bb6eSLisandro Dalcin   PetscFunctionBegin;
14345f3bb6eSLisandro Dalcin   draw->pause   = 0;
1449371c9d4SSatish Balay   draw->coor_xl = 0;
1459371c9d4SSatish Balay   draw->coor_xr = 1;
1469371c9d4SSatish Balay   draw->coor_yl = 0;
1479371c9d4SSatish Balay   draw->coor_yr = 1;
1489371c9d4SSatish Balay   draw->port_xl = 0;
1499371c9d4SSatish Balay   draw->port_xr = 1;
1509371c9d4SSatish Balay   draw->port_yl = 0;
1519371c9d4SSatish Balay   draw->port_yr = 1;
1529566063dSJacob Faibussowitsch   PetscCall(PetscDrawDestroy(&draw->popup));
15345f3bb6eSLisandro Dalcin 
1549566063dSJacob Faibussowitsch   PetscCall(PetscMemcpy(draw->ops, &DvOps, sizeof(DvOps)));
15545f3bb6eSLisandro Dalcin   draw->data = NULL;
15645f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
15745f3bb6eSLisandro Dalcin }
15845f3bb6eSLisandro Dalcin 
15945f3bb6eSLisandro Dalcin /*@
16045f3bb6eSLisandro Dalcin    PetscDrawOpenNull - Opens a null drawing context. All draw commands to
16145f3bb6eSLisandro Dalcin    it are ignored.
16245f3bb6eSLisandro Dalcin 
1636b867d5aSJose E. Roman    Input Parameter:
1646b867d5aSJose E. Roman .  comm - MPI communicator
1656b867d5aSJose E. Roman 
16645f3bb6eSLisandro Dalcin    Output Parameter:
16745f3bb6eSLisandro Dalcin .  draw - the drawing context
16845f3bb6eSLisandro Dalcin 
16945f3bb6eSLisandro Dalcin    Level: advanced
170*811af0c4SBarry Smith 
171*811af0c4SBarry Smith .seealso: `PetscDraw`, `PetscDrawIsNull()`, `PETSC_DRAW_NULL`, `PetscDrawOpenX()`, `PetscDrawIsNull()`
17245f3bb6eSLisandro Dalcin @*/
1739371c9d4SSatish Balay PetscErrorCode PetscDrawOpenNull(MPI_Comm comm, PetscDraw *win) {
17445f3bb6eSLisandro Dalcin   PetscFunctionBegin;
1759566063dSJacob Faibussowitsch   PetscCall(PetscDrawCreate(comm, NULL, NULL, 0, 0, 1, 1, win));
1769566063dSJacob Faibussowitsch   PetscCall(PetscDrawSetType(*win, PETSC_DRAW_NULL));
17745f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
17845f3bb6eSLisandro Dalcin }
17945f3bb6eSLisandro Dalcin 
18045f3bb6eSLisandro Dalcin /*@
181*811af0c4SBarry Smith    PetscDrawIsNull - Returns `PETSC_TRUE` if draw is a null draw object.
18245f3bb6eSLisandro Dalcin 
18345f3bb6eSLisandro Dalcin    Not collective
18445f3bb6eSLisandro Dalcin 
18545f3bb6eSLisandro Dalcin    Input Parameter:
18645f3bb6eSLisandro Dalcin .  draw - the draw context
18745f3bb6eSLisandro Dalcin 
18845f3bb6eSLisandro Dalcin    Output Parameter:
189*811af0c4SBarry Smith .  yes - `PETSC_TRUE` if it is a null draw object; otherwise `PETSC_FALSE`
19045f3bb6eSLisandro Dalcin 
19145f3bb6eSLisandro Dalcin    Level: advanced
192*811af0c4SBarry Smith 
193*811af0c4SBarry Smith .seealso: `PetscDraw`, `PETSC_DRAW_NULL`, `PetscDrawOpenX()`, `PetscDrawIsNull()`
19445f3bb6eSLisandro Dalcin @*/
1959371c9d4SSatish Balay PetscErrorCode PetscDrawIsNull(PetscDraw draw, PetscBool *yes) {
19645f3bb6eSLisandro Dalcin   PetscFunctionBegin;
19745f3bb6eSLisandro Dalcin   PetscValidHeaderSpecific(draw, PETSC_DRAW_CLASSID, 1);
198064a246eSJacob Faibussowitsch   PetscValidBoolPointer(yes, 2);
1999566063dSJacob Faibussowitsch   PetscCall(PetscObjectTypeCompare((PetscObject)draw, PETSC_DRAW_NULL, yes));
20045f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
20145f3bb6eSLisandro Dalcin }
202