]>
git.saurik.com Git - wxWidgets.git/blob - interface/wx/html/htmlcell.h
   1 ///////////////////////////////////////////////////////////////////////////// 
   2 // Name:        html/htmlcell.h 
   3 // Purpose:     interface of wxHtml*Cell 
   4 // Author:      wxWidgets team 
   6 // Licence:     wxWindows license 
   7 ///////////////////////////////////////////////////////////////////////////// 
  12     @class wxHtmlRenderingStyle 
  14     Allows HTML rendering customizations. 
  15     This class is used when rendering wxHtmlCells as a callback. 
  20     @see wxHtmlRenderingInfo 
  22 class wxHtmlRenderingStyle
 
  26         Returns the colour to use for the selected text. 
  28     virtual wxColour 
GetSelectedTextColour(const wxColour
& clr
) = 0; 
  31         Returns the colour to use for the selected text's background. 
  33     virtual wxColour 
GetSelectedTextBgColour(const wxColour
& clr
) = 0; 
  38     @class wxHtmlRenderingInfo 
  40     This class contains information given to cells when drawing them. 
  41     Contains rendering state, selection information and rendering style object 
  42     that can be used to customize the output. 
  47     @see @ref overview_html_cells, wxHtmlCell 
  49 class wxHtmlRenderingInfo
 
  55     wxHtmlRenderingInfo(); 
  61     void SetSelection(wxHtmlSelection 
*s
); 
  62     wxHtmlSelection 
*GetSelection() const; 
  64     void SetStyle(wxHtmlRenderingStyle 
*style
); 
  65     wxHtmlRenderingStyle
& GetStyle(); 
  67     wxHtmlRenderingState
& GetState(); 
  75     Internal data structure. It represents fragments of parsed HTML page, the 
  76     so-called @b cell - a word, picture, table, horizontal line and so on. 
  77     It is used by wxHtmlWindow and wxHtmlWinParser to represent HTML page in memory. 
  79     You can divide cells into two groups : @e visible cells with non-zero width and 
  80     height and @e helper cells (usually with zero width and height) that perform 
  81     special actions such as color or font change. 
  86     @see @ref overview_html_cells, wxHtmlContainerCell 
  88 class wxHtmlCell 
