Made wxGTK dcps.cpp generic.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1447 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart 1999-01-22 11:06:20 +00:00
parent cd5bf2a6e3
commit bf38cbffd5
21 changed files with 763 additions and 4514 deletions

7
include/wx/dcps.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef _WX_DCPS_H_BASE_
#define _WX_DCPS_H_BASE_
#include "wx/generic/dcpsg.h"
#endif

View File

@ -1,62 +1,45 @@
/////////////////////////////////////////////////////////////////////////////
// Name: postscrp.h
// Name: dcps.h
// Purpose: wxPostScriptDC class
// Author: Julian Smart and others
// Modified by:
// Created: 01/02/97
// RCS-ID: $Id$
// Copyright: (c) Julian Smart and Markus Holzem
// Copyright: (c) Julian Smart, Robert Roebling and Markus Holzem
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef _WX_POSTSCRPH__
#define _WX_POSTSCRPH__
#ifndef _WX_DCPSG_H_
#define _WX_DCPSG_H_
#ifdef __GNUG__
#pragma interface "postscrp.h"
#pragma interface
#endif
#include "wx/dc.h"
#include "wx/dialog.h"
#include "wx/module.h"
#if wxUSE_POSTSCRIPT
// A module to allow initialization/cleanup of PostScript-related
// things without calling these functions from app.cpp.
#include "wx/dialog.h"
#include "wx/module.h"
#include <fstream.h>
class WXDLLEXPORT wxPostScriptModule: public wxModule
{
DECLARE_DYNAMIC_CLASS(wxPostScriptModule)
public:
wxPostScriptModule() {}
bool OnInit();
void OnExit();
};
#if wxUSE_IOSTREAMH
# include <fstream.h>
#else
# include <fstream>
# ifdef _MSC_VER
using namespace std;
# endif
#endif
//-----------------------------------------------------------------------------
// classes
//-----------------------------------------------------------------------------
#if defined(__WXGTK__) || defined(__WXMOTIF__)
class wxPostScriptDC;
// wxGTK has its own wxPostscriptDC
#include "wx/gtk/dcps.h"
#else
//-----------------------------------------------------------------------------
// wxPostScriptDC
//-----------------------------------------------------------------------------
class WXDLLEXPORT wxPostScriptDC: public wxDC
{
DECLARE_DYNAMIC_CLASS(wxPostScriptDC)
public:
// Create a printer DC
public:
wxPostScriptDC();
wxPostScriptDC(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL);
@ -64,10 +47,12 @@ class WXDLLEXPORT wxPostScriptDC: public wxDC
bool Create(const wxString& output, bool interactive = TRUE, wxWindow *parent = (wxWindow *) NULL);
virtual bool Ok() const;
virtual bool PrinterDialog(wxWindow *parent = (wxWindow *) NULL);
inline virtual void BeginDrawing(void) {} ;
inline virtual void EndDrawing(void) {} ;
virtual void BeginDrawing() {}
virtual void EndDrawing() {}
void FloodFill(long x1, long y1, const wxColour &col, int style=wxFLOOD_SURFACE) ;
bool GetPixel(long x1, long y1, wxColour *col) const;
@ -93,17 +78,22 @@ class WXDLLEXPORT wxPostScriptDC: public wxDC
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 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();
@ -115,52 +105,50 @@ class WXDLLEXPORT wxPostScriptDC: public wxDC
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);
virtual void SetLogicalOrigin(long x, long y);
virtual void CalcBoundingBox(long x, long y);
void SetMapMode(int mode);
void SetUserScale(double x, double y);
long DeviceToLogicalX(int x) const;
long DeviceToLogicalY(int y) const;
long DeviceToLogicalXRel(int x) const;
long DeviceToLogicalYRel(int y) const;
long LogicalToDeviceX(long x) const;
long LogicalToDeviceY(long y) const;
long LogicalToDeviceXRel(long x) const;
long LogicalToDeviceYRel(long y) const;
bool Blit(long xdest, long ydest, long width, long height,
wxDC *source, long xsrc, long ysrc, int rop = wxCOPY, bool useMask = FALSE);
inline bool CanGetTextExtent(void) const { return FALSE; }
inline bool CanDrawBitmap(void) const { return FALSE; }
void GetSize(int* width, int* height) const;
void GetSizeMM(long *width, long *height) const;
inline void SetBackgroundMode(int WXUNUSED(mode)) {};
inline void SetPalette(const wxPalette& WXUNUSED(palette)) {}
inline ofstream *GetStream(void) const { return m_pstream; }
inline int GetYOrigin(void) const { return m_yOrigin; }
void SetAxisOrientation( bool xLeftRight, bool yBottomUp );
void SetDeviceOrigin( long x, long y );
void SetupCTM();
inline void SetBackgroundMode(int WXUNUSED(mode)) {}
inline void SetPalette(const wxPalette& WXUNUSED(palette)) {}
inline ofstream *GetStream(void) const { return m_pstream; }
protected:
int m_yOrigin; // For EPS
ofstream * m_pstream; // PostScript output stream
wxString m_title;
unsigned char m_currentRed;
unsigned char m_currentGreen;
unsigned char m_currentBlue;
double m_scaleFactor;
int m_pageNumber;
bool m_clipping;
double m_underlinePosition;
double m_underlineThickness;
};
#endif
// __WXGTK__
// 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();
};
// TODO Needed? Should perhaps use wxGenericPrintDialog instead.
#if 1
#define wxID_PRINTER_COMMAND 1
#define wxID_PRINTER_OPTIONS 2
#define wxID_PRINTER_ORIENTATION 3
@ -180,7 +168,7 @@ public:
virtual int ShowModal(void) ;
};
#endif
// Print Orientation (Should also add Left, Right)
enum {
@ -319,10 +307,8 @@ private:
WXDLLEXPORT_DATA(extern wxPrintPaperDatabase*) wxThePrintPaperDatabase;
#endif
// wxUSE_POSTSCRIPT
#endif
// wxUSE_POSTSCRIPT
#endif
// _WX_POSTSCRPH__
// _WX_DCPSG_H_

View File

@ -21,7 +21,11 @@
#include "wx/dialog.h"
#include "wx/dc.h"
#include "wx/cmndata.h"
#include "wx/postscrp.h"
#include "wx/dialog.h"
#if wxUSE_POSTSCRIPT
#include "wx/dcps.h"
#endif
class WXDLLEXPORT wxTextCtrl;
class WXDLLEXPORT wxButton;

View File

@ -18,7 +18,10 @@
#include "wx/object.h"
#include "wx/string.h"
#include "wx/gdicmn.h"
#if wxUSE_STREAMS
#include "wx/stream.h"
#endif
//-----------------------------------------------------------------------------
// classes
@ -44,8 +47,10 @@ class WXDLLEXPORT wxImageHandler: public wxObject
public:
wxImageHandler() { m_name = ""; m_extension = ""; m_type = 0; }
#if wxUSE_STREAMS
virtual bool LoadFile( wxImage *image, wxInputStream& stream );
virtual bool SaveFile( wxImage *image, wxOutputStream& stream );
#endif
inline void SetName(const wxString& name) { m_name = name; }
inline void SetExtension(const wxString& ext) { m_extension = ext; }
@ -79,8 +84,11 @@ public:
m_type = wxBITMAP_TYPE_PNG;
};
#if wxUSE_STREAMS
virtual bool LoadFile( wxImage *image, wxInputStream& stream );
virtual bool SaveFile( wxImage *image, wxOutputStream& stream );
#endif
};
#endif
@ -101,7 +109,9 @@ public:
m_type = wxBITMAP_TYPE_BMP;
};
#if wxUSE_STREAMS
virtual bool LoadFile( wxImage *image, wxInputStream& stream );
#endif
};
//-----------------------------------------------------------------------------
@ -140,9 +150,16 @@ public:
unsigned char GetBlue( int x, int y );
virtual bool LoadFile( const wxString& name, long type = wxBITMAP_TYPE_PNG );
#if wxUSE_STREAMS
virtual bool LoadFile( wxInputStream& stream, long type = wxBITMAP_TYPE_PNG );
#endif
virtual bool SaveFile( const wxString& name, int type );
#if wxUSE_STREAMS
virtual bool SaveFile( wxOutputStream& stream, int type );
#endif
bool Ok() const;
int GetWidth() const;

