Changeset 252965 in webkit
- Timestamp:
- Nov 30, 2019 10:10:25 PM (4 years ago)
- Location:
- trunk/Source
- Files:
-
- 53 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebCore/ChangeLog
r252962 r252965 1 2019-11-30 Tim Horton <timothy_horton@apple.com> 2 3 Make CompositeOperator and BlendMode encodable 4 https://bugs.webkit.org/show_bug.cgi?id=204722 5 6 Reviewed by Eric Carlson. 7 8 Make CompositeOperator an `enum class`, and fix the fallout. 9 Add EnumTraits for CompositeOperator and BlendMode, so that they can be encoded. 10 11 * css/CSSPrimitiveValueMappings.h: 12 (WebCore::CSSPrimitiveValue::CSSPrimitiveValue): 13 (WebCore::CSSPrimitiveValue::operator CompositeOperator const): 14 * dom/Document.cpp: 15 (WebCore::Document::compositeOperatorForBackgroundColor const): 16 * html/HTMLImageElement.cpp: 17 (WebCore::HTMLImageElement::HTMLImageElement): 18 (WebCore::HTMLImageElement::parseAttribute): 19 * html/canvas/CanvasRenderingContext2D.cpp: 20 (WebCore::CanvasRenderingContext2D::drawTextInternal): 21 * html/canvas/CanvasRenderingContext2DBase.cpp: 22 (WebCore::CanvasRenderingContext2DBase::State::State): 23 (WebCore::CanvasRenderingContext2DBase::setGlobalCompositeOperation): 24 (WebCore::CanvasRenderingContext2DBase::isFullCanvasCompositeMode): 25 (WebCore::CanvasRenderingContext2DBase::fillInternal): 26 (WebCore::CanvasRenderingContext2DBase::strokeInternal): 27 (WebCore::CanvasRenderingContext2DBase::clearRect): 28 (WebCore::CanvasRenderingContext2DBase::fillRect): 29 (WebCore::CanvasRenderingContext2DBase::strokeRect): 30 (WebCore::CanvasRenderingContext2DBase::drawImage): 31 (WebCore::CanvasRenderingContext2DBase::drawImageFromRect): 32 (WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage): 33 * inspector/InspectorOverlay.cpp: 34 (WebCore::drawOutlinedQuadWithClip): 35 * platform/graphics/CrossfadeGeneratedImage.cpp: 36 (WebCore::CrossfadeGeneratedImage::drawCrossfade): 37 * platform/graphics/GraphicsContext.h: 38 * platform/graphics/GraphicsLayer.cpp: 39 (WebCore::GraphicsLayer::dumpProperties const): 40 * platform/graphics/GraphicsTypes.cpp: 41 (WebCore::parseCompositeAndBlendOperator): 42 (WebCore::compositeOperatorName): 43 * platform/graphics/GraphicsTypes.h: 44 * platform/graphics/Image.cpp: 45 (WebCore::Image::fillWithSolidColor): 46 * platform/graphics/ImagePaintingOptions.h: 47 * platform/graphics/ShadowBlur.cpp: 48 (WebCore::ShadowBlur::blurAndColorShadowBuffer): 49 * platform/graphics/cairo/CairoOperations.cpp: 50 (WebCore::Cairo::drawNativeImage): 51 * platform/graphics/cairo/CairoOperations.h: 52 * platform/graphics/cairo/CairoUtilities.cpp: 53 (WebCore::toCairoCompositeOperator): 54 * platform/graphics/cg/GraphicsContext3DCG.cpp: 55 (WebCore::GraphicsContext3D::paintToCanvas): 56 * platform/graphics/cg/GraphicsContextCG.cpp: 57 (WebCore::selectCGBlendMode): 58 * platform/graphics/filters/FEBlend.cpp: 59 (WebCore::FEBlend::platformApplySoftware): 60 (WebCore::FEBlend::externalRepresentation const): 61 * platform/graphics/filters/FEComposite.cpp: 62 (WebCore::FEComposite::platformApplySoftware): 63 * platform/graphics/filters/FEDropShadow.cpp: 64 (WebCore::FEDropShadow::platformApplySoftware): 65 * platform/graphics/filters/SourceAlpha.cpp: 66 (WebCore::SourceAlpha::platformApplySoftware): 67 * platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp: 68 (WebCore::MediaPlayerPrivateGStreamer::paint): 69 * platform/graphics/nicosia/NicosiaPaintingEngineBasic.cpp: 70 (Nicosia::PaintingEngineBasic::paint): 71 * platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp: 72 (Nicosia::paintLayer): 73 * platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp: 74 (WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly): 75 * platform/graphics/win/Direct2DOperations.cpp: 76 (WebCore::Direct2D::State::setCompositeOperation): 77 * platform/graphics/win/Direct2DOperations.h: 78 * platform/graphics/win/ImageCGWin.cpp: 79 (WebCore::BitmapImage::getHBITMAPOfSize): 80 * platform/graphics/win/ImageCairoWin.cpp: 81 (WebCore::BitmapImage::getHBITMAPOfSize): 82 * rendering/InlineFlowBox.cpp: 83 (WebCore::InlineFlowBox::paintMask): 84 * rendering/InlineFlowBox.h: 85 * rendering/RenderBox.cpp: 86 (WebCore::RenderBox::paintMaskImages): 87 * rendering/RenderBox.h: 88 * rendering/RenderBoxModelObject.cpp: 89 (WebCore::RenderBoxModelObject::paintFillLayerExtended): 90 * rendering/RenderBoxModelObject.h: 91 * rendering/RenderEmbeddedObject.cpp: 92 (WebCore::RenderEmbeddedObject::paintReplaced): 93 * rendering/RenderImage.cpp: 94 (WebCore::RenderImage::paintIntoRect): 95 * rendering/RenderLayerBacking.cpp: 96 (WebCore::supportsDirectlyCompositedBoxDecorations): 97 * rendering/RenderTreeAsText.cpp: 98 * rendering/RenderView.cpp: 99 (WebCore::RenderView::paintBoxDecorations): 100 * rendering/style/FillLayer.cpp: 101 (WebCore::FillLayer::FillLayer): 102 (WebCore::FillLayer::hasOpaqueImage const): 103 * rendering/style/FillLayer.h: 104 (WebCore::FillLayer::initialFillComposite): 105 * svg/graphics/SVGImage.cpp: 106 (WebCore::SVGImage::nativeImage): 107 (WebCore::SVGImage::draw): 108 1 109 2019-11-30 Tim Horton <timothy_horton@apple.com> 2 110 -
trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h
r252392 r252965 335 335 setPrimitiveUnitType(CSSUnitType::CSS_VALUE_ID); 336 336 switch (e) { 337 case Composite Clear:337 case CompositeOperator::Clear: 338 338 m_value.valueID = CSSValueClear; 339 339 break; 340 case Composite Copy:340 case CompositeOperator::Copy: 341 341 m_value.valueID = CSSValueCopy; 342 342 break; 343 case Composite SourceOver:343 case CompositeOperator::SourceOver: 344 344 m_value.valueID = CSSValueSourceOver; 345 345 break; 346 case Composite SourceIn:346 case CompositeOperator::SourceIn: 347 347 m_value.valueID = CSSValueSourceIn; 348 348 break; 349 case Composite SourceOut:349 case CompositeOperator::SourceOut: 350 350 m_value.valueID = CSSValueSourceOut; 351 351 break; 352 case Composite SourceAtop:352 case CompositeOperator::SourceAtop: 353 353 m_value.valueID = CSSValueSourceAtop; 354 354 break; 355 case Composite DestinationOver:355 case CompositeOperator::DestinationOver: 356 356 m_value.valueID = CSSValueDestinationOver; 357 357 break; 358 case Composite DestinationIn:358 case CompositeOperator::DestinationIn: 359 359 m_value.valueID = CSSValueDestinationIn; 360 360 break; 361 case Composite DestinationOut:361 case CompositeOperator::DestinationOut: 362 362 m_value.valueID = CSSValueDestinationOut; 363 363 break; 364 case Composite DestinationAtop:364 case CompositeOperator::DestinationAtop: 365 365 m_value.valueID = CSSValueDestinationAtop; 366 366 break; 367 case Composite XOR:367 case CompositeOperator::XOR: 368 368 m_value.valueID = CSSValueXor; 369 369 break; 370 case Composite PlusDarker:370 case CompositeOperator::PlusDarker: 371 371 m_value.valueID = CSSValuePlusDarker; 372 372 break; 373 case Composite PlusLighter:373 case CompositeOperator::PlusLighter: 374 374 m_value.valueID = CSSValuePlusLighter; 375 375 break; 376 case Composite Difference:376 case CompositeOperator::Difference: 377 377 ASSERT_NOT_REACHED(); 378 378 break; … … 386 386 switch (m_value.valueID) { 387 387 case CSSValueClear: 388 return Composite Clear;388 return CompositeOperator::Clear; 389 389 case CSSValueCopy: 390 return Composite Copy;390 return CompositeOperator::Copy; 391 391 case CSSValueSourceOver: 392 return Composite SourceOver;392 return CompositeOperator::SourceOver; 393 393 case CSSValueSourceIn: 394 return Composite SourceIn;394 return CompositeOperator::SourceIn; 395 395 case CSSValueSourceOut: 396 return Composite SourceOut;396 return CompositeOperator::SourceOut; 397 397 case CSSValueSourceAtop: 398 return Composite SourceAtop;398 return CompositeOperator::SourceAtop; 399 399 case CSSValueDestinationOver: 400 return Composite DestinationOver;400 return CompositeOperator::DestinationOver; 401 401 case CSSValueDestinationIn: 402 return Composite DestinationIn;402 return CompositeOperator::DestinationIn; 403 403 case CSSValueDestinationOut: 404 return Composite DestinationOut;404 return CompositeOperator::DestinationOut; 405 405 case CSSValueDestinationAtop: 406 return Composite DestinationAtop;406 return CompositeOperator::DestinationAtop; 407 407 case CSSValueXor: 408 return Composite XOR;408 return CompositeOperator::XOR; 409 409 case CSSValuePlusDarker: 410 return Composite PlusDarker;410 return CompositeOperator::PlusDarker; 411 411 case CSSValuePlusLighter: 412 return Composite PlusLighter;413 default: 414 break; 415 } 416 417 ASSERT_NOT_REACHED(); 418 return Composite Clear;412 return CompositeOperator::PlusLighter; 413 default: 414 break; 415 } 416 417 ASSERT_NOT_REACHED(); 418 return CompositeOperator::Clear; 419 419 } 420 420 -
trunk/Source/WebCore/dom/Document.cpp
r252881 r252965 7120 7120 { 7121 7121 if (LIKELY(!settings().punchOutWhiteBackgroundsInDarkMode() || !Color::isWhiteColor(color) || !renderer.useDarkAppearance())) 7122 return Composite SourceOver;7122 return CompositeOperator::SourceOver; 7123 7123 7124 7124 auto* frameView = view(); 7125 7125 if (!frameView) 7126 return Composite SourceOver;7126 return CompositeOperator::SourceOver; 7127 7127 7128 7128 // Mail on macOS uses a transparent view, and on iOS it is an opaque view. We need to 7129 7129 // use different composite modes to get the right results in this case. 7130 return frameView->isTransparent() ? Composite DestinationOut : CompositeDestinationIn;7130 return frameView->isTransparent() ? CompositeOperator::DestinationOut : CompositeOperator::DestinationIn; 7131 7131 } 7132 7132 -
trunk/Source/WebCore/html/HTMLImageElement.cpp
r252828 r252965 75 75 , m_form(nullptr) 76 76 , m_formSetByParser(makeWeakPtr(form)) 77 , m_compositeOperator(Composite SourceOver)77 , m_compositeOperator(CompositeOperator::SourceOver) 78 78 , m_imageDevicePixelRatio(1.0f) 79 79 , m_experimentalImageMenuEnabled(false) … … 253 253 BlendMode blendOp = BlendMode::Normal; 254 254 if (!parseCompositeAndBlendOperator(value, m_compositeOperator, blendOp)) 255 m_compositeOperator = Composite SourceOver;255 m_compositeOperator = CompositeOperator::SourceOver; 256 256 #if ENABLE(SERVICE_CONTROLS) 257 257 } else if (name == webkitimagemenuAttr) { -
trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp
r252628 r252965 594 594 endCompositeLayer(); 595 595 didDrawEntireCanvas(); 596 } else if (state().globalComposite == Composite Copy) {596 } else if (state().globalComposite == CompositeOperator::Copy) { 597 597 clearCanvas(); 598 598 fontProxy.drawBidiText(*c, textRun, location, FontCascade::UseFallbackIfFontNotReady); -
trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp
r252864 r252965 200 200 , shadowColor(Color::transparent) 201 201 , globalAlpha(1) 202 , globalComposite(Composite SourceOver)202 , globalComposite(CompositeOperator::SourceOver) 203 203 , globalBlend(BlendMode::Normal) 204 204 , hasInvertibleTransform(true) … … 770 770 void CanvasRenderingContext2DBase::setGlobalCompositeOperation(const String& operation) 771 771 { 772 CompositeOperator op = Composite SourceOver;772 CompositeOperator op = CompositeOperator::SourceOver; 773 773 BlendMode blendMode = BlendMode::Normal; 774 774 if (!parseCompositeAndBlendOperator(operation, op, blendMode)) … … 1035 1035 { 1036 1036 // See 4.8.11.1.3 Compositing 1037 // Composite SourceAtop and CompositeDestinationOut are not listed here as the platforms already1037 // CompositeOperator::SourceAtop and CompositeOperator::DestinationOut are not listed here as the platforms already 1038 1038 // implement the specification's behavior. 1039 return op == Composite SourceIn || op == CompositeSourceOut || op == CompositeDestinationIn || op == CompositeDestinationAtop;1039 return op == CompositeOperator::SourceIn || op == CompositeOperator::SourceOut || op == CompositeOperator::DestinationIn || op == CompositeOperator::DestinationAtop; 1040 1040 } 1041 1041 … … 1097 1097 endCompositeLayer(); 1098 1098 didDrawEntireCanvas(); 1099 } else if (state().globalComposite == Composite Copy) {1099 } else if (state().globalComposite == CompositeOperator::Copy) { 1100 1100 clearCanvas(); 1101 1101 c->fillPath(path); … … 1129 1129 endCompositeLayer(); 1130 1130 didDrawEntireCanvas(); 1131 } else if (state().globalComposite == Composite Copy) {1131 } else if (state().globalComposite == CompositeOperator::Copy) { 1132 1132 clearCanvas(); 1133 1133 c->strokePath(path); … … 1244 1244 context->setAlpha(1); 1245 1245 } 1246 if (state().globalComposite != Composite SourceOver) {1246 if (state().globalComposite != CompositeOperator::SourceOver) { 1247 1247 if (!saved) { 1248 1248 context->save(); 1249 1249 saved = true; 1250 1250 } 1251 context->setCompositeOperation(Composite SourceOver);1251 context->setCompositeOperation(CompositeOperator::SourceOver); 1252 1252 } 1253 1253 context->clearRect(rect); … … 1285 1285 endCompositeLayer(); 1286 1286 didDrawEntireCanvas(); 1287 } else if (state().globalComposite == Composite Copy) {1287 } else if (state().globalComposite == CompositeOperator::Copy) { 1288 1288 clearCanvas(); 1289 1289 c->fillRect(rect); … … 1319 1319 endCompositeLayer(); 1320 1320 didDrawEntireCanvas(); 1321 } else if (state().globalComposite == Composite Copy) {1321 } else if (state().globalComposite == CompositeOperator::Copy) { 1322 1322 clearCanvas(); 1323 1323 c->strokeRect(rect, state().lineWidth); … … 1581 1581 fullCanvasCompositedDrawImage(*image, normalizedDstRect, normalizedSrcRect, op); 1582 1582 didDrawEntireCanvas(); 1583 } else if (op == Composite Copy) {1583 } else if (op == CompositeOperator::Copy) { 1584 1584 clearCanvas(); 1585 1585 c->drawImage(*image, normalizedDstRect, normalizedSrcRect, options); … … 1639 1639 fullCanvasCompositedDrawImage(*buffer, dstRect, srcRect, state().globalComposite); 1640 1640 didDrawEntireCanvas(); 1641 } else if (state().globalComposite == Composite Copy) {1641 } else if (state().globalComposite == CompositeOperator::Copy) { 1642 1642 if (&sourceCanvas == &canvasBase()) { 1643 1643 if (auto copy = buffer->copyRectToBuffer(srcRect, ColorSpaceSRGB, *c)) { … … 1737 1737 fullCanvasCompositedDrawImage(*buffer, dstRect, srcRect, state().globalComposite); 1738 1738 didDrawEntireCanvas(); 1739 } else if (state().globalComposite == Composite Copy) {1739 } else if (state().globalComposite == CompositeOperator::Copy) { 1740 1740 clearCanvas(); 1741 1741 c->drawImageBuffer(*buffer, dstRect, srcRect, { state().globalComposite, state().globalBlend }); … … 1754 1754 auto blendOp = BlendMode::Normal; 1755 1755 if (!parseCompositeAndBlendOperator(compositeOperation, op, blendOp) || blendOp != BlendMode::Normal) 1756 op = Composite SourceOver;1756 op = CompositeOperator::SourceOver; 1757 1757 drawImage(imageElement, FloatRect { sx, sy, sw, sh }, FloatRect { dx, dy, dw, dh }, op, BlendMode::Normal); 1758 1758 } … … 1867 1867 buffer->context().translate(croppedOffset); 1868 1868 buffer->context().concatCTM(effectiveTransform); 1869 drawImageToContext(image, buffer->context(), adjustedDest, src, { Composite SourceOver });1869 drawImageToContext(image, buffer->context(), adjustedDest, src, { CompositeOperator::SourceOver }); 1870 1870 1871 1871 compositeBuffer(*buffer, bufferRect, op); -
trunk/Source/WebCore/inspector/InspectorOverlay.cpp
r248053 r252965 222 222 context.fillPath(quadToPath(quad, bounds)); 223 223 224 context.setCompositeOperation(Composite DestinationOut);224 context.setCompositeOperation(CompositeOperator::DestinationOut); 225 225 context.setFillColor(Color::createUnchecked(255, 0, 0)); 226 226 context.fillPath(quadToPath(clipQuad, bounds)); -
trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp
r249217 r252965 82 82 context.beginTransparencyLayer(1); 83 83 84 drawCrossfadeSubimage(context, m_fromImage.get(), Composite SourceOver, 1 - m_percentage, m_crossfadeSize);85 drawCrossfadeSubimage(context, m_toImage.get(), Composite PlusLighter, m_percentage, m_crossfadeSize);84 drawCrossfadeSubimage(context, m_fromImage.get(), CompositeOperator::SourceOver, 1 - m_percentage, m_crossfadeSize); 85 drawCrossfadeSubimage(context, m_toImage.get(), CompositeOperator::PlusLighter, m_percentage, m_crossfadeSize); 86 86 87 87 context.endTransparencyLayer(); -
trunk/Source/WebCore/platform/graphics/GraphicsContext.h
r252962 r252965 195 195 196 196 float alpha { 1 }; 197 CompositeOperator compositeOperator { Composite SourceOver };197 CompositeOperator compositeOperator { CompositeOperator::SourceOver }; 198 198 BlendMode blendMode { BlendMode::Normal }; 199 199 InterpolationQuality imageInterpolationQuality { InterpolationDefault }; -
trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp
r249511 r252965 899 899 #if ENABLE(CSS_COMPOSITING) 900 900 if (m_blendMode != BlendMode::Normal) 901 ts << indent << "(blendMode " << compositeOperatorName(Composite SourceOver, m_blendMode) << ")\n";901 ts << indent << "(blendMode " << compositeOperatorName(CompositeOperator::SourceOver, m_blendMode) << ")\n"; 902 902 #endif 903 903 -
trunk/Source/WebCore/platform/graphics/GraphicsTypes.cpp
r234610 r252965 72 72 "plus-lighter" 73 73 }; 74 const int numCompositeOperatorNames = WTF_ARRAY_LENGTH(compositeOperatorNames);75 const u nsignednumBlendOperatorNames = WTF_ARRAY_LENGTH(blendOperatorNames);74 const uint8_t numCompositeOperatorNames = WTF_ARRAY_LENGTH(compositeOperatorNames); 75 const uint8_t numBlendOperatorNames = WTF_ARRAY_LENGTH(blendOperatorNames); 76 76 77 77 bool parseBlendMode(const String& s, BlendMode& blendMode) … … 99 99 if (parseBlendMode(s, blendOp)) { 100 100 // For now, blending will always assume source-over. This will be fixed in the future 101 op = Composite SourceOver;101 op = CompositeOperator::SourceOver; 102 102 return true; 103 103 } … … 110 110 String compositeOperatorName(CompositeOperator op, BlendMode blendOp) 111 111 { 112 ASSERT(op >= 0);113 ASSERT( op< numCompositeOperatorNames);112 ASSERT(op >= CompositeOperator::Clear); 113 ASSERT(static_cast<uint8_t>(op) < numCompositeOperatorNames); 114 114 ASSERT(blendOp >= BlendMode::Normal); 115 ASSERT(static_cast<u nsigned>(blendOp) <= numBlendOperatorNames);115 ASSERT(static_cast<uint8_t>(blendOp) <= numBlendOperatorNames); 116 116 if (blendOp > BlendMode::Normal) 117 117 return blendOperatorNames[static_cast<unsigned>(blendOp) - static_cast<unsigned>(BlendMode::Normal)]; 118 return compositeOperatorNames[ op];118 return compositeOperatorNames[static_cast<unsigned>(op)]; 119 119 } 120 120 -
trunk/Source/WebCore/platform/graphics/GraphicsTypes.h
r234610 r252965 27 27 28 28 #include "WindRule.h" 29 #include <wtf/EnumTraits.h> 29 30 #include <wtf/Forward.h> 30 31 … … 35 36 namespace WebCore { 36 37 37 enum CompositeOperator{38 C ompositeClear,39 Co mpositeCopy,40 CompositeSourceOver,41 CompositeSourceIn,42 CompositeSourceOut,43 CompositeSourceAtop,44 CompositeDestinationOver,45 CompositeDestinationIn,46 CompositeDestinationOut,47 CompositeDestinationAtop,48 CompositeXOR,49 CompositePlusDarker,50 CompositePlusLighter,51 CompositeDifference38 enum class CompositeOperator : uint8_t { 39 Clear, 40 Copy, 41 SourceOver, 42 SourceIn, 43 SourceOut, 44 SourceAtop, 45 DestinationOver, 46 DestinationIn, 47 DestinationOut, 48 DestinationAtop, 49 XOR, 50 PlusDarker, 51 PlusLighter, 52 Difference 52 53 }; 53 54 54 enum class BlendMode {55 enum class BlendMode : uint8_t { 55 56 Normal = 1, // Start with 1 to match SVG's blendmode enumeration. 56 57 Multiply, … … 147 148 } // namespace WebCore 148 149 150 namespace WTF { 151 152 template<> struct EnumTraits<WebCore::CompositeOperator> { 153 using values = EnumValues< 154 WebCore::CompositeOperator, 155 WebCore::CompositeOperator::Clear, 156 WebCore::CompositeOperator::Copy, 157 WebCore::CompositeOperator::SourceOver, 158 WebCore::CompositeOperator::SourceIn, 159 WebCore::CompositeOperator::SourceOut, 160 WebCore::CompositeOperator::SourceAtop, 161 WebCore::CompositeOperator::DestinationOver, 162 WebCore::CompositeOperator::DestinationIn, 163 WebCore::CompositeOperator::DestinationOut, 164 WebCore::CompositeOperator::DestinationAtop, 165 WebCore::CompositeOperator::XOR, 166 WebCore::CompositeOperator::PlusDarker, 167 WebCore::CompositeOperator::PlusLighter, 168 WebCore::CompositeOperator::Difference 169 >; 170 }; 171 172 template<> struct EnumTraits<WebCore::BlendMode> { 173 using values = EnumValues< 174 WebCore::BlendMode, 175 WebCore::BlendMode::Normal, 176 WebCore::BlendMode::Multiply, 177 WebCore::BlendMode::Screen, 178 WebCore::BlendMode::Darken, 179 WebCore::BlendMode::Lighten, 180 WebCore::BlendMode::Overlay, 181 WebCore::BlendMode::ColorDodge, 182 WebCore::BlendMode::ColorBurn, 183 WebCore::BlendMode::HardLight, 184 WebCore::BlendMode::SoftLight, 185 WebCore::BlendMode::Difference, 186 WebCore::BlendMode::Exclusion, 187 WebCore::BlendMode::Hue, 188 WebCore::BlendMode::Saturation, 189 WebCore::BlendMode::Color, 190 WebCore::BlendMode::Luminosity, 191 WebCore::BlendMode::PlusDarker, 192 WebCore::BlendMode::PlusLighter 193 >; 194 }; 195 196 } // namespace WTF -
trunk/Source/WebCore/platform/graphics/Image.cpp
r249217 r252965 133 133 134 134 CompositeOperator previousOperator = ctxt.compositeOperation(); 135 ctxt.setCompositeOperation(color.isOpaque() && op == Composite SourceOver ? CompositeCopy : op);135 ctxt.setCompositeOperation(color.isOpaque() && op == CompositeOperator::SourceOver ? CompositeOperator::Copy : op); 136 136 ctxt.fillRect(dstRect, color); 137 137 ctxt.setCompositeOperation(previousOperator); -
trunk/Source/WebCore/platform/graphics/ImagePaintingOptions.h
r249217 r252965 70 70 void setOption(InterpolationQuality interpolationQuality) { m_interpolationQuality = interpolationQuality; } 71 71 72 CompositeOperator m_compositeOperator { Composite SourceOver };72 CompositeOperator m_compositeOperator { CompositeOperator::SourceOver }; 73 73 BlendMode m_blendMode { BlendMode::Normal }; 74 74 DecodingMode m_decodingMode { DecodingMode::Synchronous }; -
trunk/Source/WebCore/platform/graphics/ShadowBlur.cpp
r247385 r252965 900 900 GraphicsContext& shadowContext = layerImage.context(); 901 901 GraphicsContextStateSaver stateSaver(shadowContext); 902 shadowContext.setCompositeOperation(Composite SourceIn);902 shadowContext.setCompositeOperation(CompositeOperator::SourceIn); 903 903 shadowContext.setFillColor(m_color); 904 904 shadowContext.fillRect(FloatRect(0, 0, templateSize.width(), templateSize.height())); -
trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp
r252136 r252965 871 871 872 872 // Set the compositing operation. 873 if (options.compositeOperator() == Composite SourceOver && options.blendMode() == BlendMode::Normal && !cairoSurfaceHasAlpha(surface))874 Cairo::State::setCompositeOperation(platformContext, Composite Copy, BlendMode::Normal);873 if (options.compositeOperator() == CompositeOperator::SourceOver && options.blendMode() == BlendMode::Normal && !cairoSurfaceHasAlpha(surface)) 874 Cairo::State::setCompositeOperation(platformContext, CompositeOperator::Copy, BlendMode::Normal); 875 875 else 876 876 Cairo::State::setCompositeOperation(platformContext, options.compositeOperator(), options.blendMode()); -
trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.h
r249217 r252965 119 119 120 120 float globalAlpha { 1.0 }; 121 CompositeOperator globalCompositeOperator { Composite SourceOver };121 CompositeOperator globalCompositeOperator { CompositeOperator::SourceOver }; 122 122 }; 123 123 -
trunk/Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp
r237119 r252965 129 129 { 130 130 switch (op) { 131 case Composite Clear:131 case CompositeOperator::Clear: 132 132 return CAIRO_OPERATOR_CLEAR; 133 case Composite Copy:133 case CompositeOperator::Copy: 134 134 return CAIRO_OPERATOR_SOURCE; 135 case Composite SourceOver:135 case CompositeOperator::SourceOver: 136 136 return CAIRO_OPERATOR_OVER; 137 case Composite SourceIn:137 case CompositeOperator::SourceIn: 138 138 return CAIRO_OPERATOR_IN; 139 case Composite SourceOut:139 case CompositeOperator::SourceOut: 140 140 return CAIRO_OPERATOR_OUT; 141 case Composite SourceAtop:141 case CompositeOperator::SourceAtop: 142 142 return CAIRO_OPERATOR_ATOP; 143 case Composite DestinationOver:143 case CompositeOperator::DestinationOver: 144 144 return CAIRO_OPERATOR_DEST_OVER; 145 case Composite DestinationIn:145 case CompositeOperator::DestinationIn: 146 146 return CAIRO_OPERATOR_DEST_IN; 147 case Composite DestinationOut:147 case CompositeOperator::DestinationOut: 148 148 return CAIRO_OPERATOR_DEST_OUT; 149 case Composite DestinationAtop:149 case CompositeOperator::DestinationAtop: 150 150 return CAIRO_OPERATOR_DEST_ATOP; 151 case Composite XOR:151 case CompositeOperator::XOR: 152 152 return CAIRO_OPERATOR_XOR; 153 case Composite PlusDarker:153 case CompositeOperator::PlusDarker: 154 154 return CAIRO_OPERATOR_DARKEN; 155 case Composite PlusLighter:155 case CompositeOperator::PlusLighter: 156 156 return CAIRO_OPERATOR_ADD; 157 case Composite Difference:157 case CompositeOperator::Difference: 158 158 return CAIRO_OPERATOR_DIFFERENCE; 159 159 default: -
trunk/Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp
r249217 r252965 540 540 context.translate(0, -imageSize.height()); 541 541 context.setImageInterpolationQuality(InterpolationNone); 542 context.drawNativeImage(cgImage, imageSize, canvasRect, FloatRect(FloatPoint(), imageSize), { Composite Copy });542 context.drawNativeImage(cgImage, imageSize, canvasRect, FloatRect(FloatPoint(), imageSize), { CompositeOperator::Copy }); 543 543 } 544 544 -
trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp
r250595 r252965 162 162 case BlendMode::Normal: 163 163 switch (compositeOperator) { 164 case Composite Clear:164 case CompositeOperator::Clear: 165 165 return kCGBlendModeClear; 166 case Composite Copy:166 case CompositeOperator::Copy: 167 167 return kCGBlendModeCopy; 168 case Composite SourceOver:168 case CompositeOperator::SourceOver: 169 169 return kCGBlendModeNormal; 170 case Composite SourceIn:170 case CompositeOperator::SourceIn: 171 171 return kCGBlendModeSourceIn; 172 case Composite SourceOut:172 case CompositeOperator::SourceOut: 173 173 return kCGBlendModeSourceOut; 174 case Composite SourceAtop:174 case CompositeOperator::SourceAtop: 175 175 return kCGBlendModeSourceAtop; 176 case Composite DestinationOver:176 case CompositeOperator::DestinationOver: 177 177 return kCGBlendModeDestinationOver; 178 case Composite DestinationIn:178 case CompositeOperator::DestinationIn: 179 179 return kCGBlendModeDestinationIn; 180 case Composite DestinationOut:180 case CompositeOperator::DestinationOut: 181 181 return kCGBlendModeDestinationOut; 182 case Composite DestinationAtop:182 case CompositeOperator::DestinationAtop: 183 183 return kCGBlendModeDestinationAtop; 184 case Composite XOR:184 case CompositeOperator::XOR: 185 185 return kCGBlendModeXOR; 186 case Composite PlusDarker:186 case CompositeOperator::PlusDarker: 187 187 return kCGBlendModePlusDarker; 188 case Composite PlusLighter:188 case CompositeOperator::PlusLighter: 189 189 return kCGBlendModePlusLighter; 190 case Composite Difference:190 case CompositeOperator::Difference: 191 191 return kCGBlendModeDifference; 192 192 } -
trunk/Source/WebCore/platform/graphics/filters/FEBlend.cpp
r249217 r252965 71 71 72 72 filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect())); 73 filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), { Composite SourceOver, m_mode });73 filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), { CompositeOperator::SourceOver, m_mode }); 74 74 } 75 75 #endif … … 79 79 ts << indent << "[feBlend"; 80 80 FilterEffect::externalRepresentation(ts, representation); 81 ts << " mode=\"" << (m_mode == BlendMode::Normal ? "normal" : compositeOperatorName(Composite SourceOver, m_mode)) << "\"]\n";81 ts << " mode=\"" << (m_mode == BlendMode::Normal ? "normal" : compositeOperatorName(CompositeOperator::SourceOver, m_mode)) << "\"]\n"; 82 82 83 83 TextStream::IndentScope indentScope(ts); -
trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp
r249217 r252965 272 272 IntRect source2Rect = destinationRect - in2->absolutePaintRect().location(); 273 273 filterContext.drawImageBuffer(*imageBuffer2, FloatRect(adjustedDestinationRect), FloatRect(source2Rect)); 274 filterContext.drawImageBuffer(*imageBuffer, FloatRect(adjustedDestinationRect), FloatRect(sourceRect), { Composite SourceIn });274 filterContext.drawImageBuffer(*imageBuffer, FloatRect(adjustedDestinationRect), FloatRect(sourceRect), { CompositeOperator::SourceIn }); 275 275 break; 276 276 } 277 277 case FECOMPOSITE_OPERATOR_OUT: 278 278 filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect())); 279 filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect()), IntRect(IntPoint(), imageBuffer2->logicalSize()), Composite DestinationOut);279 filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect()), IntRect(IntPoint(), imageBuffer2->logicalSize()), CompositeOperator::DestinationOut); 280 280 break; 281 281 case FECOMPOSITE_OPERATOR_ATOP: 282 282 filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect())); 283 filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), Composite SourceAtop);283 filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeOperator::SourceAtop); 284 284 break; 285 285 case FECOMPOSITE_OPERATOR_XOR: 286 286 filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect())); 287 filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), Composite XOR);287 filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeOperator::XOR); 288 288 break; 289 289 case FECOMPOSITE_OPERATOR_LIGHTER: 290 290 filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect())); 291 filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), Composite PlusLighter);291 filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeOperator::PlusLighter); 292 292 break; 293 293 default: -
trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp
r251119 r252965 109 109 resultImage->putByteArray(*srcPixelArray, AlphaPremultiplication::Premultiplied, shadowArea.size(), shadowArea, IntPoint(), ImageBuffer::BackingStoreCoordinateSystem); 110 110 111 resultContext.setCompositeOperation(Composite SourceIn);111 resultContext.setCompositeOperation(CompositeOperator::SourceIn); 112 112 resultContext.fillRect(FloatRect(FloatPoint(), absolutePaintRect().size()), m_shadowColor); 113 resultContext.setCompositeOperation(Composite DestinationOver);113 resultContext.setCompositeOperation(CompositeOperator::DestinationOver); 114 114 115 115 resultImage->context().drawImageBuffer(*sourceImage, drawingRegion); -
trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp
r246490 r252965 61 61 FloatRect imageRect(FloatPoint(), absolutePaintRect().size()); 62 62 filterContext.fillRect(imageRect, Color::black); 63 filterContext.drawImageBuffer(*imageBuffer, IntPoint(), Composite DestinationIn);63 filterContext.drawImageBuffer(*imageBuffer, IntPoint(), CompositeOperator::DestinationIn); 64 64 } 65 65 -
trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp
r252950 r252965 3256 3256 return; 3257 3257 3258 context.drawImage(gstImage->image(), rect, gstImage->rect(), { Composite Copy, m_canRenderingBeAccelerated ? m_videoSourceOrientation : ImageOrientation() });3258 context.drawImage(gstImage->image(), rect, gstImage->rect(), { CompositeOperator::Copy, m_canRenderingBeAccelerated ? m_videoSourceOrientation : ImageOrientation() }); 3259 3259 } 3260 3260 -
trunk/Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineBasic.cpp
r232931 r252965 56 56 57 57 if (supportsAlpha) { 58 context.setCompositeOperation(Composite Copy);58 context.setCompositeOperation(CompositeOperator::Copy); 59 59 context.fillRect(IntRect(IntPoint::zero(), sourceRect.size()), Color::transparent); 60 context.setCompositeOperation(Composite SourceOver);60 context.setCompositeOperation(CompositeOperator::SourceOver); 61 61 } 62 62 -
trunk/Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp
r242205 r252965 47 47 48 48 if (supportsAlpha) { 49 context.setCompositeOperation(Composite Copy);49 context.setCompositeOperation(CompositeOperator::Copy); 50 50 context.fillRect(IntRect(IntPoint::zero(), sourceRect.size()), Color::transparent); 51 context.setCompositeOperation(Composite SourceOver);51 context.setCompositeOperation(CompositeOperator::SourceOver); 52 52 } 53 53 -
trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp
r251837 r252965 826 826 { 827 827 IntRect rect { { }, IntSize { image.size() } }; 828 context.drawImage(image, rect, rect, ImagePaintingOptions(Composite Copy));828 context.drawImage(image, rect, rect, ImagePaintingOptions(CompositeOperator::Copy)); 829 829 }); 830 830 layerState.nativeImageID = nativeImageID; -
trunk/Source/WebCore/platform/graphics/win/Direct2DOperations.cpp
r250581 r252965 190 190 } else { 191 191 switch (compositeOperation) { 192 case Composite Clear:192 case CompositeOperator::Clear: 193 193 // FIXME: targetBlendMode = D2D1_BLEND_MODE_CLEAR; 194 194 break; 195 case Composite Copy:195 case CompositeOperator::Copy: 196 196 targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_COPY; 197 197 break; 198 case Composite SourceOver:198 case CompositeOperator::SourceOver: 199 199 targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_OVER; 200 200 break; 201 case Composite SourceIn:201 case CompositeOperator::SourceIn: 202 202 targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_IN; 203 203 break; 204 case Composite SourceOut:204 case CompositeOperator::SourceOut: 205 205 targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_OUT; 206 206 break; 207 case Composite SourceAtop:207 case CompositeOperator::SourceAtop: 208 208 targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_ATOP; 209 209 break; 210 case Composite DestinationOver:210 case CompositeOperator::DestinationOver: 211 211 targetCompositeMode = D2D1_COMPOSITE_MODE_DESTINATION_OVER; 212 212 break; 213 case Composite DestinationIn:213 case CompositeOperator::DestinationIn: 214 214 targetCompositeMode = D2D1_COMPOSITE_MODE_DESTINATION_IN; 215 215 break; 216 case Composite DestinationOut:216 case CompositeOperator::DestinationOut: 217 217 targetCompositeMode = D2D1_COMPOSITE_MODE_DESTINATION_OUT; 218 218 break; 219 case Composite DestinationAtop:219 case CompositeOperator::DestinationAtop: 220 220 targetCompositeMode = D2D1_COMPOSITE_MODE_DESTINATION_ATOP; 221 221 break; 222 case Composite XOR:222 case CompositeOperator::XOR: 223 223 targetCompositeMode = D2D1_COMPOSITE_MODE_XOR; 224 224 break; 225 case Composite PlusDarker:225 case CompositeOperator::PlusDarker: 226 226 targetBlendMode = D2D1_BLEND_MODE_DARKEN; 227 227 break; 228 case Composite PlusLighter:228 case CompositeOperator::PlusLighter: 229 229 targetBlendMode = D2D1_BLEND_MODE_LIGHTEN; 230 230 break; 231 case Composite Difference:231 case CompositeOperator::Difference: 232 232 targetBlendMode = D2D1_BLEND_MODE_DIFFERENCE; 233 233 break; -
trunk/Source/WebCore/platform/graphics/win/Direct2DOperations.h
r250492 r252965 107 107 108 108 float globalAlpha { 1.0 }; 109 CompositeOperator globalCompositeOperator { Composite SourceOver };109 CompositeOperator globalCompositeOperator { CompositeOperator::SourceOver }; 110 110 }; 111 111 -
trunk/Source/WebCore/platform/graphics/win/ImageCGWin.cpp
r249217 r252965 78 78 FloatSize imageSize = BitmapImage::size(); 79 79 if (size) 80 drawFrameMatchingSourceSize(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, Composite Copy);80 drawFrameMatchingSourceSize(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, CompositeOperator::Copy); 81 81 else 82 draw(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), { Composite Copy });82 draw(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), { CompositeOperator::Copy }); 83 83 84 84 // Do cleanup -
trunk/Source/WebCore/platform/graphics/win/ImageCairoWin.cpp
r249217 r252965 80 80 FloatSize imageSize = BitmapImage::size(); 81 81 if (size) 82 drawFrameMatchingSourceSize(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, Composite Copy);82 drawFrameMatchingSourceSize(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, CompositeOperator::Copy); 83 83 else 84 draw(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), { Composite Copy });84 draw(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), { CompositeOperator::Copy }); 85 85 86 86 // Do cleanup -
trunk/Source/WebCore/rendering/InlineFlowBox.cpp
r252161 r252965 1439 1439 bool compositedMask = renderer().hasLayer() && renderer().layer()->hasCompositedMask(); 1440 1440 bool flattenCompositingLayers = renderer().view().frameView().paintBehavior().contains(PaintBehavior::FlattenCompositingLayers); 1441 CompositeOperator compositeOp = Composite SourceOver;1441 CompositeOperator compositeOp = CompositeOperator::SourceOver; 1442 1442 if (!compositedMask || flattenCompositingLayers) { 1443 1443 if ((maskBoxImage && renderer().style().maskLayers().hasImage()) || renderer().style().maskLayers().next()) 1444 1444 pushTransparencyLayer = true; 1445 1445 1446 compositeOp = Composite DestinationIn;1446 compositeOp = CompositeOperator::DestinationIn; 1447 1447 if (pushTransparencyLayer) { 1448 paintInfo.context().setCompositeOperation(Composite DestinationIn);1448 paintInfo.context().setCompositeOperation(CompositeOperator::DestinationIn); 1449 1449 paintInfo.context().beginTransparencyLayer(1.0f); 1450 compositeOp = Composite SourceOver;1450 compositeOp = CompositeOperator::SourceOver; 1451 1451 } 1452 1452 } -
trunk/Source/WebCore/rendering/InlineFlowBox.h
r250341 r252965 116 116 void paintBoxDecorations(PaintInfo&, const LayoutPoint&); 117 117 void paintMask(PaintInfo&, const LayoutPoint&); 118 void paintFillLayers(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, CompositeOperator = Composite SourceOver);119 void paintFillLayer(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, CompositeOperator = Composite SourceOver);118 void paintFillLayers(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, CompositeOperator = CompositeOperator::SourceOver); 119 void paintFillLayer(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, CompositeOperator = CompositeOperator::SourceOver); 120 120 void paintBoxShadow(const PaintInfo&, const RenderStyle&, ShadowStyle, const LayoutRect&); 121 121 void paint(PaintInfo&, const LayoutPoint&, LayoutUnit lineTop, LayoutUnit lineBottom) override; -
trunk/Source/WebCore/rendering/RenderBox.cpp
r252724 r252965 1590 1590 bool compositedMask = hasLayer() && layer()->hasCompositedMask(); 1591 1591 bool flattenCompositingLayers = paintInfo.paintBehavior.contains(PaintBehavior::FlattenCompositingLayers); 1592 CompositeOperator compositeOp = Composite SourceOver;1592 CompositeOperator compositeOp = CompositeOperator::SourceOver; 1593 1593 1594 1594 bool allMaskImagesLoaded = true; … … 1603 1603 allMaskImagesLoaded &= style().maskLayers().imagesAreLoaded(); 1604 1604 1605 paintInfo.context().setCompositeOperation(Composite DestinationIn);1605 paintInfo.context().setCompositeOperation(CompositeOperator::DestinationIn); 1606 1606 paintInfo.context().beginTransparencyLayer(1); 1607 compositeOp = Composite SourceOver;1607 compositeOp = CompositeOperator::SourceOver; 1608 1608 } 1609 1609 -
trunk/Source/WebCore/rendering/RenderBox.h
r252724 r252965 668 668 669 669 void paintFillLayer(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance, CompositeOperator, RenderElement* backgroundObject, BaseBackgroundColorUsage = BaseBackgroundColorUse); 670 void paintFillLayers(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance = BackgroundBleedNone, CompositeOperator = Composite SourceOver, RenderElement* backgroundObject = nullptr);670 void paintFillLayers(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance = BackgroundBleedNone, CompositeOperator = CompositeOperator::SourceOver, RenderElement* backgroundObject = nullptr); 671 671 672 672 void paintMaskImages(const PaintInfo&, const LayoutRect&); -
trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp
r252689 r252965 927 927 if (!baseBgColorOnly && bgColor.isVisible()) 928 928 baseColor = baseColor.blend(bgColor); 929 context.fillRect(backgroundRectForPainting, baseColor, Composite Copy);929 context.fillRect(backgroundRectForPainting, baseColor, CompositeOperator::Copy); 930 930 } else if (!baseBgColorOnly && bgColor.isVisible()) { 931 931 auto operation = context.compositeOperation(); 932 932 if (shouldClearBackground) { 933 if (op == Composite DestinationOut) // We're punching out the background.933 if (op == CompositeOperator::DestinationOut) // We're punching out the background. 934 934 operation = op; 935 935 else 936 operation = Composite Copy;936 operation = CompositeOperator::Copy; 937 937 } 938 938 context.fillRect(backgroundRectForPainting, bgColor, operation); … … 954 954 955 955 ImagePaintingOptions options = { 956 op == Composite SourceOver ? bgLayer.composite() : op,956 op == CompositeOperator::SourceOver ? bgLayer.composite() : op, 957 957 bgLayer.blendMode(), 958 958 decodingModeForImageDraw(*image, paintInfo), … … 970 970 971 971 if (maskImage && bgLayer.clip() == FillBox::Text) { 972 context.drawConsumingImageBuffer(WTFMove(maskImage), maskRect, Composite DestinationIn);972 context.drawConsumingImageBuffer(WTFMove(maskImage), maskRect, CompositeOperator::DestinationIn); 973 973 context.endTransparencyLayer(); 974 974 } -
trunk/Source/WebCore/rendering/RenderBoxModelObject.h
r247256 r252965 204 204 205 205 void paintBorder(const PaintInfo&, const LayoutRect&, const RenderStyle&, BackgroundBleedAvoidance = BackgroundBleedNone, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true); 206 bool paintNinePieceImage(GraphicsContext&, const LayoutRect&, const RenderStyle&, const NinePieceImage&, CompositeOperator = Composite SourceOver);206 bool paintNinePieceImage(GraphicsContext&, const LayoutRect&, const RenderStyle&, const NinePieceImage&, CompositeOperator = CompositeOperator::SourceOver); 207 207 void paintBoxShadow(const PaintInfo&, const LayoutRect&, const RenderStyle&, ShadowStyle, bool includeLogicalLeftEdge = true, bool includeLogicalRightEdge = true); 208 void paintFillLayerExtended(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox* = nullptr, const LayoutSize& = LayoutSize(), CompositeOperator = Composite SourceOver, RenderElement* backgroundObject = nullptr, BaseBackgroundColorUsage = BaseBackgroundColorUse);208 void paintFillLayerExtended(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance, InlineFlowBox* = nullptr, const LayoutSize& = LayoutSize(), CompositeOperator = CompositeOperator::SourceOver, RenderElement* backgroundObject = nullptr, BaseBackgroundColorUsage = BaseBackgroundColorUse); 209 209 210 210 virtual bool boxShadowShouldBeAppliedToBackground(const LayoutPoint& absolutePaintPostion, BackgroundBleedAvoidance, InlineFlowBox* = nullptr) const; -
trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp
r249217 r252965 340 340 context.fillEllipse(arrowRect); 341 341 342 context.setCompositeOperation(Composite Clear);342 context.setCompositeOperation(CompositeOperator::Clear); 343 343 drawReplacementArrow(context, arrowRect); 344 344 context.endTransparencyLayer(); -
trunk/Source/WebCore/rendering/RenderImage.cpp
r252828 r252965 646 646 647 647 ImagePaintingOptions options = { 648 imageElement ? imageElement->compositeOperator() : Composite SourceOver,648 imageElement ? imageElement->compositeOperator() : CompositeOperator::SourceOver, 649 649 decodingModeForImageDraw(*image, paintInfo), 650 650 imageOrientation(), -
trunk/Source/WebCore/rendering/RenderLayerBacking.cpp
r252419 r252965 2280 2280 2281 2281 // FIXME: we should be able to allow backgroundComposite; However since this is not a common use case it has been deferred for now. 2282 if (style.backgroundComposite() != Composite SourceOver)2282 if (style.backgroundComposite() != CompositeOperator::SourceOver) 2283 2283 return false; 2284 2284 -
trunk/Source/WebCore/rendering/RenderTreeAsText.cpp
r252959 r252965 639 639 ts << " isolatesBlending"; 640 640 if (layer.hasBlendMode()) 641 ts << " blendMode: " << compositeOperatorName(Composite SourceOver, layer.blendMode());641 ts << " blendMode: " << compositeOperatorName(CompositeOperator::SourceOver, layer.blendMode()); 642 642 #endif 643 643 -
trunk/Source/WebCore/rendering/RenderView.cpp
r252935 r252965 422 422 if (backgroundColor.isVisible()) { 423 423 CompositeOperator previousOperator = paintInfo.context().compositeOperation(); 424 paintInfo.context().setCompositeOperation(Composite Copy);424 paintInfo.context().setCompositeOperation(CompositeOperator::Copy); 425 425 paintInfo.context().fillRect(paintInfo.rect, backgroundColor); 426 426 paintInfo.context().setCompositeOperation(previousOperator); -
trunk/Source/WebCore/rendering/style/FillLayer.cpp
r249236 r252965 53 53 , m_repeatX(static_cast<unsigned>(FillLayer::initialFillRepeatX(type))) 54 54 , m_repeatY(static_cast<unsigned>(FillLayer::initialFillRepeatY(type))) 55 , m_composite( FillLayer::initialFillComposite(type))55 , m_composite(static_cast<unsigned>(FillLayer::initialFillComposite(type))) 56 56 , m_sizeType(static_cast<unsigned>(FillSizeType::None)) 57 57 , m_blendMode(static_cast<unsigned>(FillLayer::initialFillBlendMode(type))) … … 355 355 return false; 356 356 357 if ( m_composite == CompositeClear || m_composite == CompositeCopy)357 if (static_cast<CompositeOperator>(m_composite) == CompositeOperator::Clear || static_cast<CompositeOperator>(m_composite) == CompositeOperator::Copy) 358 358 return true; 359 359 360 return static_cast<BlendMode>(m_blendMode) == BlendMode::Normal && m_composite == CompositeSourceOver && m_image->knownToBeOpaque(&renderer);360 return static_cast<BlendMode>(m_blendMode) == BlendMode::Normal && static_cast<CompositeOperator>(m_composite) == CompositeOperator::SourceOver && m_image->knownToBeOpaque(&renderer); 361 361 } 362 362 -
trunk/Source/WebCore/rendering/style/FillLayer.h
r249236 r252965 164 164 static FillRepeat initialFillRepeatX(FillLayerType) { return FillRepeat::Repeat; } 165 165 static FillRepeat initialFillRepeatY(FillLayerType) { return FillRepeat::Repeat; } 166 static CompositeOperator initialFillComposite(FillLayerType) { return Composite SourceOver; }166 static CompositeOperator initialFillComposite(FillLayerType) { return CompositeOperator::SourceOver; } 167 167 static BlendMode initialFillBlendMode(FillLayerType) { return BlendMode::Normal; } 168 168 static FillSize initialFillSize(FillLayerType) { return { }; } -
trunk/Source/WebCore/svg/graphics/SVGImage.cpp
r251413 r252965 248 248 GraphicsContext localContext(&platformContext, GraphicsContext::BitmapRenderingContextType::GPUMemory); 249 249 250 draw(localContext, rect(), rect(), { Composite SourceOver, BlendMode::Normal, DecodingMode::Synchronous, ImageOrientation::None });250 draw(localContext, rect(), rect(), { CompositeOperator::SourceOver, BlendMode::Normal, DecodingMode::Synchronous, ImageOrientation::None }); 251 251 252 252 COMPtr<ID2D1Bitmap> nativeImage; … … 314 314 315 315 float alpha = context.alpha(); 316 bool compositingRequiresTransparencyLayer = options.compositeOperator() != Composite SourceOver || options.blendMode() != BlendMode::Normal || alpha < 1;316 bool compositingRequiresTransparencyLayer = options.compositeOperator() != CompositeOperator::SourceOver || options.blendMode() != BlendMode::Normal || alpha < 1; 317 317 if (compositingRequiresTransparencyLayer) { 318 318 context.beginTransparencyLayer(alpha); 319 context.setCompositeOperation(Composite SourceOver, BlendMode::Normal);319 context.setCompositeOperation(CompositeOperator::SourceOver, BlendMode::Normal); 320 320 } 321 321 -
trunk/Source/WebKit/ChangeLog
r252962 r252965 1 2019-11-30 Tim Horton <timothy_horton@apple.com> 2 3 Make CompositeOperator and BlendMode encodable 4 https://bugs.webkit.org/show_bug.cgi?id=204722 5 6 Reviewed by Eric Carlson. 7 8 * UIProcess/cairo/BackingStoreCairo.cpp: 9 (WebKit::BackingStore::incorporateUpdate): 10 * WebProcess/Plugins/PluginProxy.cpp: 11 (WebKit::PluginProxy::paint): 12 (WebKit::PluginProxy::update): 13 * WebProcess/WebPage/FindController.cpp: 14 (WebKit::FindController::drawRect): 15 1 16 2019-11-30 Tim Horton <timothy_horton@apple.com> 2 17 -
trunk/Source/WebKit/UIProcess/cairo/BackingStoreCairo.cpp
r248846 r252965 88 88 89 89 // When m_webPageProxy.drawsBackground() is false, bitmap contains transparent parts as a background of the webpage. 90 // For such case, bitmap must be drawn using Composite Copy to overwrite the existing surface.91 graphicsContext.setCompositeOperation(WebCore::Composite Copy);90 // For such case, bitmap must be drawn using CompositeOperator::Copy to overwrite the existing surface. 91 graphicsContext.setCompositeOperation(WebCore::CompositeOperator::Copy); 92 92 93 93 for (const auto& updateRect : updateInfo.updateRects) { -
trunk/Source/WebKit/WebProcess/Plugins/PluginProxy.cpp
r248846 r252965 216 216 if (graphicsContext) { 217 217 graphicsContext->applyDeviceScaleFactor(contentsScaleFactor()); 218 graphicsContext->setCompositeOperation(Composite Copy);218 graphicsContext->setCompositeOperation(CompositeOperator::Copy); 219 219 220 220 m_pluginBackingStore->paint(*graphicsContext, contentsScaleFactor(), IntPoint(), pluginBounds()); … … 728 728 if (graphicsContext) { 729 729 graphicsContext->applyDeviceScaleFactor(contentsScaleFactor()); 730 graphicsContext->setCompositeOperation(Composite Copy);730 graphicsContext->setCompositeOperation(CompositeOperator::Copy); 731 731 m_pluginBackingStore->paint(*graphicsContext, contentsScaleFactor(), paintedRect.location(), paintedRect); 732 732 } -
trunk/Source/WebKit/WebProcess/WebPage/FindController.cpp
r252658 r252965 538 538 539 539 // Clear out the holes. 540 graphicsContext.setCompositeOperation(Composite Clear);540 graphicsContext.setCompositeOperation(CompositeOperator::Clear); 541 541 for (auto& path : whiteFramePaths) 542 542 graphicsContext.fillPath(path); -
trunk/Source/WebKitLegacy/win/ChangeLog
r251835 r252965 1 2019-11-30 Tim Horton <timothy_horton@apple.com> 2 3 Make CompositeOperator and BlendMode encodable 4 https://bugs.webkit.org/show_bug.cgi?id=204722 5 6 Reviewed by Eric Carlson. 7 8 * FullscreenVideoController.cpp: 9 (FullscreenVideoController::draw): 10 * WebView.cpp: 11 (WebView::paintWithDirect2D): 12 (WebView::paintIntoBackingStore): 13 1 14 2019-10-31 Ryosuke Niwa <rniwa@webkit.org> 2 15 -
trunk/Source/WebKitLegacy/win/FullscreenVideoController.cpp
r248846 r252965 502 502 503 503 context.fillRoundedRect(FloatRoundedRect(outerRect, outerRadius, outerRadius, outerRadius, outerRadius), Color(borderColor)); 504 context.setCompositeOperation(Composite Copy);504 context.setCompositeOperation(CompositeOperator::Copy); 505 505 context.fillRoundedRect(FloatRoundedRect(innerRect, innerRadius, innerRadius, innerRadius, innerRadius), Color(backgroundColor)); 506 506 -
trunk/Source/WebKitLegacy/win/WebView.cpp
r251425 r252965 1269 1269 frameView->paint(gc, logicalDirtyRect); 1270 1270 if (m_shouldInvertColors) 1271 gc.fillRect(logicalDirtyRect, Color::white, Composite Difference);1271 gc.fillRect(logicalDirtyRect, Color::white, CompositeOperator::Difference); 1272 1272 gc.restore(); 1273 1273 } … … 1421 1421 frameView->paint(gc, logicalDirtyRect); 1422 1422 if (m_shouldInvertColors) 1423 gc.fillRect(logicalDirtyRect, Color::white, Composite Difference);1423 gc.fillRect(logicalDirtyRect, Color::white, CompositeOperator::Difference); 1424 1424 gc.restore(); 1425 1425 }
Note: See TracChangeset
for help on using the changeset viewer.