PetscErrorCode PetscDrawString_TikZ(PetscDraw draw,PetscReal xl,PetscReal yl,int cl,const char text[]) { PetscDraw_TikZ *win = (PetscDraw_TikZ*)draw->data; PetscErrorCode ierr; PetscFunctionBegin; win->written = PETSC_TRUE; ierr = PetscFPrintf(PetscObjectComm((PetscObject)draw),win->fd,"\\node [above right, %s] at (%g,%g) {%s};\n",TikZColorMap(cl),XTRANS(draw,xl),YTRANS(draw,yl),text);CHKERRQ(ierr); PetscFunctionReturn(0); }
PetscErrorCode PetscDrawLine_TikZ(PetscDraw draw,PetscReal xl,PetscReal yl,PetscReal xr,PetscReal yr,int cl) { PetscDraw_TikZ *win = (PetscDraw_TikZ*)draw->data; PetscErrorCode ierr; PetscFunctionBegin; win->written = PETSC_TRUE; ierr = PetscFPrintf(PetscObjectComm((PetscObject)draw),win->fd,"\\draw [%s] (%g,%g) --(%g,%g);\n",TikZColorMap(cl),XTRANS(draw,xl),YTRANS(draw,yl),XTRANS(draw,xr),YTRANS(draw,yr));CHKERRQ(ierr); PetscFunctionReturn(0); }
static PetscErrorCode PetscDrawStringVertical_TikZ(PetscDraw draw,PetscReal xl,PetscReal yl,int cl,const char text[]) { PetscDraw_TikZ *win = (PetscDraw_TikZ*)draw->data; PetscErrorCode ierr; size_t len; PetscReal width; PetscFunctionBegin; win->written = PETSC_TRUE; ierr = PetscStrlen(text,&len);CHKERRQ(ierr); ierr = PetscDrawStringGetSize(draw,&width,NULL);CHKERRQ(ierr); yl = yl - len*width*(draw->coor_yr - draw->coor_yl)/(draw->coor_xr - draw->coor_xl); ierr = PetscFPrintf(PetscObjectComm((PetscObject)draw),win->fd,"\\node [rotate=90, %s] at (%g,%g) {%s};\n",TikZColorMap(cl),XTRANS(draw,xl),YTRANS(draw,yl),text);CHKERRQ(ierr); PetscFunctionReturn(0); }