View File

@ -134,6 +134,9 @@
#define wxUSE_STD_IOSTREAM 1
// Use standard C++ streams if 1. If 0, use wxWin
// streams implementation.
#define wxUSE_STREAMS 1
// Use wxStream implementation within wxWindows code
/*
* Finer detail
*

View File

@ -22,7 +22,6 @@
#ifndef WX_PRECOMP
#include "wx/wx.h"
#include "wx/postscrp.h"
#endif
#if !wxUSE_PRINTING_ARCHITECTURE

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +1,23 @@
/////////////////////////////////////////////////////////////////////////////
// Name: dcps.cpp
// Purpose: wxPostScriptDC implementation
// Name: dcpsg.cpp
// Purpose: Generic wxPostScriptDC implementation
// Author: Julian Smart, Robert Roebling, Markus Holzhem
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart and Markus Holzem
// Licence: wxWindows license
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifndef __WXMOTIF__
#ifdef __GNUG__
#pragma implementation
#pragma interface
#endif
#endif
#include "wx/defs.h"
#if wxUSE_POSTSCRIPT
#include "wx/postscrp.h"
#include "wx/dcmemory.h"
#include "wx/utils.h"
#include "wx/intl.h"
@ -29,6 +26,12 @@
#include "wx/msgdlg.h"
#include "wx/image.h"
#include "wx/log.h"
#include "wx/generic/dcpsg.h"
#include "wx/generic/prntdlgg.h"
#include "wx/button.h"
#include "wx/stattext.h"
#include "wx/radiobox.h"
#include "wx/textctrl.h"
#include <math.h>
@ -37,6 +40,26 @@
#include "gtk/gtk.h"
#endif
#ifdef __WXMSW__
#ifdef DrawText
#undef DrawText
#endif
#ifdef StartDoc
#undef StartDoc
#endif
#ifdef GetCharWidth
#undef GetCharWidth
#endif
#ifdef FindWindow
#undef FindWindow
#endif
#endif
//-----------------------------------------------------------------------------
// start and end of document/page
//-----------------------------------------------------------------------------
@ -1754,5 +1777,629 @@ void wxPostScriptDC::GetSizeMM(long *width, long *height) const
}
}
// Determine the Default Postscript Previewer
// available on the platform
#if defined(__SUN__) && defined(__XVIEW__)
// OpenWindow/NeWS's Postscript Previewer
# define PS_VIEWER_PROG "pageview"
#elif defined(__VMS__)
#define PS_VIEWER_PROG "view/format=ps/select=x_display"
#elif defined(__SGI__)
// SGI's Display Postscript Previewer
//# define PS_VIEWER_PROG "dps"
# define PS_VIEWER_PROG "xpsview"
#elif defined(__X__) || defined(__WXGTK__)
// Front-end to ghostscript
# define PS_VIEWER_PROG "ghostview"
#else
// Windows ghostscript/ghostview
# define PS_VIEWER_PROG NULL
#endif
wxPrintSetupData *wxThePrintSetupData = (wxPrintSetupData *) NULL;
#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxPostScriptModule, wxModule)
IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC)
IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject)
IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperType, wxObject)
#endif
// Redundant now I think
#if 1
IMPLEMENT_CLASS(wxPostScriptPrintDialog, wxDialog)
wxPostScriptPrintDialog::wxPostScriptPrintDialog (wxWindow *parent, const wxString& title,
const wxPoint& pos, const wxSize& size, long style):
wxDialog(parent, -1, title, pos, size, style)
{
wxBeginBusyCursor();
char buf[100];
int yPos = 40;
wxString
*orientation = new wxString[2],
*print_modes = new wxString[3];
int features;
long wx_printer_translate_x, wx_printer_translate_y;
double wx_printer_scale_x, wx_printer_scale_y;
orientation[0] = _("Portrait");
orientation[1] = _("Landscape");
print_modes[0] = _("Send to Printer");
print_modes[1] = _("Print to File");
print_modes[2] = _("Preview Only");
wxButton *okBut = new wxButton (this, wxID_OK, _("OK"), wxPoint(5, 5));
(void) new wxButton (this, wxID_CANCEL, _("Cancel"), wxPoint(40, 5));
okBut->SetDefault();
#if defined(__WXGTK__) || defined (__WXMOTIF__)
(void) new wxStaticText( this, -1, _("Printer Command: "),
wxPoint(5, yPos) );
(void) new wxTextCtrl( this, wxID_PRINTER_COMMAND, wxThePrintSetupData->GetPrinterCommand(),
wxPoint(100, yPos), wxSize(100, -1) );
(void) new wxStaticText( this, -1, _("Printer Options: "),
wxPoint(210, yPos) );
(void) new wxTextCtrl( this, wxID_PRINTER_OPTIONS, wxThePrintSetupData->GetPrinterOptions(),
wxPoint(305, yPos), wxSize(150, -1) );
yPos += 40;
#endif
wxRadioBox *radio0 = new wxRadioBox(this, wxID_PRINTER_ORIENTATION, "Orientation: ", wxPoint(5, yPos), wxSize(-1,-1),
2,orientation,2,wxRA_SPECIFY_ROWS);
radio0->SetSelection((int)wxThePrintSetupData->GetPrinterOrientation() - 1);
// @@@ Configuration hook
if (wxThePrintSetupData->GetPrintPreviewCommand() == NULL)
wxThePrintSetupData->SetPrintPreviewCommand(PS_VIEWER_PROG);
wxGetResource ("wxWindows", "PSView", &wxThePrintSetupData->previewCommand);
features = (wxThePrintSetupData->GetPrintPreviewCommand() &&
*wxThePrintSetupData->GetPrintPreviewCommand()) ? 3 : 2;
wxRadioBox *radio1 = new wxRadioBox(this, wxID_PRINTER_MODES, _("PostScript:"),
wxPoint(150, yPos),
wxSize(-1,-1), features,
print_modes, features, wxRA_SPECIFY_ROWS);
#ifdef __WXMSW__
radio1->Enable(0, FALSE);
if (wxThePrintSetupData->GetPrintPreviewCommand() && *wxThePrintSetupData->GetPrintPreviewCommand())
radio1->Enable(2, FALSE);
#endif
radio1->SetSelection((int)wxThePrintSetupData->GetPrinterMode());
wxThePrintSetupData->GetPrinterTranslation(&wx_printer_translate_x, &wx_printer_translate_y);
wxThePrintSetupData->GetPrinterScaling(&wx_printer_scale_x, &wx_printer_scale_y);
sprintf (buf, "%.2f", wx_printer_scale_x);
yPos += 90;
(void) new wxStaticText(this, -1, _("X Scaling"), wxPoint(5, yPos));
/* wxTextCtrl *text1 = */ (void) new wxTextCtrl(this, wxID_PRINTER_X_SCALE, buf, wxPoint(100, yPos), wxSize(100, -1));
sprintf (buf, "%.2f", wx_printer_scale_y);
(void) new wxStaticText(this, -1, _("Y Scaling"), wxPoint(220, yPos));
/* wxTextCtrl *text2 = */ (void) new wxTextCtrl(this, wxID_PRINTER_Y_SCALE, buf, wxPoint(320, yPos), wxSize(100, -1));
yPos += 25;
(void) new wxStaticText(this, -1, _("X Translation"), wxPoint(5, yPos));
sprintf (buf, "%.2ld", wx_printer_translate_x);
/* wxTextCtrl *text3 = */ (void) new wxTextCtrl(this, wxID_PRINTER_X_TRANS, buf, wxPoint(100, yPos), wxSize(100, -1));
(void) new wxStaticText(this, -1, _("Y Translation"), wxPoint(220, yPos));
sprintf (buf, "%.2ld", wx_printer_translate_y);
/* wxTextCtrl *text4 = */ (void) new wxTextCtrl(this, wxID_PRINTER_Y_TRANS, buf, wxPoint(320, yPos), wxSize(100, -1));
Fit ();
delete[] orientation;
delete[] print_modes;
wxEndBusyCursor();
}
int wxPostScriptPrintDialog::ShowModal ()
{
if ( wxDialog::ShowModal() == wxID_OK )
{
// wxTextCtrl *text0 = (wxTextCtrl *)FindWindow(wxID_PRINTER_OPTIONS);
wxTextCtrl *text1 = (wxTextCtrl *)FindWindow(wxID_PRINTER_X_SCALE);
wxTextCtrl *text2 = (wxTextCtrl *)FindWindow(wxID_PRINTER_Y_SCALE);
wxTextCtrl *text3 = (wxTextCtrl *)FindWindow(wxID_PRINTER_X_TRANS);
wxTextCtrl *text4 = (wxTextCtrl *)FindWindow(wxID_PRINTER_Y_TRANS);
// wxTextCtrl *text_prt = (wxTextCtrl *)FindWindow(wxID_PRINTER_COMMAND);
wxRadioBox *radio0 = (wxRadioBox *)FindWindow(wxID_PRINTER_ORIENTATION);
wxRadioBox *radio1 = (wxRadioBox *)FindWindow(wxID_PRINTER_MODES);
StringToDouble (WXSTRINGCAST text1->GetValue (), &wxThePrintSetupData->printerScaleX);
StringToDouble (WXSTRINGCAST text2->GetValue (), &wxThePrintSetupData->printerScaleY);
StringToLong (WXSTRINGCAST text3->GetValue (), &wxThePrintSetupData->printerTranslateX);
StringToLong (WXSTRINGCAST text4->GetValue (), &wxThePrintSetupData->printerTranslateY);
#ifdef __X__
// wxThePrintSetupData->SetPrinterOptions(WXSTRINGCAST text0->GetValue ());
// wxThePrintSetupData->SetPrinterCommand(WXSTRINGCAST text_prt->GetValue ());
#endif
wxThePrintSetupData->SetPrinterOrientation((radio0->GetSelection() == 1 ? PS_LANDSCAPE : PS_PORTRAIT));
// C++ wants this
switch ( radio1->GetSelection() ) {
case 0: wxThePrintSetupData->SetPrinterMode(PS_PRINTER); break;
case 1: wxThePrintSetupData->SetPrinterMode(PS_FILE); break;
case 2: wxThePrintSetupData->SetPrinterMode(PS_PREVIEW); break;
}
return wxID_OK;
}
return wxID_CANCEL;
}
#endif
// 0 (redundant)
// PostScript printer settings
// RETAINED FOR BACKWARD COMPATIBILITY
void wxSetPrinterCommand(const char *cmd)
{
wxThePrintSetupData->SetPrinterCommand(cmd);
}
void wxSetPrintPreviewCommand(const char *cmd)
{
wxThePrintSetupData->SetPrintPreviewCommand(cmd);
}
void wxSetPrinterOptions(const char *flags)
{
wxThePrintSetupData->SetPrinterOptions(flags);
}
void wxSetPrinterFile(const char *f)
{
wxThePrintSetupData->SetPrinterFile(f);
}
void wxSetPrinterOrientation(int orient)
{
wxThePrintSetupData->SetPrinterOrientation(orient);
}
void wxSetPrinterScaling(double x, double y)
{
wxThePrintSetupData->SetPrinterScaling(x, y);
}
void wxSetPrinterTranslation(long x, long y)
{
wxThePrintSetupData->SetPrinterTranslation(x, y);
}
// 1 = Preview, 2 = print to file, 3 = send to printer
void wxSetPrinterMode(int mode)
{
wxThePrintSetupData->SetPrinterMode(mode);
}
void wxSetAFMPath(const char *f)
{
wxThePrintSetupData->SetAFMPath(f);
}
// Get current values
char *wxGetPrinterCommand()
{
return wxThePrintSetupData->GetPrinterCommand();
}
char *wxGetPrintPreviewCommand()
{
return wxThePrintSetupData->GetPrintPreviewCommand();
}
char *wxGetPrinterOptions()
{
return wxThePrintSetupData->GetPrinterOptions();
}
char *wxGetPrinterFile()
{
return wxThePrintSetupData->GetPrinterFile();
}
int wxGetPrinterOrientation()
{
return wxThePrintSetupData->GetPrinterOrientation();
}
void wxGetPrinterScaling(double* x, double* y)
{
wxThePrintSetupData->GetPrinterScaling(x, y);
}
void wxGetPrinterTranslation(long *x, long *y)
{
wxThePrintSetupData->GetPrinterTranslation(x, y);
}
int wxGetPrinterMode()
{
return wxThePrintSetupData->GetPrinterMode();
}
char *wxGetAFMPath()
{
return wxThePrintSetupData->GetAFMPath();
}
/*
* Print setup data
*/
wxPrintSetupData::wxPrintSetupData()
{
printerCommand = (char *) NULL;
previewCommand = (char *) NULL;
printerFlags = (char *) NULL;
printerOrient = PS_PORTRAIT;
printerScaleX = (double)1.0;
printerScaleY = (double)1.0;
printerTranslateX = 0;
printerTranslateY = 0;
// 1 = Preview, 2 = print to file, 3 = send to printer
printerMode = 3;
afmPath = (char *) NULL;
paperName = (char *) NULL;
printColour = TRUE;
printerFile = (char *) NULL;
}
wxPrintSetupData::~wxPrintSetupData()
{
if (printerCommand)
delete[] printerCommand;
if (previewCommand)
delete[] previewCommand;
if (printerFlags)
delete[] printerFlags;
if (afmPath)
delete[] afmPath;
if (paperName)
delete[] paperName;
if (printerFile)
delete[] printerFile;
}
void wxPrintSetupData::SetPrinterCommand(const char *cmd)
{
if (cmd == printerCommand)
return;
if (printerCommand)
delete[] printerCommand;
if (cmd)
printerCommand = copystring(cmd);
else
printerCommand = (char *) NULL;
}
void wxPrintSetupData::SetPrintPreviewCommand(const char *cmd)
{
if (cmd == previewCommand)
return;
if (previewCommand)
delete[] previewCommand;
if (cmd)
previewCommand = copystring(cmd);
else
previewCommand = (char *) NULL;
}
void wxPrintSetupData::SetPaperName(const char *name)
{
if (name == paperName)
return;
if (paperName)
delete[] paperName;
if (name)
paperName = copystring(name);
else
paperName = (char *) NULL;
}
void wxPrintSetupData::SetPrinterOptions(const char *flags)
{
if (printerFlags == flags)
return;
if (printerFlags)
delete[] printerFlags;
if (flags)
printerFlags = copystring(flags);
else
printerFlags = (char *) NULL;
}
void wxPrintSetupData::SetPrinterFile(const char *f)
{
if (f == printerFile)
return;
if (printerFile)
delete[] printerFile;
if (f)
printerFile = copystring(f);
else
printerFile = (char *) NULL;
}
void wxPrintSetupData::SetPrinterOrientation(int orient)
{
printerOrient = orient;
}
void wxPrintSetupData::SetPrinterScaling(double x, double y)
{
printerScaleX = x;
printerScaleY = y;
}
void wxPrintSetupData::SetPrinterTranslation(long x, long y)
{
printerTranslateX = x;
printerTranslateY = y;
}
// 1 = Preview, 2 = print to file, 3 = send to printer
void wxPrintSetupData::SetPrinterMode(int mode)
{
printerMode = mode;
}
void wxPrintSetupData::SetAFMPath(const char *f)
{
if (f == afmPath)
return;
if (afmPath)
delete[] afmPath;
if (f)
afmPath = copystring(f);
else
afmPath = (char *) NULL;
}
void wxPrintSetupData::SetColour(bool col)
{
printColour = col;
}
// Get current values
char *wxPrintSetupData::GetPrinterCommand()
{
return printerCommand;
}
char *wxPrintSetupData::GetPrintPreviewCommand()
{
return previewCommand;
}
char *wxPrintSetupData::GetPrinterOptions()
{
return printerFlags;
}
char *wxPrintSetupData::GetPrinterFile()
{
return printerFile;
}
char *wxPrintSetupData::GetPaperName()
{
return paperName;
}
int wxPrintSetupData::GetPrinterOrientation()
{
return printerOrient;
}
void wxPrintSetupData::GetPrinterScaling(double *x, double *y)
{
*x = printerScaleX;
*y = printerScaleY;
}
void wxPrintSetupData::GetPrinterTranslation(long *x, long *y)
{
*x = printerTranslateX;
*y = printerTranslateY;
}
int wxPrintSetupData::GetPrinterMode()
{
return printerMode;
}
char *wxPrintSetupData::GetAFMPath()
{
return afmPath;
}
bool wxPrintSetupData::GetColour()
{
return printColour;
}
void wxPrintSetupData::operator=(wxPrintSetupData& data)
{
SetPrinterCommand(data.GetPrinterCommand());
SetPrintPreviewCommand(data.GetPrintPreviewCommand());
SetPrinterOptions(data.GetPrinterOptions());
long x, y;
data.GetPrinterTranslation(&x, &y);
SetPrinterTranslation(x, y);
double x1, y1;
data.GetPrinterScaling(&x1, &y1);
SetPrinterScaling(x1, y1);
SetPrinterOrientation(data.GetPrinterOrientation());
SetPrinterMode(data.GetPrinterMode());
SetAFMPath(data.GetAFMPath());
SetPaperName(data.GetPaperName());
SetColour(data.GetColour());
}
void wxInitializePrintSetupData(bool init)
{
if (init)
{
wxThePrintSetupData = new wxPrintSetupData;
wxThePrintSetupData->SetPrintPreviewCommand(PS_VIEWER_PROG);
wxThePrintSetupData->SetPrinterOrientation(PS_PORTRAIT);
wxThePrintSetupData->SetPrinterMode(PS_PREVIEW);
wxThePrintSetupData->SetPaperName(_("A4 210 x 297 mm"));
// Could have a .ini file to read in some defaults
// - and/or use environment variables, e.g. WXWIN
#ifdef __VMS__
wxThePrintSetupData->SetPrinterCommand("print");
wxThePrintSetupData->SetPrinterOptions("/nonotify/queue=psqueue");
wxThePrintSetupData->SetAFMPath("sys$ps_font_metrics:");
#endif
#ifdef __WXMSW__
wxThePrintSetupData->SetPrinterCommand("print");
wxThePrintSetupData->SetAFMPath("c:\\windows\\system\\");
wxThePrintSetupData->SetPrinterOptions(NULL);
#endif
#if !defined(__VMS__) && !defined(__WXMSW__)
wxThePrintSetupData->SetPrinterCommand("lpr");
wxThePrintSetupData->SetPrinterOptions((char *) NULL);
wxThePrintSetupData->SetAFMPath((char *) NULL);
#endif
}
else
{
if (wxThePrintSetupData)
delete wxThePrintSetupData;
wxThePrintSetupData = (wxPrintSetupData *) NULL;
}
}
/*
* Paper size database for PostScript
*/
wxPrintPaperType::wxPrintPaperType(const char *name, int wmm, int hmm, int wp, int hp)
{
widthMM = wmm;
heightMM = hmm;
widthPixels = wp;
heightPixels = hp;
pageName = copystring(name);
}
wxPrintPaperType::~wxPrintPaperType()
{
delete[] pageName;
}
/*
* Print paper database for PostScript
*/
#if !USE_SHARED_LIBRARIES
IMPLEMENT_DYNAMIC_CLASS(wxPrintPaperDatabase, wxList)
#endif
wxPrintPaperDatabase::wxPrintPaperDatabase():wxList(wxKEY_STRING)
{
DeleteContents(TRUE);
}
wxPrintPaperDatabase::~wxPrintPaperDatabase()
{
}
void wxPrintPaperDatabase::CreateDatabase()
{
// Need correct values for page size in pixels.
// Each unit is one 'point' = 1/72 of an inch.
// NOTE: WE NEED ALSO TO MAKE ADJUSTMENTS WHEN TRANSLATING
// in wxPostScriptDC code, so we can start from top left.
// So access this database and translate by appropriate number
// of points for this paper size. OR IS IT OK ALREADY?
// Can't remember where the PostScript origin is by default.
// Heck, someone will know how to make it hunky-dory...
// JACS 25/5/95
AddPaperType(_("A4 210 x 297 mm"), 210, 297, 595, 842);
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()
{
Clear();
}
void wxPrintPaperDatabase::AddPaperType(const char *name, int wmm, int hmm, int wp, int hp)
{
Append(name, new wxPrintPaperType(name, wmm, hmm, wp, hp));
}
wxPrintPaperType *wxPrintPaperDatabase::FindPaperType(const char *name)
{
wxNode *node = Find(name);
if (node)
return (wxPrintPaperType *)node->Data();
else
return (wxPrintPaperType *) NULL;
}
/*
* Initialization/cleanup module
*/
bool wxPostScriptModule::OnInit()
{
wxInitializePrintSetupData();
wxThePrintPaperDatabase = new wxPrintPaperDatabase;
wxThePrintPaperDatabase->CreateDatabase();
return TRUE;
}
void wxPostScriptModule::OnExit()
{
wxInitializePrintSetupData(FALSE);
delete wxThePrintPaperDatabase;
wxThePrintPaperDatabase = NULL;
}
#endif
// wxUSE_POSTSCRIPT

View File

@ -597,4 +597,3 @@ wxChoice *wxGenericPageSetupDialog::CreatePaperTypeChoice(int *x, int *y)
return choice;
}

