From: Mark D. <mar...@zn...> - 2006-08-12 17:29:12
Attachments:
diff.txt
|
Mattia, I wrapped wxHtmlDCRenderer for my own use. A diff is attached, with a couple of simple additions to wxHtmlWindow and WxHtmlEasyPrinting. My C / XS skills are limited so its all copy and paste really. The only thing I had difficulty with was wxHtmlDCRenderer::Render This takes an optional reference to an array. I'm not sure if I've handled the 'optional' part correctly. In connection with this, I also have extended perl versions of HtmlPrintout and HtmlEasyPrinting. Why bother? Well, I wanted to be able to override some methods and control the appearance and controls on the preview frame but not lose the 'Easy' aspects. It will allow me to create simple reporting applications using html templating systems for the output. A 'minimal' sample of this is at http://www.gigi.co.uk/wxperl/HtmlEasyPrinting.zip. This uses wxHtmlDCRenderer. Regards Mark |
From: Mark D. <mar...@zn...> - 2006-08-12 22:55:18
|
Apologies for replying to my own post, but I just downloaded wxWidgets 2.7.0, which changes the interface for wxHtmlDCRenderer. :-( But at least the re-ordering of params fixes some of the problems I had :-) I'll fix the diff and my pure perl modules and re-post. Regards Mark Mark Dootson wrote: > Mattia, > > I wrapped wxHtmlDCRenderer for my own use. > > A diff is attached, with a couple of simple additions to wxHtmlWindow > and WxHtmlEasyPrinting. > > My C / XS skills are limited so its all copy and paste really. > The only thing I had difficulty with was > > wxHtmlDCRenderer::Render > > This takes an optional reference to an array. I'm not sure if I've > handled the 'optional' part correctly. > > In connection with this, I also have extended perl versions of > HtmlPrintout and HtmlEasyPrinting. > > Why bother? Well, I wanted to be able to override some methods and > control the appearance and controls on the preview frame but not lose > the 'Easy' aspects. > It will allow me to create simple reporting applications using html > templating systems for the output. > > A 'minimal' sample of this is at > http://www.gigi.co.uk/wxperl/HtmlEasyPrinting.zip. > > This uses wxHtmlDCRenderer. > > Regards > > Mark > > > > > > > > > ------------------------------------------------------------------------ > > Changes are: > > For wxHtmlDCRenderer > > 1. Wrapped wxHtmlDCRenderer > 2. Necessary include added to Html.xs > 3. Necessary addition to typemap > > A couple of unrelated chanages that appeared in diff > > 4. Added SetFonts to wxHtmlEasyPrinting > 5. Added LoadFile to wxHtmlWindow (just because its in the docs - I know LoadPage is equivalent) > > > diff -ruN Wx-0.55/ext/html/Html.xs Wx-0.55b/ext/html/Html.xs > --- Wx-0.55/ext/html/Html.xs > +++ Wx-0.55b/ext/html/Html.xs > @@ -27,6 +27,7 @@ > #if wxPERL_USE_PRINTING_ARCHITECTURE > > INCLUDE: XS/HtmlEasyPrinting.xs > +INCLUDE: XS/HtmlDCRenderer.xs > > #endif > > diff -ruN Wx-0.55/ext/html/typemap Wx-0.55b/ext/html/typemap > --- Wx-0.55/ext/html/typemap > +++ Wx-0.55b/ext/html/typemap > @@ -21,6 +21,7 @@ > wxBestHelpController * O_WXOBJECT > > wxHtmlEasyPrinting * O_NON_WXOBJECT > +wxHtmlDCRenderer * O_NON_WXOBJECT > > wxPrintData * O_WXOBJECT > wxPageSetupDialogData * O_WXOBJECT > diff -ruN Wx-0.55/ext/html/XS/HtmlEasyPrinting.xs Wx-0.55b/ext/html/XS/HtmlEasyPrinting.xs > --- Wx-0.55/ext/html/XS/HtmlEasyPrinting.xs > +++ Wx-0.55b/ext/html/XS/HtmlEasyPrinting.xs > @@ -67,6 +67,23 @@ > int pg > > void > +wxHtmlEasyPrinting::SetFonts( normal_face, fixed_face, sizes ) > + wxString normal_face > + wxString fixed_face > + SV* sizes > + PREINIT: > + int* array; > + int n = wxPli_av_2_intarray( aTHX_ sizes, &array ); > + CODE: > + if( n != 7 ) > + { > + delete[] array; > + croak( "Specified %d sizes, 7 wanted", n ); > + } > + THIS->SetFonts( normal_face, fixed_face, array ); > + delete[] array; > + > +void > wxHtmlEasyPrinting::SetFooter( header, pg = wxPAGE_ALL ) > wxString header > int pg > diff -ruN Wx-0.55/ext/html/XS/HtmlDCRenderer.xs Wx-0.55b/ext/html/XS/HtmlDCRenderer.xs > --- Wx-0.55/ext/html/XS/HtmlDCRenderer.xs > +++ Wx-0.55b/ext/html/XS/HtmlDCRenderer.xs > @@ -0,0 +1,79 @@ > +############################################################################# > +## Name: ext/html/XS/HtmlDCRenderer.xs > +## Purpose: XS for Wx::HtmlDCRenderer > +## > +############################################################################# > + > + > +#include <wx/html/htmprint.h> > +#include <wx/dc.h> > + > +MODULE=Wx PACKAGE=Wx::HtmlDCRenderer > + > +wxHtmlDCRenderer* > +wxHtmlDCRenderer::new() > + > +void > +wxHtmlDCRenderer::DESTROY() > + > +void > +wxHtmlDCRenderer::SetDC( dc, pixel_scale = 1.0 ) > + wxDC* dc > + double pixel_scale > + > +void > +wxHtmlDCRenderer::SetSize(width, height) > + int width > + int height > + > +void > +wxHtmlDCRenderer::SetHtmlText( htmlText, basepath = wxEmptyString, isdir = 1 ) > + wxString htmlText > + wxString basepath > + bool isdir > + > +void > +wxHtmlDCRenderer::SetFonts( normal_face, fixed_face, sizes ) > + wxString normal_face > + wxString fixed_face > + SV* sizes > + PREINIT: > + int* array; > + int n = wxPli_av_2_intarray( aTHX_ sizes, &array ); > + CODE: > + if( n != 7 ) > + { > + delete[] array; > + croak( "Specified %d sizes, 7 wanted", n ); > + } > + THIS->SetFonts( normal_face, fixed_face, array ); > + delete[] array; > + > +int > +wxHtmlDCRenderer::Render(x, y, from = 0, dont_render = 0, maxHeight = INT_MAX, pagebreaks, number_of_pages = 0) > + int x > + int y > + int from > + int dont_render > + int maxHeight > + SV* pagebreaks > + int number_of_pages > + PREINIT: > + int* array; > + int n = wxPli_av_2_intarray( aTHX_ pagebreaks, &array ); > + CODE: > + if( n == 0 ) > + { > + RETVAL = THIS->Render( x, y, from, dont_render, maxHeight, NULL, number_of_pages); > + } > + else > + { > + RETVAL = THIS->Render( x, y, from, dont_render, maxHeight, array, number_of_pages); > + } > + delete[] array; > + OUTPUT: > + RETVAL > + > + > +int > +wxHtmlDCRenderer::GetTotalHeight() > > diff -ruN Wx-0.55/ext/html/XS/HtmlWindow.xs Wx-0.55b/ext/html/XS/HtmlWindow.xs > --- Wx-0.55/ext/html/XS/HtmlWindow.xs > +++ Wx-0.55b/ext/html/XS/HtmlWindow.xs > @@ -86,6 +86,10 @@ > wxHtmlWindow::HistoryForward() > > bool > +wxHtmlWindow::LoadFile( filename ) > + wxString filename > + > +bool > wxHtmlWindow::LoadPage( location ) > wxString location > > > End of Patch. > > > ------------------------------------------------------------------------ > > ------------------------------------------------------------------------- > Using Tomcat but need to do more? Need to support web services, security? > Get stuff done quickly with pre-integrated technology to make your job easier > Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 > > > ------------------------------------------------------------------------ > > _______________________________________________ > wxperl-users mailing list > wxp...@li... > https://lists.sourceforge.net/lists/listinfo/wxperl-users |
From: Mark D. <mar...@zn...> - 2006-08-13 05:57:42
Attachments:
diff.txt
|
All, Replying to my own post again (last time I hope!) attached diff and the example at http://www.gigi.co.uk/wxperl/HtmlEasyPrinting.zip have been tested and appear to work against the following two environments on Win32: Wx-0.55 and wxWidgets-2.6.3 Wx-0.56cvs and wxWidgets-2.7.0 Hope it proves useful. Regards Mark |
From: Mattia B. <mat...@li...> - 2006-08-20 09:32:24
|
On Sat, 12 Aug 2006 18:26:58 +0100 Mark Dootson <mar...@zn...> wrote: Hello, > I wrapped wxHtmlDCRenderer for my own use. Thanks, applied! > A diff is attached, with a couple of simple additions to wxHtmlWindow > and WxHtmlEasyPrinting. > > My C / XS skills are limited so its all copy and paste really. > The only thing I had difficulty with was > > wxHtmlDCRenderer::Render > > This takes an optional reference to an array. I'm not sure if I've > handled the 'optional' part correctly. It is ok (I made a purely stylistic change). For the wxWidgets 2.7 version I added a new typemap entry for wxArrayInt, mirroring the one for wxArrayString; this makes the code cleaner. > In connection with this, I also have extended perl versions of > HtmlPrintout and HtmlEasyPrinting. > > Why bother? Well, I wanted to be able to override some methods and > control the appearance and controls on the preview frame but not lose > the 'Easy' aspects. > It will allow me to create simple reporting applications using html > templating systems for the output. I took a quick look: I hope a CPAN release is pending :-) Regards, Mattia |