]> git.saurik.com Git - wxWidgets.git/blame - src/cocoa/bitmap.mm
Applied patch [ 735304 ] wxDisplay::ChangeMode - does not resize full-screen windows
[wxWidgets.git] / src / cocoa / bitmap.mm
CommitLineData
a24aff65
DE
1/////////////////////////////////////////////////////////////////////////////
2// Name: bitmap.cpp
3// Purpose: wxBitmap
4// Author: AUTHOR
5// Modified by:
6// Created: ??/??/98
7// RCS-ID: $Id$
8// Copyright: (c) AUTHOR
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#ifdef __GNUG__
13#pragma implementation "bitmap.h"
14#endif
15
16#include "wx/setup.h"
17#include "wx/utils.h"
18#include "wx/palette.h"
19#include "wx/bitmap.h"
20#include "wx/icon.h"
21#include "wx/log.h"
22#include "wx/image.h"
23
24#if !USE_SHARED_LIBRARIES
25IMPLEMENT_DYNAMIC_CLASS(wxBitmap, wxGDIObject)
26IMPLEMENT_DYNAMIC_CLASS(wxMask, wxObject)
27#endif
28
29wxBitmapRefData::wxBitmapRefData()
30{
31 m_ok = FALSE;
32 m_width = 0;
33 m_height = 0;
34 m_depth = 0;
35 m_quality = 0;
36 m_numColors = 0;
37 m_bitmapMask = NULL;
38}
39
40wxBitmapRefData::~wxBitmapRefData()
41{
42 /*
43 * TODO: delete the bitmap data here.
44 */
45
46 if (m_bitmapMask)
47 delete m_bitmapMask;
48 m_bitmapMask = NULL;
49}
50
51wxBitmap::wxBitmap()
52{
53 m_refData = NULL;
54
55 if ( wxTheBitmapList )
56 wxTheBitmapList->AddBitmap(this);
57}
58
59wxBitmap::~wxBitmap()
60{
61 if (wxTheBitmapList)
62 wxTheBitmapList->DeleteObject(this);
63}
64
65wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits)
66{
67 m_refData = new wxBitmapRefData;
68
69 M_BITMAPDATA->m_width = the_width ;
70 M_BITMAPDATA->m_height = the_height ;
71 M_BITMAPDATA->m_depth = no_bits ;
72 M_BITMAPDATA->m_numColors = 0;
73
74 /* TODO: create the bitmap from data */
75
76 if ( wxTheBitmapList )
77 wxTheBitmapList->AddBitmap(this);
78}
79
80wxBitmap::wxBitmap(int w, int h, int d)
81{
82 (void)Create(w, h, d);
83
84 if ( wxTheBitmapList )
85 wxTheBitmapList->AddBitmap(this);
86}
87
88wxBitmap::wxBitmap(void *data, wxBitmapType type, int width, int height, int depth)
89{
90 (void) Create(data, type, width, height, depth);
91
92 if ( wxTheBitmapList )
93 wxTheBitmapList->AddBitmap(this);
94}
95
96wxBitmap::wxBitmap(const wxString& filename, wxBitmapType type)
97{
98 LoadFile(filename, type);
99
100 if ( wxTheBitmapList )
101 wxTheBitmapList->AddBitmap(this);
102}
103
104wxBitmap::wxBitmap(const wxImage& image, int depth)
105{
106}
107
108wxBitmap::wxBitmap(char **bits)
109{
110}
111
112/* TODO: maybe allow creation from XPM
113// Create from data
114wxBitmap::wxBitmap(const char **data)
115{
116 (void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
117}
118*/
119
120bool wxBitmap::Create(int w, int h, int d)
121{
122 UnRef();
123
124 m_refData = new wxBitmapRefData;
125
126 M_BITMAPDATA->m_width = w;
127 M_BITMAPDATA->m_height = h;
128 M_BITMAPDATA->m_depth = d;
129
130 /* TODO: create new bitmap */
131
132 return M_BITMAPDATA->m_ok;
133}
134
135bool wxBitmap::LoadFile(const wxString& filename, wxBitmapType type)
136{
137 UnRef();
138
139 m_refData = new wxBitmapRefData;
140
141 wxBitmapHandler *handler = FindHandler(type);
142
143 if ( handler == NULL ) {
144 wxLogWarning("no bitmap handler for type %d defined.", type);
145
146 return FALSE;
147 }
148
149 return handler->LoadFile(this, filename, type, -1, -1);
150}
151
152bool wxBitmap::Create(void *data, wxBitmapType type, int width, int height, int depth)
153{
154 UnRef();
155
156 m_refData = new wxBitmapRefData;
157
158 wxBitmapHandler *handler = FindHandler(type);
159
160 if ( handler == NULL ) {
161 wxLogWarning("no bitmap handler for type %d defined.", type);
162
163 return FALSE;
164 }
165
166 return handler->Create(this, data, type, width, height, depth);
167}
168
169bool wxBitmap::SaveFile(const wxString& filename, wxBitmapType type, const wxPalette *palette) const
170{
171 wxBitmapHandler *handler = FindHandler(type);
172
173 if ( handler == NULL ) {
174 wxLogWarning("no bitmap handler for type %d defined.", type);
175
176 return FALSE;
177 }
178
179 return handler->SaveFile(this, filename, type, palette);
180}
181
182void wxBitmap::SetWidth(int w)
183{
184 if (!M_BITMAPDATA)
185 m_refData = new wxBitmapRefData;
186
187 M_BITMAPDATA->m_width = w;
188}
189
190void wxBitmap::SetHeight(int h)
191{
192 if (!M_BITMAPDATA)
193 m_refData = new wxBitmapRefData;
194
195 M_BITMAPDATA->m_height = h;
196}
197
198void wxBitmap::SetDepth(int d)
199{
200 if (!M_BITMAPDATA)
201 m_refData = new wxBitmapRefData;
202
203 M_BITMAPDATA->m_depth = d;
204}
205
206void wxBitmap::SetQuality(int q)
207{
208 if (!M_BITMAPDATA)
209 m_refData = new wxBitmapRefData;
210
211 M_BITMAPDATA->m_quality = q;
212}
213
214void wxBitmap::SetOk(bool isOk)
215{
216 if (!M_BITMAPDATA)
217 m_refData = new wxBitmapRefData;
218
219 M_BITMAPDATA->m_ok = isOk;
220}
221
222void wxBitmap::SetPalette(const wxPalette& palette)
223{
224 if (!M_BITMAPDATA)
225 m_refData = new wxBitmapRefData;
226
227 M_BITMAPDATA->m_bitmapPalette = palette ;
228}
229
230void wxBitmap::SetMask(wxMask *mask)
231{
232 if (!M_BITMAPDATA)
233 m_refData = new wxBitmapRefData;
234
235 M_BITMAPDATA->m_bitmapMask = mask ;
236}
237
238/*
239 * wxMask
240 */
241
242wxMask::wxMask()
243{
244/* TODO
245 m_maskBitmap = 0;
246*/
247}
248
249// Construct a mask from a bitmap and a colour indicating
250// the transparent area
251wxMask::wxMask(const wxBitmap& bitmap, const wxColour& colour)
252{
253/* TODO
254 m_maskBitmap = 0;
255*/
256 Create(bitmap, colour);
257}
258
259// Construct a mask from a bitmap and a palette index indicating
260// the transparent area
261wxMask::wxMask(const wxBitmap& bitmap, int paletteIndex)
262{
263/* TODO
264 m_maskBitmap = 0;
265*/
266
267 Create(bitmap, paletteIndex);
268}
269
270// Construct a mask from a mono bitmap (copies the bitmap).
271wxMask::wxMask(const wxBitmap& bitmap)
272{
273/* TODO
274 m_maskBitmap = 0;
275*/
276
277 Create(bitmap);
278}
279
280wxMask::~wxMask()
281{
282// TODO: delete mask bitmap
283}
284
285// Create a mask from a mono bitmap (copies the bitmap).
286bool wxMask::Create(const wxBitmap& bitmap)
287{
288// TODO
289 return FALSE;
290}
291
292// Create a mask from a bitmap and a palette index indicating
293// the transparent area
294bool wxMask::Create(const wxBitmap& bitmap, int paletteIndex)
295{
296// TODO
297 return FALSE;
298}
299
300// Create a mask from a bitmap and a colour indicating
301// the transparent area
302bool wxMask::Create(const wxBitmap& bitmap, const wxColour& colour)
303{
304// TODO
305 return FALSE;
306}
307
308/*
309 * wxBitmapHandler
310 */
311
312IMPLEMENT_DYNAMIC_CLASS(wxBitmapHandler, wxObject)
313
314wxBitmapHandler::~wxBitmapHandler()
315{
316}
317
318bool wxBitmapHandler::Create(wxBitmap *bitmap, void *data, long type, int width, int height, int depth)
319{
320 return FALSE;
321}
322
323bool wxBitmapHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long type,
324 int desiredWidth, int desiredHeight)
325{
326 return FALSE;
327}
328
329bool wxBitmapHandler::SaveFile(const wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette)
330{
331 return FALSE;
332}
333
334/*
335 * Standard handlers
336 */
337
338/* TODO: bitmap handlers, a bit like this:
339class WXDLLEXPORT wxBMPResourceHandler: public wxBitmapHandler
340{
341 DECLARE_DYNAMIC_CLASS(wxBMPResourceHandler)
342public:
343 inline wxBMPResourceHandler()
344 {
345 m_name = "Windows bitmap resource";
346 m_extension = "";
347 m_type = wxBITMAP_TYPE_BMP_RESOURCE;
348 };
349
350 virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
351 int desiredWidth, int desiredHeight);
352};
353IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler)
354*/
355
356void wxBitmap::InitStandardHandlers()
357{
358/* TODO: initialize all standard bitmap or derive class handlers here.
359 AddHandler(new wxBMPResourceHandler);
360 AddHandler(new wxBMPFileHandler);
361 AddHandler(new wxXPMFileHandler);
362 AddHandler(new wxXPMDataHandler);
363 AddHandler(new wxICOResourceHandler);
364 AddHandler(new wxICOFileHandler);
365*/
366}
367
368bool wxBitmap::CopyFromIcon(const wxIcon& icno)
369{
370 return false;
371}
372
373wxPalette* wxBitmap::GetPalette() const
374{
375 return NULL;
376}
377
378wxBitmap wxBitmap::GetSubBitmap(wxRect const&) const
379{
380 return wxNullBitmap;
381}
382
383wxImage wxBitmap::ConvertToImage() const
384{
385 return wxNullImage;
386}
387
388bool wxBitmap::Ok() const
389{
390 return FALSE;
391}
392
393wxMask* wxBitmap::GetMask() const
394{
395 return NULL;
396}
397
398int wxBitmap::GetDepth() const
399{
400 return 0;
401}
402
403int wxBitmap::GetWidth() const
404{
405 return 0;
406}
407
408int wxBitmap::GetHeight() const
409{
410 return 0;
411}
412
413
414bool wxBitmap::CreateFromXpm(const char **)
415{
416 return false;
417}
418
419// vim:sts=4:sw=4:syn=cpp:et