| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> | 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> |
| 3 * 1999 Lars Knoll <knoll@kde.org> | 3 * 1999 Lars Knoll <knoll@kde.org> |
| 4 * 1999 Antti Koivisto <koivisto@kde.org> | 4 * 1999 Antti Koivisto <koivisto@kde.org> |
| 5 * 2000 Simon Hausmann <hausmann@kde.org> | 5 * 2000 Simon Hausmann <hausmann@kde.org> |
| 6 * 2000 Stefan Schimanski <1Stein@gmx.de> | 6 * 2000 Stefan Schimanski <1Stein@gmx.de> |
| 7 * 2001 George Staikos <staikos@kde.org> | 7 * 2001 George Staikos <staikos@kde.org> |
| 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
| 9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com> | 9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com> |
| 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 61 #include "core/page/Page.h" | 61 #include "core/page/Page.h" |
| 62 #include "core/page/scrolling/ScrollingCoordinator.h" | 62 #include "core/page/scrolling/ScrollingCoordinator.h" |
| 63 #include "core/paint/DeprecatedPaintLayer.h" | 63 #include "core/paint/DeprecatedPaintLayer.h" |
| 64 #include "core/paint/TransformRecorder.h" | 64 #include "core/paint/TransformRecorder.h" |
| 65 #include "core/svg/SVGDocumentExtensions.h" | 65 #include "core/svg/SVGDocumentExtensions.h" |
| 66 #include "platform/DragImage.h" | 66 #include "platform/DragImage.h" |
| 67 #include "platform/PluginScriptForbiddenScope.h" | 67 #include "platform/PluginScriptForbiddenScope.h" |
| 68 #include "platform/RuntimeEnabledFeatures.h" | 68 #include "platform/RuntimeEnabledFeatures.h" |
| 69 #include "platform/ScriptForbiddenScope.h" | 69 #include "platform/ScriptForbiddenScope.h" |
| 70 #include "platform/graphics/GraphicsContext.h" | 70 #include "platform/graphics/GraphicsContext.h" |
| 71 #include "platform/graphics/ImageBuffer.h" | 71 #include "platform/graphics/StaticBitmapImage.h" |
| 72 #include "platform/graphics/paint/ClipRecorder.h" | 72 #include "platform/graphics/paint/ClipRecorder.h" |
| 73 #include "platform/graphics/paint/SkPictureBuilder.h" | 73 #include "platform/graphics/paint/SkPictureBuilder.h" |
| 74 #include "platform/text/TextStream.h" | 74 #include "platform/text/TextStream.h" |
| 75 #include "third_party/skia/include/core/SkImage.h" |
| 75 #include "wtf/PassOwnPtr.h" | 76 #include "wtf/PassOwnPtr.h" |
| 76 #include "wtf/StdLibExtras.h" | 77 #include "wtf/StdLibExtras.h" |
| 77 | 78 |
| 78 namespace blink { | 79 namespace blink { |
| 79 | 80 |
| 80 using namespace HTMLNames; | 81 using namespace HTMLNames; |
| 81 | 82 |
| 82 namespace { | 83 namespace { |
| 83 | 84 |
| 84 struct ScopedFramePaintingState { | 85 struct ScopedFramePaintingState { |
| (...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 578 { | 579 { |
| 579 if (!m_host) | 580 if (!m_host) |
| 580 return 0; | 581 return 0; |
| 581 | 582 |
| 582 double ratio = m_host->deviceScaleFactor(); | 583 double ratio = m_host->deviceScaleFactor(); |
| 583 ratio *= pageZoomFactor(); | 584 ratio *= pageZoomFactor(); |
| 584 return ratio; | 585 return ratio; |
| 585 } | 586 } |
| 586 | 587 |
| 587 PassOwnPtr<DragImage> LocalFrame::paintIntoDragImage( | 588 PassOwnPtr<DragImage> LocalFrame::paintIntoDragImage( |
| 588 const DisplayItemClientWrapper& displayItemClient, DisplayItem::Type clipTyp
e, RespectImageOrientationEnum shouldRespectImageOrientation, const GlobalPaintF
lags globalPaintFlags, IntRect paintingRect) | 589 const DisplayItemClientWrapper& displayItemClient, |
| 590 RespectImageOrientationEnum shouldRespectImageOrientation, |
| 591 const GlobalPaintFlags globalPaintFlags, IntRect paintingRect, float opacity
) |
| 589 { | 592 { |
| 590 ASSERT(document()->isActive()); | 593 ASSERT(document()->isActive()); |
| 591 // Not flattening compositing layers will result in a broken image being pai
nted. | 594 // Not flattening compositing layers will result in a broken image being pai
nted. |
| 592 ASSERT(globalPaintFlags & GlobalPaintFlattenCompositingLayers); | 595 ASSERT(globalPaintFlags & GlobalPaintFlattenCompositingLayers); |
| 593 | 596 |
| 594 float deviceScaleFactor = m_host->deviceScaleFactor(); | 597 float deviceScaleFactor = m_host->deviceScaleFactor(); |
| 595 paintingRect.setWidth(paintingRect.width() * deviceScaleFactor); | 598 paintingRect.setWidth(paintingRect.width() * deviceScaleFactor); |
| 596 paintingRect.setHeight(paintingRect.height() * deviceScaleFactor); | 599 paintingRect.setHeight(paintingRect.height() * deviceScaleFactor); |
| 597 | 600 |
| 598 OwnPtr<ImageBuffer> buffer = ImageBuffer::create(paintingRect.size()); | |
| 599 if (!buffer) | |
| 600 return nullptr; | |
| 601 | |
| 602 SkPictureBuilder pictureBuilder(paintingRect); | 601 SkPictureBuilder pictureBuilder(paintingRect); |
| 603 { | 602 { |
| 604 GraphicsContext& paintContext = pictureBuilder.context(); | 603 GraphicsContext& paintContext = pictureBuilder.context(); |
| 605 | 604 |
| 606 AffineTransform transform; | 605 AffineTransform transform; |
| 607 transform.scale(deviceScaleFactor, deviceScaleFactor); | 606 transform.scale(deviceScaleFactor, deviceScaleFactor); |
| 608 transform.translate(-paintingRect.x(), -paintingRect.y()); | 607 transform.translate(-paintingRect.x(), -paintingRect.y()); |
| 609 TransformRecorder transformRecorder(paintContext, displayItemClient, tra
nsform); | 608 TransformRecorder transformRecorder(paintContext, displayItemClient, tra
nsform); |
| 610 | 609 |
| 611 ClipRecorder clipRecorder(paintContext, displayItemClient, clipType, | |
| 612 LayoutRect(0, 0, paintingRect.maxX(), paintingRect.maxY())); | |
| 613 | |
| 614 m_view->paintContents(&paintContext, globalPaintFlags, paintingRect); | 610 m_view->paintContents(&paintContext, globalPaintFlags, paintingRect); |
| 615 | 611 |
| 616 } | 612 } |
| 617 RefPtr<const SkPicture> recording = pictureBuilder.endRecording(); | 613 RefPtr<const SkPicture> recording = pictureBuilder.endRecording(); |
| 618 buffer->canvas()->drawPicture(recording.get()); | 614 RefPtr<SkImage> skImage = adoptRef(SkImage::NewFromPicture(recording.get(), |
| 615 SkISize::Make(paintingRect.width(), paintingRect.height()), nullptr, nul
lptr)); |
| 616 RefPtr<Image> image = StaticBitmapImage::create(skImage.release()); |
| 619 | 617 |
| 620 RefPtr<Image> image = buffer->newImageSnapshot(); | 618 return DragImage::create(image.get(), shouldRespectImageOrientation, deviceS
caleFactor, |
| 621 return DragImage::create(image.get(), shouldRespectImageOrientation, deviceS
caleFactor); | 619 InterpolationHigh, opacity); |
| 622 } | 620 } |
| 623 | 621 |
| 624 PassOwnPtr<DragImage> LocalFrame::nodeImage(Node& node) | 622 PassOwnPtr<DragImage> LocalFrame::nodeImage(Node& node) |
| 625 { | 623 { |
| 626 if (!node.layoutObject()) | 624 if (!node.layoutObject()) |
| 627 return nullptr; | 625 return nullptr; |
| 628 | 626 |
| 629 const ScopedFramePaintingState state(this, &node); | 627 const ScopedFramePaintingState state(this, &node); |
| 630 | 628 |
| 631 m_view->updateAllLifecyclePhases(); | 629 m_view->updateAllLifecyclePhases(); |
| 632 | 630 |
| 633 m_view->setNodeToDraw(&node); // Enable special sub-tree drawing mode. | 631 m_view->setNodeToDraw(&node); // Enable special sub-tree drawing mode. |
| 634 | 632 |
| 635 // Document::updateLayout may have blown away the original LayoutObject. | 633 // Document::updateLayout may have blown away the original LayoutObject. |
| 636 LayoutObject* layoutObject = node.layoutObject(); | 634 LayoutObject* layoutObject = node.layoutObject(); |
| 637 if (!layoutObject) | 635 if (!layoutObject) |
| 638 return nullptr; | 636 return nullptr; |
| 639 | 637 |
| 640 IntRect rect; | 638 IntRect rect; |
| 641 | 639 |
| 642 return paintIntoDragImage(*layoutObject, DisplayItem::ClipNodeImage, layoutO
bject->shouldRespectImageOrientation(), GlobalPaintFlattenCompositingLayers, | 640 return paintIntoDragImage(*layoutObject, layoutObject->shouldRespectImageOri
entation(), |
| 643 layoutObject->paintingRootRect(rect)); | 641 GlobalPaintFlattenCompositingLayers, layoutObject->paintingRootRect(rect
)); |
| 644 } | 642 } |
| 645 | 643 |
| 646 PassOwnPtr<DragImage> LocalFrame::dragImageForSelection() | 644 PassOwnPtr<DragImage> LocalFrame::dragImageForSelection(float opacity) |
| 647 { | 645 { |
| 648 if (!selection().isRange()) | 646 if (!selection().isRange()) |
| 649 return nullptr; | 647 return nullptr; |
| 650 | 648 |
| 651 const ScopedFramePaintingState state(this, 0); | 649 const ScopedFramePaintingState state(this, 0); |
| 652 m_view->updateAllLifecyclePhases(); | 650 m_view->updateAllLifecyclePhases(); |
| 653 | 651 |
| 654 return paintIntoDragImage(*this, DisplayItem::ClipSelectionImage, DoNotRespe
ctImageOrientation, GlobalPaintSelectionOnly | GlobalPaintFlattenCompositingLaye
rs, enclosingIntRect(selection().bounds())); | 652 return paintIntoDragImage(*this, DoNotRespectImageOrientation, |
| 653 GlobalPaintSelectionOnly | GlobalPaintFlattenCompositingLayers, |
| 654 enclosingIntRect(selection().bounds()), opacity); |
| 655 } | 655 } |
| 656 | 656 |
| 657 String LocalFrame::selectedText() const | 657 String LocalFrame::selectedText() const |
| 658 { | 658 { |
| 659 return selection().selectedText(); | 659 return selection().selectedText(); |
| 660 } | 660 } |
| 661 | 661 |
| 662 String LocalFrame::selectedTextForClipboard() const | 662 String LocalFrame::selectedTextForClipboard() const |
| 663 { | 663 { |
| 664 return selection().selectedTextForClipboard(); | 664 return selection().selectedTextForClipboard(); |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 844 { | 844 { |
| 845 if (isLocalRoot()) | 845 if (isLocalRoot()) |
| 846 m_instrumentingAgents = InstrumentingAgents::create(); | 846 m_instrumentingAgents = InstrumentingAgents::create(); |
| 847 else | 847 else |
| 848 m_instrumentingAgents = localFrameRoot()->m_instrumentingAgents; | 848 m_instrumentingAgents = localFrameRoot()->m_instrumentingAgents; |
| 849 } | 849 } |
| 850 | 850 |
| 851 DEFINE_WEAK_IDENTIFIER_MAP(LocalFrame); | 851 DEFINE_WEAK_IDENTIFIER_MAP(LocalFrame); |
| 852 | 852 |
| 853 } // namespace blink | 853 } // namespace blink |
| OLD | NEW |