Changeset 252965 in webkit


Ignore:
Timestamp:
Nov 30, 2019 10:10:25 PM (4 years ago)
Author:
timothy_horton@apple.com
Message:

Make CompositeOperator and BlendMode encodable
https://bugs.webkit.org/show_bug.cgi?id=204722

Reviewed by Eric Carlson.

Source/WebCore:

Make CompositeOperator an enum class, and fix the fallout.
Add EnumTraits for CompositeOperator and BlendMode, so that they can be encoded.

  • css/CSSPrimitiveValueMappings.h:

(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):
(WebCore::CSSPrimitiveValue::operator CompositeOperator const):

  • dom/Document.cpp:

(WebCore::Document::compositeOperatorForBackgroundColor const):

  • html/HTMLImageElement.cpp:

(WebCore::HTMLImageElement::HTMLImageElement):
(WebCore::HTMLImageElement::parseAttribute):

  • html/canvas/CanvasRenderingContext2D.cpp:

(WebCore::CanvasRenderingContext2D::drawTextInternal):

  • html/canvas/CanvasRenderingContext2DBase.cpp:

(WebCore::CanvasRenderingContext2DBase::State::State):
(WebCore::CanvasRenderingContext2DBase::setGlobalCompositeOperation):
(WebCore::CanvasRenderingContext2DBase::isFullCanvasCompositeMode):
(WebCore::CanvasRenderingContext2DBase::fillInternal):
(WebCore::CanvasRenderingContext2DBase::strokeInternal):
(WebCore::CanvasRenderingContext2DBase::clearRect):
(WebCore::CanvasRenderingContext2DBase::fillRect):
(WebCore::CanvasRenderingContext2DBase::strokeRect):
(WebCore::CanvasRenderingContext2DBase::drawImage):
(WebCore::CanvasRenderingContext2DBase::drawImageFromRect):
(WebCore::CanvasRenderingContext2DBase::fullCanvasCompositedDrawImage):

  • inspector/InspectorOverlay.cpp:

(WebCore::drawOutlinedQuadWithClip):

  • platform/graphics/CrossfadeGeneratedImage.cpp:

(WebCore::CrossfadeGeneratedImage::drawCrossfade):

  • platform/graphics/GraphicsContext.h:
  • platform/graphics/GraphicsLayer.cpp:

(WebCore::GraphicsLayer::dumpProperties const):

  • platform/graphics/GraphicsTypes.cpp:

(WebCore::parseCompositeAndBlendOperator):
(WebCore::compositeOperatorName):

  • platform/graphics/GraphicsTypes.h:
  • platform/graphics/Image.cpp:

(WebCore::Image::fillWithSolidColor):

  • platform/graphics/ImagePaintingOptions.h:
  • platform/graphics/ShadowBlur.cpp:

(WebCore::ShadowBlur::blurAndColorShadowBuffer):

  • platform/graphics/cairo/CairoOperations.cpp:

(WebCore::Cairo::drawNativeImage):

  • platform/graphics/cairo/CairoOperations.h:
  • platform/graphics/cairo/CairoUtilities.cpp:

(WebCore::toCairoCompositeOperator):

  • platform/graphics/cg/GraphicsContext3DCG.cpp:

(WebCore::GraphicsContext3D::paintToCanvas):

  • platform/graphics/cg/GraphicsContextCG.cpp:

(WebCore::selectCGBlendMode):

  • platform/graphics/filters/FEBlend.cpp:

(WebCore::FEBlend::platformApplySoftware):
(WebCore::FEBlend::externalRepresentation const):

  • platform/graphics/filters/FEComposite.cpp:

(WebCore::FEComposite::platformApplySoftware):

  • platform/graphics/filters/FEDropShadow.cpp:

(WebCore::FEDropShadow::platformApplySoftware):

  • platform/graphics/filters/SourceAlpha.cpp:

(WebCore::SourceAlpha::platformApplySoftware):

  • platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp:

(WebCore::MediaPlayerPrivateGStreamer::paint):

  • platform/graphics/nicosia/NicosiaPaintingEngineBasic.cpp:

(Nicosia::PaintingEngineBasic::paint):

  • platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp:

(Nicosia::paintLayer):

  • platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp:

(WebCore::CoordinatedGraphicsLayer::flushCompositingStateForThisLayerOnly):

  • platform/graphics/win/Direct2DOperations.cpp:

(WebCore::Direct2D::State::setCompositeOperation):

  • platform/graphics/win/Direct2DOperations.h:
  • platform/graphics/win/ImageCGWin.cpp:

(WebCore::BitmapImage::getHBITMAPOfSize):

  • platform/graphics/win/ImageCairoWin.cpp:

(WebCore::BitmapImage::getHBITMAPOfSize):

  • rendering/InlineFlowBox.cpp:

(WebCore::InlineFlowBox::paintMask):

  • rendering/InlineFlowBox.h:
  • rendering/RenderBox.cpp:

(WebCore::RenderBox::paintMaskImages):

  • rendering/RenderBox.h:
  • rendering/RenderBoxModelObject.cpp:

(WebCore::RenderBoxModelObject::paintFillLayerExtended):

  • rendering/RenderBoxModelObject.h:
  • rendering/RenderEmbeddedObject.cpp:

(WebCore::RenderEmbeddedObject::paintReplaced):

  • rendering/RenderImage.cpp:

(WebCore::RenderImage::paintIntoRect):

  • rendering/RenderLayerBacking.cpp:

(WebCore::supportsDirectlyCompositedBoxDecorations):

  • rendering/RenderTreeAsText.cpp:
  • rendering/RenderView.cpp:

(WebCore::RenderView::paintBoxDecorations):

  • rendering/style/FillLayer.cpp:

(WebCore::FillLayer::FillLayer):
(WebCore::FillLayer::hasOpaqueImage const):

  • rendering/style/FillLayer.h:

(WebCore::FillLayer::initialFillComposite):

  • svg/graphics/SVGImage.cpp:

(WebCore::SVGImage::nativeImage):
(WebCore::SVGImage::draw):

Source/WebKit:

  • UIProcess/cairo/BackingStoreCairo.cpp:

(WebKit::BackingStore::incorporateUpdate):

  • WebProcess/Plugins/PluginProxy.cpp:

(WebKit::PluginProxy::paint):
(WebKit::PluginProxy::update):

  • WebProcess/WebPage/FindController.cpp:

(WebKit::FindController::drawRect):

Source/WebKitLegacy/win:

  • FullscreenVideoController.cpp:

(FullscreenVideoController::draw):

  • WebView.cpp:

(WebView::paintWithDirect2D):
(WebView::paintIntoBackingStore):

