| 1 | \subsection{Cells and Containers}\label{cells} |
| 2 | |
| 3 | This article describes mechanism used by |
| 4 | \helpref{wxHtmlWinParser}{wxhtmlwinparser} and |
| 5 | \helpref{wxHtmlWindow}{wxhtmlwindow} to parse and display HTML documents. |
| 6 | |
| 7 | \wxheading{Cells} |
| 8 | |
| 9 | You can divide any text (or HTML) into small fragments. Let's call these |
| 10 | fragments {\bf cells}. Cell is for example one word, horizontal line, image |
| 11 | or any other part of document. Each cell has width and height (except special |
| 12 | "magic" cells with zero dimensions - e.g. colour changers or font changers). |
| 13 | |
| 14 | See \helpref{wxHtmlCell}{wxhtmlcell}. |
| 15 | |
| 16 | \wxheading{Containers} |
| 17 | |
| 18 | Container is kind of cell that may contain sub-cells. Its size depends |
| 19 | on number and sizes of its sub-cells (and also depends on width of window). |
| 20 | |
| 21 | See \helpref{wxHtmlContainerCell}{wxhtmlcontainercell}, |
| 22 | \helpref{wxHtmlCell::Layout}{wxhtmlcelllayout}. |
| 23 | |
| 24 | \begin{comment} |
| 25 | % Bitmap is corrupt! |
| 26 | This image shows you cells and containers: |
| 27 | |
| 28 | \helponly{\image{}{contbox.bmp}} |
| 29 | \end{comment} |
| 30 | \wxheading{Using Containers in Tag Handler} |
| 31 | |
| 32 | \helpref{wxHtmlWinParser}{wxhtmlwinparser} provides a user-friendly way |
| 33 | of managing containers. It is based on the idea of opening and closing containers. |
| 34 | |
| 35 | Use \helpref{OpenContainer}{wxhtmlwinparseropencontainer} to open new |
| 36 | a container {\it within an already opened container}. This new container is a |
| 37 | {\it sub-container} of the old one. (If you want to create a new container with |
| 38 | the same depth level you can call {\tt CloseContainer(); OpenContainer();}.) |
| 39 | |
| 40 | Use \helpref{CloseContainer}{wxhtmlwinparserclosecontainer} to close the |
| 41 | container. This doesn't create a new container with same depth level but |
| 42 | it returns "control" to the parent container. |
| 43 | |
| 44 | \begin{comment} |
| 45 | % Bitmap corrupt! |
| 46 | See explanation: |
| 47 | |
| 48 | \helponly{\image{}{cont.bmp}} |
| 49 | \end{comment} |
| 50 | It is clear there must be same number of calls to |
| 51 | OpenContainer as to CloseContainer... |
| 52 | |
| 53 | \wxheading{Example} |
| 54 | |
| 55 | This code creates a new paragraph (container at same depth level) |
| 56 | with "Hello, world!": |
| 57 | |
| 58 | \begin{verbatim} |
| 59 | m_WParser -> CloseContainer(); |
| 60 | c = m_WParser -> OpenContainer(); |
| 61 | |
| 62 | m_WParser -> AddWord("Hello, "); |
| 63 | m_WParser -> AddWord("world!"); |
| 64 | |
| 65 | m_WParser -> CloseContainer(); |
| 66 | m_WParser -> OpenContainer(); |
| 67 | \end{verbatim} |
| 68 | |
| 69 | \begin{comment} |
| 70 | % Bitmap corrupt! |
| 71 | and here is image of the situation: |
| 72 | |
| 73 | \helponly{\image{}{hello.bmp}} |
| 74 | \end{comment} |
| 75 | |
| 76 | You can see that there was opened container before running the code. We closed |
| 77 | it, created our own container, then closed our container and opened |
| 78 | new container. The result was that we had {\it same depth level} after |
| 79 | executing. This is general rule that should be followed by tag handlers: |
| 80 | leave depth level of containers unmodified (in other words, number of |
| 81 | OpenContainer and CloseContainer calls should be same within \helpref{HandleTag}{wxhtmltaghandlerhandletag}'s body). |
| 82 | |