Home | History | Annotate | Download | only in favicon
      1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_FAVICON_FAVICON_UTIL_H_
      6 #define CHROME_BROWSER_FAVICON_FAVICON_UTIL_H_
      7 
      8 #include <vector>
      9 
     10 #include "ui/base/layout.h"
     11 
     12 namespace chrome {
     13 struct FaviconBitmapResult;
     14 }
     15 
     16 namespace gfx {
     17 class Image;
     18 }
     19 
     20 // Utility class for common favicon related code.
     21 class FaviconUtil {
     22  public:
     23   // Returns the scale factors at which favicons should be fetched. This is
     24   // different from ui::GetSupportedScaleFactors() because clients which do
     25   // not support 1x should still fetch a favicon for 1x to push to sync. This
     26   // guarantees that the clients receiving sync updates pushed by this client
     27   // receive a favicon (potentially of the wrong scale factor) and do not show
     28   // the default favicon.
     29   static std::vector<ui::ScaleFactor> GetFaviconScaleFactors();
     30 
     31   // Sets the color space used for converting |image| to an NSImage to the
     32   // system colorspace. This makes the favicon look the same in the browser UI
     33   // as it does in the renderer.
     34   static void SetFaviconColorSpace(gfx::Image* image);
     35 
     36   // Takes a vector of png-encoded frames, decodes them, and converts them to
     37   // a favicon of size favicon_size (in DIPs) at the desired ui scale factors.
     38   static gfx::Image SelectFaviconFramesFromPNGs(
     39       const std::vector<chrome::FaviconBitmapResult>& png_data,
     40       const std::vector<ui::ScaleFactor>& scale_factors,
     41       int favicon_size);
     42 
     43   // Takes a vector of bitmaps and returns the index of the image that will best
     44   // produce an image of size |desired_size| for the given |scale_factors|.
     45   static size_t SelectBestFaviconFromBitmaps(
     46       const std::vector<SkBitmap>& bitmaps,
     47       const std::vector<ui::ScaleFactor>& scale_factors,
     48       int desired_size);
     49 };
     50 
     51 #endif  // CHROME_BROWSER_FAVICON_FAVICON_UTIL_H_
     52