Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/filesystem')
-rw-r--r--src/filesystem/inistream.cc38
-rw-r--r--src/filesystem/inistream.h8
2 files changed, 46 insertions, 0 deletions
diff --git a/src/filesystem/inistream.cc b/src/filesystem/inistream.cc
index 15c8ee0..0235440 100644
--- a/src/filesystem/inistream.cc
+++ b/src/filesystem/inistream.cc
@@ -138,6 +138,44 @@ bool IniStream::got_key_label(const char * keylabel, std::string & labelstring)
}
}
+bool IniStream::got_key_vector2f(const char * keylabel, math::Vector2f & v)
+{
+ if (last_read_was_key && (key_current.compare(keylabel) == 0)) {
+ std::istringstream is(value_current);
+ float x, y;
+ if ((is >> x) && (is >> y)) {
+ v.assign(x, y);
+ } else {
+ v.clear();
+ }
+ return true;
+ } else {
+ return false;
+ }
+}
+
+
+bool IniStream::got_key_vector2f_opt(const char * keylabel, math::Vector2f & v)
+{
+ if (last_read_was_key && (key_current.compare(keylabel) == 0)) {
+ std::istringstream is(value_current);
+ float x, y;
+ if (is >> x) {
+ if (!(is >> y)) {
+ v.assign(x, x);
+ } else {
+ v.assign(x, y);
+ }
+ } else {
+ v.clear();
+ }
+
+ return true;
+ } else {
+ return false;
+ }
+}
+
bool IniStream::got_key_vector3f(const char * keylabel, math::Vector3f & v)
{
if (last_read_was_key && (key_current.compare(keylabel) == 0)) {
diff --git a/src/filesystem/inistream.h b/src/filesystem/inistream.h
index 8788719..6aba4dc 100644
--- a/src/filesystem/inistream.h
+++ b/src/filesystem/inistream.h
@@ -10,6 +10,7 @@
#include <string>
#include <fstream>
+#include "math/vector2f.h"
#include "math/vector3f.h"
#include "math/color.h"
#include "filesystem/filestream.h"
@@ -80,6 +81,13 @@ public:
bool got_key_long(const char * keylabel, long & l);
+ bool got_key_vector2f(const char * keylabel, math::Vector2f & v);
+
+ /**
+ * @brief special version that reads 1 or 2 arguments
+ **/
+ bool got_key_vector2f_opt(const char * keylabel, math::Vector2f & v);
+
bool got_key_vector3f(const char * keylabel, math::Vector3f & v);
/**