Added brewboard
This commit is contained in:
parent
3eae65d956
commit
7428dff871
3 changed files with 93 additions and 0 deletions
BIN
3DS/data/keyboard.bin
Normal file
BIN
3DS/data/keyboard.bin
Normal file
Binary file not shown.
8
3DS/include/brewboard.h
Normal file
8
3DS/include/brewboard.h
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
char* bbHandleKeyboard();
|
||||||
|
|
||||||
|
#ifdef TEXTSTUFF_H
|
||||||
|
void bbDisplayText(char* text);
|
||||||
|
char* bbHandleKeyboardBlocking(char* text);
|
||||||
|
#endif
|
85
3DS/source/brewboard.c
Normal file
85
3DS/source/brewboard.c
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
#include <3ds.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <string.h>
|
||||||
|
//#include "textstuff.h"
|
||||||
|
#include "keyboard_bin.h"
|
||||||
|
|
||||||
|
void gfxDrawSprite(gfxScreen_t screen, gfx3dSide_t side, u8* spriteData, u16 width, u16 height, s16 x, s16 y) {
|
||||||
|
if(!spriteData)return;
|
||||||
|
|
||||||
|
u16 fbWidth, fbHeight;
|
||||||
|
u8* fbAdr=gfxGetFramebuffer(screen, side, &fbWidth, &fbHeight);
|
||||||
|
|
||||||
|
if(x+width<0 || x>=fbWidth)return;
|
||||||
|
if(y+height<0 || y>=fbHeight)return;
|
||||||
|
|
||||||
|
u16 xOffset=0, yOffset=0;
|
||||||
|
u16 widthDrawn=width, heightDrawn=height;
|
||||||
|
|
||||||
|
if(x<0)xOffset=-x;
|
||||||
|
if(y<0)yOffset=-y;
|
||||||
|
if(x+width>=fbWidth)widthDrawn=fbWidth-x;
|
||||||
|
if(y+height>=fbHeight)heightDrawn=fbHeight-y;
|
||||||
|
widthDrawn-=xOffset;
|
||||||
|
heightDrawn-=yOffset;
|
||||||
|
|
||||||
|
int j;
|
||||||
|
for(j=yOffset; j<yOffset+heightDrawn; j++)
|
||||||
|
{
|
||||||
|
memcpy(&fbAdr[((x+xOffset)+(y+j)*fbWidth)*3], &spriteData[((xOffset)+(j)*width)*3], widthDrawn*3);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
char bbHandleKeyboard() {
|
||||||
|
const char chars[60] = "!1234567890\x08qwertyuiop\13\13asdfghjkl-\13\13zxcvbnm,.?\13\13\0\0\0 \0\0\0\0";
|
||||||
|
static touchPosition tpos;
|
||||||
|
char chr = '\0';
|
||||||
|
|
||||||
|
hidTouchRead(&tpos);
|
||||||
|
u32 kDown = hidKeysDown();
|
||||||
|
|
||||||
|
gfxDrawSprite(GFX_BOTTOM, GFX_LEFT, (u8*)keyboard_bin, 240, 320, 0, 0);
|
||||||
|
|
||||||
|
if (tpos.px >= 1 && tpos.px <= 312 && tpos.py >= 78 && tpos.py <= 208 && kDown & KEY_TOUCH)
|
||||||
|
chr = chars[(u16)(floor(tpos.px/26)+12*floor((tpos.py-78)/26))];
|
||||||
|
|
||||||
|
return chr;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef TEXTSTUFF_H
|
||||||
|
void bbDisplayText(char* text) {
|
||||||
|
tsDrawWord(GFX_BOTTOM, GFX_LEFT, (char*)text, 10, 220, 0, 0, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
char* bbHandleKeyboardBlocking(char* text) {
|
||||||
|
static char out[37];
|
||||||
|
char chr;
|
||||||
|
u8 i;
|
||||||
|
|
||||||
|
strncpy(out, text, 37);
|
||||||
|
i = strlen(out);
|
||||||
|
|
||||||
|
while (aptMainLoop()) {
|
||||||
|
gspWaitForVBlank();
|
||||||
|
hidScanInput();
|
||||||
|
|
||||||
|
chr = bbHandleKeyboard(out);
|
||||||
|
if (chr == '\13')
|
||||||
|
break;
|
||||||
|
else if (i > 0 && chr == '\x08') {
|
||||||
|
i--;
|
||||||
|
out[i] = '\0';
|
||||||
|
} else if (i < 36 && chr != '\0') {
|
||||||
|
out[i] = chr;
|
||||||
|
i++;
|
||||||
|
out[i] = '\0';
|
||||||
|
}
|
||||||
|
|
||||||
|
tsDrawWord(GFX_BOTTOM, GFX_LEFT, (char*)out, 10, 220, 0, 0, 0);
|
||||||
|
|
||||||
|
gfxFlushBuffers();
|
||||||
|
gfxSwapBuffers();
|
||||||
|
}
|
||||||
|
return (char*)out;
|
||||||
|
}
|
||||||
|
#endif
|
Loading…
Reference in a new issue