New PostScript code

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1112 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Robert Roebling 1998-12-05 21:02:04 +00:00
parent b749747d9d
commit ed880dd448
12 changed files with 5359 additions and 17 deletions

346
include/wx/gtk/dcps.h Normal file
View File

@ -0,0 +1,346 @@
/////////////////////////////////////////////////////////////////////////////
// Name: dcps.h
// Purpose: wxPostScriptDC class
// Author: Julian Smart and others
// Modified by:
// RCS-ID: $Id$
// Copyright: (c) Julian Smart, Robert Roebling and Markus Holzem
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_POSTSCRPH__
#define _WX_POSTSCRPH__
#ifdef __GNUG__
#pragma interface
#endif
#include "wx/dc.h"
#include "wx/dialog.h"
#include "wx/module.h"
#include <fstream.h>
#if wxUSE_POSTSCRIPT
//-----------------------------------------------------------------------------
// classes
//-----------------------------------------------------------------------------
class wxPostScriptModule;
class wxPostScriptDC;
class wxPostScriptPrintDialog;
class wxPrintSetupData;
class wxPrintPaperType;
class wxPrintPaperDatabase;
//-----------------------------------------------------------------------------
// constants
//-----------------------------------------------------------------------------
#define wxID_PRINTER_COMMAND 1
#define wxID_PRINTER_OPTIONS 2
#define wxID_PRINTER_ORIENTATION 3
#define wxID_PRINTER_MODES 4
#define wxID_PRINTER_X_SCALE 5
#define wxID_PRINTER_Y_SCALE 6
#define wxID_PRINTER_X_TRANS 7
#define wxID_PRINTER_Y_TRANS 8
// Print Orientation (Should also add Left, Right)
enum {
PS_PORTRAIT = 1,
PS_LANDSCAPE = 2
};// ps_orientation = PS_PORTRAIT;
// Print Actions
enum {
PS_PRINTER,
PS_FILE,
PS_PREVIEW
};// ps_action = PS_PREVIEW;
//-----------------------------------------------------------------------------
// global data
//-----------------------------------------------------------------------------
WXDLLEXPORT_DATA(extern wxPrintSetupData*) wxThePrintSetupData;
WXDLLEXPORT_DATA(extern wxPrintPaperDatabase*) wxThePrintPaperDatabase;
//-----------------------------------------------------------------------------
// functions for compatibility
//-----------------------------------------------------------------------------
// PostScript printer settings
WXDLLEXPORT void wxSetPrinterCommand(const char *cmd);
WXDLLEXPORT void wxSetPrintPreviewCommand(const char *cmd);
WXDLLEXPORT void wxSetPrinterOptions(const char *flags);
WXDLLEXPORT void wxSetPrinterOrientation(int orientation);
WXDLLEXPORT void wxSetPrinterScaling(double x, double y);
WXDLLEXPORT void wxSetPrinterTranslation(long x, long y);
WXDLLEXPORT void wxSetPrinterMode(int mode);
WXDLLEXPORT void wxSetPrinterFile(const char *f);
WXDLLEXPORT void wxSetAFMPath(const char *f);
// Get current values
WXDLLEXPORT char* wxGetPrinterCommand();
WXDLLEXPORT char* wxGetPrintPreviewCommand();
WXDLLEXPORT char* wxGetPrinterOptions();
WXDLLEXPORT int wxGetPrinterOrientation();
WXDLLEXPORT void wxGetPrinterScaling(double* x, double* y);
WXDLLEXPORT void wxGetPrinterTranslation(long *x, long *y);
WXDLLEXPORT int wxGetPrinterMode();
WXDLLEXPORT char* wxGetPrinterFile();
WXDLLEXPORT char* wxGetAFMPath();
WXDLLEXPORT extern void wxInitializePrintSetupData(bool init = TRUE);
//-----------------------------------------------------------------------------
// wxPostScriptModule
//-----------------------------------------------------------------------------
// A module to allow initialization/cleanup of PostScript-related
// things without calling these functions from app.cpp.
class WXDLLEXPORT wxPostScriptModule: public wxModule
{
DECLARE_DYNAMIC_CLASS(wxPostScriptModule)
public:
wxPostScriptModule() {}
bool OnInit();
void OnExit();
};
//-----------------------------------------------------------------------------
// wxPostScriptDC
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxPostScriptDC: public wxDC
{
DECLARE_DYNAMIC_CLASS(wxPostScriptDC)
public:
wxPostScriptDC();
wxPostScriptDC(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL);
~wxPostScriptDC();
bool Create(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL);
virtual bool PrinterDialog(wxWindow *parent = (wxWindow *) NULL);
inline virtual void BeginDrawing(void) {} ;
inline virtual void EndDrawing(void) {} ;
void FloodFill(long x1, long y1, const wxColour &col, int style=wxFLOOD_SURFACE) ;
bool GetPixel(long x1, long y1, wxColour *col) const;
void DrawLine(long x1, long y1, long x2, long y2);
void CrossHair(long x, long y) ;
void DrawArc(long x1,long y1,long x2,long y2,long xc,long yc);
void DrawEllipticArc(long x,long y,long w,long h,double sa,double ea);
void DrawPoint(long x, long y);
// Avoid compiler warning
void DrawPoint(wxPoint& point) { wxDC::DrawPoint(point); }
void DrawLines(int n, wxPoint points[], long xoffset = 0, long yoffset = 0);
// Avoid compiler warning
void DrawLines(wxList *lines, long xoffset = 0, long yoffset = 0)
{ wxDC::DrawLines(lines, xoffset, yoffset); }
void DrawPolygon(int n, wxPoint points[], long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE);
// Avoid compiler warning
void DrawPolygon(wxList *lines, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE)
{ wxDC::DrawPolygon(lines, xoffset, yoffset, fillStyle); }
void DrawRectangle(long x, long y, long width, long height);
void DrawRoundedRectangle(long x, long y, long width, long height, double radius = 20);
void DrawEllipse(long x, long y, long width, long height);
void DrawSpline(wxList *points);
bool Blit(long xdest, long ydest, long width, long height,
wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE);
inline bool CanDrawBitmap(void) const { return TRUE; }
void DrawIcon( const wxIcon& icon, long x, long y );
void DrawBitmap( const wxBitmap& bitmap, long x, long y, bool useMask=FALSE );
void DrawText(const wxString& text, long x, long y, bool use16 = FALSE);
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 SetClippingRegion(long x, long y, long width, long height);
void SetClippingRegion( const wxRegion &region );
void DestroyClippingRegion();
bool StartDoc(const wxString& message);
void EndDoc();
void StartPage();
void EndPage();
long GetCharHeight();
long GetCharWidth();
inline bool CanGetTextExtent(void) const { return FALSE; }
void GetTextExtent(const wxString& string, long *x, long *y,
long *descent = (long *) NULL,
long *externalLeading = (long *) NULL,
wxFont *theFont = (wxFont *) NULL, bool use16 = FALSE);
void GetSize(int* width, int* height) const;
void GetSizeMM(long *width, long *height) const;
void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
void SetDeviceOrigin( long x, long y );
inline void SetBackgroundMode(int WXUNUSED(mode)) {};
inline void SetPalette(const wxPalette& WXUNUSED(palette)) {}
inline ofstream *GetStream(void) const { return m_pstream; }
protected:
ofstream * m_pstream; // PostScript output stream
wxString m_title;
unsigned char m_currentRed;
unsigned char m_currentGreen;
unsigned char m_currentBlue;
int m_pageNumber;
bool m_clipping;
double m_underlinePosition;
double m_underlineThickness;
};
//-----------------------------------------------------------------------------
// wxPostScriptPrintDialog
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxPostScriptPrintDialog: public wxDialog
{
DECLARE_CLASS(wxPostScriptPrintDialog)
public:
wxPostScriptPrintDialog (wxWindow *parent, const wxString& title,
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_DIALOG_STYLE);
virtual int ShowModal(void) ;
};
//-----------------------------------------------------------------------------
// wxPrintSetupData
//-----------------------------------------------------------------------------
/*
* PostScript print setup information
*/
class WXDLLEXPORT wxPrintSetupData: public wxObject
{
public:
char *printerCommand;
char *previewCommand;
char *printerFlags;
char *printerFile;
int printerOrient;
double printerScaleX;
double printerScaleY;
long printerTranslateX;
long printerTranslateY;
// 1 = Preview, 2 = print to file, 3 = send to printer
int printerMode;
char *afmPath;
// A name in the paper database (see wx_print.h: the printing framework)
char *paperName;
bool printColour;
public:
wxPrintSetupData();
~wxPrintSetupData();
void SetPrinterCommand(const char *cmd);
void SetPaperName(const char *paper);
void SetPrintPreviewCommand(const char *cmd);
void SetPrinterOptions(const char *flags);
void SetPrinterFile(const char *f);
void SetPrinterOrientation(int orient);
void SetPrinterScaling(double x, double y);
void SetPrinterTranslation(long x, long y);
// 1 = Preview, 2 = print to file, 3 = send to printer
void SetPrinterMode(int mode);
void SetAFMPath(const char *f);
void SetColour(bool col);
// Get current values
char *GetPrinterCommand();
char *GetPrintPreviewCommand();
char *GetPrinterOptions();
char *GetPrinterFile();
char *GetPaperName();
int GetPrinterOrientation();
void GetPrinterScaling(double* x, double* y);
void GetPrinterTranslation(long *x, long *y);
int GetPrinterMode();
char *GetAFMPath();
bool GetColour();
void operator=(wxPrintSetupData& data);
private:
DECLARE_DYNAMIC_CLASS(wxPrintSetupData)
};
//-----------------------------------------------------------------------------
// wxPrintPaperType
//-----------------------------------------------------------------------------
/*
* Again, this only really needed for non-Windows platforms
* or if you want to test the PostScript printing under Windows.
*/
class WXDLLEXPORT wxPrintPaperType: public wxObject
{
public:
wxPrintPaperType(const char *name = (const char *) NULL, int wmm = 0, int hmm = 0, int wp = 0, int hp = 0);
~wxPrintPaperType();
public:
int widthMM;
int heightMM;
int widthPixels;
int heightPixels;
char *pageName;
private:
DECLARE_DYNAMIC_CLASS(wxPrintPaperType)
};
//-----------------------------------------------------------------------------
// wxPrintPaperDataBase
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxPrintPaperDatabase: public wxList
{
public:
wxPrintPaperDatabase();
~wxPrintPaperDatabase();
void CreateDatabase();
void ClearDatabase();
void AddPaperType(const char *name, int wmm, int hmm, int wp, int hp);
wxPrintPaperType *FindPaperType(const char *name);
private:
DECLARE_DYNAMIC_CLASS(wxPrintPaperDatabase)
};
#endif
// wxUSE_POSTSCRIPT
#endif
// _WX_POSTSCRPH__

346
include/wx/gtk1/dcps.h Normal file
View File

@ -0,0 +1,346 @@
/////////////////////////////////////////////////////////////////////////////
// Name: dcps.h
// Purpose: wxPostScriptDC class
// Author: Julian Smart and others
// Modified by:
// RCS-ID: $Id$
// Copyright: (c) Julian Smart, Robert Roebling and Markus Holzem
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_POSTSCRPH__
#define _WX_POSTSCRPH__
#ifdef __GNUG__
#pragma interface
#endif
#include "wx/dc.h"
#include "wx/dialog.h"
#include "wx/module.h"
#include <fstream.h>
#if wxUSE_POSTSCRIPT
//-----------------------------------------------------------------------------
// classes
//-----------------------------------------------------------------------------
class wxPostScriptModule;
class wxPostScriptDC;
class wxPostScriptPrintDialog;
class wxPrintSetupData;
class wxPrintPaperType;
class wxPrintPaperDatabase;
//-----------------------------------------------------------------------------
// constants
//-----------------------------------------------------------------------------
#define wxID_PRINTER_COMMAND 1
#define wxID_PRINTER_OPTIONS 2
#define wxID_PRINTER_ORIENTATION 3
#define wxID_PRINTER_MODES 4
#define wxID_PRINTER_X_SCALE 5
#define wxID_PRINTER_Y_SCALE 6
#define wxID_PRINTER_X_TRANS 7
#define wxID_PRINTER_Y_TRANS 8
// Print Orientation (Should also add Left, Right)
enum {
PS_PORTRAIT = 1,
PS_LANDSCAPE = 2
};// ps_orientation = PS_PORTRAIT;
// Print Actions
enum {
PS_PRINTER,
PS_FILE,
PS_PREVIEW
};// ps_action = PS_PREVIEW;
//-----------------------------------------------------------------------------
// global data
//-----------------------------------------------------------------------------
WXDLLEXPORT_DATA(extern wxPrintSetupData*) wxThePrintSetupData;
WXDLLEXPORT_DATA(extern wxPrintPaperDatabase*) wxThePrintPaperDatabase;
//-----------------------------------------------------------------------------
// functions for compatibility
//-----------------------------------------------------------------------------
// PostScript printer settings
WXDLLEXPORT void wxSetPrinterCommand(const char *cmd);
WXDLLEXPORT void wxSetPrintPreviewCommand(const char *cmd);
WXDLLEXPORT void wxSetPrinterOptions(const char *flags);
WXDLLEXPORT void wxSetPrinterOrientation(int orientation);
WXDLLEXPORT void wxSetPrinterScaling(double x, double y);
WXDLLEXPORT void wxSetPrinterTranslation(long x, long y);
WXDLLEXPORT void wxSetPrinterMode(int mode);
WXDLLEXPORT void wxSetPrinterFile(const char *f);
WXDLLEXPORT void wxSetAFMPath(const char *f);
// Get current values
WXDLLEXPORT char* wxGetPrinterCommand();
WXDLLEXPORT char* wxGetPrintPreviewCommand();
WXDLLEXPORT char* wxGetPrinterOptions();
WXDLLEXPORT int wxGetPrinterOrientation();
WXDLLEXPORT void wxGetPrinterScaling(double* x, double* y);
WXDLLEXPORT void wxGetPrinterTranslation(long *x, long *y);
WXDLLEXPORT int wxGetPrinterMode();
WXDLLEXPORT char* wxGetPrinterFile();
WXDLLEXPORT char* wxGetAFMPath();
WXDLLEXPORT extern void wxInitializePrintSetupData(bool init = TRUE);
//-----------------------------------------------------------------------------
// wxPostScriptModule
//-----------------------------------------------------------------------------
// A module to allow initialization/cleanup of PostScript-related
// things without calling these functions from app.cpp.
class WXDLLEXPORT wxPostScriptModule: public wxModule
{
DECLARE_DYNAMIC_CLASS(wxPostScriptModule)
public:
wxPostScriptModule() {}
bool OnInit();
void OnExit();
};
//-----------------------------------------------------------------------------
// wxPostScriptDC
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxPostScriptDC: public wxDC
{
DECLARE_DYNAMIC_CLASS(wxPostScriptDC)
public:
wxPostScriptDC();
wxPostScriptDC(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL);
~wxPostScriptDC();
bool Create(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL);
virtual bool PrinterDialog(wxWindow *parent = (wxWindow *) NULL);
inline virtual void BeginDrawing(void) {} ;
inline virtual void EndDrawing(void) {} ;
void FloodFill(long x1, long y1, const wxColour &col, int style=wxFLOOD_SURFACE) ;
bool GetPixel(long x1, long y1, wxColour *col) const;
void DrawLine(long x1, long y1, long x2, long y2);
void CrossHair(long x, long y) ;
void DrawArc(long x1,long y1,long x2,long y2,long xc,long yc);
void DrawEllipticArc(long x,long y,long w,long h,double sa,double ea);
void DrawPoint(long x, long y);
// Avoid compiler warning
void DrawPoint(wxPoint& point) { wxDC::DrawPoint(point); }
void DrawLines(int n, wxPoint points[], long xoffset = 0, long yoffset = 0);
// Avoid compiler warning
void DrawLines(wxList *lines, long xoffset = 0, long yoffset = 0)
{ wxDC::DrawLines(lines, xoffset, yoffset); }
void DrawPolygon(int n, wxPoint points[], long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE);
// Avoid compiler warning
void DrawPolygon(wxList *lines, long xoffset = 0, long yoffset = 0, int fillStyle=wxODDEVEN_RULE)
{ wxDC::DrawPolygon(lines, xoffset, yoffset, fillStyle); }
void DrawRectangle(long x, long y, long width, long height);
void DrawRoundedRectangle(long x, long y, long width, long height, double radius = 20);
void DrawEllipse(long x, long y, long width, long height);
void DrawSpline(wxList *points);
bool Blit(long xdest, long ydest, long width, long height,
wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE);
inline bool CanDrawBitmap(void) const { return TRUE; }
void DrawIcon( const wxIcon& icon, long x, long y );
void DrawBitmap( const wxBitmap& bitmap, long x, long y, bool useMask=FALSE );
void DrawText(const wxString& text, long x, long y, bool use16 = FALSE);
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 SetClippingRegion(long x, long y, long width, long height);
void SetClippingRegion( const wxRegion &region );
void DestroyClippingRegion();
bool StartDoc(const wxString& message);
void EndDoc();
void StartPage();
void EndPage();
long GetCharHeight();
long GetCharWidth();
inline bool CanGetTextExtent(void) const { return FALSE; }
void GetTextExtent(const wxString& string, long *x, long *y,
long *descent = (long *) NULL,
long *externalLeading = (long *) NULL,
wxFont *theFont = (wxFont *) NULL, bool use16 = FALSE);
void GetSize(int* width, int* height) const;
void GetSizeMM(long *width, long *height) const;
void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
void SetDeviceOrigin( long x, long y );
inline void SetBackgroundMode(int WXUNUSED(mode)) {};
inline void SetPalette(const wxPalette& WXUNUSED(palette)) {}
inline ofstream *GetStream(void) const { return m_pstream; }
protected:
ofstream * m_pstream; // PostScript output stream
wxString m_title;
unsigned char m_currentRed;
unsigned char m_currentGreen;
unsigned char m_currentBlue;
int m_pageNumber;
bool m_clipping;
double m_underlinePosition;
double m_underlineThickness;
};
//-----------------------------------------------------------------------------
// wxPostScriptPrintDialog
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxPostScriptPrintDialog: public wxDialog
{
DECLARE_CLASS(wxPostScriptPrintDialog)
public:
wxPostScriptPrintDialog (wxWindow *parent, const wxString& title,
const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
long style = wxDEFAULT_DIALOG_STYLE);
virtual int ShowModal(void) ;
};
//-----------------------------------------------------------------------------
// wxPrintSetupData
//-----------------------------------------------------------------------------
/*
* PostScript print setup information
*/
class WXDLLEXPORT wxPrintSetupData: public wxObject
{
public:
char *printerCommand;
char *previewCommand;
char *printerFlags;
char *printerFile;
int printerOrient;
double printerScaleX;
double printerScaleY;
long printerTranslateX;
long printerTranslateY;
// 1 = Preview, 2 = print to file, 3 = send to printer
int printerMode;
char *afmPath;
// A name in the paper database (see wx_print.h: the printing framework)
char *paperName;
bool printColour;
public:
wxPrintSetupData();
~wxPrintSetupData();
void SetPrinterCommand(const char *cmd);
void SetPaperName(const char *paper);
void SetPrintPreviewCommand(const char *cmd);
void SetPrinterOptions(const char *flags);
void SetPrinterFile(const char *f);
void SetPrinterOrientation(int orient);
void SetPrinterScaling(double x, double y);
void SetPrinterTranslation(long x, long y);
// 1 = Preview, 2 = print to file, 3 = send to printer
void SetPrinterMode(int mode);
void SetAFMPath(const char *f);
void SetColour(bool col);
// Get current values
char *GetPrinterCommand();
char *GetPrintPreviewCommand();
char *GetPrinterOptions();
char *GetPrinterFile();
char *GetPaperName();
int GetPrinterOrientation();
void GetPrinterScaling(double* x, double* y);
void GetPrinterTranslation(long *x, long *y);
int GetPrinterMode();
char *GetAFMPath();
bool GetColour();
void operator=(wxPrintSetupData& data);
private:
DECLARE_DYNAMIC_CLASS(wxPrintSetupData)
};
//-----------------------------------------------------------------------------
// wxPrintPaperType
//-----------------------------------------------------------------------------
/*
* Again, this only really needed for non-Windows platforms
* or if you want to test the PostScript printing under Windows.
*/
class WXDLLEXPORT wxPrintPaperType: public wxObject
{
public:
wxPrintPaperType(const char *name = (const char *) NULL, int wmm = 0, int hmm = 0, int wp = 0, int hp = 0);
~wxPrintPaperType();
public:
int widthMM;
int heightMM;
int widthPixels;
int heightPixels;
char *pageName;
private:
DECLARE_DYNAMIC_CLASS(wxPrintPaperType)
};
//-----------------------------------------------------------------------------
// wxPrintPaperDataBase
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxPrintPaperDatabase: public wxList
{
public:
wxPrintPaperDatabase();
~wxPrintPaperDatabase();
void CreateDatabase();
void ClearDatabase();
void AddPaperType(const char *name, int wmm, int hmm, int wp, int hp);
wxPrintPaperType *FindPaperType(const char *name);
private:
DECLARE_DYNAMIC_CLASS(wxPrintPaperDatabase)
};
#endif
// wxUSE_POSTSCRIPT
#endif
// _WX_POSTSCRPH__

