mirror of
https://github.com/Ardour/ardour.git
synced 2025-12-18 20:56:28 +01:00
add new (mostly) static class to permit lookup of cursor image hotspots
This commit is contained in:
parent
beb0b3a6a7
commit
c4f7aae7d5
3 changed files with 96 additions and 0 deletions
66
libs/gtkmm2ext/cursors.cc
Normal file
66
libs/gtkmm2ext/cursors.cc
Normal file
|
|
@ -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;
|
||||||
|
}
|
||||||
29
libs/gtkmm2ext/gtkmm2ext/cursors.h
Normal file
29
libs/gtkmm2ext/gtkmm2ext/cursors.h
Normal file
|
|
@ -0,0 +1,29 @@
|
||||||
|
#ifndef __gtkmm2ext_cursor_info_h___
|
||||||
|
#define __gtkmm2ext_cursor_info_h___
|
||||||
|
|
||||||
|
#include <string>
|
||||||
|
#include <map>
|
||||||
|
|
||||||
|
namespace Gtkmm2ext {
|
||||||
|
|
||||||
|
class CursorInfo
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
static CursorInfo* lookup_cursor_info (const std::string& image_name);
|
||||||
|
static int load_cursor_info (const std::string& path);
|
||||||
|
static void drop_cursor_info ();
|
||||||
|
|
||||||
|
private:
|
||||||
|
CursorInfo (const std::string& image_name, int hotspot_x, int hotspot_y);
|
||||||
|
|
||||||
|
typedef std::map<std::string,CursorInfo*> Infos;
|
||||||
|
static Infos infos;
|
||||||
|
|
||||||
|
std::string name;
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
|
};
|
||||||
|
|
||||||
|
} /* namespace */
|
||||||
|
|
||||||
|
#endif /* __gtkmm2ext_cursor_info_h___ */
|
||||||
|
|
@ -36,6 +36,7 @@ gtkmm2ext_sources = [
|
||||||
'cell_renderer_pixbuf_toggle.cc',
|
'cell_renderer_pixbuf_toggle.cc',
|
||||||
'choice.cc',
|
'choice.cc',
|
||||||
'click_box.cc',
|
'click_box.cc',
|
||||||
|
'cursors.cc',
|
||||||
'debug.cc',
|
'debug.cc',
|
||||||
'dndtreeview.cc',
|
'dndtreeview.cc',
|
||||||
'fastmeter.cc',
|
'fastmeter.cc',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue