diff options
Diffstat (limited to 'engines/cge/gettext.cpp')
-rw-r--r-- | engines/cge/gettext.cpp | 174 |
1 files changed, 79 insertions, 95 deletions
diff --git a/engines/cge/gettext.cpp b/engines/cge/gettext.cpp index 892ef5ee73..78cc0356a1 100644 --- a/engines/cge/gettext.cpp +++ b/engines/cge/gettext.cpp @@ -25,113 +25,97 @@ * Copyright (c) 1994-1995 Janus B. Wisniewski and L.K. Avalon */ -#include "cge/gettext.h" -#include "cge/keybd.h" -#include "cge/mouse.h" -#include <string.h> +#include "cge/gettext.h" +#include "cge/keybd.h" +#include "cge/mouse.h" +#include <string.h> namespace CGE { -GET_TEXT * GET_TEXT::Ptr = NULL; - - - -GET_TEXT::GET_TEXT (const char * info, char * text, int size, void (*click)(void)) -: Text(text), Size(min<int>(size, GTMAX)), Len(min<int>(Size, strlen(text))), - Cntr(GTBLINK), Click(click), OldKeybClient(KEYBOARD::SetClient(this)) -{ - int i = 2 * TEXT_HM + Font.Width(info); - Ptr = this; - Mode = RECT; - TS[0] = Box((i + 3) & ~3, 2 * TEXT_VM + 2 * FONT_HIG + TEXT_LS); - SetShapeList(TS); - Flags.BDel = true; - Flags.Kill = true; - memcpy(Buff, text, Len); - Buff[Len] = ' '; - Buff[Len+1] = '\0'; - PutLine(0, info); - Tick(); +GET_TEXT *GET_TEXT::Ptr = NULL; + + +GET_TEXT::GET_TEXT(const char *info, char *text, int size, void (*click)(void)) + : Text(text), Size(min<int>(size, GTMAX)), Len(min<int>(Size, strlen(text))), + Cntr(GTBLINK), Click(click), OldKeybClient(KEYBOARD::SetClient(this)) { + int i = 2 * TEXT_HM + Font.Width(info); + Ptr = this; + Mode = RECT; + TS[0] = Box((i + 3) & ~3, 2 * TEXT_VM + 2 * FONT_HIG + TEXT_LS); + SetShapeList(TS); + Flags.BDel = true; + Flags.Kill = true; + memcpy(Buff, text, Len); + Buff[Len] = ' '; + Buff[Len + 1] = '\0'; + PutLine(0, info); + Tick(); } - - - - -GET_TEXT::~GET_TEXT (void) -{ - KEYBOARD::SetClient(OldKeybClient); - Ptr = NULL; +GET_TEXT::~GET_TEXT(void) { + KEYBOARD::SetClient(OldKeybClient); + Ptr = NULL; } - - - - -void GET_TEXT::Tick (void) -{ - if (++ Cntr >= GTBLINK) - { - Buff[Len] ^= (' ' ^ '_'); - Cntr = 0; - } - PutLine(1, Buff); - Time = GTTIME; +void GET_TEXT::Tick(void) { + if (++ Cntr >= GTBLINK) { + Buff[Len] ^= (' ' ^ '_'); + Cntr = 0; + } + PutLine(1, Buff); + Time = GTTIME; } - - -void GET_TEXT::Touch (uint16 mask, int x, int y) -{ - static char ogon[] = ""; - static char bezo[] = "ACELNOSXZ"; - char * p; - - if (mask & KEYB) - { - if (Click) Click(); - switch (x) - { - case Enter : Buff[Len] = '\0'; strcpy(Text, Buff); - for (p = Text; *p; p ++) - { - char * q = strchr(ogon, *p); - if (q) *p = bezo[q-ogon]; - } - case Esc : SNPOST_(SNKILL, -1, 0, this); break; - case BSp : if (Len) - { - -- Len; - Buff[Len] = Buff[Len+1]; - Buff[Len+1] = Buff[Len+2]; - } - break; - default : if (x < 'A' || x > 'Z') - { - if (OldKeybClient) - OldKeybClient->Touch(mask, x, y); - } - else - { - if (KEYBOARD::Key[ALT]) - { - p = strchr(bezo, x); - if (p) x = ogon[p-bezo]; - } - if (Len < Size && 2 * TEXT_HM + Font.Width(Buff) + Font.Wid[x] <= W) - { - Buff[Len+2] = Buff[Len+1]; - Buff[Len+1] = Buff[Len]; - Buff[Len ++] = x; - } - } - break; - } - } - else SPRITE::Touch(mask, x, y); +void GET_TEXT::Touch(uint16 mask, int x, int y) { + static char ogon[] = ""; + static char bezo[] = "ACELNOSXZ"; + char *p; + + if (mask & KEYB) { + if (Click) + Click(); + switch (x) { + case Enter : + Buff[Len] = '\0'; + strcpy(Text, Buff); + for (p = Text; *p; p ++) { + char *q = strchr(ogon, *p); + if (q) + *p = bezo[q - ogon]; + } + case Esc : + SNPOST_(SNKILL, -1, 0, this); + break; + case BSp : + if (Len) { + --Len; + Buff[Len] = Buff[Len + 1]; + Buff[Len + 1] = Buff[Len + 2]; + } + break; + default : + if (x < 'A' || x > 'Z') { + if (OldKeybClient) + OldKeybClient->Touch(mask, x, y); + } else { + if (KEYBOARD::Key[ALT]) { + p = strchr(bezo, x); + if (p) + x = ogon[p - bezo]; + } + if (Len < Size && 2 * TEXT_HM + Font.Width(Buff) + Font.Wid[x] <= W) { + Buff[Len + 2] = Buff[Len + 1]; + Buff[Len + 1] = Buff[Len]; + Buff[Len ++] = x; + } + } + break; + } + } else + SPRITE::Touch(mask, x, y); } } // End of namespace CGE |