Index: ui/views/animation/ink_drop_painted_layer_delegates.h |
diff --git a/ui/views/animation/ink_drop_painted_layer_delegates.h b/ui/views/animation/ink_drop_painted_layer_delegates.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..feb2921b8a6a34fde7b136edb5b4487a9dc7a935 |
--- /dev/null |
+++ b/ui/views/animation/ink_drop_painted_layer_delegates.h |
@@ -0,0 +1,86 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef UI_VIEWS_ANIMATION_INK_DROP_PAINTED_LAYER_DELEGATES_H_ |
+#define UI_VIEWS_ANIMATION_INK_DROP_PAINTED_LAYER_DELEGATES_H_ |
+ |
+#include "base/callback.h" |
+#include "base/macros.h" |
+#include "third_party/skia/include/core/SkColor.h" |
+#include "ui/compositor/layer_delegate.h" |
+#include "ui/gfx/geometry/point_f.h" |
+#include "ui/gfx/geometry/rect.h" |
+#include "ui/gfx/geometry/size.h" |
+ |
+namespace views { |
+ |
+// Base ui::LayerDelegate stub that can be extended to paint shapes of a |
+// specific color. |
+class BasePaintedLayerDelegate : public ui::LayerDelegate { |
+ public: |
+ ~BasePaintedLayerDelegate() override; |
+ |
+ SkColor color() const { return color_; } |
+ |
+ // Returns the center point of the painted shape. |
+ virtual gfx::PointF GetCenterPoint() const = 0; |
+ |
+ // ui::LayerDelegate: |
+ void OnDelegatedFrameDamage(const gfx::Rect& damage_rect_in_dip) override; |
+ void OnDeviceScaleFactorChanged(float device_scale_factor) override; |
+ base::Closure PrepareForLayerBoundsChange() override; |
+ |
+ protected: |
+ explicit BasePaintedLayerDelegate(SkColor color); |
+ |
+ private: |
+ // The color to paint. |
+ SkColor color_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(BasePaintedLayerDelegate); |
+}; |
+ |
+// A BasePaintedLayerDelegate that paints a circle of a specified color and |
+// radius. |
+class CircleLayerDelegate : public BasePaintedLayerDelegate { |
+ public: |
+ CircleLayerDelegate(SkColor color, int radius); |
+ ~CircleLayerDelegate() override; |
+ |
+ int radius() const { return radius_; } |
+ |
+ // BasePaintedLayerDelegate: |
+ gfx::PointF GetCenterPoint() const override; |
+ void OnPaintLayer(const ui::PaintContext& context) override; |
+ |
+ private: |
+ // The radius of the circle. |
+ int radius_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(CircleLayerDelegate); |
+}; |
+ |
+// A BasePaintedLayerDelegate that paints a rectangle of a specified color and |
+// size. |
+class RectangleLayerDelegate : public BasePaintedLayerDelegate { |
+ public: |
+ RectangleLayerDelegate(SkColor color, gfx::Size size); |
+ ~RectangleLayerDelegate() override; |
+ |
+ const gfx::Size& size() const { return size_; } |
+ |
+ // BasePaintedLayerDelegate: |
+ gfx::PointF GetCenterPoint() const override; |
+ void OnPaintLayer(const ui::PaintContext& context) override; |
+ |
+ private: |
+ // The size of the rectangle. |
+ gfx::Size size_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(RectangleLayerDelegate); |
+}; |
+ |
+} // namespace views |
+ |
+#endif // UI_VIEWS_ANIMATION_INK_DROP_PAINTED_LAYER_DELEGATES_H_ |