- public:
- wxHtmlCell() : wxObject() {m_Next = NULL; m_Parent = NULL; m_Width = m_Height = m_Descent = 0;};
- virtual ~wxHtmlCell() {if (m_Next) delete m_Next;};
-
- void SetParent(wxHtmlContainerCell *p) {m_Parent = p;}
- wxHtmlContainerCell *GetParent() const {return m_Parent;}
-
- int GetPosX() const {return m_PosX;}
- int GetPosY() const {return m_PosY;}
- int GetWidth() const {return m_Width;}
- int GetHeight() const {return m_Height;}
- int GetDescent() const {return m_Descent;}
- virtual wxString GetLink(int WXUNUSED(x) = 0,
- int WXUNUSED(y) = 0) const
- { return m_Link; }
- // returns the link associated with this cell. The position is position within
- // the cell so it varies from 0 to m_Width, from 0 to m_Height
- wxHtmlCell *GetNext() const {return m_Next;}
- // members access methods
-
- virtual void SetPos(int x, int y) {m_PosX = x, m_PosY = y;}
- void SetLink(const wxString& link) {m_Link = link;}
- void SetNext(wxHtmlCell *cell) {m_Next = cell;}
- // members writin methods
-
- virtual void Layout(int w) {SetPos(0, 0); if (m_Next) m_Next -> Layout(w);};
- // 1. adjust cell's width according to the fact that maximal possible width is w.
- // (this has sense when working with horizontal lines, tables etc.)
- // 2. prepare layout (=fill-in m_PosX, m_PosY (and sometime m_Height) members)
- // = place items to fit window, according to the width w
-
- virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2) {if (m_Next) m_Next -> Draw(dc, x, y, view_y1, view_y2);}
- // renders the cell
-
- virtual void DrawInvisible(wxDC& dc, int x, int y) {if (m_Next) m_Next -> DrawInvisible(dc, x, y);};
- // proceed drawing actions in case the cell is not visible (scrolled out of screen).
- // This is needed to change fonts, colors and so on
-
- virtual const wxHtmlCell* Find(int condition, const void* param) const {if (m_Next) return m_Next -> Find(condition, param); else return NULL;}
- // This method returns pointer to the FIRST cell for that
- // the condition
- // is true. It first checks if the condition is true for this
- // cell and then calls m_Next -> Find(). (Note: it checks
- // all subcells if the cell is container)
- // Condition is unique condition identifier (see htmldefs.h)
- // (user-defined condition IDs should start from 10000)
- // and param is optional parameter
- // Example : m_Cell -> Find(HTML_COND_ISANCHOR, "news");
- // returns pointer to anchor news
-
- virtual void OnMouseClick(wxWindow *parent, int x, int y, bool left, bool middle, bool right);
- // This function is called when mouse button is clicked over the cell.
- // left, middle, right are flags indicating whether the button was or wasn't
- // pressed.
- // Parent is pointer to wxHtmlWindow that generated the event
- // HINT: if this handling is not enough for you you should use
- // wxHtmlBinderCell
-
-
- protected:
- wxHtmlCell *m_Next;
- // pointer to the next cell
- wxHtmlContainerCell *m_Parent;
+public:
+ wxHtmlCell();
+ virtual ~wxHtmlCell();
+
+ void SetParent(wxHtmlContainerCell *p) {m_Parent = p;}
+ wxHtmlContainerCell *GetParent() const {return m_Parent;}
+
+ int GetPosX() const {return m_PosX;}
+ int GetPosY() const {return m_PosY;}
+ int GetWidth() const {return m_Width;}
+ int GetHeight() const {return m_Height;}
+ int GetDescent() const {return m_Descent;}
+
+ const wxString& GetId() const { return m_id; }
+ void SetId(const wxString& id) { m_id = id; }
+
+ // returns the link associated with this cell. The position is position within
+ // the cell so it varies from 0 to m_Width, from 0 to m_Height
+ virtual wxHtmlLinkInfo* GetLink(int WXUNUSED(x) = 0, int WXUNUSED(y) = 0) const
+ { return m_Link; }
+
+ // members access methods
+ wxHtmlCell *GetNext() const {return m_Next;}
+
+ // members writing methods
+ virtual void SetPos(int x, int y) {m_PosX = x, m_PosY = y;}
+ void SetLink(const wxHtmlLinkInfo& link);
+ void SetNext(wxHtmlCell *cell) {m_Next = cell;}
+
+ // 1. adjust cell's width according to the fact that maximal possible width is w.
+ // (this has sense when working with horizontal lines, tables etc.)
+ // 2. prepare layout (=fill-in m_PosX, m_PosY (and sometime m_Height) members)
+ // = place items to fit window, according to the width w
+ virtual void Layout(int w);
+
+ // renders the cell
+ virtual void Draw(wxDC& WXUNUSED(dc), int WXUNUSED(x), int WXUNUSED(y), int WXUNUSED(view_y1), int WXUNUSED(view_y2)) {}
+
+ // proceed drawing actions in case the cell is not visible (scrolled out of screen).
+ // This is needed to change fonts, colors and so on
+ virtual void DrawInvisible(wxDC& WXUNUSED(dc), int WXUNUSED(x), int WXUNUSED(y)) {}
+
+ // This method returns pointer to the FIRST cell for that
+ // the condition
+ // is true. It first checks if the condition is true for this
+ // cell and then calls m_Next->Find(). (Note: it checks
+ // all subcells if the cell is container)
+ // Condition is unique condition identifier (see htmldefs.h)
+ // (user-defined condition IDs should start from 10000)
+ // and param is optional parameter
+ // Example : m_Cell->Find(wxHTML_COND_ISANCHOR, "news");
+ // returns pointer to anchor news
+ virtual const wxHtmlCell* Find(int condition, const void* param) const;
+
+ // This function is called when mouse button is clicked over the cell.
+ //
+ // Parent is pointer to wxHtmlWindow that generated the event
+ // HINT: if this handling is not enough for you you should use
+ // wxHtmlWidgetCell
+ virtual void OnMouseClick(wxWindow *parent, int x, int y, const wxMouseEvent& event);
+
+ // This method used to adjust pagebreak position. The parameter is
+ // variable that contains y-coordinate of 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.
+ //
+ // Returned value : true if pagebreak was modified, false otherwise
+ // Usage : while (container->AdjustPagebreak(&p)) {}
+ virtual bool AdjustPagebreak(int *pagebreak) const;
+
+ // Sets cell's behaviour on pagebreaks (see AdjustPagebreak). Default
+ // is true - the cell can be split on two pages
+ void SetCanLiveOnPagebreak(bool can) { m_CanLiveOnPagebreak = can; }
+
+ // Returns y-coordinates that contraint the cell, i.e. left is highest
+ // and right lowest coordinate such that the cell lays between then.
+ // Note: this method does not return meaningful values if you haven't
+ // called Layout() before!
+ virtual void GetHorizontalConstraints(int *left, int *right) const;
+
+ // Returns true for simple == terminal cells, i.e. not composite ones.
+ // This if for internal usage only and may disappear in future versions!
+ virtual bool IsTerminalCell() const { return TRUE; }
+
+ // Find the terminal cell inside this cell at the given position (relative
+ // to this cell)
+ //
+ // Returns NULL if not found
+ virtual wxHtmlCell *FindCellByPos(wxCoord x, wxCoord y) const;
+
+protected:
+ wxHtmlCell *m_Next;
+ // pointer to the next cell
+ wxHtmlContainerCell *m_Parent;