PieDock  1.6.3
IconMap.h
1 /*
2  * O ,-
3  * o . - ' ,-
4  * . ` . ,
5  * ( )) . (
6  * `-;_ . - `.`.
7  * `._'
8  *
9  * Copyright (c) 2007-2010 Markus Fisch <mf@markusfisch.de>
10  *
11  * Licensed under the MIT license:
12  * http://www.opensource.org/licenses/mit-license.php
13  */
14 #ifndef _PieDock_IconMap_
15 #define _PieDock_IconMap_
16 
17 #include "Icon.h"
18 
19 #include <string>
20 #include <vector>
21 #include <map>
22 
23 namespace PieDock
24 {
30  class IconMap
31  {
32  public:
33  typedef std::vector<std::string> Paths;
34 
35  IconMap() :
36  missingSurface( 0 ),
37  fillerSurface( 0 ) {}
38  virtual ~IconMap();
39  virtual inline void addPath( const std::string p ) {
40  paths.push_back( p ); }
41  virtual inline const Paths &getPath() const {
42  return paths; }
43  virtual inline void setFileForMissing( const std::string f ) {
44  fileForMissing = f; }
45  virtual inline const std::string &getFileForMissing() const {
46  return fileForMissing; }
47  virtual inline void setFileForFiller( const std::string f ) {
48  fileForFiller = f; }
49  virtual inline const std::string &getFileForFiller() const {
50  return fileForFiller; }
51  virtual void reset();
52  virtual void addNameAlias( std::string, std::string );
53  virtual void addClassAlias( std::string, std::string );
54  virtual void addTitleAlias( std::string, std::string );
55  virtual Icon *getIcon( std::string, std::string, std::string );
56  virtual Icon *getIconByName( std::string );
57  virtual Icon *getIconByClass( const std::string );
58  virtual Icon *getIconByTitle( const std::string );
59  virtual Icon *getMissingIcon( const std::string );
60  virtual Icon *getFillerIcon();
61  virtual Icon *createIcon( const ArgbSurface *, const std::string,
62  Icon::Type );
63  virtual void saveIcon( const ArgbSurface *,
64  const std::string ) const;
65 
66  protected:
67  typedef std::map<std::string, std::string> AliasToFile;
68  typedef std::map<std::string, Icon *> FileToIcon;
69 
70  virtual void freeIcons();
71 
72  private:
73  Paths paths;
74  AliasToFile nameToFile;
75  AliasToFile classToFile;
76  AliasToFile titleToFile;
77  FileToIcon cache;
78  static const char fallbackPng[];
79  ArgbSurface *missingSurface;
80  ArgbSurface *fillerSurface;
81  std::string fileForMissing;
82  std::string fileForFiller;
83  };
84 }
85 
86 #endif