diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-09-10 16:47:49 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-09-10 16:50:10 -0400 |
commit | c4f7aae7d5c227650675c17c37ebbd36eab670fb (patch) | |
tree | 47c9c4e608540495891c8b2efaee4a690af27e9a /libs/gtkmm2ext/cursors.cc | |
parent | beb0b3a6a710fe0ec06d4426f307da1195ba9c9c (diff) |
add new (mostly) static class to permit lookup of cursor image hotspots
Diffstat (limited to 'libs/gtkmm2ext/cursors.cc')
-rw-r--r-- | libs/gtkmm2ext/cursors.cc | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/libs/gtkmm2ext/cursors.cc b/libs/gtkmm2ext/cursors.cc new file mode 100644 index 0000000000..3377a7cda9 --- /dev/null +++ b/libs/gtkmm2ext/cursors.cc @@ -0,0 +1,66 @@ +#include <sstream> +#include <fstream> + +#include "gtkmm2ext/cursors.h" + +using namespace Gtkmm2ext; + +CursorInfo::Infos CursorInfo::infos; + +CursorInfo::CursorInfo (const std::string& n, int hotspot_x, int hotspot_y) + : name (n) + , x (hotspot_x) + , y (hotspot_y) +{ +} + +int +CursorInfo::load_cursor_info (const std::string& path) +{ + std::ifstream infofile (path.c_str()); + + if (!infofile) { + return -1; + } + + std::stringstream s; + std::string name; + int x; + int y; + + do { + s << infofile; + if (!infofile) { + break; + } + s >> name; + s >> x; + s >> y; + if (!s) { + break; + } + + CursorInfo* ci = new CursorInfo (name, x, y); + infos[name] = ci; + + } while (true); + + return 0; +} + +void +CursorInfo::drop_cursor_info () +{ + infos.clear (); +} + +CursorInfo* +CursorInfo::lookup_cursor_info (const std::string& name) +{ + Infos::iterator i = infos.find (name); + + if (i == infos.end()) { + return 0; + } + return i->second; +} |