Simplify Blend()

Use STL algorithms to simplify Blend(). Also enforce the fact that
Blend() does not handle non-separable blend modes using
NOTREACHED_NORETURN().

Change-Id: I4ef2f519b8506a106cbc15758b5d0e50984bd8ac
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/113713
Commit-Queue: Lei Zhang <thestig@chromium.org>
Reviewed-by: Nigi <nigi@chromium.org>
diff --git a/core/fxge/dib/blend.cpp b/core/fxge/dib/blend.cpp
index 8384ee7..98839f8 100644
--- a/core/fxge/dib/blend.cpp
+++ b/core/fxge/dib/blend.cpp
@@ -9,6 +9,7 @@
 #include <algorithm>
 
 #include "core/fxge/dib/fx_dib.h"
+#include "third_party/base/notreached.h"
 
 namespace fxge {
 
@@ -51,28 +52,25 @@
     case BlendMode::kOverlay:
       return Blend(BlendMode::kHardLight, src_color, back_color);
     case BlendMode::kDarken:
-      return src_color < back_color ? src_color : back_color;
+      return std::min(src_color, back_color);
     case BlendMode::kLighten:
-      return src_color > back_color ? src_color : back_color;
+      return std::max(src_color, back_color);
     case BlendMode::kColorDodge: {
       if (src_color == 255) {
-        return src_color;
+        return 255;
       }
-
       return std::min(back_color * 255 / (255 - src_color), 255);
     }
     case BlendMode::kColorBurn: {
       if (src_color == 0) {
-        return src_color;
+        return 0;
       }
-
       return 255 - std::min((255 - back_color) * 255 / src_color, 255);
     }
     case BlendMode::kHardLight:
       if (src_color < 128) {
         return (src_color * back_color * 2) / 255;
       }
-
       return Blend(BlendMode::kScreen, back_color, 2 * src_color - 255);
     case BlendMode::kSoftLight: {
       if (src_color < 128) {
@@ -83,12 +81,12 @@
                               (kColorSqrt[back_color] - back_color) / 255;
     }
     case BlendMode::kDifference:
-      return back_color < src_color ? src_color - back_color
-                                    : back_color - src_color;
+      return std::abs(back_color - src_color);
     case BlendMode::kExclusion:
       return back_color + src_color - 2 * back_color * src_color / 255;
     default:
-      return src_color;
+      // This function does not handle non-separable blend modes.
+      NOTREACHED_NORETURN();
   }
 }