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:
@@ -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:
|
||||
|
||||
|
@@ -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}}
|
||||
|
@@ -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)
|
||||
};
|
||||
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user