Index: components/favicon_base/select_favicon_frames.cc |
diff --git a/chrome/browser/history/select_favicon_frames.cc b/components/favicon_base/select_favicon_frames.cc |
similarity index 80% |
rename from chrome/browser/history/select_favicon_frames.cc |
rename to components/favicon_base/select_favicon_frames.cc |
index ef7ac7943c323821d6be20e51ac63913ac346091..7aa215790e2f945010cbb63fc839141e52661bd6 100644 |
--- a/chrome/browser/history/select_favicon_frames.cc |
+++ b/components/favicon_base/select_favicon_frames.cc |
@@ -2,8 +2,9 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/history/select_favicon_frames.h" |
+#include "components/favicon_base/select_favicon_frames.h" |
+#include <limits> |
#include <set> |
#include "skia/ext/image_operations.h" |
@@ -29,8 +30,7 @@ size_t BiggestCandidate(const std::vector<gfx::Size>& candidate_sizes) { |
SkBitmap SampleNearestNeighbor(const SkBitmap& contents, int desired_size) { |
SkBitmap bitmap; |
- bitmap.setConfig( |
- SkBitmap::kARGB_8888_Config, desired_size, desired_size); |
+ bitmap.setConfig(SkBitmap::kARGB_8888_Config, desired_size, desired_size); |
bitmap.allocPixels(); |
if (!contents.isOpaque()) |
bitmap.eraseARGB(0, 0, 0, 0); |
@@ -44,11 +44,7 @@ SkBitmap SampleNearestNeighbor(const SkBitmap& contents, int desired_size) { |
return bitmap; |
} |
-enum ResizeMethod { |
-NONE, |
-SAMPLE_NEAREST_NEIGHBOUR, |
-LANCZOS |
-}; |
+enum ResizeMethod { NONE, SAMPLE_NEAREST_NEIGHBOUR, LANCZOS }; |
size_t GetCandidateIndexWithBestScore( |
const std::vector<gfx::Size>& candidate_sizes_in_pixel, |
@@ -81,26 +77,29 @@ size_t GetCandidateIndexWithBestScore( |
// 1) Bitmaps with width and height smaller than |kHugeEdgeSizeInPixel|. |
// 2) Bitmaps which need to be scaled down instead of up. |
// 3) Bitmaps which do not need to be scaled as much. |
- int candidate_index = -1; |
+ size_t candidate_index = std::numeric_limits<size_t>::max(); |
float candidate_score = 0; |
for (size_t i = 0; i < candidate_sizes_in_pixel.size(); ++i) { |
float average_edge_in_pixel = (candidate_sizes_in_pixel[i].width() + |
- candidate_sizes_in_pixel[i].height()) / 2.0f; |
+ candidate_sizes_in_pixel[i].height()) / |
+ 2.0f; |
float score = 0; |
if (candidate_sizes_in_pixel[i].width() >= kHugeEdgeSizeInPixel || |
candidate_sizes_in_pixel[i].height() >= kHugeEdgeSizeInPixel) { |
- score = std::min(1.0f, desired_size_in_pixel / average_edge_in_pixel) * |
- 0.01f; |
+ score = |
+ std::min(1.0f, desired_size_in_pixel / average_edge_in_pixel) * 0.01f; |
} else if (candidate_sizes_in_pixel[i].width() >= desired_size_in_pixel && |
candidate_sizes_in_pixel[i].height() >= desired_size_in_pixel) { |
score = desired_size_in_pixel / average_edge_in_pixel * 0.01f + 0.15f; |
} else { |
score = std::min(1.0f, average_edge_in_pixel / desired_size_in_pixel) * |
- 0.01f + 0.1f; |
+ 0.01f + |
+ 0.1f; |
} |
- if (candidate_index == -1 || score > candidate_score) { |
+ if (candidate_index == std::numeric_limits<size_t>::max() || |
+ score > candidate_score) { |
candidate_index = i; |
candidate_score = score; |
} |
@@ -166,7 +165,10 @@ void GetCandidateIndicesWithBestScores( |
SelectionResult result; |
result.scale_factor = scale_factors[i]; |
result.index = GetCandidateIndexWithBestScore(candidate_sizes, |
- result.scale_factor, desired_size, &score, &result.resize_method); |
+ result.scale_factor, |
+ desired_size, |
+ &score, |
+ &result.resize_method); |
results->push_back(result); |
total_score += score; |
} |
@@ -181,8 +183,8 @@ SkBitmap GetResizedBitmap(const SkBitmap& source_bitmap, |
ui::ScaleFactor scale_factor, |
ResizeMethod resize_method) { |
float scale = ui::GetImageScale(scale_factor); |
- int desired_size_in_pixel = static_cast<int>( |
- desired_size_in_dip * scale + 0.5f); |
+ int desired_size_in_pixel = |
+ static_cast<int>(desired_size_in_dip * scale + 0.5f); |
switch (resize_method) { |
case NONE: |
@@ -191,8 +193,10 @@ SkBitmap GetResizedBitmap(const SkBitmap& source_bitmap, |
return SampleNearestNeighbor(source_bitmap, desired_size_in_pixel); |
case LANCZOS: |
return skia::ImageOperations::Resize( |
- source_bitmap, skia::ImageOperations::RESIZE_LANCZOS3, |
- desired_size_in_pixel, desired_size_in_pixel); |
+ source_bitmap, |
+ skia::ImageOperations::RESIZE_LANCZOS3, |
+ desired_size_in_pixel, |
+ desired_size_in_pixel); |
} |
return source_bitmap; |
} |
@@ -208,17 +212,18 @@ gfx::ImageSkia SelectFaviconFrames( |
int desired_size, |
float* match_score) { |
std::vector<SelectionResult> results; |
- GetCandidateIndicesWithBestScores(original_sizes, scale_factors, |
- desired_size, match_score, &results); |
+ GetCandidateIndicesWithBestScores( |
+ original_sizes, scale_factors, desired_size, match_score, &results); |
gfx::ImageSkia multi_image; |
for (size_t i = 0; i < results.size(); ++i) { |
const SelectionResult& result = results[i]; |
SkBitmap resized_bitmap = GetResizedBitmap(bitmaps[result.index], |
- desired_size, result.scale_factor, result.resize_method); |
- multi_image.AddRepresentation( |
- gfx::ImageSkiaRep(resized_bitmap, |
- ui::GetImageScale(result.scale_factor))); |
+ desired_size, |
+ result.scale_factor, |
+ result.resize_method); |
+ multi_image.AddRepresentation(gfx::ImageSkiaRep( |
+ resized_bitmap, ui::GetImageScale(result.scale_factor))); |
} |
return multi_image; |
} |
@@ -230,8 +235,8 @@ void SelectFaviconFrameIndices( |
std::vector<size_t>* best_indices, |
float* match_score) { |
std::vector<SelectionResult> results; |
- GetCandidateIndicesWithBestScores(frame_pixel_sizes, scale_factors, |
- desired_size, match_score, &results); |
+ GetCandidateIndicesWithBestScores( |
+ frame_pixel_sizes, scale_factors, desired_size, match_score, &results); |
std::set<size_t> already_added; |
for (size_t i = 0; i < results.size(); ++i) { |