3f66f6a5b3
This keyword is not expanded by Git which means it's not replaced with the correct revision value in the releases made using git-based scripts and it's confusing to have lines with unexpanded "$Id$" in the released files. As expanding them with Git is not that simple (it could be done with git archive and export-subst attribute) and there are not many benefits in having them in the first place, just remove all these lines. If nothing else, this will make an eventual transition to Git simpler. Closes #14487. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
352 lines
12 KiB
C++
352 lines
12 KiB
C++
/////////////////////////////////////////////////////////////////////////////
|
|
// Name: wx/gtk/gnome/gprint.h
|
|
// Author: Robert Roebling
|
|
// Purpose: GNOME printing support
|
|
// Created: 09/20/04
|
|
// Copyright: Robert Roebling
|
|
// Licence: wxWindows Licence
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
|
|
#ifndef _WX_GTK_GPRINT_H_
|
|
#define _WX_GTK_GPRINT_H_
|
|
|
|
#include "wx/defs.h"
|
|
|
|
#if wxUSE_LIBGNOMEPRINT
|
|
|
|
#include "wx/print.h"
|
|
#include "wx/printdlg.h"
|
|
#include "wx/dc.h"
|
|
#include "wx/module.h"
|
|
|
|
typedef struct _GnomePrintJob GnomePrintJob;
|
|
typedef struct _GnomePrintContext GnomePrintContext;
|
|
typedef struct _GnomePrintConfig GnomePrintConfig;
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxGnomePrintModule
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class wxGnomePrintModule: public wxModule
|
|
{
|
|
public:
|
|
wxGnomePrintModule() {}
|
|
bool OnInit();
|
|
void OnExit();
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxGnomePrintModule)
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// wxGnomePrintNativeData
|
|
//----------------------------------------------------------------------------
|
|
|
|
class wxGnomePrintNativeData: public wxPrintNativeDataBase
|
|
{
|
|
public:
|
|
wxGnomePrintNativeData();
|
|
virtual ~wxGnomePrintNativeData();
|
|
|
|
virtual bool TransferTo( wxPrintData &data );
|
|
virtual bool TransferFrom( const wxPrintData &data );
|
|
|
|
virtual bool Ok() const { return IsOk(); }
|
|
virtual bool IsOk() const { return true; }
|
|
|
|
GnomePrintConfig* GetPrintConfig() { return m_config; }
|
|
void SetPrintJob( GnomePrintJob *job ) { m_job = job; }
|
|
GnomePrintJob* GetPrintJob() { return m_job; }
|
|
|
|
|
|
private:
|
|
GnomePrintConfig *m_config;
|
|
GnomePrintJob *m_job;
|
|
|
|
DECLARE_DYNAMIC_CLASS(wxGnomePrintNativeData)
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// wxGnomePrintFactory
|
|
//----------------------------------------------------------------------------
|
|
|
|
class wxGnomePrintFactory: public wxPrintFactory
|
|
{
|
|
public:
|
|
virtual wxPrinterBase *CreatePrinter( wxPrintDialogData *data );
|
|
|
|
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
|
wxPrintout *printout = NULL,
|
|
wxPrintDialogData *data = NULL );
|
|
virtual wxPrintPreviewBase *CreatePrintPreview( wxPrintout *preview,
|
|
wxPrintout *printout,
|
|
wxPrintData *data );
|
|
|
|
virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
|
|
wxPrintDialogData *data = NULL );
|
|
virtual wxPrintDialogBase *CreatePrintDialog( wxWindow *parent,
|
|
wxPrintData *data );
|
|
|
|
virtual wxPageSetupDialogBase *CreatePageSetupDialog( wxWindow *parent,
|
|
wxPageSetupDialogData * data = NULL );
|
|
|
|
#if wxUSE_NEW_DC
|
|
virtual wxDCImpl* CreatePrinterDCImpl( wxPrinterDC *owner, const wxPrintData& data );
|
|
#else
|
|
virtual wxDC* CreatePrinterDC( const wxPrintData& data );
|
|
#endif
|
|
|
|
virtual bool HasPrintSetupDialog();
|
|
virtual wxDialog *CreatePrintSetupDialog( wxWindow *parent, wxPrintData *data );
|
|
virtual bool HasOwnPrintToFile();
|
|
virtual bool HasPrinterLine();
|
|
virtual wxString CreatePrinterLine();
|
|
virtual bool HasStatusLine();
|
|
virtual wxString CreateStatusLine();
|
|
|
|
virtual wxPrintNativeDataBase *CreatePrintNativeData();
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// wxGnomePrintDialog
|
|
//----------------------------------------------------------------------------
|
|
|
|
class wxGnomePrintDialog: public wxPrintDialogBase
|
|
{
|
|
public:
|
|
wxGnomePrintDialog( wxWindow *parent,
|
|
wxPrintDialogData* data = NULL );
|
|
wxGnomePrintDialog( wxWindow *parent, wxPrintData* data);
|
|
virtual ~wxGnomePrintDialog();
|
|
|
|
wxPrintData& GetPrintData()
|
|
{ return m_printDialogData.GetPrintData(); }
|
|
wxPrintDialogData& GetPrintDialogData()
|
|
{ return m_printDialogData; }
|
|
|
|
wxDC *GetPrintDC();
|
|
|
|
virtual int ShowModal();
|
|
|
|
virtual bool Validate();
|
|
virtual bool TransferDataToWindow();
|
|
virtual bool TransferDataFromWindow();
|
|
|
|
protected:
|
|
// Implement some base class methods to do nothing to avoid asserts and
|
|
// GTK warnings, since this is not a real wxDialog.
|
|
virtual void DoSetSize(int WXUNUSED(x), int WXUNUSED(y),
|
|
int WXUNUSED(width), int WXUNUSED(height),
|
|
int WXUNUSED(sizeFlags) = wxSIZE_AUTO) {}
|
|
virtual void DoMoveWindow(int WXUNUSED(x), int WXUNUSED(y),
|
|
int WXUNUSED(width), int WXUNUSED(height)) {}
|
|
|
|
private:
|
|
void Init();
|
|
wxPrintDialogData m_printDialogData;
|
|
|
|
DECLARE_DYNAMIC_CLASS(wxGnomePrintDialog)
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// wxGnomePageSetupDialog
|
|
//----------------------------------------------------------------------------
|
|
|
|
class wxGnomePageSetupDialog: public wxPageSetupDialogBase
|
|
{
|
|
public:
|
|
wxGnomePageSetupDialog( wxWindow *parent,
|
|
wxPageSetupDialogData* data = NULL );
|
|
virtual ~wxGnomePageSetupDialog();
|
|
|
|
virtual wxPageSetupDialogData& GetPageSetupDialogData();
|
|
|
|
virtual int ShowModal();
|
|
|
|
virtual bool Validate();
|
|
virtual bool TransferDataToWindow();
|
|
virtual bool TransferDataFromWindow();
|
|
|
|
protected:
|
|
// Implement some base class methods to do nothing to avoid asserts and
|
|
// GTK warnings, since this is not a real wxDialog.
|
|
virtual void DoSetSize(int WXUNUSED(x), int WXUNUSED(y),
|
|
int WXUNUSED(width), int WXUNUSED(height),
|
|
int WXUNUSED(sizeFlags) = wxSIZE_AUTO) {}
|
|
virtual void DoMoveWindow(int WXUNUSED(x), int WXUNUSED(y),
|
|
int WXUNUSED(width), int WXUNUSED(height)) {}
|
|
|
|
private:
|
|
wxPageSetupDialogData m_pageDialogData;
|
|
|
|
DECLARE_DYNAMIC_CLASS(wxGnomePageSetupDialog)
|
|
};
|
|
|
|
//----------------------------------------------------------------------------
|
|
// wxGnomePrinter
|
|
//----------------------------------------------------------------------------
|
|
|
|
class wxGnomePrinter: public wxPrinterBase
|
|
{
|
|
public:
|
|
wxGnomePrinter(wxPrintDialogData *data = NULL);
|
|
virtual ~wxGnomePrinter();
|
|
|
|
virtual bool Print(wxWindow *parent,
|
|
wxPrintout *printout,
|
|
bool prompt = true);
|
|
virtual wxDC* PrintDialog(wxWindow *parent);
|
|
virtual bool Setup(wxWindow *parent);
|
|
|
|
private:
|
|
bool m_native_preview;
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxGnomePrinter)
|
|
wxDECLARE_NO_COPY_CLASS(wxGnomePrinter);
|
|
};
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// wxGnomePrinterDC
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#if wxUSE_NEW_DC
|
|
class wxGnomePrinterDCImpl : public wxDCImpl
|
|
#else
|
|
#define wxGnomePrinterDCImpl wxGnomePrinterDC
|
|
class wxGnomePrinterDC : public wxDC
|
|
#endif
|
|
{
|
|
public:
|
|
#if wxUSE_NEW_DC
|
|
wxGnomePrinterDCImpl( wxPrinterDC *owner, const wxPrintData& data );
|
|
#else
|
|
wxGnomePrinterDC( const wxPrintData& data );
|
|
#endif
|
|
virtual ~wxGnomePrinterDCImpl();
|
|
|
|
bool Ok() const { return IsOk(); }
|
|
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( wxRasterOperationMode 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; }
|
|
wxSize GetPPI() const;
|
|
virtual int GetDepth() const { return 24; }
|
|
void SetBackgroundMode(int WXUNUSED(mode)) { }
|
|
void SetPalette(const wxPalette& WXUNUSED(palette)) { }
|
|
|
|
protected:
|
|
bool DoFloodFill(wxCoord x1, wxCoord y1, const wxColour &col,
|
|
wxFloodFillStyle style=wxFLOOD_SURFACE );
|
|
bool DoGetPixel(wxCoord x1, wxCoord y1, wxColour *col) const;
|
|
void DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2);
|
|
void DoCrossHair(wxCoord x, wxCoord y);
|
|
void DoDrawArc(wxCoord x1,wxCoord y1,wxCoord x2,wxCoord y2,wxCoord xc,wxCoord yc);
|
|
void DoDrawEllipticArc(wxCoord x,wxCoord y,wxCoord w,wxCoord h,double sa,double ea);
|
|
void DoDrawPoint(wxCoord x, wxCoord y);
|
|
void DoDrawLines(int n, const wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0);
|
|
void DoDrawPolygon(int n, const wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0, wxPolygonFillMode fillStyle=wxODDEVEN_RULE);
|
|
void DoDrawPolyPolygon(int n, const int count[], const wxPoint points[], wxCoord xoffset = 0, wxCoord yoffset = 0, wxPolygonFillMode fillStyle=wxODDEVEN_RULE);
|
|
void DoDrawRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
|
|
void DoDrawRoundedRectangle(wxCoord x, wxCoord y, wxCoord width, wxCoord height, double radius = 20.0);
|
|
void DoDrawEllipse(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
|
|
#if wxUSE_SPLINES
|
|
void DoDrawSpline(const wxPointList *points);
|
|
#endif
|
|
bool DoBlit(wxCoord xdest, wxCoord ydest, wxCoord width, wxCoord height,
|
|
wxDC *source, wxCoord xsrc, wxCoord ysrc,
|
|
wxRasterOperationMode = wxCOPY, bool useMask = false,
|
|
wxCoord xsrcMask = wxDefaultCoord, wxCoord ysrcMask = wxDefaultCoord);
|
|
void DoDrawIcon( const wxIcon& icon, wxCoord x, wxCoord y );
|
|
void DoDrawBitmap( const wxBitmap& bitmap, wxCoord x, wxCoord y, bool useMask = false );
|
|
void DoDrawText(const wxString& text, wxCoord x, wxCoord y );
|
|
void DoDrawRotatedText(const wxString& text, wxCoord x, wxCoord y, double angle);
|
|
void DoSetClippingRegion(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
|
|
void DoSetDeviceClippingRegion( const wxRegion &WXUNUSED(clip) )
|
|
{
|
|
wxFAIL_MSG( "not implemented" );
|
|
}
|
|
void DoGetTextExtent(const wxString& string, wxCoord *x, wxCoord *y,
|
|
wxCoord *descent = NULL,
|
|
wxCoord *externalLeading = NULL,
|
|
const wxFont *theFont = NULL ) const;
|
|
void DoGetSize(int* width, int* height) const;
|
|
void DoGetSizeMM(int *width, int *height) const;
|
|
|
|
void SetPrintData(const wxPrintData& data);
|
|
wxPrintData& GetPrintData() { return m_printData; }
|
|
|
|
// overridden for wxPrinterDC Impl
|
|
virtual wxRect GetPaperRect() const;
|
|
virtual int GetResolution() const;
|
|
|
|
virtual void* GetHandle() const { return (void*)m_gpc; }
|
|
|
|
private:
|
|
wxPrintData m_printData;
|
|
PangoContext *m_context;
|
|
PangoLayout *m_layout;
|
|
PangoFontDescription *m_fontdesc;
|
|
|
|
unsigned char m_currentRed;
|
|
unsigned char m_currentGreen;
|
|
unsigned char m_currentBlue;
|
|
|
|
double m_pageHeight;
|
|
|
|
GnomePrintContext *m_gpc;
|
|
GnomePrintJob* m_job;
|
|
|
|
void makeEllipticalPath(wxCoord x, wxCoord y, wxCoord width, wxCoord height);
|
|
|
|
private:
|
|
DECLARE_DYNAMIC_CLASS(wxGnomePrinterDCImpl)
|
|
wxDECLARE_NO_COPY_CLASS(wxGnomePrinterDCImpl);
|
|
};
|
|
|
|
// ----------------------------------------------------------------------------
|
|
// wxGnomePrintPreview: programmer creates an object of this class to preview a
|
|
// wxPrintout.
|
|
// ----------------------------------------------------------------------------
|
|
|
|
class wxGnomePrintPreview : public wxPrintPreviewBase
|
|
{
|
|
public:
|
|
wxGnomePrintPreview(wxPrintout *printout,
|
|
wxPrintout *printoutForPrinting = NULL,
|
|
wxPrintDialogData *data = NULL);
|
|
wxGnomePrintPreview(wxPrintout *printout,
|
|
wxPrintout *printoutForPrinting,
|
|
wxPrintData *data);
|
|
|
|
virtual ~wxGnomePrintPreview();
|
|
|
|
virtual bool Print(bool interactive);
|
|
virtual void DetermineScaling();
|
|
|
|
private:
|
|
void Init(wxPrintout *printout, wxPrintout *printoutForPrinting);
|
|
|
|
private:
|
|
DECLARE_CLASS(wxGnomePrintPreview)
|
|
};
|
|
|
|
|
|
#endif
|
|
// wxUSE_LIBGNOMEPRINT
|
|
|
|
#endif
|