18ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen// Copyright (c) 2010 The Chromium Authors. All rights reserved. 28ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen// Use of this source code is governed by a BSD-style license that can be 38ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen// found in the LICENSE file. 48ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 58ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen#ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_ICON_SET_H_ 68ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen#define CHROME_COMMON_EXTENSIONS_EXTENSION_ICON_SET_H_ 78ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen#pragma once 88ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 98ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen#include <map> 108ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen#include <string> 118ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 128ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen// Represents the set of icons for an extension. 138ae428e0fb7feea16d79853f29447469a93bedffKristian Monsenclass ExtensionIconSet { 148ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen public: 15731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ExtensionIconSet(); 16731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ~ExtensionIconSet(); 17731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 188ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // Access to the underlying map from icon size->path. 198ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen typedef std::map<int, std::string> IconMap; 208ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen const IconMap& map() const { return map_; } 218ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 228ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // Remove all icons from the set. 238ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen void Clear(); 248ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 258ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // Add an icon to the set. If the specified size is already present, it is 268ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // overwritten. 278ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen void Add(int size, const std::string& path); 288ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 298ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // Get an icon from the set, optionally falling back to a smaller or bigger 308ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // size. MatchType is exclusive (do not OR them together). 318ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen enum MatchType { 328ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen MATCH_EXACTLY, 338ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen MATCH_BIGGER, 348ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen MATCH_SMALLER 358ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen }; 368ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen std::string Get(int size, MatchType match_type) const; 378ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 388ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen // Returns true if the set contains the specified path. 398ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen bool ContainsPath(const std::string& path) const; 408ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 418ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen private: 428ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen IconMap map_; 438ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen}; 448ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen 458ae428e0fb7feea16d79853f29447469a93bedffKristian Monsen#endif // CHROME_COMMON_EXTENSIONS_EXTENSION_ICON_SET_H_ 46