178e9f83eSLisandro Dalcin 278e9f83eSLisandro Dalcin /* 378e9f83eSLisandro Dalcin Provides the calling sequences for all the basic PetscDraw routines. 478e9f83eSLisandro Dalcin */ 578e9f83eSLisandro Dalcin #include <petsc-private/drawimpl.h> /*I "petscdraw.h" I*/ 6*73f7a4c5SBarry Smith const char *const PetscDrawMarkerTypes[] = {"X","POINT","PetscDrawMarkerType","PETSC_DRAW_MARKER_",0}; 778e9f83eSLisandro Dalcin 878e9f83eSLisandro Dalcin #undef __FUNCT__ 978e9f83eSLisandro Dalcin #define __FUNCT__ "PetscDrawMarker" 1078e9f83eSLisandro Dalcin /*@ 1178e9f83eSLisandro Dalcin PetscDrawMarker - PetscDraws a marker onto a drawable. 1278e9f83eSLisandro Dalcin 1378e9f83eSLisandro Dalcin Not collective 1478e9f83eSLisandro Dalcin 1578e9f83eSLisandro Dalcin Input Parameters: 1678e9f83eSLisandro Dalcin + draw - the drawing context 1778e9f83eSLisandro Dalcin . xl,yl - the coordinates of the marker 1878e9f83eSLisandro Dalcin - cl - the color of the marker 1978e9f83eSLisandro Dalcin 2078e9f83eSLisandro Dalcin Level: beginner 2178e9f83eSLisandro Dalcin 2278e9f83eSLisandro Dalcin Concepts: marker^drawing 2378e9f83eSLisandro Dalcin Concepts: drawing^marker 2478e9f83eSLisandro Dalcin 2578e9f83eSLisandro Dalcin .seealso: PetscDrawPoint() 2678e9f83eSLisandro Dalcin 2778e9f83eSLisandro Dalcin @*/ 2878e9f83eSLisandro Dalcin PetscErrorCode PetscDrawMarker(PetscDraw draw,PetscReal xl,PetscReal yl,int cl) 2978e9f83eSLisandro Dalcin { 3078e9f83eSLisandro Dalcin PetscErrorCode ierr; 3178e9f83eSLisandro Dalcin PetscBool isnull; 3278e9f83eSLisandro Dalcin 3378e9f83eSLisandro Dalcin PetscFunctionBegin; 3478e9f83eSLisandro Dalcin PetscValidHeaderSpecific(draw,PETSC_DRAW_CLASSID,1); 3578e9f83eSLisandro Dalcin ierr = PetscDrawIsNull(draw,&isnull);CHKERRQ(ierr); 3678e9f83eSLisandro Dalcin if (isnull) PetscFunctionReturn(0); 37*73f7a4c5SBarry Smith if (draw->markertype == PETSC_DRAW_MARKER_X){ 3878e9f83eSLisandro Dalcin if (draw->ops->coordinatetopixel && draw->ops->pointpixel) { 3978e9f83eSLisandro Dalcin PetscInt i,j,k; 4078e9f83eSLisandro Dalcin ierr = (*draw->ops->coordinatetopixel)(draw,xl,yl,&i,&j); 4178e9f83eSLisandro Dalcin for (k=-2; k<=2; k++) { 4278e9f83eSLisandro Dalcin ierr = (*draw->ops->pointpixel)(draw,i+k,j+k,cl); 4378e9f83eSLisandro Dalcin ierr = (*draw->ops->pointpixel)(draw,i+k,j-k,cl); 4478e9f83eSLisandro Dalcin } 4578e9f83eSLisandro Dalcin } else if (draw->ops->string) { 4678e9f83eSLisandro Dalcin ierr = (*draw->ops->string)(draw,xl,yl,cl,"x");CHKERRQ(ierr); 47*73f7a4c5SBarry Smith } else SETERRQ(PetscObjectComm((PetscObject)draw),PETSC_ERR_SUP,"No support for drawing marker type X"); 48*73f7a4c5SBarry Smith } else { 49*73f7a4c5SBarry Smith ierr = (*draw->ops->point)(draw,xl,yl,cl);CHKERRQ(ierr); 50*73f7a4c5SBarry Smith } 51*73f7a4c5SBarry Smith PetscFunctionReturn(0); 52*73f7a4c5SBarry Smith } 53*73f7a4c5SBarry Smith 54*73f7a4c5SBarry Smith #undef __FUNCT__ 55*73f7a4c5SBarry Smith #define __FUNCT__ "PetscDrawSetMarkerType" 56*73f7a4c5SBarry Smith /*@ 57*73f7a4c5SBarry Smith PetscDrawSetMarkerType - sets the type of marker to display with PetscDrawMarker() 58*73f7a4c5SBarry Smith 59*73f7a4c5SBarry Smith Not collective 60*73f7a4c5SBarry Smith 61*73f7a4c5SBarry Smith Input Parameters: 62*73f7a4c5SBarry Smith + draw - the drawing context 63*73f7a4c5SBarry Smith - mtype - either PETSC_DRAW_MARKER_X (default) or PETSC_DRAW_MARKER_POINT 64*73f7a4c5SBarry Smith 65*73f7a4c5SBarry Smith Options Database: 66*73f7a4c5SBarry Smith . -draw_marker_type - x or point 67*73f7a4c5SBarry Smith 68*73f7a4c5SBarry Smith Level: beginner 69*73f7a4c5SBarry Smith 70*73f7a4c5SBarry Smith Concepts: marker^drawing 71*73f7a4c5SBarry Smith Concepts: drawing^marker 72*73f7a4c5SBarry Smith 73*73f7a4c5SBarry Smith .seealso: PetscDrawPoint(), PetscDrawMarker() 74*73f7a4c5SBarry Smith 75*73f7a4c5SBarry Smith @*/ 76*73f7a4c5SBarry Smith PetscErrorCode PetscDrawSetMarkerType(PetscDraw draw,PetscDrawMarkerType mtype) 77*73f7a4c5SBarry Smith { 78*73f7a4c5SBarry Smith PetscFunctionBegin; 79*73f7a4c5SBarry Smith PetscValidHeaderSpecific(draw,PETSC_DRAW_CLASSID,1); 80*73f7a4c5SBarry Smith draw->markertype = mtype; 81*73f7a4c5SBarry Smith PetscFunctionReturn(0); 82*73f7a4c5SBarry Smith } 83*73f7a4c5SBarry Smith 84*73f7a4c5SBarry Smith #undef __FUNCT__ 85*73f7a4c5SBarry Smith #define __FUNCT__ "PetscDrawGetMarkerType" 86*73f7a4c5SBarry Smith /*@ 87*73f7a4c5SBarry Smith PetscDrawGetMarkerType - gets the type of marker to display with PetscDrawMarker() 88*73f7a4c5SBarry Smith 89*73f7a4c5SBarry Smith Not collective 90*73f7a4c5SBarry Smith 91*73f7a4c5SBarry Smith Input Parameters: 92*73f7a4c5SBarry Smith + draw - the drawing context 93*73f7a4c5SBarry Smith - mtype - either PETSC_DRAW_MARKER_X (default) or PETSC_DRAW_MARKER_POINT 94*73f7a4c5SBarry Smith 95*73f7a4c5SBarry Smith Level: beginner 96*73f7a4c5SBarry Smith 97*73f7a4c5SBarry Smith Concepts: marker^drawing 98*73f7a4c5SBarry Smith Concepts: drawing^marker 99*73f7a4c5SBarry Smith 100*73f7a4c5SBarry Smith .seealso: PetscDrawPoint(), PetscDrawMarker() 101*73f7a4c5SBarry Smith 102*73f7a4c5SBarry Smith @*/ 103*73f7a4c5SBarry Smith PetscErrorCode PetscDrawGetMarkerType(PetscDraw draw,PetscDrawMarkerType *mtype) 104*73f7a4c5SBarry Smith { 105*73f7a4c5SBarry Smith PetscFunctionBegin; 106*73f7a4c5SBarry Smith PetscValidHeaderSpecific(draw,PETSC_DRAW_CLASSID,1); 107*73f7a4c5SBarry Smith *mtype = draw->markertype; 10878e9f83eSLisandro Dalcin PetscFunctionReturn(0); 10978e9f83eSLisandro Dalcin } 110