1/*
2 * Copyright (C) 2012 Research In Motion Limited. All rights reserved.
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
8 *
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12 * Lesser General Public License for more details.
13 *
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
17 */
18
19#include "config.h"
20
21#include "WebOverlayOverride.h"
22
23#if USE(ACCELERATED_COMPOSITING)
24#include "WebAnimation.h"
25#include "WebAnimation_p.h"
26#include "WebOverlay_p.h"
27
28#include <BlackBerryPlatformMessageClient.h>
29#include <BlackBerryPlatformString.h>
30#include <wtf/CurrentTime.h>
31
32namespace BlackBerry {
33namespace WebKit {
34
35using namespace WebCore;
36
37WebOverlayOverride::WebOverlayOverride(WebOverlayPrivate* d)
38    : d(d)
39{
40}
41
42WebOverlayOverride::~WebOverlayOverride()
43{
44}
45
46void WebOverlayOverride::setPosition(const Platform::FloatPoint& position)
47{
48    d->layerCompositingThread()->override()->setPosition(position);
49    d->scheduleCompositingRun();
50}
51
52void WebOverlayOverride::setAnchorPoint(const Platform::FloatPoint& anchor)
53{
54    d->layerCompositingThread()->override()->setAnchorPoint(anchor);
55    d->scheduleCompositingRun();
56}
57
58void WebOverlayOverride::setSize(const Platform::FloatSize& size)
59{
60    d->layerCompositingThread()->override()->setBounds(IntSize(size.width(), size.height()));
61    d->scheduleCompositingRun();
62}
63
64void WebOverlayOverride::setTransform(const Platform::TransformationMatrix& transform)
65{
66    d->layerCompositingThread()->override()->setTransform(reinterpret_cast<const TransformationMatrix&>(transform));
67    d->scheduleCompositingRun();
68}
69
70void WebOverlayOverride::setOpacity(float opacity)
71{
72    d->layerCompositingThread()->override()->setOpacity(opacity);
73    d->scheduleCompositingRun();
74}
75
76void WebOverlayOverride::addAnimation(const WebAnimation& animation)
77{
78    LayerCompositingThread* layerCompositingThread = d->layerCompositingThread();
79    LayerOverride* override = layerCompositingThread->override();
80
81    IntSize boxSize = override->isBoundsSet() ? override->bounds() : layerCompositingThread->bounds();
82    RefPtr<LayerAnimation> layerAnimation = LayerAnimation::create(animation.d->keyframes, boxSize, animation.d->animation.get(), animation.d->name, 0.0);
83    layerAnimation->setStartTime(currentTime());
84
85    override->addAnimation(layerAnimation);
86    d->scheduleCompositingRun();
87}
88
89void WebOverlayOverride::removeAnimation(const BlackBerry::Platform::String& name)
90{
91    d->layerCompositingThread()->override()->removeAnimation(name);
92    d->scheduleCompositingRun();
93}
94
95}
96}
97#else // USE(ACCELERATED_COMPOSITING)
98namespace BlackBerry {
99namespace WebKit {
100
101WebOverlayOverride::WebOverlayOverride(WebOverlayPrivate*, bool)
102{
103}
104
105WebOverlayOverride::~WebOverlayOverride()
106{
107}
108
109void WebOverlayOverride::setPosition(const Platform::FloatPoint&)
110{
111}
112
113void WebOverlayOverride::setAnchorPoint(const Platform::FloatPoint&)
114{
115}
116
117void WebOverlayOverride::setSize(const Platform::FloatSize&)
118{
119}
120
121void WebOverlayOverride::setTransform(const Platform::TransformationMatrix&)
122{
123}
124
125void WebOverlayOverride::setOpacity(float)
126{
127}
128
129void WebOverlayOverride::addAnimation(const WebAnimation&)
130{
131}
132
133void WebOverlayOverride::removeAnimation(const BlackBerry::Platform::String&)
134{
135}
136
137}
138}
139#endif // USE(ACCELERATED_COMPOSITING)
140