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