| Index: ui/gfx/image/image_family.cc
|
| diff --git a/ui/gfx/image/image_family.cc b/ui/gfx/image/image_family.cc
|
| deleted file mode 100644
|
| index 6719bc1ab18fc9ecdef4291e7c71d20cb2fa68c9..0000000000000000000000000000000000000000
|
| --- a/ui/gfx/image/image_family.cc
|
| +++ /dev/null
|
| @@ -1,130 +0,0 @@
|
| -// Copyright 2013 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 "ui/gfx/image/image_family.h"
|
| -
|
| -#include <cmath>
|
| -
|
| -#include "ui/gfx/image/image.h"
|
| -#include "ui/gfx/image/image_skia.h"
|
| -#include "ui/gfx/size.h"
|
| -
|
| -namespace gfx {
|
| -
|
| -ImageFamily::const_iterator::const_iterator() {}
|
| -
|
| -ImageFamily::const_iterator::const_iterator(const const_iterator& other)
|
| - : map_iterator_(other.map_iterator_) {}
|
| -
|
| -ImageFamily::const_iterator::const_iterator(
|
| - const std::map<MapKey, gfx::Image>::const_iterator& other)
|
| - : map_iterator_(other) {}
|
| -
|
| -ImageFamily::const_iterator::~const_iterator() {}
|
| -
|
| -ImageFamily::ImageFamily() {}
|
| -ImageFamily::~ImageFamily() {}
|
| -
|
| -void ImageFamily::Add(const gfx::Image& image) {
|
| - gfx::Size size = image.Size();
|
| - if (size.IsEmpty()) {
|
| - map_[MapKey(1.0f, 0)] = image;
|
| - } else {
|
| - float aspect = static_cast<float>(size.width()) / size.height();
|
| - DCHECK_GT(aspect, 0.0f);
|
| - map_[MapKey(aspect, size.width())] = image;
|
| - }
|
| -}
|
| -
|
| -void ImageFamily::Add(const gfx::ImageSkia& image_skia) {
|
| - Add(gfx::Image(image_skia));
|
| -}
|
| -
|
| -const gfx::Image* ImageFamily::GetBest(int width, int height) const {
|
| - if (map_.empty())
|
| - return NULL;
|
| -
|
| - // If either |width| or |height| is 0, both are.
|
| - float desired_aspect;
|
| - if (height == 0 || width == 0) {
|
| - desired_aspect = 1.0f;
|
| - height = 0;
|
| - width = 0;
|
| - } else {
|
| - desired_aspect = static_cast<float>(width) / height;
|
| - }
|
| - DCHECK_GT(desired_aspect, 0.0f);
|
| -
|
| - float closest_aspect = GetClosestAspect(desired_aspect);
|
| -
|
| - // If thinner than desired, search for images with width such that the
|
| - // corresponding height is greater than or equal to the desired |height|.
|
| - int desired_width = closest_aspect <= desired_aspect ?
|
| - width : static_cast<int>(ceilf(height * closest_aspect));
|
| -
|
| - // Get the best-sized image with the aspect ratio.
|
| - return GetWithExactAspect(closest_aspect, desired_width);
|
| -}
|
| -
|
| -float ImageFamily::GetClosestAspect(float desired_aspect) const {
|
| - // Find the two aspect ratios on either side of |desired_aspect|.
|
| - std::map<MapKey, gfx::Image>::const_iterator greater_or_equal =
|
| - map_.lower_bound(MapKey(desired_aspect, 0));
|
| - // Early exit optimization if there is an exact match.
|
| - if (greater_or_equal != map_.end() &&
|
| - greater_or_equal->first.aspect() == desired_aspect) {
|
| - return desired_aspect;
|
| - }
|
| -
|
| - // No exact match; |greater_or_equal| will point to the first image with
|
| - // aspect ratio >= |desired_aspect|, and |less_than| will point to the last
|
| - // image with aspect ratio < |desired_aspect|.
|
| - if (greater_or_equal != map_.begin()) {
|
| - std::map<MapKey, gfx::Image>::const_iterator less_than =
|
| - greater_or_equal;
|
| - --less_than;
|
| - float thinner_aspect = less_than->first.aspect();
|
| - DCHECK_GT(thinner_aspect, 0.0f);
|
| - DCHECK_LT(thinner_aspect, desired_aspect);
|
| - if (greater_or_equal != map_.end()) {
|
| - float wider_aspect = greater_or_equal->first.aspect();
|
| - DCHECK_GT(wider_aspect, desired_aspect);
|
| - if ((wider_aspect / desired_aspect) < (desired_aspect / thinner_aspect))
|
| - return wider_aspect;
|
| - }
|
| - return thinner_aspect;
|
| - } else {
|
| - // No aspect ratio is less than or equal to |desired_aspect|.
|
| - DCHECK(greater_or_equal != map_.end());
|
| - float wider_aspect = greater_or_equal->first.aspect();
|
| - DCHECK_GT(wider_aspect, desired_aspect);
|
| - return wider_aspect;
|
| - }
|
| -}
|
| -
|
| -const gfx::Image* ImageFamily::GetBest(const gfx::Size& size) const {
|
| - return GetBest(size.width(), size.height());
|
| -}
|
| -
|
| -const gfx::Image* ImageFamily::GetWithExactAspect(float aspect,
|
| - int width) const {
|
| - // Find the two images of given aspect ratio on either side of |width|.
|
| - std::map<MapKey, gfx::Image>::const_iterator greater_or_equal =
|
| - map_.lower_bound(MapKey(aspect, width));
|
| - if (greater_or_equal != map_.end() &&
|
| - greater_or_equal->first.aspect() == aspect) {
|
| - // We have found the smallest image of the same size or greater.
|
| - return &greater_or_equal->second;
|
| - }
|
| -
|
| - DCHECK(greater_or_equal != map_.begin());
|
| - std::map<MapKey, gfx::Image>::const_iterator less_than = greater_or_equal;
|
| - --less_than;
|
| - // This must be true because there must be at least one image with |aspect|.
|
| - DCHECK_EQ(less_than->first.aspect(), aspect);
|
| - // We have found the largest image smaller than desired.
|
| - return &less_than->second;
|
| -}
|
| -
|
| -} // namespace gfx
|
|
|