#import <AppKit/NSTypesetter.h>
#import <AppKit/NSImage.h>
+#include "wx/math.h" //math constants
#include "wx/listimpl.cpp"
WX_DEFINE_LIST(wxCocoaDCStack);
wxDC::wxDC(void)
{
- m_cocoaWxToBoundsTransform;
+ m_cocoaWxToBoundsTransform = nil;
m_pen = *wxBLACK_PEN;
}
wxDC::~wxDC(void)
{
+ [m_cocoaWxToBoundsTransform release];
}
bool wxDC::CocoaLockFocus()
// TODO: Apply device/logical/user position/scaling transformations
}
+void wxDC::CocoaUnapplyTransformations()
+{
+ // NOTE: You *must* call this with focus held.
+ // Undo all transforms so we're back in true Cocoa coords with
+ // no scaling or flipping.
+ NSAffineTransform *invertTransform;
+ invertTransform = [m_cocoaWxToBoundsTransform copy];
+ [invertTransform invert];
+ [invertTransform concat];
+ [invertTransform release];
+}
+
+bool wxDC::CocoaGetBounds(void *rectData)
+{
+ // We don't know what we are so we can't return anything.
+ return false;
+}
+
void wxDC::DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height)
{
wxAutoNSAutoreleasePool pool;
// cut here, the rest is stubs
///////////////////////////////////////////////////////////////////////////
-//-----------------------------------------------------------------------------
-// constants
-//-----------------------------------------------------------------------------
-
-#define mm2inches 0.0393700787402
-#define inches2mm 25.4
-#define mm2twips 56.6929133859
-#define twips2mm 0.0176388888889
-#define mm2pt 2.83464566929
-#define pt2mm 0.352777777778
-
//-----------------------------------------------------------------------------
// wxDC
//-----------------------------------------------------------------------------
void wxDC::Clear()
{
+ if(!CocoaTakeFocus()) return;
+
+ NSRect boundsRect;
+ if(!CocoaGetBounds(&boundsRect)) return;
+
+ NSGraphicsContext *context = [NSGraphicsContext currentContext];
+ [context saveGraphicsState];
+
+ // Undo all transforms so when we draw our bounds rect we
+ // really overwrite our bounds rect.
+ CocoaUnapplyTransformations();
+
+ [m_backgroundBrush.GetNSColor() set];
+ [NSBezierPath fillRect:boundsRect];
+
+ [context restoreGraphicsState];
}
void wxDC::SetBackground(const wxBrush& brush)