]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/html/htmlcell.h
Add files necessary to run Expat configure.
[wxWidgets.git] / interface / wx / html / htmlcell.h
index ab2edae710f6fffdee3761c95fcae85a2fe14f1f..c44ec814a88e786c9ee15199c70b88a5074a8c0d 100644 (file)
@@ -7,6 +7,81 @@
 /////////////////////////////////////////////////////////////////////////////
 
 
+/**
+   @class wxHtmlRenderingStyle
+   wxHtmlSelection is data holder with information about text selection.
+   Selection is defined by two positions (beginning and end of the selection)
+   and two leaf(!) cells at these positions.
+
+   @library{wxhtml}
+   @category{html}
+*/
+class wxHtmlSelection
+{
+public:
+    wxHtmlSelection();
+
+    // this version is used for the user selection defined with the mouse
+    void Set(const wxPoint& fromPos, const wxHtmlCell *fromCell,
+             const wxPoint& toPos, const wxHtmlCell *toCell);
+    void Set(const wxHtmlCell *fromCell, const wxHtmlCell *toCell);
+
+    const wxHtmlCell *GetFromCell() const;
+    const wxHtmlCell *GetToCell() const;
+
+    // these values are in absolute coordinates:
+    const wxPoint& GetFromPos() const;
+    const wxPoint& GetToPos() const;
+
+    // these are From/ToCell's private data
+    void ClearFromToCharacterPos();
+    bool AreFromToCharacterPosSet() const;
+
+    void SetFromCharacterPos (wxCoord pos);
+    void SetToCharacterPos (wxCoord pos);
+    wxCoord GetFromCharacterPos () const;
+    wxCoord GetToCharacterPos () const;
+
+    bool IsEmpty() const;
+};
+
+
+
+enum wxHtmlSelectionState
+{
+    wxHTML_SEL_OUT,     // currently rendered cell is outside the selection
+    wxHTML_SEL_IN,      // ... is inside selection
+    wxHTML_SEL_CHANGING // ... is the cell on which selection state changes
+};
+
+
+/**
+   @class wxHtmlRenderingState
+
+   Selection state is passed to wxHtmlCell::Draw so that it can render itself
+   differently e.g. when inside text selection or outside it.
+
+   @library{wxhtml}
+   @category{html}
+*/
+class wxHtmlRenderingState
+{
+public:
+    wxHtmlRenderingState();
+
+    void SetSelectionState(wxHtmlSelectionState s);
+    wxHtmlSelectionState GetSelectionState() const;
+
+    void SetFgColour(const wxColour& c);
+    const wxColour& GetFgColour() const;
+    void SetBgColour(const wxColour& c);
+    const wxColour& GetBgColour() const;
+    void SetBgMode(int m);
+    int GetBgMode() const;
+};
+
+
 
 /**
     @class wxHtmlRenderingStyle
@@ -69,6 +144,25 @@ public:
 };
 
 
+
+// Flags for wxHtmlCell::FindCellByPos
+enum
+{
+    wxHTML_FIND_EXACT             = 1,
+    wxHTML_FIND_NEAREST_BEFORE    = 2,
+    wxHTML_FIND_NEAREST_AFTER     = 4
+};
+
+
+// Superscript/subscript/normal script mode of a cell
+enum wxHtmlScriptMode
+{
+    wxHTML_SCRIPT_NORMAL,
+    wxHTML_SCRIPT_SUB,
+    wxHTML_SCRIPT_SUP
+};
+
+
 /**
     @class wxHtmlCell
 
@@ -95,19 +189,33 @@ 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,
-                                 const wxArrayInt& known_pagebreaks) const;
+                                 const wxArrayInt& known_pagebreaks,
+                                 int pageHeight) const;
 
     /**
         Renders the cell.
@@ -605,3 +713,53 @@ public:
     */
     wxHtmlWidgetCell(wxWindow* wnd, int w = 0);
 };
+
+
+
+/**
+    @class wxHtmlWordCell
+
+    This html cell represents a single word or text fragment in the document stream.
+
+    @library{wxhtml}
+    @category{html}
+*/
+class wxHtmlWordCell : public wxHtmlCell
+{
+public:
+    wxHtmlWordCell(const wxString& word, const wxDC& dc);
+};
+
+
+/**
+    @class wxHtmlWordWithTabsCell
+
+    wxHtmlWordCell is a specialization for storing text fragments with
+    embedded tab characters.
+
+    @library{wxhtml}
+    @category{html}
+*/
+class wxHtmlWordWithTabsCell : public wxHtmlWordCell
+{
+public:
+    wxHtmlWordWithTabsCell(const wxString& word,
+                           const wxString& wordOrig,
+                           size_t linepos,
+                           const wxDC& dc);
+};
+
+
+/**
+    @class wxHtmlFontCell
+
+    This cell represents a font change in the document stream.
+
+    @library{wxhtml}
+    @category{html}
+*/
+class wxHtmlFontCell : public wxHtmlCell
+{
+public:
+    wxHtmlFontCell(wxFont *font);
+};