[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
hyatt
hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:35:12 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit cc0bd9e396d68b05814ae28d553ca246f8ee14b7
Author: hyatt <hyatt at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Wed Aug 28 08:54:29 2002 +0000
Putting design notes and API details for the layering system
into the header file.
* khtml/rendering/render_layer.h:
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@1928 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 73ab51e..0bae24c 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,10 @@
+2002-08-28 David Hyatt <hyatt at apple.com>
+
+ Putting design notes and API details for the layering system
+ into the header file.
+
+ * khtml/rendering/render_layer.h:
+
2002-08-28 Darin Adler <darin at apple.com>
* kwq/mac-encodings.txt: Sort all the character set names alphabetically, and use all lower case.
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 73ab51e..0bae24c 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,10 @@
+2002-08-28 David Hyatt <hyatt at apple.com>
+
+ Putting design notes and API details for the layering system
+ into the header file.
+
+ * khtml/rendering/render_layer.h:
+
2002-08-28 Darin Adler <darin at apple.com>
* kwq/mac-encodings.txt: Sort all the character set names alphabetically, and use all lower case.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 73ab51e..0bae24c 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,10 @@
+2002-08-28 David Hyatt <hyatt at apple.com>
+
+ Putting design notes and API details for the layering system
+ into the header file.
+
+ * khtml/rendering/render_layer.h:
+
2002-08-28 Darin Adler <darin at apple.com>
* kwq/mac-encodings.txt: Sort all the character set names alphabetically, and use all lower case.
diff --git a/WebCore/khtml/rendering/render_layer.h b/WebCore/khtml/rendering/render_layer.h
index c6098b7..4fdb33d 100644
--- a/WebCore/khtml/rendering/render_layer.h
+++ b/WebCore/khtml/rendering/render_layer.h
@@ -32,6 +32,7 @@
#include "misc/loader_client.h"
#include "misc/helper.h"
#include "rendering/render_style.h"
+#include <qvector.h>
namespace khtml {
class RenderFlow;
@@ -68,7 +69,120 @@ public:
void setHeight( int height ) { m_height = height; }
void setPos( int xPos, int yPos ) { m_x = xPos; m_y = yPos; }
+
+protected:
+ // Z-Index Implementation Notes
+ //
+ // In order to properly handle mouse events as well as painting,
+ // we must compute a correct list of layers that should be painted
+ // from back to front (and for mouse events walked from front to
+ // back).
+ //
+ // Positioned elements in the render tree (e.g., relative positioned
+ // divs and absolute positioned divs) have a corresponding layer
+ // that holds them and all children that reside in the same layer.
+ //
+ // When painting is performed on a layer, all render objects in that
+ // layer are painted. If the render object has descendants in another
+ // layer, those will be dealt with separately.
+ //
+ // A RenderLayerElement represents a single entry in our list of
+ // layers that should be painted. We perform computations as we
+ // build up this list so that we have the correct translation factor
+ // for painting. We also use a temporary z-index variable for storage
+ // (more on this below).
+ //
+ struct RenderLayerElement {
+ RenderLayer* layer;
+ int zindex; // Temporary z-index used for processing and sorting.
+ int x; // The coords relative to the view that will be using this list
+ // to paint.
+ int y;
+ };
+
+ // The list of layer elements is built through a recursive examination
+ // of a tree of z nodes. This tree structure mimics the layer
+ // hierarchy itself, but only leaf nodes represent items that will
+ // end up in the layer list for painting.
+ //
+ // Every leaf layer in the layer hierarchy will have a corresponding
+ // leaf node in the z-tree. Layers with children have an
+ // interior z-tree node that contains the tree nodes for the child
+ // layers as well as a leaf node that represents the containing layer.
+ //
+ // Sibling z-tree nodes match the same order as the layers in the
+ // layer hierarchy, which will have been arranged in document order
+ // when the render tree was constructed (since the render tree
+ // constructed the layers). An exception is if a negative z-index
+ // is specified on a child (see below).
+ struct RenderZTreeNode {
+ RenderLayer* layer;
+ RenderZTreeNode* next;
+
+ // Only one of these will ever be defined.
+ RenderZTreeNode* child; // Defined for interior nodes.
+ RenderLayerElement* layerElement; // Defined for leaf nodes.
+ };
+
+public:
+ // The createZTree function creates a z-tree for a given layer hierarchy
+ // rooted on this layer. It will ensure that immediate child
+ // elements of a given z-tree node are at least initially sorted
+ // into <negative z-index children>, <this layer>, <positive z-index
+ // children>.
+ //
+ // Here is a concrete example (lifted from Gecko's view system,
+ // which is analogous to our layer system and works the same way):
+ // z-index values as specified by CSS are shown in parentheses.
+ //
+ // L0(auto) --> L1(0) --> L2(auto) --> L3(0)
+ // | | +------> L4(2)
+ // | +-----------> L5(1)
+ // +--------------------> L6(1)
+ //
+ // The corresponding z-tree for this layer hierarchy will be
+ // the following, where |I| represents an interior node, and |L|
+ // represents a leaf RenderLayerElement.
+ //
+ // I(L0) --> L(L0)
+ // +-------> I(L1) --------> L(L1)
+ // | | +-------> I(L2) ------> L(L2)
+ // | | +---------> L(L3)
+ // | +-----------> L(L4)
+ // +-------> L(L5)
+ // +-------> L(L6)
+ //
+ void constructZTree(RenderZTreeNode*& ztree) {};
+
+ // Once the z-tree has been constructed, we call constructLayerList
+ // to produce a flattened layer list for rendering/event handling.
+ // This function recursively computes a layer list for each z-tree
+ // node by computing lists for each child node. It then concatenates
+ // them and sorts them by z-index.
+ //
+ // Z-indices are updated during this computation. After a list is
+ // computed for one z-tree node, the elements of the layer list are
+ // all changed so that their z-indices match the specified z-index
+ // of the tree node's layer (unless that layer doesn't establish
+ // a z-index, e.g., it just has z-index: auto).
+ //
+ // Continuing the above example, the computation of the list for
+ // L0 would be as follows:
+ //
+ // I(L2) has a list [ L(L2)(0), L(L3)(0), L(L4)(2) ]
+ // I(L2) is auto so the z-indices of the child layer elements remain
+ // unaltered.
+ // I(L1) has a list [ L(L1)(0), L(L2)(0), L(L3)(0), L(L4)(2), L(L5)(1)
+ // The nodes are sorted and then reassigned a z-index of 0, so this
+ // list becomes:
+ // [ L(L1)(0), L(L2)(0), L(L3)(0), L(L5)(0), L(L4)(0) ]
+ // Finally we end up with the list for L0, which sorted becomes:
+ // [ L(L0)(0), L(L1)(0), L(L2)(0), L(L3)(0), L(L5)(0), L(L4)(0), L(L6)(1) ]
+
+ void constructLayerList(RenderZTreeNode* ztree,
+ QPtrVector<RenderLayerElement>& layerList) {};
+
private:
void setNextSibling(RenderLayer* next) { m_next = next; }
void setPreviousSibling(RenderLayer* prev) { m_previous = prev; }
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list