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