1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "extensions/browser/image_util.h" 6 7 #include <stdint.h> 8 #include <vector> 9 10 #include "base/strings/string_number_conversions.h" 11 #include "third_party/skia/include/core/SkColor.h" 12 13 namespace extensions { 14 namespace image_util { 15 16 bool ParseCSSColorString(const std::string& color_string, SkColor* result) { 17 std::string formatted_color; 18 // Check the string for incorrect formatting. 19 if (color_string.empty() || color_string[0] != '#') 20 return false; 21 22 // Convert the string from #FFF format to #FFFFFF format. 23 if (color_string.length() == 4) { 24 for (size_t i = 1; i < 4; ++i) { 25 formatted_color += color_string[i]; 26 formatted_color += color_string[i]; 27 } 28 } else if (color_string.length() == 7) { 29 formatted_color = color_string.substr(1, 6); 30 } else { 31 return false; 32 } 33 34 // Convert the string to an integer and make sure it is in the correct value 35 // range. 36 std::vector<uint8_t> color_bytes; 37 if (!base::HexStringToBytes(formatted_color, &color_bytes)) 38 return false; 39 40 *result = SkColorSetARGB(255, color_bytes[0], color_bytes[1], color_bytes[2]); 41 return true; 42 } 43 44 } // namespace image_util 45 } // namespace extensions 46