From 1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c Mon Sep 17 00:00:00 2001 From: Lorry Tar Creator Date: Tue, 27 Jun 2017 06:07:23 +0000 Subject: webkitgtk-2.16.5 --- Source/WebCore/rendering/shapes/Shape.h | 46 ++++++++++++++++----------------- 1 file changed, 22 insertions(+), 24 deletions(-) (limited to 'Source/WebCore/rendering/shapes/Shape.h') diff --git a/Source/WebCore/rendering/shapes/Shape.h b/Source/WebCore/rendering/shapes/Shape.h index ab71d5568..f810ff5ee 100644 --- a/Source/WebCore/rendering/shapes/Shape.h +++ b/Source/WebCore/rendering/shapes/Shape.h @@ -12,7 +12,7 @@ * copyright notice, this list of conditions and the following * disclaimer in the documentation and/or other materials * provided with the distribution. - * + * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS @@ -27,33 +27,37 @@ * OF THE POSSIBILITY OF SUCH DAMAGE. */ -#ifndef Shape_h -#define Shape_h +#pragma once -#include "BasicShapes.h" #include "LayoutRect.h" #include "Path.h" -#include "RoundedRect.h" -#include "StyleImage.h" #include "WritingMode.h" -#include -#include namespace WebCore { struct LineSegment { + LineSegment() + : logicalLeft(0) + , logicalRight(0) + , isValid(false) + { + } + LineSegment(float logicalLeft, float logicalRight) : logicalLeft(logicalLeft) , logicalRight(logicalRight) + , isValid(true) { } - LayoutUnit logicalLeft; - LayoutUnit logicalRight; + float logicalLeft; + float logicalRight; + bool isValid; }; -typedef Vector SegmentList; - +class BasicShape; +class Image; +class RoundedRect; // A representation of a BasicShape that enables layout code to determine how to break a line up into segments // that will fit within or around a shape. The line is defined by a pair of logical Y coordinates and the @@ -61,32 +65,29 @@ typedef Vector SegmentList; // physical coordinates. class Shape { + WTF_MAKE_FAST_ALLOCATED; public: struct DisplayPaths { Path shape; Path marginShape; }; - static PassOwnPtr createShape(const BasicShape*, const LayoutSize& logicalBoxSize, WritingMode, Length margin, Length padding); - static PassOwnPtr createRasterShape(const StyleImage&, float threshold, const LayoutRect& imageRect, const LayoutSize& logicalBoxSize, WritingMode, Length margin, Length padding); - static PassOwnPtr createLayoutBoxShape(const RoundedRect&, WritingMode, Length margin, Length padding); + static std::unique_ptr createShape(const BasicShape&, const LayoutSize& logicalBoxSize, WritingMode, float margin); + static std::unique_ptr createRasterShape(Image*, float threshold, const LayoutRect& imageRect, const LayoutRect& marginRect, WritingMode, float margin); + static std::unique_ptr createBoxShape(const RoundedRect&, WritingMode, float margin); virtual ~Shape() { } virtual LayoutRect shapeMarginLogicalBoundingBox() const = 0; - virtual LayoutRect shapePaddingLogicalBoundingBox() const = 0; virtual bool isEmpty() const = 0; - virtual void getIncludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&) const = 0; - virtual void getExcludedIntervals(LayoutUnit logicalTop, LayoutUnit logicalHeight, SegmentList&) const = 0; - virtual bool firstIncludedIntervalLogicalTop(LayoutUnit minLogicalIntervalTop, const FloatSize& minLogicalIntervalSize, LayoutUnit& result) const = 0; + virtual LineSegment getExcludedInterval(LayoutUnit logicalTop, LayoutUnit logicalHeight) const = 0; + bool lineOverlapsShapeMarginBounds(LayoutUnit lineTop, LayoutUnit lineHeight) const { return lineOverlapsBoundingBox(lineTop, lineHeight, shapeMarginLogicalBoundingBox()); } - bool lineOverlapsShapePaddingBounds(LayoutUnit lineTop, LayoutUnit lineHeight) const { return lineOverlapsBoundingBox(lineTop, lineHeight, shapePaddingLogicalBoundingBox()); } virtual void buildDisplayPaths(DisplayPaths&) const = 0; protected: float shapeMargin() const { return m_margin; } - float shapePadding() const { return m_padding; } private: bool lineOverlapsBoundingBox(LayoutUnit lineTop, LayoutUnit lineHeight, const LayoutRect& rect) const @@ -98,9 +99,6 @@ private: WritingMode m_writingMode; float m_margin; - float m_padding; }; } // namespace WebCore - -#endif // Shape_h -- cgit v1.2.1