PetscErrorCode PetscDrawSetColormap_X(PetscDraw_X *XiWin,Colormap colormap) { PetscErrorCode ierr; PetscFunctionBegin; if (XiWin->depth < 8) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP_SYS,"PETSc Graphics require monitors with at least 8 bit color (256 colors)"); if (!gColormap) { ierr = PetscDrawSetUpColormap_X(XiWin->disp,XiWin->screen,XiWin->vis,colormap);CHKERRQ(ierr); } XiWin->cmap = gColormap; ierr = PetscMemcpy(XiWin->cmapping,gCmapping,256*sizeof(PetscDrawXiPixVal));CHKERRQ(ierr); XiWin->background = XiWin->cmapping[PETSC_DRAW_WHITE]; XiWin->foreground = XiWin->cmapping[PETSC_DRAW_BLACK]; PetscFunctionReturn(0); }
PetscErrorCode PetscDrawSetColormap_X(PetscDraw_X *XiWin,char *host,Colormap colormap) { PetscErrorCode ierr; PetscFunctionBegin; if (XiWin->depth < 8) SETERRQ(PETSC_COMM_SELF,PETSC_ERR_SUP_SYS,"PETSc Graphics require monitors with at least 8 bit color (256 colors)"); if (!gColormap) { Display *display; /* Private display will exist forever contains colormap shared by all windows */ int screen; Visual *vis; display = XOpenDisplay(host); screen = DefaultScreen(display); vis = DefaultVisual(display,screen); ierr = PetscDrawSetUpColormap_X(display,screen,vis,colormap);CHKERRQ(ierr); XCloseDisplay(display); } XiWin->cmap = gColormap; ierr = PetscMemcpy(XiWin->cmapping,gCmapping,256*sizeof(PetscDrawXiPixVal));CHKERRQ(ierr); XiWin->background = XiWin->cmapping[PETSC_DRAW_WHITE]; XiWin->foreground = XiWin->cmapping[PETSC_DRAW_BLACK]; PetscFunctionReturn(0); }