]> git.localhorst.tv Git - l2e.git/commitdiff
added string dimensions calculation functions
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Thu, 29 Nov 2012 14:23:55 +0000 (15:23 +0100)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Thu, 29 Nov 2012 14:23:55 +0000 (15:23 +0100)
src/graphics/Font.cpp
src/graphics/Font.h

index 94d451ae7a9f7d272cc706599c9ce4b5b774849d..42772b2612088275307447d5cd5c91443cedc5c4 100644 (file)
@@ -21,6 +21,35 @@ using std::pow;
 
 namespace graphics {
 
+int Font::StringWidth(const char *s) const {
+       int width(0), col(0);
+       for (int i(0); s[i]; ++i) {
+               if (s[i] == '\n') {
+                       if (width < col) {
+                               width = col;
+                       }
+                       col = 0;
+               } else {
+                       ++col;
+               }
+       }
+       return (width < col ? col : width) * CharWidth();
+}
+
+int Font::StringHeight(const char *s) const {
+       if (*s == '\0') {
+               return 0;
+       }
+       int height(1);
+       for (; *s; ++s) {
+               if (*s == '\n') {
+                       ++height;
+               }
+       }
+       return height * CharHeight();
+}
+
+
 void Font::DrawChar(char c, SDL_Surface *dest, const Vector<int> &position) const {
        if (!sprite) return;
 
index 6a8a5c23c11e500e73969aecb9198550d6ce0b5e..a5d7b12d690019f0dfd070cd759cc1591521a94d 100644 (file)
@@ -29,6 +29,9 @@ public:
 public:
        int CharWidth() const { return sprite->Width(); }
        int CharHeight() const { return sprite->Height(); }
+       int StringWidth(const char *) const;
+       int StringHeight(const char *) const;
+
        void DrawChar(char c, SDL_Surface *dest, const geometry::Vector<int> &position) const;
        void DrawString(const char *s, SDL_Surface *dest, const geometry::Vector<int> &position, int maxWidth = 0) const;
        void DrawStringRight(const char *s, SDL_Surface *dest, const geometry::Vector<int> &position, int maxWidth = 0) const;