OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org) |
3 * (C) 2000 Antti Koivisto (koivisto@kde.org) | 3 * (C) 2000 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2000 Dirk Mueller (mueller@kde.org) | 4 * (C) 2000 Dirk Mueller (mueller@kde.org) |
5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) | 5 * (C) 2004 Allan Sandfeld Jensen (kde@carewolf.com) |
6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. | 6 * Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. |
7 * All rights reserved. | 7 * All rights reserved. |
8 * Copyright (C) 2009 Google Inc. All rights reserved. | 8 * Copyright (C) 2009 Google Inc. All rights reserved. |
9 * | 9 * |
10 * This library is free software; you can redistribute it and/or | 10 * This library is free software; you can redistribute it and/or |
(...skipping 12 matching lines...) Expand all Loading... |
23 * Boston, MA 02110-1301, USA. | 23 * Boston, MA 02110-1301, USA. |
24 * | 24 * |
25 */ | 25 */ |
26 | 26 |
27 #ifndef LayoutObject_h | 27 #ifndef LayoutObject_h |
28 #define LayoutObject_h | 28 #define LayoutObject_h |
29 | 29 |
30 #include "core/CoreExport.h" | 30 #include "core/CoreExport.h" |
31 #include "core/dom/Document.h" | 31 #include "core/dom/Document.h" |
32 #include "core/dom/DocumentLifecycle.h" | 32 #include "core/dom/DocumentLifecycle.h" |
| 33 #include "core/dom/PseudoElement.h" |
33 #include "core/editing/PositionWithAffinity.h" | 34 #include "core/editing/PositionWithAffinity.h" |
34 #include "core/layout/LayoutObjectChildList.h" | 35 #include "core/layout/LayoutObjectChildList.h" |
35 #include "core/layout/MapCoordinatesFlags.h" | 36 #include "core/layout/MapCoordinatesFlags.h" |
36 #include "core/layout/PaintInvalidationState.h" | 37 #include "core/layout/PaintInvalidationState.h" |
37 #include "core/layout/ScrollAlignment.h" | 38 #include "core/layout/ScrollAlignment.h" |
38 #include "core/layout/SubtreeLayoutScope.h" | 39 #include "core/layout/SubtreeLayoutScope.h" |
39 #include "core/layout/api/HitTestAction.h" | 40 #include "core/layout/api/HitTestAction.h" |
40 #include "core/layout/api/SelectionState.h" | 41 #include "core/layout/api/SelectionState.h" |
41 #include "core/layout/compositing/CompositingState.h" | 42 #include "core/layout/compositing/CompositingState.h" |
42 #include "core/loader/resource/ImageResourceObserver.h" | 43 #include "core/loader/resource/ImageResourceObserver.h" |
(...skipping 18 matching lines...) Expand all Loading... |
61 class HitTestResult; | 62 class HitTestResult; |
62 class InlineBox; | 63 class InlineBox; |
63 class LayoutBoxModelObject; | 64 class LayoutBoxModelObject; |
64 class LayoutBlock; | 65 class LayoutBlock; |
65 class LayoutFlowThread; | 66 class LayoutFlowThread; |
66 class LayoutGeometryMap; | 67 class LayoutGeometryMap; |
67 class LayoutMultiColumnSpannerPlaceholder; | 68 class LayoutMultiColumnSpannerPlaceholder; |
68 class LayoutView; | 69 class LayoutView; |
69 class ObjectPaintProperties; | 70 class ObjectPaintProperties; |
70 class PaintLayer; | 71 class PaintLayer; |
| 72 class PseudoElement; |
71 class PseudoStyleRequest; | 73 class PseudoStyleRequest; |
72 | 74 |
73 struct PaintInfo; | 75 struct PaintInfo; |
74 struct PaintInvalidatorContext; | 76 struct PaintInvalidatorContext; |
75 | 77 |
76 enum CursorDirective { SetCursorBasedOnStyle, SetCursor, DoNotSetCursor }; | 78 enum CursorDirective { SetCursorBasedOnStyle, SetCursor, DoNotSetCursor }; |
77 | 79 |
78 enum HitTestFilter { HitTestAll, HitTestSelf, HitTestDescendants }; | 80 enum HitTestFilter { HitTestAll, HitTestSelf, HitTestDescendants }; |
79 | 81 |
80 enum MarkingBehavior { | 82 enum MarkingBehavior { |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
466 // function also doesn't handle the default association between a tag | 468 // function also doesn't handle the default association between a tag |
467 // and its renderer (e.g. <iframe> creates a LayoutIFrame even if the | 469 // and its renderer (e.g. <iframe> creates a LayoutIFrame even if the |
468 // initial 'display' value is inline). | 470 // initial 'display' value is inline). |
469 static LayoutObject* createObject(Element*, const ComputedStyle&); | 471 static LayoutObject* createObject(Element*, const ComputedStyle&); |
470 | 472 |
471 // LayoutObjects are allocated out of the rendering partition. | 473 // LayoutObjects are allocated out of the rendering partition. |
472 void* operator new(size_t); | 474 void* operator new(size_t); |
473 void operator delete(void*); | 475 void operator delete(void*); |
474 | 476 |
475 bool isPseudoElement() const { return node() && node()->isPseudoElement(); } | 477 bool isPseudoElement() const { return node() && node()->isPseudoElement(); } |
| 478 bool isPseudoElementGeneratedContentFor(const PseudoElement&) const; |
476 | 479 |
477 virtual bool isBoxModelObject() const { return false; } | 480 virtual bool isBoxModelObject() const { return false; } |
478 bool isBR() const { return isOfType(LayoutObjectBr); } | 481 bool isBR() const { return isOfType(LayoutObjectBr); } |
479 bool isCanvas() const { return isOfType(LayoutObjectCanvas); } | 482 bool isCanvas() const { return isOfType(LayoutObjectCanvas); } |
480 bool isCounter() const { return isOfType(LayoutObjectCounter); } | 483 bool isCounter() const { return isOfType(LayoutObjectCounter); } |
481 bool isDetailsMarker() const { return isOfType(LayoutObjectDetailsMarker); } | 484 bool isDetailsMarker() const { return isOfType(LayoutObjectDetailsMarker); } |
482 bool isEmbeddedObject() const { return isOfType(LayoutObjectEmbeddedObject); } | 485 bool isEmbeddedObject() const { return isOfType(LayoutObjectEmbeddedObject); } |
483 bool isFieldset() const { return isOfType(LayoutObjectFieldset); } | 486 bool isFieldset() const { return isOfType(LayoutObjectFieldset); } |
484 bool isFileUploadControl() const { | 487 bool isFileUploadControl() const { |
485 return isOfType(LayoutObjectFileUploadControl); | 488 return isOfType(LayoutObjectFileUploadControl); |
(...skipping 1493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1979 // Tree tear-down is when the whole tree destroyed during navigation. It is | 1982 // Tree tear-down is when the whole tree destroyed during navigation. It is |
1980 // handled in the code by checking if documentBeingDestroyed() returns 'true'. | 1983 // handled in the code by checking if documentBeingDestroyed() returns 'true'. |
1981 // In this case, the code skips some unneeded expensive operations as we know | 1984 // In this case, the code skips some unneeded expensive operations as we know |
1982 // the tree is not reused (e.g. avoid clearing the containing block's line | 1985 // the tree is not reused (e.g. avoid clearing the containing block's line |
1983 // box). | 1986 // box). |
1984 virtual void willBeDestroyed(); | 1987 virtual void willBeDestroyed(); |
1985 | 1988 |
1986 virtual void insertedIntoTree(); | 1989 virtual void insertedIntoTree(); |
1987 virtual void willBeRemovedFromTree(); | 1990 virtual void willBeRemovedFromTree(); |
1988 | 1991 |
| 1992 void setPseudoForAnonymous(PseudoElement& pseudo) { |
| 1993 DCHECK(isAnonymous()); |
| 1994 m_node = &pseudo; |
| 1995 } |
| 1996 |
1989 void setDocumentForAnonymous(Document* document) { | 1997 void setDocumentForAnonymous(Document* document) { |
1990 DCHECK(isAnonymous()); | 1998 DCHECK(isAnonymous()); |
1991 m_node = document; | 1999 m_node = document; |
1992 } | 2000 } |
1993 | 2001 |
1994 // Add hit-test rects for the layout tree rooted at this node to the provided | 2002 // Add hit-test rects for the layout tree rooted at this node to the provided |
1995 // collection on a per-Layer basis. | 2003 // collection on a per-Layer basis. |
1996 // currentLayer must be the enclosing layer, and layerOffset is the current | 2004 // currentLayer must be the enclosing layer, and layerOffset is the current |
1997 // offset within this layer. Subclass implementations will add any offset for | 2005 // offset within this layer. Subclass implementations will add any offset for |
1998 // this layoutObject within it's container, so callers should provide only the | 2006 // this layoutObject within it's container, so callers should provide only the |
(...skipping 778 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2777 CORE_EXPORT void showLineTree(const blink::LayoutObject*); | 2785 CORE_EXPORT void showLineTree(const blink::LayoutObject*); |
2778 CORE_EXPORT void showLayoutTree(const blink::LayoutObject* object1); | 2786 CORE_EXPORT void showLayoutTree(const blink::LayoutObject* object1); |
2779 // We don't make object2 an optional parameter so that showLayoutTree | 2787 // We don't make object2 an optional parameter so that showLayoutTree |
2780 // can be called from gdb easily. | 2788 // can be called from gdb easily. |
2781 CORE_EXPORT void showLayoutTree(const blink::LayoutObject* object1, | 2789 CORE_EXPORT void showLayoutTree(const blink::LayoutObject* object1, |
2782 const blink::LayoutObject* object2); | 2790 const blink::LayoutObject* object2); |
2783 | 2791 |
2784 #endif | 2792 #endif |
2785 | 2793 |
2786 #endif // LayoutObject_h | 2794 #endif // LayoutObject_h |
OLD | NEW |