int DaoStream_SetColor( DaoStream *self, const char *fgcolor, const char *bgcolor ) { static int fg = -1; static int bg = -1; if( fgcolor && fgcolor[0] && MapColor( fgcolor ) >= 254 ) return 0; if( bgcolor && bgcolor[0] && MapColor( bgcolor ) >= 254 ) return 0; if( self->redirect == NULL && self->file == NULL ){ /* reset first, because resetting one of foreground and background could reset both: */ if( fg >= 0 && (fgcolor == NULL || fgcolor[0] == 0) ) SetCharForeground( self, fg ); if( bg >= 0 && (bgcolor == NULL || bgcolor[0] == 0) ) SetCharBackground( self, bg ); if( fgcolor && fgcolor[0] ){ int fg2 = SetCharForeground( self, MapColor( fgcolor ) ); if( fg < 0 ) fg = fg2; } if( bgcolor && bgcolor[0] ){ int bg2 = SetCharBackground( self, MapColor( bgcolor ) ); if( bg < 0 ) bg = bg2; } return 1; } if( self->redirect == NULL || self->redirect->SetColor == NULL ) return 0; self->redirect->SetColor( self->redirect, fgcolor, bgcolor ); return 1; }
BOOL CWindowsMetaFile::EnumMetaFileProc(HANDLETABLE FAR* pObject, METARECORD FAR* pMetaRecord, int nObject, EnumData* pData) { ASSERT(pData->pDC != NULL); HDC hDC = pData->pDC->GetSafeHdc(); REPLACE_RECORD Record; // Do color mapping for certain records. switch (pMetaRecord->rdFunction) { case META_CREATEBRUSHINDIRECT: { Record.mBrush = *(MBRUSHIND_RECORD*)pMetaRecord; Record.mBrush.lBrush.lbColor = MapColor(Record.mBrush.lBrush.lbColor); pMetaRecord = (METARECORD*)&Record; break; } case META_CREATEPENINDIRECT: { Record.mPen = *(MPENIND_RECORD*)pMetaRecord; Record.mPen.lPen.lopnColor = MapColor(Record.mPen.lPen.lopnColor); pMetaRecord = (METARECORD*)&Record; break; } case META_SETBKCOLOR: case META_SETTEXTCOLOR: { Record.mColor = *(MCOLOR_RECORD*)pMetaRecord; Record.mColor.clColor = MapColor(Record.mColor.clColor); pMetaRecord = (METARECORD*)&Record; break; } } // If the mask flag is set, set things up to force all drawing in black. if (pData->fMask) { SetROP2(hDC, R2_BLACK); SetTextColor(hDC, RGB(0,0,0)); SetBkColor(hDC, RGB(255,255,255)); } PlayMetaFileRecord(hDC, pObject, pMetaRecord, nObject); return TRUE; }
void VoxelChunk::RecalcColor( UINT8* voxels, unsigned int dimm ) { if ( !_vao ) return; Color clr; int h_dimm = dimm>>1; const int _local_to_global_i = h_dimm + _lbl[0]; const int _local_to_global_j = h_dimm + _lbl[1]; const int _local_to_global_k = h_dimm + _lbl[2]; unsigned int global_index = 0; unsigned int x, y, index; for (unsigned int i = 0; i < size; i++) { x = (_local_to_global_i+i)*dimm*dimm; for (unsigned int j = 0; j < size; j++) { y = (_local_to_global_j+j)*dimm; for (unsigned int k = 0; k < size; k++) { MapColor( &clr, voxels[x+ y + _local_to_global_k+k], false); index = (i*size*size + j*size + k); _colors[index].comp[0] = clr.comp[0]; _colors[index].comp[1] = clr.comp[1]; _colors[index].comp[2] = clr.comp[2]; } } } _vbo->UpdateColorArray( _colors, _vertex_len ); _vao->bind( *_vbo ); }
bool MapColor(int country, map& world) { bool a_color_remaining = true, done_coloring = false; color hue; if(country < world.num_contries()) // not done coloring map { hue = red; while(!done_coloring && a_color_remaining) // Try alternative colors { if(world.valid_coloring(country, hue)) { world.color_country(country, hue); done_coloring = MapColor(country+1, world); } if(hue == yellow) a_color_remaining = false; else hue++; } if(!done_coloring) world.colorCountry(country, color(none)); // hit deadend, uncolor and move back track (recursive) } else done_coloring = true; return done_coloring; }
Colormap CreateColorMap(Widget main) { Colormap cmap,def_cmap; XColor Colors[256]; int i,ncolors; unsigned long pixels[256],planes[1]; /* Find out how many colors are available on the default colormap */ cmap = DefaultColormap (dpy, DefaultScreen (dpy)); ncolors = 256; while(ncolors>1) { if (XAllocColorCells(dpy,cmap,0,planes,0,pixels,ncolors)) break; ncolors--; } if(ncolors>1) XFreeColors(dpy,cmap,pixels,ncolors,0); /* If there are not enough colors available, create a new colormap */ if(ncolors < 5) { ncolors = 5; def_cmap = DefaultColormap (dpy, DefaultScreen(dpy)); for(i=0; i<200; i++) { Colors[i].pixel = i; Colors[i].flags = DoRed|DoGreen|DoBlue; } XQueryColors(dpy,def_cmap,Colors,200); cmap = XCreateColormap(dpy,DefaultRootWindow(dpy), DefaultVisual(dpy,DefaultScreen(dpy)), AllocNone); XAllocColorCells(dpy,cmap,1,planes,0,pixels,200); //XStoreColors(dpy,cmap,Colors,200); } /* Map the colors we will use */ memset(color,0,sizeof(unsigned long)*256); for(i=0; i<5; i++) MapColor(cmap,i,Color[i][0],Color[i][1],Color[i][2]); /* Return the colormap */ return(cmap); }
void VoxelChunk::CreateMesh( UINT8* m_pBlocks, bool* _acted, unsigned int dimm )//lower corner { if (!_vao) _vao = new VAO(); _dirty = false; Color clr; clr.comp[0] = 255; clr.comp[1] = 255; clr.comp[2] = 255; clr.comp[3] = 255; int h_dimm = dimm>>1; const int _local_to_global_i = h_dimm + _lbl[0]; const int _local_to_global_j = h_dimm + _lbl[1]; const int _local_to_global_k = h_dimm + _lbl[2]; unsigned int num_created = 0; unsigned int global_index = 0; UINT8 tmp_res = 0; unsigned int x, y; for (unsigned int i = 0; i < size; i++) { x = (_local_to_global_i+i)*dimm*dimm; for (unsigned int j = 0; j < size; j++) { y = (_local_to_global_j+j)*dimm; for (unsigned int k = 0; k < size; k++) { tmp_res = EvaluateCell( m_pBlocks, _local_to_global_i+i, _local_to_global_j+j, _local_to_global_k+k, dimm ); if (tmp_res) { if ( _points == NULL ) { CreateGeometry(); } if (!_vbo) _vbo = new VBO(_points, NULL, 0, _vertex_len ); global_index = ( x+ y + _local_to_global_k+k );; //MapColor( &clr, m_pBlocks[global_index], false); MapColor( &clr, m_pBlocks[global_index], _acted[global_index]); _acted[global_index] = false; clr.comp[3] = tmp_res; SetColorForVoxel(i, j, k, &clr); _renderable_indexes[num_created] = i*size*size + j*size + k; ++num_created; } } } } _renderable_indexes_count = num_created; if ( num_created ) { _vbo->UpdateColorArray( _colors, _vertex_len ); _vbo->UpdateIndexArray( _renderable_indexes, _renderable_indexes_count ); _vao->bind( *_vbo ); } else { if ( _points != NULL ) { ClearGeometry(); } ClearMesh(); } }
void NXSurface::Clear(uint8_t r, uint8_t g, uint8_t b) { SDL_FillRect(fSurface, NULL, MapColor(r, g, b)); }