Changeset 51698 in webkit
- Timestamp:
- Dec 4, 2009 9:43:29 AM (14 years ago)
- Location:
- trunk/WebKit/qt
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKit/qt/Api/qwebframe.cpp
r51658 r51698 268 268 } 269 269 270 void QWebFramePrivate::render Private(QPainter *painter, QWebFrame::RenderLayer layer, const QRegion &clip)270 void QWebFramePrivate::renderContentsLayerAbsoluteCoords(GraphicsContext* context, const QRegion& clip) 271 271 { 272 272 if (!frame->view() || !frame->contentRenderer()) … … 277 277 return; 278 278 279 GraphicsContext context(painter); 280 if (context.paintingDisabled() && !context.updatingControlTints()) 281 return; 279 QPainter* painter = context->platformContext(); 282 280 283 281 WebCore::FrameView* view = frame->view(); … … 286 284 for (int i = 0; i < vector.size(); ++i) { 287 285 const QRect& clipRect = vector.at(i); 288 QRect intersectedRect = clipRect.intersected(view->frameRect());289 286 290 287 painter->save(); 291 288 painter->setClipRect(clipRect, Qt::IntersectClip); 292 289 290 context->save(); 291 view->paintContents(context, clipRect); 292 context->restore(); 293 294 painter->restore(); 295 } 296 } 297 298 void QWebFramePrivate::renderRelativeCoords(GraphicsContext* context, QWebFrame::RenderLayer layer, const QRegion& clip) 299 { 300 if (!frame->view() || !frame->contentRenderer()) 301 return; 302 303 QVector<QRect> vector = clip.rects(); 304 if (vector.isEmpty()) 305 return; 306 307 QPainter* painter = context->platformContext(); 308 309 WebCore::FrameView* view = frame->view(); 310 view->layoutIfNeededRecursive(); 311 312 for (int i = 0; i < vector.size(); ++i) { 313 const QRect& clipRect = vector.at(i); 314 315 QRect intersectedRect = clipRect.intersected(view->frameRect()); 316 317 painter->save(); 318 painter->setClipRect(clipRect, Qt::IntersectClip); 319 293 320 int x = view->x(); 294 321 int y = view->y(); 295 322 296 323 if (layer & QWebFrame::ContentsLayer) { 297 context .save();324 context->save(); 298 325 299 326 int scrollX = view->scrollX(); … … 301 328 302 329 QRect rect = intersectedRect; 303 context .translate(x, y);330 context->translate(x, y); 304 331 rect.translate(-x, -y); 305 context .translate(-scrollX, -scrollY);332 context->translate(-scrollX, -scrollY); 306 333 rect.translate(scrollX, scrollY); 307 context .clip(view->visibleContentRect());308 309 view->paintContents( &context, rect);310 311 context .restore();334 context->clip(view->visibleContentRect()); 335 336 view->paintContents(context, rect); 337 338 context->restore(); 312 339 } 313 340 … … 315 342 && !view->scrollbarsSuppressed() 316 343 && (view->horizontalScrollbar() || view->verticalScrollbar())) { 317 context .save();344 context->save(); 318 345 319 346 QRect rect = intersectedRect; 320 context .translate(x, y);347 context->translate(x, y); 321 348 rect.translate(-x, -y); 322 349 323 view->paintScrollbars( &context, rect);324 325 context .restore();350 view->paintScrollbars(context, rect); 351 352 context->restore(); 326 353 } 327 354 355 #if ENABLE(PAN_SCROLLING) 328 356 if (layer & QWebFrame::PanIconLayer) 329 view->paintPanScrollIcon(&context); 357 view->paintPanScrollIcon(context); 358 #endif 330 359 331 360 painter->restore(); … … 1003 1032 void QWebFrame::render(QPainter* painter, RenderLayer layer, const QRegion& clip) 1004 1033 { 1034 GraphicsContext context(painter); 1035 if (context.paintingDisabled() && !context.updatingControlTints()) 1036 return; 1037 1005 1038 if (!clip.isEmpty()) 1006 d->render Private(painter, layer, clip);1039 d->renderRelativeCoords(&context, layer, clip); 1007 1040 else if (d->frame->view()) 1008 d->render Private(painter, layer, QRegion(d->frame->view()->frameRect()));1041 d->renderRelativeCoords(&context, layer, QRegion(d->frame->view()->frameRect())); 1009 1042 } 1010 1043 … … 1012 1045 Render the frame into \a painter clipping to \a clip. 1013 1046 */ 1014 void QWebFrame::render(QPainter *painter, const QRegion &clip) 1015 { 1016 d->renderPrivate(painter, AllLayers, clip); 1047 void QWebFrame::render(QPainter* painter, const QRegion& clip) 1048 { 1049 GraphicsContext context(painter); 1050 if (context.paintingDisabled() && !context.updatingControlTints()) 1051 return; 1052 1053 d->renderRelativeCoords(&context, AllLayers, clip); 1017 1054 } 1018 1055 … … 1020 1057 Render the frame into \a painter. 1021 1058 */ 1022 void QWebFrame::render(QPainter *painter)1059 void QWebFrame::render(QPainter* painter) 1023 1060 { 1024 1061 if (!d->frame->view()) 1025 1062 return; 1026 1063 1027 d->renderPrivate(painter, AllLayers, QRegion(d->frame->view()->frameRect())); 1064 GraphicsContext context(painter); 1065 if (context.paintingDisabled() && !context.updatingControlTints()) 1066 return; 1067 1068 d->renderRelativeCoords(&context, AllLayers, QRegion(d->frame->view()->frameRect())); 1028 1069 } 1029 1070 -
trunk/WebKit/qt/Api/qwebframe_p.h
r49870 r51698 26 26 27 27 #include "EventHandler.h" 28 #include "GraphicsContext.h" 28 29 #include "KURL.h" 29 30 #include "PlatformString.h" … … 82 83 static QWebFrame* kit(WebCore::Frame*); 83 84 84 void renderPrivate(QPainter*, QWebFrame::RenderLayer, const QRegion& clip); 85 void renderRelativeCoords(WebCore::GraphicsContext*, QWebFrame::RenderLayer, const QRegion& clip); 86 void renderContentsLayerAbsoluteCoords(WebCore::GraphicsContext*, const QRegion& clip); 85 87 86 88 QWebFrame *q; -
trunk/WebKit/qt/ChangeLog
r51696 r51698 1 2009-12-04 Kenneth Rohde Christiansen <kenneth@webkit.org> 2 3 Reviewed by Antti Koivisto. 4 5 Split out the renderPrivate in two methods, one for working on 6 relative coordinates (relative to the viewport) and one for 7 working on absolute coordinates. The latter is more effecient 8 for implementing tiling, as you don't need translate the coords, 9 and because it avoid clipping to the viewport. 10 11 No behaviour changes, so no new tests. 12 13 * Api/qwebframe.cpp: 14 (QWebFramePrivate::renderContentsLayerAbsoluteCoords): 15 (QWebFramePrivate::renderRelativeCoords): 16 (QWebFrame::render): 17 * Api/qwebframe_p.h: 18 1 19 2009-12-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> 2 20
Note: See TracChangeset
for help on using the changeset viewer.