applied patch adding SetFonts to wxHTML printing classes and allowing NULL sizes list

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2003-03-16 20:30:26 +00:00
parent 5851504dfc
commit 4eecf1150d
13 changed files with 165 additions and 42 deletions

View File

@@ -106,7 +106,11 @@ wxMotif:
wxUniv: wxUniv:
- Controls in toolbars now supported. - controls in toolbars now supported
wxHTML:
- added SetFonts to HTML printing classes (Adrian Philip Look)
OLD CHANGES OLD CHANGES

View File

@@ -44,6 +44,13 @@ in pixels (you should set it to page width minus margins).
the screen width is always 800 pixels: it gives best results and ensures (almost) same printed outputs the screen width is always 800 pixels: it gives best results and ensures (almost) same printed outputs
across platforms and differently configured desktops.} across platforms and differently configured desktops.}
\membersection{wxHtmlDCRenderer::SetFonts}\label{wxhtmldcrenderersetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
Sets fonts. See \helpref{wxHtmlWindow::SetFonts}{wxhtmlwindowsetfonts} for
detailed description.
See also \helpref{SetSize}{wxhtmldcrenderersetsize}. See also \helpref{SetSize}{wxhtmldcrenderersetsize}.
\membersection{wxHtmlDCRenderer::SetSize}\label{wxhtmldcrenderersetsize} \membersection{wxHtmlDCRenderer::SetSize}\label{wxhtmldcrenderersetsize}

View File

@@ -106,6 +106,13 @@ Display printer setup dialog and allows the user to modify settings.
Display page setup dialog and allows the user to modify settings. Display page setup dialog and allows the user to modify settings.
\membersection{wxHtmlEasyPrinting::SetFonts}\label{wxhtmleasyprintingsetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
Sets fonts. See \helpref{wxHtmlWindow::SetFonts}{wxhtmlwindowsetfonts} for
detailed description.
\membersection{wxHtmlEasyPrinting::SetHeader}\label{wxhtmleasyprintingsetheader} \membersection{wxHtmlEasyPrinting::SetHeader}\label{wxhtmleasyprintingsetheader}
\func{void}{SetHeader}{\param{const wxString\& }{header}, \param{int }{pg = wxPAGE\_ALL}} \func{void}{SetHeader}{\param{const wxString\& }{header}, \param{int }{pg = wxPAGE\_ALL}}

View File

@@ -27,6 +27,12 @@ This class serves as printout class for HTML documents.
Constructor. Constructor.
\membersection{wxHtmlPrintout::SetFonts}\label{wxhtmlprintoutsetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
Sets fonts. See \helpref{wxHtmlWindow::SetFonts}{wxhtmlwindowsetfonts} for
detailed description.
\membersection{wxHtmlPrintout::SetFooter}\label{wxhtmlprintoutsetfooter} \membersection{wxHtmlPrintout::SetFooter}\label{wxhtmlprintoutsetfooter}

View File

@@ -297,7 +297,7 @@ This function sets the space between border of window and HTML contents. See ima
\membersection{wxHtmlWindow::SetFonts}\label{wxhtmlwindowsetfonts} \membersection{wxHtmlWindow::SetFonts}\label{wxhtmlwindowsetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes}} \func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
This function sets font sizes and faces. This function sets font sizes and faces.
@@ -312,24 +312,14 @@ platform-specific face name. Examples are "helvetica" under Unix or
\docparam{sizes}{This is an array of 7 items of {\it int} type. \docparam{sizes}{This is an array of 7 items of {\it int} type.
The values represent size of font with HTML size from -2 to +4 The values represent size of font with HTML size from -2 to +4
( <FONT SIZE=-2> to <FONT SIZE=+4> )} ( <FONT SIZE=-2> to <FONT SIZE=+4> ). Default sizes are used if {\it sizes}
is NULL.}
\wxheading{Defaults} \wxheading{Defaults}
Under wxGTK: Default font sizes are defined by constants wxHTML\_FONT\_SIZE\_1,
wxHTML\_FONT\_SIZE\_2, ..., wxHTML\_FONT\_SIZE\_7. Note that they differ among
\begin{verbatim} platforms. Default face names are empty strings.
SetFonts("", "", {10, 12, 14, 16, 19, 24, 32});
\end{verbatim}
Under Windows:
\begin{verbatim}
SetFonts("", "", {7, 8, 10, 12, 16, 22, 30});
\end{verbatim}
Although it seems different the fact is that the fonts are of approximately
same size under both platforms (due to wxMSW / wxGTK inconsistency)
\membersection{wxHtmlWindow::SetPage}\label{wxhtmlwindowsetpage} \membersection{wxHtmlWindow::SetPage}\label{wxhtmlwindowsetpage}

View File

@@ -269,9 +269,10 @@ Sets underlined flag of actualfont. {\it x} is either true of false.
\membersection{wxHtmlWinParser::SetFonts}\label{wxhtmlwinparsersetfonts} \membersection{wxHtmlWinParser::SetFonts}\label{wxhtmlwinparsersetfonts}
\func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes}} \func{void}{SetFonts}{\param{wxString }{normal\_face}, \param{wxString }{fixed\_face}, \param{const int }{*sizes = NULL}}
Sets fonts. This method is identical to \helpref{wxHtmlWindow::SetFonts}{wxhtmlwindowsetfonts} Sets fonts. See \helpref{wxHtmlWindow::SetFonts}{wxhtmlwindowsetfonts} for
detailed description.
\membersection{wxHtmlWinParser::SetInputEncoding}\label{wxhtmlwinparsersetinputencoding} \membersection{wxHtmlWinParser::SetInputEncoding}\label{wxhtmlwinparsersetinputencoding}

View File

@@ -75,11 +75,11 @@
#define wxHTML_COND_ISANCHOR 1 #define wxHTML_COND_ISANCHOR 1
// Finds the anchor of 'param' name (pointer to wxString). // Finds the anchor of 'param' name (pointer to wxString).
#define wxHTML_COND_ISIMAGEMAP 2 #define wxHTML_COND_ISIMAGEMAP 2
// Finds imagemap of 'param' name (pointer to wxString). // Finds imagemap of 'param' name (pointer to wxString).
// (used exclusively by m_image.cpp) // (used exclusively by m_image.cpp)
#define wxHTML_COND_USER 10000 #define wxHTML_COND_USER 10000
// User-defined conditions should start from this number // User-defined conditions should start from this number
@@ -99,10 +99,32 @@
/* maximum number of pages printable via html printing */ /* maximum number of pages printable via html printing */
/* default font sizes */
#ifdef __WXMSW__
#define wxHTML_FONT_SIZE_1 7
#define wxHTML_FONT_SIZE_2 8
#define wxHTML_FONT_SIZE_3 10
#define wxHTML_FONT_SIZE_4 12
#define wxHTML_FONT_SIZE_5 16
#define wxHTML_FONT_SIZE_6 22
#define wxHTML_FONT_SIZE_7 30
#elif defined(__WXMAC__)
#define wxHTML_FONT_SIZE_1 9
#define wxHTML_FONT_SIZE_2 12
#define wxHTML_FONT_SIZE_3 14
#define wxHTML_FONT_SIZE_4 18
#define wxHTML_FONT_SIZE_5 24
#define wxHTML_FONT_SIZE_6 30
#define wxHTML_FONT_SIZE_7 36
#else
#define wxHTML_FONT_SIZE_1 10
#define wxHTML_FONT_SIZE_2 12
#define wxHTML_FONT_SIZE_3 14
#define wxHTML_FONT_SIZE_4 16
#define wxHTML_FONT_SIZE_5 19
#define wxHTML_FONT_SIZE_6 24
#define wxHTML_FONT_SIZE_7 32
#endif
#if WXWIN_COMPATIBILITY_2 #if WXWIN_COMPATIBILITY_2

View File

@@ -121,7 +121,8 @@ public:
void SetRelatedStatusBar(int bar); void SetRelatedStatusBar(int bar);
// Sets fonts to be used when displaying HTML page. // Sets fonts to be used when displaying HTML page.
void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes); void SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes = NULL);
// Sets space between text and window borders. // Sets space between text and window borders.
void SetBorders(int b) {m_Borders = b;} void SetBorders(int b) {m_Borders = b;}

View File

@@ -53,6 +53,9 @@ public:
// (see wxFileSystem for detailed explanation) // (see wxFileSystem for detailed explanation)
void SetHtmlText(const wxString& html, const wxString& basepath = wxEmptyString, bool isdir = TRUE); void SetHtmlText(const wxString& html, const wxString& basepath = wxEmptyString, bool isdir = TRUE);
// Sets fonts to be used when displaying HTML page. (if size null then default sizes used).
void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = NULL);
// [x,y] is position of upper-left corner of printing rectangle (see SetSize) // [x,y] is position of upper-left corner of printing rectangle (see SetSize)
// from is y-coordinate of the very first visible cell // from is y-coordinate of the very first visible cell
// Returned value is y coordinate of first cell than didn't fit onto page. // Returned value is y coordinate of first cell than didn't fit onto page.
@@ -125,6 +128,9 @@ public:
// pg is one of wxPAGE_ODD, wxPAGE_EVEN and wx_PAGE_ALL constants. // pg is one of wxPAGE_ODD, wxPAGE_EVEN and wx_PAGE_ALL constants.
// You can set different header/footer for odd and even pages // You can set different header/footer for odd and even pages
// Sets fonts to be used when displaying HTML page. (if size null then default sizes used).
void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = NULL);
void SetMargins(float top = 25.2, float bottom = 25.2, float left = 25.2, float right = 25.2, void SetMargins(float top = 25.2, float bottom = 25.2, float left = 25.2, float right = 25.2,
float spaces = 5); float spaces = 5);
// sets margins in milimeters. Defaults to 1 inch for margins and 0.5cm for space // sets margins in milimeters. Defaults to 1 inch for margins and 0.5cm for space
@@ -207,6 +213,9 @@ public:
// pg is one of wxPAGE_ODD, wxPAGE_EVEN and wx_PAGE_ALL constants. // pg is one of wxPAGE_ODD, wxPAGE_EVEN and wx_PAGE_ALL constants.
// You can set different header/footer for odd and even pages // You can set different header/footer for odd and even pages
void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = 0);
// Sets fonts to be used when displaying HTML page. (if size null then default sizes used)
wxPrintData *GetPrintData() {return m_PrintData;} wxPrintData *GetPrintData() {return m_PrintData;}
wxPageSetupDialogData *GetPageSetupData() {return m_PageSetupData;} wxPageSetupDialogData *GetPageSetupData() {return m_PageSetupData;}
// return page setting data objects. // return page setting data objects.
@@ -221,6 +230,9 @@ private:
wxPrintData *m_PrintData; wxPrintData *m_PrintData;
wxPageSetupDialogData *m_PageSetupData; wxPageSetupDialogData *m_PageSetupData;
wxString m_Name; wxString m_Name;
int m_FontsSizesArr[7];
int *m_FontsSizes;
wxString m_FontFaceFixed, m_FontFaceNormal;
wxString m_Headers[2], m_Footers[2]; wxString m_Headers[2], m_Footers[2];
wxFrame *m_Frame; wxFrame *m_Frame;

View File

@@ -68,8 +68,8 @@ public:
// returns associated wxWindow // returns associated wxWindow
wxHtmlWindow *GetWindow() {return m_Window;} wxHtmlWindow *GetWindow() {return m_Window;}
// sets fonts to be used when displaying HTML page. // Sets fonts to be used when displaying HTML page. (if size null then default sizes used).
void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes); void SetFonts(wxString normal_face, wxString fixed_face, const int *sizes = NULL);
// Adds tags module. see wxHtmlTagsModule for details. // Adds tags module. see wxHtmlTagsModule for details.
static void AddModule(wxHtmlTagsModule *module); static void AddModule(wxHtmlTagsModule *module);

View File

@@ -59,6 +59,10 @@ class MyFrame : public wxFrame
void OnPreview(wxCommandEvent& event); void OnPreview(wxCommandEvent& event);
void OnOpen(wxCommandEvent& event); void OnOpen(wxCommandEvent& event);
void OnPrintSmall(wxCommandEvent& event);
void OnPrintNormal(wxCommandEvent& event);
void OnPrintHuge(wxCommandEvent& event);
private: private:
wxHtmlWindow *m_Html; wxHtmlWindow *m_Html;
@@ -81,7 +85,10 @@ enum
Minimal_Preview, Minimal_Preview,
Minimal_PageSetup, Minimal_PageSetup,
Minimal_PrintSetup, Minimal_PrintSetup,
Minimal_Open Minimal_Open,
Minimal_PrintSmall,
Minimal_PrintNormal,
Minimal_PrintHuge
}; };
@@ -100,6 +107,9 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
EVT_MENU(Minimal_PageSetup, MyFrame::OnPageSetup) EVT_MENU(Minimal_PageSetup, MyFrame::OnPageSetup)
EVT_MENU(Minimal_PrintSetup, MyFrame::OnPrintSetup) EVT_MENU(Minimal_PrintSetup, MyFrame::OnPrintSetup)
EVT_MENU(Minimal_Open, MyFrame::OnOpen) EVT_MENU(Minimal_Open, MyFrame::OnOpen)
EVT_MENU(Minimal_PrintSmall, MyFrame::OnPrintSmall)
EVT_MENU(Minimal_PrintNormal, MyFrame::OnPrintNormal)
EVT_MENU(Minimal_PrintHuge, MyFrame::OnPrintHuge)
END_EVENT_TABLE() END_EVENT_TABLE()
// Create a new application object: this macro will allow wxWindows to create // Create a new application object: this macro will allow wxWindows to create
@@ -166,9 +176,15 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
menuFile->AppendSeparator(); menuFile->AppendSeparator();
menuFile->Append(Minimal_Quit, _("&Exit")); menuFile->Append(Minimal_Quit, _("&Exit"));
wxMenu *testFile = new wxMenu;
testFile->Append(Minimal_PrintSmall, _("Small Printer Fonts"));
testFile->Append(Minimal_PrintNormal, _("Normal Printer Fonts"));
testFile->Append(Minimal_PrintHuge, _("Huge Printer Fonts"));
// now append the freshly created menu to the menu bar... // now append the freshly created menu to the menu bar...
wxMenuBar *menuBar = new wxMenuBar; wxMenuBar *menuBar = new wxMenuBar;
menuBar->Append(menuFile, _("&File")); menuBar->Append(menuFile, _("&File"));
menuBar->Append(testFile, _("&Test"));
// ... and attach this menu bar to the frame // ... and attach this menu bar to the frame
SetMenuBar(menuBar); SetMenuBar(menuBar);
@@ -183,6 +199,7 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
m_Prn = new wxHtmlEasyPrinting(_("Easy Printing Demo"), this); m_Prn = new wxHtmlEasyPrinting(_("Easy Printing Demo"), this);
m_Prn -> SetHeader(m_Name + wxT("(@PAGENUM@/@PAGESCNT@)<hr>"), wxPAGE_ALL); m_Prn -> SetHeader(m_Name + wxT("(@PAGENUM@/@PAGESCNT@)<hr>"), wxPAGE_ALL);
} }
// frame destructor // frame destructor
@@ -245,3 +262,19 @@ void MyFrame::OnOpen(wxCommandEvent& WXUNUSED(event))
} }
void MyFrame::OnPrintSmall(wxCommandEvent& WXUNUSED(event))
{
int fontsizes[] = { 4, 6, 8, 10, 12, 20, 24 };
m_Prn->SetFonts(wxEmptyString, wxEmptyString, fontsizes);
}
void MyFrame::OnPrintNormal(wxCommandEvent& WXUNUSED(event))
{
m_Prn->SetFonts(wxEmptyString, wxEmptyString, 0);
}
void MyFrame::OnPrintHuge(wxCommandEvent& WXUNUSED(event))
{
int fontsizes[] = { 20, 26, 28, 30, 32, 40, 44 };
m_Prn->SetFonts(wxEmptyString, wxEmptyString, fontsizes);
}

View File

@@ -79,7 +79,6 @@ void wxHtmlDCRenderer::SetSize(int width, int height)
} }
void wxHtmlDCRenderer::SetHtmlText(const wxString& html, const wxString& basepath, bool isdir) void wxHtmlDCRenderer::SetHtmlText(const wxString& html, const wxString& basepath, bool isdir)
{ {
if (m_DC == NULL) return; if (m_DC == NULL) return;
@@ -93,6 +92,13 @@ void wxHtmlDCRenderer::SetHtmlText(const wxString& html, const wxString& basepat
} }
void wxHtmlDCRenderer::SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes)
{
m_Parser->SetFonts(normal_face, fixed_face, sizes);
if (m_DC == NULL && m_Cells != NULL) m_Cells->Layout(m_Width);
}
int wxHtmlDCRenderer::Render(int x, int y, int from, int dont_render) int wxHtmlDCRenderer::Render(int x, int y, int from, int dont_render)
{ {
@@ -408,11 +414,18 @@ void wxHtmlPrintout::SetMargins(float top, float bottom, float left, float right
void wxHtmlPrintout::SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes)
{
m_Renderer->SetFonts(normal_face, fixed_face, sizes);
m_RendererHdr->SetFonts(normal_face, fixed_face, sizes);
}
//--------------------------------------------------------------------------------
//----------------------------------------------------------------------------
// wxHtmlEasyPrinting // wxHtmlEasyPrinting
//-------------------------------------------------------------------------------- //----------------------------------------------------------------------------
wxHtmlEasyPrinting::wxHtmlEasyPrinting(const wxString& name, wxFrame *parent_frame) wxHtmlEasyPrinting::wxHtmlEasyPrinting(const wxString& name, wxFrame *parent_frame)
@@ -426,6 +439,8 @@ wxHtmlEasyPrinting::wxHtmlEasyPrinting(const wxString& name, wxFrame *parent_fra
m_PageSetupData->EnableMargins(TRUE); m_PageSetupData->EnableMargins(TRUE);
m_PageSetupData->SetMarginTopLeft(wxPoint(25, 25)); m_PageSetupData->SetMarginTopLeft(wxPoint(25, 25));
m_PageSetupData->SetMarginBottomRight(wxPoint(25, 25)); m_PageSetupData->SetMarginBottomRight(wxPoint(25, 25));
SetFonts(wxEmptyString, wxEmptyString, NULL);
} }
@@ -572,11 +587,28 @@ void wxHtmlEasyPrinting::SetFooter(const wxString& footer, int pg)
} }
void wxHtmlEasyPrinting::SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes)
{
m_FontFaceNormal = normal_face;
m_FontFaceFixed = fixed_face;
if (sizes)
{
m_FontsSizes = m_FontsSizesArr;
for (int i = 0; i < 7; i++) m_FontsSizes[i] = sizes[i];
}
else
m_FontsSizes = NULL;
}
wxHtmlPrintout *wxHtmlEasyPrinting::CreatePrintout() wxHtmlPrintout *wxHtmlEasyPrinting::CreatePrintout()
{ {
wxHtmlPrintout *p = new wxHtmlPrintout(m_Name); wxHtmlPrintout *p = new wxHtmlPrintout(m_Name);
p->SetFonts(m_FontFaceNormal, m_FontFaceFixed, m_FontsSizes);
p->SetHeader(m_Headers[0], wxPAGE_EVEN); p->SetHeader(m_Headers[0], wxPAGE_EVEN);
p->SetHeader(m_Headers[1], wxPAGE_ODD); p->SetHeader(m_Headers[1], wxPAGE_ODD);
p->SetFooter(m_Footers[0], wxPAGE_EVEN); p->SetFooter(m_Footers[0], wxPAGE_EVEN);

View File

@@ -69,14 +69,8 @@ wxHtmlWinParser::wxHtmlWinParser(wxHtmlWindow *wnd) : wxHtmlParser()
m_FontsEncTable[i][j][k][l][m] = wxFONTENCODING_DEFAULT; m_FontsEncTable[i][j][k][l][m] = wxFONTENCODING_DEFAULT;
#endif #endif
} }
#ifdef __WXMSW__
static int default_sizes[7] = {7, 8, 10, 12, 16, 22, 30}; SetFonts(wxEmptyString, wxEmptyString, NULL);
#elif defined(__WXMAC__)
static int default_sizes[7] = {9, 12, 14, 18, 24, 30, 36};
#else
static int default_sizes[7] = {10, 12, 14, 16, 19, 24, 32};
#endif
SetFonts(wxT(""), wxT(""), default_sizes);
} }
// fill in wxHtmlParser's tables: // fill in wxHtmlParser's tables:
@@ -118,8 +112,22 @@ void wxHtmlWinParser::RemoveModule(wxHtmlTagsModule *module)
m_Modules.DeleteObject(module); m_Modules.DeleteObject(module);
} }
void wxHtmlWinParser::SetFonts(wxString normal_face, wxString fixed_face, const int *sizes) void wxHtmlWinParser::SetFonts(wxString normal_face, wxString fixed_face,
const int *sizes)
{ {
static int default_sizes[7] =
{
wxHTML_FONT_SIZE_1,
wxHTML_FONT_SIZE_2,
wxHTML_FONT_SIZE_3,
wxHTML_FONT_SIZE_4,
wxHTML_FONT_SIZE_5,
wxHTML_FONT_SIZE_6,
wxHTML_FONT_SIZE_7
};
if (sizes == NULL) sizes = default_sizes;
int i, j, k, l, m; int i, j, k, l, m;
for (i = 0; i < 7; i++) m_FontsSizes[i] = sizes[i]; for (i = 0; i < 7; i++) m_FontsSizes[i] = sizes[i];