Esempio n. 1
0
WebBitmap* Frame::selectionImage(bool forceWhiteText) const
{
    m_view->setPaintBehavior(PaintBehaviorSelectionOnly | (forceWhiteText ? 0 : PaintBehaviorForceBlackText));
    WebBitmap* result = imageFromRect(selectionBounds(true));
    m_view->setPaintBehavior(PaintBehaviorNormal);
    return result;
}
Esempio n. 2
0
HBITMAP imageFromSelection(Frame* frame, bool forceBlackText)
{
    frame->document()->updateLayout();

    frame->view()->setPaintBehavior(PaintBehaviorSelectionOnly | (forceBlackText ? PaintBehaviorForceBlackText : 0));
    FloatRect fr = frame->selection()->bounds();
    IntRect ir(static_cast<int>(fr.x()), static_cast<int>(fr.y()),
               static_cast<int>(fr.width()), static_cast<int>(fr.height()));
    HBITMAP image = imageFromRect(frame, ir);
    frame->view()->setPaintBehavior(PaintBehaviorNormal);
    return image;
}
Esempio n. 3
0
DragImageRef Frame::nodeImage(Node* node)
{
    RenderObject* renderer = node->renderer();
    if (!renderer)
        return 0;

    IntRect topLevelRect;
    IntRect paintingRect = renderer->paintingRootRect(topLevelRect);

    document()->updateLayout();

    m_view->setNodeToDraw(node); // invoke special sub-tree drawing mode
    HBITMAP result = imageFromRect(this, paintingRect);
    m_view->setNodeToDraw(0);

    return result;
}
Esempio n. 4
0
WebBitmap* Frame::snapshotDragImage(Node* node, IntRect& imageRect, IntRect& elementRect) const
{
    RenderObject* renderer = node->renderer();
    if (!renderer)
        return NULL;

    renderer->updateDragState(true);    // mark dragged nodes (so they pick up the right CSS)
    m_doc->updateLayout();        // forces style recalc - needed since changing the drag state might
                                        // imply new styles, plus JS could have changed other things
    IntRect topLevelRect;
    IntRect paintingRect = renderer->paintingRootRect(topLevelRect);

    m_view->setNodeToDraw(node);              // invoke special sub-tree drawing mode
    WebBitmap* result = imageFromRect(paintingRect);
    renderer->updateDragState(false);
    m_doc->updateLayout();
    m_view->setNodeToDraw(0);

    elementRect = topLevelRect;
	imageRect = paintingRect;
    return result;
}