View File

@ -37,7 +37,6 @@ LIB_CPP_SRC=\
common/object.cpp \
common/db.cpp \
common/dbtable.cpp \
common/postscrp.cpp \
common/prntbase.cpp \
common/serbase.cpp \
common/string.cpp \
@ -87,7 +86,6 @@ LIB_CPP_SRC=\
gtk/dc.cpp \
gtk/dcclient.cpp \
gtk/dcmemory.cpp \
gtk/dcps.cpp \
gtk/dcscreen.cpp \
gtk/dnd.cpp \
gtk/dialog.cpp \
@ -123,6 +121,7 @@ LIB_CPP_SRC=\
gtk/window.cpp \
\
generic/choicdgg.cpp \
generic/dcpsg.cpp \
generic/colrdlgg.cpp \
generic/dirdlgg.cpp \
generic/fontdlgg.cpp \

View File

@ -17,7 +17,7 @@
#include "wx/window.h"
#include "wx/dc.h"
#include "wx/accel.h"
#include "wx/postscrp.h"
#include "wx/dcps.h"
#define _MAXPATHLEN 500

View File

@ -17,7 +17,7 @@
#include "wx/window.h"
#include "wx/dc.h"
#include "wx/accel.h"
#include "wx/postscrp.h"
#include "wx/dcps.h"
#define _MAXPATHLEN 500

