Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(454)

Side by Side Diff: Source/core/rendering/RenderBoxModelObject.h

Issue 385583005: For flex items, percent paddings should resolve against their respective dimension Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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 enum PaddingType {
52 TopPadding,
53 RightPadding,
54 BottomPadding,
55 LeftPadding,
56 BeforePadding,
57 AfterPadding,
58 StartPadding,
59 EndPadding
60 };
61
51 class RenderTextFragment; 62 class RenderTextFragment;
52 63
53 // This class is the base for all objects that adhere to the CSS box model as de scribed 64 // 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 65 // at http://www.w3.org/TR/CSS21/box.html
55 66
56 class RenderBoxModelObject : public RenderLayerModelObject { 67 class RenderBoxModelObject : public RenderLayerModelObject {
57 public: 68 public:
58 RenderBoxModelObject(ContainerNode*); 69 RenderBoxModelObject(ContainerNode*);
59 virtual ~RenderBoxModelObject(); 70 virtual ~RenderBoxModelObject();
60 71
(...skipping 13 matching lines...) Expand all
74 int pixelSnappedOffsetTop() const { return roundToInt(offsetTop()); } 85 int pixelSnappedOffsetTop() const { return roundToInt(offsetTop()); }
75 virtual int pixelSnappedOffsetWidth() const; 86 virtual int pixelSnappedOffsetWidth() const;
76 virtual int pixelSnappedOffsetHeight() const; 87 virtual int pixelSnappedOffsetHeight() const;
77 88
78 virtual void updateFromStyle() OVERRIDE; 89 virtual void updateFromStyle() OVERRIDE;
79 90
80 // This will work on inlines to return the bounding box of all of the lines' border boxes. 91 // This will work on inlines to return the bounding box of all of the lines' border boxes.
81 virtual IntRect borderBoundingBox() const = 0; 92 virtual IntRect borderBoundingBox() const = 0;
82 93
83 // These return the CSS computed padding values. 94 // These return the CSS computed padding values.
84 LayoutUnit computedCSSPaddingTop() const { return computedCSSPadding(style() ->paddingTop()); } 95 LayoutUnit computedCSSPaddingTop() const { return computedCSSPadding(style() ->paddingTop(), TopPadding); }
85 LayoutUnit computedCSSPaddingBottom() const { return computedCSSPadding(styl e()->paddingBottom()); } 96 LayoutUnit computedCSSPaddingBottom() const { return computedCSSPadding(styl e()->paddingBottom(), BottomPadding); }
86 LayoutUnit computedCSSPaddingLeft() const { return computedCSSPadding(style( )->paddingLeft()); } 97 LayoutUnit computedCSSPaddingLeft() const { return computedCSSPadding(style( )->paddingLeft(), LeftPadding); }
87 LayoutUnit computedCSSPaddingRight() const { return computedCSSPadding(style ()->paddingRight()); } 98 LayoutUnit computedCSSPaddingRight() const { return computedCSSPadding(style ()->paddingRight(), RightPadding); }
88 LayoutUnit computedCSSPaddingBefore() const { return computedCSSPadding(styl e()->paddingBefore()); } 99 LayoutUnit computedCSSPaddingBefore() const { return computedCSSPadding(styl e()->paddingBefore(), BeforePadding); }
89 LayoutUnit computedCSSPaddingAfter() const { return computedCSSPadding(style ()->paddingAfter()); } 100 LayoutUnit computedCSSPaddingAfter() const { return computedCSSPadding(style ()->paddingAfter(), AfterPadding); }
90 LayoutUnit computedCSSPaddingStart() const { return computedCSSPadding(style ()->paddingStart()); } 101 LayoutUnit computedCSSPaddingStart() const { return computedCSSPadding(style ()->paddingStart(), StartPadding); }
91 LayoutUnit computedCSSPaddingEnd() const { return computedCSSPadding(style() ->paddingEnd()); } 102 LayoutUnit computedCSSPaddingEnd() const { return computedCSSPadding(style() ->paddingEnd(), EndPadding); }
92 103
93 // These functions are used during layout. Table cells 104 // These functions are used during layout. Table cells
94 // override them to include some extra intrinsic padding. 105 // override them to include some extra intrinsic padding.
95 virtual LayoutUnit paddingTop() const { return computedCSSPaddingTop(); } 106 virtual LayoutUnit paddingTop() const { return computedCSSPaddingTop(); }
96 virtual LayoutUnit paddingBottom() const { return computedCSSPaddingBottom() ; } 107 virtual LayoutUnit paddingBottom() const { return computedCSSPaddingBottom() ; }
97 virtual LayoutUnit paddingLeft() const { return computedCSSPaddingLeft(); } 108 virtual LayoutUnit paddingLeft() const { return computedCSSPaddingLeft(); }
98 virtual LayoutUnit paddingRight() const { return computedCSSPaddingRight(); } 109 virtual LayoutUnit paddingRight() const { return computedCSSPaddingRight(); }
99 virtual LayoutUnit paddingBefore() const { return computedCSSPaddingBefore() ; } 110 virtual LayoutUnit paddingBefore() const { return computedCSSPaddingBefore() ; }
100 virtual LayoutUnit paddingAfter() const { return computedCSSPaddingAfter(); } 111 virtual LayoutUnit paddingAfter() const { return computedCSSPaddingAfter(); }
101 virtual LayoutUnit paddingStart() const { return computedCSSPaddingStart(); } 112 virtual LayoutUnit paddingStart() const { return computedCSSPaddingStart(); }
(...skipping 188 matching lines...) Expand 10 before | Expand all | Expand 10 after
290 void moveChildrenTo(RenderBoxModelObject* toBoxModelObject, RenderObject* st artChild, RenderObject* endChild, bool fullRemoveInsert = false) 301 void moveChildrenTo(RenderBoxModelObject* toBoxModelObject, RenderObject* st artChild, RenderObject* endChild, bool fullRemoveInsert = false)
291 { 302 {
292 moveChildrenTo(toBoxModelObject, startChild, endChild, 0, fullRemoveInse rt); 303 moveChildrenTo(toBoxModelObject, startChild, endChild, 0, fullRemoveInse rt);
293 } 304 }
294 void moveChildrenTo(RenderBoxModelObject* toBoxModelObject, RenderObject* st artChild, RenderObject* endChild, RenderObject* beforeChild, bool fullRemoveInse rt = false); 305 void moveChildrenTo(RenderBoxModelObject* toBoxModelObject, RenderObject* st artChild, RenderObject* endChild, RenderObject* beforeChild, bool fullRemoveInse rt = false);
295 306
296 enum ScaleByEffectiveZoomOrNot { ScaleByEffectiveZoom, DoNotScaleByEffective Zoom }; 307 enum ScaleByEffectiveZoomOrNot { ScaleByEffectiveZoom, DoNotScaleByEffective Zoom };
297 IntSize calculateImageIntrinsicDimensions(StyleImage*, const IntSize& scaled PositioningAreaSize, ScaleByEffectiveZoomOrNot) const; 308 IntSize calculateImageIntrinsicDimensions(StyleImage*, const IntSize& scaled PositioningAreaSize, ScaleByEffectiveZoomOrNot) const;
298 309
299 private: 310 private:
300 LayoutUnit computedCSSPadding(const Length&) const; 311 LayoutUnit computedCSSPadding(const Length&, PaddingType) const;
301 virtual bool isBoxModelObject() const OVERRIDE FINAL { return true; } 312 virtual bool isBoxModelObject() const OVERRIDE FINAL { return true; }
302 313
303 IntSize calculateFillTileSize(const FillLayer&, const IntSize& scaledPositio ningAreaSize) const; 314 IntSize calculateFillTileSize(const FillLayer&, const IntSize& scaledPositio ningAreaSize) const;
304 315
316 LayoutUnit containingBlockLogicalHeightForPadding() const;
317
305 RoundedRect getBackgroundRoundedRect(const LayoutRect&, InlineFlowBox*, Layo utUnit inlineBoxWidth, LayoutUnit inlineBoxHeight, 318 RoundedRect getBackgroundRoundedRect(const LayoutRect&, InlineFlowBox*, Layo utUnit inlineBoxWidth, LayoutUnit inlineBoxHeight,
306 bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const; 319 bool includeLogicalLeftEdge, bool includeLogicalRightEdge) const;
307 320
308 bool fixedBackgroundPaintsInLocalCoordinates() const; 321 bool fixedBackgroundPaintsInLocalCoordinates() const;
309 322
310 void clipBorderSidePolygon(GraphicsContext*, const RoundedRect& outerBorder, const RoundedRect& innerBorder, 323 void clipBorderSidePolygon(GraphicsContext*, const RoundedRect& outerBorder, const RoundedRect& innerBorder,
311 BoxSide, bool firstEdgeMatches, bool secondEdgeMa tches); 324 BoxSide, bool firstEdgeMatches, bool secondEdgeMa tches);
312 void clipBorderSideForComplexInnerPath(GraphicsContext*, const RoundedRect&, const RoundedRect&, BoxSide, const class BorderEdge[]); 325 void clipBorderSideForComplexInnerPath(GraphicsContext*, const RoundedRect&, const RoundedRect&, BoxSide, const class BorderEdge[]);
313 void paintOneBorderSide(GraphicsContext*, const RenderStyle*, const RoundedR ect& outerBorder, const RoundedRect& innerBorder, 326 void paintOneBorderSide(GraphicsContext*, const RenderStyle*, const RoundedR ect& outerBorder, const RoundedRect& innerBorder,
314 const IntRect& sideRect, BoxSide, BoxSide adjace ntSide1, BoxSide adjacentSide2, const class BorderEdge[], 327 const IntRect& sideRect, BoxSide, BoxSide adjace ntSide1, BoxSide adjacentSide2, const class BorderEdge[],
315 const Path*, BackgroundBleedAvoidance, bool incl udeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias, const Color* o verrideColor = 0); 328 const Path*, BackgroundBleedAvoidance, bool incl udeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias, const Color* o verrideColor = 0);
316 void paintTranslucentBorderSides(GraphicsContext*, const RenderStyle*, const RoundedRect& outerBorder, const RoundedRect& innerBorder, const IntPoint& inner BorderAdjustment, 329 void paintTranslucentBorderSides(GraphicsContext*, const RenderStyle*, const RoundedRect& outerBorder, const RoundedRect& innerBorder, const IntPoint& inner BorderAdjustment,
317 const class BorderEdge[], BorderEdgeFlags, BackgroundBleedAvoidance, boo l includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias = false); 330 const class BorderEdge[], BorderEdgeFlags, BackgroundBleedAvoidance, boo l includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialias = false);
318 void paintBorderSides(GraphicsContext*, const RenderStyle*, const RoundedRec t& outerBorder, const RoundedRect& innerBorder, 331 void paintBorderSides(GraphicsContext*, const RenderStyle*, const RoundedRec t& outerBorder, const RoundedRect& innerBorder,
319 const IntPoint& innerBorderAdjustment, const class BorderEdge[], BorderE dgeFlags, BackgroundBleedAvoidance, 332 const IntPoint& innerBorderAdjustment, const class BorderEdge[], BorderE dgeFlags, BackgroundBleedAvoidance,
320 bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialia s = false, const Color* overrideColor = 0); 333 bool includeLogicalLeftEdge, bool includeLogicalRightEdge, bool antialia s = false, const Color* overrideColor = 0);
321 void drawBoxSideFromPath(GraphicsContext*, const LayoutRect&, const Path&, c onst class BorderEdge[], 334 void drawBoxSideFromPath(GraphicsContext*, const LayoutRect&, const Path&, c onst class BorderEdge[],
322 float thickness, float drawThickness, BoxSide, const RenderStyle*, 335 float thickness, float drawThickness, BoxSide, const RenderStyle*,
323 Color, EBorderStyle, BackgroundBleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge); 336 Color, EBorderStyle, BackgroundBleedAvoidance, bool includeLogicalLeftEdge, bool includeLogicalRightEdge);
324 }; 337 };
325 338
326 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderBoxModelObject, isBoxModelObject()); 339 DEFINE_RENDER_OBJECT_TYPE_CASTS(RenderBoxModelObject, isBoxModelObject());
327 340
328 } // namespace blink 341 } // namespace blink
329 342
330 #endif // RenderBoxModelObject_h 343 #endif // RenderBoxModelObject_h
OLDNEW
« no previous file with comments | « LayoutTests/css3/flexbox/percent-padding-expected.txt ('k') | Source/core/rendering/RenderBoxModelObject.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698