Files
Include/EGkColor.h
T
Dario Sassi ab1759c708 Include :
- aggiunti colori standard
- modifiche a interfacce.
2014-03-11 22:24:14 +00:00

95 lines
4.0 KiB
C++

//----------------------------------------------------------------------------
// EgalTech 2014-2014
//----------------------------------------------------------------------------
// File : EGkColor.h Data : 24.02.14 Versione : 1.5b6
// Contenuto : Implementazione della classe Color.
//
//
//
// Modifiche : 24.02.14 DS Creazione modulo.
//
//
//----------------------------------------------------------------------------
#pragma once
#include <stdlib.h>
//-----------------------------------------------------------------------------
static const int MAX_RGB = 255 ;
static const int MAX_ALPHA = 100 ;
static const float INV_MAX_RGB = 1 / float( MAX_RGB) ;
static const float INV_MAX_ALPHA = 1 / float( MAX_ALPHA) ;
//-----------------------------------------------------------------------------
class Color
{
public :
Color( void)
{ m_Col[RED] = 0 ; m_Col[GREEN] = 0 ; m_Col[BLUE] = 0 ; m_Col[ALPHA] = MAX_ALPHA ; }
Color( int nRed, int nGreen, int nBlue, int nAlpha = MAX_ALPHA)
{ Set( nRed, nGreen, nBlue, nAlpha) ; }
Color( double dRed, double dGreen, double dBlue, double dAlpha = 1)
{ Set( dRed, dGreen, dBlue, dAlpha) ; }
void Set( int nRed, int nGreen, int nBlue, int nAlpha = MAX_ALPHA)
{ m_Col[RED] = (( nRed < 0) ? 0 : (( nRed > MAX_RGB) ? MAX_RGB : nRed)) ;
m_Col[GREEN] = (( nGreen < 0) ? 0 : (( nGreen > MAX_RGB) ? MAX_RGB : nGreen)) ;
m_Col[BLUE] = (( nBlue < 0) ? 0 : (( nBlue > MAX_RGB) ? MAX_RGB : nBlue)) ;
m_Col[ALPHA] = (( nAlpha < 0) ? 0 : (( nAlpha > MAX_ALPHA) ? MAX_ALPHA : nAlpha)) ; }
void Set( double dRed, double dGreen, double dBlue, double dAlpha = 1)
{ m_Col[RED] = (( dRed < 0) ? 0 : (( dRed > 1) ? MAX_RGB : int( dRed * MAX_RGB))) ;
m_Col[GREEN] = (( dGreen < 0) ? 0 : (( dGreen > 1) ? MAX_RGB : int( dGreen * MAX_RGB))) ;
m_Col[BLUE] = (( dBlue < 0) ? 0 : (( dBlue > 1) ? MAX_RGB : int( dBlue * MAX_RGB))) ;
m_Col[ALPHA] = (( dAlpha < 0) ? 0 : (( dAlpha > 1) ? MAX_ALPHA : int( dAlpha * MAX_ALPHA))) ; }
int GetIntRed( void) const
{ return m_Col[RED] ; }
int GetIntGreen( void) const
{ return m_Col[GREEN] ; }
int GetIntBlue( void) const
{ return m_Col[BLUE] ; }
int GetIntAlpha( void) const
{ return m_Col[ALPHA] ; }
float GetRed( void) const
{ return ( m_Col[RED] * INV_MAX_RGB) ; }
float GetGreen( void) const
{ return ( m_Col[GREEN] * INV_MAX_RGB) ; }
float GetBlue( void) const
{ return ( m_Col[BLUE] * INV_MAX_RGB) ; }
float GetAlpha( void) const
{ return ( m_Col[ALPHA] * INV_MAX_ALPHA) ; }
bool operator == ( const Color& other)
{ return ( m_Col[RED] == other.m_Col[RED] &&
m_Col[GREEN] == other.m_Col[GREEN] &&
m_Col[BLUE] == other.m_Col[BLUE] &&
m_Col[ALPHA] == other.m_Col[ALPHA]) ; }
private :
enum { RED = 0, GREEN = 1, BLUE = 2, ALPHA = 3, DIM = 4} ;
private :
unsigned char m_Col[DIM] ;
} ;
//----------------------------------------------------------------------------
// Colori predefiniti
//----------------------------------------------------------------------------
const Color BLACK( 0, 0, 0) ;
const Color GRAY( 128, 128, 128) ;
const Color LGRAY( 192, 192, 192) ;
const Color WHITE( 255, 255, 255) ;
const Color RED( 255, 0, 0) ;
const Color GREEN( 0, 255, 0) ;
const Color BLUE( 0, 0, 255) ;
const Color CYAN( 0, 255, 255) ;
const Color MAGENTA( 255, 0, 255) ;
const Color YELLOW( 255, 255, 0) ;
const Color BROWN( 128, 64, 0) ;
const Color PURPLE( 128, 0, 128) ;
const Color ORANGE( 255, 128, 0) ;
const Color LRED( 255, 128, 128) ;
const Color LGREEN( 128, 255, 128) ;
const Color LBLUE( 128, 128, 255) ;
const Color LCYAN( 128, 255, 255) ;
const Color LMAGENTA( 255, 128, 255) ;