Changeset 73729 in webkit
- Timestamp:
- Dec 10, 2010 8:05:12 AM (13 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 16 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r73728 r73729 1 2010-12-10 Andreas Kling <kling@webkit.org> 2 3 Reviewed by Eric Seidel. 4 5 Don't do GraphicsContext save/restore just to preserve the CompositeOperator 6 https://bugs.webkit.org/show_bug.cgi?id=50070 7 8 Add GraphicsContext::compositeOperation() so we don't have to do a full 9 save/restore if the only context-tainting call is setCompositeOperation(). 10 11 GraphicsContext::setCompositeOperation() now stores the op in its state 12 and calls a port-specific setPlatformCompositeOperation(). 13 14 No new tests, this is an optimization. 15 16 * platform/graphics/GraphicsContext.cpp: 17 (WebCore::GraphicsContext::setCompositeOperation): 18 (WebCore::GraphicsContext::compositeOperation): 19 * platform/graphics/GraphicsContext.h: 20 * platform/graphics/GraphicsContextPrivate.h: 21 (WebCore::GraphicsContextState::GraphicsContextState): 22 * platform/graphics/Image.cpp: 23 (WebCore::Image::fillWithSolidColor): 24 * platform/graphics/cairo/GraphicsContextCairo.cpp: 25 (WebCore::GraphicsContext::setPlatformCompositeOperation): 26 * platform/graphics/cg/GraphicsContextCG.cpp: 27 (WebCore::GraphicsContext::setPlatformCompositeOperation): 28 * platform/graphics/haiku/GraphicsContextHaiku.cpp: 29 (WebCore::GraphicsContext::setPlatformCompositeOperation): 30 * platform/graphics/mac/GraphicsContextMac.mm: 31 (WebCore::GraphicsContext::setPlatformCompositeOperation): 32 * platform/graphics/openvg/GraphicsContextOpenVG.cpp: 33 (WebCore::GraphicsContext::setPlatformCompositeOperation): 34 * platform/graphics/qt/GraphicsContextQt.cpp: 35 (WebCore::GraphicsContext::setPlatformCompositeOperation): 36 * platform/graphics/skia/GraphicsContextSkia.cpp: 37 (WebCore::GraphicsContext::setPlatformCompositeOperation): 38 * platform/graphics/skia/SkiaUtils.cpp: 39 (WebCore::WebCoreCompositeToSkiaComposite): 40 * platform/graphics/wince/GraphicsContextWinCE.cpp: 41 (WebCore::GraphicsContext::setPlatformCompositeOperation): 42 * platform/graphics/wx/GraphicsContextWx.cpp: 43 (WebCore::GraphicsContext::setPlatformCompositeOperation): 44 * rendering/RenderBoxModelObject.cpp: 45 (WebCore::RenderBoxModelObject::paintFillLayerExtended): 46 * rendering/RenderView.cpp: 47 (WebCore::RenderView::paintBoxDecorations): 48 1 49 2010-12-10 Renata Hodovan <reni@webkit.org> 2 50 -
trunk/WebCore/platform/graphics/GraphicsContext.cpp
r73728 r73729 552 552 } 553 553 554 void GraphicsContext::setCompositeOperation(CompositeOperator compositeOperation) 555 { 556 m_state.compositeOperator = compositeOperation; 557 setPlatformCompositeOperation(compositeOperation); 558 } 559 560 CompositeOperator GraphicsContext::compositeOperation() const 561 { 562 return m_state.compositeOperator; 563 } 564 554 565 #if !PLATFORM(SKIA) 555 566 void GraphicsContext::setPlatformFillGradient(Gradient*) -
trunk/WebCore/platform/graphics/GraphicsContext.h
r73728 r73729 163 163 , strokeColorSpace(ColorSpaceDeviceRGB) 164 164 , fillColorSpace(ColorSpaceDeviceRGB) 165 , compositeOperator(CompositeSourceOver) 165 166 , shouldAntialias(true) 166 167 , paintingDisabled(false) … … 194 195 ColorSpace strokeColorSpace; 195 196 ColorSpace fillColorSpace; 197 198 CompositeOperator compositeOperator; 196 199 197 200 bool shouldAntialias; … … 353 356 354 357 void setCompositeOperation(CompositeOperator); 358 CompositeOperator compositeOperation() const; 355 359 356 360 #if PLATFORM(SKIA) … … 499 503 void clearPlatformShadow(); 500 504 505 void setPlatformCompositeOperation(CompositeOperator); 506 501 507 static void adjustLineToPixelBoundaries(FloatPoint& p1, FloatPoint& p2, float strokeWidth, const StrokeStyle&); 502 508 -
trunk/WebCore/platform/graphics/Image.cpp
r56447 r73729 82 82 return; 83 83 84 ctxt->save();84 CompositeOperator previousOperator = ctxt->compositeOperation(); 85 85 ctxt->setCompositeOperation(!color.hasAlpha() && op == CompositeSourceOver ? CompositeCopy : op); 86 86 ctxt->fillRect(dstRect, color, styleColorSpace); 87 ctxt-> restore();87 ctxt->setCompositeOperation(previousOperator); 88 88 } 89 89 -
trunk/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp
r73728 r73729 998 998 } 999 999 1000 void GraphicsContext::set CompositeOperation(CompositeOperator op)1000 void GraphicsContext::setPlatformCompositeOperation(CompositeOperator op) 1001 1001 { 1002 1002 if (paintingDisabled()) -
trunk/WebCore/platform/graphics/cg/GraphicsContextCG.cpp
r73728 r73729 1189 1189 } 1190 1190 1191 #ifndef BUILDING_ON_TIGER // Tiger's set CompositeOperation() is defined in GraphicsContextMac.mm.1192 void GraphicsContext::set CompositeOperation(CompositeOperator mode)1191 #ifndef BUILDING_ON_TIGER // Tiger's setPlatformCompositeOperation() is defined in GraphicsContextMac.mm. 1192 void GraphicsContext::setPlatformCompositeOperation(CompositeOperator mode) 1193 1193 { 1194 1194 if (paintingDisabled()) -
trunk/WebCore/platform/graphics/haiku/GraphicsContextHaiku.cpp
r73728 r73729 344 344 } 345 345 346 void GraphicsContext::set CompositeOperation(CompositeOperator op)346 void GraphicsContext::setPlatformCompositeOperation(CompositeOperator op) 347 347 { 348 348 if (paintingDisabled()) … … 359 359 break; 360 360 default: 361 printf("GraphicsContext::set CompositeOperation: Unsupported composite operation %s\n",361 printf("GraphicsContext::setPlatformCompositeOperation: Unsupported composite operation %s\n", 362 362 compositeOperatorName(op).utf8().data()); 363 363 } -
trunk/WebCore/platform/graphics/mac/GraphicsContextMac.mm
r72528 r73729 88 88 } 89 89 90 #ifdef BUILDING_ON_TIGER // Post-Tiger's set CompositeOperation() is defined in GraphicsContextCG.cpp.91 void GraphicsContext::set CompositeOperation(CompositeOperator op)90 #ifdef BUILDING_ON_TIGER // Post-Tiger's setPlatformCompositeOperation() is defined in GraphicsContextCG.cpp. 91 void GraphicsContext::setPlatformCompositeOperation(CompositeOperator op) 92 92 { 93 93 if (paintingDisabled()) -
trunk/WebCore/platform/graphics/openvg/GraphicsContextOpenVG.cpp
r73728 r73729 365 365 } 366 366 367 void GraphicsContext::set CompositeOperation(CompositeOperator op)367 void GraphicsContext::setPlatformCompositeOperation(CompositeOperator op) 368 368 { 369 369 if (paintingDisabled()) -
trunk/WebCore/platform/graphics/qt/GraphicsContextQt.cpp
r73728 r73729 1131 1131 } 1132 1132 1133 void GraphicsContext::setCompositeOperation(CompositeOperator op) 1134 { 1135 if (paintingDisabled()) 1136 return; 1137 1138 if (m_data->p()->paintEngine()->hasFeature(QPaintEngine::PorterDuff)) 1139 m_data->p()->setCompositionMode(toQtCompositionMode(op)); 1133 void GraphicsContext::setPlatformCompositeOperation(CompositeOperator op) 1134 { 1135 if (paintingDisabled()) 1136 return; 1137 1138 QPainter* painter = m_data->p(); 1139 1140 if (!painter->paintEngine()->hasFeature(QPaintEngine::PorterDuff)) 1141 return; 1142 1143 painter->setCompositionMode(toQtCompositionMode(op)); 1140 1144 } 1141 1145 -
trunk/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp
r73728 r73729 927 927 } 928 928 929 void GraphicsContext::set CompositeOperation(CompositeOperator op)929 void GraphicsContext::setPlatformCompositeOperation(CompositeOperator op) 930 930 { 931 931 if (paintingDisabled()) -
trunk/WebCore/platform/graphics/skia/SkiaUtils.cpp
r63485 r73729 71 71 } 72 72 73 SkDEBUGF(("GraphicsContext::set CompositeOperation uknown CompositeOperator %d\n", op));73 SkDEBUGF(("GraphicsContext::setPlatformCompositeOperation unknown CompositeOperator %d\n", op)); 74 74 return SkXfermode::kSrcOver_Mode; // fall-back 75 75 } -
trunk/WebCore/platform/graphics/wince/GraphicsContextWinCE.cpp
r73728 r73729 1174 1174 } 1175 1175 1176 void GraphicsContext::set CompositeOperation(CompositeOperator op)1176 void GraphicsContext::setPlatformCompositeOperation(CompositeOperator op) 1177 1177 { 1178 1178 notImplemented(); -
trunk/WebCore/platform/graphics/wx/GraphicsContextWx.cpp
r73728 r73729 443 443 } 444 444 445 void GraphicsContext::set CompositeOperation(CompositeOperator op)445 void GraphicsContext::setPlatformCompositeOperation(CompositeOperator op) 446 446 { 447 447 if (m_data->context) -
trunk/WebCore/rendering/RenderBoxModelObject.cpp
r72926 r73729 672 672 Color baseColor = view()->frameView()->baseBackgroundColor(); 673 673 if (baseColor.alpha() > 0) { 674 context->save();674 CompositeOperator previousOperator = context->compositeOperation(); 675 675 context->setCompositeOperation(CompositeCopy); 676 676 context->fillRect(rect, baseColor, style()->colorSpace()); 677 context-> restore();677 context->setCompositeOperation(previousOperator); 678 678 } else 679 679 context->clearRect(rect); -
trunk/WebCore/rendering/RenderView.cpp
r73525 r73729 222 222 Color baseColor = frameView()->baseBackgroundColor(); 223 223 if (baseColor.alpha() > 0) { 224 paintInfo.context->save();224 CompositeOperator previousOperator = paintInfo.context->compositeOperation(); 225 225 paintInfo.context->setCompositeOperation(CompositeCopy); 226 226 paintInfo.context->fillRect(paintInfo.rect, baseColor, style()->colorSpace()); 227 paintInfo.context-> restore();227 paintInfo.context->setCompositeOperation(previousOperator); 228 228 } else 229 229 paintInfo.context->clearRect(paintInfo.rect);
Note: See TracChangeset
for help on using the changeset viewer.