1 2 /* 3 Provides the calling sequences for all the basic PetscDraw routines. 4 */ 5 #include <petsc-private/drawimpl.h> /*I "petscdraw.h" I*/ 6 const char *const PetscDrawMarkerTypes[] = {"X","POINT","PetscDrawMarkerType","PETSC_DRAW_MARKER_",0}; 7 8 #undef __FUNCT__ 9 #define __FUNCT__ "PetscDrawMarker" 10 /*@ 11 PetscDrawMarker - PetscDraws a marker onto a drawable. 12 13 Not collective 14 15 Input Parameters: 16 + draw - the drawing context 17 . xl,yl - the coordinates of the marker 18 - cl - the color of the marker 19 20 Level: beginner 21 22 Concepts: marker^drawing 23 Concepts: drawing^marker 24 25 .seealso: PetscDrawPoint() 26 27 @*/ 28 PetscErrorCode PetscDrawMarker(PetscDraw draw,PetscReal xl,PetscReal yl,int cl) 29 { 30 PetscErrorCode ierr; 31 PetscBool isnull; 32 33 PetscFunctionBegin; 34 PetscValidHeaderSpecific(draw,PETSC_DRAW_CLASSID,1); 35 ierr = PetscDrawIsNull(draw,&isnull);CHKERRQ(ierr); 36 if (isnull) PetscFunctionReturn(0); 37 if (draw->markertype == PETSC_DRAW_MARKER_X){ 38 if (draw->ops->coordinatetopixel && draw->ops->pointpixel) { 39 PetscInt i,j,k; 40 ierr = (*draw->ops->coordinatetopixel)(draw,xl,yl,&i,&j); 41 for (k=-2; k<=2; k++) { 42 ierr = (*draw->ops->pointpixel)(draw,i+k,j+k,cl); 43 ierr = (*draw->ops->pointpixel)(draw,i+k,j-k,cl); 44 } 45 } else if (draw->ops->string) { 46 ierr = (*draw->ops->string)(draw,xl,yl,cl,"x");CHKERRQ(ierr); 47 } else SETERRQ(PetscObjectComm((PetscObject)draw),PETSC_ERR_SUP,"No support for drawing marker type X"); 48 } else { 49 ierr = (*draw->ops->point)(draw,xl,yl,cl);CHKERRQ(ierr); 50 } 51 PetscFunctionReturn(0); 52 } 53 54 #undef __FUNCT__ 55 #define __FUNCT__ "PetscDrawSetMarkerType" 56 /*@ 57 PetscDrawSetMarkerType - sets the type of marker to display with PetscDrawMarker() 58 59 Not collective 60 61 Input Parameters: 62 + draw - the drawing context 63 - mtype - either PETSC_DRAW_MARKER_X (default) or PETSC_DRAW_MARKER_POINT 64 65 Options Database: 66 . -draw_marker_type - x or point 67 68 Level: beginner 69 70 Concepts: marker^drawing 71 Concepts: drawing^marker 72 73 .seealso: PetscDrawPoint(), PetscDrawMarker() 74 75 @*/ 76 PetscErrorCode PetscDrawSetMarkerType(PetscDraw draw,PetscDrawMarkerType mtype) 77 { 78 PetscFunctionBegin; 79 PetscValidHeaderSpecific(draw,PETSC_DRAW_CLASSID,1); 80 draw->markertype = mtype; 81 PetscFunctionReturn(0); 82 } 83 84 #undef __FUNCT__ 85 #define __FUNCT__ "PetscDrawGetMarkerType" 86 /*@ 87 PetscDrawGetMarkerType - gets the type of marker to display with PetscDrawMarker() 88 89 Not collective 90 91 Input Parameters: 92 + draw - the drawing context 93 - mtype - either PETSC_DRAW_MARKER_X (default) or PETSC_DRAW_MARKER_POINT 94 95 Level: beginner 96 97 Concepts: marker^drawing 98 Concepts: drawing^marker 99 100 .seealso: PetscDrawPoint(), PetscDrawMarker() 101 102 @*/ 103 PetscErrorCode PetscDrawGetMarkerType(PetscDraw draw,PetscDrawMarkerType *mtype) 104 { 105 PetscFunctionBegin; 106 PetscValidHeaderSpecific(draw,PETSC_DRAW_CLASSID,1); 107 *mtype = draw->markertype; 108 PetscFunctionReturn(0); 109 } 110