Beispiel #1
0
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;
}
Beispiel #2
0
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 );
}
Beispiel #4
0
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;
}
Beispiel #5
0
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));
}