Home | History | Annotate | Download | only in common
      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 #ifndef EXTENSIONS_COMMON_EXTENSION_ICON_SET_H_
      6 #define EXTENSIONS_COMMON_EXTENSION_ICON_SET_H_
      7 
      8 #include <map>
      9 #include <string>
     10 
     11 // Represents the set of icons for an extension.
     12 class ExtensionIconSet {
     13  public:
     14   // Get an icon from the set, optionally falling back to a smaller or bigger
     15   // size. MatchType is exclusive (do not OR them together).
     16   enum MatchType {
     17     MATCH_EXACTLY,
     18     MATCH_BIGGER,
     19     MATCH_SMALLER
     20   };
     21 
     22   // Access to the underlying map from icon size->{path, bitmap}.
     23   typedef std::map<int, std::string> IconMap;
     24 
     25   ExtensionIconSet();
     26   ~ExtensionIconSet();
     27 
     28   const IconMap& map() const { return map_; }
     29   bool empty() const { return map_.empty(); }
     30 
     31   // Remove all icons from the set.
     32   void Clear();
     33 
     34   // Add an icon path to the set. If a path for the specified size is already
     35   // present, it is overwritten.
     36   void Add(int size, const std::string& path);
     37 
     38   // Gets path value of the icon found when searching for |size| using
     39   // |mathc_type|.
     40   std::string Get(int size, MatchType match_type) const;
     41 
     42   // Returns true iff the set contains the specified path.
     43   bool ContainsPath(const std::string& path) const;
     44 
     45   // Returns icon size if the set contains the specified path or 0 if not found.
     46   int GetIconSizeFromPath(const std::string& path) const;
     47 
     48  private:
     49   IconMap map_;
     50 };
     51 
     52 #endif  // EXTENSIONS_COMMON_EXTENSION_ICON_SET_H_
     53