View File

@ -9,6 +9,12 @@
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __WXGTK__
#include "wx/gtk/dcps.h"
#else
#ifndef _WX_POSTSCRPH__
#define _WX_POSTSCRPH__
@ -308,6 +314,13 @@ private:
WXDLLEXPORT_DATA(extern wxPrintPaperDatabase*) wxThePrintPaperDatabase;
#endif // wxUSE_POSTSCRIPT
#endif
// wxUSE_POSTSCRIPT
#endif
// _WX_POSTSCRPH__
#endif
// __WXGTK__

View File

@ -383,6 +383,7 @@ bool MyPrintout::OnPrintPage(int page)
DrawPageTwo(dc);
dc->SetDeviceOrigin(0, 0);
dc->SetUserScale(1.0, 1.0);
char buf[200];
sprintf(buf, "PAGE %d", page);
@ -499,8 +500,8 @@ void MyPrintout::DrawPageTwo(wxDC *dc)
float logUnitsFactor = (float)(ppiPrinterX/(scale*25.1));
float logUnits = (float)(50*logUnitsFactor);
dc->SetPen(* wxBLACK_PEN);
dc->DrawLine(50, 50, (long)(50.0 + logUnits), 50);
dc->DrawLine(50, 50, 50, (long)(50.0 + logUnits));
dc->DrawLine(50, 250, (long)(50.0 + logUnits), 250);
dc->DrawLine(50, 250, 50, (long)(250.0 + logUnits));
dc->SetFont(* wxGetApp().m_testFont);
dc->SetBackgroundMode(wxTRANSPARENT);
@ -522,7 +523,7 @@ void MyPrintout::DrawPageTwo(wxDC *dc)
float bottomMarginLogical = (float)(logUnitsFactor*(pageHeightMM - bottomMargin));
float rightMarginLogical = (float)(logUnitsFactor*(pageWidthMM - rightMargin));
dc->SetPen(wxBLACK_PEN);
dc->SetPen(wxRED_PEN);
dc->DrawLine( (long)leftMarginLogical, (long)topMarginLogical,
(long)rightMarginLogical, (long)topMarginLogical);
dc->DrawLine( (long)leftMarginLogical, (long)bottomMarginLogical,
@ -534,12 +535,14 @@ void MyPrintout::DrawPageTwo(wxDC *dc)
// Writes a header on a page. Margin units are in millimetres.
bool WritePageHeader(wxPrintout *printout, wxDC *dc, char *text, float mmToLogical)
{
/*
static wxFont *headerFont = (wxFont *) NULL;
if (!headerFont)
{
headerFont = wxTheFontList->FindOrCreateFont(16, wxSWISS, wxNORMAL, wxBOLD);
}
dc->SetFont(headerFont);
*/
int pageWidthMM, pageHeightMM;

View File

@ -2594,6 +2594,15 @@ void wxPrintPaperDatabase::CreateDatabase()
AddPaperType(_("A3 297 x 420 mm"), 297, 420, 842, 1191);
AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279, 612, 791);
AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356, 612, 1009);
/*
This is for 100 ppi
AddPaperType(_("A4 210 x 297 mm"), 210, 297, 210*4, 297*4 );
AddPaperType(_("A3 297 x 420 mm"), 297, 420, 297*4, 420*4 );
AddPaperType(_("Letter 8 1/2 x 11 in"), 216, 279, 216*4, 279*4 );
AddPaperType(_("Legal 8 1/2 x 14 in"), 216, 356, 216*4, 356*4 );
*/
}
void wxPrintPaperDatabase::ClearDatabase()

