| OLD | NEW |
| 1 /** | 1 /** |
| 2 * Copyright (C) 2007 Rob Buis <buis@kde.org> | 2 * Copyright (C) 2007 Rob Buis <buis@kde.org> |
| 3 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org> | 3 * Copyright (C) 2007 Nikolas Zimmermann <zimmermann@kde.org> |
| 4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> | 4 * Copyright (C) 2007 Eric Seidel <eric@webkit.org> |
| 5 * Copyright (C) 2009 Google, Inc. All rights reserved. | 5 * Copyright (C) 2009 Google, Inc. All rights reserved. |
| 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. | 6 * Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 7 * | 7 * |
| 8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
| 9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
| 10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
| 11 * version 2 of the License, or (at your option) any later version. | 11 * version 2 of the License, or (at your option) any later version. |
| 12 * | 12 * |
| 13 * This library is distributed in the hope that it will be useful, | 13 * This library is distributed in the hope that it will be useful, |
| 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 16 * Library General Public License for more details. | 16 * Library General Public License for more details. |
| 17 * | 17 * |
| 18 * You should have received a copy of the GNU Library General Public License | 18 * You should have received a copy of the GNU Library General Public License |
| 19 * along with this library; see the file COPYING.LIB. If not, write to | 19 * along with this library; see the file COPYING.LIB. If not, write to |
| 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 20 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 21 * Boston, MA 02110-1301, USA. | 21 * Boston, MA 02110-1301, USA. |
| 22 */ | 22 */ |
| 23 | 23 |
| 24 #ifndef SVGLayoutSupport_h | 24 #ifndef SVGLayoutSupport_h |
| 25 #define SVGLayoutSupport_h | 25 #define SVGLayoutSupport_h |
| 26 | 26 |
| 27 #include "core/layout/LayoutObject.h" | 27 #include "core/layout/LayoutObject.h" |
| 28 #include "core/style/SVGComputedStyleDefs.h" | 28 #include "core/style/SVGComputedStyleDefs.h" |
| 29 #include "platform/graphics/DashArray.h" | 29 #include "platform/graphics/DashArray.h" |
| 30 #include "wtf/Allocator.h" |
| 30 | 31 |
| 31 namespace blink { | 32 namespace blink { |
| 32 | 33 |
| 33 class AffineTransform; | 34 class AffineTransform; |
| 34 class FloatPoint; | 35 class FloatPoint; |
| 35 class FloatRect; | 36 class FloatRect; |
| 36 class PaintInvalidationState; | 37 class PaintInvalidationState; |
| 37 class LayoutRect; | 38 class LayoutRect; |
| 38 class LayoutGeometryMap; | 39 class LayoutGeometryMap; |
| 39 class LayoutBoxModelObject; | 40 class LayoutBoxModelObject; |
| 40 class LayoutObject; | 41 class LayoutObject; |
| 41 class ComputedStyle; | 42 class ComputedStyle; |
| 42 class LayoutSVGRoot; | 43 class LayoutSVGRoot; |
| 43 class SVGLengthContext; | 44 class SVGLengthContext; |
| 44 class StrokeData; | 45 class StrokeData; |
| 45 class TransformState; | 46 class TransformState; |
| 46 | 47 |
| 47 class SVGLayoutSupport { | 48 class SVGLayoutSupport { |
| 49 STATIC_ONLY(SVGLayoutSupport); |
| 48 public: | 50 public: |
| 49 // Shares child layouting code between LayoutSVGRoot/LayoutSVG(Hidden)Contai
ner | 51 // Shares child layouting code between LayoutSVGRoot/LayoutSVG(Hidden)Contai
ner |
| 50 static void layoutChildren(LayoutObject*, bool selfNeedsLayout); | 52 static void layoutChildren(LayoutObject*, bool selfNeedsLayout); |
| 51 | 53 |
| 52 // Layout resources used by this node. | 54 // Layout resources used by this node. |
| 53 static void layoutResourcesIfNeeded(const LayoutObject*); | 55 static void layoutResourcesIfNeeded(const LayoutObject*); |
| 54 | 56 |
| 55 // Helper function determining whether overflow is hidden. | 57 // Helper function determining whether overflow is hidden. |
| 56 static bool isOverflowHidden(const LayoutObject*); | 58 static bool isOverflowHidden(const LayoutObject*); |
| 57 | 59 |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 104 | 106 |
| 105 static AffineTransform deprecatedCalculateTransformToLayer(const LayoutObjec
t*); | 107 static AffineTransform deprecatedCalculateTransformToLayer(const LayoutObjec
t*); |
| 106 static float calculateScreenFontSizeScalingFactor(const LayoutObject*); | 108 static float calculateScreenFontSizeScalingFactor(const LayoutObject*); |
| 107 | 109 |
| 108 private: | 110 private: |
| 109 static void updateObjectBoundingBox(FloatRect& objectBoundingBox, bool& obje
ctBoundingBoxValid, LayoutObject* other, FloatRect otherBoundingBox); | 111 static void updateObjectBoundingBox(FloatRect& objectBoundingBox, bool& obje
ctBoundingBoxValid, LayoutObject* other, FloatRect otherBoundingBox); |
| 110 static bool layoutSizeOfNearestViewportChanged(const LayoutObject* start); | 112 static bool layoutSizeOfNearestViewportChanged(const LayoutObject* start); |
| 111 }; | 113 }; |
| 112 | 114 |
| 113 class SubtreeContentTransformScope { | 115 class SubtreeContentTransformScope { |
| 116 STACK_ALLOCATED(); |
| 114 public: | 117 public: |
| 115 SubtreeContentTransformScope(const AffineTransform&); | 118 SubtreeContentTransformScope(const AffineTransform&); |
| 116 ~SubtreeContentTransformScope(); | 119 ~SubtreeContentTransformScope(); |
| 117 | 120 |
| 118 private: | 121 private: |
| 119 AffineTransform m_savedContentTransformation; | 122 AffineTransform m_savedContentTransformation; |
| 120 }; | 123 }; |
| 121 | 124 |
| 122 template <typename LayoutObjectType> | 125 template <typename LayoutObjectType> |
| 123 bool SVGLayoutSupport::computeHasNonIsolatedBlendingDescendants(const LayoutObje
ctType* object) | 126 bool SVGLayoutSupport::computeHasNonIsolatedBlendingDescendants(const LayoutObje
ctType* object) |
| 124 { | 127 { |
| 125 for (LayoutObject* child = object->firstChild(); child; child = child->nextS
ibling()) { | 128 for (LayoutObject* child = object->firstChild(); child; child = child->nextS
ibling()) { |
| 126 if (child->isBlendingAllowed() && child->style()->hasBlendMode()) | 129 if (child->isBlendingAllowed() && child->style()->hasBlendMode()) |
| 127 return true; | 130 return true; |
| 128 if (child->hasNonIsolatedBlendingDescendants() && !willIsolateBlendingDe
scendantsForObject(child)) | 131 if (child->hasNonIsolatedBlendingDescendants() && !willIsolateBlendingDe
scendantsForObject(child)) |
| 129 return true; | 132 return true; |
| 130 } | 133 } |
| 131 return false; | 134 return false; |
| 132 } | 135 } |
| 133 | 136 |
| 134 } // namespace blink | 137 } // namespace blink |
| 135 | 138 |
| 136 #endif // SVGLayoutSupport_h | 139 #endif // SVGLayoutSupport_h |
| OLD | NEW |