File diff suppressed because it is too large Load Diff

View File

@ -35,7 +35,6 @@ LIB_CPP_SRC=\
common/mimetype.cpp \
common/module.cpp \
common/object.cpp \
common/postscrp.cpp \
common/prntbase.cpp \
common/resource.cpp \
common/serbase.cpp \
@ -132,6 +131,7 @@ LIB_CPP_SRC=\
\
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
generic/dcpsg.cpp \
generic/fontdlgg.cpp \
generic/gridg.cpp \
generic/helpext.cpp \

View File

@ -14,7 +14,7 @@
#endif
#include "wx/wx.h"
#include "wx/postscrp.h"
#include "wx/dcps.h"
#define _MAXPATHLEN 500

View File

@ -39,7 +39,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 \
@ -90,7 +89,6 @@ LIB_CPP_SRC=\
dc.cpp \
dcclient.cpp \
dcmemory.cpp \
dcps.cpp \
dcscreen.cpp \
dialog.cpp \
dnd.cpp \
@ -133,6 +131,7 @@ LIB_CPP_SRC=\
../generic/choicdgg.cpp \
../generic/colrdlgg.cpp \
../generic/dirdlgg.cpp \
../generic/dcpsg.cpp \
../generic/fontdlgg.cpp \
../generic/gridg.cpp \
../generic/helphtml.cpp \

