File: image_cache.h

package info (click to toggle)
mysql-workbench 6.3.8%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 113,932 kB
  • ctags: 87,814
  • sloc: ansic: 955,521; cpp: 427,465; python: 59,728; yacc: 59,129; xml: 54,204; sql: 7,091; objc: 965; makefile: 638; sh: 613; java: 237; perl: 30; ruby: 6; php: 1
file content (42 lines) | stat: -rw-r--r-- 1,082 bytes parent folder | download | duplicates (2)
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
#ifndef __IMAGE_CACHE_H__
#define __IMAGE_CACHE_H__

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

#include "base/threading.h"
#include "grt/icon_manager.h"

class ImageCache
{
  public:
    ImageCache()
    {}
  
    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;
    base::Mutex         _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