#include "wx/html/htmprint.h"
#include "wx/wxhtml.h"
#include "wx/wfstream.h"
+#include "wx/module.h"
//--------------------------------------------------------------------------------
if (!dont_render)
{
- wxHtmlRenderingState rstate(NULL);
+ wxHtmlRenderingInfo rinfo;
+ wxDefaultHtmlRenderingStyle rstyle;
+ rinfo.SetStyle(&rstyle);
m_DC->SetBrush(*wxWHITE_BRUSH);
m_DC->SetClippingRegion(x, y, m_Width, hght);
m_Cells->Draw(*m_DC,
x, (y - from),
y, pbreak + (y /*- from*/),
- rstate);
+ rinfo);
m_DC->DestroyClippingRegion();
}
}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
//--------------------------------------------------------------------------------
// 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)