]> git.saurik.com Git - wxWidgets.git/blobdiff - src/html/htmprint.cpp
mac paths updated
[wxWidgets.git] / src / html / htmprint.cpp
index 8b957076f13a3a40eab225e1abfb4be964350982..e4dbbcfda7bf39d43a7c516c27b72fde8679c169 100644 (file)
@@ -23,6 +23,7 @@
     #include "wx/dc.h"
     #include "wx/settings.h"
     #include "wx/msgdlg.h"
     #include "wx/dc.h"
     #include "wx/settings.h"
     #include "wx/msgdlg.h"
+    #include "wx/module.h"
 #endif
 
 #include "wx/print.h"
 #endif
 
 #include "wx/print.h"
 #include "wx/html/htmprint.h"
 #include "wx/wxhtml.h"
 #include "wx/wfstream.h"
 #include "wx/html/htmprint.h"
 #include "wx/wxhtml.h"
 #include "wx/wfstream.h"
-#include "wx/module.h"
+
+
+// default font size of normal text (HTML font size 0) for printing, in points:
+#define DEFAULT_PRINT_FONT_SIZE   12
 
 
 //--------------------------------------------------------------------------------
 
 
 //--------------------------------------------------------------------------------
@@ -46,6 +50,7 @@ wxHtmlDCRenderer::wxHtmlDCRenderer() : wxObject()
     m_Parser = new wxHtmlWinParser();
     m_FS = new wxFileSystem();
     m_Parser->SetFS(m_FS);
     m_Parser = new wxHtmlWinParser();
     m_FS = new wxFileSystem();
     m_Parser->SetFS(m_FS);
+    SetStandardFonts(DEFAULT_PRINT_FONT_SIZE);
 }
 
 
 }
 
 
@@ -161,6 +166,7 @@ wxHtmlPrintout::wxHtmlPrintout(const wxString& title) : wxPrintout(title)
     m_Footers[0] = m_Footers[1] = wxEmptyString;
     m_HeaderHeight = m_FooterHeight = 0;
     SetMargins(); // to default values
     m_Footers[0] = m_Footers[1] = wxEmptyString;
     m_HeaderHeight = m_FooterHeight = 0;
     SetMargins(); // to default values
+    SetStandardFonts(DEFAULT_PRINT_FONT_SIZE);
 }
 
 
 }
 
 
@@ -251,7 +257,7 @@ bool wxHtmlPrintout::OnBeginDocument(int startPage, int endPage)
 bool wxHtmlPrintout::OnPrintPage(int page)
 {
     wxDC *dc = GetDC();
 bool wxHtmlPrintout::OnPrintPage(int page)
 {
     wxDC *dc = GetDC();
-    if (dc)
+    if (dc && dc->IsOk())
     {
         if (HasPage(page))
             RenderPage(dc, page);
     {
         if (HasPage(page))
             RenderPage(dc, page);
@@ -264,19 +270,19 @@ bool wxHtmlPrintout::OnPrintPage(int page)
 void wxHtmlPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo)
 {
     *minPage = 1;
 void wxHtmlPrintout::GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int *selPageTo)
 {
     *minPage = 1;
-    if ( m_NumPages >= (signed)m_PageBreaks.Count()-1)
+    if ( m_NumPages >= (signed)m_PageBreaks.GetCount()-1)
         *maxPage = m_NumPages;
     else
         *maxPage = m_NumPages;
     else
-        *maxPage = (signed)m_PageBreaks.Count()-1;
+        *maxPage = (signed)m_PageBreaks.GetCount()-1;
     *selPageFrom = 1;
     *selPageFrom = 1;
-    *selPageTo = (signed)m_PageBreaks.Count()-1;
+    *selPageTo = (signed)m_PageBreaks.GetCount()-1;
 }
 
 
 
 bool wxHtmlPrintout::HasPage(int pageNum)
 {
 }
 
 
 
 bool wxHtmlPrintout::HasPage(int pageNum)
 {
-    return (pageNum >= 1 && pageNum-1 <= (signed)m_PageBreaks.Count());
+    return pageNum > 0 && (unsigned)pageNum < m_PageBreaks.GetCount();
 }
 
 
 }
 
 
@@ -374,9 +380,9 @@ void wxHtmlPrintout::CountPages()
                                  m_PageBreaks,
                                  pos, true, INT_MAX);
         m_PageBreaks.Add( pos);
                                  m_PageBreaks,
                                  pos, true, INT_MAX);
         m_PageBreaks.Add( pos);
