Index: proj/include/proj_func.h
===================================================================
--- proj/include/proj_func.h	(revision 332)
+++ proj/include/proj_func.h	(revision 333)
@@ -2,7 +2,7 @@
 #define PROJ_FUNC_H_INCLUDED
 
 #include "ent.h"
-#include "font.h"
+#include "text.h"
 #include "proj_structures.h"
 
 #include <stdint.h>
Index: proj/libs/graph/include/basic_sprite.h
===================================================================
--- proj/libs/graph/include/basic_sprite.h	(revision 332)
+++ proj/libs/graph/include/basic_sprite.h	(revision 333)
@@ -10,15 +10,50 @@
  *
  * @{
  */
-struct basic_sprite;
 typedef struct basic_sprite basic_sprite_t;
 
+/**
+ * @brief Construct basic sprite.
+ * @param   xpm     XPM array to build the basic sprite from
+ * @param   u0      X-center of the XPM.
+ * @param   v0      Y-center of the XPM.
+ * @return  Pointer to created basic_sprite_t, or NULL if fails
+ */
 basic_sprite_t* (basic_sprite_ctor)(const char *const *xpm, int16_t u0, int16_t v0);
+/**
+ * @brief Destruct basic sprite.
+ * @param   p   Pointer to basic sprite to destruct.
+ */
 void            (basic_sprite_dtor)(basic_sprite_t *p);
+/**
+ * @brief Get basic sprite map (pixels).
+ * @param   p   Pointer to basic sprite
+ * @return  Pixel map
+ */
 const uint8_t* (basic_sprite_get_map)(const basic_sprite_t *p);
+/**
+ * @brief Get width.
+ * @param   p   Pointer to basic sprite
+ * @return      Width
+ */
 uint16_t       (basic_sprite_get_w)  (const basic_sprite_t *p);
+/**
+ * @brief Get height.
+ * @param   p   Pointer to basic sprite
+ * @return      Height
+ */
 uint16_t       (basic_sprite_get_h)  (const basic_sprite_t *p);
+/**
+ * @brief Get X-center of the basic sprite.
+ * @param   p   Pointer to basic sprite
+ * @return      X-center
+ */
 int16_t        (basic_sprite_get_u0) (const basic_sprite_t *p);
+/**
+ * @brief Get Y-center of the basic sprite.
+ * @param   p   Pointer to basic sprite
+ * @return      Y-center
+ */
 int16_t        (basic_sprite_get_v0) (const basic_sprite_t *p);
 
 /**
Index: proj/libs/graph/include/font.h
===================================================================
--- proj/libs/graph/include/font.h	(revision 332)
+++ proj/libs/graph/include/font.h	(revision 333)
@@ -1,10 +1,19 @@
 #ifndef FONT_H_INCLUDED
 #define FONT_H_INCLUDED
 
-struct font;
 /**
- * @brief Font. Represents a set of glyphs that can be drawn for showing text.
+ * @defgroup    font_t    font_t
+ * @ingroup graph
+ * @brief   Font module.
+ *
+ * Represents a set of glyphs that can be drawn for showing text.
+ *
+ * @{
  */
+
+/**
+ * @brief Font.
+ */
 typedef struct font font_t;
 /**
  * @brief Construct font.
@@ -48,99 +57,7 @@
 void (font_free)(void);
 
 /**
- * @brief Enumeration of vertical alignment schemes.
+ * @}
  */
-typedef enum{
-    text_valign_top    = -1,
-    text_valign_center =  0,
-    text_valign_bottom =  1
-} text_valign;
-/**
- * @brief Enumeration of horizontal alignment schemes.
- */
-typedef enum{
-    text_halign_left   = -1,
-    text_halign_center =  0,
-    text_halign_right  =  1
-} text_halign;
 
-struct text;
-/**
- * @brief Drawable text.
- */
-typedef struct text text_t;
-/**
- * @brief Construct text.
- * @param   fnt Font to draw the text
- * @param   txt String to be drawn
- * @return      Pointer to constructed text
- */
-text_t* (text_ctor)(const font_t *fnt, const char *txt);
-/**
- * @brief Destruct text.
- * @param   p   Pointer to text to be destroyed
- */
-void    (text_dtor)(text_t *p);
-/**
- * @brief Set text string.
- * @param   p   Pointer to text
- * @param   txt String to be set
- */
-void (text_set_string)(text_t *p, const char *txt);
-/**
- * @brief Set text position.
- * @param   p   Pointer to text
- * @param   x   X-position of the text
- * @param   y   Y-position of the text
- */
-void (text_set_pos)   (text_t *p, int16_t x, int16_t y);
-/**
- * @brief Set text size (letter size, in pixels).
- * @param   p       Pointer to text
- * @param   size    Letter size of the text
- */
-void (text_set_size)  (text_t *p, uint16_t size);
-/**
- * @brief Set text color.
- * @param   p       Pointer to text
- * @param   color   Text color
- */
-void (text_set_color) (text_t *p, uint32_t color);
-/**
- * @brief Set text vertical alignment.
- * @param   p       Pointer to text
- * @param   valign  Vertical alignment of the text
- */
-void (text_set_valign)(text_t *p, text_valign valign);
-/**
- * @brief Set text horizontal alignment.
- * @param   p       Pointer to text
- * @param   halign  Horizontal alignment of the text
- */
-void (text_set_halign)(text_t *p, text_halign halign);
-/**
- * @brief Get string of the text.
- * @param   p       Pointer to text
- * @return  Pointer to string
- */
-const char* (text_get_string)(const text_t *p);
-/**
- * @brief Get text x-position.
- * @param   p   Pointer to text
- * @return      X-position of text
- */
-int16_t (text_get_x)  (const text_t *p);
-/**
- * @brief Get text y-position.
- * @param   p   Pointer to text
- * @return      Y-position of text
- */
-int16_t (text_get_y)  (const text_t *p);
-/**
- * @brief Draw text on the screen buffer.
- * @param   p   Pointer to text
- * @return      SUCCESS if operation was successful, false otherwise
- */
-int     (text_draw)   (const text_t *p);
-
 #endif //FONT_H_INCLUDED
Index: proj/libs/graph/include/graph.h
===================================================================
--- proj/libs/graph/include/graph.h	(revision 332)
+++ proj/libs/graph/include/graph.h	(revision 333)
@@ -17,7 +17,6 @@
 #define DIRECT_1024_768_888     0x118
 #define DIRECT_1280_1024_565    0x11A
 #define DIRECT_1280_1024_888    0x11B
-#define LINEAR_FRAME_BUFFER_MD  BIT(14)
 
 // Colors in RBG (8 bit)
 #define GRAPH_BLACK             0x000000
@@ -28,18 +27,6 @@
 // Alpha
 #define ALPHA_THRESHOLD     0x7F
 
-// MACROS
-#define GET_ALP(n)          (0xFF & ((n) >> 24))
-#define GET_RED(n)          (0xFF & ((n) >> 16))
-#define GET_GRE(n)          (0xFF & ((n) >>  8))
-#define GET_BLU(n)          (0xFF & (n      ))
-#define GET_COLOR(n)        (0xFFFFFF & (n))
-#define SET_ALP(n)          (((n)&0xFF) << 24)
-#define SET_RED(n)          (((n)&0xFF) << 16)
-#define SET_GRE(n)          (((n)&0xFF) <<  8)
-#define SET_BLU(n)          (((n)&0xFF)      )
-#define SET_RGB(r,g,b)      (SET_RED(r) | SET_GRE(g) | SET_BLU(b))
-
 /**
  * @brief Initialize graphics.
  * @param   mode    Graphics mode to use
@@ -88,10 +75,16 @@
  */
 void (graph_set_pixel_pos)         (unsigned pos          , uint32_t color);
 
-// SCREEN
+/**
+ * @brief Clear screen, painting it black.
+ * @return  SUCCESS if operation was successful, other value otherwise
+ */
 int (graph_clear_screen)(void);
 
-// DRAW
+/**
+ * @brief Draw everything on the buffer to the screen.
+ * @return  SUCCESS if operation was successful, other value otherwise
+ */
 int (graph_draw)(void);
 
 /**
Index: proj/libs/graph/include/menu.h
===================================================================
--- proj/libs/graph/include/menu.h	(revision 332)
+++ proj/libs/graph/include/menu.h	(revision 333)
@@ -1,6 +1,16 @@
 #ifndef MENU_H_INCLUDED
 #define MENU_H_INCLUDED
 
+/**
+ * @defgroup    menu_t    menu_t
+ * @ingroup graph
+ * @brief Menu module
+ *
+ * Allows to create flexible and responsive menus.
+ *
+ * @{
+ */
+
 #include "font.h"
 
 typedef struct menu menu_t;
@@ -15,4 +25,8 @@
 
 void (menu_dtor)(menu_t *p);
 
+/**
+ * @}
+ */
+
 #endif //MENU_H_INCLUDED
Index: proj/libs/graph/include/rectangle.h
===================================================================
--- proj/libs/graph/include/rectangle.h	(revision 332)
+++ proj/libs/graph/include/rectangle.h	(revision 333)
@@ -1,7 +1,14 @@
 #ifndef RECTANGLE_H_INCLUDED
 #define RECTANGLE_H_INCLUDED
 
-struct rectangle;
+/**
+ * @defgroup    rectangle_t rectangle_t
+ * @ingroup graph
+ * @brief   Rectangle module.
+ *
+ * @{
+ */
+
 typedef struct rectangle rectangle_t;
 
 rectangle_t* (rectangle_ctor)(int16_t x, int16_t y, uint16_t w, uint16_t h);
@@ -22,4 +29,8 @@
 
 void (rectangle_draw)(const rectangle_t *p);
 
+/**
+ * @}
+ */
+
 #endif //RECTANGLE_H_INCLUDED
Index: proj/libs/graph/include/sprite.h
===================================================================
--- proj/libs/graph/include/sprite.h	(revision 332)
+++ proj/libs/graph/include/sprite.h	(revision 333)
@@ -13,29 +13,70 @@
 
 #include "basic_sprite.h"
 
-struct sprite;
 typedef struct sprite sprite_t;
 
+/**
+ * @brief Construct sprite.
+ * @param   bsp Basic sprite from which to build the sprite
+ * @return      Pointer to constructed sprite, or NULL if failed
+ */
 sprite_t* (sprite_ctor)(const basic_sprite_t *bsp);
-/*
- * /!\ WARNING: Entity destructor does not destruct the basic_sprite passed as
- * constructor arguments, since it is assumed the same basic_sprite may be used to
- * draw several sprites. It is thus YOUR responsibility to delete basic_sprite's.
+/**
+ * @brief Destruct sprite.
+ *
+ *
+ * @attention Destructor does not destruct the basic sprite passed as
+ * constructor argument, since it is assumed the same basic sprite may be used to
+ * draw several sprites. It is thus YOUR responsibility to delete basic sprites.
  * @param   p   Pointer to sprite_t to be destructed
  */
 void      (sprite_dtor)(sprite_t *p);
-
+/**
+ * @brief Set sprite position.
+ * @param   p   Pointer to sprite
+ * @param   x   X-position in map
+ * @param   y   Y-position in map
+ */
 void (sprite_set_pos)   (sprite_t *p, int16_t x, int16_t y);
-void (sprite_set_center)(sprite_t *p, int16_t u0, int16_t v0);
+/**
+ * @brief Set sprite angle.
+ *
+ * If not provided, will be drawn with angle 0, corresponding to the same
+ * orientation as the original image.
+ * @param   p       Pointer to sprite
+ * @param   angle   Angle in radians, counterclockwise positive and 0 on positive x-axis
+ */
 void (sprite_set_angle) (sprite_t *p, double angle);
+/**
+ * @brief Set sprite scale.
+ *
+ * Default scale is 1, corresponding to original image scale.
+ * @param   p       Pointer to sprite
+ * @param   scale   Scale, greater than 0
+ */
 void (sprite_set_scale) (sprite_t *p, double scale);
-
-int16_t  (sprite_get_x)(const sprite_t *p);
-int16_t  (sprite_get_y)(const sprite_t *p);
+/**
+ * @brief Get sprite angle.
+ * @param   p   Pointer to sprite
+ * @return      Sprite angle
+ */
 double   (sprite_get_angle)(const sprite_t *p);
+/**
+ * @brief   Get sprite width (same as the underlying basic sprite).
+ * @param   p   Pointer to sprite
+ * @return      Sprite width
+ */
 uint16_t (sprite_get_w)(const sprite_t *p);
+/**
+ * @brief   Get sprite height (same as the underlying basic sprite).
+ * @param   p   Pointer to sprite
+ * @return      Sprite height
+ */
 uint16_t (sprite_get_h)(const sprite_t *p);
-
+/**
+ * @brief Draw sprite in buffer.
+ * @param   p   Pointer to sprite
+ */
 void (sprite_draw)(const sprite_t *p);
 
 /**
Index: proj/libs/graph/src/font.c
===================================================================
--- proj/libs/graph/src/font.c	(revision 332)
+++ proj/libs/graph/src/font.c	(revision 333)
@@ -133,6 +133,8 @@
 }
 
 /// TEXT
+#include "text.h"
+
 struct text{
     const font_t *fnt;
     char *txt;
Index: proj/libs/graph/src/graph.c
===================================================================
--- proj/libs/graph/src/graph.c	(revision 332)
+++ proj/libs/graph/src/graph.c	(revision 333)
@@ -11,6 +11,8 @@
 #define MBYTE_BASE  0x0         /** @brief Base address (zero address) */
 #define MBYTE_SIZE  0xFFFFF     /** @brief Size of a mebibyte */
 
+#define LINEAR_FRAME_BUFFER_MD  BIT(14)
+
 // Graphics Functions
 #define VBE_CTRL_INFO       0x00    /** @brief Get VBE Controller Information */
 #define VBE_MD_INFO         0x01    /** @brief Get VBE Mode Information */
@@ -350,8 +352,6 @@
         }
     }
 }
