]> git.localhorst.tv Git - l2e.git/commitdiff
added right aligning font drawing functions
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Wed, 31 Oct 2012 21:06:58 +0000 (22:06 +0100)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Wed, 31 Oct 2012 21:06:58 +0000 (22:06 +0100)
src/graphics/Font.cpp
src/graphics/Font.h

index be96a2c104b860f0e9dda819388c92c0fa206d81..59059e07436d1893da0a9fc7dc73612fe5c79a92 100644 (file)
@@ -39,6 +39,18 @@ void Font::DrawString(const char *s, SDL_Surface *dest, const Vector<int> &posit
        }
 }
 
+void Font::DrawStringRight(const char *s, SDL_Surface *dest, const Vector<int> &positionIn, int maxChars) const {
+       if (!sprite) return;
+
+       int length(0);
+       while (length < maxChars && s[length] != '\0') {
+               ++length;
+       }
+       Vector<int> position(positionIn.X() - length * CharWidth(), positionIn.Y());
+
+       DrawString(s, dest, position, length);
+}
+
 void Font::DrawDigit(int digit, SDL_Surface *dest, const Vector<int> &position) const {
        if (!sprite) return;
 
@@ -76,6 +88,14 @@ void Font::DrawNumber(int numberIn, SDL_Surface *dest, const Vector<int> &positi
        }
 }
 
+void Font::DrawNumberRight(int number, SDL_Surface *dest, const Vector<int> &positionIn, int digits) const {
+       if (!sprite) return;
+
+       Vector<int> position(positionIn.X() - digits * CharWidth(), positionIn.Y());
+
+       DrawNumber(number, dest, position, digits);
+}
+
 
 void Font::CreateTypeDescription() {
        Font f;
index 07cd35f0a5f32867e33487fbb082b578d589478d..b981946642925a10980d48532a89d9d3065afb05 100644 (file)
@@ -31,8 +31,10 @@ public:
        int CharHeight() const { return sprite->Height(); }
        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 maxChars = 0) const;
+       void DrawStringRight(const char *s, SDL_Surface *dest, const geometry::Vector<int> &position, int maxChars = 0) const;
        void DrawDigit(int d, SDL_Surface *dest, const geometry::Vector<int> &position) const;
        void DrawNumber(int n, SDL_Surface *dest, const geometry::Vector<int> &position, int digits = 0) const;
+       void DrawNumberRight(int n, SDL_Surface *dest, const geometry::Vector<int> &position, int digits = 0) const;
 
 public:
        void SetSprite(const Sprite *s) { sprite = s; }