Added wxHtmlPrintout::AddFilter so the same filters used for

viewing HTML can be used for printing it.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21711 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
2003-07-06 17:52:42 +00:00
parent 7af0846427
commit fa10c70ceb
4 changed files with 66 additions and 17 deletions

View File

@@ -96,6 +96,8 @@ All GUI ports:
to allow better rich text support.
- implemented wxFlexGridSizer::Show() (Wade Brainerd)
- Added m_ prefix to wxColourData and wxFontData members
- Added wxHtmlPrintout::AddFilter so HTML printing can be subject to
custom filters as well as HTML viewing.
Unix:

View File

@@ -27,6 +27,13 @@ This class serves as printout class for HTML documents.
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}}

View File

@@ -21,6 +21,7 @@
#include "wx/html/htmlcell.h"
#include "wx/html/winpars.h"
#include "wx/html/htmlfilt.h"
#include "wx/print.h"
#include "wx/printdlg.h"
@@ -152,6 +153,12 @@ public:
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);
@@ -174,6 +181,9 @@ private:
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)
};

View File

@@ -36,6 +36,7 @@
#include "wx/html/htmprint.h"
#include "wx/wxhtml.h"
#include "wx/wfstream.h"
#include "wx/module.h"
//--------------------------------------------------------------------------------
@@ -139,25 +140,12 @@ int wxHtmlDCRenderer::GetTotalHeight()
}
//--------------------------------------------------------------------------------
// wxHtmlPrintout
//--------------------------------------------------------------------------------
wxList wxHtmlPrintout::m_Filters;
wxHtmlPrintout::wxHtmlPrintout(const wxString& title) : wxPrintout(title)
{
@@ -179,7 +167,17 @@ wxHtmlPrintout::~wxHtmlPrintout()
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)
{
@@ -291,8 +289,25 @@ void wxHtmlPrintout::SetHtmlFile(const wxString& htmlfile)
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;
@@ -627,6 +642,21 @@ wxHtmlPrintout *wxHtmlEasyPrinting::CreatePrintout()
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)