From: Kevin Ollivier Date: Sat, 31 Oct 2009 22:20:27 +0000 (+0000) Subject: Adding NSColor -> wxColour conversion. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/b478f242888560d1cb0d397bd70a9e47a640d394 Adding NSColor -> wxColour conversion. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62525 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/Makefile.in b/Makefile.in index 9c96f23998..096a307fe3 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,6 +1,6 @@ # ========================================================================= # This makefile was generated by -# Bakefile 0.2.7 (http://www.bakefile.org) +# Bakefile 0.2.8 (http://www.bakefile.org) # Do not modify, all changes will be overwritten! # ========================================================================= @@ -4861,7 +4861,7 @@ COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS = \ monodll_src_cocoa_choice.o \ monodll_cocoa_clipbrd.o \ monodll_cocoa_colordlg.o \ - monodll_cocoa_colour.o \ + monodll_src_cocoa_colour.o \ monodll_cocoa_combobox.o \ monodll_cocoa_control.o \ monodll_cocoa_cursor.o \ @@ -5198,6 +5198,7 @@ COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS = \ monodll_osx_cocoa_button.o \ monodll_osx_cocoa_checkbox.o \ monodll_osx_cocoa_choice.o \ + monodll_osx_cocoa_colour.o \ monodll_osx_cocoa_dialog.o \ monodll_osx_cocoa_dirdlg.o \ monodll_osx_cocoa_evtloop.o \ @@ -6679,7 +6680,7 @@ COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS_1 = \ monolib_src_cocoa_choice.o \ monolib_cocoa_clipbrd.o \ monolib_cocoa_colordlg.o \ - monolib_cocoa_colour.o \ + monolib_src_cocoa_colour.o \ monolib_cocoa_combobox.o \ monolib_cocoa_control.o \ monolib_cocoa_cursor.o \ @@ -7016,6 +7017,7 @@ COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS_1 = \ monolib_osx_cocoa_button.o \ monolib_osx_cocoa_checkbox.o \ monolib_osx_cocoa_choice.o \ + monolib_osx_cocoa_colour.o \ monolib_osx_cocoa_dialog.o \ monolib_osx_cocoa_dirdlg.o \ monolib_osx_cocoa_evtloop.o \ @@ -8686,7 +8688,7 @@ COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS_2 = \ coredll_src_cocoa_choice.o \ coredll_cocoa_clipbrd.o \ coredll_cocoa_colordlg.o \ - coredll_cocoa_colour.o \ + coredll_src_cocoa_colour.o \ coredll_cocoa_combobox.o \ coredll_cocoa_control.o \ coredll_cocoa_cursor.o \ @@ -9023,6 +9025,7 @@ COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS_2 = \ coredll_osx_cocoa_button.o \ coredll_osx_cocoa_checkbox.o \ coredll_osx_cocoa_choice.o \ + coredll_osx_cocoa_colour.o \ coredll_osx_cocoa_dialog.o \ coredll_osx_cocoa_dirdlg.o \ coredll_osx_cocoa_evtloop.o \ @@ -10177,7 +10180,7 @@ COND_TOOLKIT_COCOA___GUI_SRC_OBJECTS_3 = \ corelib_src_cocoa_choice.o \ corelib_cocoa_clipbrd.o \ corelib_cocoa_colordlg.o \ - corelib_cocoa_colour.o \ + corelib_src_cocoa_colour.o \ corelib_cocoa_combobox.o \ corelib_cocoa_control.o \ corelib_cocoa_cursor.o \ @@ -10514,6 +10517,7 @@ COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS_3 = \ corelib_osx_cocoa_button.o \ corelib_osx_cocoa_checkbox.o \ corelib_osx_cocoa_choice.o \ + corelib_osx_cocoa_colour.o \ corelib_osx_cocoa_dialog.o \ corelib_osx_cocoa_dirdlg.o \ corelib_osx_cocoa_evtloop.o \ @@ -15544,6 +15548,9 @@ monodll_osx_cocoa_checkbox.o: $(srcdir)/src/osx/cocoa/checkbox.mm $(MONODLL_ODEP monodll_osx_cocoa_choice.o: $(srcdir)/src/osx/cocoa/choice.mm $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/choice.mm +monodll_osx_cocoa_colour.o: $(srcdir)/src/osx/cocoa/colour.mm $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/colour.mm + monodll_osx_cocoa_dialog.o: $(srcdir)/src/osx/cocoa/dialog.mm $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/dialog.mm @@ -15688,7 +15695,7 @@ monodll_cocoa_clipbrd.o: $(srcdir)/src/cocoa/clipbrd.mm $(MONODLL_ODEP) monodll_cocoa_colordlg.o: $(srcdir)/src/cocoa/colordlg.mm $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/cocoa/colordlg.mm -monodll_cocoa_colour.o: $(srcdir)/src/cocoa/colour.mm $(MONODLL_ODEP) +monodll_src_cocoa_colour.o: $(srcdir)/src/cocoa/colour.mm $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/cocoa/colour.mm monodll_cocoa_combobox.o: $(srcdir)/src/cocoa/combobox.mm $(MONODLL_ODEP) @@ -20341,6 +20348,9 @@ monolib_osx_cocoa_checkbox.o: $(srcdir)/src/osx/cocoa/checkbox.mm $(MONOLIB_ODEP monolib_osx_cocoa_choice.o: $(srcdir)/src/osx/cocoa/choice.mm $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/choice.mm +monolib_osx_cocoa_colour.o: $(srcdir)/src/osx/cocoa/colour.mm $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/colour.mm + monolib_osx_cocoa_dialog.o: $(srcdir)/src/osx/cocoa/dialog.mm $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/dialog.mm @@ -20485,7 +20495,7 @@ monolib_cocoa_clipbrd.o: $(srcdir)/src/cocoa/clipbrd.mm $(MONOLIB_ODEP) monolib_cocoa_colordlg.o: $(srcdir)/src/cocoa/colordlg.mm $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/cocoa/colordlg.mm -monolib_cocoa_colour.o: $(srcdir)/src/cocoa/colour.mm $(MONOLIB_ODEP) +monolib_src_cocoa_colour.o: $(srcdir)/src/cocoa/colour.mm $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/cocoa/colour.mm monolib_cocoa_combobox.o: $(srcdir)/src/cocoa/combobox.mm $(MONOLIB_ODEP) @@ -25849,6 +25859,9 @@ coredll_osx_cocoa_checkbox.o: $(srcdir)/src/osx/cocoa/checkbox.mm $(COREDLL_ODEP coredll_osx_cocoa_choice.o: $(srcdir)/src/osx/cocoa/choice.mm $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/choice.mm +coredll_osx_cocoa_colour.o: $(srcdir)/src/osx/cocoa/colour.mm $(COREDLL_ODEP) + $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/colour.mm + coredll_osx_cocoa_dialog.o: $(srcdir)/src/osx/cocoa/dialog.mm $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/dialog.mm @@ -25993,7 +26006,7 @@ coredll_cocoa_clipbrd.o: $(srcdir)/src/cocoa/clipbrd.mm $(COREDLL_ODEP) coredll_cocoa_colordlg.o: $(srcdir)/src/cocoa/colordlg.mm $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/cocoa/colordlg.mm -coredll_cocoa_colour.o: $(srcdir)/src/cocoa/colour.mm $(COREDLL_ODEP) +coredll_src_cocoa_colour.o: $(srcdir)/src/cocoa/colour.mm $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/cocoa/colour.mm coredll_cocoa_combobox.o: $(srcdir)/src/cocoa/combobox.mm $(COREDLL_ODEP) @@ -29377,6 +29390,9 @@ corelib_osx_cocoa_checkbox.o: $(srcdir)/src/osx/cocoa/checkbox.mm $(CORELIB_ODEP corelib_osx_cocoa_choice.o: $(srcdir)/src/osx/cocoa/choice.mm $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/choice.mm +corelib_osx_cocoa_colour.o: $(srcdir)/src/osx/cocoa/colour.mm $(CORELIB_ODEP) + $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/colour.mm + corelib_osx_cocoa_dialog.o: $(srcdir)/src/osx/cocoa/dialog.mm $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/dialog.mm @@ -29521,7 +29537,7 @@ corelib_cocoa_clipbrd.o: $(srcdir)/src/cocoa/clipbrd.mm $(CORELIB_ODEP) corelib_cocoa_colordlg.o: $(srcdir)/src/cocoa/colordlg.mm $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/cocoa/colordlg.mm -corelib_cocoa_colour.o: $(srcdir)/src/cocoa/colour.mm $(CORELIB_ODEP) +corelib_src_cocoa_colour.o: $(srcdir)/src/cocoa/colour.mm $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/cocoa/colour.mm corelib_cocoa_combobox.o: $(srcdir)/src/cocoa/combobox.mm $(CORELIB_ODEP) diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 7b9e19a7ae..763e0eff83 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -2462,6 +2462,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/osx/cocoa/button.mm src/osx/cocoa/checkbox.mm src/osx/cocoa/choice.mm + src/osx/cocoa/colour.mm src/osx/cocoa/dialog.mm src/osx/cocoa/dirdlg.mm src/osx/cocoa/evtloop.mm diff --git a/include/wx/osx/core/colour.h b/include/wx/osx/core/colour.h index 1cf694140c..388b176f2a 100644 --- a/include/wx/osx/core/colour.h +++ b/include/wx/osx/core/colour.h @@ -57,6 +57,9 @@ public: #if wxOSX_USE_COCOA_OR_CARBON wxColour(const RGBColor& col); wxColour& operator=(const RGBColor& col); +#endif +#if wxOSX_USE_COCOA + wxColour(WX_NSColor color); #endif wxColour& operator=(CGColorRef col); wxColour& operator=(const wxColour& col); @@ -68,6 +71,7 @@ protected : void InitRGBColor( const RGBColor& col ); #endif void InitCGColorRef( CGColorRef col ); + void InitFromComponents(const CGFloat* components, size_t numComponents ); private: wxCFRef m_cgColour; diff --git a/src/osx/cocoa/colour.mm b/src/osx/cocoa/colour.mm new file mode 100644 index 0000000000..ffce54a794 --- /dev/null +++ b/src/osx/cocoa/colour.mm @@ -0,0 +1,36 @@ +///////////////////////////////////////////////////////////////////////////// +// Name: src/osx/cocoa/colour.mm +// Purpose: Cocoa additions to wxColour class +// Author: Kevin Ollivier +// Modified by: +// Created: 2009-10-31 +// RCS-ID: $Id: colour.cpp 61724 2009-08-21 10:41:26Z VZ $ +// Copyright: (c) Kevin Ollivier +// Licence: wxWindows licence +///////////////////////////////////////////////////////////////////////////// + +#include "wx/wxprec.h" + +#include "wx/colour.h" + +#ifndef WX_PRECOMP + #include "wx/gdicmn.h" +#endif + +#include "wx/osx/private.h" + +#if wxOSX_USE_COCOA +wxColour::wxColour(WX_NSColor col) +{ + size_t noComp = [col numberOfComponents]; + + CGFloat *components = NULL; + if ( noComp >= 1 && noComp <= 4 ) + { + // TODO verify whether we really are on a RGB color space + m_alpha = wxALPHA_OPAQUE; + [col getComponents: components]; + } + InitFromComponents(const_cast(components), noComp); +} +#endif \ No newline at end of file diff --git a/src/osx/core/colour.cpp b/src/osx/core/colour.cpp index 8191379762..e52d5b7aab 100644 --- a/src/osx/core/colour.cpp +++ b/src/osx/core/colour.cpp @@ -111,30 +111,39 @@ void wxColour::InitCGColorRef( CGColorRef col ) { m_cgColour.reset( col ); size_t noComp = CGColorGetNumberOfComponents( col ); + + const CGFloat *components = NULL; if ( noComp >= 1 && noComp <= 4 ) { // TODO verify whether we really are on a RGB color space m_alpha = wxALPHA_OPAQUE; - const CGFloat *components = CGColorGetComponents( col ); - if ( noComp >= 3 ) - { - m_red = (int)(components[0]*255+0.5); - m_green = (int)(components[1]*255+0.5); - m_blue = (int)(components[2]*255+0.5); - if ( noComp == 4 ) - m_alpha = (int)(components[3]*255+0.5); - } - else - { - m_red = (int)(components[0]*255+0.5); - m_green = (int)(components[0]*255+0.5); - m_blue = (int)(components[0]*255+0.5); - } + components = CGColorGetComponents( col ); } - else + InitFromComponents(components, noComp); +} + +void wxColour::InitFromComponents(const CGFloat* components, size_t numComponents ) +{ + if ( numComponents < 1 || !components ) { m_alpha = wxALPHA_OPAQUE; m_red = m_green = m_blue = 0; + return; + } + + if ( numComponents >= 3 ) + { + m_red = (int)(components[0]*255+0.5); + m_green = (int)(components[1]*255+0.5); + m_blue = (int)(components[2]*255+0.5); + if ( numComponents == 4 ) + m_alpha = (int)(components[3]*255+0.5); + } + else + { + m_red = (int)(components[0]*255+0.5); + m_green = (int)(components[0]*255+0.5); + m_blue = (int)(components[0]*255+0.5); } }