#include "wx/html/htmldefs.h"
#include "wx/window.h"
-class wxHtmlCell;
-class wxHtmlContainerCell;
+
+class WXDLLEXPORT wxHtmlLinkInfo;
+class WXDLLEXPORT wxHtmlCell;
+class WXDLLEXPORT wxHtmlContainerCell;
//--------------------------------------------------------------------------------
// wxHtmlCell
class WXDLLEXPORT wxHtmlCell : public wxObject
{
public:
- wxHtmlCell() : wxObject() {m_Next = NULL; m_Parent = NULL; m_Width = m_Height = m_Descent = 0; m_CanLiveOnPagebreak = TRUE;}
- virtual ~wxHtmlCell() {if (m_Next) delete m_Next;};
+ wxHtmlCell();
+ virtual ~wxHtmlCell();
void SetParent(wxHtmlContainerCell *p) {m_Parent = p;}
wxHtmlContainerCell *GetParent() const {return m_Parent;}
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,
+ virtual wxHtmlLinkInfo* 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
// 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 SetLink(const wxHtmlLinkInfo& link);
void SetNext(wxHtmlCell *cell) {m_Next = cell;}
// members writin methods
// Parent is pointer to wxHtmlWindow that generated the event
// HINT: if this handling is not enough for you you should use
// wxHtmlBinderCell
-
+
virtual bool AdjustPagebreak(int *pagebreak);
// This method used to adjust pagebreak position. The parameter is
// variable that contains y-coordinate of page break (= horizontal line that
//
// Returned value : true if pagebreak was modified, false otherwise
// Usage : while (container->AdjustPagebreak(&p)) {}
-
+
void SetCanLiveOnPagebreak(bool can) {m_CanLiveOnPagebreak = can;}
// Sets cell's behaviour on pagebreaks (see AdjustPagebreak). Default
// is true - the cell can be split on two pages
// m_Descent is used to position text&images..
long m_PosX, m_PosY;
// position where the fragment is drawn
- wxString m_Link;
+ wxHtmlLinkInfo *m_Link;
// destination address if this fragment is hypertext link, "" otherwise
bool m_CanLiveOnPagebreak;
// true if this cell can be placed on pagebreak, false otherwise
// Layout()
void SetBackgroundColour(const wxColour& clr) {m_UseBkColour = TRUE; m_BkColour = clr;}
void SetBorder(const wxColour& clr1, const wxColour& clr2) {m_UseBorder = TRUE; m_BorderColour1 = clr1, m_BorderColour2 = clr2;}
- virtual wxString GetLink(int x = 0, int y = 0) const;
+ virtual wxHtmlLinkInfo* GetLink(int x = 0, int y = 0) const;
virtual const wxHtmlCell* Find(int condition, const void* param) const;
virtual void OnMouseClick(wxWindow *parent, int x, int y, bool left, bool middle, bool right);
-#endif
+//--------------------------------------------------------------------------------
+// wxHtmlLinkInfo
+// Internal data structure. It represents hypertext link
+//--------------------------------------------------------------------------------
+
+class WXDLLEXPORT wxHtmlLinkInfo : public wxObject
+{
+ public:
+ wxHtmlLinkInfo() : wxObject()
+ { m_Href = m_Target = wxEmptyString; }
+ wxHtmlLinkInfo(const wxString& href, const wxString& target = wxEmptyString) : wxObject()
+ { m_Href = href; m_Target = target; }
+ wxHtmlLinkInfo(const wxHtmlLinkInfo& l)
+ { m_Href = l.m_Href, m_Target = l.m_Target; }
+ wxHtmlLinkInfo& operator=(const wxHtmlLinkInfo& l)
+ { m_Href = l.m_Href, m_Target = l.m_Target; return *this; }
+
+ wxString GetHref() const { return m_Href; }
+ wxString GetTarget() const { return m_Target; }
+
+ private:
+ wxString m_Href, m_Target;
+};
+
+
+
+
+#endif // wxUSE_HTML
#endif // _WX_HTMLCELL_H_