2 * Copyright (C) 2011 Google Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in the
12 * documentation and/or other materials provided with the distribution.
14 * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 #ifndef WebExternalTextureLayer_h
27 #define WebExternalTextureLayer_h
30 #include "platform/WebCommon.h"
31 #include "platform/WebFloatRect.h"
34 class WebExternalTextureLayerImpl;
37 // This class represents a layer that renders a texture that is generated
38 // externally (not managed by the WebLayerTreeView).
39 // The texture will be used by the WebLayerTreeView during compositing passes.
40 // When in single-thread mode, this means during WebLayerTreeView::composite().
41 // When using the threaded compositor, this can mean at an arbitrary time until
42 // the WebLayerTreeView is destroyed.
43 class WebExternalTextureLayer : public WebLayer {
45 WEBKIT_EXPORT static WebExternalTextureLayer create(WebLayerClient*);
47 WebExternalTextureLayer() { }
48 WebExternalTextureLayer(const WebExternalTextureLayer& layer) : WebLayer(layer) { }
49 virtual ~WebExternalTextureLayer() { }
50 WebExternalTextureLayer& operator=(const WebExternalTextureLayer& layer)
52 WebLayer::assign(layer);
56 // Sets the texture id that represents the layer, in the namespace of the
57 // compositor context.
58 WEBKIT_EXPORT void setTextureId(unsigned);
59 WEBKIT_EXPORT unsigned textureId() const;
61 // Sets whether or not the texture should be flipped in the Y direction when
63 WEBKIT_EXPORT void setFlipped(bool);
64 WEBKIT_EXPORT bool flipped() const;
66 // Sets the rect in UV space of the texture that is mapped to the layer
68 WEBKIT_EXPORT void setUVRect(const WebFloatRect&);
69 WEBKIT_EXPORT WebFloatRect uvRect() const;
71 #if WEBKIT_IMPLEMENTATION
72 WebExternalTextureLayer(const WTF::PassRefPtr<WebExternalTextureLayerImpl>&);
73 WebExternalTextureLayer& operator=(const WTF::PassRefPtr<WebExternalTextureLayerImpl>&);
74 operator WTF::PassRefPtr<WebExternalTextureLayerImpl>() const;
80 #endif // WebExternalTextureLayer_h