rodecomp/Source/Client/Input/VietnameseInput.h
ragnarok-clanker 53430132ed Decompile 14 functions in Source/Client/Input/VietnameseInput.cpp, Source/Client/Input/VietnameseInput.h, ...
Batch #4497 by eAthena: 3 byte-identical, 11 confirmed by peer review.

- fn_18304 NotifyImeHelper: logic confirmed by peer review
- fn_18307 TELEXInputMode::TELEXInputMode: logic confirmed by peer review
- fn_18308 TELEXInputMode::Convert: logic confirmed by peer review
- fn_18309 TELEXInputMode::IsModifierKey: logic confirmed by peer review
- fn_18310 CInputMode::Reset: byte-identical
- fn_18311 CVietnameseInput::CVietnameseInput: byte-identical
- fn_18312 CVietnameseInput::Release: byte-identical
- fn_18313 CVietnameseInput::Compose: logic confirmed by peer review
- fn_18314 CVietnameseInput::SetMode: logic confirmed by peer review
- fn_18315 CVietnameseInput::IsComposeKey: logic confirmed by peer review
- fn_18316 CVietnameseInput::Reset: logic confirmed by peer review
- fn_18317 VNIInputMode::VNIInputMode: logic confirmed by peer review
- fn_18318 VNIInputMode::Convert: logic confirmed by peer review
- fn_18319 VNIInputMode::IsModifierKey: logic confirmed by peer review

Peer-reviewed-by: willerthal, youko, KWDev
Reviewed-by: ragnarok-clanker
Adds to the build: Source/Client/Input/VietnameseInput.cpp, Source/Client/Input/ImeHelper.cpp
2026-10-30 03:37:33 +00:00

58 lines
1.5 KiB
C++

#ifndef RAGNAROK_SOURCE_CLIENT_INPUT_VIETNAMESEINPUT_H
#define RAGNAROK_SOURCE_CLIENT_INPUT_VIETNAMESEINPUT_H
extern unsigned char g_telexToneKeys[6];
extern unsigned short g_vietLowerChars[74];
extern unsigned short g_vietUpperChars[74];
class CInputMode {
public:
// INLINED
CInputMode() : m_lastKey(127), m_toneIndex(-1), m_markKey(-1) {
}
virtual int IsModifierKey(char key, int count, char vowel) = 0;
virtual int Convert(char key, char vowel, int index) = 0;
virtual void Reset();
/* 0004 */ char m_lastKey;
/* 0008 */ int m_toneIndex;
/* 000C */ int m_markKey;
};
// VTABLE: vt_01911
class TELEXInputMode : public CInputMode {
public:
TELEXInputMode();
int IsModifierKey(char key, int count, char vowel) override;
int Convert(char key, char vowel, int index) override;
};
// VTABLE: vt_01622
class VNIInputMode : public CInputMode {
public:
VNIInputMode();
int IsModifierKey(char key, int count, char vowel) override;
int Convert(char key, char vowel, int index) override;
};
class CVietnameseInput {
public:
CVietnameseInput();
int Release();
int Compose(char key, unsigned short* output, int* replaced);
bool SetMode(int type);
int IsComposeKey(char key);
void Reset(int resetMode);
/* 0000 */ CInputMode* m_mode;
/* 0004 */ int m_type;
/* 0008 */ unsigned int m_count;
/* 000C */ char m_keys[10];
/* 0016 */ unsigned short m_chars[10];
/* 002A */ char m_vowel;
/* 002C */ int m_state;
/* 0030 */ int m_index;
};
#endif