fixed setup.cpp not finding correct data path
[supertux.git] / lib / video / font.h
index 4b2617f..429cf97 100644 (file)
 #include "video/surface.h"
 #include "math/vector.h"
 
-/** Reads a text file (using LispReader, so it as to be in its formatting)
-    and displays it in a StarTrek fashion */
-void display_text_file(const std::string& file, float scroll_speed);
-
-/* Text type */
-class Font
-{
-public:
-  /* Kinds of texts. */
-  enum FontType {
-    TEXT, // images for all characters
-    NUM   // only images for numbers
-  };
-  
-  Font(const std::string& file, FontType type, int w, int h, int shadowsize=2);
-  ~Font();
-
-  /** returns the height of the font */
-  float get_height() const;
-  /** returns the width of a given text. (Note that I won't add a normal
-   * get_width function here, as we might switch to variable width fonts in the
-   * future.
-   */
-  float get_text_width(const std::string& text) const;
-
-private:
-  friend class DrawingContext;
-  
-  void draw(const std::string& text, const Vector& pos,
-            Uint32 drawing_effect = NONE_EFFECT);
-  void draw_chars(Surface* pchars, const std::string& text, 
-      const Vector& position, Uint32 drawing_effect);
-
-  Surface* chars;
-  Surface* shadow_chars;
-  FontType type;
-  int w;
-  int h;
-  int shadowsize;
-
-  /// the number of the first character that is represented in the font
-  int first_char;
-  /// the number of the last character that is represented in the font
-  int last_char;
-};
+namespace SuperTux
+  {
+
+  enum {
+    LEFT_ALLIGN,
+    CENTER_ALLIGN,
+    RIGHT_ALLIGN
+    };
+
+  /// Font
+  class Font
+    {
+    public:
+      /// Kinds of texts.
+      enum FontType {
+        TEXT, // images for all characters
+        NUM   // only images for numbers
+      };
+
+      Font(const std::string& file, FontType type, int w, int h, int shadowsize=2);
+      ~Font();
+
+      /** returns the width of a given text. (Note that I won't add a normal
+       * get_width function here, as we might switch to variable width fonts in the
+       * future.)
+       * Supports breaklines.
+       */
+      float get_text_width(const std::string& text) const;
+
+      /** returns the height of a given text. (Note that I won't add a normal
+       * get_width function here, as we might switch to variable width fonts in the
+       * future.)
+       * Supports breaklines.
+       * In case, you are positive that your text doesn't use break lines, you can
+       * just use get_height().
+       */
+      float get_text_height(const std::string& text) const;
+      /// returns the height of the font.
+      float get_height() const;
+
+      /** Draws the given text to the screen. Also needs the position.
+       * Type of alignment, drawing effect and alpha are optional. */
+      void draw(const std::string& text, const Vector& pos,
+                int allignment = LEFT_ALLIGN,
+                Uint32 drawing_effect = NONE_EFFECT, int alpha = 255);
+
+    private:
+      friend class DrawingContext;
+
+      void draw_text(const std::string& text, const Vector& pos,
+                Uint32 drawing_effect = NONE_EFFECT, int alpha = 255);
+
+      void draw_chars(Surface* pchars, const std::string& text,
+                      const Vector& position, Uint32 drawing_effect, int alpha);
+
+      Surface* chars;
+      Surface* shadow_chars;
+      FontType type;
+      int w;
+      int h;
+      int shadowsize;
+
+      /// the number of the first character that is represented in the font
+      int first_char;
+      /// the number of the last character that is represented in the font
+      int last_char;
+    };
+
+
+  /** Reads a text file (using LispReader, so it as to be in its formatting)
+      and displays it in a StarTrek fashion */
+  void display_text_file(const std::string& file, float scroll_speed, Font* heading_font, Font* normal_font, Font* small_font, Font* reference_font );
+
+} //namespace SuperTux
 
 #endif /*SUPERTUX_FONT_H*/