]> git.localhorst.tv Git - l2e.git/commitdiff
made Font default constructible
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 31 Aug 2012 19:13:57 +0000 (21:13 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 31 Aug 2012 19:16:10 +0000 (21:16 +0200)
src/graphics/Font.cpp
src/graphics/Font.h

index a11850001717eae97289cdb2158c8aa129d32c1c..ca06a076a80c251a17f7fead31171d7ce5c6a1a3 100644 (file)
@@ -8,6 +8,7 @@
 #include "Font.h"
 
 #include <cmath>
+#include <iostream>
 
 using geometry::Vector;
 using std::pow;
@@ -15,12 +16,16 @@ using std::pow;
 namespace graphics {
 
 void Font::DrawChar(char c, SDL_Surface *dest, const Vector<int> &position) const {
+       if (!sprite) return;
+
        int col(colOffset + (c % 0x10));
        int row(rowOffset + (c / 0x10));
        sprite->Draw(dest, position, col, row);
 }
 
 void Font::DrawString(const char *s, SDL_Surface *dest, const Vector<int> &positionIn, int maxChars) const {
+       if (!sprite) return;
+
        Vector<int> position(positionIn);
        Vector<int> step(CharWidth(), 0);
        for (int i(0); s[i] && (maxChars <= 0 || i < maxChars); ++i, position += step) {
@@ -29,10 +34,14 @@ void Font::DrawString(const char *s, SDL_Surface *dest, const Vector<int> &posit
 }
 
 void Font::DrawDigit(int digit, SDL_Surface *dest, const Vector<int> &position) const {
+       if (!sprite) return;
+
        DrawChar(digit + 0x30, dest, position);
 }
 
 void Font::DrawNumber(int numberIn, SDL_Surface *dest, const Vector<int> &positionIn, int digits) const {
+       if (!sprite) return;
+
        int number(numberIn);
        if (digits > 0 && numberIn >= pow(10.0, digits)) {
                numberIn = pow(10.0, digits) - 1;
index 86448025992fcbd509e30c1996738a9e8adaba20..571431df74dca406a73572c881669eda69208513 100644 (file)
@@ -18,7 +18,7 @@ namespace graphics {
 class Font {
 
 public:
-       explicit Font(const Sprite *sprite, int colOffset = 0, int rowOffset = 0)
+       explicit Font(const Sprite *sprite = 0, int colOffset = 0, int rowOffset = 0)
        : sprite(sprite), colOffset(colOffset), rowOffset(rowOffset) {
 
        }
@@ -31,6 +31,11 @@ public:
        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;
 
+public:
+       void SetSprite(const Sprite *s) { sprite = s; }
+       void SetColOffset(int n) { colOffset = n; }
+       void SetRowOffset(int n) { rowOffset = n; }
+
 private:
        const Sprite *sprite;
        int colOffset;