Changeset 40218 in webkit


Ignore:
Timestamp:
Jan 24, 2009 2:39:16 PM (15 years ago)
Author:
treat@webkit.org
Message:

Add QWebFrame::renderContents() method which allows arbitary rendering
of any content region within the QWebFrame. It also does not draw any
scrollbars.

Location:
trunk/WebKit/qt
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebKit/qt/Api/qwebframe.cpp

    r39965 r40218  
    146146}
    147147
     148void QWebFramePrivate::renderPrivate(QPainter *painter, const QRegion &clip, bool contents)
     149{
     150    if (!frame->view() || !frame->contentRenderer())
     151        return;
     152
     153    QVector<QRect> vector = clip.rects();
     154    if (vector.isEmpty())
     155        return;
     156
     157    WebCore::FrameView* view = frame->view();
     158    view->layoutIfNeededRecursive();
     159
     160    GraphicsContext context(painter);
     161
     162    if (!contents)
     163        view->paint(&context, vector.first());
     164    else
     165        view->paintContents(&context, vector.first());
     166
     167    for (int i = 1; i < vector.size(); ++i) {
     168        const QRect& clipRect = vector.at(i);
     169        painter->save();
     170        painter->setClipRect(clipRect, Qt::IntersectClip);
     171        if (!contents)
     172            view->paint(&context, clipRect);
     173        else
     174            view->paintContents(&context, clipRect);
     175        painter->restore();
     176    }
     177}
     178
    148179/*!
    149180    \class QWebFrame
     
    745776void QWebFrame::render(QPainter *painter, const QRegion &clip)
    746777{
    747     if (!d->frame->view() || !d->frame->contentRenderer())
    748         return;
    749 
    750     d->frame->view()->layoutIfNeededRecursive();
    751 
    752     GraphicsContext ctx(painter);
    753     QVector<QRect> vector = clip.rects();
    754     WebCore::FrameView* view = d->frame->view();
    755     for (int i = 0; i < vector.size(); ++i) {
    756         if (i > 0) {
    757             painter->save();
    758             painter->setClipRect(vector.at(i), Qt::IntersectClip);
    759         }
    760 
    761         view->paint(&ctx, vector.at(i));
    762 
    763         if (i > 0)
    764             painter->restore();
    765     }
     778    d->renderPrivate(painter, clip);
    766779}
    767780
     
    771784void QWebFrame::render(QPainter *painter)
    772785{
    773     if (!d->frame->view() || !d->frame->contentRenderer())
    774         return;
    775 
    776     d->frame->view()->layoutIfNeededRecursive();
    777 
    778     GraphicsContext ctx(painter);
    779     WebCore::FrameView* view = d->frame->view();
    780     view->paint(&ctx, view->frameRect());
     786    d->renderPrivate(painter, QRegion(view->frameRect()));
     787}
     788
     789/*!
     790  \since 4.6
     791  Render the frame's \a contents into \a painter while clipping to \a contents.
     792*/
     793void QWebFrame::renderContents(QPainter *painter, const QRegion &contents)
     794{
     795    d->renderPrivate(painter, contents, true);
    781796}
    782797
  • trunk/WebKit/qt/Api/qwebframe.h

    r39680 r40218  
    160160    void render(QPainter *painter, const QRegion &clip);
    161161    void render(QPainter *painter);
     162    void renderContents(QPainter *painter, const QRegion &contents);
    162163
    163164    void setTextSizeMultiplier(qreal factor);
  • trunk/WebKit/qt/Api/qwebframe_p.h

    r39680 r40218  
    8282    static QWebFrame* kit(WebCore::Frame*);
    8383
     84    void renderPrivate(QPainter *painter, const QRegion &clip, bool contents = false);
     85
    8486    QWebFrame *q;
    8587    WebCore::FrameLoaderClientQt *frameLoaderClient;
  • trunk/WebKit/qt/ChangeLog

    r40158 r40218  
     12009-01-24  Adam Treat  <adam.treat@torchmobile.com>
     2
     3        Reviewed by Nikolas Zimmermann.
     4
     5        Add QWebFrame::renderContents() method which allows arbitary rendering
     6        of any content region within the QWebFrame.  It also does not draw any
     7        scrollbars.
     8
     9        * Api/qwebframe.cpp:
     10        (QWebFrame::renderContents):
     11        * Api/qwebframe.h:
     12
    1132009-01-23  Ariya Hidayat  <ariya.hidayat@trolltech.com>
    214
Note: See TracChangeset for help on using the changeset viewer.