]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/html/htmlcell.h
Minor tweak to improve understandability
[wxWidgets.git] / interface / wx / html / htmlcell.h
index 34b3c9c3a78097cac5c29957219211b00933bb1c..86351e6055fb0c5051ec7ab13280e6c9225f17b5 100644 (file)
@@ -3,64 +3,70 @@
 // Purpose:     interface of wxHtml*Cell
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
-// Licence:     wxWindows license
+// Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
+
+
 /**
-    @class wxHtmlColourCell
+    @class wxHtmlRenderingStyle
 
-    This cell changes the colour of either the background or the foreground.
+    Allows HTML rendering customizations.
+    This class is used when rendering wxHtmlCells as a callback.
 
     @library{wxhtml}
     @category{html}
+
+    @see wxHtmlRenderingInfo
 */
-class wxHtmlColourCell : public wxHtmlCell
+class wxHtmlRenderingStyle
 {
 public:
     /**
-        Constructor.
+        Returns the colour to use for the selected text.
+    */
+    virtual wxColour GetSelectedTextColour(const wxColour& clr) = 0;
 
-        @param clr
-            The color
-        @param flags
-            Can be one of following:
-            - wxHTML_CLR_FOREGROUND: change color of text
-            - wxHTML_CLR_BACKGROUND: change background color
+    /**
+        Returns the colour to use for the selected text's background.
     */
-    wxHtmlColourCell(const wxColour& clr, int flags = wxHTML_CLR_FOREGROUND);
+    virtual wxColour GetSelectedTextBgColour(const wxColour& clr) = 0;
 };
 
 
-
 /**
-    @class wxHtmlWidgetCell
+    @class wxHtmlRenderingInfo
 
-    wxHtmlWidgetCell is a class that provides a connection between HTML cells and
-    widgets (an object derived from wxWindow).
-    You can use it to display things like forms, input boxes etc. in an HTML window.
-
-    wxHtmlWidgetCell takes care of resizing and moving window.
+    This class contains information given to cells when drawing them.
+    Contains rendering state, selection information and rendering style object
+    that can be used to customize the output.
 
     @library{wxhtml}
     @category{html}
+
+    @see @ref overview_html_cells, wxHtmlCell
 */
-class wxHtmlWidgetCell : public wxHtmlCell
+class wxHtmlRenderingInfo
 {
 public:
     /**
-        Constructor.
+        Default ctor.
+    */
+    wxHtmlRenderingInfo();
 
-        @param wnd
-            Connected window. It is parent window @b must be the wxHtmlWindow object
-            within which it is displayed!
-        @param w
-            Floating width. If non-zero width of wnd window is adjusted so that it is
-            always w percents of parent container's width. (For example w = 100 means
-            that the window will always have same width as parent container).
+    //@{
+    /**
+        Accessors.
     */
-    wxHtmlWidgetCell(wxWindow* wnd, int w = 0);
-};
+    void SetSelection(wxHtmlSelection *s);
+    wxHtmlSelection *GetSelection() const;
 
+    void SetStyle(wxHtmlRenderingStyle *style);
+    wxHtmlRenderingStyle& GetStyle();
+
+    wxHtmlRenderingState& GetState();
+    //@}
+};
 
 
 /**
@@ -89,24 +95,39 @@ public:
 
     /**
         This method is used to adjust pagebreak position.
-        The parameter is variable that contains y-coordinate of page break
+        The first parameter is a variable that contains the y-coordinate of the page break
         (= horizontal line that should not be crossed by words, images etc.).
         If this cell cannot be divided into two pieces (each one on another page)
-        then it moves the pagebreak few pixels up.
+        then it either moves the pagebreak a few pixels up, if possible, or, if
+        the cell cannot fit on the page at all, then the cell is forced to
+        split unconditionally.
+
         Returns @true if pagebreak was modified, @false otherwise.
 
+        @param pagebreak
+            position in pixel of the pagebreak.
+
+        @param known_pagebreaks
+            the list of the previous pagebreaks
+
+        @param pageHeight
+            the height in pixel of the page drawable area
+
         Usage:
         @code
-        while (container->AdjustPagebreak(&p)) {}
+        while (container->AdjustPagebreak(&p, kp, ph)) {}
         @endcode
+
     */
-    virtual bool AdjustPagebreak(int* pagebreak);
+    virtual bool AdjustPagebreak(int* pagebreak,
+                                 const wxArrayInt& known_pagebreaks,
+                                 int pageHeight) const;
 
     /**
         Renders the cell.
 
         @param dc
-            Device context to which the cell is to be drawn
+            Device context to which the cell is to be drawn.
         @param x,y
             Coordinates of parent's upper left corner (origin). You must
             add this to m_PosX,m_PosY when passing coordinates to dc's methods
@@ -116,12 +137,14 @@ public:
             @endcode
         @param view_y1
             y-coord of the first line visible in window.
-            This is used to optimize rendering speed
+            This is used to optimize rendering speed.
         @param view_y2
             y-coord of the last line visible in window.
-            This is used to optimize rendering speed
+            This is used to optimize rendering speed.
+        @param info
+            Additional information for the rendering of the cell.
     */
