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)#include "cc/blink/web_compositor_support_impl.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/message_loop/message_loop_proxy.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/transform_operations.h" 1003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_animation_impl.h" 1103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_content_layer_impl.h" 1203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_external_texture_layer_impl.h" 1303b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_filter_animation_curve_impl.h" 1403b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_filter_operations_impl.h" 1503b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_float_animation_curve_impl.h" 1603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_image_layer_impl.h" 1703b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_layer_impl.h" 1803b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_nine_patch_layer_impl.h" 1903b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_scroll_offset_animation_curve_impl.h" 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_scrollbar_layer_impl.h" 2103b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_transform_animation_curve_impl.h" 2203b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "cc/blink/web_transform_operations_impl.h" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/output/output_surface.h" 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/output/software_output_device.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)using blink::WebCompositorAnimation; 275f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)using blink::WebCompositorAnimationCurve; 28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebContentLayer; 29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebContentLayerClient; 30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebExternalTextureLayer; 31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebExternalTextureLayerClient; 32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebFilterAnimationCurve; 33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebFilterOperations; 34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebFloatAnimationCurve; 35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebImageLayer; 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebNinePatchLayer; 37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebLayer; 38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebScrollbar; 39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebScrollbarLayer; 40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebScrollbarThemeGeometry; 41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebScrollbarThemePainter; 425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)using blink::WebScrollOffsetAnimationCurve; 43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebTransformAnimationCurve; 44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)using blink::WebTransformOperations; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4603b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)namespace cc_blink { 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 48f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)WebCompositorSupportImpl::WebCompositorSupportImpl() { 49f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 51f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)WebCompositorSupportImpl::~WebCompositorSupportImpl() { 52f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)} 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebLayer* WebCompositorSupportImpl::createLayer() { 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new WebLayerImpl(); 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebContentLayer* WebCompositorSupportImpl::createContentLayer( 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContentLayerClient* client) { 602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new WebContentLayerImpl(client); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebExternalTextureLayer* WebCompositorSupportImpl::createExternalTextureLayer( 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebExternalTextureLayerClient* client) { 657dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return new WebExternalTextureLayerImpl(client); 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 68f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)blink::WebImageLayer* WebCompositorSupportImpl::createImageLayer() { 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new WebImageLayerImpl(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 72f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)blink::WebNinePatchLayer* WebCompositorSupportImpl::createNinePatchLayer() { 733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) return new WebNinePatchLayerImpl(); 743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} 753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebScrollbarLayer* WebCompositorSupportImpl::createScrollbarLayer( 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebScrollbar* scrollbar, 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebScrollbarThemePainter painter, 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebScrollbarThemeGeometry* geometry) { 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new WebScrollbarLayerImpl(scrollbar, painter, geometry); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 8358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)WebScrollbarLayer* WebCompositorSupportImpl::createSolidColorScrollbarLayer( 84a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch WebScrollbar::Orientation orientation, 85a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int thumb_thickness, 86a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch int track_start, 87a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch bool is_left_side_vertical_scrollbar) { 88a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch return new WebScrollbarLayerImpl(orientation, 89a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch thumb_thickness, 90a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch track_start, 91a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch is_left_side_vertical_scrollbar); 92a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch} 93a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 945f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)WebCompositorAnimation* WebCompositorSupportImpl::createAnimation( 955f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const blink::WebCompositorAnimationCurve& curve, 965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) blink::WebCompositorAnimation::TargetProperty target, 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) int animation_id) { 985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) return new WebCompositorAnimationImpl(curve, target, animation_id, 0); 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1014e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)WebFilterAnimationCurve* 1024e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)WebCompositorSupportImpl::createFilterAnimationCurve() { 1034e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) return new WebFilterAnimationCurveImpl(); 1044e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)} 1054e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebFloatAnimationCurve* WebCompositorSupportImpl::createFloatAnimationCurve() { 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new WebFloatAnimationCurveImpl(); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)WebScrollOffsetAnimationCurve* 1115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)WebCompositorSupportImpl::createScrollOffsetAnimationCurve( 1125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) blink::WebFloatPoint target_value, 1135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) blink::WebCompositorAnimationCurve::TimingFunctionType timing_function) { 1145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return new WebScrollOffsetAnimationCurveImpl(target_value, timing_function); 1155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)WebTransformAnimationCurve* 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebCompositorSupportImpl::createTransformAnimationCurve() { 1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new WebTransformAnimationCurveImpl(); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebTransformOperations* WebCompositorSupportImpl::createTransformOperations() { 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new WebTransformOperationsImpl(); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 126eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochWebFilterOperations* WebCompositorSupportImpl::createFilterOperations() { 127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch return new WebFilterOperationsImpl(); 128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch} 129eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch 13003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)} // namespace cc_blink 131