mirror of
https://github.com/pevans/erc-c.git
synced 2024-11-27 20:51:17 +00:00
Use vm_area with bitfont_offset
This should further standardize on vm_area.
This commit is contained in:
parent
efb8f04555
commit
27f91ec00f
@ -18,6 +18,6 @@ typedef struct {
|
|||||||
extern int vm_bitfont_render(vm_bitfont *, vm_screen *, vm_area *, char);
|
extern int vm_bitfont_render(vm_bitfont *, vm_screen *, vm_area *, char);
|
||||||
extern vm_bitfont *vm_bitfont_create(vm_screen *, const char *, int, int, char);
|
extern vm_bitfont *vm_bitfont_create(vm_screen *, const char *, int, int, char);
|
||||||
extern void vm_bitfont_free(vm_bitfont *);
|
extern void vm_bitfont_free(vm_bitfont *);
|
||||||
extern void vm_bitfont_offset(vm_bitfont *, char, int *, int *);
|
extern void vm_bitfont_offset(vm_bitfont *, char, vm_area *);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -67,13 +67,13 @@ vm_bitfont_free(vm_bitfont *font)
|
|||||||
* value.
|
* value.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
vm_bitfont_offset(vm_bitfont *font, char ch, int *xcoord, int *ycoord)
|
vm_bitfont_offset(vm_bitfont *font, char ch, vm_area *area)
|
||||||
{
|
{
|
||||||
int row = (ch & 0xf0) >> 4;
|
int row = (ch & 0xf0) >> 4;
|
||||||
int col = ch & 0x0f;
|
int col = ch & 0x0f;
|
||||||
|
|
||||||
*xcoord = col * font->width;
|
area->xoff = col * font->width;
|
||||||
*ycoord = row * font->height;
|
area->yoff = row * font->height;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -86,8 +86,7 @@ vm_bitfont_render(vm_bitfont *font,
|
|||||||
vm_area *dest,
|
vm_area *dest,
|
||||||
char ch)
|
char ch)
|
||||||
{
|
{
|
||||||
SDL_Rect src_rect;
|
vm_area src;
|
||||||
SDL_Rect dest_rect;
|
|
||||||
|
|
||||||
// Our bitmap font may not be able to support all 256 possible
|
// Our bitmap font may not be able to support all 256 possible
|
||||||
// values that a character can hold; the cmask will limit us to
|
// values that a character can hold; the cmask will limit us to
|
||||||
@ -96,17 +95,19 @@ vm_bitfont_render(vm_bitfont *font,
|
|||||||
|
|
||||||
// The width and height of the glyph are as indicated by the font
|
// The width and height of the glyph are as indicated by the font
|
||||||
// struct
|
// struct
|
||||||
src_rect.w = font->width;
|
src.width = font->width;
|
||||||
src_rect.h = font->height;
|
src.height = font->height;
|
||||||
|
|
||||||
// Bring the destination attributes into the SDL_Rect we need to
|
|
||||||
// pass into SDL_RenderCopy().
|
|
||||||
SET_SDL_RECT(dest_rect, *dest);
|
|
||||||
|
|
||||||
// Get the spot in the bitmap where the glyph is found
|
// Get the spot in the bitmap where the glyph is found
|
||||||
vm_bitfont_offset(font, ch, &src_rect.x, &src_rect.y);
|
vm_bitfont_offset(font, ch, &src);
|
||||||
|
|
||||||
log_critical("src.x = %d, src.y = %d", src_rect.x, src_rect.y);
|
log_critical("src.xoff = %d, src.yoff = %d", src.xoff, src.yoff);
|
||||||
|
|
||||||
|
// Bring the destination attributes into the SDL_Rect we need to
|
||||||
|
// pass into SDL_RenderCopy(). Also bring in the src attributes
|
||||||
|
// we've built earlier.
|
||||||
|
MAKE_SDL_RECT(dest_rect, *dest);
|
||||||
|
MAKE_SDL_RECT(src_rect, src);
|
||||||
|
|
||||||
if (SDL_RenderCopy(screen->render, font->texture, &src_rect, &dest_rect) < 0) {
|
if (SDL_RenderCopy(screen->render, font->texture, &src_rect, &dest_rect) < 0) {
|
||||||
log_critical("Failed to render glyph: %s", SDL_GetError());
|
log_critical("Failed to render glyph: %s", SDL_GetError());
|
||||||
|
@ -40,13 +40,12 @@ Test(vm_bitfont, create)
|
|||||||
Test(vm_bitfont, offset)
|
Test(vm_bitfont, offset)
|
||||||
{
|
{
|
||||||
char ch = 'p';
|
char ch = 'p';
|
||||||
int x = 0;
|
vm_area area;
|
||||||
int y = 0;
|
|
||||||
|
|
||||||
vm_bitfont_offset(font, ch, &x, &y);
|
vm_bitfont_offset(font, ch, &area);
|
||||||
|
|
||||||
cr_assert_eq(x, (ch & 0x0f) * font->width);
|
cr_assert_eq(area.xoff, (ch & 0x0f) * font->width);
|
||||||
cr_assert_eq(y, (ch >> 4) * font->height);
|
cr_assert_eq(area.yoff, (ch >> 4) * font->height);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
Reference in New Issue
Block a user