-        if( m_PageBreaks.Count() > wxHTML_PRINT_MAX_PAGES)
+        if( m_PageBreaks.GetCount() > wxHTML_PRINT_MAX_PAGES)
         {
         {
-            wxMessageBox( _("HTML pagination algorithm generated more than the allowed maximum number of pages and it can continue any longer!"),
+            wxMessageBox( _("HTML pagination algorithm generated more than the allowed maximum number of pages and it can't continue any longer!"),
             _("Warning"), wxCANCEL | wxICON_ERROR );
             break;
         }
             _("Warning"), wxCANCEL | wxICON_ERROR );
             break;
         }
@@ -410,7 +416,7 @@ void wxHtmlPrintout::RenderPage(wxDC *dc, int page)
 
     m_Renderer->SetDC(dc, (double)ppiPrinterY / (double)ppiScreenY);
 
 
     m_Renderer->SetDC(dc, (double)ppiPrinterY / (double)ppiScreenY);
 
-    dc->SetBackgroundMode(wxTRANSPARENT);
+    dc->SetBackgroundMode(wxBRUSHSTYLE_TRANSPARENT);
 
     m_Renderer->Render((int) (ppmm_h * m_MarginLeft),
                          (int) (ppmm_v * (m_MarginTop + (m_HeaderHeight == 0 ? 0 : m_MarginSpace)) + m_HeaderHeight), m_PageBreaks,
 
     m_Renderer->Render((int) (ppmm_h * m_MarginLeft),
                          (int) (ppmm_v * (m_MarginTop + (m_HeaderHeight == 0 ? 0 : m_MarginSpace)) + m_HeaderHeight), m_PageBreaks,
@@ -440,9 +446,15 @@ wxString wxHtmlPrintout::TranslateHeader(const wxString& instr, int page)
     num.Printf(wxT("%i"), page);
     r.Replace(wxT("@PAGENUM@"), num);
 
     num.Printf(wxT("%i"), page);
     r.Replace(wxT("@PAGENUM@"), num);
 
-    num.Printf(wxT("%lu"), (unsigned long)(m_PageBreaks.Count() - 1));
+    num.Printf(wxT("%lu"), (unsigned long)(m_PageBreaks.GetCount() - 1));
     r.Replace(wxT("@PAGESCNT@"), num);
 
     r.Replace(wxT("@PAGESCNT@"), num);
 
+    const wxDateTime now = wxDateTime::Now();
+    r.Replace(wxT("@DATE@"), now.FormatDate());
+    r.Replace(wxT("@TIME@"), now.FormatTime());
+
+    r.Replace(wxT("@TITLE@"), GetTitle());
+
     return r;
 }
 
     return r;
 }
 
@@ -494,7 +506,7 @@ wxHtmlEasyPrinting::wxHtmlEasyPrinting(const wxString& name, wxWindow *parentWin
     m_PageSetupData->SetMarginTopLeft(wxPoint(25, 25));
     m_PageSetupData->SetMarginBottomRight(wxPoint(25, 25));
 
     m_PageSetupData->SetMarginTopLeft(wxPoint(25, 25));
     m_PageSetupData->SetMarginBottomRight(wxPoint(25, 25));
 
-    SetFonts(wxEmptyString, wxEmptyString, NULL);
+    SetStandardFonts(DEFAULT_PRINT_FONT_SIZE);
 }
 
 
 }