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