#ifndef _WX_DCPSG_H_
#define _WX_DCPSG_H_
-#include "wx/dc.h"
+#include "wx/defs.h"
#if wxUSE_PRINTING_ARCHITECTURE
#if wxUSE_POSTSCRIPT
+#include "wx/dc.h"
#include "wx/dialog.h"
#include "wx/module.h"
#include "wx/cmndata.h"
+#include "wx/strvararg.h"
+
+extern WXDLLIMPEXP_DATA_CORE(int) wxPageNumber;
//-----------------------------------------------------------------------------
// classes
// Recommended constructor
wxPostScriptDC(const wxPrintData& printData);
+
+ virtual ~wxPostScriptDC();
+
+ virtual bool Ok() const { return IsOk(); }
+ virtual bool IsOk() const;
+
+ bool CanDrawBitmap() const { return true; }
+
+ void Clear();
+ void SetFont( const wxFont& font );
+ void SetPen( const wxPen& pen );
+ void SetBrush( const wxBrush& brush );
+ void SetLogicalFunction( int function );
+ void SetBackground( const wxBrush& brush );
+
+ void DestroyClippingRegion();
+
+ bool StartDoc(const wxString& message);
+ void EndDoc();
+ void StartPage();
+ void EndPage();
+
+ wxCoord GetCharHeight() const;
+ wxCoord GetCharWidth() const;
+ bool CanGetTextExtent() const { return true; }
+
+ // Resolution in pixels per logical inch
+ wxSize GetPPI() const;
+
+ // overridden because origin is bottom left and
+ // axes are inverted
+ void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
+
+ // these need to be overridden as wxPostscriptDC inherits
+ // from the platform dependent wxDC and this we'd call
+ // e.g. wxMSW specific code here.
+ virtual void SetMapMode(int mode);
+ virtual void SetUserScale(double x, double y);
+ virtual void SetLogicalScale(double x, double y);
+ virtual void SetLogicalOrigin(wxCoord x, wxCoord y);
+ virtual void SetDeviceOrigin(wxCoord x, wxCoord y);
+
+ void SetBackgroundMode(int WXUNUSED(mode)) { }
+ void SetPalette(const wxPalette& WXUNUSED(palette)) { }
+
+ void SetPrintData(const wxPrintData& data);
+ wxPrintData& GetPrintData() { return m_printData; }
+
+ virtual int GetDepth() const { return 24; }
+
+ static void SetResolution(int ppi);
+ static int GetResolution();
+
+ WX_DEFINE_VARARG_FUNC_VOID(PsPrintf, 1, (const wxFormatString&),
+ DoPsPrintfFormatWchar, DoPsPrintfFormatUtf8)
+#ifdef __WATCOMC__
+ // workaround for http://bugzilla.openwatcom.org/show_bug.cgi?id=351
+ WX_VARARG_WATCOM_WORKAROUND(void, PsPrintf, 1, (const wxString&),
+ (wxFormatString(f1)));
+ WX_VARARG_WATCOM_WORKAROUND(void, PsPrintf, 1, (const wxCStrData&),
+ (wxFormatString(f1)));
+ WX_VARARG_WATCOM_WORKAROUND(void, PsPrintf, 1, (const char*),
+ (wxFormatString(f1)));
+ WX_VARARG_WATCOM_WORKAROUND(void, PsPrintf, 1, (const wchar_t*),
+ (wxFormatString(f1)));
+#endif
- // Recommended destructor :-)
- ~wxPostScriptDC();
-
- virtual bool Ok() const;
-
- bool CanDrawBitmap() const { return true; }
-
- void Clear();
- void SetFont( const wxFont& font );
- void SetPen( const wxPen& pen );
- void SetBrush( const wxBrush& brush );
- void SetLogicalFunction( int function );
- void SetBackground( const wxBrush& brush );
-
- void DestroyClippingRegion();
-
- bool StartDoc(const wxString& message);
- void EndDoc();
- void StartPage();
- void EndPage();
-
- wxCoord GetCharHeight() const;
- wxCoord GetCharWidth() const;
- bool CanGetTextExtent() const { return true; }
-
- // Resolution in pixels per logical inch
- wxSize GetPPI() const;
-
- void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
- void SetDeviceOrigin( wxCoord x, wxCoord y );
-
- void SetBackgroundMode(int WXUNUSED(mode)) { }
- void SetPalette(const wxPalette& WXUNUSED(palette)) { }
-
- wxPrintData& GetPrintData() { return m_printData; }
- void SetPrintData(const wxPrintData& data) { m_printData = data; }
-
- virtual int GetDepth() const { return 24; }
-
- static void SetResolution(int ppi);
- static int GetResolution();
-
- void PsPrintf( const wxChar* fmt, ... );
- void PsPrint( const char* psdata );
- void PsPrint( int ch );
+ void PsPrint( const wxString& psdata );
+ void PsPrint( int ch );
-#if wxUSE_UNICODE
- void PsPrint( const wxChar* psdata ) { PsPrint( wxConvUTF8.cWX2MB( psdata ) ); }
+private:
+#if !wxUSE_UTF8_LOCALE_ONLY
+ void DoPsPrintfFormatWchar(const wxChar *fmt, ... );
+#endif
+#if wxUSE_UNICODE_UTF8
+ void DoPsPrintfFormatUtf8(const char *fmt, ... );
#endif
-private:
static float ms_PSScaleFactor;
protected:
void DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y,
wxCoord *descent = NULL,
wxCoord *externalLeading = NULL,
- wxFont *theFont = NULL) const;
+ const wxFont *theFont = NULL) const;
void DoGetSize(int* width, int* height) const;
void DoGetSizeMM(int *width, int *height) const;