From 9e0b0182a9f4bd948a1f2c9ddb24339a552f0279 Mon Sep 17 00:00:00 2001 From: Xane Date: Tue, 24 Nov 2009 21:15:35 +0000 Subject: [PATCH] [ADD] Added several new functions to change drawing settings like Color, Scale and Rotation for all following drawing commands. [CHG] Changed all drawing commands accordingly to make use of the settings by the functions specified above. [NOTE] All examples will have to be adopted to the changed as well, it isn't much of work I might as well do it myself later. --- GRRLIB/GRRLIB/GRRLIB_core.c | 1 + GRRLIB/GRRLIB/GRRLIB_print.c | 10 +- GRRLIB/GRRLIB/GRRLIB_render.c | 56 +++++----- GRRLIB/GRRLIB/grrlib.h | 8 ++ GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h | 21 +++- GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h | 24 ++-- GRRLIB/GRRLIB/grrlib/GRRLIB_fbSimple.h | 35 +++--- GRRLIB/GRRLIB/grrlib/GRRLIB_settings.h | 148 +++++++++++++++++++++++++ 8 files changed, 238 insertions(+), 65 deletions(-) diff --git a/GRRLIB/GRRLIB/GRRLIB_core.c b/GRRLIB/GRRLIB/GRRLIB_core.c index 15ffccd..3fa6155 100644 --- a/GRRLIB/GRRLIB/GRRLIB_core.c +++ b/GRRLIB/GRRLIB/GRRLIB_core.c @@ -149,6 +149,7 @@ int GRRLIB_Init (void) { GRRLIB_ClipReset(); // Default settings + GRRLIB_ResetSettings(); GRRLIB_Settings.antialias = true; GRRLIB_Settings.blend = GRRLIB_BLEND_ALPHA; diff --git a/GRRLIB/GRRLIB/GRRLIB_print.c b/GRRLIB/GRRLIB/GRRLIB_print.c index fcb3a94..7e2ce47 100644 --- a/GRRLIB/GRRLIB/GRRLIB_print.c +++ b/GRRLIB/GRRLIB/GRRLIB_print.c @@ -31,14 +31,12 @@ THE SOFTWARE. * @param xpos Specifies the x-coordinate of the upper-left corner of the text. * @param ypos Specifies the y-coordinate of the upper-left corner of the text. * @param tex The texture containing the character set. - * @param color Text color in RGBA format. The alpha channel is used to change the opacity of the text. - * @param zoom This is a factor by which the text size will be increase or decrease. * @param text Text to draw. * @param ... Optional arguments. */ void GRRLIB_Printf (const f32 xpos, const f32 ypos, - const GRRLIB_texImg *tex, const u32 color, - const f32 zoom, const char *text, ...) { + const GRRLIB_texImg *tex, + const char *text, ...) { if (tex == NULL || tex->data == NULL) { return; } @@ -53,7 +51,7 @@ void GRRLIB_Printf (const f32 xpos, const f32 ypos, for (i = 0; i < size; i++) { u8 c = tmp[i]-tex->tilestart; - GRRLIB_DrawTile(xpos+i*tex->tilew*zoom, ypos, tex, 0, zoom, zoom, color, c); + GRRLIB_DrawTile(xpos+i*tex->tilew*GRRLIB_GetScaleX(), ypos, tex, c); } } @@ -100,6 +98,6 @@ void GRRLIB_PrintBMF (const f32 xpos, const f32 ypos, } GRRLIB_FlushTex( tex_BMfont ); - GRRLIB_DrawImg(0, 0, tex_BMfont, 0, 1, 1, 0xFFFFFFFF); + GRRLIB_DrawImg(0, 0, tex_BMfont); GRRLIB_FreeTexture(tex_BMfont); } diff --git a/GRRLIB/GRRLIB/GRRLIB_render.c b/GRRLIB/GRRLIB/GRRLIB_render.c index 2f8e9ff..5d08cdc 100644 --- a/GRRLIB/GRRLIB/GRRLIB_render.c +++ b/GRRLIB/GRRLIB/GRRLIB_render.c @@ -34,14 +34,8 @@ static guVector axis = (guVector){0, 0, 1}; * @param xpos Specifies the x-coordinate of the upper-left corner. * @param ypos Specifies the y-coordinate of the upper-left corner. * @param tex The texture to draw. - * @param degrees Angle of rotation. - * @param scaleX Specifies the x-coordinate scale. -1 could be used for flipping the texture horizontally. - * @param scaleY Specifies the y-coordinate scale. -1 could be used for flipping the texture vertically. - * @param color Color in RGBA format. */ -void GRRLIB_DrawImg (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex, - const f32 degrees, const f32 scaleX, const f32 scaleY, - const u32 color) { +void GRRLIB_DrawImg (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex) { GXTexObj texObj; u16 width, height; Mtx m, m1, m2, mv; @@ -59,6 +53,12 @@ void GRRLIB_DrawImg (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex, GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE); GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); + // Get current drawing settings. + u32 color = GRRLIB_Settings.colorRGBA; + f32 degrees = GRRLIB_Settings.rotation; + f32 scaleX = GRRLIB_Settings.scaleX; + f32 scaleY = GRRLIB_Settings.scaleY; + guMtxIdentity (m1); guMtxScaleApply(m1, m1, scaleX, scaleY, 1.0); guMtxRotAxisDeg(m2, &axis, degrees); @@ -105,10 +105,8 @@ void GRRLIB_DrawImg (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex, * Draw a textured quad. * @param pos Vector array of the 4 points. * @param tex The texture to draw. - * @param color Color in RGBA format. */ -void GRRLIB_DrawImgQuad (const guVector pos[4], GRRLIB_texImg *tex, - const u32 color) { +void GRRLIB_DrawImgQuad (const guVector pos[4], GRRLIB_texImg *tex) { GXTexObj texObj; Mtx m, m1, m2, mv; @@ -125,6 +123,9 @@ void GRRLIB_DrawImgQuad (const guVector pos[4], GRRLIB_texImg *tex, GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE); GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); + // Get current drawing settings. + u32 color = GRRLIB_Settings.colorRGBA; + guMtxIdentity (m1); guMtxScaleApply(m1, m1, 1, 1, 1.0); guMtxRotAxisDeg(m2, &axis, 0); @@ -160,15 +161,9 @@ void GRRLIB_DrawImgQuad (const guVector pos[4], GRRLIB_texImg *tex, * @param xpos Specifies the x-coordinate of the upper-left corner. * @param ypos Specifies the y-coordinate of the upper-left corner. * @param tex The texture containing the tile to draw. - * @param degrees Angle of rotation. - * @param scaleX Specifies the x-coordinate scale. -1 could be used for flipping the texture horizontally. - * @param scaleY Specifies the y-coordinate scale. -1 could be used for flipping the texture vertically. - * @param color Color in RGBA format. * @param frame Specifies the frame to draw. */ -void GRRLIB_DrawTile (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex, - const f32 degrees, const f32 scaleX, const f32 scaleY, - const u32 color, const int frame) { +void GRRLIB_DrawTile (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex, const int frame) { GXTexObj texObj; f32 width, height; Mtx m, m1, m2, mv; @@ -197,6 +192,12 @@ void GRRLIB_DrawTile (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex, width = tex->tilew * 0.5f; height = tex->tileh * 0.5f; + // Get current drawing settings. + u32 color = GRRLIB_Settings.colorRGBA; + f32 degrees = GRRLIB_Settings.rotation; + f32 scaleX = GRRLIB_Settings.scaleX; + f32 scaleY = GRRLIB_Settings.scaleY; + guMtxIdentity (m1); guMtxScaleApply(m1, m1, scaleX, scaleY, 1.0f); guMtxRotAxisDeg(m2, &axis, degrees); @@ -246,15 +247,9 @@ void GRRLIB_DrawTile (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex, * @param partw Specifies the width in the texture. * @param parth Specifies the height in the texture. * @param tex The texture containing the tile to draw. - * @param degrees Angle of rotation. - * @param scaleX Specifies the x-coordinate scale. -1 could be used for flipping the texture horizontally. - * @param scaleY Specifies the y-coordinate scale. -1 could be used for flipping the texture vertically. - * @param color Color in RGBA format. */ void GRRLIB_DrawPart (const f32 xpos, const f32 ypos, const f32 partx, const f32 party, - const f32 partw, const f32 parth, const GRRLIB_texImg *tex, - const f32 degrees, const f32 scaleX, const f32 scaleY, - const u32 color) { + const f32 partw, const f32 parth, const GRRLIB_texImg *tex) { GXTexObj texObj; f32 width, height; Mtx m, m1, m2, mv; @@ -276,6 +271,12 @@ void GRRLIB_DrawPart (const f32 xpos, const f32 ypos, const f32 partx, const f3 GX_InitTexObjLOD(&texObj, GX_NEAR, GX_NEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1); + // Get current drawing settings. + u32 color = GRRLIB_Settings.colorRGBA; + f32 degrees = GRRLIB_Settings.rotation; + f32 scaleX = GRRLIB_Settings.scaleX; + f32 scaleY = GRRLIB_Settings.scaleY; + GX_LoadTexObj(&texObj, GX_TEXMAP0); GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE); GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); @@ -327,11 +328,9 @@ void GRRLIB_DrawPart (const f32 xpos, const f32 ypos, const f32 partx, const f3 * Draw a tile in a quad. * @param pos Vector array of the 4 points. * @param tex The texture to draw. - * @param color Color in RGBA format. * @param frame Specifies the frame to draw. */ -void GRRLIB_DrawTileQuad (const guVector pos[4], GRRLIB_texImg *tex, - const u32 color, const int frame) { +void GRRLIB_DrawTileQuad (const guVector pos[4], GRRLIB_texImg *tex, const int frame) { GXTexObj texObj; Mtx m, m1, m2, mv; f32 s1, s2, t1, t2; @@ -356,6 +355,9 @@ void GRRLIB_DrawTileQuad (const guVector pos[4], GRRLIB_texImg *tex, GX_SetTevOp (GX_TEVSTAGE0, GX_MODULATE); GX_SetVtxDesc(GX_VA_TEX0, GX_DIRECT); + // Get current drawing settings. + u32 color = GRRLIB_Settings.colorRGBA; + guMtxIdentity (m1); guMtxScaleApply(m1, m1, 1, 1, 1.0f); guMtxRotAxisDeg(m2, &axis, 0); diff --git a/GRRLIB/GRRLIB/grrlib.h b/GRRLIB/GRRLIB/grrlib.h index fd3cce0..43ed772 100644 --- a/GRRLIB/GRRLIB/grrlib.h +++ b/GRRLIB/GRRLIB/grrlib.h @@ -95,6 +95,14 @@ typedef enum GRRLIB_blendMode { typedef struct GRRLIB_drawSettings { bool antialias; /**< AntiAlias is enabled when set to true. */ GRRLIB_blendMode blend; /**< Blending Mode. */ + u8 colorR; /**< Red component of color. */ + u8 colorG; /**< Green component of color. */ + u8 colorB; /**< Blue component of color. */ + u8 colorA; /**< Alpha component of color. */ + u32 colorRGBA; /**< Color in RGBA. */ + f32 rotation; /**< Angle of rotation in degrees. */ + f32 scaleX; /**< Horizontal scale. */ + f32 scaleY; /**< Vertical scale. */ } GRRLIB_drawSettings; //------------------------------------------------------------------------------ diff --git a/GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h b/GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h index a89dade..436b20c 100644 --- a/GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h +++ b/GRRLIB/GRRLIB/grrlib/GRRLIB__inline.h @@ -79,12 +79,12 @@ INLINE void GRRLIB_GXEngine (const guVector v[], const u32 color[], //------------------------------------------------------------------------------ // GRRLIB_fbSimple.h - INLINE void GRRLIB_FillScreen (const u32 color) ; -INLINE void GRRLIB_Plot (const f32 x, const f32 y, const u32 color) ; +INLINE void GRRLIB_Plot (const f32 x, const f32 y) ; INLINE void GRRLIB_Line (const f32 x1, const f32 y1, - const f32 x2, const f32 y2, const u32 color) ; + const f32 x2, const f32 y2) ; INLINE void GRRLIB_Rectangle (const f32 x, const f32 y, const f32 width, const f32 height, - const u32 color, const u8 filled) ; + const u8 filled) ; //------------------------------------------------------------------------------ // GRRLIB_handle.h - Texture handle manipulation @@ -111,6 +111,21 @@ INLINE void GRRLIB_SetBlend (const GRRLIB_blendMode blendmo INLINE GRRLIB_blendMode GRRLIB_GetBlend (void) ; INLINE void GRRLIB_SetAntiAliasing (const bool aa) ; INLINE bool GRRLIB_GetAntiAliasing (void) ; +INLINE void GRRLIB_SetColor (const u8 r, const u8 g, const u8 b) ; +INLINE void GRRLIB_SetColorRGBA (const u32 color) ; +INLINE void GRRLIB_SetAlpha (const u32 alpha) ; +INLINE u8 GRRLIB_GetColorRed (void) ; +INLINE u8 GRRLIB_GetColorGreen (void) ; +INLINE u8 GRRLIB_GetColorBlue (void) ; +INLINE u8 GRRLIB_GetAlpha (void) ; +INLINE void GRRLIB_SetRotation (const f32 rot) ; +INLINE f32 GRRLIB_GetRotation (void) ; +INLINE void GRRLIB_SetScale (const f32 sx, const f32 sy) ; +INLINE void GRRLIB_SetScaleX (const f32 sx) ; +INLINE void GRRLIB_SetScaleY (const f32 sy) ; +INLINE f32 GRRLIB_GetScaleX (void) ; +INLINE f32 GRRLIB_GetScaleY (void) ; +INLINE void GRRLIB_ResetSettings (void) ; //------------------------------------------------------------------------------ // GRRLIB_texSetup.h - Create and setup textures diff --git a/GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h b/GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h index cb99e14..b0d4e6e 100644 --- a/GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h +++ b/GRRLIB/GRRLIB/grrlib/GRRLIB__lib.h @@ -91,8 +91,8 @@ bool GRRLIB_ScrShot (const char* filename) ; //------------------------------------------------------------------------------ //! GRRLIB_print.c - Will someome please tell me what these are :) void GRRLIB_Printf (const f32 xpos, const f32 ypos, - const GRRLIB_texImg *tex, const u32 color, - const f32 zoom, const char *text, ...) ; + const GRRLIB_texImg *tex, + const char *text, ...) ; void GRRLIB_PrintBMF (const f32 xpos, const f32 ypos, const GRRLIB_bytemapFont *bmf, @@ -100,25 +100,19 @@ void GRRLIB_PrintBMF (const f32 xpos, const f32 ypos, //------------------------------------------------------------------------------ // GRRLIB_render.c - Rendering functions -void GRRLIB_DrawImg (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex, - const f32 degrees, const f32 scaleX, const f32 scaleY, - const u32 color) ; +void GRRLIB_DrawImg (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex) ; -void GRRLIB_DrawImgQuad (const guVector pos[4], GRRLIB_texImg *tex, - const u32 color) ; +void GRRLIB_DrawImgQuad (const guVector pos[4], GRRLIB_texImg *tex) ; void GRRLIB_DrawTile (const f32 xpos, const f32 ypos, const GRRLIB_texImg *tex, - const f32 degrees, const f32 scaleX, const f32 scaleY, - const u32 color, const int frame) ; + const int frame) ; -void GRRLIB_DrawPart (const f32 xpos, const f32 ypos, const f32 partx, const f32 party, const f32 partw, const f32 parth, const GRRLIB_texImg *tex, - const f32 degrees, const f32 scaleX, const f32 scaleY, - const u32 color); +void GRRLIB_DrawPart (const f32 xpos, const f32 ypos, const f32 partx, const f32 party, + const f32 partw, const f32 parth, const GRRLIB_texImg *tex); -void GRRLIB_DrawTileQuad (const guVector pos[4], GRRLIB_texImg *tex, - const u32 color, const int frame) ; +void GRRLIB_DrawTileQuad (const guVector pos[4], GRRLIB_texImg *tex, const int frame) ; -void GRRLIB_Render (void) ; +void GRRLIB_Render (void) ; //------------------------------------------------------------------------------ // GRRLIB_snapshot.c - Create a texture containing a snapshot of a part of the framebuffer diff --git a/GRRLIB/GRRLIB/grrlib/GRRLIB_fbSimple.h b/GRRLIB/GRRLIB/grrlib/GRRLIB_fbSimple.h index 126cdd7..c1e475b 100644 --- a/GRRLIB/GRRLIB/grrlib/GRRLIB_fbSimple.h +++ b/GRRLIB/GRRLIB/grrlib/GRRLIB_fbSimple.h @@ -20,6 +20,9 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ------------------------------------------------------------------------------*/ +extern GRRLIB_drawSettings GRRLIB_Settings; + + /** * @file GRRLIB_fbSimple.h * Inline functions for primitive point and line drawing. @@ -31,23 +34,23 @@ THE SOFTWARE. */ INLINE void GRRLIB_FillScreen (const u32 color) { - GRRLIB_Rectangle(-40, -40, - rmode->fbWidth +80, rmode->xfbHeight +80, - color, 1); + u32 tmpColor = GRRLIB_Settings.colorRGBA; + GRRLIB_SetColorRGBA(color); + GRRLIB_Rectangle(-40, -40, rmode->fbWidth +80, rmode->xfbHeight +80, 1); + GRRLIB_SetColorRGBA(tmpColor); } /** * Draw a dot. * @param x Specifies the x-coordinate of the dot. * @param y Specifies the y-coordinate of the dot. - * @param color The color of the dot in RGBA format. * @author Jespa */ INLINE -void GRRLIB_Plot (const f32 x, const f32 y, const u32 color) { +void GRRLIB_Plot (const f32 x, const f32 y) { GX_Begin(GX_POINTS, GX_VTXFMT0, 1); GX_Position3f32(x, y, 0); - GX_Color1u32(color); + GX_Color1u32(GRRLIB_Settings.colorRGBA); GX_End(); } @@ -57,17 +60,16 @@ void GRRLIB_Plot (const f32 x, const f32 y, const u32 color) { * @param y1 Starting point for line for the y coordinate. * @param x2 Ending point for line for the x coordinate. * @param y2 Ending point for line for the x coordinate. - * @param color Line color in RGBA format. * @author JESPA */ INLINE void GRRLIB_Line (const f32 x1, const f32 y1, - const f32 x2, const f32 y2, const u32 color) { + const f32 x2, const f32 y2) { GX_Begin(GX_LINES, GX_VTXFMT0, 2); GX_Position3f32(x1, y1, 0); - GX_Color1u32(color); + GX_Color1u32(GRRLIB_Settings.colorRGBA); GX_Position3f32(x2, y2, 0); - GX_Color1u32(color); + GX_Color1u32(GRRLIB_Settings.colorRGBA); GX_End(); } @@ -77,15 +79,20 @@ void GRRLIB_Line (const f32 x1, const f32 y1, * @param y Specifies the y-coordinate of the upper-left corner of the rectangle. * @param width The width of the rectangle. * @param height The height of the rectangle. - * @param color The color of the rectangle in RGBA format. * @param filled Set to true to fill the rectangle. */ INLINE void GRRLIB_Rectangle (const f32 x, const f32 y, const f32 width, const f32 height, - const u32 color, const u8 filled) { - f32 x2 = x + width; - f32 y2 = y + height; + const u8 filled) { + + // Get current drawing settings. + u32 color = GRRLIB_Settings.colorRGBA; + f32 scaleX = GRRLIB_Settings.scaleX; + f32 scaleY = GRRLIB_Settings.scaleY; + + f32 x2 = x + width * scaleX; + f32 y2 = y + height * scaleY; if (filled) { GX_Begin(GX_QUADS, GX_VTXFMT0, 4); diff --git a/GRRLIB/GRRLIB/grrlib/GRRLIB_settings.h b/GRRLIB/GRRLIB/grrlib/GRRLIB_settings.h index a40e31c..abac7b8 100644 --- a/GRRLIB/GRRLIB/grrlib/GRRLIB_settings.h +++ b/GRRLIB/GRRLIB/grrlib/GRRLIB_settings.h @@ -81,3 +81,151 @@ INLINE bool GRRLIB_GetAntiAliasing (void) { return GRRLIB_Settings.antialias; } + +/** + * Set global rendering color. + * @param r Red component of color. + * @param g Green component of color. + * @param b Blue component of color. + */ +INLINE +void GRRLIB_SetColor (const u8 r, const u8 g, const u8 b) { + GRRLIB_Settings.colorR = r; + GRRLIB_Settings.colorG = g; + GRRLIB_Settings.colorB = b; + GRRLIB_Settings.colorRGBA = RGBA(r, g, b, GRRLIB_Settings.colorA); +} + +/** + * Set global rendering color in RGBA-format. + * @param color Color in RGBA-format. + */ +INLINE +void GRRLIB_SetColorRGBA (const u32 color) { + GRRLIB_Settings.colorR = R(color); + GRRLIB_Settings.colorG = G(color); + GRRLIB_Settings.colorB = B(color); + GRRLIB_Settings.colorA = A(color); + GRRLIB_Settings.colorRGBA = color; +} + +/** + * Set global rendering color in RGB-format. + * @param a Alpha component of color. + */ +INLINE +void GRRLIB_SetAlpha (const u32 alpha) { + GRRLIB_Settings.colorA = alpha; + GRRLIB_Settings.colorRGBA = RGBA(GRRLIB_Settings.colorR, GRRLIB_Settings.colorG, GRRLIB_Settings.colorB, alpha); +} + +/** + * Get red component of current color. + * @return Red component of color. + */ +INLINE +u8 GRRLIB_GetColorRed (void) { + return GRRLIB_Settings.colorR; +} + +/** + * Get green component of current color. + * @return Green component of color. + */ +INLINE +u8 GRRLIB_GetColorGreen (void) { + return GRRLIB_Settings.colorG; +} + +/** + * Get blue component of current color. + * @return Blue component of color. + */ +INLINE +u8 GRRLIB_GetColorBlue (void) { + return GRRLIB_Settings.colorB; +} + +/** + * Get current alpha. + * @return Alpha. + */ +INLINE +u8 GRRLIB_GetAlpha (void) { + return GRRLIB_Settings.colorA; +} + +/** + * Set global rotation. + * @param rot Rotation in degrees. + */ +INLINE +void GRRLIB_SetRotation (const f32 rot) { + GRRLIB_Settings.rotation = rot; +} + +/** + * Get current rotation. + * @return Rotation in degrees. + */ +INLINE +f32 GRRLIB_GetRotation (void) { + return GRRLIB_Settings.rotation; +} + +/** + * Set global drawing scale. + * @param sx Horizontal scale. + * @param sy Vertical scale. + */ +INLINE +void GRRLIB_SetScale (const f32 sx, const f32 sy) { + GRRLIB_Settings.scaleX = sx; + GRRLIB_Settings.scaleY = sy; +} + +/** + * Set global horizontal drawing scale. + * @param sx Horizontal scale. + */ +INLINE +void GRRLIB_SetScaleX (const f32 sx) { + GRRLIB_Settings.scaleX = sx; +} + +/** + * Set global vertical drawing scale. + * @param sy Vertical scale. + */ +INLINE +void GRRLIB_SetScaleY (const f32 sy) { + GRRLIB_Settings.scaleY = sy; +} + +/** + * Get current horizontal scale + * @return Horizontal scale. + */ +INLINE +f32 GRRLIB_GetScaleX (void) { + return GRRLIB_Settings.scaleX; +} + +/** + * Get current vertical scale + * @return Vertical scale. + */ +INLINE +f32 GRRLIB_GetScaleY (void) { + return GRRLIB_Settings.scaleY; +} + +/** + * Reset global drawing settings to default. + */ +INLINE +void GRRLIB_ResetSettings (void) { + GRRLIB_SetColorRGBA( 0xFFFFFFFF ); + GRRLIB_SetScale( 1.0f, 1.0f ); + GRRLIB_SetRotation( 0.0f ); +} \ No newline at end of file