// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "extensions/browser/image_util.h"
#include <stdint.h>
#include <vector>
#include "base/strings/string_number_conversions.h"
#include "third_party/skia/include/core/SkColor.h"
namespace extensions {
namespace image_util {
bool ParseCSSColorString(const std::string& color_string, SkColor* result) {
std::string formatted_color;
// Check the string for incorrect formatting.
if (color_string.empty() || color_string[0] != '#')
return false;
// Convert the string from #FFF format to #FFFFFF format.
if (color_string.length() == 4) {
for (size_t i = 1; i < 4; ++i) {
formatted_color += color_string[i];
formatted_color += color_string[i];
}
} else if (color_string.length() == 7) {
formatted_color = color_string.substr(1, 6);
} else {
return false;
}
// Convert the string to an integer and make sure it is in the correct value
// range.
std::vector<uint8_t> color_bytes;
if (!base::HexStringToBytes(formatted_color, &color_bytes))
return false;
*result = SkColorSetARGB(255, color_bytes[0], color_bytes[1], color_bytes[2]);
return true;
}
} // namespace image_util
} // namespace extensions