File: image_cache.h

package info (click to toggle)
mysql-workbench 5.2.40%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 53,880 kB
  • sloc: cpp: 419,850; yacc: 74,784; xml: 54,510; python: 31,455; sh: 9,423; ansic: 4,736; makefile: 2,442; php: 529; java: 237
file content (48 lines) | stat: -rw-r--r-- 1,163 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#ifndef __IMAGE_CACHE_H__
#define __IMAGE_CACHE_H__

#include <gdkmm/pixbuf.h>
#include <map>
#include <string>

#include "grt/icon_manager.h"

class ImageCache
{
  public:
    ImageCache()
    {
      g_static_mutex_init(&_sync);
    }
  
    ~ImageCache()
    {
      g_static_mutex_free(&_sync);
    }
  
    Glib::RefPtr<Gdk::Pixbuf> image_from_path(const std::string& name, bool cache= true);
    Glib::RefPtr<Gdk::Pixbuf> image_from_filename(const std::string& name, bool cache= true);
    Glib::RefPtr<Gdk::Pixbuf> image(bec::IconId name);
    

    static ImageCache* get_instance();

  private:
    typedef std::map<std::string, Glib::RefPtr<Gdk::Pixbuf> > ImageMap;

    ImageMap             _images;
    GStaticMutex         _sync;
};

//------------------------------------------------------------------------------
inline Glib::RefPtr<Gdk::Pixbuf> ImageCache::image(bec::IconId icon)
{
  std::string path= bec::IconManager::get_instance()->get_icon_path(icon);
  
  //if (path.empty())
  //  g_message("Cannot locate image '%s' (%i)", bec::IconManager::get_instance()->get_icon_file(icon).c_str(), icon);
  
  return image_from_path(path);
}

#endif