diff options
Diffstat (limited to 'doc')
-rw-r--r-- | doc/dw-fixed-positions.doc | 63 | ||||
-rw-r--r-- | doc/dw-interrupted-drawing-1.png | bin | 7142 -> 0 bytes | |||
-rw-r--r-- | doc/dw-interrupted-drawing-2.png | bin | 42606 -> 0 bytes | |||
-rw-r--r-- | doc/dw-interrupted-drawing-2.svg | 706 | ||||
-rw-r--r-- | doc/dw-interrupted-drawing.doc | 121 | ||||
-rw-r--r-- | doc/dw-miscellaneous.doc | 187 | ||||
-rw-r--r-- | doc/dw-size-request-pos-01.png | bin | 31630 -> 0 bytes | |||
-rw-r--r-- | doc/dw-size-request-pos.doc | 73 | ||||
-rw-r--r-- | doc/dw-stacking-context.doc | 114 |
9 files changed, 0 insertions, 1264 deletions
diff --git a/doc/dw-fixed-positions.doc b/doc/dw-fixed-positions.doc deleted file mode 100644 index d62565ff..00000000 --- a/doc/dw-fixed-positions.doc +++ /dev/null @@ -1,63 +0,0 @@ -/** \page dw-fixed-positions Fixed positions - -In some cases, widgets or widget content must be positioned relative -to the viewport. As in the CSS specification, these positions will be -called "fixed positions". This must not be confused with "fixedly -positioned elements" (see \ref dw-out-of-flow), which are a special -case of fixed positions. - - -Applications -============ - -As defined by CSS ------------------ - -- "position: fixed"; see \ref dw-out-of-flow. -- "background-attachment: fixed"; see \ref dw-images-and-backgrounds. - -Idea for tables ---------------- - -Often, tables have a header, which contains informations necessary to -interpret the columns in the table body. For this, HTML defines the elements -<thead> and <tbody> -<sup><a href="#note-table-footer" id="ref-table-footer">[1]</a></sup>. - -For large tables, the problem occurs that the table header gets out of -the reader's view. In paged media, where a large table covers multiple -pages, this is often solved by *repeating* the table header on each -page occupied by the table. When using a viewport, a table larger than -the vieport could be displayed like this: - -1. If the top of the table is within the viewport, show the table - header at the usual position. -2. As soon as top of the table gets above the top border of the - viewport, keep the table header at the viewport top, so that it is - still visible (this means, it moves down, relative to the - *canvas*). This way, the header is still visible, so our objective - is achieved. -3. When scrolling further down, at some point the table body gets out - of the viewport again, and so should the table header. - -(Some images would be nice.) - -These ideas should be considered when developing a design for fixed -positions. - - -Design sketch -============== - -[...] - - ----------------------------------------------------------------------- - -<sup><a href="#ref-table-footer" id="note-table-footer">[1]</a></sup> -... and also <tfoot>, which is not discussed here, for reasons -of simplicity. However, it is obvious that <tfoot> should be -dealt with in an analogue way as <thead>. - - -*/
\ No newline at end of file diff --git a/doc/dw-interrupted-drawing-1.png b/doc/dw-interrupted-drawing-1.png Binary files differdeleted file mode 100644 index 58289490..00000000 --- a/doc/dw-interrupted-drawing-1.png +++ /dev/null diff --git a/doc/dw-interrupted-drawing-2.png b/doc/dw-interrupted-drawing-2.png Binary files differdeleted file mode 100644 index 8ec54035..00000000 --- a/doc/dw-interrupted-drawing-2.png +++ /dev/null diff --git a/doc/dw-interrupted-drawing-2.svg b/doc/dw-interrupted-drawing-2.svg deleted file mode 100644 index 6dbc6aca..00000000 --- a/doc/dw-interrupted-drawing-2.svg +++ /dev/null @@ -1,706 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="210mm" - height="297mm" - id="svg2" - version="1.1" - inkscape:version="0.48.3.1 r9886" - sodipodi:docname="dw-interrupted-drawing-2.svg" - inkscape:export-filename="/home/sg/dev/dillo/dillo-grows-work-intdraw/doc/dw-interrupted-drawing-2.png" - inkscape:export-xdpi="69.620003" - inkscape:export-ydpi="69.620003"> - <defs - id="defs4"> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0.0" - refX="0.0" - id="Arrow2Lend" - style="overflow:visible;"> - <path - id="path4042" - style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;" - d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " - transform="scale(1.1) rotate(180) translate(1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-2" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-4" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-8" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-0" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-24" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-2" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-29" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-1" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-5" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-41" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-23" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-19" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-7" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-9" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-0" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-97" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-0-4" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-97-1" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-0-7" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-97-5" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-0-8" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-97-8" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-0-3" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-97-2" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="Arrow2Lend-1" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path4042-7" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - <marker - inkscape:stockid="Arrow2Lend" - orient="auto" - refY="0" - refX="0" - id="marker5604" - style="overflow:visible"> - <path - inkscape:connector-curvature="0" - id="path5606" - style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" - d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" - transform="matrix(-1.1,0,0,-1.1,-1.1,0)" /> - </marker> - </defs> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.35355339" - inkscape:cx="437.30872" - inkscape:cy="337.60168" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="true" - inkscape:window-width="1600" - inkscape:window-height="900" - inkscape:window-x="0" - inkscape:window-y="0" - inkscape:window-maximized="0"> - <inkscape:grid - type="xygrid" - id="grid2985" /> - </sodipodi:namedview> - <metadata - id="metadata7"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Ebene 1" - inkscape:groupmode="layer" - id="layer1"> - <g - id="g3977" - transform="translate(2.992126e-6,177.16535)"> - <rect - y="24.803127" - x="17.716536" - height="70.866142" - width="141.73228" - id="rect2997" - style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <flowRoot - transform="translate(20.094709,-2.1798012)" - style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - id="flowRoot3786" - xml:space="preserve"><flowRegion - id="flowRegion3788"><rect - y="48.270561" - x="46.467018" - height="28.284271" - width="75.256363" - id="rect3790" /></flowRegion><flowPara - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - id="flowPara3792">body</flowPara></flowRoot> </g> - <g - id="g3984" - transform="translate(2.992126e-6,177.16535)"> - <rect - y="24.803127" - x="194.8819" - height="70.866142" - width="141.73228" - id="rect3767" - style="fill:#ffe0e0;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <text - sodipodi:linespacing="125%" - id="text3832" - y="67.096199" - x="243.2318" - style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - y="67.096199" - x="243.2318" - id="tspan3834" - sodipodi:role="line">#sc-1</tspan></text> - </g> - <g - id="g3989" - transform="translate(176.96508,177.13197)"> - <rect - y="24.803127" - x="372.04724" - height="70.866142" - width="141.73228" - id="rect3767-6" - style="fill:#b0ffb0;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <text - sodipodi:linespacing="125%" - id="text3836" - y="67.356201" - x="425.39713" - style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="67.356201" - x="425.39713" - id="tspan3838" - sodipodi:role="line" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L">#fl-1</tspan></text> - </g> - <g - id="g3994" - transform="translate(-177.81225,177.39197)"> - <rect - y="24.803127" - x="549.21259" - height="70.866142" - width="141.73228" - id="rect3767-2" - style="fill:#f0f0ff;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /> - <text - sodipodi:linespacing="125%" - id="text3840" - y="67.096199" - x="595.92249" - style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - xml:space="preserve"><tspan - y="67.096199" - x="595.92249" - id="tspan3842" - sodipodi:role="line" - style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L">#sc-2</tspan></text> - </g> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 88.582679,272.83462 -2e-6,531.49607" - id="path3890" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 265.74803,272.83462 0,531.49607" - id="path3890-9" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 442.91339,272.83462 0,531.49607" - id="path3890-2" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 620.07874,272.83462 0,531.49607" - id="path3890-29" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <rect - style="fill:#ffffa0;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect3931" - width="35.433071" - height="460.62991" - x="70.866142" - y="308.2677" /> - <rect - style="fill:#ffffa0;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect3933" - width="35.433071" - height="354.33069" - x="248.03149" - y="343.70078" /> - <flowRoot - xml:space="preserve" - id="flowRoot3935" - style="font-size:20px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans" - transform="translate(2.992126e-6,177.16535)"><flowRegion - id="flowRegion3937"><rect - id="rect3939" - width="835.71429" - height="147.14285" - x="-1.4285715" - y="-40.494953" /></flowRegion><flowPara - id="flowPara3941"></flowPara></flowRoot> <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" - d="m 106.29921,343.70076 141.73229,0" - id="path3890-29-5" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <rect - style="fill:#ffffa0;fill-opacity:1;stroke:#000000;stroke-width:3.00000191;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect4643" - width="35.433094" - height="70.866158" - x="602.36218" - y="414.56689" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" - d="m 283.46457,414.56691 318.89763,0" - id="path3890-29-5-2" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;marker-end:url(#Arrow2Lend)" - d="m 602.36221,485.43305 -318.89764,0" - id="path3890-29-5-2-0-0" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;marker-end:url(#Arrow2Lend)" - d="m 248.0315,698.03147 -141.73229,0" - id="path3890-29-5-2-0-0-8" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <rect - style="fill:#ffffa0;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" - id="rect4767" - width="35.433071" - height="35.433071" - x="602.36218" - y="733.46454" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" - d="m 106.29921,733.46454 496.06299,10e-6" - id="path3890-29-5-4" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" - d="m 17.716536,308.26769 53.149608,0" - id="path3890-29-5-27" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;marker-end:url(#Arrow2Lend)" - d="m 70.866142,768.89762 -53.149613,0" - id="path3890-29-5-2-0-0-8-4" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 354.33071,715.74801 318.89763,53.14961 0,0 0,0 0,0" - id="path4865" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - style="fill:none;stroke:#ff0000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - d="m 354.3307,768.89762 318.89764,-53.14961 0,0 0,0" - id="path4865-9" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-0)" - d="m 88.582677,201.96848 c 17.716533,-88.58268 141.732283,-88.58268 159.448823,0" - id="path4914" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-0)" - d="m 283.46456,201.96848 c 17.71654,-88.58268 141.73229,-88.58268 159.44883,0" - id="path4914-8" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend-0)" - d="m 88.582677,201.96848 c 35.433073,-212.598421 513.779523,-212.598423 549.212603,0" - id="path4914-0" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0;marker-end:url(#Arrow2Lend-0)" - d="m 265.74802,201.96848 c 35.43308,-159.448817 301.18111,-159.448817 336.61418,0" - id="path4914-8-3" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4;stroke-dashoffset:0" - d="m 318.89764,361.4173 c -17.71654,0 -35.43307,0 -35.43307,0 l 0,0" - id="path5443" - inkscape:connector-curvature="0" /> - <text - xml:space="preserve" - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:Nimbus Mono L" - x="414.18863" - y="362.88965" - id="text5445" - sodipodi:linespacing="125%"><tspan - sodipodi:role="line" - id="tspan5447" - x="414.18863" - y="362.88965" /></text> - <g - id="g5586"> - <rect - rx="0" - ry="17.716547" - y="325.98422" - x="318.89764" - height="70.866142" - width="194.8819" - id="rect5453" - style="fill:#ffffe0;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <text - sodipodi:linespacing="125%" - id="text5455" - y="354.7933" - x="418.09937" - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:Nimbus Mono L" - xml:space="preserve"><tspan - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - y="354.7933" - x="418.09937" - id="tspan5457" - sodipodi:role="line">#sc-1 detects that #fl-1</tspan><tspan - id="tspan5459" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - y="377.2933" - x="418.09937" - sodipodi:role="line">interrupts the drawing</tspan></text> - </g> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0" - d="m 673.22836,450.00001 c -17.71654,0 -35.43307,0 -35.43307,0 l 0,0" - id="path5443-9" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccc" /> - <g - id="g5531" - transform="translate(-88.582663,106.29923)"> - <rect - rx="0" - ry="17.716547" - y="414.56689" - x="673.22833" - height="70.866142" - width="194.8819" - id="rect5453-7" - style="fill:#ffffe0;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <text - sodipodi:linespacing="125%" - id="text5455-9" - y="443.37598" - x="770.91229" - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:Nimbus Mono L" - xml:space="preserve"><tspan - id="tspan5517" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - y="443.37598" - x="770.91229" - sodipodi:role="line">#fl-1 is drawn as</tspan><tspan - id="tspan5521" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - y="465.87598" - x="770.91229" - sodipodi:role="line">an interruption</tspan></text> - </g> - <flowRoot - xml:space="preserve" - id="flowRoot5523" - style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Nimbus Mono L;font-style:normal;font-weight:normal;font-size:20px;line-height:125%;letter-spacing:0px;word-spacing:0px;-inkscape-font-specification:Nimbus Mono L;font-stretch:normal;font-variant:normal"><flowRegion - id="flowRegion5525"><rect - id="rect5527" - width="230.37166" - height="100.60158" - x="662.54175" - y="400.53543" /></flowRegion><flowPara - id="flowPara5529"></flowPara></flowRoot> <g - id="g5699"> - <rect - rx="0" - ry="17.716547" - y="502.68695" - x="318.90851" - height="70.866142" - width="194.8819" - id="rect5453-70" - style="fill:#ffffe0;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <text - sodipodi:linespacing="125%" - id="text5455-7" - y="531.49603" - x="418.11023" - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:Nimbus Mono L" - xml:space="preserve"><tspan - id="tspan5459-7" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - y="531.49603" - x="418.11023" - sodipodi:role="line">drawing of #sc-1</tspan><tspan - id="tspan5584" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - y="553.99603" - x="418.11023" - sodipodi:role="line">is continued</tspan></text> - </g> - <rect - style="fill:#ffffa0;fill-opacity:1;stroke:#000000;stroke-width:3.00000191;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" - id="rect4643-9" - width="35.433094" - height="70.866158" - x="425.19681" - y="591.73224" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Lend)" - d="m 283.46457,591.73226 141.73227,10e-6" - id="path3890-29-5-2-8" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:6, 6;stroke-dashoffset:0;marker-end:url(#Arrow2Lend)" - d="m 425.19685,662.59841 -141.73228,-10e-6" - id="path3890-29-5-2-0-0-4" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0" - d="m 673.22835,751.18108 c -17.71654,0 -35.43307,0 -35.43307,0 l 0,0" - id="path5443-8-2" - inkscape:connector-curvature="0" /> - <g - id="g5713" - transform="translate(-88.571786,105.83661)"> - <path - inkscape:connector-curvature="0" - id="path5443-8" - d="m 726.37796,786.61415 c -17.71654,0 -35.43307,0 -35.43307,0 l 0,0" - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0" /> - <rect - rx="0" - ry="17.716547" - y="715.74799" - x="673.22833" - height="70.866142" - width="194.8819" - id="rect5453-70-2" - style="fill:#ffffe0;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" /> - <text - sodipodi:linespacing="125%" - id="text5455-7-4" - y="744.55707" - x="772.43005" - style="font-size:20px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Nimbus Mono L;-inkscape-font-specification:Nimbus Mono L" - xml:space="preserve"><tspan - id="tspan5707" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - y="744.55707" - x="772.43005" - sodipodi:role="line">no need anymore</tspan><tspan - id="tspan5711" - style="font-size:18px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:middle;font-family:Nimbus Sans L;-inkscape-font-specification:Nimbus Sans L" - y="767.05707" - x="772.43005" - sodipodi:role="line">to draw #fl-1</tspan></text> - </g> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0" - d="m 318.89764,538.58266 c -17.71654,0 -35.43307,0 -35.43307,0 l 0,0" - id="path5443-9-0" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0" - d="m 673.22835,449.99998 0,0" - id="path5443-9-6" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:2,4;stroke-dashoffset:0" - d="m 673.22835,520.86612 c 0,-70.86614 0,-70.86614 0,-70.86614" - id="path5738" - inkscape:connector-curvature="0" /> - <path - style="fill:none;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:2, 4;stroke-dashoffset:0" - d="m 673.22835,822.04722 c 0,-70.86614 0,-70.86614 0,-70.86614" - id="path5738-7" - inkscape:connector-curvature="0" /> - </g> -</svg> diff --git a/doc/dw-interrupted-drawing.doc b/doc/dw-interrupted-drawing.doc deleted file mode 100644 index c7037666..00000000 --- a/doc/dw-interrupted-drawing.doc +++ /dev/null @@ -1,121 +0,0 @@ -/** \page dw-interrupted-drawing Interrupted drawing - -Describing the problem -====================== - -Without interrupting drawing (which is described below), a widget can -define the order in which its parts (background, non-widget content, -child widgets, etc.) are drawn, but it must be drawn as a whole. There -are situations when this is not possible. - -Consider the following simple HTML document: - - <head> - <style> - #sc-1 { position: relative; z-index: 1; background: #ffe0e0; } - #fl-1 { float: right; background: #b0ffb0; } - #sc-2 { position: relative; z-index: 1; background: #f0f0ff; } - </style> - </head> - <body> - <div id="sc-1"> - <div id="fl-1"> - Float, line 1/3<br/> - Float, line 2/3<br/> - Float, line 3/3 - </div> - Stacking Context 1 - <div id="sc-2">Stacking Context 2</div> - </div> - </body> - -The rendering will look like this: - -\image html dw-interrupted-drawing-1.png - -Note the missing "Float, line 2/3" of element #fl-1, which is covered -by element #sc-2. - -As described in \ref dw-out-of-flow, it has to be distinguished -between the *container* hierarchy (equivalent to the hierarchy of -dw::core::Widget.) and the the *generator* hierarchy. In the following -diagram, the former is represented by solid lines, the latter by -dotted lines: - -\dot -digraph G { - node [shape=rect, fontname=Helvetica, fontsize=10]; - edge [arrowhead="vee"]; - - "#sc-1" [fillcolor="#ffe0e0", style="filled"]; - "#fl-1" [fillcolor="#b0ffb0", style="filled"]; - "#sc-2" [fillcolor="#f0f0ff", style="filled"]; - - "body" -> "#sc-1"; - "body" -> "#fl-1"; - { rank=same; "#sc-1" -> "#fl-1" [style=dotted]; } - "#sc-1" -> "#sc-2"; -} -\enddot - - -The drawing order of the four elements (represented by widgets) is: - -- body, -- #sc-1, -- #fl-1, -- #sc-2. - -Since - -1. #sc-2 is a child of #sc-1, but -2. #fl-1 is a child of the body, and -3. a widget can only draw its descendants (not neccessary children, - but drawing siblings is not allowed), - -#sc-1 cannot be drawn as a whole; instead drawing is **interrupted** -by #fl-1. This means: - -1. the background and text of #sc-1 is drawn; -2. drawing of #sc-1 is **interrupted** by #fl-1 (see below for details), -3. drawing of #sc-1 is **continued**, by drawing #sc-2. - -The exact control flow is described in this sequence diagram: - -\image html dw-interrupted-drawing-2.png - - -When is drawing interrupted? -============================ - -A widget out of flow is regarded as part of the stacking context (see -\ref dw-stacking-context) of its *generator* (in the example above: -#fl-1 is part of the stacking context stablished by #sc-1, not the one -established by body). For this reason, a widget out of flow must, in -some cases, drawn while the *gerator* is drawn, as an -interruption. The exact rule: - -A widget out of flow must be drawn as an interruption (while the -*generator* is drawn) if the stacking context of the generator (to -which this widget belongs) is in front of the stacking context of the -container (the parent widget). - -See dw::oof::OOFAwareWidget::doesWidgetOOFInterruptDrawing. - - -How does interruption of drawing work? -====================================== - -When a widget detects that an other widget should be drawn as -interruption (see above), it calls dw::core::Widget::drawInterruption, -which - -1. draws the widget within another "context" (area and reference - widget); for this the original drawing area - (dw::core::DrawingContext::getToplevelArea) is used. -2. Using dw::core::DrawingContext::addWidgetDrawnAsInterruption, and - checking later with - dw::core::DrawingContext::hasWidgetBeenDrawnAsInterruption prevents - these widgets from being drawn twice. - -*/ diff --git a/doc/dw-miscellaneous.doc b/doc/dw-miscellaneous.doc deleted file mode 100644 index d6b3cae3..00000000 --- a/doc/dw-miscellaneous.doc +++ /dev/null @@ -1,187 +0,0 @@ -/** \page dw-miscellaneous Miscellaneous Notes on Dw - -This is a barely sorted list of issues which I consider noteworthy, -but have yet to be moved to other parts of the documentation (which is -partly to be created). - -General -======= - -Widget allocation outside of parent allocation ----------------------------------------------- -A widget allocation outside of the allocation of the parent is -allowed, but the part outside is not visible. - -Which widgets may be drawn? -------------------- - -All drawing starts with the toplevel widget -(cf. dw::core::Widget::queueDrawArea, dw::core::Layout::queueDraw, and -dw::core::Layout::expose), and a widget has to draw its children, in a -way consistent with their stacking order. - -There are two exceptions: - -1. Direct descendants, which are not children, may be drawn, if the - parent can distinguish them and so omit drawing them a second - time. See dw::core::StackingContextMgr and \ref dw-stacking-context. - Parents should not draw children in flow for which - dw::core::StackingContextMgr::handledByStackingContextMgr returns - true. -2. Interrupted drawing: via dw::core::Widget::drawInterruption; see - \ref dw-interrupted-drawing. - -Similar rules apply to handling mouse events -(dw::core::Widget::getWidgetAtPoint). - -Interrupted drawing -------------------- -→ \ref dw-interrupted-drawing. - -Similar rules apply to handling mouse events -(dw::core::Widget::getWidgetAtPoint). - - -Floats -====== - -Handling collisions -------------------- -The CSS specification allows two strategies to deal with colliding -floats: placing the second float beside or below the first one. Many -other browsers implement the first approach, while dillo implements -the second one, which may cause problems when the author assumes the -first. Example: the "tabs" at the top of every page at Wikipedia -("Article", "Talk", ...). - -Float containers in flow ------------------------- -Consider the following HTML snippet: - - <body> - <img src="....jpg" style="float:right"> - <p style="overflow:hidden">Text</p> - </body> - -Interestingly, dillo shows "Text" always *below* the image, even if -there is enough space left of it. An investigation shows that the -paragraph (<p>) is regarded as own floats container (because of -*overflow:hidden*), so the floats container above (<body>) -regards this block as widget which must be fit between the floats -(dw::Textblock::mustBorderBeRegarded > -dw::Textblock::getWidgetRegardingBorderForLine). However, since a -textblock in flow always covers (at least) the whole available width, -which is defined *without* considering floats, the space left of the -float will always be to narrow, so that the paragraph is moved below -the float, by inserting an empty line before. - -When searching for a solution, several difficulties show up: - -1. The available width, which is used for the width of the textblock, - is defined independent of floats. Aside from problems when changing - this definition, a dependance on floats would be difficult to - implement, since *sizeRequest* is independent of a position. (See - also \ref dw-out-of-flow.) -2. I must admit that I do not rembember the exact rationale and the - test case behind adding the exception in - dw::Textblock::getWidgetRegardingBorderForLine (see above), but - simply removing this exception will result in a possible - overlapping of floats from both containers, since no collisions are - tested for. -3. On the other hand, mixing the float containers (interaction of two - or more instances of dw::oof::OOFFloatsMgr), e. g. for - collision tests, would become too complex and possibly result in - performance problems. - -Instead, this approach is focussed: - -- Goal: the paragraph is narrowed so it fits, *as a whole*, between - the floats. -- The approach is to remove the exception in - dw::Textblock::getWidgetRegardingBorderForLine. A textblock, which - is a float container in flow (as this paragraph), is returned by - this method and so dw::Textblock::mustBorderBeRegarded returns - *true*. This will put this paragraph again at the correct position. -- To avoid overlappings, the linebreaking width of this paragraph - (which is also used for positioning of floats) is the available - width, minus the maximal float width on either side. (This is an - approach similar to the one dw::Ruler will use soon). Most likely, - some new methods will have to be added to calculate this. -- For paragraphs like this, dw::Textblock::borderChanged must rewrap - all lines; *y* is irrelevant in this case. -- Since the textblock will tend to become taller when getting - narrower, and so possibly cover more (wider) floats, and so become - narrower again etc., there may be multible solutions for calculating - the size. Generally, a smaller height (and so larger width) is - preferred. -- There remains a problem: what if a word is too large? Should a - textblock of this kind then reard the floats in detail, to insert - empty lines when needed? - -**Real-world cases:** *Overflow:hidden* is set for headings in -Wikipedia, and so this case occurs when there is a float (thumb image) -before a heading. See e. g. -<a href="http://de.wikipedia.org/wiki/Emmerich_am_Rhein#Ans.C3.A4ssige_Unternehmen">this page</a> -and scroll a bit up; the company logos should be right of this section. - -**Priority:** Since this is not a regression, compared to not -supporting floats at all, a fix is not urgent for a new release. - -Positioned elements -=================== - -General -------- -(See also *relative positions* below.) - -What about negative positions? - -dw::oof::OutOfFlowMgr::tellPosition1 and -dw::oof::OutOfFlowMgr::tellPosition2 could be combined again, and -called in the respective circumstance, depending on -dw::oof::OutOfFlowMgr::mayAffectBordersAtAll. - -Relative positions ------------------- -**General Overview:** At the original position, a space as large as -the positioned element is left. This is implemented by assigning a -size to the widget *reference*. For this there are two new methods: -dw::oof::OutOfFlowMgr::calcWidgetRefSize and -dw::oof::OOFAwareWidget::widgetRefSizeChanged. - -**Bug:** Since the size of a relatively positioned element should be -calculated as if it was in flow, the available width should be -delegated to the *generator*; however, since -dw::oof::OOFPosRelMgr::dealingWithSizeOfChild returns *false* in all -cases, it is delegated to the *container*. **Idea for fix:** -dw::oof::OOFPosRelMgr::dealingWithSizeOfChild should return *false* if -and only if the generator of the child is the container (to prevent an -endless recursion). In other cases, -dw::oof::OOFPosRelMgr::getAvailWidthOfChild and -dw::oof::OOFPosRelMgr::getAvailHeightOfChild should directly call the -respective methods of the *generator*, which must be made public then. - -**Performance:** In many cases, the first call of -dw::oof::OOFPosRelMgr::sizeAllocateEnd will queue again the resize -idle, since some elements are not considered in -dw::oof::OOFPosRelMgr::getSize. One case could be removed: if a -positioned element has *left* = *top* = 0, and its total size (the -requisition) is equal to the space left at the original position, the -size of the widget *reference* -(dw::oof::OOFAwareWidget::getRequisitionWithoutOOF, see -dw::oof::OOFPosRelMgr::calcWidgetRefSize). - -**Documentation:** Describe why the latter is not covered by -dw::oof::OOFPositionedMgr::doChildrenExceedContainer. (Is this really -the case?) - -**Open:** Stacking order? Furthermore: a relatively positioned element -does not always constitute a containing block (see CSS specification). - -Fixed positions ---------------- -Currently, fixedly positioned elements are positioned relative to the -canvas, not to the viewport. For a complete implementation, see \ref -dw-fixed-positions. - -*/ diff --git a/doc/dw-size-request-pos-01.png b/doc/dw-size-request-pos-01.png Binary files differdeleted file mode 100644 index ba32e243..00000000 --- a/doc/dw-size-request-pos-01.png +++ /dev/null diff --git a/doc/dw-size-request-pos.doc b/doc/dw-size-request-pos.doc deleted file mode 100644 index 08af0eec..00000000 --- a/doc/dw-size-request-pos.doc +++ /dev/null @@ -1,73 +0,0 @@ -/** \page dw-size-request-pos Size requisitions depending on positions - -<div style="border: 2px solid #ffff00; margin: 1em 0; - padding: 0.5em 1em; background-color: #ffffe0">The complex "widget - sizes" is currently divided into three documents: \ref - dw-widget-sizes, \ref dw-grows, and **Size requisitions depending on - positions** (this document). </div> - -Motivation -========== - -As described in \ref dw-out-of-flow (*The sizeRequest/sizeAllocate -problem*), the principle that the size of a widget depends only on the -sizes of its children causes some problems with floats; the current -solution is a frequent correction by calling -dw::core::Widget::queueResize. In this document, an alternative -approach is presented. - - -General Idea -============ - -A widget size may depend on the position relative to an anchestor -widget. If a widget wants to get the size of a child widget, it should - -1. call the new method dw::core::Widget::sizeRequestReference, - which returns NULL, when the child's size does not depend on the - position, or a widget relative to which the child's position must - be calculated; -2. call dw::core::Widget::sizeRequest with the position relative to - this widget. - -The position passed to dw::core::Widget::sizeRequest must be the -position at which this child will be allocated. - -There are situations where the parent widget is unable to determine -this position before the size is known. An example: a textblock widget -cannot determine the position of an inline widget (like an image, or -an inline block) before the line is finished; on the other hand, -finishing the line depends on knowing the sizes of the inline widgets. - -This may result in a conflict, when the size of an inline widgets -depends on the position. Fortunately, this is not the case in dillo: -the only widget whose size depends on the position is dw::Textblock -(the size will depend on the position within its floats container); but -an inline blocks constitute its own floats container, so that there is -no dependance on a position within another widget. - -Generally, this case should be handled by providing a fallback -strategy. (TODO: How does this look like? The widget is forced to -calculate its size independant of the position?) - -Resizing --------- -Currently, the size of a widget has to be recalculated, when - -1. it has called dw::core::Widget::queueResize, or -2. the size of a child widget has to be recalculated. - -Since for this new approach, the size does not only depend on the size -of the children, the second condition must be modified. However, -regarding changes of the position is not sufficient. Consider this -example, where a float size changes as soon as the image is loaded: - -\image html dw-size-request-pos-01.png - -The second paragraph ("A longer paragraph" ...) stays at the same -position, both absolute and relative to the float container, but has -to be rewrapped because of the float. - -(TODO: A detailed design is yet to de developed.) - -*/
\ No newline at end of file diff --git a/doc/dw-stacking-context.doc b/doc/dw-stacking-context.doc deleted file mode 100644 index 6138ca5d..00000000 --- a/doc/dw-stacking-context.doc +++ /dev/null @@ -1,114 +0,0 @@ -/** \page dw-stacking-context Handling stacking contexts - -Stacking Context and dw::core::StackingContextMgr -================================================= - -For the definition of stacking contexts, see CSS 2.1 specification, - -- <a href="http://www.w3.org/TR/CSS2/visuren.html#z-index">section - 9.9.1: Specifying the stack level: the 'z-index' property</a> and -- <a href="http://www.w3.org/TR/CSS2/zindex.html">appendix E</a>. - -A widget establishes a stacking context when it is positioned and its -style value of *z-index* is different from *auto* (see -dw::core::StackingContextMgr::isEstablishingStackingContext). In this -case, it is assigned an instance of dw::core::StackingContextMgr, -which has also access to the widgets establishing the child contexts. - - -Stacking Order -============== - -The stacking order influences - -1. the order in which child widgets are drawn (dw::core::Widget::draw), - and -2. the order in which mouse events are dispatched to child widgets - (dw::core::Widget::getWidgetAtPoint). - -The first is done from bottom to top, the latter from top to bottom. - -I'm here referring to the simplified description in -<a href="http://www.w3.org/TR/CSS2/visuren.html#z-index">section -9.9.1</a>. The table shows a recommended order for the implementations -of dw::core::Widget::draw and dw::core::Widget::getWidgetAtPoint -(for the latter, read from bottom to top): - -<table> -<tr> -<th> CSS specification <th> Drawing <th> Mouse events -<tr> -<td> *1. the background and borders of the element forming the - stacking context.* -<td> dw::core::Widget::drawBox -<td> Nothing necessary. -<tr> -<td> *2. the child stacking contexts with negative stack levels (most - negative first).* -<td> dw::core::StackingContextMgr::drawBottom (when defined) -<td> dw::core::StackingContextMgr::getBottomWidgetAtPoint (when defined) -<tr> -<td> *3. the in-flow, non-inline-level, non-positioned descendants.* - -<td rowspan="4"> When (i) widget specific content is drawn, then (ii) - dw::oof::OOFAwareWidget::drawOOF is called, this will - have this effect: - - 1. all in-flow elements are drawn, - 2. floats are drawn and - 3. positioned elements with *z-index: auto* are drawn - (latter two done by - dw::oof::OOFAwareWidget::drawOOF, in this order). - - This order differs from the specified order, but - since floats and in-flow elements do not overlap, - this difference has no effect. - - Drawing in-line elements, floats and positioned - elements with *z-index: auto* and should avoid - duplicate calls: Widgets drawn by - dw::core::StackingContextMgr::drawBottom and by - dw::core::StackingContextMgr::drawTop should be - excluded here. This can be tested with - dw::core::StackingContextMgr::handledByStackingContextMgr. - -<td rowspan="4"> Likewise, the implementation should (i) test - dw::oof::OOFAwareWidget::getWidgetOOFAtPoint, and - (ii) search through the chilren. Also, duplicate - calls should be avoided using - dw::core::StackingContextMgr::handledByStackingContextMgr. - - There are already the implementations - dw::core::Widget::getWidgetAtPoint (ignoring - dw::oof::OutOfFlowMgr) and - dw::oof::OOFAwareWidget::getWidgetAtPoint (including - dw::oof::OutOfFlowMgr). - -<tr> -<td> *4. the non-positioned floats.* -<tr> -<td> *5. the in-flow, inline-level, non-positioned descendants, - including inline tables and inline blocks.* -<tr> -<td> (What about positioned elements with *z-index: auto*? Seems to be - missing in - <a href="http://www.w3.org/TR/CSS2/visuren.html#z-index">section - 9.9.1</a>, but mentioned in - <a href="http://www.w3.org/TR/CSS2/zindex.html">appendix E</a>, - item 8. -<tr> -<td> *6. the child stacking contexts with stack level 0 and the - positioned descendants with stack level 0.* -<td rowspan="2"> dw::core::StackingContextMgr::drawTop (when defined) -<td rowspan="2"> dw::core::StackingContextMgr::getTopWidgetAtPoint - (when defined) -<tr> -<td> *7. the child stacking contexts with positive stack levels (least - positive first).* -</table> - -Note: This is not quite in conformance with the specification: this -description refers to any widget, not only widgets establishing a -stacking context. Does this make a difference? - -*/
\ No newline at end of file |