: public wxObject
 
  97         This method is used to adjust pagebreak position. 
  98         The parameter is variable that contains y-coordinate of page break 
  99         (= horizontal line that should not be crossed by words, images etc.). 
 100         If this cell cannot be divided into two pieces (each one on another page) 
 101         then it moves the pagebreak few pixels up. 
 102         Returns @true if pagebreak was modified, @false otherwise. 
 106         while (container->AdjustPagebreak(&p)) {} 
 109     virtual bool AdjustPagebreak(int* pagebreak
, 
 110                                  wxArrayInt
& known_pagebreaks
) const; 
 116             Device context to which the cell is to be drawn. 
 118             Coordinates of parent's upper left corner (origin). You must 
 119             add this to m_PosX,m_PosY when passing coordinates to dc's methods 
 122                 dc->DrawText("hello", x + m_PosX, y + m_PosY) 
 125             y-coord of the first line visible in window. 
 126             This is used to optimize rendering speed. 
 128             y-coord of the last line visible in window. 
 129             This is used to optimize rendering speed. 
 131             Additional information for the rendering of the cell. 
 133     virtual void Draw(wxDC
& dc
, int x
, int y
, int view_y1
, int view_y2
, wxHtmlRenderingInfo
& info
); 
 136         This method is called instead of Draw() when the cell is certainly out of 
 137         the screen (and thus invisible). This is not nonsense - some tags (like 
 138         wxHtmlColourCell or font setter) must be drawn even if they are invisible! 
 141             Device context to which the cell is to be drawn. 
 143             Coordinates of parent's upper left corner. You must 
 144             add this to m_PosX,m_PosY when passing coordinates to dc's methods 
 147                 dc->DrawText("hello", x + m_PosX, y + m_PosY) 
 150             Additional information for the rendering of the cell. 
 152     virtual void DrawInvisible(wxDC
& dc
, int x 
, int y
, wxHtmlRenderingInfo
& info
); 
 155         Returns pointer to itself if this cell matches condition (or if any of the 
 156         cells following in the list matches), @NULL otherwise. 
 157         (In other words if you call top-level container's Find() it will 
 158         return pointer to the first cell that matches the condition) 
 160         It is recommended way how to obtain pointer to particular cell or 
 161         to cell of some type (e.g. wxHtmlAnchorCell reacts on wxHTML_COND_ISANCHOR 
 165             Unique integer identifier of condition 
 169     virtual const wxHtmlCell
* Find(int condition
, const void* param
) const; 
 172         Returns descent value of the cell (m_Descent member). 
 174         @image html descent.png 
 176     int GetDescent() const; 
 179         Returns pointer to the first cell in the list. 
 180         You can then use child's GetNext() method to obtain pointer to the next 
 183         @note This shouldn't be used by the end user. If you need some way of 
 184               finding particular cell in the list, try Find() method instead. 
 186     virtual wxHtmlCell
* GetFirstChild() const; 
 189         Returns height of the cell (m_Height member). 
 191     int GetHeight() const; 
 194         Returns unique cell identifier if there is any, the empty string otherwise. 
 196     const wxString
& GetId() const; 
 199         Returns hypertext link if associated with this cell or @NULL otherwise. 
 200         See wxHtmlLinkInfo. (Note: this makes sense only for visible tags). 
 203             Coordinates of position where the user pressed mouse button. 
 204             These coordinates are used e.g. by COLORMAP. Values are relative to the 
 205             upper left corner of THIS cell (i.e. from 0 to m_Width or m_Height) 
 207     virtual wxHtmlLinkInfo
* GetLink(int x 
= 0, int y 
= 0) const; 
 210         Returns cursor to show when mouse pointer is over the cell. 
 213             interface to the parent HTML window 
 215     virtual wxCursor 
GetMouseCursor(wxHtmlWindowInterface
* window
) const; 
 218         Returns pointer to the next cell in list (see htmlcell.h if you're 
 219         interested in details). 
 221     wxHtmlCell
* GetNext() const; 
 224         Returns pointer to parent container. 
 226     wxHtmlContainerCell
* GetParent() const; 
 229         Returns X position within parent (the value is relative to parent's 
 230         upper left corner). The returned value is meaningful only if 
 231         parent's Layout() was called before! 
 236         Returns Y position within parent (the value is relative to parent's 
 237         upper left corner). The returned value is meaningful only if 
 238         parent's Layout() was called before! 
 243         Returns width of the cell (m_Width member). 
 245     int GetWidth() const; 
 248         This method performs two actions: 
 249         -# adjusts the cell's width according to the fact that maximal possible 
 250            width is @e w. (this has sense when working with horizontal lines, tables etc.) 
 251         -# prepares layout (=fill-in m_PosX, m_PosY (and sometimes m_Height) members) 
 252            based on actual width @e w 
 254         It must be called before displaying cells structure because m_PosX and 
 255         m_PosY are undefined (or invalid) before calling Layout(). 
 257     virtual void Layout(int w
); 
 260         This function is simple event handler. 
 261         Each time the user clicks mouse button over a cell within wxHtmlWindow 
 262         this method of that cell is called. 
 263         Default behavior is to call wxHtmlWindow::LoadPage. 
 266             interface to the parent HTML window 
 268             coordinates of mouse click (this is relative to cell's origin 
 270             mouse event that triggered the call 
 272         @return @true if a link was clicked, @false otherwise. 
 274         @since 2.7.0 (before OnMouseClick() method served a similar purpose). 
 277         If you need more "advanced" event handling you should use wxHtmlBinderCell instead. 
 279     virtual bool ProcessMouseClick(wxHtmlWindowInterface
* window
, 
 281                                    const wxMouseEvent
& event
); 
 284         Sets unique cell identifier. Default value is no identifier, i.e. empty string. 
 286     void SetId(const wxString
& id
); 
 289         Sets the hypertext link associated with this cell. 
 290         (Default value is wxHtmlLinkInfo("", "") (no link)) 
 292     void SetLink(const wxHtmlLinkInfo
& link
); 
 295         Sets the next cell in the list. This shouldn't be called by user - it is 
 296         to be used only by wxHtmlContainerCell::InsertCell. 
 298     void SetNext(wxHtmlCell
* cell
); 
 301         Sets parent container of this cell. 
 302         This is called from wxHtmlContainerCell::InsertCell. 
 304     void SetParent(wxHtmlContainerCell
* p
); 
 307         Sets the cell's position within parent container. 
 309     virtual void SetPos(int x
, int y
); 
 315     @class wxHtmlContainerCell 
 317     The wxHtmlContainerCell class is an implementation of a cell that may 
 318     contain more cells in it. It is heavily used in the wxHTML layout algorithm. 
 323     @see @ref overview_html_cells 
 325 class wxHtmlContainerCell 
: public wxHtmlCell
 
 329         Constructor. @a parent is pointer to parent container or @NULL. 
 331     wxHtmlContainerCell(wxHtmlContainerCell
* parent
); 
 334         Returns container's horizontal alignment. 
 336     int GetAlignHor() const; 
 339         Returns container's vertical alignment. 
 341     int GetAlignVer() const; 
 344         Returns the background colour of the container or @c wxNullColour if no 
 345         background colour is set. 
 347     wxColour 
GetBackgroundColour(); 
 350         Returns the indentation. @a ind is one of the @b wxHTML_INDENT_* constants. 
 352         @note You must call GetIndentUnits() with same @a ind parameter in order 
 353               to correctly interpret the returned integer value. 
 354               It is NOT always in pixels! 
 356     int GetIndent(int ind
) const; 
 359         Returns the units of indentation for @a ind where @a ind is one 
 360         of the @b wxHTML_INDENT_* constants. 
 362     int GetIndentUnits(int ind
) const; 
 365         Inserts a new cell into the container. 
 367     void InsertCell(wxHtmlCell
* cell
); 
 370         Sets the container's alignment (both horizontal and vertical) according to 
 371         the values stored in @e tag. (Tags @c ALIGN parameter is extracted.) 
 372         In fact it is only a front-end to SetAlignHor() and SetAlignVer(). 
 374     void SetAlign(const wxHtmlTag
& tag
); 
 377         Sets the container's @e horizontal alignment. 
 378         During wxHtmlCell::Layout each line is aligned according to @a al value. 
 381             new horizontal alignment. May be one of these values: 
 382             - wxHTML_ALIGN_LEFT: lines are left-aligned (default) 
 383             - wxHTML_ALIGN_JUSTIFY: lines are justified 
 384             - wxHTML_ALIGN_CENTER: lines are centered 
 385             - wxHTML_ALIGN_RIGHT: lines are right-aligned 
 387     void SetAlignHor(int al
); 
 390         Sets the container's @e vertical alignment. This is per-line alignment! 
 393             new vertical alignment. May be one of these values: 
 394             - wxHTML_ALIGN_BOTTOM: cells are over the line (default) 
 395             - wxHTML_ALIGN_CENTER: cells are centered on line 
 396             - wxHTML_ALIGN_TOP: cells are under the line 
 398         @image html alignv.png 
 400     void SetAlignVer(int al
); 
 403         Sets the background colour for this container. 
 405     void SetBackgroundColour(const wxColour
& clr
); 
 408         Sets the border (frame) colours. A border is a rectangle around the container. 
 411             Colour of top and left lines 
 413             Colour of bottom and right lines 
 415     void SetBorder(const wxColour
& clr1
, const wxColour
& clr2
); 
 418         Sets the indentation (free space between borders of container and subcells). 
 420         @image html indent.png 
 425             Determines which of the four borders we're setting. It is OR 
 426             combination of following constants: 
 427             - wxHTML_INDENT_TOP: top border 
 428             - wxHTML_INDENT_BOTTOM: bottom 
 429             - wxHTML_INDENT_LEFT: left 
 430             - wxHTML_INDENT_RIGHT: right 
 431             - wxHTML_INDENT_HORIZONTAL: left and right 
 432             - wxHTML_INDENT_VERTICAL: top and bottom 
 433             - wxHTML_INDENT_ALL: all 4 borders 
 435             Units of i. This parameter affects interpretation of value. 
 436             - wxHTML_UNITS_PIXELS: @a i is number of pixels 
 437             - wxHTML_UNITS_PERCENT: @a i is interpreted as percents of width 
 440     void SetIndent(int i
, int what
, int units 
= wxHTML_UNITS_PIXELS
); 
 443         Sets minimal height of the container. 
 444         When container's wxHtmlCell::Layout is called, m_Height is set depending 
 445         on layout of subcells to the height of area covered by layed-out subcells. 
 446         Calling this method guarantees you that the height of container is never 
 447         smaller than @a h - even if the subcells cover much smaller area. 
 452             If height of the container is lower than the minimum height, empty space 
 453             must be inserted somewhere in order to ensure minimal height. 
 454             This parameter is one of @c wxHTML_ALIGN_TOP, @c wxHTML_ALIGN_BOTTOM, 
 455             @c wxHTML_ALIGN_CENTER. It refers to the contents, not to the 
 458     void SetMinHeight(int h
, int align 
= wxHTML_ALIGN_TOP
); 
 461         Sets floating width adjustment. 
 463         The normal behaviour of container is that its width is the same as the width of 
 464         parent container (and thus you can have only one sub-container per line). 
 465         You can change this by setting the floating width adjustment. 
 468             Width of the container. If the value is negative it means 
 469             complement to full width of parent container. 
 470             E.g. @code SetWidthFloat(-50, wxHTML_UNITS_PIXELS) @endcode sets the 
 471             width of container to parent's width minus 50 pixels. This is useful when 
 472             creating tables - you can call SetWidthFloat(50) and SetWidthFloat(-50). 
 474             Units of w This parameter affects the interpretation of  value. 
 475             - wxHTML_UNITS_PIXELS: @a w is number of pixels 
 476             - wxHTML_UNITS_PERCENT: @a w is interpreted as percents of width 
 479     void SetWidthFloat(int w
, int units
); 
 482         Sets floating width adjustment. 
 484         The normal behaviour of container is that its width is the same as the width of 
 485         parent container (and thus you can have only one sub-container per line). 
 486         You can change this by setting the floating width adjustment. 
 489             In the second version of method, @a w and @a units info is extracted 
 490             from tag's WIDTH parameter. 
 492             This is number of real pixels that equals to 1 HTML pixel. 
 494     void SetWidthFloat(const wxHtmlTag
& tag
, 
 495                        double pixel_scale 
= 1.0); 
 501     @class wxHtmlLinkInfo 
 503     This class stores all necessary information about hypertext links 
 504     (as represented by \<A\> tag in HTML documents). 
 505     In current implementation it stores URL and target frame name. 
 507     @note Frames are not currently supported by wxHTML! 
 512 class wxHtmlLinkInfo 
: public wxObject
 
 521         Construct hypertext link from HREF (aka URL) and TARGET (name of target frame). 
 523     wxHtmlLinkInfo(const wxString
& href
, 
 524                    const wxString
& target 
= wxEmptyString
); 
 527         Return pointer to event that generated OnLinkClicked() event. 
 528         Valid only within wxHtmlWindow::OnLinkClicked, @NULL otherwise. 
 530     const wxMouseEvent
* GetEvent() const; 
 533         Return @e HREF value of the \<A\> tag. 
 535     wxString 
GetHref() const; 
 538         Return pointer to the cell that was clicked. 
 539         Valid only within wxHtmlWindow::OnLinkClicked, @NULL otherwise. 
 541     const wxHtmlCell
* GetHtmlCell() const; 
 544         Return @e TARGET value of the \<A\> tag (this value is used to specify 
 545         in which frame should be the page pointed by @ref GetHref() Href opened). 
 547     wxString 
GetTarget() const; 
 551     @class wxHtmlColourCell 
 553     This cell changes the colour of either the background or the foreground. 
 558 class wxHtmlColourCell 
: public wxHtmlCell
 
 567             Can be one of following: 
 568             - wxHTML_CLR_FOREGROUND: change color of text 
 569             - wxHTML_CLR_BACKGROUND: change background color 
 571     wxHtmlColourCell(const wxColour
& clr
, int flags 
= wxHTML_CLR_FOREGROUND
); 
 577     @class wxHtmlWidgetCell 
 579     wxHtmlWidgetCell is a class that provides a connection between HTML cells and 
 580     widgets (an object derived from wxWindow). 
 581     You can use it to display things like forms, input boxes etc. in an HTML window. 
 583     wxHtmlWidgetCell takes care of resizing and moving window. 
 588 class wxHtmlWidgetCell 
: public wxHtmlCell
 
 595             Connected window. It is parent window @b must be the wxHtmlWindow object 
 596             within which it is displayed! 
 598             Floating width. If non-zero width of wnd window is adjusted so that it is 
 599             always w percents of parent container's width. (For example w = 100 means 
 600             that the window will always have same width as parent container). 
 602     wxHtmlWidgetCell(wxWindow
* wnd
, int w 
= 0);