-    virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
+    virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2, wxHtmlRenderingInfo& info);
 
     /**
         This method is called instead of Draw() when the cell is certainly out of
@@ -137,8 +160,10 @@ public:
             @code
                 dc->DrawText("hello", x + m_PosX, y + m_PosY)
             @endcode
+        @param info
+            Additional information for the rendering of the cell.
     */
-    virtual void DrawInvisible(wxDC& dc, int x, int y);
+    virtual void DrawInvisible(wxDC& dc, int x , int y, wxHtmlRenderingInfo& info);
 
     /**
         Returns pointer to itself if this cell matches condition (or if any of the
@@ -160,7 +185,7 @@ public:
     /**
         Returns descent value of the cell (m_Descent member).
         See explanation:
-        @image html descent.png
+        @image html htmlcell_descent.png
     */
     int GetDescent() const;
 
@@ -182,7 +207,7 @@ public:
     /**
         Returns unique cell identifier if there is any, the empty string otherwise.
     */
-    virtual wxString GetId() const;
+    const wxString& GetId() const;
 
     /**
         Returns hypertext link if associated with this cell or @NULL otherwise.
@@ -234,9 +259,11 @@ public:
     int GetWidth() const;
 
     /**
+        Layouts the cell.
+
         This method performs two actions:
         -# adjusts the cell's width according to the fact that maximal possible
-           width is @e w. (this has sense when working with horizontal lines, tables etc.)
+           width is @e w (this has sense when working with horizontal lines, tables etc.)
         -# prepares layout (=fill-in m_PosX, m_PosY (and sometimes m_Height) members)
            based on actual width @e w
 
@@ -249,7 +276,7 @@ public:
         This function is simple event handler.
         Each time the user clicks mouse button over a cell within wxHtmlWindow
         this method of that cell is called.
-        Default behavior is to call wxHtmlWindow::LoadPage.
+        Default behaviour is to call wxHtmlWindow::LoadPage.
 
         @param window
             interface to the parent HTML window
@@ -284,13 +311,13 @@ public:
         Sets the next cell in the list. This shouldn't be called by user - it is
         to be used only by wxHtmlContainerCell::InsertCell.
     */
-    void SetNext(wxHtmlCell cell);
+    void SetNext(wxHtmlCell* cell);
 
     /**
         Sets parent container of this cell.
         This is called from wxHtmlContainerCell::InsertCell.
     */
-    void SetParent(wxHtmlContainerCell p);
+    void SetParent(wxHtmlContainerCell* p);
 
     /**
         Sets the cell's position within parent container.
@@ -353,7 +380,7 @@ public:
     /**
         Inserts a new cell into the container.
     */
-    void InsertCell(wxHtmlCell cell);
+    void InsertCell(wxHtmlCell* cell);
 
     /**
         Sets the container's alignment (both horizontal and vertical) according to
@@ -384,7 +411,7 @@ public:
             - wxHTML_ALIGN_CENTER: cells are centered on line
             - wxHTML_ALIGN_TOP: cells are under the line
 
-        @image html alignv.png
+        @image html htmlcontcell_alignv.png
     */
     void SetAlignVer(int al);
 
@@ -400,13 +427,15 @@ public:
             Colour of top and left lines
         @param clr2
             Colour of bottom and right lines
+        @param border
+            Size of the border in pixels
     */
-    void SetBorder(const wxColour& clr1, const wxColour& clr2);
+    void SetBorder(const wxColour& clr1, const wxColour& clr2, int border = 1);
 
     /**
         Sets the indentation (free space between borders of container and subcells).
 
-        @image html indent.png
+        @image html htmlcontcell_indent.png
 
         @param i
             Indentation value.
@@ -536,3 +565,57 @@ public:
     wxString GetTarget() const;
 };
 
+/**
+    @class wxHtmlColourCell
+
+    This cell changes the colour of either the background or the foreground.
+
+    @library{wxhtml}
+    @category{html}
+*/
+class wxHtmlColourCell : public wxHtmlCell
+{
+public:
+    /**
+        Constructor.
+
+        @param clr
+            The color
+        @param flags
+            Can be one of following:
+            - wxHTML_CLR_FOREGROUND: change color of text
+            - wxHTML_CLR_BACKGROUND: change background color
+    */
+    wxHtmlColourCell(const wxColour& clr, int flags = wxHTML_CLR_FOREGROUND);
+};
+
+
+
+/**
+    @class wxHtmlWidgetCell
+
+    wxHtmlWidgetCell is a class that provides a connection between HTML cells and
+    widgets (an object derived from wxWindow).
+    You can use it to display things like forms, input boxes etc. in an HTML window.
+
+    wxHtmlWidgetCell takes care of resizing and moving window.
+
+    @library{wxhtml}
+    @category{html}
+*/
+class wxHtmlWidgetCell : public wxHtmlCell
+{
+public:
+    /**
+        Constructor.
+
+        @param wnd
+            Connected window. It is parent window @b must be the wxHtmlWindow object
+            within which it is displayed!
+        @param w
+            Floating width. If non-zero width of wnd window is adjusted so that it is
+            always w percents of parent container's width. (For example w = 100 means
+            that the window will always have same width as parent container).
+    */
+    wxHtmlWidgetCell(wxWindow* wnd, int w = 0);
+};