View File

@ -315,7 +315,7 @@ IMPLEMENT_CLASS(wxGenericPrintSetupDialog, wxDialog)
#endif
#if wxUSE_POSTSCRIPT
#include "wx/postscrp.h"
#include "wx/dcps.h"
IMPLEMENT_DYNAMIC_CLASS(wxPostScriptDC, wxDC)
IMPLEMENT_DYNAMIC_CLASS(wxPrintSetupData, wxObject)
IMPLEMENT_DYNAMIC_CLASS(wxPageSetupData, wxObject)

View File

@ -34,7 +34,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 \
@ -133,6 +132,7 @@ LIB_CPP_SRC=\
\
generic/choicdgg.cpp \
generic/colrdlgg.cpp \
generic/dcpsg.cpp \
generic/fontdlgg.cpp \
generic/gridg.cpp \
generic/imaglist.cpp \

View File

@ -16,7 +16,7 @@
#include "wx/wx.h"
#if wxUSE_POSTSCRIPT
#include "wx/postscrp.h"
#include "wx/dcps.h"
#endif
#define _MAXPATHLEN 500

View File

@ -99,6 +99,7 @@ DOCDIR = $(WXDIR)\docs
GENERICOBJS= \
$(GENDIR)\choicdgg.obj \
$(GENDIR)\colrdlgg.obj \
$(GENDIR)\dcpsg.obj \
$(GENDIR)\fontdlgg.obj \
$(GENDIR)\gridg.obj \
$(GENDIR)\msgdlgg.obj \
@ -136,7 +137,6 @@ COMMONOBJS = \
$(COMMDIR)\memory.obj \
$(COMMDIR)\module.obj \
$(COMMDIR)\object.obj \
$(COMMDIR)\postscrp.obj \
$(COMMDIR)\prntbase.obj \
$(COMMDIR)\resource.obj \
$(COMMDIR)\tbarbase.obj \
@ -710,11 +710,6 @@ $(COMMDIR)/odbc.obj: $*.$(SRCSUFF)
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
<<
$(COMMDIR)/postscrp.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
<<
$(COMMDIR)/prntbase.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
@ -871,6 +866,11 @@ $(GENDIR)/colrdlgg.obj: $*.$(SRCSUFF)
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
<<
$(GENDIR)/dcpsg.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
<<
$(GENDIR)/fontdlgg.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@

View File

@ -38,7 +38,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 \
@ -134,6 +133,7 @@ LIB_CPP_SRC=\
\
../generic/choicdgg.cpp \
../generic/colrdlgg.cpp \
../generic/dcpsg.cpp \
../generic/dirdlgg.cpp \
../generic/fontdlgg.cpp \
../generic/gridg.cpp \