X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/aad6765cbd8916ddeb0362b091663138c2e74df3..03580f20a8cabb87762bba2abb7ecdf010acb054:/src/x11/colour.cpp diff --git a/src/x11/colour.cpp b/src/x11/colour.cpp index f62111a909..26dfeded95 100644 --- a/src/x11/colour.cpp +++ b/src/x11/colour.cpp @@ -1,21 +1,23 @@ ///////////////////////////////////////////////////////////////////////////// -// Name: colour.cpp +// Name: src/x11/colour.cpp // Purpose: wxColour class // Author: Julian Smart, Robert Roebling // Modified by: // Created: 17/09/98 // RCS-ID: $Id$ // Copyright: (c) Julian Smart, Robert Roebling -// Licence: wxWindows licence +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" -#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA) -#pragma implementation "colour.h" -#endif +#include "wx/colour.h" -#include "wx/gdicmn.h" -#include "wx/app.h" +#ifndef WX_PRECOMP + #include "wx/app.h" + #include "wx/gdicmn.h" +#endif #include "wx/x11/private.h" @@ -43,7 +45,7 @@ public: m_hasPixel = data.m_hasPixel; } - ~wxColourRefData() + virtual ~wxColourRefData() { FreeColour(); } @@ -93,8 +95,9 @@ void wxColourRefData::FreeColour() if (!m_colormap) return; #if !wxUSE_NANOX - if ((wxTheApp->m_visualInfo->m_visualType == GrayScale) || - (wxTheApp->m_visualInfo->m_visualType == PseudoColor)) + if ( wxTheApp && + (wxTheApp->m_visualInfo->m_visualType == GrayScale || + wxTheApp->m_visualInfo->m_visualType == PseudoColor) ) { int idx = m_color.pixel; colMapAllocCounter[ idx ] = colMapAllocCounter[ idx ] - 1; @@ -140,64 +143,6 @@ void wxColourRefData::AllocColour( WXColormap cmap ) IMPLEMENT_DYNAMIC_CLASS(wxColour,wxGDIObject) -wxColour::wxColour( unsigned char red, unsigned char green, unsigned char blue ) -{ - m_refData = new wxColourRefData(); -#if wxUSE_NANOX - M_COLDATA->m_color.red = ((unsigned short)red) ; - M_COLDATA->m_color.green = ((unsigned short)green) ; - M_COLDATA->m_color.blue = ((unsigned short)blue) ; -#else - M_COLDATA->m_color.red = ((unsigned short)red) << SHIFT; - M_COLDATA->m_color.green = ((unsigned short)green) << SHIFT; - M_COLDATA->m_color.blue = ((unsigned short)blue) << SHIFT; -#endif - M_COLDATA->m_color.pixel = 0; -} - -/* static */ -wxColour wxColour::CreateByName(const wxString& name) -{ - wxColour col; - - Display *dpy = wxGlobalDisplay(); - WXColormap colormap = wxTheApp->GetMainColormap( dpy ); - XColor xcol; - if ( XParseColor( dpy, (Colormap)colormap, name.mb_str(), &xcol ) ) - { - wxColourRefData *refData = new wxColourRefData; - refData->m_colormap = colormap; - refData->m_color = xcol; - col.m_refData = refData; - } - - return col; -} - -void wxColour::InitFromName( const wxString &colourName ) -{ - // check the cache first - wxColour col; - if ( wxTheColourDatabase ) - { - col = wxTheColourDatabase->Find(colourName); - } - - if ( !col.Ok() ) - { - col = CreateByName(colourName); - } - - if ( col.Ok() ) - { - *this = col; - } - else - { - wxFAIL_MSG( wxT("wxColour: couldn't find colour") ); - } -} - wxColour::~wxColour() { } @@ -213,7 +158,7 @@ bool wxColour::operator == ( const wxColour& col ) const return (own->red == other->red) && (own->green == other->green) - && (own->blue == other->blue) + && (own->blue == other->blue) ; } @@ -227,11 +172,11 @@ wxObjectRefData *wxColour::CloneRefData(const wxObjectRefData *data) const return new wxColourRefData(*(wxColourRefData *)data); } -void wxColour::Set( unsigned char red, unsigned char green, unsigned char blue ) +void wxColour::InitRGBA(unsigned char red, unsigned char green, unsigned char blue, + unsigned char WXUNUSED(alpha)) { AllocExclusive(); - m_refData = new wxColourRefData(); #if wxUSE_NANOX M_COLDATA->m_color.red = ((unsigned short)red) ; M_COLDATA->m_color.green = ((unsigned short)green) ; @@ -299,3 +244,21 @@ WXColor *wxColour::GetColor() const return (WXColor*) &M_COLDATA->m_color; } + +bool wxColour::FromString(const wxString& name) +{ + Display *dpy = wxGlobalDisplay(); + WXColormap colormap = wxTheApp->GetMainColormap( dpy ); + XColor xcol; + if ( XParseColor( dpy, (Colormap)colormap, name.mbc_str(), &xcol ) ) + { + UnRef(); + + m_refData = new wxColourRefData; + M_COLDATA->m_colormap = colormap; + M_COLDATA->m_color = xcol; + return true; + } + + return wxColourBase::FromString(name); +}