diff options
Diffstat (limited to 'Source/WebKit/blackberry/Api/WebOverlay.h')
-rw-r--r-- | Source/WebKit/blackberry/Api/WebOverlay.h | 130 |
1 files changed, 130 insertions, 0 deletions
diff --git a/Source/WebKit/blackberry/Api/WebOverlay.h b/Source/WebKit/blackberry/Api/WebOverlay.h new file mode 100644 index 000000000..5fe80c423 --- /dev/null +++ b/Source/WebKit/blackberry/Api/WebOverlay.h @@ -0,0 +1,130 @@ +/* + * Copyright (C) 2012 Research In Motion Limited. All rights reserved. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#ifndef WebOverlay_h +#define WebOverlay_h + +#include "BlackBerryGlobal.h" +#include "WebOverlayOverride.h" + +#include <BlackBerryPlatformPrimitives.h> + +namespace WebCore { +class GraphicsLayerClient; +} + +namespace BlackBerry { +namespace WebKit { + +class WebAnimation; +class WebOverlayClient; +class WebOverlayOverride; +class WebOverlayPrivate; +class WebPage; +class WebString; + +/** + * Represents an overlay that is rendered superimposed on a web page. + * + * The WebOverlay is not thread safe, but it is reentrant when used on either + * the WebKit or the compositing thread. This means that overlays can be + * on either of these threads, but each instance must only be used on the + * thread where it was created. The only exception is the override mechanism. + * + * The WebOverlayOverride object returned by WebOverlay::override() can be used + * to override the values of specific properties from the UI thread. + * + * They have the following semantics: If they are called for a specific overlay + * on the UI thread, the value set will override any value set on the WK thread + * until you call resetOverrides(). resetOverrides() is thread safe. + */ +class BLACKBERRY_EXPORT WebOverlay { +public: + WebOverlay(); + WebOverlay(WebCore::GraphicsLayerClient*); + virtual ~WebOverlay(); + + // The position of the layer (the location of its top-left corner in its parent). + Platform::FloatPoint position() const; + void setPosition(const Platform::FloatPoint&); + + // Anchor point: (0, 0) is top left, (1, 1) is bottom right. The anchor point + // affects the origin of the transforms. + Platform::FloatPoint anchorPoint() const; + void setAnchorPoint(const Platform::FloatPoint&); + + // The size of the layer. + Platform::FloatSize size() const; + void setSize(const Platform::FloatSize&); + + // Whether the layer is scaled together with the web page. + bool sizeIsScaleInvariant() const; + void setSizeIsScaleInvariant(bool); + + // Transform can be used to rotate the layer, among other things. + Platform::TransformationMatrix transform() const; + void setTransform(const Platform::TransformationMatrix&); + + // Opacity. Can also be used to temporarily hide a layer. + float opacity() const; + void setOpacity(float); + + // Adds/removes an animation + // Note that WebAnimation and WebString are not thread safe and have to be + // created on the thread where they'll be used. + void addAnimation(const WebAnimation&); + void removeAnimation(const WebString& name); + + WebOverlay* parent() const; + bool addChild(WebOverlay*); + void removeFromParent(); + + void setContentsToImage(const unsigned char* data, const Platform::IntSize& imageSize); + void setContentsToColor(int r, int g, int b, int a); + void setDrawsContent(bool); + + // Will result in a future call to WebOverlayClient::drawContents, if the layer draws custom contents. + void invalidate(); + + // The client can be used to draw layer contents using Skia. + void setClient(WebOverlayClient*); + + // Must be called on UI thread. + WebOverlayOverride* override(); + + /** + * Thread safe. Next time the attributes are changed on the WK thread, make + * those values override any set on the UI thread. + */ + void resetOverrides(); + +private: + friend class WebPage; + friend class WebOverlayPrivate; + + // Disable copy constructor and operator=. + WebOverlay(const WebOverlay&); + WebOverlay& operator=(const WebOverlay&); + + WebOverlayPrivate* d; +}; + +} +} + +#endif // WebOverlay_h |