1 /////////////////////////////////////////////////////////////////////////////
2 // Name: ext/print/cpp/printout.h
3 // Purpose: c++ wrapper for wxPrintout
4 // Author: Mattia Barbon
7 // RCS-ID: $Id: printout.h 2057 2007-06-18 23:03:00Z mbarbon $
8 // Copyright: (c) 2001-2002, 2004 Mattia Barbon
9 // Licence: This program is free software; you can redistribute it and/or
10 // modify it under the same terms as Perl itself
11 /////////////////////////////////////////////////////////////////////////////
13 #include "cpp/v_cback.h"
15 class wxPlPrintout:public wxPrintout
17 WXPLI_DECLARE_DYNAMIC_CLASS( wxPlPrintout );
18 WXPLI_DECLARE_V_CBACK();
20 wxPlPrintout( const char* package, const wxString& title );
22 void GetPageInfo( int* minPage, int* maxPage, int* pageFrom, int* pageTo );
24 DEC_V_CBACK_BOOL__INT( HasPage );
25 DEC_V_CBACK_BOOL__INT_INT( OnBeginDocument );
26 DEC_V_CBACK_VOID__VOID( OnEndDocument );
27 DEC_V_CBACK_VOID__VOID( OnBeginPrinting );
28 DEC_V_CBACK_VOID__VOID( OnEndPrinting );
29 DEC_V_CBACK_VOID__VOID( OnPreparePrinting );
30 DEC_V_CBACK_BOOL__INT( OnPrintPage );
33 inline wxPlPrintout::wxPlPrintout( const char* package, const wxString& title )
35 m_callback( "Wx::PlPrintout" )
37 m_callback.SetSelf( wxPli_make_object( this, package ), true );
40 WXPLI_IMPLEMENT_DYNAMIC_CLASS( wxPlPrintout, wxPrintout );
42 DEF_V_CBACK_BOOL__INT( wxPlPrintout, wxPrintout, HasPage );
43 DEF_V_CBACK_BOOL__INT_INT( wxPlPrintout, wxPrintout, OnBeginDocument );
44 DEF_V_CBACK_VOID__VOID( wxPlPrintout, wxPrintout, OnEndDocument );
45 DEF_V_CBACK_VOID__VOID( wxPlPrintout, wxPrintout, OnBeginPrinting );
46 DEF_V_CBACK_VOID__VOID( wxPlPrintout, wxPrintout, OnEndPrinting );
47 DEF_V_CBACK_VOID__VOID( wxPlPrintout, wxPrintout, OnPreparePrinting );
48 DEF_V_CBACK_BOOL__INT_pure( wxPlPrintout, wxPrintout, OnPrintPage );
50 void wxPlPrintout::GetPageInfo( int* minPage, int* maxPage,
51 int* pageFrom, int* pageTo )
54 if( wxPliVirtualCallback_FindCallback( aTHX_ &m_callback, "GetPageInfo" ) )
62 XPUSHs( m_callback.GetSelf() );
65 SV* method = sv_2mortal( newRV_inc( (SV*) m_callback.GetMethod() ) );
66 int items = call_sv( method, G_ARRAY );
70 croak( "wxPlPrintout::GetPageInfo, expected 4 values, got %i",
76 // pop in reverse order...
77 tmp = POPs; *pageTo = SvIV( tmp );
78 tmp = POPs; *pageFrom = SvIV( tmp );
79 tmp = POPs; *maxPage = SvIV( tmp );
80 tmp = POPs; *minPage = SvIV( tmp );
86 wxPrintout::GetPageInfo( minPage, maxPage, pageFrom, pageTo );