]>
Commit | Line | Data |
---|---|---|
42d306a0 | 1 | \section{Cells and Containers}\label{cells} |
704a4b75 VS |
2 | |
3 | This article describes mechanism used by | |
22d6efa8 JS |
4 | \helpref{wxHtmlWinParser}{wxhtmlwinparser} and |
5 | \helpref{wxHtmlWindow}{wxhtmlwindow} to parse and display HTML documents. | |
704a4b75 VS |
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 | |
22d6efa8 | 12 | "magic" cells with zero dimensions - e.g. colour changers or font changers). |
704a4b75 VS |
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 | ||
d7cb14ce JS |
24 | \begin{comment} |
25 | % Bitmap is corrupt! | |
22d6efa8 | 26 | This image shows you cells and containers: |
704a4b75 VS |
27 | |
28 | \image{}{contbox.bmp} | |
d7cb14ce | 29 | \end{comment} |
704a4b75 VS |
30 | \wxheading{Using Containers in Tag Handler} |
31 | ||
22d6efa8 JS |
32 | \helpref{wxHtmlWinParser}{wxhtmlwinparser} provides a user-friendly way |
33 | of managing containers. It's based on the idea of opening and closing containers. | |
704a4b75 VS |
34 | |
35 | Use \helpref{OpenContainer}{wxhtmlwinparseropencontainer} to open new | |
22d6efa8 JS |
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();}.) | |
704a4b75 VS |
39 | |
40 | Use \helpref{CloseContaier}{wxhtmlwinparserclosecontainer} to close the | |
22d6efa8 | 41 | container. This doesn't create a new container with same depth level but |
704a4b75 VS |
42 | it returns "control" to the parent container. |
43 | ||
d7cb14ce JS |
44 | \begin{comment} |
45 | % Bitmap corrupt! | |
704a4b75 VS |
46 | See explanation: |
47 | ||
48 | \image{}{cont.bmp} | |
d7cb14ce | 49 | \end{comment} |
704a4b75 VS |
50 | It's clear there must be same number of calls to |
51 | OpenContainer as to CloseContainer... | |
52 | ||
53 | \wxheading{Example} | |
54 | ||
22d6efa8 JS |
55 | This code creates a new paragraph (container at same depth level) |
56 | with "Hello, world!": | |
704a4b75 VS |
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 | ||
d7cb14ce JS |
69 | \begin{comment} |
70 | % Bitmap corrupt! | |
704a4b75 VS |
71 | and here is image of the situation: |
72 | ||
73 | \image{}{hello.bmp} | |
d7cb14ce | 74 | \end{comment} |
704a4b75 VS |
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 | |
22d6efa8 | 79 | executing. This is general rule that should be followed by tag handlers: |
704a4b75 VS |
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 |