Esempio n. 1
0
File: xcolor.c Progetto: wgapl/petsc
PetscErrorCode PetscDrawSetUpColormap_Shared(Display *display,int screen,Visual *visual,Colormap colormap)
{
  XColor         colordef,ecolordef;
  unsigned char  *red,*green,*blue;
  int            i,ncolors;
  PetscErrorCode ierr;
  PetscBool      fast = PETSC_FALSE;

  PetscFunctionBegin;
  if (colormap) gColormap = colormap;
  else          gColormap = DefaultColormap(display,screen);

  /* set the basic colors into the color map */
  for (i=0; i<PETSC_DRAW_BASIC_COLORS; i++) {
    XAllocNamedColor(display,gColormap,colornames[i],&colordef,&ecolordef);
    gCmapping[i] = colordef.pixel;
  }

  /* set the uniform hue colors into the color map */
  ncolors = 256-PETSC_DRAW_BASIC_COLORS;
  ierr    = PetscMalloc3(ncolors,&red,ncolors,&green,ncolors,&blue);CHKERRQ(ierr);
  ierr    = PetscDrawUtilitySetCmapHue(red,green,blue,ncolors);CHKERRQ(ierr);
  ierr    = PetscOptionsGetBool(NULL,NULL,"-draw_fast",&fast,NULL);CHKERRQ(ierr);
  if (!fast) {
    for (i=PETSC_DRAW_BASIC_COLORS; i<ncolors+PETSC_DRAW_BASIC_COLORS; i++) {
      colordef.red   = ((int)red[i-PETSC_DRAW_BASIC_COLORS]   * 65535) / 255;
      colordef.green = ((int)green[i-PETSC_DRAW_BASIC_COLORS] * 65535) / 255;
      colordef.blue  = ((int)blue[i-PETSC_DRAW_BASIC_COLORS]  * 65535) / 255;
      colordef.flags = DoRed | DoGreen | DoBlue;
      XAllocColor(display,gColormap,&colordef);
      gCmapping[i]   = colordef.pixel;
    }
  }
  ierr = PetscFree3(red,green,blue);CHKERRQ(ierr);
  ierr = PetscInfo(0,"Successfully allocated colors\n");CHKERRQ(ierr);
  PetscFunctionReturn(0);
}
Esempio n. 2
0
static PetscErrorCode InitializeColors(void)
{
  PetscErrorCode ierr;

  PetscFunctionBegin;
  rcolor[PETSC_DRAW_WHITE]           = 255;
  gcolor[PETSC_DRAW_WHITE]           = 255;
  bcolor[PETSC_DRAW_WHITE]           = 255;
  rcolor[PETSC_DRAW_BLACK]           =   0;
  gcolor[PETSC_DRAW_BLACK]           =   0;
  bcolor[PETSC_DRAW_BLACK]           =   0;
  rcolor[PETSC_DRAW_RED]             = 255;
  gcolor[PETSC_DRAW_RED]             =   0;
  bcolor[PETSC_DRAW_RED]             =   0;
  rcolor[PETSC_DRAW_GREEN]           =   0;
  gcolor[PETSC_DRAW_GREEN]           = 128;
  bcolor[PETSC_DRAW_GREEN]           =   0;
  rcolor[PETSC_DRAW_CYAN]            =   0;
  gcolor[PETSC_DRAW_CYAN]            = 139;
  bcolor[PETSC_DRAW_CYAN]            = 139;
  rcolor[PETSC_DRAW_BLUE]            =   0;
  gcolor[PETSC_DRAW_BLUE]            =   0;
  bcolor[PETSC_DRAW_BLUE]            = 255;
  rcolor[PETSC_DRAW_MAGENTA]         = 255;
  gcolor[PETSC_DRAW_MAGENTA]         =   0;
  bcolor[PETSC_DRAW_MAGENTA]         = 255;
  rcolor[PETSC_DRAW_AQUAMARINE]      = 127;
  gcolor[PETSC_DRAW_AQUAMARINE]      = 255;
  bcolor[PETSC_DRAW_AQUAMARINE]      = 212;
  rcolor[PETSC_DRAW_FORESTGREEN]     =  34;
  gcolor[PETSC_DRAW_FORESTGREEN]     = 139;
  bcolor[PETSC_DRAW_FORESTGREEN]     =  34;
  rcolor[PETSC_DRAW_ORANGE]          = 255;
  gcolor[PETSC_DRAW_ORANGE]          = 165;
  bcolor[PETSC_DRAW_ORANGE]          =   0;
  rcolor[PETSC_DRAW_VIOLET]          = 238;
  gcolor[PETSC_DRAW_VIOLET]          = 130;
  bcolor[PETSC_DRAW_VIOLET]          = 238;
  rcolor[PETSC_DRAW_BROWN]           = 165;
  gcolor[PETSC_DRAW_BROWN]           =  42;
  bcolor[PETSC_DRAW_BROWN]           =  42;
  rcolor[PETSC_DRAW_PINK]            = 255;
  gcolor[PETSC_DRAW_PINK]            = 192;
  bcolor[PETSC_DRAW_PINK]            = 203;
  rcolor[PETSC_DRAW_CORAL]           = 255;
  gcolor[PETSC_DRAW_CORAL]           = 127;
  bcolor[PETSC_DRAW_CORAL]           =  80;
  rcolor[PETSC_DRAW_GRAY]            = 128;
  gcolor[PETSC_DRAW_GRAY]            = 128;
  bcolor[PETSC_DRAW_GRAY]            = 128;
  rcolor[PETSC_DRAW_YELLOW]          = 255;
  gcolor[PETSC_DRAW_YELLOW]          = 255;
  bcolor[PETSC_DRAW_YELLOW]          =   0;
  rcolor[PETSC_DRAW_GOLD]            = 255;
  gcolor[PETSC_DRAW_GOLD]            = 215;
  bcolor[PETSC_DRAW_GOLD]            =   0;
  rcolor[PETSC_DRAW_LIGHTPINK]       = 255;
  gcolor[PETSC_DRAW_LIGHTPINK]       = 182;
  bcolor[PETSC_DRAW_LIGHTPINK]       = 193;
  rcolor[PETSC_DRAW_MEDIUMTURQUOISE] =  72;
  gcolor[PETSC_DRAW_MEDIUMTURQUOISE] = 209;
  bcolor[PETSC_DRAW_MEDIUMTURQUOISE] = 204;
  rcolor[PETSC_DRAW_KHAKI]           = 240;
  gcolor[PETSC_DRAW_KHAKI]           = 230;
  bcolor[PETSC_DRAW_KHAKI]           = 140;
  rcolor[PETSC_DRAW_DIMGRAY]         = 105;
  gcolor[PETSC_DRAW_DIMGRAY]         = 105;
  bcolor[PETSC_DRAW_DIMGRAY]         = 105;
  rcolor[PETSC_DRAW_YELLOWGREEN]     =  54;
  gcolor[PETSC_DRAW_YELLOWGREEN]     = 205;
  bcolor[PETSC_DRAW_YELLOWGREEN]     =  50;
  rcolor[PETSC_DRAW_SKYBLUE]         = 135;
  gcolor[PETSC_DRAW_SKYBLUE]         = 206;
  bcolor[PETSC_DRAW_SKYBLUE]         = 235;
  rcolor[PETSC_DRAW_DARKGREEN]       =   0;
  gcolor[PETSC_DRAW_DARKGREEN]       = 100;
  bcolor[PETSC_DRAW_DARKGREEN]       =   0;
  rcolor[PETSC_DRAW_NAVYBLUE]        =   0;
  gcolor[PETSC_DRAW_NAVYBLUE]        =   0;
  bcolor[PETSC_DRAW_NAVYBLUE]        = 128;
  rcolor[PETSC_DRAW_SANDYBROWN]      = 244;
  gcolor[PETSC_DRAW_SANDYBROWN]      = 164;
  bcolor[PETSC_DRAW_SANDYBROWN]      =  96;
  rcolor[PETSC_DRAW_CADETBLUE]       =  95;
  gcolor[PETSC_DRAW_CADETBLUE]       = 158;
  bcolor[PETSC_DRAW_CADETBLUE]       = 160;
  rcolor[PETSC_DRAW_POWDERBLUE]      = 176;
  gcolor[PETSC_DRAW_POWDERBLUE]      = 224;
  bcolor[PETSC_DRAW_POWDERBLUE]      = 230;
  rcolor[PETSC_DRAW_DEEPPINK]        = 255;
  gcolor[PETSC_DRAW_DEEPPINK]        =  20;
  bcolor[PETSC_DRAW_DEEPPINK]        = 147;
  rcolor[PETSC_DRAW_THISTLE]         = 216;
  gcolor[PETSC_DRAW_THISTLE]         = 191;
  bcolor[PETSC_DRAW_THISTLE]         = 216;
  rcolor[PETSC_DRAW_LIMEGREEN]       =  50;
  gcolor[PETSC_DRAW_LIMEGREEN]       = 205;
  bcolor[PETSC_DRAW_LIMEGREEN]       =  50;
  rcolor[PETSC_DRAW_LAVENDERBLUSH]   = 255;
  gcolor[PETSC_DRAW_LAVENDERBLUSH]   = 240;
  bcolor[PETSC_DRAW_LAVENDERBLUSH]   = 245;
  rcolor[PETSC_DRAW_PLUM]            = 221;
  gcolor[PETSC_DRAW_PLUM]            = 160;
  bcolor[PETSC_DRAW_PLUM]            = 221;

  ierr = PetscDrawUtilitySetCmapHue(rcolor+PETSC_DRAW_BASIC_COLORS,gcolor+PETSC_DRAW_BASIC_COLORS,bcolor+PETSC_DRAW_BASIC_COLORS,256-PETSC_DRAW_BASIC_COLORS);CHKERRQ(ierr);
  PetscFunctionReturn(0);
}
Esempio n. 3
0
File: xcolor.c Progetto: wgapl/petsc
PetscErrorCode PetscDrawSetUpColormap_Private(Display *display,int screen,Visual *visual,Colormap colormap)
{
  Colormap       defaultmap = DefaultColormap(display,screen);
  PetscErrorCode ierr;
  int            found,i,ncolors;
  XColor         colordef;
  unsigned char  *red,*green,*blue;
  PetscBool      fast = PETSC_FALSE;

  PetscFunctionBegin;
  if (colormap) gColormap = colormap;
  else          gColormap = XCreateColormap(display,RootWindow(display,screen),visual,AllocAll);

  cmap_base = 0;

  ierr = PetscMemzero(cmap_pixvalues_used,256*sizeof(PetscBool));CHKERRQ(ierr);

  /* set the basic colors into the color map */
  for (i=0; i<PETSC_DRAW_BASIC_COLORS; i++) {
    XParseColor(display,gColormap,colornames[i],&colordef);
    /* try to allocate the color in the default-map */
    found = XAllocColor(display,defaultmap,&colordef);
    /* use it, if it it exists and is not already used in the new colormap */
    if (found && colordef.pixel < 256  && !cmap_pixvalues_used[colordef.pixel]) {
      cmap_pixvalues_used[colordef.pixel] = PETSC_TRUE;
      /* otherwise search for the next available slot */
    } else {
      while (cmap_pixvalues_used[cmap_base]) cmap_base++;
      colordef.pixel                   = cmap_base;
      cmap_pixvalues_used[cmap_base++] = PETSC_TRUE;
    }
    XStoreColor(display,gColormap,&colordef);
    gCmapping[i] = colordef.pixel;
  }

  /* set the uniform hue colors into the color map */
  ncolors = 256-PETSC_DRAW_BASIC_COLORS;
  ierr    = PetscMalloc3(ncolors,&red,ncolors,&green,ncolors,&blue);CHKERRQ(ierr);
  ierr    = PetscDrawUtilitySetCmapHue(red,green,blue,ncolors);CHKERRQ(ierr);
  ierr    = PetscOptionsGetBool(NULL,NULL,"-draw_fast",&fast,NULL);CHKERRQ(ierr);
  if (!fast) {
    for (i=PETSC_DRAW_BASIC_COLORS; i<ncolors+PETSC_DRAW_BASIC_COLORS; i++) {
      colordef.red   = ((int)red[i-PETSC_DRAW_BASIC_COLORS]   * 65535) / 255;
      colordef.green = ((int)green[i-PETSC_DRAW_BASIC_COLORS] * 65535) / 255;
      colordef.blue  = ((int)blue[i-PETSC_DRAW_BASIC_COLORS]  * 65535) / 255;
      colordef.flags = DoRed | DoGreen | DoBlue;
      /* try to allocate the color in the default-map */
      found = XAllocColor(display,defaultmap,&colordef);
      /* use it, if it it exists and is not already used in the new colormap */
      if (found && colordef.pixel < 256  && !cmap_pixvalues_used[colordef.pixel]) {
        cmap_pixvalues_used[colordef.pixel] = PETSC_TRUE;
        /* otherwise search for the next available slot */
      } else {
        while (cmap_pixvalues_used[cmap_base]) cmap_base++;
        colordef.pixel                   = cmap_base;
        cmap_pixvalues_used[cmap_base++] = PETSC_TRUE;
      }
      XStoreColor(display,gColormap,&colordef);
      gCmapping[i] = colordef.pixel;
    }
  }
  ierr = PetscFree3(red,green,blue);CHKERRQ(ierr);
  ierr = PetscInfo(0,"Successfully allocated colors\n");CHKERRQ(ierr);
  PetscFunctionReturn(0);
}