View File

@ -708,7 +708,7 @@ bool wxPrintPreviewBase::DrawBlankPage(wxWindow *canvas, wxDC& dc)
/*
dc.DrawRectangle((int)(x-1 + shadowOffset), (int)(y-1 + shadowOffset), (int)(actualWidth+2), (int)(actualHeight+2));
*/
dc.DrawRectangle((int)(x + shadowOffset), (int)(y + actualHeight), (int)(actualWidth), shadowOffset);
dc.DrawRectangle((int)(x + shadowOffset), (int)(y + actualHeight+1), (int)(actualWidth), shadowOffset);
dc.DrawRectangle((int)(x + actualWidth), (int)(y + shadowOffset), shadowOffset, (int)(actualHeight));
// Draw blank page allowing for 1-pixel border AROUND the actual page
@ -722,7 +722,7 @@ bool wxPrintPreviewBase::DrawBlankPage(wxWindow *canvas, wxDC& dc)
printf( "x: %d y: %d w: %d h: %d.\n", (int)r.x, (int)r.y, (int)r.width, (int)r.height );
*/
dc.DrawRectangle((int)(x-1), (int)(y-1), (int)(actualWidth+2), (int)(actualHeight+2));
dc.DrawRectangle((int)(x-2), (int)(y-1), (int)(actualWidth+3), (int)(actualHeight+2));
return TRUE;
}