Location:
trunk/Source
Files:
53 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r252962 r252965  
     12019-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
    11092019-11-30  Tim Horton  <timothy_horton@apple.com>
    2110
  • trunk/Source/WebCore/css/CSSPrimitiveValueMappings.h

    r252392 r252965  
    335335    setPrimitiveUnitType(CSSUnitType::CSS_VALUE_ID);
    336336    switch (e) {
    337     case CompositeClear:
     337    case CompositeOperator::Clear:
    338338        m_value.valueID = CSSValueClear;
    339339        break;
    340     case CompositeCopy:
     340    case CompositeOperator::Copy:
    341341        m_value.valueID = CSSValueCopy;
    342342        break;
    343     case CompositeSourceOver:
     343    case CompositeOperator::SourceOver:
    344344        m_value.valueID = CSSValueSourceOver;
    345345        break;
    346     case CompositeSourceIn:
     346    case CompositeOperator::SourceIn:
    347347        m_value.valueID = CSSValueSourceIn;
    348348        break;
    349     case CompositeSourceOut:
     349    case CompositeOperator::SourceOut:
    350350        m_value.valueID = CSSValueSourceOut;
    351351        break;
    352     case CompositeSourceAtop:
     352    case CompositeOperator::SourceAtop:
    353353        m_value.valueID = CSSValueSourceAtop;
    354354        break;
    355     case CompositeDestinationOver:
     355    case CompositeOperator::DestinationOver:
    356356        m_value.valueID = CSSValueDestinationOver;
    357357        break;
    358     case CompositeDestinationIn:
     358    case CompositeOperator::DestinationIn:
    359359        m_value.valueID = CSSValueDestinationIn;
    360360        break;
    361     case CompositeDestinationOut:
     361    case CompositeOperator::DestinationOut:
    362362        m_value.valueID = CSSValueDestinationOut;
    363363        break;
    364     case CompositeDestinationAtop:
     364    case CompositeOperator::DestinationAtop:
    365365        m_value.valueID = CSSValueDestinationAtop;
    366366        break;
    367     case CompositeXOR:
     367    case CompositeOperator::XOR:
    368368        m_value.valueID = CSSValueXor;
    369369        break;
    370     case CompositePlusDarker:
     370    case CompositeOperator::PlusDarker:
    371371        m_value.valueID = CSSValuePlusDarker;
    372372        break;
    373     case CompositePlusLighter:
     373    case CompositeOperator::PlusLighter:
    374374        m_value.valueID = CSSValuePlusLighter;
    375375        break;
    376     case CompositeDifference:
     376    case CompositeOperator::Difference:
    377377        ASSERT_NOT_REACHED();
    378378        break;
     
    386386    switch (m_value.valueID) {
    387387    case CSSValueClear:
    388         return CompositeClear;
     388        return CompositeOperator::Clear;
    389389    case CSSValueCopy:
    390         return CompositeCopy;
     390        return CompositeOperator::Copy;
    391391    case CSSValueSourceOver:
    392         return CompositeSourceOver;
     392        return CompositeOperator::SourceOver;
    393393    case CSSValueSourceIn:
    394         return CompositeSourceIn;
     394        return CompositeOperator::SourceIn;
    395395    case CSSValueSourceOut:
    396         return CompositeSourceOut;
     396        return CompositeOperator::SourceOut;
    397397    case CSSValueSourceAtop:
    398         return CompositeSourceAtop;
     398        return CompositeOperator::SourceAtop;
    399399    case CSSValueDestinationOver:
    400         return CompositeDestinationOver;
     400        return CompositeOperator::DestinationOver;
    401401    case CSSValueDestinationIn:
    402         return CompositeDestinationIn;
     402        return CompositeOperator::DestinationIn;
    403403    case CSSValueDestinationOut:
    404         return CompositeDestinationOut;
     404        return CompositeOperator::DestinationOut;
    405405    case CSSValueDestinationAtop:
    406         return CompositeDestinationAtop;
     406        return CompositeOperator::DestinationAtop;
    407407    case CSSValueXor:
    408         return CompositeXOR;
     408        return CompositeOperator::XOR;
    409409    case CSSValuePlusDarker:
    410         return CompositePlusDarker;
     410        return CompositeOperator::PlusDarker;
    411411    case CSSValuePlusLighter:
    412         return CompositePlusLighter;
    413     default:
    414         break;
    415     }
    416 
    417     ASSERT_NOT_REACHED();
    418     return CompositeClear;
     412        return CompositeOperator::PlusLighter;
     413    default:
     414        break;
     415    }
     416
     417    ASSERT_NOT_REACHED();
     418    return CompositeOperator::Clear;
    419419}
    420420
  • trunk/Source/WebCore/dom/Document.cpp

    r252881 r252965  
    71207120{
    71217121    if (LIKELY(!settings().punchOutWhiteBackgroundsInDarkMode() || !Color::isWhiteColor(color) || !renderer.useDarkAppearance()))
    7122         return CompositeSourceOver;
     7122        return CompositeOperator::SourceOver;
    71237123
    71247124    auto* frameView = view();
    71257125    if (!frameView)
    7126         return CompositeSourceOver;
     7126        return CompositeOperator::SourceOver;
    71277127
    71287128    // Mail on macOS uses a transparent view, and on iOS it is an opaque view. We need to
    71297129    // use different composite modes to get the right results in this case.
    7130     return frameView->isTransparent() ? CompositeDestinationOut : CompositeDestinationIn;
     7130    return frameView->isTransparent() ? CompositeOperator::DestinationOut : CompositeOperator::DestinationIn;
    71317131}
    71327132
  • trunk/Source/WebCore/html/HTMLImageElement.cpp

    r252828 r252965  
    7575    , m_form(nullptr)
    7676    , m_formSetByParser(makeWeakPtr(form))
    77     , m_compositeOperator(CompositeSourceOver)
     77    , m_compositeOperator(CompositeOperator::SourceOver)
    7878    , m_imageDevicePixelRatio(1.0f)
    7979    , m_experimentalImageMenuEnabled(false)
     
    253253        BlendMode blendOp = BlendMode::Normal;
    254254        if (!parseCompositeAndBlendOperator(value, m_compositeOperator, blendOp))
    255             m_compositeOperator = CompositeSourceOver;
     255            m_compositeOperator = CompositeOperator::SourceOver;
    256256#if ENABLE(SERVICE_CONTROLS)
    257257    } else if (name == webkitimagemenuAttr) {
  • trunk/Source/WebCore/html/canvas/CanvasRenderingContext2D.cpp

    r252628 r252965  
    594594        endCompositeLayer();
    595595        didDrawEntireCanvas();
    596     } else if (state().globalComposite == CompositeCopy) {
     596    } else if (state().globalComposite == CompositeOperator::Copy) {
    597597        clearCanvas();
    598598        fontProxy.drawBidiText(*c, textRun, location, FontCascade::UseFallbackIfFontNotReady);
  • trunk/Source/WebCore/html/canvas/CanvasRenderingContext2DBase.cpp

    r252864 r252965  
    200200    , shadowColor(Color::transparent)
    201201    , globalAlpha(1)
    202     , globalComposite(CompositeSourceOver)
     202    , globalComposite(CompositeOperator::SourceOver)
    203203    , globalBlend(BlendMode::Normal)
    204204    , hasInvertibleTransform(true)
     
    770770void CanvasRenderingContext2DBase::setGlobalCompositeOperation(const String& operation)
    771771{
    772     CompositeOperator op = CompositeSourceOver;
     772    CompositeOperator op = CompositeOperator::SourceOver;
    773773    BlendMode blendMode = BlendMode::Normal;
    774774    if (!parseCompositeAndBlendOperator(operation, op, blendMode))
     
    10351035{
    10361036    // See 4.8.11.1.3 Compositing
    1037     // CompositeSourceAtop and CompositeDestinationOut are not listed here as the platforms already
     1037    // CompositeOperator::SourceAtop and CompositeOperator::DestinationOut are not listed here as the platforms already
    10381038    // implement the specification's behavior.
    1039     return op == CompositeSourceIn || op == CompositeSourceOut || op == CompositeDestinationIn || op == CompositeDestinationAtop;
     1039    return op == CompositeOperator::SourceIn || op == CompositeOperator::SourceOut || op == CompositeOperator::DestinationIn || op == CompositeOperator::DestinationAtop;
    10401040}
    10411041
     
    10971097            endCompositeLayer();
    10981098            didDrawEntireCanvas();
    1099         } else if (state().globalComposite == CompositeCopy) {
     1099        } else if (state().globalComposite == CompositeOperator::Copy) {
    11001100            clearCanvas();
    11011101            c->fillPath(path);
     
    11291129            endCompositeLayer();
    11301130            didDrawEntireCanvas();
    1131         } else if (state().globalComposite == CompositeCopy) {
     1131        } else if (state().globalComposite == CompositeOperator::Copy) {
    11321132            clearCanvas();
    11331133            c->strokePath(path);
     
    12441244        context->setAlpha(1);
    12451245    }
    1246     if (state().globalComposite != CompositeSourceOver) {
     1246    if (state().globalComposite != CompositeOperator::SourceOver) {
    12471247        if (!saved) {
    12481248            context->save();
    12491249            saved = true;
    12501250        }
    1251         context->setCompositeOperation(CompositeSourceOver);
     1251        context->setCompositeOperation(CompositeOperator::SourceOver);
    12521252    }
    12531253    context->clearRect(rect);
     
    12851285        endCompositeLayer();
    12861286        didDrawEntireCanvas();
    1287     } else if (state().globalComposite == CompositeCopy) {
     1287    } else if (state().globalComposite == CompositeOperator::Copy) {
    12881288        clearCanvas();
    12891289        c->fillRect(rect);
     
    13191319        endCompositeLayer();
    13201320        didDrawEntireCanvas();
    1321     } else if (state().globalComposite == CompositeCopy) {
     1321    } else if (state().globalComposite == CompositeOperator::Copy) {
    13221322        clearCanvas();
    13231323        c->strokeRect(rect, state().lineWidth);
     
    15811581        fullCanvasCompositedDrawImage(*image, normalizedDstRect, normalizedSrcRect, op);
    15821582        didDrawEntireCanvas();
    1583     } else if (op == CompositeCopy) {
     1583    } else if (op == CompositeOperator::Copy) {
    15841584        clearCanvas();
    15851585        c->drawImage(*image, normalizedDstRect, normalizedSrcRect, options);
     
    16391639        fullCanvasCompositedDrawImage(*buffer, dstRect, srcRect, state().globalComposite);
    16401640        didDrawEntireCanvas();
    1641     } else if (state().globalComposite == CompositeCopy) {
     1641    } else if (state().globalComposite == CompositeOperator::Copy) {
    16421642        if (&sourceCanvas == &canvasBase()) {
    16431643            if (auto copy = buffer->copyRectToBuffer(srcRect, ColorSpaceSRGB, *c)) {
     
    17371737        fullCanvasCompositedDrawImage(*buffer, dstRect, srcRect, state().globalComposite);
    17381738        didDrawEntireCanvas();
    1739     } else if (state().globalComposite == CompositeCopy) {
     1739    } else if (state().globalComposite == CompositeOperator::Copy) {
    17401740        clearCanvas();
    17411741        c->drawImageBuffer(*buffer, dstRect, srcRect, { state().globalComposite, state().globalBlend });
     
    17541754    auto blendOp = BlendMode::Normal;
    17551755    if (!parseCompositeAndBlendOperator(compositeOperation, op, blendOp) || blendOp != BlendMode::Normal)
    1756         op = CompositeSourceOver;
     1756        op = CompositeOperator::SourceOver;
    17571757    drawImage(imageElement, FloatRect { sx, sy, sw, sh }, FloatRect { dx, dy, dw, dh }, op, BlendMode::Normal);
    17581758}
     
    18671867    buffer->context().translate(croppedOffset);
    18681868    buffer->context().concatCTM(effectiveTransform);
    1869     drawImageToContext(image, buffer->context(), adjustedDest, src, { CompositeSourceOver });
     1869    drawImageToContext(image, buffer->context(), adjustedDest, src, { CompositeOperator::SourceOver });
    18701870
    18711871    compositeBuffer(*buffer, bufferRect, op);
  • trunk/Source/WebCore/inspector/InspectorOverlay.cpp

    r248053 r252965  
    222222    context.fillPath(quadToPath(quad, bounds));
    223223
    224     context.setCompositeOperation(CompositeDestinationOut);
     224    context.setCompositeOperation(CompositeOperator::DestinationOut);
    225225    context.setFillColor(Color::createUnchecked(255, 0, 0));
    226226    context.fillPath(quadToPath(clipQuad, bounds));
  • trunk/Source/WebCore/platform/graphics/CrossfadeGeneratedImage.cpp

    r249217 r252965  
    8282    context.beginTransparencyLayer(1);
    8383
    84     drawCrossfadeSubimage(context, m_fromImage.get(), CompositeSourceOver, 1 - m_percentage, m_crossfadeSize);
    85     drawCrossfadeSubimage(context, m_toImage.get(), CompositePlusLighter, 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);
    8686
    8787    context.endTransparencyLayer();
  • trunk/Source/WebCore/platform/graphics/GraphicsContext.h

    r252962 r252965  
    195195
    196196    float alpha { 1 };
    197     CompositeOperator compositeOperator { CompositeSourceOver };
     197    CompositeOperator compositeOperator { CompositeOperator::SourceOver };
    198198    BlendMode blendMode { BlendMode::Normal };
    199199    InterpolationQuality imageInterpolationQuality { InterpolationDefault };
  • trunk/Source/WebCore/platform/graphics/GraphicsLayer.cpp

    r249511 r252965  
    899899#if ENABLE(CSS_COMPOSITING)
    900900    if (m_blendMode != BlendMode::Normal)
    901         ts << indent << "(blendMode " << compositeOperatorName(CompositeSourceOver, m_blendMode) << ")\n";
     901        ts << indent << "(blendMode " << compositeOperatorName(CompositeOperator::SourceOver, m_blendMode) << ")\n";
    902902#endif
    903903
  • trunk/Source/WebCore/platform/graphics/GraphicsTypes.cpp

    r234610 r252965  
    7272    "plus-lighter"
    7373};
    74 const int numCompositeOperatorNames = WTF_ARRAY_LENGTH(compositeOperatorNames);
    75 const unsigned numBlendOperatorNames = WTF_ARRAY_LENGTH(blendOperatorNames);
     74const uint8_t numCompositeOperatorNames = WTF_ARRAY_LENGTH(compositeOperatorNames);
     75const uint8_t numBlendOperatorNames = WTF_ARRAY_LENGTH(blendOperatorNames);
    7676
    7777bool parseBlendMode(const String& s, BlendMode& blendMode)
     
    9999    if (parseBlendMode(s, blendOp)) {
    100100        // For now, blending will always assume source-over. This will be fixed in the future
    101         op = CompositeSourceOver;
     101        op = CompositeOperator::SourceOver;
    102102        return true;
    103103    }
     
    110110String compositeOperatorName(CompositeOperator op, BlendMode blendOp)
    111111{
    112     ASSERT(op >= 0);
    113     ASSERT(op < numCompositeOperatorNames);
     112    ASSERT(op >= CompositeOperator::Clear);
     113    ASSERT(static_cast<uint8_t>(op) < numCompositeOperatorNames);
    114114    ASSERT(blendOp >= BlendMode::Normal);
    115     ASSERT(static_cast<unsigned>(blendOp) <= numBlendOperatorNames);
     115    ASSERT(static_cast<uint8_t>(blendOp) <= numBlendOperatorNames);
    116116    if (blendOp > BlendMode::Normal)
    117117        return blendOperatorNames[static_cast<unsigned>(blendOp) - static_cast<unsigned>(BlendMode::Normal)];
    118     return compositeOperatorNames[op];
     118    return compositeOperatorNames[static_cast<unsigned>(op)];
    119119}
    120120
  • trunk/Source/WebCore/platform/graphics/GraphicsTypes.h

    r234610 r252965  
    2727
    2828#include "WindRule.h"
     29#include <wtf/EnumTraits.h>
    2930#include <wtf/Forward.h>
    3031
     
    3536namespace WebCore {
    3637
    37 enum CompositeOperator {
    38     CompositeClear,
    39     CompositeCopy,
    40     CompositeSourceOver,
    41     CompositeSourceIn,
    42     CompositeSourceOut,
    43     CompositeSourceAtop,
    44     CompositeDestinationOver,
    45     CompositeDestinationIn,
    46     CompositeDestinationOut,
    47     CompositeDestinationAtop,
    48     CompositeXOR,
    49     CompositePlusDarker,
    50     CompositePlusLighter,
    51     CompositeDifference
     38enum 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
    5253};
    5354
    54 enum class BlendMode {
     55enum class BlendMode : uint8_t {
    5556    Normal = 1, // Start with 1 to match SVG's blendmode enumeration.
    5657    Multiply,
     
    147148} // namespace WebCore
    148149
     150namespace WTF {
     151
     152template<> 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
     172template<> 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  
    133133   
    134134    CompositeOperator previousOperator = ctxt.compositeOperation();
    135     ctxt.setCompositeOperation(color.isOpaque() && op == CompositeSourceOver ? CompositeCopy : op);
     135    ctxt.setCompositeOperation(color.isOpaque() && op == CompositeOperator::SourceOver ? CompositeOperator::Copy : op);
    136136    ctxt.fillRect(dstRect, color);
    137137    ctxt.setCompositeOperation(previousOperator);
  • trunk/Source/WebCore/platform/graphics/ImagePaintingOptions.h

    r249217 r252965  
    7070    void setOption(InterpolationQuality interpolationQuality) { m_interpolationQuality = interpolationQuality; }
    7171
    72     CompositeOperator m_compositeOperator { CompositeSourceOver };
     72    CompositeOperator m_compositeOperator { CompositeOperator::SourceOver };
    7373    BlendMode m_blendMode { BlendMode::Normal };
    7474    DecodingMode m_decodingMode { DecodingMode::Synchronous };
  • trunk/Source/WebCore/platform/graphics/ShadowBlur.cpp

    r247385 r252965  
    900900    GraphicsContext& shadowContext = layerImage.context();
    901901    GraphicsContextStateSaver stateSaver(shadowContext);
    902     shadowContext.setCompositeOperation(CompositeSourceIn);
     902    shadowContext.setCompositeOperation(CompositeOperator::SourceIn);
    903903    shadowContext.setFillColor(m_color);
    904904    shadowContext.fillRect(FloatRect(0, 0, templateSize.width(), templateSize.height()));
  • trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.cpp

    r252136 r252965  
    871871
    872872    // Set the compositing operation.
    873     if (options.compositeOperator() == CompositeSourceOver && options.blendMode() == BlendMode::Normal && !cairoSurfaceHasAlpha(surface))
    874         Cairo::State::setCompositeOperation(platformContext, CompositeCopy, BlendMode::Normal);
     873    if (options.compositeOperator() == CompositeOperator::SourceOver && options.blendMode() == BlendMode::Normal && !cairoSurfaceHasAlpha(surface))
     874        Cairo::State::setCompositeOperation(platformContext, CompositeOperator::Copy, BlendMode::Normal);
    875875    else
    876876        Cairo::State::setCompositeOperation(platformContext, options.compositeOperator(), options.blendMode());
  • trunk/Source/WebCore/platform/graphics/cairo/CairoOperations.h

    r249217 r252965  
    119119
    120120    float globalAlpha { 1.0 };
    121     CompositeOperator globalCompositeOperator { CompositeSourceOver };
     121    CompositeOperator globalCompositeOperator { CompositeOperator::SourceOver };
    122122};
    123123
  • trunk/Source/WebCore/platform/graphics/cairo/CairoUtilities.cpp

    r237119 r252965  
    129129{
    130130    switch (op) {
    131     case CompositeClear:
     131    case CompositeOperator::Clear:
    132132        return CAIRO_OPERATOR_CLEAR;
    133     case CompositeCopy:
     133    case CompositeOperator::Copy:
    134134        return CAIRO_OPERATOR_SOURCE;
    135     case CompositeSourceOver:
     135    case CompositeOperator::SourceOver:
    136136        return CAIRO_OPERATOR_OVER;
    137     case CompositeSourceIn:
     137    case CompositeOperator::SourceIn:
    138138        return CAIRO_OPERATOR_IN;
    139     case CompositeSourceOut:
     139    case CompositeOperator::SourceOut:
    140140        return CAIRO_OPERATOR_OUT;
    141     case CompositeSourceAtop:
     141    case CompositeOperator::SourceAtop:
    142142        return CAIRO_OPERATOR_ATOP;
    143     case CompositeDestinationOver:
     143    case CompositeOperator::DestinationOver:
    144144        return CAIRO_OPERATOR_DEST_OVER;
    145     case CompositeDestinationIn:
     145    case CompositeOperator::DestinationIn:
    146146        return CAIRO_OPERATOR_DEST_IN;
    147     case CompositeDestinationOut:
     147    case CompositeOperator::DestinationOut:
    148148        return CAIRO_OPERATOR_DEST_OUT;
    149     case CompositeDestinationAtop:
     149    case CompositeOperator::DestinationAtop:
    150150        return CAIRO_OPERATOR_DEST_ATOP;
    151     case CompositeXOR:
     151    case CompositeOperator::XOR:
    152152        return CAIRO_OPERATOR_XOR;
    153     case CompositePlusDarker:
     153    case CompositeOperator::PlusDarker:
    154154        return CAIRO_OPERATOR_DARKEN;
    155     case CompositePlusLighter:
     155    case CompositeOperator::PlusLighter:
    156156        return CAIRO_OPERATOR_ADD;
    157     case CompositeDifference:
     157    case CompositeOperator::Difference:
    158158        return CAIRO_OPERATOR_DIFFERENCE;
    159159    default:
  • trunk/Source/WebCore/platform/graphics/cg/GraphicsContext3DCG.cpp

    r249217 r252965  
    540540    context.translate(0, -imageSize.height());
    541541    context.setImageInterpolationQuality(InterpolationNone);
    542     context.drawNativeImage(cgImage, imageSize, canvasRect, FloatRect(FloatPoint(), imageSize), { CompositeCopy });
     542    context.drawNativeImage(cgImage, imageSize, canvasRect, FloatRect(FloatPoint(), imageSize), { CompositeOperator::Copy });
    543543}
    544544
  • trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp

    r250595 r252965  
    162162    case BlendMode::Normal:
    163163        switch (compositeOperator) {
    164         case CompositeClear:
     164        case CompositeOperator::Clear:
    165165            return kCGBlendModeClear;
    166         case CompositeCopy:
     166        case CompositeOperator::Copy:
    167167            return kCGBlendModeCopy;
    168         case CompositeSourceOver:
     168        case CompositeOperator::SourceOver:
    169169            return kCGBlendModeNormal;
    170         case CompositeSourceIn:
     170        case CompositeOperator::SourceIn:
    171171            return kCGBlendModeSourceIn;
    172         case CompositeSourceOut:
     172        case CompositeOperator::SourceOut:
    173173            return kCGBlendModeSourceOut;
    174         case CompositeSourceAtop:
     174        case CompositeOperator::SourceAtop:
    175175            return kCGBlendModeSourceAtop;
    176         case CompositeDestinationOver:
     176        case CompositeOperator::DestinationOver:
    177177            return kCGBlendModeDestinationOver;
    178         case CompositeDestinationIn:
     178        case CompositeOperator::DestinationIn:
    179179            return kCGBlendModeDestinationIn;
    180         case CompositeDestinationOut:
     180        case CompositeOperator::DestinationOut:
    181181            return kCGBlendModeDestinationOut;
    182         case CompositeDestinationAtop:
     182        case CompositeOperator::DestinationAtop:
    183183            return kCGBlendModeDestinationAtop;
    184         case CompositeXOR:
     184        case CompositeOperator::XOR:
    185185            return kCGBlendModeXOR;
    186         case CompositePlusDarker:
     186        case CompositeOperator::PlusDarker:
    187187            return kCGBlendModePlusDarker;
    188         case CompositePlusLighter:
     188        case CompositeOperator::PlusLighter:
    189189            return kCGBlendModePlusLighter;
    190         case CompositeDifference:
     190        case CompositeOperator::Difference:
    191191            return kCGBlendModeDifference;
    192192        }
  • trunk/Source/WebCore/platform/graphics/filters/FEBlend.cpp

    r249217 r252965  
    7171
    7272    filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect()));
    73     filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), { CompositeSourceOver, m_mode });
     73    filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), { CompositeOperator::SourceOver, m_mode });
    7474}
    7575#endif
     
    7979    ts << indent << "[feBlend";
    8080    FilterEffect::externalRepresentation(ts, representation);
    81     ts << " mode=\"" << (m_mode == BlendMode::Normal ? "normal" : compositeOperatorName(CompositeSourceOver, m_mode)) << "\"]\n";
     81    ts << " mode=\"" << (m_mode == BlendMode::Normal ? "normal" : compositeOperatorName(CompositeOperator::SourceOver, m_mode)) << "\"]\n";
    8282
    8383    TextStream::IndentScope indentScope(ts);
  • trunk/Source/WebCore/platform/graphics/filters/FEComposite.cpp

    r249217 r252965  
    272272        IntRect source2Rect = destinationRect - in2->absolutePaintRect().location();
    273273        filterContext.drawImageBuffer(*imageBuffer2, FloatRect(adjustedDestinationRect), FloatRect(source2Rect));
    274         filterContext.drawImageBuffer(*imageBuffer, FloatRect(adjustedDestinationRect), FloatRect(sourceRect), { CompositeSourceIn });
     274        filterContext.drawImageBuffer(*imageBuffer, FloatRect(adjustedDestinationRect), FloatRect(sourceRect), { CompositeOperator::SourceIn });
    275275        break;
    276276    }
    277277    case FECOMPOSITE_OPERATOR_OUT:
    278278        filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()));
    279         filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect()), IntRect(IntPoint(), imageBuffer2->logicalSize()), CompositeDestinationOut);
     279        filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect()), IntRect(IntPoint(), imageBuffer2->logicalSize()), CompositeOperator::DestinationOut);
    280280        break;
    281281    case FECOMPOSITE_OPERATOR_ATOP:
    282282        filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect()));
    283         filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeSourceAtop);
     283        filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeOperator::SourceAtop);
    284284        break;
    285285    case FECOMPOSITE_OPERATOR_XOR:
    286286        filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect()));
    287         filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeXOR);
     287        filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeOperator::XOR);
    288288        break;
    289289    case FECOMPOSITE_OPERATOR_LIGHTER:
    290290        filterContext.drawImageBuffer(*imageBuffer2, drawingRegionOfInputImage(in2->absolutePaintRect()));
    291         filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositePlusLighter);
     291        filterContext.drawImageBuffer(*imageBuffer, drawingRegionOfInputImage(in->absolutePaintRect()), IntRect(IntPoint(), imageBuffer->logicalSize()), CompositeOperator::PlusLighter);
    292292        break;
    293293    default:
  • trunk/Source/WebCore/platform/graphics/filters/FEDropShadow.cpp

    r251119 r252965  
    109109    resultImage->putByteArray(*srcPixelArray, AlphaPremultiplication::Premultiplied, shadowArea.size(), shadowArea, IntPoint(), ImageBuffer::BackingStoreCoordinateSystem);
    110110
    111     resultContext.setCompositeOperation(CompositeSourceIn);
     111    resultContext.setCompositeOperation(CompositeOperator::SourceIn);
    112112    resultContext.fillRect(FloatRect(FloatPoint(), absolutePaintRect().size()), m_shadowColor);
    113     resultContext.setCompositeOperation(CompositeDestinationOver);
     113    resultContext.setCompositeOperation(CompositeOperator::DestinationOver);
    114114
    115115    resultImage->context().drawImageBuffer(*sourceImage, drawingRegion);
  • trunk/Source/WebCore/platform/graphics/filters/SourceAlpha.cpp

    r246490 r252965  
    6161    FloatRect imageRect(FloatPoint(), absolutePaintRect().size());
    6262    filterContext.fillRect(imageRect, Color::black);
    63     filterContext.drawImageBuffer(*imageBuffer, IntPoint(), CompositeDestinationIn);
     63    filterContext.drawImageBuffer(*imageBuffer, IntPoint(), CompositeOperator::DestinationIn);
    6464}
    6565
  • trunk/Source/WebCore/platform/graphics/gstreamer/MediaPlayerPrivateGStreamer.cpp

    r252950 r252965  
    32563256        return;
    32573257
    3258     context.drawImage(gstImage->image(), rect, gstImage->rect(), { CompositeCopy, m_canRenderingBeAccelerated ? m_videoSourceOrientation : ImageOrientation() });
     3258    context.drawImage(gstImage->image(), rect, gstImage->rect(), { CompositeOperator::Copy, m_canRenderingBeAccelerated ? m_videoSourceOrientation : ImageOrientation() });
    32593259}
    32603260
  • trunk/Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineBasic.cpp

    r232931 r252965  
    5656
    5757            if (supportsAlpha) {
    58                 context.setCompositeOperation(CompositeCopy);
     58                context.setCompositeOperation(CompositeOperator::Copy);
    5959                context.fillRect(IntRect(IntPoint::zero(), sourceRect.size()), Color::transparent);
    60                 context.setCompositeOperation(CompositeSourceOver);
     60                context.setCompositeOperation(CompositeOperator::SourceOver);
    6161            }
    6262
  • trunk/Source/WebCore/platform/graphics/nicosia/NicosiaPaintingEngineThreaded.cpp

    r242205 r252965  
    4747
    4848    if (supportsAlpha) {
    49         context.setCompositeOperation(CompositeCopy);
     49        context.setCompositeOperation(CompositeOperator::Copy);
    5050        context.fillRect(IntRect(IntPoint::zero(), sourceRect.size()), Color::transparent);
    51         context.setCompositeOperation(CompositeSourceOver);
     51        context.setCompositeOperation(CompositeOperator::SourceOver);
    5252    }
    5353
  • trunk/Source/WebCore/platform/graphics/texmap/coordinated/CoordinatedGraphicsLayer.cpp

    r251837 r252965  
    826826                {
    827827                    IntRect rect { { }, IntSize { image.size() } };
    828                     context.drawImage(image, rect, rect, ImagePaintingOptions(CompositeCopy));
     828                    context.drawImage(image, rect, rect, ImagePaintingOptions(CompositeOperator::Copy));
    829829                });
    830830            layerState.nativeImageID = nativeImageID;
  • trunk/Source/WebCore/platform/graphics/win/Direct2DOperations.cpp

    r250581 r252965  
    190190    } else {
    191191        switch (compositeOperation) {
    192         case CompositeClear:
     192        case CompositeOperator::Clear:
    193193            // FIXME: targetBlendMode = D2D1_BLEND_MODE_CLEAR;
    194194            break;
    195         case CompositeCopy:
     195        case CompositeOperator::Copy:
    196196            targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_COPY;
    197197            break;
    198         case CompositeSourceOver:
     198        case CompositeOperator::SourceOver:
    199199            targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_OVER;
    200200            break;
    201         case CompositeSourceIn:
     201        case CompositeOperator::SourceIn:
    202202            targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_IN;
    203203            break;
    204         case CompositeSourceOut:
     204        case CompositeOperator::SourceOut:
    205205            targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_OUT;
    206206            break;
    207         case CompositeSourceAtop:
     207        case CompositeOperator::SourceAtop:
    208208            targetCompositeMode = D2D1_COMPOSITE_MODE_SOURCE_ATOP;
    209209            break;
    210         case CompositeDestinationOver:
     210        case CompositeOperator::DestinationOver:
    211211            targetCompositeMode = D2D1_COMPOSITE_MODE_DESTINATION_OVER;
    212212            break;
    213         case CompositeDestinationIn:
     213        case CompositeOperator::DestinationIn:
    214214            targetCompositeMode = D2D1_COMPOSITE_MODE_DESTINATION_IN;
    215215            break;
    216         case CompositeDestinationOut:
     216        case CompositeOperator::DestinationOut:
    217217            targetCompositeMode = D2D1_COMPOSITE_MODE_DESTINATION_OUT;
    218218            break;
    219         case CompositeDestinationAtop:
     219        case CompositeOperator::DestinationAtop:
    220220            targetCompositeMode = D2D1_COMPOSITE_MODE_DESTINATION_ATOP;
    221221            break;
    222         case CompositeXOR:
     222        case CompositeOperator::XOR:
    223223            targetCompositeMode = D2D1_COMPOSITE_MODE_XOR;
    224224            break;
    225         case CompositePlusDarker:
     225        case CompositeOperator::PlusDarker:
    226226            targetBlendMode = D2D1_BLEND_MODE_DARKEN;
    227227            break;
    228         case CompositePlusLighter:
     228        case CompositeOperator::PlusLighter:
    229229            targetBlendMode = D2D1_BLEND_MODE_LIGHTEN;
    230230            break;
    231         case CompositeDifference:
     231        case CompositeOperator::Difference:
    232232            targetBlendMode = D2D1_BLEND_MODE_DIFFERENCE;
    233233            break;
  • trunk/Source/WebCore/platform/graphics/win/Direct2DOperations.h

    r250492 r252965  
    107107
    108108    float globalAlpha { 1.0 };
    109     CompositeOperator globalCompositeOperator { CompositeSourceOver };
     109    CompositeOperator globalCompositeOperator { CompositeOperator::SourceOver };
    110110};
    111111
  • trunk/Source/WebCore/platform/graphics/win/ImageCGWin.cpp

    r249217 r252965  
    7878    FloatSize imageSize = BitmapImage::size();
    7979    if (size)
    80         drawFrameMatchingSourceSize(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, CompositeCopy);
     80        drawFrameMatchingSourceSize(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, CompositeOperator::Copy);
    8181    else
    82         draw(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), { CompositeCopy });
     82        draw(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), { CompositeOperator::Copy });
    8383
    8484    // Do cleanup
  • trunk/Source/WebCore/platform/graphics/win/ImageCairoWin.cpp

    r249217 r252965  
    8080    FloatSize imageSize = BitmapImage::size();
    8181    if (size)
    82         drawFrameMatchingSourceSize(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, CompositeCopy);
     82        drawFrameMatchingSourceSize(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), *size, CompositeOperator::Copy);
    8383    else
    84         draw(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), { CompositeCopy });
     84        draw(gc, FloatRect(0.0f, 0.0f, bmpInfo.bmWidth, bmpInfo.bmHeight), FloatRect(0.0f, 0.0f, imageSize.width(), imageSize.height()), { CompositeOperator::Copy });
    8585
    8686    // Do cleanup
  • trunk/Source/WebCore/rendering/InlineFlowBox.cpp

    r252161 r252965  
    14391439    bool compositedMask = renderer().hasLayer() && renderer().layer()->hasCompositedMask();
    14401440    bool flattenCompositingLayers = renderer().view().frameView().paintBehavior().contains(PaintBehavior::FlattenCompositingLayers);
    1441     CompositeOperator compositeOp = CompositeSourceOver;
     1441    CompositeOperator compositeOp = CompositeOperator::SourceOver;
    14421442    if (!compositedMask || flattenCompositingLayers) {
    14431443        if ((maskBoxImage && renderer().style().maskLayers().hasImage()) || renderer().style().maskLayers().next())
    14441444            pushTransparencyLayer = true;
    14451445       
    1446         compositeOp = CompositeDestinationIn;
     1446        compositeOp = CompositeOperator::DestinationIn;
    14471447        if (pushTransparencyLayer) {
    1448             paintInfo.context().setCompositeOperation(CompositeDestinationIn);
     1448            paintInfo.context().setCompositeOperation(CompositeOperator::DestinationIn);
    14491449            paintInfo.context().beginTransparencyLayer(1.0f);
    1450             compositeOp = CompositeSourceOver;
     1450            compositeOp = CompositeOperator::SourceOver;
    14511451        }
    14521452    }
  • trunk/Source/WebCore/rendering/InlineFlowBox.h

    r250341 r252965  
    116116    void paintBoxDecorations(PaintInfo&, const LayoutPoint&);
    117117    void paintMask(PaintInfo&, const LayoutPoint&);
    118     void paintFillLayers(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, CompositeOperator = CompositeSourceOver);
    119     void paintFillLayer(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, CompositeOperator = CompositeSourceOver);
     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);
    120120    void paintBoxShadow(const PaintInfo&, const RenderStyle&, ShadowStyle, const LayoutRect&);
    121121    void paint(PaintInfo&, const LayoutPoint&, LayoutUnit lineTop, LayoutUnit lineBottom) override;
  • trunk/Source/WebCore/rendering/RenderBox.cpp

    r252724 r252965  
    15901590    bool compositedMask = hasLayer() && layer()->hasCompositedMask();
    15911591    bool flattenCompositingLayers = paintInfo.paintBehavior.contains(PaintBehavior::FlattenCompositingLayers);
    1592     CompositeOperator compositeOp = CompositeSourceOver;
     1592    CompositeOperator compositeOp = CompositeOperator::SourceOver;
    15931593
    15941594    bool allMaskImagesLoaded = true;
     
    16031603        allMaskImagesLoaded &= style().maskLayers().imagesAreLoaded();
    16041604
    1605         paintInfo.context().setCompositeOperation(CompositeDestinationIn);
     1605        paintInfo.context().setCompositeOperation(CompositeOperator::DestinationIn);
    16061606        paintInfo.context().beginTransparencyLayer(1);
    1607         compositeOp = CompositeSourceOver;
     1607        compositeOp = CompositeOperator::SourceOver;
    16081608    }
    16091609
  • trunk/Source/WebCore/rendering/RenderBox.h

    r252724 r252965  
    668668   
    669669    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 = CompositeSourceOver, RenderElement* backgroundObject = nullptr);
     670    void paintFillLayers(const PaintInfo&, const Color&, const FillLayer&, const LayoutRect&, BackgroundBleedAvoidance = BackgroundBleedNone, CompositeOperator = CompositeOperator::SourceOver, RenderElement* backgroundObject = nullptr);
    671671
    672672    void paintMaskImages(const PaintInfo&, const LayoutRect&);
  • trunk/Source/WebCore/rendering/RenderBoxModelObject.cpp

    r252689 r252965  
    927927                if (!baseBgColorOnly && bgColor.isVisible())
    928928                    baseColor = baseColor.blend(bgColor);
    929                 context.fillRect(backgroundRectForPainting, baseColor, CompositeCopy);
     929                context.fillRect(backgroundRectForPainting, baseColor, CompositeOperator::Copy);
    930930            } else if (!baseBgColorOnly && bgColor.isVisible()) {
    931931                auto operation = context.compositeOperation();
    932932                if (shouldClearBackground) {
    933                     if (op == CompositeDestinationOut) // We're punching out the background.
     933                    if (op == CompositeOperator::DestinationOut) // We're punching out the background.
    934934                        operation = op;
    935935                    else
    936                         operation = CompositeCopy;
     936                        operation = CompositeOperator::Copy;
    937937                }
    938938                context.fillRect(backgroundRectForPainting, bgColor, operation);
     
    954954
    955955            ImagePaintingOptions options = {
    956                 op == CompositeSourceOver ? bgLayer.composite() : op,
     956                op == CompositeOperator::SourceOver ? bgLayer.composite() : op,
    957957                bgLayer.blendMode(),
    958958                decodingModeForImageDraw(*image, paintInfo),
     
    970970
    971971    if (maskImage && bgLayer.clip() == FillBox::Text) {
    972         context.drawConsumingImageBuffer(WTFMove(maskImage), maskRect, CompositeDestinationIn);
     972        context.drawConsumingImageBuffer(WTFMove(maskImage), maskRect, CompositeOperator::DestinationIn);
    973973        context.endTransparencyLayer();
    974974    }
  • trunk/Source/WebCore/rendering/RenderBoxModelObject.h

    r247256 r252965  
    204204
    205205    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 = CompositeSourceOver);
     206    bool paintNinePieceImage(GraphicsContext&, const LayoutRect&, const RenderStyle&, const NinePieceImage&, CompositeOperator = CompositeOperator::SourceOver);
    207207    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 = CompositeSourceOver, 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);
    209209
    210210    virtual bool boxShadowShouldBeAppliedToBackground(const LayoutPoint& absolutePaintPostion, BackgroundBleedAvoidance, InlineFlowBox* = nullptr) const;
  • trunk/Source/WebCore/rendering/RenderEmbeddedObject.cpp

    r249217 r252965  
    340340        context.fillEllipse(arrowRect);
    341341
    342         context.setCompositeOperation(CompositeClear);
     342        context.setCompositeOperation(CompositeOperator::Clear);
    343343        drawReplacementArrow(context, arrowRect);
    344344        context.endTransparencyLayer();
  • trunk/Source/WebCore/rendering/RenderImage.cpp

    r252828 r252965  
    646646
    647647    ImagePaintingOptions options = {
    648         imageElement ? imageElement->compositeOperator() : CompositeSourceOver,
     648        imageElement ? imageElement->compositeOperator() : CompositeOperator::SourceOver,
    649649        decodingModeForImageDraw(*image, paintInfo),
    650650        imageOrientation(),
  • trunk/Source/WebCore/rendering/RenderLayerBacking.cpp

    r252419 r252965  
    22802280
    22812281    // 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() != CompositeSourceOver)
     2282    if (style.backgroundComposite() != CompositeOperator::SourceOver)
    22832283        return false;
    22842284
  • trunk/Source/WebCore/rendering/RenderTreeAsText.cpp

    r252959 r252965  
    639639        ts << " isolatesBlending";
    640640    if (layer.hasBlendMode())
    641         ts << " blendMode: " << compositeOperatorName(CompositeSourceOver, layer.blendMode());
     641        ts << " blendMode: " << compositeOperatorName(CompositeOperator::SourceOver, layer.blendMode());
    642642#endif
    643643   
  • trunk/Source/WebCore/rendering/RenderView.cpp

    r252935 r252965  
    422422        if (backgroundColor.isVisible()) {
    423423            CompositeOperator previousOperator = paintInfo.context().compositeOperation();
    424             paintInfo.context().setCompositeOperation(CompositeCopy);
     424            paintInfo.context().setCompositeOperation(CompositeOperator::Copy);
    425425            paintInfo.context().fillRect(paintInfo.rect, backgroundColor);
    426426            paintInfo.context().setCompositeOperation(previousOperator);
  • trunk/Source/WebCore/rendering/style/FillLayer.cpp

    r249236 r252965  
    5353    , m_repeatX(static_cast<unsigned>(FillLayer::initialFillRepeatX(type)))
    5454    , m_repeatY(static_cast<unsigned>(FillLayer::initialFillRepeatY(type)))
    55     , m_composite(FillLayer::initialFillComposite(type))
     55    , m_composite(static_cast<unsigned>(FillLayer::initialFillComposite(type)))
    5656    , m_sizeType(static_cast<unsigned>(FillSizeType::None))
    5757    , m_blendMode(static_cast<unsigned>(FillLayer::initialFillBlendMode(type)))
     
    355355        return false;
    356356
    357     if (m_composite == CompositeClear || m_composite == CompositeCopy)
     357    if (static_cast<CompositeOperator>(m_composite) == CompositeOperator::Clear || static_cast<CompositeOperator>(m_composite) == CompositeOperator::Copy)
    358358        return true;
    359359
    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);
    361361}
    362362
  • trunk/Source/WebCore/rendering/style/FillLayer.h

    r249236 r252965  
    164164    static FillRepeat initialFillRepeatX(FillLayerType) { return FillRepeat::Repeat; }
    165165    static FillRepeat initialFillRepeatY(FillLayerType) { return FillRepeat::Repeat; }
    166     static CompositeOperator initialFillComposite(FillLayerType) { return CompositeSourceOver; }
     166    static CompositeOperator initialFillComposite(FillLayerType) { return CompositeOperator::SourceOver; }
    167167    static BlendMode initialFillBlendMode(FillLayerType) { return BlendMode::Normal; }
    168168    static FillSize initialFillSize(FillLayerType) { return { }; }
  • trunk/Source/WebCore/svg/graphics/SVGImage.cpp

    r251413 r252965  
    248248    GraphicsContext localContext(&platformContext, GraphicsContext::BitmapRenderingContextType::GPUMemory);
    249249
    250     draw(localContext, rect(), rect(), { CompositeSourceOver, BlendMode::Normal, DecodingMode::Synchronous, ImageOrientation::None });
     250    draw(localContext, rect(), rect(), { CompositeOperator::SourceOver, BlendMode::Normal, DecodingMode::Synchronous, ImageOrientation::None });
    251251
    252252    COMPtr<ID2D1Bitmap> nativeImage;
     
    314314
    315315    float alpha = context.alpha();
    316     bool compositingRequiresTransparencyLayer = options.compositeOperator() != CompositeSourceOver || options.blendMode() != BlendMode::Normal || alpha < 1;
     316    bool compositingRequiresTransparencyLayer = options.compositeOperator() != CompositeOperator::SourceOver || options.blendMode() != BlendMode::Normal || alpha < 1;
    317317    if (compositingRequiresTransparencyLayer) {
    318318        context.beginTransparencyLayer(alpha);
    319         context.setCompositeOperation(CompositeSourceOver, BlendMode::Normal);
     319        context.setCompositeOperation(CompositeOperator::SourceOver, BlendMode::Normal);
    320320    }
    321321
  • trunk/Source/WebKit/ChangeLog

    r252962 r252965  
     12019-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
    1162019-11-30  Tim Horton  <timothy_horton@apple.com>
    217
  • trunk/Source/WebKit/UIProcess/cairo/BackingStoreCairo.cpp

    r248846 r252965  
    8888
    8989    // 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 CompositeCopy to overwrite the existing surface.
    91     graphicsContext.setCompositeOperation(WebCore::CompositeCopy);
     90    // For such case, bitmap must be drawn using CompositeOperator::Copy to overwrite the existing surface.
     91    graphicsContext.setCompositeOperation(WebCore::CompositeOperator::Copy);
    9292
    9393    for (const auto& updateRect : updateInfo.updateRects) {
  • trunk/Source/WebKit/WebProcess/Plugins/PluginProxy.cpp

    r248846 r252965  
    216216        if (graphicsContext) {
    217217            graphicsContext->applyDeviceScaleFactor(contentsScaleFactor());
    218             graphicsContext->setCompositeOperation(CompositeCopy);
     218            graphicsContext->setCompositeOperation(CompositeOperator::Copy);
    219219
    220220            m_pluginBackingStore->paint(*graphicsContext, contentsScaleFactor(), IntPoint(), pluginBounds());
     
    728728        if (graphicsContext) {
    729729            graphicsContext->applyDeviceScaleFactor(contentsScaleFactor());
    730             graphicsContext->setCompositeOperation(CompositeCopy);
     730            graphicsContext->setCompositeOperation(CompositeOperator::Copy);
    731731            m_pluginBackingStore->paint(*graphicsContext, contentsScaleFactor(), paintedRect.location(), paintedRect);
    732732        }
  • trunk/Source/WebKit/WebProcess/WebPage/FindController.cpp

    r252658 r252965  
    538538
    539539    // Clear out the holes.
    540     graphicsContext.setCompositeOperation(CompositeClear);
     540    graphicsContext.setCompositeOperation(CompositeOperator::Clear);
    541541    for (auto& path : whiteFramePaths)
    542542        graphicsContext.fillPath(path);
  • trunk/Source/WebKitLegacy/win/ChangeLog

    r251835 r252965  
     12019-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
    1142019-10-31  Ryosuke Niwa  <rniwa@webkit.org>
    215
  • trunk/Source/WebKitLegacy/win/FullscreenVideoController.cpp

    r248846 r252965  
    502502
    503503    context.fillRoundedRect(FloatRoundedRect(outerRect, outerRadius, outerRadius, outerRadius, outerRadius), Color(borderColor));
    504     context.setCompositeOperation(CompositeCopy);
     504    context.setCompositeOperation(CompositeOperator::Copy);
    505505    context.fillRoundedRect(FloatRoundedRect(innerRect, innerRadius, innerRadius, innerRadius, innerRadius), Color(backgroundColor));
    506506
  • trunk/Source/WebKitLegacy/win/WebView.cpp

    r251425 r252965  
    12691269            frameView->paint(gc, logicalDirtyRect);
    12701270            if (m_shouldInvertColors)
    1271                 gc.fillRect(logicalDirtyRect, Color::white, CompositeDifference);
     1271                gc.fillRect(logicalDirtyRect, Color::white, CompositeOperator::Difference);
    12721272            gc.restore();
    12731273        }
     
    14211421        frameView->paint(gc, logicalDirtyRect);
    14221422        if (m_shouldInvertColors)
    1423             gc.fillRect(logicalDirtyRect, Color::white, CompositeDifference);
     1423            gc.fillRect(logicalDirtyRect, Color::white, CompositeOperator::Difference);
    14241424        gc.restore();
    14251425    }
Note: See TracChangeset for help on using the changeset viewer.