better font api

git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@229 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-10-08 17:24:42 +00:00
parent 66196a56c7
commit d6c787f1a7
6 changed files with 16 additions and 10 deletions

View File

@@ -77,9 +77,10 @@ MWDECL void MwDrawFrameEx(MwWidget handle, MwRect* rect, MwLLColor color, int in
* %param point Center point of the text * %param point Center point of the text
* %param text Text * %param text Text
* %param bold Bold * %param bold Bold
* %param align Align
* %param color Color * %param color Color
*/ */
MWDECL void MwDrawText(MwWidget handle, MwPoint* point, const char* text, int bold, MwLLColor color); MWDECL void MwDrawText(MwWidget handle, MwPoint* point, const char* text, int bold, int align, MwLLColor color);
/*! /*!
* %brief Creates a pixmap from image * %brief Creates a pixmap from image

View File

@@ -359,13 +359,19 @@ void MwDrawTriangle(MwWidget handle, MwRect* rect, MwLLColor color, int invert,
MwLLFreeColor(darker); MwLLFreeColor(darker);
} }
void MwDrawText(MwWidget handle, MwPoint* point, const char* text, int bold, MwLLColor color) { void MwDrawText(MwWidget handle, MwPoint* point, const char* text, int bold, int align, MwLLColor color) {
int i, x, y, sx, sy; int i, x, y, sx, sy;
MwRect r; MwRect r;
sx = point->x - strlen(text) * FontWidth * FontScale / 2; sx = point->x;
sy = point->y - FontHeight * FontScale / 2; sy = point->y - FontHeight * FontScale / 2;
if(align == MwALIGNMENT_CENTER) {
sx -= strlen(text) * FontWidth * FontScale / 2;
} else if(align == MwALIGNMENT_END) {
sx -= strlen(text) * FontWidth * FontScale;
}
for(i = 0; text[i] != 0; i++) { for(i = 0; text[i] != 0; i++) {
for(y = 0; y < FontHeight; y++) { for(y = 0; y < FontHeight; y++) {
for(x = 0; x < FontWidth; x++) { for(x = 0; x < FontWidth; x++) {

View File

@@ -50,7 +50,7 @@ static void draw(MwWidget handle) {
point.x = r.x + r.width / 2; point.x = r.x + r.width / 2;
point.y = r.x + r.height / 2; point.y = r.x + r.height / 2;
MwDrawText(handle, &point, str, 0, text); MwDrawText(handle, &point, str, 0, MwALIGNMENT_CENTER, text);
} }
MwLLFreeColor(text); MwLLFreeColor(text);

View File

@@ -34,7 +34,7 @@ static void draw(MwWidget handle) {
p.x = r.width - MwTextWidth(handle, str) / 2; p.x = r.width - MwTextWidth(handle, str) / 2;
} }
p.y = r.height / 2; p.y = r.height / 2;
MwDrawText(handle, &p, str, 0, text); MwDrawText(handle, &p, str, 0, MwALIGNMENT_CENTER, text);
MwLLFreeColor(text); MwLLFreeColor(text);
MwLLFreeColor(base); MwLLFreeColor(base);

View File

@@ -83,10 +83,9 @@ static void destroy(MwWidget handle) {
if(incr) { \ if(incr) { \
p.x = MwGetInteger(handle, MwNwidth) - tw - 10; \ p.x = MwGetInteger(handle, MwNwidth) - tw - 10; \
} \ } \
p.x += tw / 2; \
\ \
r.x = p.x - tw / 2 - 5; \ r.x = p.x - 5; \
r.y = p.y - th / 2 - 5; \ r.y = p.y - 5; \
r.width = tw + 10; \ r.width = tw + 10; \
r.height = th + 10; \ r.height = th + 10; \
\ \
@@ -112,7 +111,7 @@ static void draw(MwWidget handle) {
MwDrawFrame(handle, &r, base, 0); MwDrawFrame(handle, &r, base, 0);
} }
MwDrawText(handle, &p, m->sub[i]->name + incr, 1, text); MwDrawText(handle, &p, m->sub[i]->name + incr, 1, MwALIGNMENT_BEGINNING, text);
END_MENU_LOOP; END_MENU_LOOP;
MwLLFreeColor(text); MwLLFreeColor(text);

View File

@@ -62,7 +62,7 @@ static void draw(MwWidget handle) {
p.x = 5 + tw / 2; p.x = 5 + tw / 2;
p.y += th / 2; p.y += th / 2;
MwDrawText(handle, &p, menu->sub[i]->name, 1, text); MwDrawText(handle, &p, menu->sub[i]->name, 1, MwALIGNMENT_CENTER, text);
if(arrlen(menu->sub[i]->sub) > 0) { if(arrlen(menu->sub[i]->sub) > 0) {
MwRect tr; MwRect tr;