View File

@ -124,11 +124,17 @@ bool wxPostScriptPrinter::Print(wxWindow *parent, wxPrintout *printout, bool pro
int logPPIPrinterX = 0;
int logPPIPrinterY = 0;
// Correct values for X/PostScript?
logPPIScreenX = 100;
logPPIScreenY = 100;
/*
// Correct values for X/PostScript?
logPPIPrinterX = 100;
logPPIPrinterY = 100;
*/
logPPIPrinterX = 72;
logPPIPrinterY = 72;
printout->SetPPIScreen(logPPIScreenX, logPPIScreenY);
printout->SetPPIPrinter(logPPIPrinterX, logPPIPrinterY);
@ -238,7 +244,8 @@ void wxPostScriptPrintPreview::DetermineScaling(void)
if (paper)
{
m_previewPrintout->SetPPIScreen(100, 100);
m_previewPrintout->SetPPIPrinter(100, 100);
// m_previewPrintout->SetPPIPrinter(100, 100);
m_previewPrintout->SetPPIPrinter(72, 72);
// If in landscape mode, we need to swap the width and height.
if ( m_printData.GetOrientation() == wxLANDSCAPE )

View File

@ -35,7 +35,6 @@ LIB_CPP_SRC=\
common/module.cpp \
common/object.cpp \
common/odbc.cpp \
common/postscrp.cpp \
common/prntbase.cpp \
common/resource.cpp \
common/serbase.cpp \
@ -83,6 +82,7 @@ LIB_CPP_SRC=\
gtk/dc.cpp \
gtk/dcclient.cpp \
gtk/dcmemory.cpp \
gtk/dcps.cpp \
gtk/dcscreen.cpp \
gtk/dnd.cpp \
gtk/dialog.cpp \

View File

@ -143,10 +143,10 @@ void wxWindowDC::DrawLine( long x1, long y1, long x2, long y2 )
{
gdk_draw_line( m_window, m_penGC,
XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2) );
CalcBoundingBox(x1, y1);
CalcBoundingBox(x2, y2);
}
CalcBoundingBox(x1, y1);
CalcBoundingBox(x2, y2);
}
void wxWindowDC::CrossHair( long x, long y )
@ -487,7 +487,7 @@ void wxWindowDC::DrawEllipse( long x, long y, long width, long height )
if (m_pen.GetStyle() != wxTRANSPARENT)
gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, ww, hh, 0, 360*64 );
CalcBoundingBox( x, y );
CalcBoundingBox( x - width, y - height );
CalcBoundingBox( x + width, y + height );
}

2309
src/gtk/dcps.cpp Normal file

File diff suppressed because it is too large Load Diff

View File

@ -143,10 +143,10 @@ void wxWindowDC::DrawLine( long x1, long y1, long x2, long y2 )
{
gdk_draw_line( m_window, m_penGC,
XLOG2DEV(x1), YLOG2DEV(y1), XLOG2DEV(x2), YLOG2DEV(y2) );
CalcBoundingBox(x1, y1);
CalcBoundingBox(x2, y2);
}
CalcBoundingBox(x1, y1);
CalcBoundingBox(x2, y2);
}
void wxWindowDC::CrossHair( long x, long y )
@ -487,7 +487,7 @@ void wxWindowDC::DrawEllipse( long x, long y, long width, long height )
if (m_pen.GetStyle() != wxTRANSPARENT)
gdk_draw_arc( m_window, m_penGC, FALSE, xx, yy, ww, hh, 0, 360*64 );
CalcBoundingBox( x, y );
CalcBoundingBox( x - width, y - height );
CalcBoundingBox( x + width, y + height );
}

2309
src/gtk1/dcps.cpp Normal file

File diff suppressed because it is too large Load Diff