diff options
Diffstat (limited to 'Source/WebCore/rendering/style/ShapeValue.h')
-rw-r--r-- | Source/WebCore/rendering/style/ShapeValue.h | 88 |
1 files changed, 35 insertions, 53 deletions
diff --git a/Source/WebCore/rendering/style/ShapeValue.h b/Source/WebCore/rendering/style/ShapeValue.h index 53c11a7e8..b749a26c0 100644 --- a/Source/WebCore/rendering/style/ShapeValue.h +++ b/Source/WebCore/rendering/style/ShapeValue.h @@ -1,5 +1,6 @@ /* * Copyright (C) 2012 Adobe Systems Incorporated. All rights reserved. + * Copyright (C) 2014-2017 Apple Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions @@ -27,92 +28,73 @@ * SUCH DAMAGE. */ -#ifndef ShapeValue_h -#define ShapeValue_h +#pragma once #include "BasicShapes.h" -#include "CSSValueKeywords.h" -#include "CachedImage.h" #include "StyleImage.h" -#include <wtf/PassRefPtr.h> namespace WebCore { class ShapeValue : public RefCounted<ShapeValue> { public: - enum ShapeValueType { - // The None value is defined by a null ShapeValue* - Shape, - Box, - Outside, - Image - }; - - static PassRefPtr<ShapeValue> createShapeValue(PassRefPtr<BasicShape> shape, LayoutBox layoutBox) - { - return adoptRef(new ShapeValue(shape, layoutBox)); - } - - static PassRefPtr<ShapeValue> createLayoutBoxValue(LayoutBox layoutBox) + static Ref<ShapeValue> create(Ref<BasicShape>&& shape, CSSBoxType cssBox) { - return adoptRef(new ShapeValue(layoutBox)); + return adoptRef(*new ShapeValue(WTFMove(shape), cssBox)); } - static PassRefPtr<ShapeValue> createOutsideValue() + static Ref<ShapeValue> create(CSSBoxType boxShape) { - return adoptRef(new ShapeValue(Outside)); + return adoptRef(*new ShapeValue(boxShape)); } - static PassRefPtr<ShapeValue> createImageValue(PassRefPtr<StyleImage> image) + static Ref<ShapeValue> create(Ref<StyleImage>&& image) { - return adoptRef(new ShapeValue(image)); + return adoptRef(*new ShapeValue(WTFMove(image))); } - ShapeValueType type() const { return m_type; } + enum class Type { Shape, Box, Image }; + Type type() const { return m_type; } BasicShape* shape() const { return m_shape.get(); } - LayoutBox layoutBox() const { return m_layoutBox; } - + CSSBoxType cssBox() const { return m_cssBox; } StyleImage* image() const { return m_image.get(); } - bool isImageValid() const { return image() && image()->cachedImage() && image()->cachedImage()->hasImage(); } - void setImage(PassRefPtr<StyleImage> image) + bool isImageValid() const; + + void setImage(Ref<StyleImage>&& image) { - ASSERT(type() == Image); - if (m_image != image) - m_image = image; + ASSERT(m_type == Type::Image); + m_image = WTFMove(image); } - bool operator==(const ShapeValue& other) const { return type() == other.type(); } - -private: - ShapeValue(PassRefPtr<BasicShape> shape, LayoutBox layoutBox) - : m_type(Shape) - , m_shape(shape) - , m_layoutBox(layoutBox) + bool operator==(const ShapeValue&) const; + bool operator!=(const ShapeValue& other) const { + return !(*this == other); } - ShapeValue(ShapeValueType type) - : m_type(type) - , m_layoutBox(BoxMissing) + +private: + ShapeValue(Ref<BasicShape>&& shape, CSSBoxType cssBox) + : m_type(Type::Shape) + , m_shape(WTFMove(shape)) + , m_cssBox(cssBox) { } - ShapeValue(PassRefPtr<StyleImage> image) - : m_type(Image) - , m_image(image) - , m_layoutBox(BoxMissing) + + explicit ShapeValue(Ref<StyleImage>&& image) + : m_type(Type::Image) + , m_image(WTFMove(image)) { } - ShapeValue(LayoutBox layoutBox) - : m_type(Box) - , m_layoutBox(layoutBox) + + explicit ShapeValue(CSSBoxType cssBox) + : m_type(Type::Box) + , m_cssBox(cssBox) { } - ShapeValueType m_type; + Type m_type; RefPtr<BasicShape> m_shape; RefPtr<StyleImage> m_image; - LayoutBox m_layoutBox; + CSSBoxType m_cssBox { BoxMissing }; }; } - -#endif |