summaryrefslogtreecommitdiffstats
path: root/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp
diff options
context:
space:
mode:
authorweinig@apple.com <weinig@apple.com@bbb929c8-8fbe-4397-9dbb-9b2b20218538>2010-12-28 00:01:08 +0000
committerweinig@apple.com <weinig@apple.com@bbb929c8-8fbe-4397-9dbb-9b2b20218538>2010-12-28 00:01:08 +0000
commitd00ba4ae4293e9559ef88bb51e83a239bd3cd6d4 (patch)
tree8a2dbae41927f9d28eb1e89776249edb12fd3b82 /third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp
parentabe50609d07dc5a55bc345a6e565c257ca2cad92 (diff)
downloadchromium_src-d00ba4ae4293e9559ef88bb51e83a239bd3cd6d4.zip
chromium_src-d00ba4ae4293e9559ef88bb51e83a239bd3cd6d4.tar.gz
chromium_src-d00ba4ae4293e9559ef88bb51e83a239bd3cd6d4.tar.bz2
WebKit2: Add API for getting snapshots
https://bugs.webkit.org/show_bug.cgi?id=51656 Reviewed by Anders Carlsson. * Shared/API/c/WKBase.h: * Shared/API/c/WKImage.cpp: Added. (WKImageGetTypeID): (WKImageCreate): (WKImageGetSize): * Shared/API/c/WKImage.h: Added. * Shared/WebImage.cpp: Added. (WebKit::WebImage::create): (WebKit::WebImage::size): * Shared/WebImage.h: Added. (WebKit::WebImage::backingStore): (WebKit::WebImage::WebImage): (WebKit::WebImage::type): Add a general purpose API image class. * Shared/API/c/cg: Added. * Shared/API/c/cg/WKImageCG.cpp: Added. (WKImageCreateCGImage): * Shared/API/c/cg/WKImageCG.h: Added. Add function to convert a WKImageRef to a CGImageRef for platforms that use CG. * Shared/API/c/WKSharedAPICast.h: (WebKit::toFloatRect): (WebKit::toIntSize): (WebKit::toIntPoint): (WebKit::toIntRect): (WebKit::toImageOptions): Make conversion functions that are ambiguous more explicit. * Shared/APIObject.h: * Shared/BackingStore.h: (WebKit::BackingStore::isBackedBySharedMemory): * Shared/ImageOptions.h: Added. * Shared/UserMessageCoders.h: (WebKit::UserMessageEncoder::baseEncode): (WebKit::UserMessageDecoder::baseDecode): Allow a WKImageRef to be passed in user messages. Right now, it only works if the image is sharable. * UIProcess/API/C/WKPage.cpp: (WKPageScaleWebView): * UIProcess/WebUIClient.cpp: (WebKit::WebUIClient::windowFrame): Use the more explicit conversion function name. * WebProcess/InjectedBundle/API/c/WKBundlePage.cpp: (WKBundlePageCreateSnapshotInViewCoordinates): (WKBundlePageCreateSnapshotInDocumentCoordinates): * WebProcess/InjectedBundle/API/c/WKBundlePage.h: * WebProcess/InjectedBundle/API/c/WKBundlePageOverlay.cpp: (WKBundlePageOverlaySetNeedsDisplay): * WebProcess/WebPage/WebPage.cpp: (WebKit::WebPage::snapshotInViewCoordinates): (WebKit::WebPage::snapshotInDocumentCoordinates): Add function to take the snapshot. * WebProcess/WebPage/WebPage.h: * WebKit2.pro: * WebKit2.xcodeproj/project.pbxproj: * win/WebKit2.vcproj: Add new files. git-svn-id: svn://svn.chromium.org/blink/trunk@74698 bbb929c8-8fbe-4397-9dbb-9b2b20218538
Diffstat (limited to 'third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp')
-rw-r--r--third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp41
1 files changed, 40 insertions, 1 deletions
diff --git a/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp b/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp
index 4df97f1..571321c 100644
--- a/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp
+++ b/third_party/WebKit/WebKit2/WebProcess/WebPage/WebPage.cpp
@@ -41,14 +41,15 @@
#include "WebContextMenuClient.h"
#include "WebContextMessages.h"
#include "WebCoreArgumentCoders.h"
-#include "WebOpenPanelResultListener.h"
#include "WebDragClient.h"
#include "WebEditorClient.h"
#include "WebEvent.h"
#include "WebEventConversion.h"
#include "WebFrame.h"
+#include "WebImage.h"
#include "WebInspector.h"
#include "WebInspectorClient.h"
+#include "WebOpenPanelResultListener.h"
#include "WebPageCreationParameters.h"
#include "WebPageGroupProxy.h"
#include "WebPageProxyMessages.h"
@@ -587,6 +588,44 @@ void WebPage::uninstallPageOverlay(PageOverlay* pageOverlay)
m_drawingArea->setNeedsDisplay(IntRect(IntPoint(0, 0), m_viewSize));
}
+PassRefPtr<WebImage> WebPage::snapshotInViewCoordinates(const IntRect& rect, ImageOptions options)
+{
+ FrameView* frameView = m_mainFrame->coreFrame()->view();
+ if (!frameView)
+ return 0;
+
+ frameView->updateLayoutAndStyleIfNeededRecursive();
+
+ RefPtr<WebImage> snapshot = WebImage::create(rect.size(), options);
+ OwnPtr<WebCore::GraphicsContext> graphicsContext = snapshot->backingStore()->createGraphicsContext();
+
+ graphicsContext->save();
+ graphicsContext->translate(-rect.x(), -rect.y());
+ frameView->paint(graphicsContext.get(), rect);
+ graphicsContext->restore();
+
+ return snapshot.release();
+}
+
+PassRefPtr<WebImage> WebPage::snapshotInDocumentCoordinates(const IntRect& rect, ImageOptions options)
+{
+ FrameView* frameView = m_mainFrame->coreFrame()->view();
+ if (!frameView)
+ return 0;
+
+ frameView->updateLayoutAndStyleIfNeededRecursive();
+
+ RefPtr<WebImage> snapshot = WebImage::create(rect.size(), options);
+ OwnPtr<WebCore::GraphicsContext> graphicsContext = snapshot->backingStore()->createGraphicsContext();
+
+ graphicsContext->save();
+ graphicsContext->translate(-rect.x(), -rect.y());
+ frameView->paintContents(graphicsContext.get(), rect);
+ graphicsContext->restore();
+
+ return snapshot.release();
+}
+
void WebPage::pageDidScroll()
{
// Hide the find indicator.