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
29 #include "WebCommon.h"
30 #include "WebFloatRect.h"
34 class TextureLayerChromium;
39 // This class represents a layer that renders a texture that is generated
40 // externally (not managed by the WebLayerTreeView).
41 // The texture will be used by the WebLayerTreeView during compositing passes.
42 // When in single-thread mode, this means during WebLayerTreeView::composite().
43 // When using the threaded compositor, this can mean at an arbitrary time until
44 // the WebLayerTreeView is destroyed.
45 class WebExternalTextureLayer : public WebLayer {
47 WEBKIT_EXPORT static WebExternalTextureLayer create();
49 WebExternalTextureLayer() { }
50 virtual ~WebExternalTextureLayer() { }
52 // Sets the texture id that represents the layer, in the namespace of the
53 // compositor context.
54 WEBKIT_EXPORT void setTextureId(unsigned);
56 // Sets the IO surface id that represents this layer. setTextureId() and setIOSurfaceProperties() are mutually
57 // exclusive - a layer can be either backed by a texture or an IO surface, but not both.
58 WEBKIT_EXPORT void setIOSurfaceProperties(const WebSize&, unsigned ioSurfaceId);
60 // Sets whether or not the texture should be flipped in the Y direction when
62 WEBKIT_EXPORT void setFlipped(bool);
63 WEBKIT_EXPORT bool flipped() const;
65 // Sets the rect in UV space of the texture that is mapped to the layer
67 WEBKIT_EXPORT void setUVRect(const WebFloatRect&);
68 WEBKIT_EXPORT WebFloatRect uvRect() const;
71 #if WEBKIT_IMPLEMENTATION
72 explicit WebExternalTextureLayer(PassRefPtr<WebCore::TextureLayerChromium>);
78 #endif // WebExternalTextureLayer_h