|
PieDock 1.6.0
|
00001 /* 00002 * O ,- 00003 * ° o . -´ ' ,- 00004 * ° .´ ` . ´,´ 00005 * ( ° )) . ( 00006 * `-;_ . -´ `.`. 00007 * `._' ´ 00008 * 00009 * Copyright (c) 2007-2010 Markus Fisch <mf@markusfisch.de> 00010 * 00011 * Licensed under the MIT license: 00012 * http://www.opensource.org/licenses/mit-license.php 00013 */ 00014 #ifndef _PieDock_IconMap_ 00015 #define _PieDock_IconMap_ 00016 00017 #include "Icon.h" 00018 00019 #include <string> 00020 #include <vector> 00021 #include <map> 00022 00023 namespace PieDock 00024 { 00030 class IconMap 00031 { 00032 public: 00033 typedef std::vector<std::string> Paths; 00034 00035 IconMap() : 00036 missingSurface( 0 ), 00037 fillerSurface( 0 ) {} 00038 virtual ~IconMap(); 00039 virtual inline void addPath( const std::string p ) { 00040 paths.push_back( p ); } 00041 virtual inline const Paths &getPath() const { 00042 return paths; } 00043 virtual inline void setFileForMissing( const std::string f ) { 00044 fileForMissing = f; } 00045 virtual inline const std::string &getFileForMissing() const { 00046 return fileForMissing; } 00047 virtual inline void setFileForFiller( const std::string f ) { 00048 fileForFiller = f; } 00049 virtual inline const std::string &getFileForFiller() const { 00050 return fileForFiller; } 00051 virtual void reset(); 00052 virtual void addNameAlias( std::string, std::string ); 00053 virtual void addClassAlias( std::string, std::string ); 00054 virtual void addTitleAlias( std::string, std::string ); 00055 virtual Icon *getIcon( std::string, std::string, std::string ); 00056 virtual Icon *getIconByName( std::string ); 00057 virtual Icon *getIconByClass( const std::string ); 00058 virtual Icon *getIconByTitle( const std::string ); 00059 virtual Icon *getMissingIcon( const std::string ); 00060 virtual Icon *getFillerIcon(); 00061 virtual Icon *createIcon( const ArgbSurface *, const std::string, 00062 Icon::Type ); 00063 virtual void saveIcon( const ArgbSurface *, 00064 const std::string ) const; 00065 00066 protected: 00067 typedef std::map<std::string, std::string> AliasToFile; 00068 typedef std::map<std::string, Icon *> FileToIcon; 00069 00070 virtual void freeIcons(); 00071 00072 private: 00073 Paths paths; 00074 AliasToFile nameToFile; 00075 AliasToFile classToFile; 00076 AliasToFile titleToFile; 00077 FileToIcon cache; 00078 static const char fallbackPng[]; 00079 ArgbSurface *missingSurface; 00080 ArgbSurface *fillerSurface; 00081 std::string fileForMissing; 00082 std::string fileForFiller; 00083 }; 00084 } 00085 00086 #endif
1.7.3