OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * Copyright (C) 2003, 2006, 2007, 2009 Apple Inc. All rights reserved. | 4 * Copyright (C) 2003, 2006, 2007, 2009 Apple Inc. All rights reserved. |
5 * Copyright (C) 2010 Google Inc. All rights reserved. | 5 * Copyright (C) 2010 Google Inc. All rights reserved. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 30 matching lines...) Expand all Loading... |
41 BackgroundBleedClipBackground, | 41 BackgroundBleedClipBackground, |
42 BackgroundBleedBackgroundOverBorder | 42 BackgroundBleedBackgroundOverBorder |
43 }; | 43 }; |
44 | 44 |
45 enum ContentChangeType { | 45 enum ContentChangeType { |
46 ImageChanged, | 46 ImageChanged, |
47 CanvasChanged, | 47 CanvasChanged, |
48 CanvasContextChanged | 48 CanvasContextChanged |
49 }; | 49 }; |
50 | 50 |
| 51 struct BorderEdge; |
51 class RenderTextFragment; | 52 class RenderTextFragment; |
52 | 53 |
53 // This class is the base for all objects that adhere to the CSS box model as de
scribed | 54 // This class is the base for all objects that adhere to the CSS box model as de
scribed |
54 // at http://www.w3.org/TR/CSS21/box.html | 55 // at http://www.w3.org/TR/CSS21/box.html |
55 | 56 |
56 class RenderBoxModelObject : public RenderLayerModelObject { | 57 class RenderBoxModelObject : public RenderLayerModelObject { |
57 public: | 58 public: |
58 RenderBoxModelObject(ContainerNode*); | 59 RenderBoxModelObject(ContainerNode*); |
59 virtual ~RenderBoxModelObject(); | 60 virtual ~RenderBoxModelObject(); |
60 | 61 |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
168 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c
onst OVERRIDE; | 169 virtual void mapAbsoluteToLocalPoint(MapCoordinatesFlags, TransformState&) c
onst OVERRIDE; |
169 virtual const RenderObject* pushMappingToContainer(const RenderLayerModelObj
ect* ancestorToStopAt, RenderGeometryMap&) const OVERRIDE; | 170 virtual const RenderObject* pushMappingToContainer(const RenderLayerModelObj
ect* ancestorToStopAt, RenderGeometryMap&) const OVERRIDE; |
170 | 171 |
171 virtual void setSelectionState(SelectionState) OVERRIDE; | 172 virtual void setSelectionState(SelectionState) OVERRIDE; |
172 | 173 |
173 void contentChanged(ContentChangeType); | 174 void contentChanged(ContentChangeType); |
174 bool hasAcceleratedCompositing() const; | 175 bool hasAcceleratedCompositing() const; |
175 | 176 |
176 virtual void computeLayerHitTestRects(LayerHitTestRects&) const OVERRIDE; | 177 virtual void computeLayerHitTestRects(LayerHitTestRects&) const OVERRIDE; |
177 | 178 |
| 179 // FIXME: Slimming Paint: make these two methods private again after moving
paint code in this class to paint/ |
| 180 void paintRootBackgroundColor(const PaintInfo&, const LayoutRect&, const Col
or&); |
| 181 bool isDocumentElementWithOpaqueBackground() const; |
| 182 |
178 protected: | 183 protected: |
179 virtual void willBeDestroyed() OVERRIDE; | 184 virtual void willBeDestroyed() OVERRIDE; |
180 | 185 |
181 class BackgroundImageGeometry { | 186 class BackgroundImageGeometry { |
182 public: | 187 public: |
183 BackgroundImageGeometry() | 188 BackgroundImageGeometry() |
184 : m_hasNonLocalGeometry(false) | 189 : m_hasNonLocalGeometry(false) |
185 { } | 190 { } |
186 | 191 |
187 IntPoint destOrigin() const { return m_destOrigin; } | 192 IntPoint destOrigin() const { return m_destOrigin; } |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 IntPoint m_phase; | 243 IntPoint m_phase; |
239 IntSize m_tileSize; | 244 IntSize m_tileSize; |
240 IntSize m_repeatSpacing; | 245 IntSize m_repeatSpacing; |
241 bool m_hasNonLocalGeometry; // Has background-attachment: fixed. Implies
that we can't always cheaply compute destRect. | 246 bool m_hasNonLocalGeometry; // Has background-attachment: fixed. Implies
that we can't always cheaply compute destRect. |
242 }; | 247 }; |
243 | 248 |
244 LayoutPoint adjustedPositionRelativeToOffsetParent(const LayoutPoint&) const
; | 249 LayoutPoint adjustedPositionRelativeToOffsetParent(const LayoutPoint&) const
; |
245 | 250 |
246 bool calculateHasBoxDecorations() const; | 251 bool calculateHasBoxDecorations() const; |
247 void calculateBackgroundImageGeometry(const RenderLayerModelObject* paintCon
tainer, const FillLayer&, const LayoutRect& paintRect, BackgroundImageGeometry&,
RenderObject* = 0) const; | 252 void calculateBackgroundImageGeometry(const RenderLayerModelObject* paintCon
tainer, const FillLayer&, const LayoutRect& paintRect, BackgroundImageGeometry&,
RenderObject* = 0) const; |
248 void getBorderEdgeInfo(class BorderEdge[], const RenderStyle*, bool includeL
ogicalLeftEdge = true, bool includeLogicalRightEdge = true) const; | |
249 bool borderObscuresBackgroundEdge(const FloatSize& contextScale) const; | |
250 bool borderObscuresBackground() const; | |
251 RoundedRect backgroundRoundedRectAdjustedForBleedAvoidance(GraphicsContext*,
const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox*, const LayoutSize&,
bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const; | 253 RoundedRect backgroundRoundedRectAdjustedForBleedAvoidance(GraphicsContext*,
const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox*, const LayoutSize&,
bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const; |
252 LayoutRect borderInnerRectAdjustedForBleedAvoidance(GraphicsContext*, const
LayoutRect&, BackgroundBleedAvoidance) const; | 254 LayoutRect borderInnerRectAdjustedForBleedAvoidance(GraphicsContext*, const
LayoutRect&, BackgroundBleedAvoidance) const; |
253 | 255 |
254 InterpolationQuality chooseInterpolationQuality(GraphicsContext*, Image*, co
nst void*, const LayoutSize&); | 256 InterpolationQuality chooseInterpolationQuality(GraphicsContext*, Image*, co
nst void*, const LayoutSize&); |
255 | 257 |
256 RenderBoxModelObject* continuation() const; | 258 RenderBoxModelObject* continuation() const; |
257 void setContinuation(RenderBoxModelObject*); | 259 void setContinuation(RenderBoxModelObject*); |
258 | 260 |
259 LayoutRect localCaretRectForEmptyElement(LayoutUnit width, LayoutUnit textIn
dentOffset); | 261 LayoutRect localCaretRectForEmptyElement(LayoutUnit width, LayoutUnit textIn
dentOffset); |
260 | 262 |
261 static void clipRoundedInnerRect(GraphicsContext*, const LayoutRect&, const
RoundedRect& clipRect); | 263 static void clipRoundedInnerRect(GraphicsContext*, const LayoutRect&, const
RoundedRect& clipRect); |
262 | 264 |
263 bool hasAutoHeightOrContainingBlockWithAutoHeight() const; | 265 bool hasAutoHeightOrContainingBlockWithAutoHeight() const; |
264 | 266 |
265 bool isDocumentElementWithOpaqueBackground() const; | |
266 | |
267 void paintRootBackgroundColor(const PaintInfo&, const LayoutRect&, const Col
or&); | |
268 | |
269 public: | 267 public: |
270 static bool shouldAntialiasLines(GraphicsContext*); | 268 static bool shouldAntialiasLines(GraphicsContext*); |
271 | 269 |
272 // For RenderBlocks and RenderInlines with m_style->styleType() == FIRST_LET
TER, this tracks their remaining text fragments | 270 // For RenderBlocks and RenderInlines with m_style->styleType() == FIRST_LET
TER, this tracks their remaining text fragments |
273 RenderTextFragment* firstLetterRemainingText() const; | 271 RenderTextFragment* firstLetterRemainingText() const; |
274 void setFirstLetterRemainingText(RenderTextFragment*); | 272 void setFirstLetterRemainingText(RenderTextFragment*); |
275 | 273 |
276 // These functions are only used internally to manipulate the render tree st
ructure via remove/insert/appendChildNode. | 274 // These functions are only used internally to manipulate the render tree st
ructure via remove/insert/appendChildNode. |
277 // Since they are typically called only to move objects around within anonym
ous blocks (which only have layers in | 275 // Since they are typically called only to move objects around within anonym
ous blocks (which only have layers in |
278 // the case of column spans), the default for fullRemoveInsert is false rath
er than true. | 276 // the case of column spans), the default for fullRemoveInsert is false rath
er than true. |
(...skipping 27 matching lines...) Expand all Loading... |
306 | 304 |
307 IntSize calculateFillTileSize(const FillLayer&, const IntSize& scaledPositio
ningAreaSize) const; | 305 IntSize calculateFillTileSize(const FillLayer&, const IntSize& scaledPositio
ningAreaSize) const; |
308 | 306 |
309 RoundedRect getBackgroundRoundedRect(const LayoutRect&, InlineFlowBox*, Layo
utUnit inlineBoxWidth, LayoutUnit inlineBoxHeight, | 307 RoundedRect getBackgroundRoundedRect(const LayoutRect&, InlineFlowBox*, Layo
utUnit inlineBoxWidth, LayoutUnit inlineBoxHeight, |
310 bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const; | 308 bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const; |
311 | 309 |
312 bool fixedBackgroundPaintsInLocalCoordinates() const; | 310 bool fixedBackgroundPaintsInLocalCoordinates() const; |
313 | 311 |
314 void clipBorderSidePolygon(GraphicsContext*, const RoundedRect& outerBorder,
const RoundedRect& innerBorder, | 312 void clipBorderSidePolygon(GraphicsContext*, const RoundedRect& outerBorder,
const RoundedRect& innerBorder, |
315 BoxSide, bool firstEdgeMatches, bool secondEdgeMa
tches); | 313 BoxSide, bool firstEdgeMatches, bool secondEdgeMa
tches); |
316 void clipBorderSideForComplexInnerPath(GraphicsContext*, const RoundedRect&,
const RoundedRect&, BoxSide, const class BorderEdge[]); | 314 void clipBorderSideForComplexInnerPath(GraphicsContext*, const RoundedRect&,
const RoundedRect&, BoxSide, const BorderEdge[]); |
317 void paintOneBorderSide(GraphicsContext*, const RenderStyle*, const RoundedR
ect& outerBorder, const RoundedRect& innerBorder, | 315 void paintOneBorderSide(GraphicsContext*, const RenderStyle*, const RoundedR
ect& outerBorder, const RoundedRect& innerBorder, |
318 const IntRect& sideRect, BoxSide, BoxSide adjace
ntSide1, BoxSide adjacentSide2, const class BorderEdge[], | 316 const IntRect& sideRect, BoxSide, BoxSide adjacentSide1, BoxSide adjacen
tSide2, const BorderEdge[], |
319 const Path*, BackgroundBleedAvoidance, bool incl
udeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias, const Color* o
verrideColor = 0); | 317 const Path*, BackgroundBleedAvoidance, bool includeLogicalLeftEdge, bool
includeLogicalRightEdge, bool antialias, const Color* overrideColor = 0); |
320 void paintTranslucentBorderSides(GraphicsContext*, const RenderStyle*, const
RoundedRect& outerBorder, const RoundedRect& innerBorder, const IntPoint& inner
BorderAdjustment, | 318 void paintTranslucentBorderSides(GraphicsContext*, const RenderStyle*, const
RoundedRect& outerBorder, const RoundedRect& innerBorder, const IntPoint& inner
BorderAdjustment, |
321 const class BorderEdge[], BorderEdgeFlags, BackgroundBleedAvoidance, boo
l includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias = false); | 319 const BorderEdge[], BorderEdgeFlags, BackgroundBleedAvoidance, bool incl
udeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias = false); |
322 void paintBorderSides(GraphicsContext*, const RenderStyle*, const RoundedRec
t& outerBorder, const RoundedRect& innerBorder, | 320 void paintBorderSides(GraphicsContext*, const RenderStyle*, const RoundedRec
t& outerBorder, const RoundedRect& innerBorder, |
323 const IntPoint& innerBorderAdjustment, const class BorderEdge[], BorderE
dgeFlags, BackgroundBleedAvoidance, | 321 const IntPoint& innerBorderAdjustment, const BorderEdge[], BorderEdgeFla
gs, BackgroundBleedAvoidance, |
324 bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialia
s = false, const Color* overrideColor = 0); | 322 bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialia
s = false, const Color* overrideColor = 0); |
325 void drawBoxSideFromPath(GraphicsContext*, const LayoutRect&, const Path&, c
onst class BorderEdge[], | 323 void drawBoxSideFromPath(GraphicsContext*, const LayoutRect&, const Path&, c
onst BorderEdge[], |
326 float thickness, float drawThickness, BoxSide, const
RenderStyle*, | 324 float thickness, float drawThickness, BoxSide, const
RenderStyle*, |
327 Color, EBorderStyle, BackgroundBleedAvoidance, bool
includeLogicalLeftEdge, bool includeLogicalRightEdge); | 325 Color, EBorderStyle, BackgroundBleedAvoidance, bool
includeLogicalLeftEdge, bool includeLogicalRightEdge); |
328 }; | 326 }; |
329 | 327 |
330 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderBoxModelObject, isBoxModelObject()); | 328 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderBoxModelObject, isBoxModelObject()); |
331 | 329 |
332 } // namespace blink | 330 } // namespace blink |
333 | 331 |
334 #endif // RenderBoxModelObject_h | 332 #endif // RenderBoxModelObject_h |
OLD | NEW |