X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/77ffb5937e89927b621128789401db8921fe580f..f5bed7a885024108682c32c74567cdf7bf2ed13b:/src/x11/colour.cpp diff --git a/src/x11/colour.cpp b/src/x11/colour.cpp index f1dc41edf3..b894d933b2 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: wxWidgets 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" @@ -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() { } @@ -227,11 +172,10 @@ 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::InitWith( unsigned char red, unsigned char green, unsigned char blue ) { 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 +243,21 @@ WXColor *wxColour::GetColor() const return (WXColor*) &M_COLDATA->m_color; } + +bool wxColour::FromString(const wxChar *name) +{ + Display *dpy = wxGlobalDisplay(); + WXColormap colormap = wxTheApp->GetMainColormap( dpy ); + XColor xcol; + if ( XParseColor( dpy, (Colormap)colormap, name , &xcol ) ) + { + UnRef(); + + m_refData = new wxColourRefData; + M_COLDATA->m_colormap = colormap; + M_COLDATA->m_color = xcol; + return true; + } + + return wxColourBase::FromString(name); +}