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 map()28 const IconMap& map() const { return map_; } empty()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