xref: /petsc/src/sys/classes/draw/impls/null/drawnull.c (revision 9371c9d470a9602b6d10a8bf50c9b2280a79e45a)
145f3bb6eSLisandro Dalcin #include <petsc/private/drawimpl.h> /*I  "petscdraw.h" I*/
245f3bb6eSLisandro Dalcin 
3*9371c9d4SSatish 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 
9*9371c9d4SSatish 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 
15*9371c9d4SSatish Balay static PetscErrorCode PetscDrawPoint_Null(PetscDraw draw, PetscReal x, PetscReal y, int c) {
1645f3bb6eSLisandro Dalcin   PetscFunctionBegin;
1745f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
1845f3bb6eSLisandro Dalcin }
1945f3bb6eSLisandro Dalcin 
20*9371c9d4SSatish Balay static PetscErrorCode PetscDrawPointPixel_Null(PetscDraw draw, int x, int y, int c) {
2145f3bb6eSLisandro Dalcin   PetscFunctionBegin;
2245f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
2345f3bb6eSLisandro Dalcin }
2445f3bb6eSLisandro Dalcin 
25*9371c9d4SSatish 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 
31*9371c9d4SSatish 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 
36*9371c9d4SSatish 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 
41*9371c9d4SSatish 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 
46*9371c9d4SSatish 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 
51*9371c9d4SSatish 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 
56*9371c9d4SSatish 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 
63*9371c9d4SSatish 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 
68*9371c9d4SSatish 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 
73*9371c9d4SSatish 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 
80*9371c9d4SSatish 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 
86*9371c9d4SSatish 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 
134db781477SPatrick Sanan .seealso: `PetscDrawOpenNull()`, `PetscDrawIsNull()`
13545f3bb6eSLisandro Dalcin M*/
13645f3bb6eSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDrawCreate_Null(PetscDraw);
13745f3bb6eSLisandro Dalcin 
138*9371c9d4SSatish Balay PETSC_EXTERN PetscErrorCode PetscDrawCreate_Null(PetscDraw draw) {
13945f3bb6eSLisandro Dalcin   PetscFunctionBegin;
14045f3bb6eSLisandro Dalcin   draw->pause   = 0;
141*9371c9d4SSatish Balay   draw->coor_xl = 0;
142*9371c9d4SSatish Balay   draw->coor_xr = 1;
143*9371c9d4SSatish Balay   draw->coor_yl = 0;
144*9371c9d4SSatish Balay   draw->coor_yr = 1;
145*9371c9d4SSatish Balay   draw->port_xl = 0;
146*9371c9d4SSatish Balay   draw->port_xr = 1;
147*9371c9d4SSatish Balay   draw->port_yl = 0;
148*9371c9d4SSatish Balay   draw->port_yr = 1;
1499566063dSJacob Faibussowitsch   PetscCall(PetscDrawDestroy(&draw->popup));
15045f3bb6eSLisandro Dalcin 
1519566063dSJacob Faibussowitsch   PetscCall(PetscMemcpy(draw->ops, &DvOps, sizeof(DvOps)));
15245f3bb6eSLisandro Dalcin   draw->data = NULL;
15345f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
15445f3bb6eSLisandro Dalcin }
15545f3bb6eSLisandro Dalcin 
15645f3bb6eSLisandro Dalcin /*@
15745f3bb6eSLisandro Dalcin    PetscDrawOpenNull - Opens a null drawing context. All draw commands to
15845f3bb6eSLisandro Dalcin    it are ignored.
15945f3bb6eSLisandro Dalcin 
1606b867d5aSJose E. Roman    Input Parameter:
1616b867d5aSJose E. Roman .  comm - MPI communicator
1626b867d5aSJose E. Roman 
16345f3bb6eSLisandro Dalcin    Output Parameter:
16445f3bb6eSLisandro Dalcin .  draw - the drawing context
16545f3bb6eSLisandro Dalcin 
16645f3bb6eSLisandro Dalcin    Level: advanced
16745f3bb6eSLisandro Dalcin @*/
168*9371c9d4SSatish Balay PetscErrorCode PetscDrawOpenNull(MPI_Comm comm, PetscDraw *win) {
16945f3bb6eSLisandro Dalcin   PetscFunctionBegin;
1709566063dSJacob Faibussowitsch   PetscCall(PetscDrawCreate(comm, NULL, NULL, 0, 0, 1, 1, win));
1719566063dSJacob Faibussowitsch   PetscCall(PetscDrawSetType(*win, PETSC_DRAW_NULL));
17245f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
17345f3bb6eSLisandro Dalcin }
17445f3bb6eSLisandro Dalcin 
17545f3bb6eSLisandro Dalcin /*@
17645f3bb6eSLisandro Dalcin    PetscDrawIsNull - Returns PETSC_TRUE if draw is a null draw object.
17745f3bb6eSLisandro Dalcin 
17845f3bb6eSLisandro Dalcin    Not collective
17945f3bb6eSLisandro Dalcin 
18045f3bb6eSLisandro Dalcin    Input Parameter:
18145f3bb6eSLisandro Dalcin .  draw - the draw context
18245f3bb6eSLisandro Dalcin 
18345f3bb6eSLisandro Dalcin    Output Parameter:
18445f3bb6eSLisandro Dalcin .  yes - PETSC_TRUE if it is a null draw object; otherwise PETSC_FALSE
18545f3bb6eSLisandro Dalcin 
18645f3bb6eSLisandro Dalcin    Level: advanced
18745f3bb6eSLisandro Dalcin @*/
188*9371c9d4SSatish Balay PetscErrorCode PetscDrawIsNull(PetscDraw draw, PetscBool *yes) {
18945f3bb6eSLisandro Dalcin   PetscFunctionBegin;
19045f3bb6eSLisandro Dalcin   PetscValidHeaderSpecific(draw, PETSC_DRAW_CLASSID, 1);
191064a246eSJacob Faibussowitsch   PetscValidBoolPointer(yes, 2);
1929566063dSJacob Faibussowitsch   PetscCall(PetscObjectTypeCompare((PetscObject)draw, PETSC_DRAW_NULL, yes));
19345f3bb6eSLisandro Dalcin   PetscFunctionReturn(0);
19445f3bb6eSLisandro Dalcin }
195