18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "Frame.h" 264576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "FrameView.h" 2765f03d4f644ce73618e5f4f50dd694b26f55ae12Ben Murdoch#include "GraphicsContext.h" 284576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "Image.h" 294576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang#include "ImageBuffer.h" 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 31e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block#include "NotImplemented.h" 32e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 35e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockDragImageRef Frame::nodeImage(Node*) 36e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block{ 37e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block notImplemented(); 38e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block return 0; 39e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block} 40e8b154fd68f9b33be40a3590e58347f353835f5cSteve Block 41e8b154fd68f9b33be40a3590e58347f353835f5cSteve BlockDragImageRef Frame::dragImageForSelection() 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 434576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!selection()->isRange()) 444576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return 0; 454576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 464576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang m_doc->updateLayout(); 474576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 484576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang IntRect paintingRect = enclosingIntRect(selection()->bounds()); 494576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang OwnPtr<ImageBuffer> buffer(ImageBuffer::create(paintingRect.size())); 504576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang if (!buffer) 514576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return 0; 524576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 534576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang GraphicsContext* context = buffer->context(); 544576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang context->translate(-paintingRect.x(), -paintingRect.y()); 552fc2651226baac27029e38c9d6ef883fa32084dbSteve Block context->clip(FloatRect(0, 0, paintingRect.maxX(), paintingRect.maxY())); 564576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 574576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang PaintBehavior previousPaintBehavior = m_view->paintBehavior(); 584576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang m_view->setPaintBehavior(PaintBehaviorSelectionOnly); 594576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang m_view->paintContents(context, paintingRect); 604576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang m_view->setPaintBehavior(previousPaintBehavior); 614576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang 624576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang RefPtr<Image> image = buffer->copyImage(); 634576aa36e9a9671459299c7963ac95aa94beaea9Shimeng (Simon) Wang return createDragImageFromImage(image.get()); 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// vim: ts=4 sw=4 et 68