-int16_t  (sprite_get_x)(const sprite_t *p){ return p->x; }
-int16_t  (sprite_get_y)(const sprite_t *p){ return p->y; }
 double   (sprite_get_angle)(const sprite_t *p){ return p->theta; }
 uint16_t (sprite_get_w)(const sprite_t *p){ return basic_sprite_get_w(p->bsp); }
 uint16_t (sprite_get_h)(const sprite_t *p){ return basic_sprite_get_h(p->bsp); }
Index: proj/src/ent.c
===================================================================
--- proj/src/ent.c	(revision 332)
+++ proj/src/ent.c	(revision 333)
@@ -6,7 +6,7 @@
 #include "sprite.h"
 #include "utils.h"
 #include "rectangle.h"
-#include "font.h"
+#include "text.h"
 #include "errors.h"
 #include "queue.h"
 #include <math.h>
Index: proj/Doxyfile
===================================================================
--- proj/Doxyfile	(revision 332)
+++ proj/Doxyfile	(revision 333)
@@ -2265,7 +2265,7 @@
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-COLLABORATION_GRAPH    = NO
+COLLABORATION_GRAPH    = YES
 
 # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
 # groups, showing the direct groups dependencies.
@@ -2331,7 +2331,7 @@
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-CALL_GRAPH             = NO
+CALL_GRAPH             = YES
 
 # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
 # dependency graph for every global function or class method.
@@ -2343,7 +2343,7 @@
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-CALLER_GRAPH           = NO
+CALLER_GRAPH           = YES
 
 # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
 # hierarchy of all classes instead of a textual one.
@@ -4759,7 +4759,7 @@
 # The default value is: YES.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-COLLABORATION_GRAPH    = NO
+COLLABORATION_GRAPH    = YES
 
 # If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
 # groups, showing the direct groups dependencies.
@@ -4825,7 +4825,7 @@
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-CALL_GRAPH             = NO
+CALL_GRAPH             = YES
 
 # If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
 # dependency graph for every global function or class method.
@@ -4837,7 +4837,7 @@
 # The default value is: NO.
 # This tag requires that the tag HAVE_DOT is set to YES.
 
-CALLER_GRAPH           = NO
+CALLER_GRAPH           = YES
 
 # If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
 # hierarchy of all classes instead of a textual one.
