mirror of
https://github.com/GRRLIB/GRRLIB.git
synced 2024-11-25 08:12:20 +00:00
Fix GRRLIB_PrintfTTF
and GRRLIB_PrintfTTFW
so they use the alpha channel from the color
parameter
This commit is contained in:
parent
77c17d2bcd
commit
a7298d2762
2 changed files with 16 additions and 11 deletions
|
@ -7,6 +7,7 @@ All notable changes to this project will be documented in this file.
|
||||||
- Fixed compatibility issues with devkitPPC release 39.
|
- Fixed compatibility issues with devkitPPC release 39.
|
||||||
- Added `GRRLIB_LoadTTFFromFile()` to load a TTF from a file.
|
- Added `GRRLIB_LoadTTFFromFile()` to load a TTF from a file.
|
||||||
- Added `GRRLIB_Ellipse()` to draw an ellipse.
|
- Added `GRRLIB_Ellipse()` to draw an ellipse.
|
||||||
|
- Changed `GRRLIB_PrintfTTF()` and `GRRLIB_PrintfTTFW()` so they use the alpha channel from the `color` parameter.
|
||||||
- Changed function arguments types in a few functions.
|
- Changed function arguments types in a few functions.
|
||||||
- Fixed documentation for `GRRLIB_Camera3dSettings()`, `GRRLIB_Screen2Texture()` and `GRRLIB_CompoEnd()`.
|
- Fixed documentation for `GRRLIB_Camera3dSettings()`, `GRRLIB_Screen2Texture()` and `GRRLIB_CompoEnd()`.
|
||||||
|
|
||||||
|
@ -102,7 +103,7 @@ All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
## 4.0.0 - 2009-03-05
|
## 4.0.0 - 2009-03-05
|
||||||
|
|
||||||
- Color format changed to RGBA for ALL GRRLib functions to fit to `GXColor` format and use `GX_Color1u32`
|
- Changed color format to RGBA for ALL GRRLib functions to fit to `GXColor` format and use `GX_Color1u32`
|
||||||
- `GRRLIB_LoadTexture()` now auto detect PNG or JPEG
|
- `GRRLIB_LoadTexture()` now auto detect PNG or JPEG
|
||||||
- GRRLib introduce a new texture structure (easier to handle texture width, height, etc ...)
|
- GRRLib introduce a new texture structure (easier to handle texture width, height, etc ...)
|
||||||
- Add `GRRLIB_InitTileSet()` to initialize a tile set
|
- Add `GRRLIB_InitTileSet()` to initialize a tile set
|
||||||
|
|
|
@ -29,7 +29,7 @@ THE SOFTWARE.
|
||||||
static FT_Library ftLibrary; /**< A handle to a FreeType library instance. */
|
static FT_Library ftLibrary; /**< A handle to a FreeType library instance. */
|
||||||
|
|
||||||
// Static function prototypes
|
// Static function prototypes
|
||||||
static void DrawBitmap(FT_Bitmap *bitmap, int offset, int top, const u8 cR, const u8 cG, const u8 cB);
|
static void DrawBitmap(FT_Bitmap *bitmap, int offset, int top, const u8 cR, const u8 cG, const u8 cB, const u8 cA);
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -136,6 +136,7 @@ void GRRLIB_PrintfTTFW(int x, int y, GRRLIB_ttfFont *myFont, const wchar_t *utf3
|
||||||
const u8 cR = R(color);
|
const u8 cR = R(color);
|
||||||
const u8 cG = G(color);
|
const u8 cG = G(color);
|
||||||
const u8 cB = B(color);
|
const u8 cB = B(color);
|
||||||
|
const u8 cA = A(color);
|
||||||
|
|
||||||
if (FT_Set_Pixel_Sizes(Face, 0, fontSize) != 0) {
|
if (FT_Set_Pixel_Sizes(Face, 0, fontSize) != 0) {
|
||||||
FT_Set_Pixel_Sizes(Face, 0, 12);
|
FT_Set_Pixel_Sizes(Face, 0, 12);
|
||||||
|
@ -158,7 +159,7 @@ void GRRLIB_PrintfTTFW(int x, int y, GRRLIB_ttfFont *myFont, const wchar_t *utf3
|
||||||
DrawBitmap(&slot->bitmap,
|
DrawBitmap(&slot->bitmap,
|
||||||
penX + slot->bitmap_left + x,
|
penX + slot->bitmap_left + x,
|
||||||
penY - slot->bitmap_top + y,
|
penY - slot->bitmap_top + y,
|
||||||
cR, cG, cB);
|
cR, cG, cB, cA);
|
||||||
penX += slot->advance.x >> 6;
|
penX += slot->advance.x >> 6;
|
||||||
previousGlyph = glyphIndex;
|
previousGlyph = glyphIndex;
|
||||||
}
|
}
|
||||||
|
@ -172,18 +173,21 @@ void GRRLIB_PrintfTTFW(int x, int y, GRRLIB_ttfFont *myFont, const wchar_t *utf3
|
||||||
* @param cR Red component of the colour.
|
* @param cR Red component of the colour.
|
||||||
* @param cG Green component of the colour.
|
* @param cG Green component of the colour.
|
||||||
* @param cB Blue component of the colour.
|
* @param cB Blue component of the colour.
|
||||||
|
* @param cA Alpha component of the colour.
|
||||||
*/
|
*/
|
||||||
static void DrawBitmap(FT_Bitmap *bitmap, int offset, int top, const u8 cR, const u8 cG, const u8 cB) {
|
static void DrawBitmap(FT_Bitmap *bitmap, int offset, int top, const u8 cR, const u8 cG, const u8 cB, const u8 cA) {
|
||||||
FT_Int i, j, p, q;
|
const FT_Int x_max = offset + bitmap->width;
|
||||||
FT_Int x_max = offset + bitmap->width;
|
const FT_Int y_max = top + bitmap->rows;
|
||||||
FT_Int y_max = top + bitmap->rows;
|
|
||||||
|
|
||||||
for ( i = offset, p = 0; i < x_max; i++, p++ ) {
|
for (FT_Int i = offset, p = 0; i < x_max; i++, p++ ) {
|
||||||
for ( j = top, q = 0; j < y_max; j++, q++ ) {
|
for (FT_Int j = top, q = 0; j < y_max; j++, q++ ) {
|
||||||
|
s16 alpha = bitmap->buffer[ q * bitmap->width + p ] - (0xFF - cA);
|
||||||
|
if(alpha < 0) {
|
||||||
|
alpha = 0;
|
||||||
|
}
|
||||||
GX_Begin(GX_POINTS, GX_VTXFMT0, 1);
|
GX_Begin(GX_POINTS, GX_VTXFMT0, 1);
|
||||||
GX_Position3f32(i, j, 0);
|
GX_Position3f32(i, j, 0);
|
||||||
GX_Color4u8(cR, cG, cB,
|
GX_Color4u8(cR, cG, cB, alpha);
|
||||||
bitmap->buffer[ q * bitmap->width + p ]);
|
|
||||||
GX_End();
|
GX_End();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue