Title: [224465] trunk/Source/WebCore
Revision
224465
Author
[email protected]
Date
2017-11-04 22:40:16 -0700 (Sat, 04 Nov 2017)

Log Message

Move code that maps a CompositeOperator and BlendMode to a CGBlendMode into a helper function
https://bugs.webkit.org/show_bug.cgi?id=179290

Reviewed by Darin Adler.

Move the code, and use nested switch rather than conditionals.

* platform/graphics/GraphicsTypes.h:
* platform/graphics/cg/GraphicsContextCG.cpp:
(WebCore::compositeAndBlendToCGBlendMode):
(WebCore::GraphicsContext::setPlatformCompositeOperation):

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (224464 => 224465)


--- trunk/Source/WebCore/ChangeLog	2017-11-05 00:54:32 UTC (rev 224464)
+++ trunk/Source/WebCore/ChangeLog	2017-11-05 05:40:16 UTC (rev 224465)
@@ -1,3 +1,17 @@
+2017-11-04  Simon Fraser  <[email protected]>
+
+        Move code that maps a CompositeOperator and BlendMode to a CGBlendMode into a helper function
+        https://bugs.webkit.org/show_bug.cgi?id=179290
+
+        Reviewed by Darin Adler.
+
+        Move the code, and use nested switch rather than conditionals.
+
+        * platform/graphics/GraphicsTypes.h:
+        * platform/graphics/cg/GraphicsContextCG.cpp:
+        (WebCore::selectCGBlendMode):
+        (WebCore::GraphicsContext::setPlatformCompositeOperation):
+
 2017-11-04  Chris Dumez  <[email protected]>
 
         Index properties on cross origin Window objects should be enumerable

Modified: trunk/Source/WebCore/platform/graphics/GraphicsTypes.h (224464 => 224465)


--- trunk/Source/WebCore/platform/graphics/GraphicsTypes.h	2017-11-05 00:54:32 UTC (rev 224464)
+++ trunk/Source/WebCore/platform/graphics/GraphicsTypes.h	2017-11-05 05:40:16 UTC (rev 224465)
@@ -23,8 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#ifndef GraphicsTypes_h
-#define GraphicsTypes_h
+#pragma once
 
 #include "WindRule.h"
 #include <wtf/Forward.h>
@@ -121,4 +120,3 @@
 
 } // namespace WebCore
 
-#endif

Modified: trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp (224464 => 224465)


--- trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp	2017-11-05 00:54:32 UTC (rev 224464)
+++ trunk/Source/WebCore/platform/graphics/cg/GraphicsContextCG.cpp	2017-11-05 05:40:16 UTC (rev 224465)
@@ -137,6 +137,80 @@
     return InterpolationDefault;
 }
 
+static CGBlendMode selectCGBlendMode(CompositeOperator compositeOperator, BlendMode blendMode)
+{
+    switch (blendMode) {
+    case BlendModeNormal:
+        switch (compositeOperator) {
+        case CompositeClear:
+            return kCGBlendModeClear;
+        case CompositeCopy:
+            return kCGBlendModeCopy;
+        case CompositeSourceOver:
+            return kCGBlendModeNormal;
+        case CompositeSourceIn:
+            return kCGBlendModeSourceIn;
+        case CompositeSourceOut:
+            return kCGBlendModeSourceOut;
+        case CompositeSourceAtop:
+            return kCGBlendModeSourceAtop;
+        case CompositeDestinationOver:
+            return kCGBlendModeDestinationOver;
+        case CompositeDestinationIn:
+            return kCGBlendModeDestinationIn;
+        case CompositeDestinationOut:
+            return kCGBlendModeDestinationOut;
+        case CompositeDestinationAtop:
+            return kCGBlendModeDestinationAtop;
+        case CompositeXOR:
+            return kCGBlendModeXOR;
+        case CompositePlusDarker:
+            return kCGBlendModePlusDarker;
+        case CompositePlusLighter:
+            return kCGBlendModePlusLighter;
+        case CompositeDifference:
+            return kCGBlendModeDifference;
+        }
+        break;
+    case BlendModeMultiply:
+        return kCGBlendModeMultiply;
+    case BlendModeScreen:
+        return kCGBlendModeScreen;
+    case BlendModeOverlay:
+        return kCGBlendModeOverlay;
+    case BlendModeDarken:
+        return kCGBlendModeDarken;
+    case BlendModeLighten:
+        return kCGBlendModeLighten;
+    case BlendModeColorDodge:
+        return kCGBlendModeColorDodge;
+    case BlendModeColorBurn:
+        return kCGBlendModeColorBurn;
+    case BlendModeHardLight:
+        return kCGBlendModeHardLight;
+    case BlendModeSoftLight:
+        return kCGBlendModeSoftLight;
+    case BlendModeDifference:
+        return kCGBlendModeDifference;
+    case BlendModeExclusion:
+        return kCGBlendModeExclusion;
+    case BlendModeHue:
+        return kCGBlendModeHue;
+    case BlendModeSaturation:
+        return kCGBlendModeSaturation;
+    case BlendModeColor:
+        return kCGBlendModeColor;
+    case BlendModeLuminosity:
+        return kCGBlendModeLuminosity;
+    case BlendModePlusDarker:
+        return kCGBlendModePlusDarker;
+    case BlendModePlusLighter:
+        return kCGBlendModePlusLighter;
+    }
+
+    return kCGBlendModeNormal;
+}
+
 void GraphicsContext::platformInit(CGContextRef cgContext)
 {
     if (!cgContext)
@@ -1734,117 +1808,13 @@
     CGContextSetAlpha(platformContext(), alpha);
 }
 
-void GraphicsContext::setPlatformCompositeOperation(CompositeOperator mode, BlendMode blendMode)
+void GraphicsContext::setPlatformCompositeOperation(CompositeOperator compositeOperator, BlendMode blendMode)
 {
     if (paintingDisabled())
         return;
 
     ASSERT(hasPlatformContext());
-
-    CGBlendMode target = kCGBlendModeNormal;
-    if (blendMode != BlendModeNormal) {
-        switch (blendMode) {
-        case BlendModeMultiply:
-            target = kCGBlendModeMultiply;
-            break;
-        case BlendModeScreen:
-            target = kCGBlendModeScreen;
-            break;
-        case BlendModeOverlay:
-            target = kCGBlendModeOverlay;
-            break;
-        case BlendModeDarken:
-            target = kCGBlendModeDarken;
-            break;
-        case BlendModeLighten:
-            target = kCGBlendModeLighten;
-            break;
-        case BlendModeColorDodge:
-            target = kCGBlendModeColorDodge;
-            break;
-        case BlendModeColorBurn:
-            target = kCGBlendModeColorBurn;
-            break;
-        case BlendModeHardLight:
-            target = kCGBlendModeHardLight;
-            break;
-        case BlendModeSoftLight:
-            target = kCGBlendModeSoftLight;
-            break;
-        case BlendModeDifference:
-            target = kCGBlendModeDifference;
-            break;
-        case BlendModeExclusion:
-            target = kCGBlendModeExclusion;
-            break;
-        case BlendModeHue:
-            target = kCGBlendModeHue;
-            break;
-        case BlendModeSaturation:
-            target = kCGBlendModeSaturation;
-            break;
-        case BlendModeColor:
-            target = kCGBlendModeColor;
-            break;
-        case BlendModeLuminosity:
-            target = kCGBlendModeLuminosity;
-            break;
-        case BlendModePlusDarker:
-            target = kCGBlendModePlusDarker;
-            break;
-        case BlendModePlusLighter:
-            target = kCGBlendModePlusLighter;
-            break;
-        default:
-            break;
-        }
-    } else {
-        switch (mode) {
-        case CompositeClear:
-            target = kCGBlendModeClear;
-            break;
-        case CompositeCopy:
-            target = kCGBlendModeCopy;
-            break;
-        case CompositeSourceOver:
-            // kCGBlendModeNormal
-            break;
-        case CompositeSourceIn:
-            target = kCGBlendModeSourceIn;
-            break;
-        case CompositeSourceOut:
-            target = kCGBlendModeSourceOut;
-            break;
-        case CompositeSourceAtop:
-            target = kCGBlendModeSourceAtop;
-            break;
-        case CompositeDestinationOver:
-            target = kCGBlendModeDestinationOver;
-            break;
-        case CompositeDestinationIn:
-            target = kCGBlendModeDestinationIn;
-            break;
-        case CompositeDestinationOut:
-            target = kCGBlendModeDestinationOut;
-            break;
-        case CompositeDestinationAtop:
-            target = kCGBlendModeDestinationAtop;
-            break;
-        case CompositeXOR:
-            target = kCGBlendModeXOR;
-            break;
-        case CompositePlusDarker:
-            target = kCGBlendModePlusDarker;
-            break;
-        case CompositePlusLighter:
-            target = kCGBlendModePlusLighter;
-            break;
-        case CompositeDifference:
-            target = kCGBlendModeDifference;
-            break;
-        }
-    }
-    CGContextSetBlendMode(platformContext(), target);
+    CGContextSetBlendMode(platformContext(), selectCGBlendMode(compositeOperator, blendMode));
 }
 
 void GraphicsContext::platformApplyDeviceScaleFactor(float deviceScaleFactor)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to