1f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#ifndef CC_BLINK_WEB_COMPOSITOR_SUPPORT_IMPL_H_
603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#define CC_BLINK_WEB_COMPOSITOR_SUPPORT_IMPL_H_
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
9868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/message_loop/message_loop_proxy.h"
1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/cc_blink_export.h"
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "third_party/WebKit/public/platform/WebCompositorAnimationCurve.h"
12868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebCompositorSupport.h"
13868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebLayer.h"
14868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "third_party/WebKit/public/platform/WebTransformOperations.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace blink {
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class WebGraphicsContext3D;
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace cc_blink {
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)class CC_BLINK_EXPORT WebCompositorSupportImpl
23f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)    : public NON_EXPORTED_BASE(blink::WebCompositorSupport) {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WebCompositorSupportImpl();
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  virtual ~WebCompositorSupportImpl();
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebLayer* createLayer();
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebContentLayer* createContentLayer(
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebContentLayerClient* client);
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebExternalTextureLayer* createExternalTextureLayer(
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebExternalTextureLayerClient* client);
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebImageLayer* createImageLayer();
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebNinePatchLayer* createNinePatchLayer();
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebScrollbarLayer* createScrollbarLayer(
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebScrollbar* scrollbar,
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebScrollbarThemePainter painter,
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)      blink::WebScrollbarThemeGeometry*);
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebScrollbarLayer* createSolidColorScrollbarLayer(
40a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      blink::WebScrollbar::Orientation orientation,
41a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      int thumb_thickness,
42a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      int track_start,
43a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      bool is_left_side_vertical_scrollbar);
445f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  virtual blink::WebCompositorAnimation* createAnimation(
455f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      const blink::WebCompositorAnimationCurve& curve,
465f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      blink::WebCompositorAnimation::TargetProperty target,
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      int animation_id);
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebFilterAnimationCurve* createFilterAnimationCurve();
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebFloatAnimationCurve* createFloatAnimationCurve();
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual blink::WebScrollOffsetAnimationCurve*
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      createScrollOffsetAnimationCurve(
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)          blink::WebFloatPoint target_value,
535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)          blink::WebCompositorAnimationCurve::TimingFunctionType
545f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)              timing_function);
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebTransformAnimationCurve* createTransformAnimationCurve();
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebTransformOperations* createTransformOperations();
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  virtual blink::WebFilterOperations* createFilterOperations();
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private:
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(WebCompositorSupportImpl);
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)}  // namespace cc_blink
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#endif  // CC_BLINK_WEB_COMPOSITOR_SUPPORT_IMPL_H_
66