Constructor.
+\membersection{wxHtmlPrintout::AddFilter}\label{wxhtmlprintoutaddfilter}
+
+\func{static void}{AddFilter}{\param{wxHtmlFilter* }{filter}}
+
+Adds a filter to the static list of filters for wxHtmlPrintout. See \helpref{wxHtmlFilter}{wxhtmlfilter} for
+further information.
+
\membersection{wxHtmlPrintout::SetFonts}\label{wxhtmlprintoutsetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
#include "wx/html/htmlcell.h"
#include "wx/html/winpars.h"
+#include "wx/html/htmlfilt.h"
#include "wx/print.h"
#include "wx/printdlg.h"
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
bool OnBeginDocument(int startPage, int endPage);
+ // Adds input filter
+ static void AddFilter(wxHtmlFilter *filter);
+
+ // Cleanup
+ static void CleanUpStatics();
+
private:
void RenderPage(wxDC *dc, int page);
wxHtmlDCRenderer *m_Renderer, *m_RendererHdr;
float m_MarginTop, m_MarginBottom, m_MarginLeft, m_MarginRight, m_MarginSpace;
+ // list of HTML filters
+ static wxList m_Filters;
+
DECLARE_NO_COPY_CLASS(wxHtmlPrintout)
};
#include "wx/html/htmprint.h"
#include "wx/wxhtml.h"
#include "wx/wfstream.h"
+#include "wx/module.h"
//--------------------------------------------------------------------------------
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
//--------------------------------------------------------------------------------
// wxHtmlPrintout
//--------------------------------------------------------------------------------
+wxList wxHtmlPrintout::m_Filters;
wxHtmlPrintout::wxHtmlPrintout(const wxString& title) : wxPrintout(title)
{
delete m_RendererHdr;
}
+void wxHtmlPrintout::CleanUpStatics()
+{
+ m_Filters.DeleteContents(TRUE);
+ m_Filters.Clear();
+}
+// Adds input filter
+void wxHtmlPrintout::AddFilter(wxHtmlFilter *filter)
+{
+ m_Filters.Append(filter);
+}
bool wxHtmlPrintout::OnBeginDocument(int startPage, int endPage)
{
return;
}
- wxHtmlFilterHTML filter;
- wxString doc = filter.ReadFile(*ff);
-
+ bool done = FALSE;
+ wxHtmlFilterHTML defaultFilter;
+ wxString doc;
+
+ wxNode* node = m_Filters.GetFirst();
+ while (node)
+ {
+ wxHtmlFilter *h = (wxHtmlFilter*) node->GetData();
+ if (h->CanRead(*ff))
+ {
+ doc = h->ReadFile(*ff);
+ done = TRUE;
+ break;
+ }
+ node = node->GetNext();
+ }
+
+ if (!done)
+ doc = defaultFilter.ReadFile(*ff);
+
SetHtmlText(doc, htmlfile, FALSE);
delete ff;
}
return p;
}
+// A module to allow initialization/cleanup
+// without calling these functions from app.cpp or from
+// the user's application.
+
+class wxHtmlPrintingModule: public wxModule
+{
+DECLARE_DYNAMIC_CLASS(wxHtmlPrintingModule)
+public:
+ wxHtmlPrintingModule() : wxModule() {}
+ bool OnInit() { return TRUE; }
+ void OnExit() { wxHtmlPrintout::CleanUpStatics(); }
+};
+
+IMPLEMENT_DYNAMIC_CLASS(wxHtmlPrintingModule, wxModule)
+
// This hack forces the linker to always link in m_* files
// (wxHTML doesn't work without handlers from these files)