Home | History | Annotate | Download | only in compositor_bindings
      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 #include "content/renderer/compositor_bindings/web_compositor_support_impl.h"
      6 
      7 #include "base/memory/scoped_ptr.h"
      8 #include "base/message_loop/message_loop_proxy.h"
      9 #include "cc/animation/transform_operations.h"
     10 #include "cc/output/output_surface.h"
     11 #include "cc/output/software_output_device.h"
     12 #include "content/renderer/compositor_bindings/web_animation_impl.h"
     13 #include "content/renderer/compositor_bindings/web_content_layer_impl.h"
     14 #include "content/renderer/compositor_bindings/web_external_texture_layer_impl.h"
     15 #include "content/renderer/compositor_bindings/web_filter_animation_curve_impl.h"
     16 #include "content/renderer/compositor_bindings/web_filter_operations_impl.h"
     17 #include "content/renderer/compositor_bindings/web_float_animation_curve_impl.h"
     18 #include "content/renderer/compositor_bindings/web_image_layer_impl.h"
     19 #include "content/renderer/compositor_bindings/web_layer_impl.h"
     20 #include "content/renderer/compositor_bindings/web_nine_patch_layer_impl.h"
     21 #include "content/renderer/compositor_bindings/web_scroll_offset_animation_curve_impl.h"
     22 #include "content/renderer/compositor_bindings/web_scrollbar_layer_impl.h"
     23 #include "content/renderer/compositor_bindings/web_solid_color_layer_impl.h"
     24 #include "content/renderer/compositor_bindings/web_transform_animation_curve_impl.h"
     25 #include "content/renderer/compositor_bindings/web_transform_operations_impl.h"
     26 
     27 using blink::WebAnimation;
     28 using blink::WebAnimationCurve;
     29 using blink::WebContentLayer;
     30 using blink::WebContentLayerClient;
     31 using blink::WebExternalTextureLayer;
     32 using blink::WebExternalTextureLayerClient;
     33 using blink::WebFilterAnimationCurve;
     34 using blink::WebFilterOperations;
     35 using blink::WebFloatAnimationCurve;
     36 using blink::WebImageLayer;
     37 using blink::WebNinePatchLayer;
     38 using blink::WebLayer;
     39 using blink::WebScrollbar;
     40 using blink::WebScrollbarLayer;
     41 using blink::WebScrollbarThemeGeometry;
     42 using blink::WebScrollbarThemePainter;
     43 #if WEB_SCROLL_OFFSET_ANIMATION_CURVE_IS_DEFINED
     44 using blink::WebScrollOffsetAnimationCurve;
     45 #endif
     46 using blink::WebSolidColorLayer;
     47 using blink::WebTransformAnimationCurve;
     48 using blink::WebTransformOperations;
     49 
     50 namespace content {
     51 
     52 WebCompositorSupportImpl::WebCompositorSupportImpl() {
     53 }
     54 
     55 WebCompositorSupportImpl::~WebCompositorSupportImpl() {
     56 }
     57 
     58 WebLayer* WebCompositorSupportImpl::createLayer() {
     59   return new WebLayerImpl();
     60 }
     61 
     62 WebContentLayer* WebCompositorSupportImpl::createContentLayer(
     63     WebContentLayerClient* client) {
     64   return new WebContentLayerImpl(client);
     65 }
     66 
     67 WebExternalTextureLayer* WebCompositorSupportImpl::createExternalTextureLayer(
     68     WebExternalTextureLayerClient* client) {
     69   return new WebExternalTextureLayerImpl(client);
     70 }
     71 
     72 blink::WebImageLayer* WebCompositorSupportImpl::createImageLayer() {
     73   return new WebImageLayerImpl();
     74 }
     75 
     76 blink::WebNinePatchLayer* WebCompositorSupportImpl::createNinePatchLayer() {
     77   return new WebNinePatchLayerImpl();
     78 }
     79 
     80 WebSolidColorLayer* WebCompositorSupportImpl::createSolidColorLayer() {
     81   return new WebSolidColorLayerImpl();
     82 }
     83 
     84 WebScrollbarLayer* WebCompositorSupportImpl::createScrollbarLayer(
     85     WebScrollbar* scrollbar,
     86     WebScrollbarThemePainter painter,
     87     WebScrollbarThemeGeometry* geometry) {
     88   return new WebScrollbarLayerImpl(scrollbar, painter, geometry);
     89 }
     90 
     91 WebScrollbarLayer* WebCompositorSupportImpl::createSolidColorScrollbarLayer(
     92     WebScrollbar::Orientation orientation,
     93     int thumb_thickness,
     94     int track_start,
     95     bool is_left_side_vertical_scrollbar) {
     96   return new WebScrollbarLayerImpl(orientation,
     97                                    thumb_thickness,
     98                                    track_start,
     99                                    is_left_side_vertical_scrollbar);
    100 }
    101 
    102 WebAnimation* WebCompositorSupportImpl::createAnimation(
    103     const blink::WebAnimationCurve& curve,
    104     blink::WebAnimation::TargetProperty target,
    105     int animation_id) {
    106   return new WebAnimationImpl(curve, target, animation_id, 0);
    107 }
    108 
    109 WebFilterAnimationCurve*
    110 WebCompositorSupportImpl::createFilterAnimationCurve() {
    111   return new WebFilterAnimationCurveImpl();
    112 }
    113 
    114 WebFloatAnimationCurve* WebCompositorSupportImpl::createFloatAnimationCurve() {
    115   return new WebFloatAnimationCurveImpl();
    116 }
    117 
    118 #if WEB_SCROLL_OFFSET_ANIMATION_CURVE_IS_DEFINED
    119 WebScrollOffsetAnimationCurve*
    120 WebCompositorSupportImpl::createScrollOffsetAnimationCurve(
    121     blink::WebFloatPoint target_value,
    122     blink::WebAnimationCurve::TimingFunctionType timing_function) {
    123   return new WebScrollOffsetAnimationCurveImpl(target_value, timing_function);
    124 }
    125 #endif
    126 
    127 WebTransformAnimationCurve*
    128 WebCompositorSupportImpl::createTransformAnimationCurve() {
    129   return new WebTransformAnimationCurveImpl();
    130 }
    131 
    132 WebTransformOperations* WebCompositorSupportImpl::createTransformOperations() {
    133   return new WebTransformOperationsImpl();
    134 }
    135 
    136 WebFilterOperations* WebCompositorSupportImpl::createFilterOperations() {
    137   return new WebFilterOperationsImpl();
    138 }
    139 
    140 }  // namespace content
    141 
    142