wxCocoa: Preliminary wxMemoryDC implementation

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
David Elliott 2003-07-21 20:55:50 +00:00
parent 559b61bf8c
commit 28f3fe51bd
3 changed files with 85 additions and 54 deletions

View File

@ -4,15 +4,15 @@
// Author: David Elliott
// Modified by:
// Created: 2003/03/16
// RCS-ID: $Id:
// RCS-ID: $Id$
// Copyright: (c) 2003 David Elliott
// Licence: wxWindows license
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __WX_COCOA_DCMEMORY_H__
#define __WX_COCOA_DCMEMORY_H__
#include "wx/dcclient.h"
#include "wx/dc.h"
class WXDLLEXPORT wxMemoryDC: public wxDC
{
@ -23,6 +23,9 @@ public:
~wxMemoryDC(void);
virtual void SelectObject(const wxBitmap& bitmap);
virtual void DoGetSize(int *width, int *height) const;
protected:
wxBitmap m_selectedBitmap;
WX_NSImage m_cocoaNSImage;
// DC stack
virtual bool CocoaLockFocus();
virtual bool CocoaUnlockFocus();

View File

@ -1,51 +0,0 @@
/////////////////////////////////////////////////////////////////////////////
// Name: src/cocoa/dcmemory.cpp
// Purpose: wxMemoryDC class
// Author: David Elliott
// Modified by:
// Created: 2003/03/16
// RCS-ID: $Id:
// Copyright: (c) 2002 David Elliott
// Licence: wxWindows license
/////////////////////////////////////////////////////////////////////////////
#include "wx/dcmemory.h"
//-----------------------------------------------------------------------------
// wxMemoryDC
//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxDC)
wxMemoryDC::wxMemoryDC(void)
{
m_ok = false;
};
wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
{
m_ok = false;
};
wxMemoryDC::~wxMemoryDC(void)
{
}
bool wxMemoryDC::CocoaLockFocus()
{
return false;
}
bool wxMemoryDC::CocoaUnlockFocus()
{
return false;
}
void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
{
}
void wxMemoryDC::DoGetSize( int *width, int *height ) const
{
}

79
src/cocoa/dcmemory.mm Normal file
View File

@ -0,0 +1,79 @@
/////////////////////////////////////////////////////////////////////////////
// Name: src/cocoa/dcmemory.mm
// Purpose: wxMemoryDC class
// Author: David Elliott
// Modified by:
// Created: 2003/03/16
// RCS-ID: $Id$
// Copyright: (c) 2002 David Elliott
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#include "wx/dcmemory.h"
#import <AppKit/NSImage.h>
//-----------------------------------------------------------------------------
// wxMemoryDC
//-----------------------------------------------------------------------------
IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxDC)
wxMemoryDC::wxMemoryDC(void)
{
m_cocoaNSImage = NULL;
m_ok = false;
}
wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) )
{
m_cocoaNSImage = NULL;
m_ok = false;
}
wxMemoryDC::~wxMemoryDC(void)
{
CocoaUnwindStackAndLoseFocus();
[m_cocoaNSImage release];
}
bool wxMemoryDC::CocoaLockFocus()
{
if(m_cocoaNSImage)
{
[m_cocoaNSImage lockFocusOnRepresentation: m_selectedBitmap.GetNSBitmapImageRep()];
sm_cocoaDCStack.Insert(this);
return true;
}
return false;
}
bool wxMemoryDC::CocoaUnlockFocus()
{
[m_cocoaNSImage unlockFocus];
return true;
}
void wxMemoryDC::SelectObject( const wxBitmap& bitmap )
{
CocoaUnwindStackAndLoseFocus();
[m_cocoaNSImage release];
m_cocoaNSImage = nil;
m_selectedBitmap = bitmap;
if(m_selectedBitmap.Ok())
{
m_cocoaNSImage = [[NSImage alloc]
initWithSize:NSMakeSize(m_selectedBitmap.GetWidth(),
m_selectedBitmap.GetHeight())];
[m_cocoaNSImage addRepresentation: m_selectedBitmap.GetNSBitmapImageRep()];
}
}
void wxMemoryDC::DoGetSize( int *width, int *height ) const
{
if(width)
*width = m_selectedBitmap.GetWidth();
if(height)
*height = m_selectedBitmap.GetHeight();
}