1*45f3bb6eSLisandro Dalcin #include <petsc/private/drawimpl.h> /*I "petscdraw.h" I*/ 2*45f3bb6eSLisandro Dalcin 3*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 4*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawCoordinateToPixel_Null" 5*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawCoordinateToPixel_Null(PetscDraw draw,PetscReal x,PetscReal y,PetscInt *i,PetscInt *j) 6*45f3bb6eSLisandro Dalcin { 7*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 8*45f3bb6eSLisandro Dalcin *i = *j = 0; 9*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 10*45f3bb6eSLisandro Dalcin } 11*45f3bb6eSLisandro Dalcin 12*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 13*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawPixelToCoordinate_Null" 14*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawPixelToCoordinate_Null(PetscDraw draw,PetscInt i,PetscInt j,PetscReal *x,PetscReal *y) 15*45f3bb6eSLisandro Dalcin { 16*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 17*45f3bb6eSLisandro Dalcin *x = *y = 0; 18*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 19*45f3bb6eSLisandro Dalcin } 20*45f3bb6eSLisandro Dalcin 21*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 22*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawPoint_Null" 23*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawPoint_Null(PetscDraw draw,PetscReal x,PetscReal y,int c) 24*45f3bb6eSLisandro Dalcin { 25*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 26*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 27*45f3bb6eSLisandro Dalcin } 28*45f3bb6eSLisandro Dalcin 29*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 30*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawPointPixel_Null" 31*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawPointPixel_Null(PetscDraw draw,PetscInt x,PetscInt y,int c) 32*45f3bb6eSLisandro Dalcin { 33*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 34*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 35*45f3bb6eSLisandro Dalcin } 36*45f3bb6eSLisandro Dalcin 37*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 38*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawLineGetWidth_Null" 39*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawLineGetWidth_Null(PetscDraw draw,PetscReal *width) 40*45f3bb6eSLisandro Dalcin { 41*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 42*45f3bb6eSLisandro Dalcin if (width) *width = 0.01; 43*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 44*45f3bb6eSLisandro Dalcin } 45*45f3bb6eSLisandro Dalcin 46*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 47*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawLine_Null" 48*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawLine_Null(PetscDraw draw,PetscReal xl,PetscReal yl,PetscReal xr,PetscReal yr,int cl) 49*45f3bb6eSLisandro Dalcin { 50*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 51*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 52*45f3bb6eSLisandro Dalcin } 53*45f3bb6eSLisandro Dalcin 54*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 55*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawArrow_Null" 56*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawArrow_Null(PetscDraw draw,PetscReal xl,PetscReal yl,PetscReal xr,PetscReal yr,int cl) 57*45f3bb6eSLisandro Dalcin { 58*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 59*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 60*45f3bb6eSLisandro Dalcin } 61*45f3bb6eSLisandro Dalcin 62*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 63*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawRectangle_Null" 64*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawRectangle_Null(PetscDraw draw,PetscReal xl,PetscReal yl,PetscReal xr,PetscReal yr,int c1,int c2,int c3,int c4) 65*45f3bb6eSLisandro Dalcin { 66*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 67*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 68*45f3bb6eSLisandro Dalcin } 69*45f3bb6eSLisandro Dalcin 70*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 71*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawEllipse_Null" 72*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawEllipse_Null(PetscDraw Win,PetscReal x,PetscReal y,PetscReal a,PetscReal b,int c) 73*45f3bb6eSLisandro Dalcin { 74*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 75*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 76*45f3bb6eSLisandro Dalcin } 77*45f3bb6eSLisandro Dalcin 78*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 79*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawTriangle_Null" 80*45f3bb6eSLisandro 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) 81*45f3bb6eSLisandro Dalcin { 82*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 83*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 84*45f3bb6eSLisandro Dalcin } 85*45f3bb6eSLisandro Dalcin 86*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 87*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawStringGetSize_Null" 88*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawStringGetSize_Null(PetscDraw draw,PetscReal *x,PetscReal *y) 89*45f3bb6eSLisandro Dalcin { 90*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 91*45f3bb6eSLisandro Dalcin if (x) *x = 0.01; 92*45f3bb6eSLisandro Dalcin if (y) *y = 0.01; 93*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 94*45f3bb6eSLisandro Dalcin } 95*45f3bb6eSLisandro Dalcin 96*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 97*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawString_Null" 98*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawString_Null(PetscDraw draw,PetscReal x,PetscReal y,int c,const char chrs[]) 99*45f3bb6eSLisandro Dalcin { 100*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 101*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 102*45f3bb6eSLisandro Dalcin } 103*45f3bb6eSLisandro Dalcin 104*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 105*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawStringVertical_Null" 106*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawStringVertical_Null(PetscDraw draw,PetscReal x,PetscReal y,int c,const char chrs[]) 107*45f3bb6eSLisandro Dalcin { 108*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 109*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 110*45f3bb6eSLisandro Dalcin } 111*45f3bb6eSLisandro Dalcin 112*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 113*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawStringBoxed_Null" 114*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawStringBoxed_Null(PetscDraw draw,PetscReal sxl,PetscReal syl,int sc,int bc,const char text[],PetscReal *w,PetscReal *h) 115*45f3bb6eSLisandro Dalcin { 116*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 117*45f3bb6eSLisandro Dalcin if (w) *w = 0.01; 118*45f3bb6eSLisandro Dalcin if (h) *h = 0.01; 119*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 120*45f3bb6eSLisandro Dalcin } 121*45f3bb6eSLisandro Dalcin 122*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 123*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawGetSingleton_Null" 124*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawGetSingleton_Null(PetscDraw draw,PetscDraw *sdraw) 125*45f3bb6eSLisandro Dalcin { 126*45f3bb6eSLisandro Dalcin PetscErrorCode ierr; 127*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 128*45f3bb6eSLisandro Dalcin ierr = PetscDrawOpenNull(PETSC_COMM_SELF,sdraw);CHKERRQ(ierr); 129*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 130*45f3bb6eSLisandro Dalcin } 131*45f3bb6eSLisandro Dalcin 132*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 133*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawRestoreSingleton_Null" 134*45f3bb6eSLisandro Dalcin static PetscErrorCode PetscDrawRestoreSingleton_Null(PetscDraw draw,PetscDraw *sdraw) 135*45f3bb6eSLisandro Dalcin { 136*45f3bb6eSLisandro Dalcin PetscErrorCode ierr; 137*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 138*45f3bb6eSLisandro Dalcin ierr = PetscDrawDestroy(sdraw);CHKERRQ(ierr); 139*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 140*45f3bb6eSLisandro Dalcin } 141*45f3bb6eSLisandro Dalcin 142*45f3bb6eSLisandro Dalcin 143*45f3bb6eSLisandro Dalcin static struct _PetscDrawOps DvOps = { NULL,/*PetscDrawSetDoubleBuffer_Null*/ 144*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawFlush_Null*/ 145*45f3bb6eSLisandro Dalcin PetscDrawLine_Null, 146*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawLineSetWidth_Null*/ 147*45f3bb6eSLisandro Dalcin PetscDrawLineGetWidth_Null, 148*45f3bb6eSLisandro Dalcin PetscDrawPoint_Null, 149*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawPointSetSize_Null*/ 150*45f3bb6eSLisandro Dalcin PetscDrawString_Null, 151*45f3bb6eSLisandro Dalcin PetscDrawStringVertical_Null, 152*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawStringSetSize_Null*/ 153*45f3bb6eSLisandro Dalcin PetscDrawStringGetSize_Null, 154*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawSetViewport_Null*/ 155*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawClear_Null*/ 156*45f3bb6eSLisandro Dalcin PetscDrawRectangle_Null, 157*45f3bb6eSLisandro Dalcin PetscDrawTriangle_Null, 158*45f3bb6eSLisandro Dalcin PetscDrawEllipse_Null, 159*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawGetMouseButton_Null*/ 160*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawPause_Null*/ 161*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawBeginPage_Null*/ 162*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawEndPage_Null*/ 163*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawGetPopup_Null*/ 164*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawSetTitle_Null*/ 165*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawCheckResizedWindow_Null*/ 166*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawResizeWindow_Null*/ 167*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawDestroy_Null*/ 168*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawView_Null*/ 169*45f3bb6eSLisandro Dalcin PetscDrawGetSingleton_Null, 170*45f3bb6eSLisandro Dalcin PetscDrawRestoreSingleton_Null, 171*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawSave_Null*/ 172*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawGetImage_Null*/ 173*45f3bb6eSLisandro Dalcin NULL,/*PetscDrawSetCoordinates_Null*/ 174*45f3bb6eSLisandro Dalcin PetscDrawArrow_Null, 175*45f3bb6eSLisandro Dalcin PetscDrawCoordinateToPixel_Null, 176*45f3bb6eSLisandro Dalcin PetscDrawPixelToCoordinate_Null, 177*45f3bb6eSLisandro Dalcin PetscDrawPointPixel_Null, 178*45f3bb6eSLisandro Dalcin PetscDrawStringBoxed_Null}; 179*45f3bb6eSLisandro Dalcin 180*45f3bb6eSLisandro Dalcin 181*45f3bb6eSLisandro Dalcin /*MC 182*45f3bb6eSLisandro Dalcin PETSC_DRAW_NULL - PETSc graphics device that ignores all draw commands 183*45f3bb6eSLisandro Dalcin 184*45f3bb6eSLisandro Dalcin Level: beginner 185*45f3bb6eSLisandro Dalcin 186*45f3bb6eSLisandro Dalcin .seealso: PetscDrawOpenNull(), PetscDrawIsNull() 187*45f3bb6eSLisandro Dalcin M*/ 188*45f3bb6eSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDrawCreate_Null(PetscDraw); 189*45f3bb6eSLisandro Dalcin 190*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 191*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawCreate_Null" 192*45f3bb6eSLisandro Dalcin PETSC_EXTERN PetscErrorCode PetscDrawCreate_Null(PetscDraw draw) 193*45f3bb6eSLisandro Dalcin { 194*45f3bb6eSLisandro Dalcin PetscErrorCode ierr; 195*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 196*45f3bb6eSLisandro Dalcin draw->pause = 0; 197*45f3bb6eSLisandro Dalcin draw->coor_xl = 0; draw->coor_xr = 1; 198*45f3bb6eSLisandro Dalcin draw->coor_yl = 0; draw->coor_yr = 1; 199*45f3bb6eSLisandro Dalcin draw->port_xl = 0; draw->port_xr = 1; 200*45f3bb6eSLisandro Dalcin draw->port_yl = 0; draw->port_yr = 1; 201*45f3bb6eSLisandro Dalcin ierr = PetscDrawDestroy(&draw->popup);CHKERRQ(ierr); 202*45f3bb6eSLisandro Dalcin 203*45f3bb6eSLisandro Dalcin ierr = PetscMemcpy(draw->ops,&DvOps,sizeof(DvOps));CHKERRQ(ierr); 204*45f3bb6eSLisandro Dalcin draw->data = NULL; 205*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 206*45f3bb6eSLisandro Dalcin } 207*45f3bb6eSLisandro Dalcin 208*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 209*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawOpenNull" 210*45f3bb6eSLisandro Dalcin /*@ 211*45f3bb6eSLisandro Dalcin PetscDrawOpenNull - Opens a null drawing context. All draw commands to 212*45f3bb6eSLisandro Dalcin it are ignored. 213*45f3bb6eSLisandro Dalcin 214*45f3bb6eSLisandro Dalcin Output Parameter: 215*45f3bb6eSLisandro Dalcin . draw - the drawing context 216*45f3bb6eSLisandro Dalcin 217*45f3bb6eSLisandro Dalcin Level: advanced 218*45f3bb6eSLisandro Dalcin @*/ 219*45f3bb6eSLisandro Dalcin PetscErrorCode PetscDrawOpenNull(MPI_Comm comm,PetscDraw *win) 220*45f3bb6eSLisandro Dalcin { 221*45f3bb6eSLisandro Dalcin PetscErrorCode ierr; 222*45f3bb6eSLisandro Dalcin 223*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 224*45f3bb6eSLisandro Dalcin ierr = PetscDrawCreate(comm,NULL,NULL,0,0,1,1,win);CHKERRQ(ierr); 225*45f3bb6eSLisandro Dalcin ierr = PetscDrawSetType(*win,PETSC_DRAW_NULL);CHKERRQ(ierr); 226*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 227*45f3bb6eSLisandro Dalcin } 228*45f3bb6eSLisandro Dalcin 229*45f3bb6eSLisandro Dalcin #undef __FUNCT__ 230*45f3bb6eSLisandro Dalcin #define __FUNCT__ "PetscDrawIsNull" 231*45f3bb6eSLisandro Dalcin /*@ 232*45f3bb6eSLisandro Dalcin PetscDrawIsNull - Returns PETSC_TRUE if draw is a null draw object. 233*45f3bb6eSLisandro Dalcin 234*45f3bb6eSLisandro Dalcin Not collective 235*45f3bb6eSLisandro Dalcin 236*45f3bb6eSLisandro Dalcin Input Parameter: 237*45f3bb6eSLisandro Dalcin . draw - the draw context 238*45f3bb6eSLisandro Dalcin 239*45f3bb6eSLisandro Dalcin Output Parameter: 240*45f3bb6eSLisandro Dalcin . yes - PETSC_TRUE if it is a null draw object; otherwise PETSC_FALSE 241*45f3bb6eSLisandro Dalcin 242*45f3bb6eSLisandro Dalcin Level: advanced 243*45f3bb6eSLisandro Dalcin @*/ 244*45f3bb6eSLisandro Dalcin PetscErrorCode PetscDrawIsNull(PetscDraw draw,PetscBool *yes) 245*45f3bb6eSLisandro Dalcin { 246*45f3bb6eSLisandro Dalcin PetscErrorCode ierr; 247*45f3bb6eSLisandro Dalcin 248*45f3bb6eSLisandro Dalcin PetscFunctionBegin; 249*45f3bb6eSLisandro Dalcin PetscValidHeaderSpecific(draw,PETSC_DRAW_CLASSID,1); 250*45f3bb6eSLisandro Dalcin PetscValidIntPointer(yes,2); 251*45f3bb6eSLisandro Dalcin ierr = PetscObjectTypeCompare((PetscObject)draw,PETSC_DRAW_NULL,yes);CHKERRQ(ierr); 252*45f3bb6eSLisandro Dalcin PetscFunctionReturn(0); 253*45f3bb6eSLisandro Dalcin } 254