1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
/*
* Copyright (C) 2012, 2013 Research In Motion Limited. All rights reserved.
*/
#include "config.h"
#include "WebKitThreadViewportAccessor.h"
#include "WebPage_p.h"
#include <BlackBerryPlatformMessageClient.h>
#include <BlackBerryPlatformPrimitives.h>
using BlackBerry::Platform::IntPoint;
using BlackBerry::Platform::IntSize;
using BlackBerry::Platform::ViewportAccessor;
namespace BlackBerry {
namespace WebKit {
WebKitThreadViewportAccessor::WebKitThreadViewportAccessor(WebPagePrivate* webPagePrivate)
: m_webPagePrivate(webPagePrivate)
{
}
IntSize WebKitThreadViewportAccessor::pixelContentsSize() const
{
ASSERT(Platform::webKitThreadMessageClient()->isCurrentThread());
double scaleFactor = scale();
if (scaleFactor != 1.0) {
// Round down to avoid showing partially rendered pixels.
IntSize size = documentContentsSize();
return IntSize(
floorf(size.width() * scaleFactor),
floorf(size.height() * scaleFactor));
}
return documentContentsSize();
}
IntSize WebKitThreadViewportAccessor::documentContentsSize() const
{
ASSERT(Platform::webKitThreadMessageClient()->isCurrentThread());
return m_webPagePrivate->contentsSize();
}
IntPoint WebKitThreadViewportAccessor::pixelScrollPosition() const
{
ASSERT(Platform::webKitThreadMessageClient()->isCurrentThread());
return roundToPixelFromDocumentContents(documentScrollPosition());
}
IntPoint WebKitThreadViewportAccessor::documentScrollPosition() const
{
ASSERT(Platform::webKitThreadMessageClient()->isCurrentThread());
return m_webPagePrivate->scrollPosition();
}
IntSize WebKitThreadViewportAccessor::pixelViewportSize() const
{
ASSERT(Platform::webKitThreadMessageClient()->isCurrentThread());
return m_webPagePrivate->transformedActualVisibleSize();
}
IntSize WebKitThreadViewportAccessor::documentViewportSize() const
{
ASSERT(Platform::webKitThreadMessageClient()->isCurrentThread());
return roundToDocumentFromPixelContents(pixelViewportRect()).size();
}
IntPoint WebKitThreadViewportAccessor::destinationSurfaceOffset() const
{
// FIXME: This should somehow get its offset from a reliable source.
return IntPoint(0, 0);
}
double WebKitThreadViewportAccessor::scale() const
{
ASSERT(Platform::webKitThreadMessageClient()->isCurrentThread());
return m_webPagePrivate->currentScale();
}
} // namespace WebKit
} // namespace BlackBerry
|