summaryrefslogtreecommitdiffstats
path: root/src/sp-filter.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/sp-filter.cpp')
-rw-r--r--src/sp-filter.cpp30
1 files changed, 30 insertions, 0 deletions
diff --git a/src/sp-filter.cpp b/src/sp-filter.cpp
index ac0d3d29e..43f2dc9d2 100644
--- a/src/sp-filter.cpp
+++ b/src/sp-filter.cpp
@@ -17,6 +17,11 @@
# include "config.h"
#endif
+#include <map>
+#include <string.h>
+using std::map;
+using std::pair;
+
#include "attributes.h"
#include "document.h"
#include "sp-filter.h"
@@ -454,6 +459,31 @@ int sp_filter_primitive_count(SPFilter *filter) {
return filter->_primitive_count;
}
+int sp_filter_get_image_name(SPFilter *filter, gchar const *name) {
+ gchar *name_copy = strdup(name);
+ map<gchar *, int, ltstr>::iterator result = filter->_image_name.find(name_copy);
+ free(name_copy);
+ if (result == filter->_image_name.end()) return -1;
+ else return (*result).second;
+}
+
+int sp_filter_set_image_name(SPFilter *filter, gchar const *name) {
+ int value = filter->_image_number_next;
+ filter->_image_number_next++;
+ gchar *name_copy = strdup(name);
+ pair<map<gchar*,int,ltstr>::iterator,bool> ret = filter->_image_name.insert(pair<gchar*,int>(name_copy, value));
+ if (ret.second == false) {
+ return (*ret.first).second;
+ }
+ return value;
+}
+
+bool ltstr::operator()(const char* s1, const char* s2) const
+{
+ return strcmp(s1, s2) < 0;
+}
+
+
/*
Local Variables:
mode:c++