7336bfabcd74618218b9dedeba01bc2732326c67
[WebKit-https.git] / Source / Platform / chromium / public / WebContentLayer.h
1 /*
2  * Copyright (C) 2011 Google Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
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.
13  *
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.
24  */
25
26 #ifndef WebContentLayer_h
27 #define WebContentLayer_h
28
29 #include "WebCommon.h"
30 #include "WebScrollableLayer.h"
31
32 namespace WebCore {
33 class ContentLayerChromium;
34 }
35
36 namespace WebKit {
37 class WebContentLayerClient;
38 class WebContentLayerImpl;
39
40 class WebContentLayer : public WebScrollableLayer {
41 public:
42     WEBKIT_EXPORT static WebContentLayer create(WebContentLayerClient*);
43
44     WebContentLayer() { }
45     WebContentLayer(const WebContentLayer& layer) : WebScrollableLayer(layer) { }
46     virtual ~WebContentLayer() { }
47     WebContentLayer& operator=(const WebContentLayer& layer)
48     {
49         WebLayer::assign(layer);
50         return *this;
51     }
52
53     // Called when the WebContentLayerClient is going away and should not be used.
54     WEBKIT_EXPORT void clearClient();
55
56     // Set to true if the backside of this layer's contents should be visible when composited.
57     // Defaults to false.
58     WEBKIT_EXPORT void setDoubleSided(bool);
59
60     // Set to apply a scale factor used when painting and drawing this layer's content. Defaults to 1.0.
61     WEBKIT_EXPORT void setContentsScale(float);
62
63     // Set to render text in this layer with LCD antialiasing. Only set if you know that this layer will be
64     // drawn in a way where this makes sense - i.e. opaque background, not rotated or scaled, etc.
65     // Defaults to false;
66     WEBKIT_EXPORT void setUseLCDText(bool);
67
68     // Set to draw a system-defined checkerboard if the compositor would otherwise draw a tile in this layer
69     // and the actual contents are unavailable. If false, the compositor will draw the layer's background color
70     // for these tiles.
71     // Defaults to false.
72     WEBKIT_EXPORT void setDrawCheckerboardForMissingTiles(bool);
73
74 #if WEBKIT_IMPLEMENTATION
75     WebContentLayer(const WTF::PassRefPtr<WebCore::ContentLayerChromium>&);
76     WebContentLayer& operator=(const WTF::PassRefPtr<WebCore::ContentLayerChromium>&);
77     operator WTF::PassRefPtr<WebCore::ContentLayerChromium>() const;
78 #endif
79 };
80
81 } // namespace WebKit
82
83 #endif // WebContentLayer_h