Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(12)

Side by Side Diff: third_party/WebKit/Source/core/frame/ImageBitmap.cpp

Issue 2648353011: Replace all the string literals in core/frame/ImageBitmap.cpp with constants (Closed)
Patch Set: Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/frame/ImageBitmap.h" 5 #include "core/frame/ImageBitmap.h"
6 6
7 #include "core/html/Float32ImageData.h" 7 #include "core/html/Float32ImageData.h"
8 #include "core/html/HTMLCanvasElement.h" 8 #include "core/html/HTMLCanvasElement.h"
9 #include "core/html/HTMLVideoElement.h" 9 #include "core/html/HTMLVideoElement.h"
10 #include "core/html/ImageData.h" 10 #include "core/html/ImageData.h"
11 #include "core/offscreencanvas/OffscreenCanvas.h" 11 #include "core/offscreencanvas/OffscreenCanvas.h"
12 #include "platform/graphics/skia/SkiaUtils.h" 12 #include "platform/graphics/skia/SkiaUtils.h"
13 #include "platform/image-decoders/ImageDecoder.h" 13 #include "platform/image-decoders/ImageDecoder.h"
14 #include "third_party/skia/include/core/SkCanvas.h" 14 #include "third_party/skia/include/core/SkCanvas.h"
15 #include "third_party/skia/include/core/SkImageInfo.h" 15 #include "third_party/skia/include/core/SkImageInfo.h"
16 #include "third_party/skia/include/core/SkSurface.h" 16 #include "third_party/skia/include/core/SkSurface.h"
17 #include "wtf/CheckedNumeric.h" 17 #include "wtf/CheckedNumeric.h"
18 #include "wtf/PtrUtil.h" 18 #include "wtf/PtrUtil.h"
19 #include "wtf/RefPtr.h" 19 #include "wtf/RefPtr.h"
20 #include <memory> 20 #include <memory>
21 21
22 namespace blink { 22 namespace blink {
23 23
24 static const char* imageOrientationFlipY = "flipY"; 24 const char* const kImageOrientationFlipY = "flipY";
dcheng 2017/01/26 19:27:51 Nit: constexpr char kImageOrientationFlip = "...";
zakerinasab1 2017/01/26 20:48:42 Done.
25 static const char* imageBitmapOptionNone = "none"; 25 const char* const kImageBitmapOptionNone = "none";
26 const char* const kImageBitmapOptionDefault = "default";
27 const char* const kImageBitmapOptionPremultiply = "premultiply";
28 const char* const kImageBitmapOptionResizeQualityHigh = "high";
29 const char* const kImageBitmapOptionResizeQualityMedium = "medium";
30 const char* const kImageBitmapOptionResizeQualityPixelated = "pixelated";
31 const char* const kSRGBImageBitmapColorSpaceConversion = "srgb";
32 const char* const kLinearRGBImageBitmapColorSpaceConversion = "linear-rgb";
26 33
27 namespace { 34 namespace {
28 35
29 struct ParsedOptions { 36 struct ParsedOptions {
30 bool flipY = false; 37 bool flipY = false;
31 bool premultiplyAlpha = true; 38 bool premultiplyAlpha = true;
32 bool shouldScaleInput = false; 39 bool shouldScaleInput = false;
33 unsigned resizeWidth = 0; 40 unsigned resizeWidth = 0;
34 unsigned resizeHeight = 0; 41 unsigned resizeHeight = 0;
35 IntRect cropRect; 42 IntRect cropRect;
(...skipping 13 matching lines...) Expand all
49 return IntRect(std::min(rect.x(), rect.maxX()), 56 return IntRect(std::min(rect.x(), rect.maxX()),
50 std::min(rect.y(), rect.maxY()), 57 std::min(rect.y(), rect.maxY()),
51 std::max(rect.width(), -rect.width()), 58 std::max(rect.width(), -rect.width()),
52 std::max(rect.height(), -rect.height())); 59 std::max(rect.height(), -rect.height()));
53 } 60 }
54 61
55 ParsedOptions parseOptions(const ImageBitmapOptions& options, 62 ParsedOptions parseOptions(const ImageBitmapOptions& options,
56 Optional<IntRect> cropRect, 63 Optional<IntRect> cropRect,
57 IntSize sourceSize) { 64 IntSize sourceSize) {
58 ParsedOptions parsedOptions; 65 ParsedOptions parsedOptions;
59 if (options.imageOrientation() == imageOrientationFlipY) { 66 if (options.imageOrientation() == kImageOrientationFlipY) {
60 parsedOptions.flipY = true; 67 parsedOptions.flipY = true;
61 } else { 68 } else {
62 parsedOptions.flipY = false; 69 parsedOptions.flipY = false;
63 DCHECK(options.imageOrientation() == imageBitmapOptionNone); 70 DCHECK(options.imageOrientation() == kImageBitmapOptionNone);
64 } 71 }
65 if (options.premultiplyAlpha() == imageBitmapOptionNone) { 72 if (options.premultiplyAlpha() == kImageBitmapOptionNone) {
66 parsedOptions.premultiplyAlpha = false; 73 parsedOptions.premultiplyAlpha = false;
67 } else { 74 } else {
68 parsedOptions.premultiplyAlpha = true; 75 parsedOptions.premultiplyAlpha = true;
69 DCHECK(options.premultiplyAlpha() == "default" || 76 DCHECK(options.premultiplyAlpha() == kImageBitmapOptionDefault ||
70 options.premultiplyAlpha() == "premultiply"); 77 options.premultiplyAlpha() == kImageBitmapOptionPremultiply);
71 } 78 }
72 79
73 if (options.colorSpaceConversion() != imageBitmapOptionNone) { 80 if (options.colorSpaceConversion() != kImageBitmapOptionNone) {
74 if (!RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled() || 81 if (!RuntimeEnabledFeatures::experimentalCanvasFeaturesEnabled() ||
75 !RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) { 82 !RuntimeEnabledFeatures::colorCorrectRenderingEnabled()) {
76 DCHECK_EQ(options.colorSpaceConversion(), "default"); 83 DCHECK_EQ(options.colorSpaceConversion(), kImageBitmapOptionDefault);
77 if (RuntimeEnabledFeatures::colorCorrectRenderingDefaultModeEnabled()) { 84 if (RuntimeEnabledFeatures::colorCorrectRenderingDefaultModeEnabled()) {
78 parsedOptions.dstColorSpace = ColorBehavior::globalTargetColorSpace(); 85 parsedOptions.dstColorSpace = ColorBehavior::globalTargetColorSpace();
79 parsedOptions.dstColorType = SkColorType::kN32_SkColorType; 86 parsedOptions.dstColorType = SkColorType::kN32_SkColorType;
80 } 87 }
81 } else { 88 } else {
82 if (options.colorSpaceConversion() == "default" || 89 if (options.colorSpaceConversion() == kImageBitmapOptionDefault ||
83 options.colorSpaceConversion() == "srgb") { 90 options.colorSpaceConversion() ==
91 kSRGBImageBitmapColorSpaceConversion) {
84 parsedOptions.dstColorSpace = 92 parsedOptions.dstColorSpace =
85 SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named); 93 SkColorSpace::MakeNamed(SkColorSpace::kSRGB_Named);
86 parsedOptions.dstColorType = SkColorType::kN32_SkColorType; 94 parsedOptions.dstColorType = SkColorType::kN32_SkColorType;
87 } else if (options.colorSpaceConversion() == "linear-rgb") { 95 } else if (options.colorSpaceConversion() ==
96 kLinearRGBImageBitmapColorSpaceConversion) {
88 parsedOptions.dstColorSpace = 97 parsedOptions.dstColorSpace =
89 SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named); 98 SkColorSpace::MakeNamed(SkColorSpace::kSRGBLinear_Named);
90 parsedOptions.dstColorType = SkColorType::kRGBA_F16_SkColorType; 99 parsedOptions.dstColorType = SkColorType::kRGBA_F16_SkColorType;
91 } else { 100 } else {
92 NOTREACHED() 101 NOTREACHED()
93 << "Invalid ImageBitmap creation attribute colorSpaceConversion: " 102 << "Invalid ImageBitmap creation attribute colorSpaceConversion: "
94 << options.colorSpaceConversion(); 103 << options.colorSpaceConversion();
95 } 104 }
96 } 105 }
97 } 106 }
(...skipping 24 matching lines...) Expand all
122 } 131 }
123 if (static_cast<int>(parsedOptions.resizeWidth) == 132 if (static_cast<int>(parsedOptions.resizeWidth) ==
124 parsedOptions.cropRect.width() && 133 parsedOptions.cropRect.width() &&
125 static_cast<int>(parsedOptions.resizeHeight) == 134 static_cast<int>(parsedOptions.resizeHeight) ==
126 parsedOptions.cropRect.height()) { 135 parsedOptions.cropRect.height()) {
127 parsedOptions.shouldScaleInput = false; 136 parsedOptions.shouldScaleInput = false;
128 return parsedOptions; 137 return parsedOptions;
129 } 138 }
130 parsedOptions.shouldScaleInput = true; 139 parsedOptions.shouldScaleInput = true;
131 140
132 if (options.resizeQuality() == "high") 141 if (options.resizeQuality() == kImageBitmapOptionResizeQualityHigh)
133 parsedOptions.resizeQuality = kHigh_SkFilterQuality; 142 parsedOptions.resizeQuality = kHigh_SkFilterQuality;
134 else if (options.resizeQuality() == "medium") 143 else if (options.resizeQuality() == kImageBitmapOptionResizeQualityMedium)
135 parsedOptions.resizeQuality = kMedium_SkFilterQuality; 144 parsedOptions.resizeQuality = kMedium_SkFilterQuality;
136 else if (options.resizeQuality() == "pixelated") 145 else if (options.resizeQuality() == kImageBitmapOptionResizeQualityPixelated)
137 parsedOptions.resizeQuality = kNone_SkFilterQuality; 146 parsedOptions.resizeQuality = kNone_SkFilterQuality;
138 else 147 else
139 parsedOptions.resizeQuality = kLow_SkFilterQuality; 148 parsedOptions.resizeQuality = kLow_SkFilterQuality;
140 return parsedOptions; 149 return parsedOptions;
141 } 150 }
142 151
143 bool dstBufferSizeHasOverflow(const ParsedOptions& options) { 152 bool dstBufferSizeHasOverflow(const ParsedOptions& options) {
144 CheckedNumeric<unsigned> totalBytes = options.cropRect.width(); 153 CheckedNumeric<unsigned> totalBytes = options.cropRect.width();
145 totalBytes *= options.cropRect.height(); 154 totalBytes *= options.cropRect.height();
146 totalBytes *= SkColorTypeBytesPerPixel(options.latestColorType); 155 totalBytes *= SkColorTypeBytesPerPixel(options.latestColorType);
(...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after
550 ImageBitmap::ImageBitmap(HTMLImageElement* image, 559 ImageBitmap::ImageBitmap(HTMLImageElement* image,
551 Optional<IntRect> cropRect, 560 Optional<IntRect> cropRect,
552 Document* document, 561 Document* document,
553 const ImageBitmapOptions& options) { 562 const ImageBitmapOptions& options) {
554 RefPtr<Image> input = image->cachedImage()->getImage(); 563 RefPtr<Image> input = image->cachedImage()->getImage();
555 ParsedOptions parsedOptions = 564 ParsedOptions parsedOptions =
556 parseOptions(options, cropRect, image->bitmapSourceSize()); 565 parseOptions(options, cropRect, image->bitmapSourceSize());
557 if (dstBufferSizeHasOverflow(parsedOptions)) 566 if (dstBufferSizeHasOverflow(parsedOptions))
558 return; 567 return;
559 568
560 if (options.colorSpaceConversion() == imageBitmapOptionNone) { 569 if (options.colorSpaceConversion() == kImageBitmapOptionNone) {
561 m_image = cropImageAndApplyColorSpaceConversion( 570 m_image = cropImageAndApplyColorSpaceConversion(
562 input.get(), parsedOptions, PremultiplyAlpha, ColorBehavior::ignore()); 571 input.get(), parsedOptions, PremultiplyAlpha, ColorBehavior::ignore());
563 } else { 572 } else {
564 m_image = cropImageAndApplyColorSpaceConversion( 573 m_image = cropImageAndApplyColorSpaceConversion(
565 input.get(), parsedOptions, PremultiplyAlpha, 574 input.get(), parsedOptions, PremultiplyAlpha,
566 ColorBehavior::transformToGlobalTarget()); 575 ColorBehavior::transformToGlobalTarget());
567 } 576 }
568 577
569 if (!m_image) 578 if (!m_image)
570 return; 579 return;
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after
1144 void ImageBitmap::adjustDrawRects(FloatRect* srcRect, 1153 void ImageBitmap::adjustDrawRects(FloatRect* srcRect,
1145 FloatRect* dstRect) const {} 1154 FloatRect* dstRect) const {}
1146 1155
1147 FloatSize ImageBitmap::elementSize(const FloatSize&) const { 1156 FloatSize ImageBitmap::elementSize(const FloatSize&) const {
1148 return FloatSize(width(), height()); 1157 return FloatSize(width(), height());
1149 } 1158 }
1150 1159
1151 DEFINE_TRACE(ImageBitmap) {} 1160 DEFINE_TRACE(ImageBitmap) {}
1152 1161
1153 } // namespace blink 1162 } // namespace blink
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698