// Author: Robert Roebling
// Id: $Id$
// Copyright: (c) 1998 Robert Roebling
-// Licence: wxWindows licence
+// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
class wxColourRefData: public wxObjectRefData
{
public:
-
+
wxColourRefData();
~wxColourRefData();
void FreeColour();
-
+
GdkColor m_color;
GdkColormap *m_colormap;
bool m_hasPixel;
-
+
friend wxColour;
};
M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT;
M_COLDATA->m_color.pixel = 0;
}
-
+
void wxColour::InitFromName( const wxString &colourName )
{
wxNode *node = (wxNode *) NULL;
- if ( (wxTheColourDatabase) && (node = wxTheColourDatabase->Find(colourName)) )
+ if ( (wxTheColourDatabase) && (node = wxTheColourDatabase->Find(colourName)) )
{
wxColour *col = (wxColour*)node->Data();
UnRef();
if (col) Ref( *col );
- }
- else
+ }
+ else
{
m_refData = new wxColourRefData();
if (!gdk_color_parse( colourName, &M_COLDATA->m_color ))
}
wxColour::wxColour( const wxColour& col )
-{
- Ref( col );
-}
-
-wxColour::wxColour( const wxColour* col )
-{
- if (col) Ref( *col );
+{
+ Ref( col );
}
wxColour::~wxColour()
{
}
-wxColour& wxColour::operator = ( const wxColour& col )
-{
- if (*this == col) return (*this);
- Ref( col );
- return *this;
+wxColour& wxColour::operator = ( const wxColour& col )
+{
+ if (*this == col) return (*this);
+ Ref( col );
+ return *this;
}
-bool wxColour::operator == ( const wxColour& col )
-{
- return m_refData == col.m_refData;
+bool wxColour::operator == ( const wxColour& col )
+{
+ return m_refData == col.m_refData;
}
-bool wxColour::operator != ( const wxColour& col)
-{
- return m_refData != col.m_refData;
+bool wxColour::operator != ( const wxColour& col)
+{
+ return m_refData != col.m_refData;
}
void wxColour::Set( unsigned char red, unsigned char green, unsigned char blue )
wxFAIL_MSG( "invalid colour" );
return 0;
}
-
+
return (unsigned char)(M_COLDATA->m_color.red >> SHIFT);
}
wxFAIL_MSG( "invalid colour" );
return 0;
}
-
+
return (unsigned char)(M_COLDATA->m_color.green >> SHIFT);
}
wxFAIL_MSG( "invalid colour" );
return 0;
}
-
+
return (unsigned char)(M_COLDATA->m_color.blue >> SHIFT);
}
void wxColour::CalcPixel( GdkColormap *cmap )
{
if (!Ok()) return;
-
+
if ((M_COLDATA->m_hasPixel) && (M_COLDATA->m_colormap == cmap)) return;
M_COLDATA->FreeColour();
-
+
GdkColormapPrivate *private_colormap = (GdkColormapPrivate*) cmap;
if ((private_colormap->visual->type == GDK_VISUAL_GRAYSCALE) ||
(private_colormap->visual->type == GDK_VISUAL_PSEUDO_COLOR))
int sum = ABS (rdiff) + ABS (gdiff) + ABS (bdiff);
if (sum < max) { index = i; max = sum; }
}
-
+
M_COLDATA->m_hasPixel = TRUE;
M_COLDATA->m_color.pixel = index;
}
{
M_COLDATA->m_hasPixel = gdk_color_alloc( cmap, &M_COLDATA->m_color );
}
-
- int p = M_COLDATA->m_color.pixel;
-
+
M_COLDATA->m_colormap = cmap;
}
int wxColour::GetPixel() const
{
if (!Ok()) return 0;
-
+
return M_COLDATA->m_color.pixel;
}
GdkColor *wxColour::GetColor() const
{
if (!Ok()) return (GdkColor *) NULL;
-
+
return &M_COLDATA->m_color;
}