145f3bb6eSLisandro Dalcin #include <petsc/private/drawimpl.h> /*I "petscdraw.h" I*/ 245f3bb6eSLisandro Dalcin 345f3bb6eSLisandro Dalcin #undef __FUNCT__ 445f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawCoordinateToPixel_Null" 5*a7e8706aSLisandro Dalcin static PetscErrorCode PetscDrawCoordinateToPixel_Null(PetscDraw draw,PetscReal x,PetscReal y,int *i,int *j) 645f3bb6eSLisandro Dalcin { 745f3bb6eSLisandro Dalcin PetscFunctionBegin; 845f3bb6eSLisandro Dalcin *i = *j = 0; 945f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 1045f3bb6eSLisandro Dalcin } 1145f3bb6eSLisandro Dalcin 1245f3bb6eSLisandro Dalcin #undef __FUNCT__ 1345f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawPixelToCoordinate_Null" 14*a7e8706aSLisandro Dalcin static PetscErrorCode PetscDrawPixelToCoordinate_Null(PetscDraw draw,int i,int j,PetscReal *x,PetscReal *y) 1545f3bb6eSLisandro Dalcin { 1645f3bb6eSLisandro Dalcin PetscFunctionBegin; 1745f3bb6eSLisandro Dalcin *x = *y = 0; 1845f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 1945f3bb6eSLisandro Dalcin } 2045f3bb6eSLisandro Dalcin 2145f3bb6eSLisandro Dalcin #undef __FUNCT__ 2245f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawPoint_Null" 2345f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawPoint_Null(PetscDraw draw,PetscReal x,PetscReal y,int c) 2445f3bb6eSLisandro Dalcin { 2545f3bb6eSLisandro Dalcin PetscFunctionBegin; 2645f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 2745f3bb6eSLisandro Dalcin } 2845f3bb6eSLisandro Dalcin 2945f3bb6eSLisandro Dalcin #undef __FUNCT__ 3045f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawPointPixel_Null" 31*a7e8706aSLisandro Dalcin static PetscErrorCode PetscDrawPointPixel_Null(PetscDraw draw,int x,int y,int c) 3245f3bb6eSLisandro Dalcin { 3345f3bb6eSLisandro Dalcin PetscFunctionBegin; 3445f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 3545f3bb6eSLisandro Dalcin } 3645f3bb6eSLisandro Dalcin 3745f3bb6eSLisandro Dalcin #undef __FUNCT__ 3845f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawLineGetWidth_Null" 3945f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawLineGetWidth_Null(PetscDraw draw,PetscReal *width) 4045f3bb6eSLisandro Dalcin { 4145f3bb6eSLisandro Dalcin PetscFunctionBegin; 4245f3bb6eSLisandro Dalcin if (width) *width = 0.01; 4345f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 4445f3bb6eSLisandro Dalcin } 4545f3bb6eSLisandro Dalcin 4645f3bb6eSLisandro Dalcin #undef __FUNCT__ 4745f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawLine_Null" 4845f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawLine_Null(PetscDraw draw,PetscReal xl,PetscReal yl,PetscReal xr,PetscReal yr,int cl) 4945f3bb6eSLisandro Dalcin { 5045f3bb6eSLisandro Dalcin PetscFunctionBegin; 5145f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 5245f3bb6eSLisandro Dalcin } 5345f3bb6eSLisandro Dalcin 5445f3bb6eSLisandro Dalcin #undef __FUNCT__ 5545f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawArrow_Null" 5645f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawArrow_Null(PetscDraw draw,PetscReal xl,PetscReal yl,PetscReal xr,PetscReal yr,int cl) 5745f3bb6eSLisandro Dalcin { 5845f3bb6eSLisandro Dalcin PetscFunctionBegin; 5945f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 6045f3bb6eSLisandro Dalcin } 6145f3bb6eSLisandro Dalcin 6245f3bb6eSLisandro Dalcin #undef __FUNCT__ 6345f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawRectangle_Null" 6445f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawRectangle_Null(PetscDraw draw,PetscReal xl,PetscReal yl,PetscReal xr,PetscReal yr,int c1,int c2,int c3,int c4) 6545f3bb6eSLisandro Dalcin { 6645f3bb6eSLisandro Dalcin PetscFunctionBegin; 6745f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 6845f3bb6eSLisandro Dalcin } 6945f3bb6eSLisandro Dalcin 7045f3bb6eSLisandro Dalcin #undef __FUNCT__ 7145f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawEllipse_Null" 7245f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawEllipse_Null(PetscDraw Win,PetscReal x,PetscReal y,PetscReal a,PetscReal b,int c) 7345f3bb6eSLisandro Dalcin { 7445f3bb6eSLisandro Dalcin PetscFunctionBegin; 7545f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 7645f3bb6eSLisandro Dalcin } 7745f3bb6eSLisandro Dalcin 7845f3bb6eSLisandro Dalcin #undef __FUNCT__ 7945f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawTriangle_Null" 8045f3bb6eSLisandro Dalcin 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) 8145f3bb6eSLisandro Dalcin { 8245f3bb6eSLisandro Dalcin PetscFunctionBegin; 8345f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 8445f3bb6eSLisandro Dalcin } 8545f3bb6eSLisandro Dalcin 8645f3bb6eSLisandro Dalcin #undef __FUNCT__ 8745f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawStringGetSize_Null" 8845f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawStringGetSize_Null(PetscDraw draw,PetscReal *x,PetscReal *y) 8945f3bb6eSLisandro Dalcin { 9045f3bb6eSLisandro Dalcin PetscFunctionBegin; 9145f3bb6eSLisandro Dalcin if (x) *x = 0.01; 9245f3bb6eSLisandro Dalcin if (y) *y = 0.01; 9345f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 9445f3bb6eSLisandro Dalcin } 9545f3bb6eSLisandro Dalcin 9645f3bb6eSLisandro Dalcin #undef __FUNCT__ 9745f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawString_Null" 9845f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawString_Null(PetscDraw draw,PetscReal x,PetscReal y,int c,const char chrs[]) 9945f3bb6eSLisandro Dalcin { 10045f3bb6eSLisandro Dalcin PetscFunctionBegin; 10145f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 10245f3bb6eSLisandro Dalcin } 10345f3bb6eSLisandro Dalcin 10445f3bb6eSLisandro Dalcin #undef __FUNCT__ 10545f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawStringVertical_Null" 10645f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawStringVertical_Null(PetscDraw draw,PetscReal x,PetscReal y,int c,const char chrs[]) 10745f3bb6eSLisandro Dalcin { 10845f3bb6eSLisandro Dalcin PetscFunctionBegin; 10945f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 11045f3bb6eSLisandro Dalcin } 11145f3bb6eSLisandro Dalcin 11245f3bb6eSLisandro Dalcin #undef __FUNCT__ 11345f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawStringBoxed_Null" 11445f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawStringBoxed_Null(PetscDraw draw,PetscReal sxl,PetscReal syl,int sc,int bc,const char text[],PetscReal *w,PetscReal *h) 11545f3bb6eSLisandro Dalcin { 11645f3bb6eSLisandro Dalcin PetscFunctionBegin; 11745f3bb6eSLisandro Dalcin if (w) *w = 0.01; 11845f3bb6eSLisandro Dalcin if (h) *h = 0.01; 11945f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 12045f3bb6eSLisandro Dalcin } 12145f3bb6eSLisandro Dalcin 12245f3bb6eSLisandro Dalcin #undef __FUNCT__ 12345f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawGetSingleton_Null" 12445f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawGetSingleton_Null(PetscDraw draw,PetscDraw *sdraw) 12545f3bb6eSLisandro Dalcin { 12645f3bb6eSLisandro Dalcin PetscErrorCode ierr; 12745f3bb6eSLisandro Dalcin PetscFunctionBegin; 12845f3bb6eSLisandro Dalcin ierr = PetscDrawOpenNull(PETSC_COMM_SELF,sdraw);CHKERRQ(ierr); 12945f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 13045f3bb6eSLisandro Dalcin } 13145f3bb6eSLisandro Dalcin 13245f3bb6eSLisandro Dalcin #undef __FUNCT__ 13345f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawRestoreSingleton_Null" 13445f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawRestoreSingleton_Null(PetscDraw draw,PetscDraw *sdraw) 13545f3bb6eSLisandro Dalcin { 13645f3bb6eSLisandro Dalcin PetscErrorCode ierr; 13745f3bb6eSLisandro Dalcin PetscFunctionBegin; 13845f3bb6eSLisandro Dalcin ierr = PetscDrawDestroy(sdraw);CHKERRQ(ierr); 13945f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 14045f3bb6eSLisandro Dalcin } 14145f3bb6eSLisandro Dalcin 14245f3bb6eSLisandro Dalcin 14345f3bb6eSLisandro Dalcin static struct _PetscDrawOps DvOps = { NULL,/*PetscDrawSetDoubleBuffer_Null*/ 14445f3bb6eSLisandro Dalcin NULL,/*PetscDrawFlush_Null*/ 14545f3bb6eSLisandro Dalcin PetscDrawLine_Null, 14645f3bb6eSLisandro Dalcin NULL,/*PetscDrawLineSetWidth_Null*/ 14745f3bb6eSLisandro Dalcin PetscDrawLineGetWidth_Null, 14845f3bb6eSLisandro Dalcin PetscDrawPoint_Null, 14945f3bb6eSLisandro Dalcin NULL,/*PetscDrawPointSetSize_Null*/ 15045f3bb6eSLisandro Dalcin PetscDrawString_Null, 15145f3bb6eSLisandro Dalcin PetscDrawStringVertical_Null, 15245f3bb6eSLisandro Dalcin NULL,/*PetscDrawStringSetSize_Null*/ 15345f3bb6eSLisandro Dalcin PetscDrawStringGetSize_Null, 15445f3bb6eSLisandro Dalcin NULL,/*PetscDrawSetViewport_Null*/ 15545f3bb6eSLisandro Dalcin NULL,/*PetscDrawClear_Null*/ 15645f3bb6eSLisandro Dalcin PetscDrawRectangle_Null, 15745f3bb6eSLisandro Dalcin PetscDrawTriangle_Null, 15845f3bb6eSLisandro Dalcin PetscDrawEllipse_Null, 15945f3bb6eSLisandro Dalcin NULL,/*PetscDrawGetMouseButton_Null*/ 16045f3bb6eSLisandro Dalcin NULL,/*PetscDrawPause_Null*/ 16145f3bb6eSLisandro Dalcin NULL,/*PetscDrawBeginPage_Null*/ 16245f3bb6eSLisandro Dalcin NULL,/*PetscDrawEndPage_Null*/ 16345f3bb6eSLisandro Dalcin NULL,/*PetscDrawGetPopup_Null*/ 16445f3bb6eSLisandro Dalcin NULL,/*PetscDrawSetTitle_Null*/ 16545f3bb6eSLisandro Dalcin NULL,/*PetscDrawCheckResizedWindow_Null*/ 16645f3bb6eSLisandro Dalcin NULL,/*PetscDrawResizeWindow_Null*/ 16745f3bb6eSLisandro Dalcin NULL,/*PetscDrawDestroy_Null*/ 16845f3bb6eSLisandro Dalcin NULL,/*PetscDrawView_Null*/ 16945f3bb6eSLisandro Dalcin PetscDrawGetSingleton_Null, 17045f3bb6eSLisandro Dalcin PetscDrawRestoreSingleton_Null, 17145f3bb6eSLisandro Dalcin NULL,/*PetscDrawSave_Null*/ 17245f3bb6eSLisandro Dalcin NULL,/*PetscDrawGetImage_Null*/ 17345f3bb6eSLisandro Dalcin NULL,/*PetscDrawSetCoordinates_Null*/ 17445f3bb6eSLisandro Dalcin PetscDrawArrow_Null, 17545f3bb6eSLisandro Dalcin PetscDrawCoordinateToPixel_Null, 17645f3bb6eSLisandro Dalcin PetscDrawPixelToCoordinate_Null, 17745f3bb6eSLisandro Dalcin PetscDrawPointPixel_Null, 17845f3bb6eSLisandro Dalcin PetscDrawStringBoxed_Null}; 17945f3bb6eSLisandro Dalcin 18045f3bb6eSLisandro Dalcin 18145f3bb6eSLisandro Dalcin /*MC 18245f3bb6eSLisandro Dalcin PETSC_DRAW_NULL - PETSc graphics device that ignores all draw commands 18345f3bb6eSLisandro Dalcin 18445f3bb6eSLisandro Dalcin Level: beginner 18545f3bb6eSLisandro Dalcin 18645f3bb6eSLisandro Dalcin .seealso: PetscDrawOpenNull(), PetscDrawIsNull() 18745f3bb6eSLisandro Dalcin M*/ 18845f3bb6eSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDrawCreate_Null(PetscDraw); 18945f3bb6eSLisandro Dalcin 19045f3bb6eSLisandro Dalcin #undef __FUNCT__ 19145f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawCreate_Null" 19245f3bb6eSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDrawCreate_Null(PetscDraw draw) 19345f3bb6eSLisandro Dalcin { 19445f3bb6eSLisandro Dalcin PetscErrorCode ierr; 19545f3bb6eSLisandro Dalcin PetscFunctionBegin; 19645f3bb6eSLisandro Dalcin draw->pause = 0; 19745f3bb6eSLisandro Dalcin draw->coor_xl = 0; draw->coor_xr = 1; 19845f3bb6eSLisandro Dalcin draw->coor_yl = 0; draw->coor_yr = 1; 19945f3bb6eSLisandro Dalcin draw->port_xl = 0; draw->port_xr = 1; 20045f3bb6eSLisandro Dalcin draw->port_yl = 0; draw->port_yr = 1; 20145f3bb6eSLisandro Dalcin ierr = PetscDrawDestroy(&draw->popup);CHKERRQ(ierr); 20245f3bb6eSLisandro Dalcin 20345f3bb6eSLisandro Dalcin ierr = PetscMemcpy(draw->ops,&DvOps,sizeof(DvOps));CHKERRQ(ierr); 20445f3bb6eSLisandro Dalcin draw->data = NULL; 20545f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 20645f3bb6eSLisandro Dalcin } 20745f3bb6eSLisandro Dalcin 20845f3bb6eSLisandro Dalcin #undef __FUNCT__ 20945f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawOpenNull" 21045f3bb6eSLisandro Dalcin /*@ 21145f3bb6eSLisandro Dalcin PetscDrawOpenNull - Opens a null drawing context. All draw commands to 21245f3bb6eSLisandro Dalcin it are ignored. 21345f3bb6eSLisandro Dalcin 21445f3bb6eSLisandro Dalcin Output Parameter: 21545f3bb6eSLisandro Dalcin . draw - the drawing context 21645f3bb6eSLisandro Dalcin 21745f3bb6eSLisandro Dalcin Level: advanced 21845f3bb6eSLisandro Dalcin @*/ 21945f3bb6eSLisandro Dalcin PetscErrorCode PetscDrawOpenNull(MPI_Comm comm,PetscDraw *win) 22045f3bb6eSLisandro Dalcin { 22145f3bb6eSLisandro Dalcin PetscErrorCode ierr; 22245f3bb6eSLisandro Dalcin 22345f3bb6eSLisandro Dalcin PetscFunctionBegin; 22445f3bb6eSLisandro Dalcin ierr = PetscDrawCreate(comm,NULL,NULL,0,0,1,1,win);CHKERRQ(ierr); 22545f3bb6eSLisandro Dalcin ierr = PetscDrawSetType(*win,PETSC_DRAW_NULL);CHKERRQ(ierr); 22645f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 22745f3bb6eSLisandro Dalcin } 22845f3bb6eSLisandro Dalcin 22945f3bb6eSLisandro Dalcin #undef __FUNCT__ 23045f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawIsNull" 23145f3bb6eSLisandro Dalcin /*@ 23245f3bb6eSLisandro Dalcin PetscDrawIsNull - Returns PETSC_TRUE if draw is a null draw object. 23345f3bb6eSLisandro Dalcin 23445f3bb6eSLisandro Dalcin Not collective 23545f3bb6eSLisandro Dalcin 23645f3bb6eSLisandro Dalcin Input Parameter: 23745f3bb6eSLisandro Dalcin . draw - the draw context 23845f3bb6eSLisandro Dalcin 23945f3bb6eSLisandro Dalcin Output Parameter: 24045f3bb6eSLisandro Dalcin . yes - PETSC_TRUE if it is a null draw object; otherwise PETSC_FALSE 24145f3bb6eSLisandro Dalcin 24245f3bb6eSLisandro Dalcin Level: advanced 24345f3bb6eSLisandro Dalcin @*/ 24445f3bb6eSLisandro Dalcin PetscErrorCode PetscDrawIsNull(PetscDraw draw,PetscBool *yes) 24545f3bb6eSLisandro Dalcin { 24645f3bb6eSLisandro Dalcin PetscErrorCode ierr; 24745f3bb6eSLisandro Dalcin 24845f3bb6eSLisandro Dalcin PetscFunctionBegin; 24945f3bb6eSLisandro Dalcin PetscValidHeaderSpecific(draw,PETSC_DRAW_CLASSID,1); 25045f3bb6eSLisandro Dalcin PetscValidIntPointer(yes,2); 25145f3bb6eSLisandro Dalcin ierr = PetscObjectTypeCompare((PetscObject)draw,PETSC_DRAW_NULL,yes);CHKERRQ(ierr); 25245f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 25345f3bb6eSLisandro Dalcin } 254