1///////////////////////////////////////////////////////////////////////////// 2// Name: src/cococa/colour.mm 3// Purpose: wxColour class 4// Author: David Elliott 5// Modified by: 6// Created: 2003/06/17 7// RCS-ID: $Id: colour.mm 51585 2008-02-08 00:35:39Z DE $ 8// Copyright: (c) 2003 David Elliott 9// Licence: wxWidgets licence 10///////////////////////////////////////////////////////////////////////////// 11 12#include "wx/wxprec.h" 13 14#include "wx/colour.h" 15 16#ifndef WX_PRECOMP 17 #include "wx/gdicmn.h" 18#endif //WX_PRECOMP 19 20#include "wx/cocoa/autorelease.h" 21#include "wx/cocoa/ObjcRef.h" 22 23#import <AppKit/NSColor.h> 24 25IMPLEMENT_DYNAMIC_CLASS(wxColour, wxObject) 26 27void wxColour::Init() 28{ 29 m_cocoaNSColor = NULL; 30 m_red = 31 m_blue = 32 m_green = 0; 33} 34 35wxColour::wxColour (const wxColour& col) 36: m_cocoaNSColor(col.m_cocoaNSColor) 37, m_red(col.m_red) 38, m_green(col.m_green) 39, m_blue(col.m_blue) 40, m_alpha(col.m_alpha) 41{ 42 wxGCSafeRetain(m_cocoaNSColor); 43} 44 45wxColour::wxColour( WX_NSColor aColor ) 46: m_cocoaNSColor(nil) 47{ 48 Set(aColor); 49} 50 51wxColour& wxColour::operator =(const wxColour& col) 52{ 53 m_cocoaNSColor = wxGCSafeRetain(col.m_cocoaNSColor); 54 m_red = col.m_red; 55 m_green = col.m_green; 56 m_blue = col.m_blue; 57 m_alpha = col.m_alpha; 58 return *this; 59} 60 61wxColour::~wxColour () 62{ 63 wxGCSafeRelease(m_cocoaNSColor); 64} 65 66void wxColour::InitRGBA(unsigned char r, 67 unsigned char g, 68 unsigned char b, 69 unsigned char a) 70{ 71 wxAutoNSAutoreleasePool pool; 72 wxGCSafeRelease(m_cocoaNSColor); 73 m_cocoaNSColor = wxGCSafeRetain([NSColor colorWithCalibratedRed:r/255.0 green:g/255.0 blue:b/255.0 alpha:a/255.0]); 74 m_red = r; 75 m_green = g; 76 m_blue = b; 77 m_alpha = a; 78} 79 80void wxColour::Set( WX_NSColor aColor ) 81{ 82 wxGCSafeRetain(aColor); 83 wxGCSafeRelease(m_cocoaNSColor); 84 m_cocoaNSColor = aColor; 85 86 /* Make a temporary color in RGB format and get the values. Note that 87 unless the color was actually RGB to begin with it's likely that 88 these will be fairly bogus. Particulary if the color is a pattern. */ 89 NSColor *rgbColor = [m_cocoaNSColor colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; 90 m_red = (wxUint8) ([rgbColor redComponent] * 255.0); 91 m_green = (wxUint8) ([rgbColor greenComponent] * 255.0); 92 m_blue = (wxUint8) ([rgbColor blueComponent] * 255.0); 93 m_alpha = (wxUint8) ([rgbColor alphaComponent] * 255.0); 94} 95