6d7f9148301a058acf9cb51c92d77f9addef3f6c
[WebKit-https.git] / Source / WebKit / chromium / public / platform / 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 "WebLayer.h"
31
32 namespace WebKit {
33 class WebContentLayerClient;
34 class WebContentLayerImpl;
35 struct WebFloatRect;
36
37 class WebContentLayer : public WebLayer {
38 public:
39     WEBKIT_EXPORT static WebContentLayer create(WebContentLayerClient*);
40
41     WebContentLayer() { }
42     WebContentLayer(const WebContentLayer& layer) : WebLayer(layer) { }
43     virtual ~WebContentLayer() { }
44     WebContentLayer& operator=(const WebContentLayer& layer)
45     {
46         WebLayer::assign(layer);
47         return *this;
48     }
49
50     // Sets whether the layer draws its content when compositing.
51     WEBKIT_EXPORT void setDrawsContent(bool);
52     WEBKIT_EXPORT bool drawsContent() const;
53
54     // Sets a region of the layer as invalid, i.e. needs to update its content.
55     // The visible area of the dirty rect will be passed to one or more calls to
56     // WebContentLayerClient::paintContents before the compositing pass occurs.
57     WEBKIT_EXPORT void invalidateRect(const WebFloatRect&);
58
59     // Sets the entire layer as invalid, i.e. needs to update its content.
60     WEBKIT_EXPORT void invalidate();
61
62 #if WEBKIT_IMPLEMENTATION
63     WebContentLayer(const WTF::PassRefPtr<WebContentLayerImpl>&);
64     WebContentLayer& operator=(const WTF::PassRefPtr<WebContentLayerImpl>&);
65     operator WTF::PassRefPtr<WebContentLayerImpl>() const;
66 #endif
67 };
68
69 } // namespace WebKit
70
71 #endif // WebContentLayer_h