1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CC_BLINK_WEB_COMPOSITOR_SUPPORT_IMPL_H_
6#define CC_BLINK_WEB_COMPOSITOR_SUPPORT_IMPL_H_
7
8#include "base/memory/ref_counted.h"
9#include "base/message_loop/message_loop_proxy.h"
10#include "cc/blink/cc_blink_export.h"
11#include "third_party/WebKit/public/platform/WebCompositorAnimationCurve.h"
12#include "third_party/WebKit/public/platform/WebCompositorSupport.h"
13#include "third_party/WebKit/public/platform/WebLayer.h"
14#include "third_party/WebKit/public/platform/WebTransformOperations.h"
15
16namespace blink {
17class WebGraphicsContext3D;
18}
19
20namespace cc_blink {
21
22class CC_BLINK_EXPORT WebCompositorSupportImpl
23    : public NON_EXPORTED_BASE(blink::WebCompositorSupport) {
24 public:
25  WebCompositorSupportImpl();
26  virtual ~WebCompositorSupportImpl();
27
28  virtual blink::WebLayer* createLayer();
29  virtual blink::WebContentLayer* createContentLayer(
30      blink::WebContentLayerClient* client);
31  virtual blink::WebExternalTextureLayer* createExternalTextureLayer(
32      blink::WebExternalTextureLayerClient* client);
33  virtual blink::WebImageLayer* createImageLayer();
34  virtual blink::WebNinePatchLayer* createNinePatchLayer();
35  virtual blink::WebScrollbarLayer* createScrollbarLayer(
36      blink::WebScrollbar* scrollbar,
37      blink::WebScrollbarThemePainter painter,
38      blink::WebScrollbarThemeGeometry*);
39  virtual blink::WebScrollbarLayer* createSolidColorScrollbarLayer(
40      blink::WebScrollbar::Orientation orientation,
41      int thumb_thickness,
42      int track_start,
43      bool is_left_side_vertical_scrollbar);
44  virtual blink::WebCompositorAnimation* createAnimation(
45      const blink::WebCompositorAnimationCurve& curve,
46      blink::WebCompositorAnimation::TargetProperty target,
47      int animation_id);
48  virtual blink::WebFilterAnimationCurve* createFilterAnimationCurve();
49  virtual blink::WebFloatAnimationCurve* createFloatAnimationCurve();
50  virtual blink::WebScrollOffsetAnimationCurve*
51      createScrollOffsetAnimationCurve(
52          blink::WebFloatPoint target_value,
53          blink::WebCompositorAnimationCurve::TimingFunctionType
54              timing_function);
55  virtual blink::WebTransformAnimationCurve* createTransformAnimationCurve();
56  virtual blink::WebTransformOperations* createTransformOperations();
57  virtual blink::WebFilterOperations* createFilterOperations();
58
59 private:
60  DISALLOW_COPY_AND_ASSIGN(WebCompositorSupportImpl);
61};
62
63}  // namespace cc_blink
64
65#endif  // CC_BLINK_WEB_COMPOSITOR_SUPPORT_IMPL_H_
66