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.
|
to allow better rich text support.
|
||||||
- implemented wxFlexGridSizer::Show() (Wade Brainerd)
|
- implemented wxFlexGridSizer::Show() (Wade Brainerd)
|
||||||
- Added m_ prefix to wxColourData and wxFontData members
|
- 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:
|
Unix:
|
||||||
|
|
||||||
|
@@ -27,6 +27,13 @@ This class serves as printout class for HTML documents.
|
|||||||
Constructor.
|
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}
|
\membersection{wxHtmlPrintout::SetFonts}\label{wxhtmlprintoutsetfonts}
|
||||||
|
|
||||||
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
|
\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/htmlcell.h"
|
||||||
#include "wx/html/winpars.h"
|
#include "wx/html/winpars.h"
|
||||||
|
#include "wx/html/htmlfilt.h"
|
||||||
|
|
||||||
#include "wx/print.h"
|
#include "wx/print.h"
|
||||||
#include "wx/printdlg.h"
|
#include "wx/printdlg.h"
|
||||||
@@ -152,6 +153,12 @@ public:
|
|||||||
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
|
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo);
|
||||||
bool OnBeginDocument(int startPage, int endPage);
|
bool OnBeginDocument(int startPage, int endPage);
|
||||||
|
|
||||||
|
// Adds input filter
|
||||||
|
static void AddFilter(wxHtmlFilter *filter);
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
static void CleanUpStatics();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
void RenderPage(wxDC *dc, int page);
|
void RenderPage(wxDC *dc, int page);
|
||||||
@@ -174,6 +181,9 @@ private:
|
|||||||
wxHtmlDCRenderer *m_Renderer, *m_RendererHdr;
|
wxHtmlDCRenderer *m_Renderer, *m_RendererHdr;
|
||||||
float m_MarginTop, m_MarginBottom, m_MarginLeft, m_MarginRight, m_MarginSpace;
|
float m_MarginTop, m_MarginBottom, m_MarginLeft, m_MarginRight, m_MarginSpace;
|
||||||
|
|
||||||
|
// list of HTML filters
|
||||||
|
static wxList m_Filters;
|
||||||
|
|
||||||
DECLARE_NO_COPY_CLASS(wxHtmlPrintout)
|
DECLARE_NO_COPY_CLASS(wxHtmlPrintout)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -36,6 +36,7 @@
|
|||||||
#include "wx/html/htmprint.h"
|
#include "wx/html/htmprint.h"
|
||||||
#include "wx/wxhtml.h"
|
#include "wx/wxhtml.h"
|
||||||
#include "wx/wfstream.h"
|
#include "wx/wfstream.h"
|
||||||
|
#include "wx/module.h"
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------
|
||||||
@@ -139,25 +140,12 @@ int wxHtmlDCRenderer::GetTotalHeight()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------
|
||||||
// wxHtmlPrintout
|
// wxHtmlPrintout
|
||||||
//--------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
|
||||||
|
wxList wxHtmlPrintout::m_Filters;
|
||||||
|
|
||||||
wxHtmlPrintout::wxHtmlPrintout(const wxString& title) : wxPrintout(title)
|
wxHtmlPrintout::wxHtmlPrintout(const wxString& title) : wxPrintout(title)
|
||||||
{
|
{
|
||||||
@@ -179,7 +167,17 @@ wxHtmlPrintout::~wxHtmlPrintout()
|
|||||||
delete m_RendererHdr;
|
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)
|
bool wxHtmlPrintout::OnBeginDocument(int startPage, int endPage)
|
||||||
{
|
{
|
||||||
@@ -291,8 +289,25 @@ void wxHtmlPrintout::SetHtmlFile(const wxString& htmlfile)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
wxHtmlFilterHTML filter;
|
bool done = FALSE;
|
||||||
wxString doc = filter.ReadFile(*ff);
|
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);
|
SetHtmlText(doc, htmlfile, FALSE);
|
||||||
delete ff;
|
delete ff;
|
||||||
@@ -627,6 +642,21 @@ wxHtmlPrintout *wxHtmlEasyPrinting::CreatePrintout()
|
|||||||
return p;
|
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
|
// This hack forces the linker to always link in m_* files
|
||||||
// (wxHTML doesn't work without handlers from these files)
|
// (wxHTML doesn't work without handlers from these files)
|
||||||
|
Reference in New Issue
Block a user