#571 show touch kbd only if there place for it
This commit is contained in:
parent
bba06a7f19
commit
4a0ef9390b
23
src/system.c
23
src/system.c
|
@ -17,6 +17,9 @@
|
|||
#define OFFSET_LEFT ((TIC80_FULLWIDTH-TIC80_WIDTH)/2)
|
||||
#define OFFSET_TOP ((TIC80_FULLHEIGHT-TIC80_HEIGHT)/2)
|
||||
|
||||
#define KBD_COLS 22
|
||||
#define KBD_ROWS 17
|
||||
|
||||
static struct
|
||||
{
|
||||
Studio* studio;
|
||||
|
@ -193,7 +196,7 @@ static void initTouchKeyboard()
|
|||
{
|
||||
tic_mem* tic = platform.studio->tic;
|
||||
|
||||
enum{Cols=11*2, Rows=17};
|
||||
enum{Cols=KBD_COLS, Rows=KBD_ROWS};
|
||||
|
||||
// TODO: add touch keyboard to one texture with gamepad (and mouse cursor???)
|
||||
if(!platform.keyboard.texture.up)
|
||||
|
@ -745,8 +748,18 @@ static void renderKeyboard()
|
|||
SDL_Rect rect;
|
||||
SDL_GetWindowSize(platform.window, &rect.w, &rect.h);
|
||||
|
||||
GPU_Rect src = {OFFSET_LEFT, OFFSET_TOP, 176, 136};
|
||||
GPU_Rect dst = {0, 0, rect.w/src.w, rect.h/src.h};
|
||||
GPU_Rect src = {OFFSET_LEFT, OFFSET_TOP, KBD_COLS*TIC_SPRITESIZE, KBD_ROWS*TIC_SPRITESIZE};
|
||||
float scale = rect.w/src.w;
|
||||
|
||||
GPU_Rect dst = {0, rect.h - KBD_ROWS*TIC_SPRITESIZE*scale, scale, scale};
|
||||
|
||||
{
|
||||
SDL_Rect rect;
|
||||
calcTextureRect(&rect);
|
||||
|
||||
if(dst.y - (rect.h + rect.y*2) < 0)
|
||||
return;
|
||||
}
|
||||
|
||||
GPU_BlitScale(platform.keyboard.texture.up, &src, platform.gpu.screen, dst.x, dst.y, dst.w, dst.h);
|
||||
|
||||
|
@ -757,7 +770,7 @@ static void renderKeyboard()
|
|||
|
||||
tic80_input* input = &platform.studio->tic->ram.input;
|
||||
|
||||
enum{Cols=22, Rows=17};
|
||||
enum{Cols=KBD_COLS, Rows=KBD_ROWS};
|
||||
|
||||
for(s32 i = 0; i < COUNT_OF(input->keyboard.keys); i++)
|
||||
{
|
||||
|
@ -772,7 +785,7 @@ static void renderKeyboard()
|
|||
TIC_SPRITESIZE, TIC_SPRITESIZE};
|
||||
|
||||
GPU_BlitScale(platform.keyboard.texture.down, &src, platform.gpu.screen,
|
||||
(src.x - OFFSET_LEFT) * dst.w, (src.y - OFFSET_TOP) * dst.h, dst.w, dst.h);
|
||||
(src.x - OFFSET_LEFT) * dst.w, (src.y - OFFSET_TOP) * dst.h + dst.y, dst.w, dst.h);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue