partially backported wxHTML SetFonts improvements

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@20070 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Václav Slavík
2003-04-07 22:19:19 +00:00
parent 3d20fa7032
commit c44ad973b9
10 changed files with 133 additions and 37 deletions

View File

@@ -44,8 +44,19 @@ 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}.
\wxheading{Note}
This method was added in wxWindows 2.4.1.
\membersection{wxHtmlDCRenderer::SetSize}\label{wxhtmldcrenderersetsize} \membersection{wxHtmlDCRenderer::SetSize}\label{wxhtmldcrenderersetsize}
\func{void}{SetSize}{\param{int }{width}, \param{int }{height}} \func{void}{SetSize}{\param{int }{width}, \param{int }{height}}

View File

@@ -27,6 +27,16 @@ 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.
\wxheading{Note}
This method was added in wxWindows 2.4.1.
\membersection{wxHtmlPrintout::SetFooter}\label{wxhtmlprintoutsetfooter} \membersection{wxHtmlPrintout::SetFooter}\label{wxhtmlprintoutsetfooter}

View File

@@ -14,8 +14,9 @@ file or downloaded via HTTP protocol) in a window. The width
of the window is constant - given in the constructor - and virtual height of the window is constant - given in the constructor - and virtual height
is changed dynamically depending on page size. is changed dynamically depending on page size.
Once the window is created you can set its content by calling Once the window is created you can set its content by calling
\helpref{SetPage(text)}{wxhtmlwindowsetpage} or \helpref{SetPage(text)}{wxhtmlwindowsetpage},
\helpref{LoadPage(filename)}{wxhtmlwindowloadpage}. \helpref{LoadPage(filename)}{wxhtmlwindowloadpage} or
\helpref{LoadFile}{wxhtmlwindowloadfile}.
\wxheading{Note} \wxheading{Note}
@@ -146,6 +147,24 @@ Clears history.
Moves to next page in history. Moves to next page in history.
\membersection{wxHtmlWindow::LoadFile}\label{wxhtmlwindowloadfile}
\func{virtual bool}{LoadFile}{\param{const wxFileName\& }{filename}}
Loads HTML page from file and displays it.
\wxheading{Return value}
FALSE if an error occurred, TRUE otherwise
\wxheading{Note}
This method was added in wxWindows 2.4.1.
\wxheading{See also}
\helpref{LoadPage}{wxhtmlwindowloadpage}
\membersection{wxHtmlWindow::LoadPage}\label{wxhtmlwindowloadpage} \membersection{wxHtmlWindow::LoadPage}\label{wxhtmlwindowloadpage}
\func{virtual bool}{LoadPage}{\param{const wxString\& }{location}} \func{virtual bool}{LoadPage}{\param{const wxString\& }{location}}
@@ -154,7 +173,7 @@ Unlike SetPage this function first loads HTML page from {\it location}
and then displays it. See example: and then displays it. See example:
\begin{verbatim} \begin{verbatim}
htmlwin -> SetPage("help/myproject/index.htm"); htmlwin->LoadPage("help/myproject/index.htm");
\end{verbatim} \end{verbatim}
\wxheading{Parameters} \wxheading{Parameters}
@@ -165,6 +184,10 @@ htmlwin -> SetPage("help/myproject/index.htm");
FALSE if an error occurred, TRUE otherwise FALSE if an error occurred, TRUE otherwise
\wxheading{See also}
\helpref{LoadFile}{wxhtmlwindowloadfile}
\membersection{wxHtmlWindow::OnCellClicked}\label{wxhtmlwindowoncellclicked} \membersection{wxHtmlWindow::OnCellClicked}\label{wxhtmlwindowoncellclicked}
\func{virtual void}{OnCellClicked}{\param{wxHtmlCell }{*cell}, \param{wxCoord }{x}, \param{wxCoord }{y}, \param{const wxMouseEvent\& }{event}} \func{virtual void}{OnCellClicked}{\param{wxHtmlCell }{*cell}, \param{wxCoord }{x}, \param{wxCoord }{y}, \param{const wxMouseEvent\& }{event}}
@@ -278,7 +301,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.
@@ -293,24 +316,20 @@ 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
platforms. Default face names are empty strings.
\begin{verbatim} \wxheading{Note}
SetFonts("", "", {10, 12, 14, 16, 19, 24, 32});
\end{verbatim}
Under Windows: {\tt NULL} is valid value of {\it sizes} since wxWindows 2.4.1. Older
versions did not accept {\tt NULL} value. wxHTML\_FONT\_SIZE\_n constants
\begin{verbatim} were added in wxWindows 2.4.1.
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

@@ -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

@@ -26,6 +26,7 @@
#include "wx/html/htmlcell.h" #include "wx/html/htmlcell.h"
#include "wx/filesys.h" #include "wx/filesys.h"
#include "wx/html/htmlfilt.h" #include "wx/html/htmlfilt.h"
#include "wx/filename.h"
class wxHtmlProcessor; class wxHtmlProcessor;
class wxHtmlWinModule; class wxHtmlWinModule;
@@ -100,6 +101,9 @@ public:
// Return value : same as SetPage // Return value : same as SetPage
virtual bool LoadPage(const wxString& location); virtual bool LoadPage(const wxString& location);
// Loads HTML page from file
bool LoadFile(const wxFileName& filename);
// Returns full location of opened page // Returns full location of opened page
wxString GetOpenedPage() const {return m_OpenedPage;} wxString GetOpenedPage() const {return m_OpenedPage;}
// Returns anchor within opened page // Returns anchor within opened page
@@ -117,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.
@@ -123,6 +126,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

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

@@ -93,6 +93,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 +415,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)

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];