https://git.reactos.org/?p=reactos.git;a=commitdiff;h=9262df661e9f679c2f73c95404454d1efafda696
commit 9262df661e9f679c2f73c95404454d1efafda696 Author: Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> AuthorDate: Thu Feb 22 18:43:08 2024 +0900 Commit: GitHub <nore...@github.com> CommitDate: Thu Feb 22 18:43:08 2024 +0900 [MSCTFIME] Implement CModeBias (#6515) Supporting TIPs... JIRA issue: CORE-19360 - Rename compartment.cpp as misc.cpp. - Implement CModeBias class. --- dll/ime/msctfime/CMakeLists.txt | 2 +- dll/ime/msctfime/{compartment.cpp => misc.cpp} | 49 +++++++++++++++++++++++++- dll/ime/msctfime/{compartment.h => misc.h} | 14 +++++++- dll/ime/msctfime/msctfime.h | 7 +++- 4 files changed, 68 insertions(+), 4 deletions(-) diff --git a/dll/ime/msctfime/CMakeLists.txt b/dll/ime/msctfime/CMakeLists.txt index 3a48a7cbabb..0e5acc805b0 100644 --- a/dll/ime/msctfime/CMakeLists.txt +++ b/dll/ime/msctfime/CMakeLists.txt @@ -6,9 +6,9 @@ spec2def(msctfime.ime msctfime.spec) list(APPEND SOURCE bridge.cpp - compartment.cpp functions.cpp inputcontext.cpp + misc.cpp msctfime.cpp profile.cpp sinks.cpp diff --git a/dll/ime/msctfime/compartment.cpp b/dll/ime/msctfime/misc.cpp similarity index 76% rename from dll/ime/msctfime/compartment.cpp rename to dll/ime/msctfime/misc.cpp index d92b1b526f4..18e01939ada 100644 --- a/dll/ime/msctfime/compartment.cpp +++ b/dll/ime/msctfime/misc.cpp @@ -1,7 +1,7 @@ /* * PROJECT: ReactOS msctfime.ime * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) - * PURPOSE: Supporting compartments + * PURPOSE: Miscellaneous of msctfime.ime * COPYRIGHT: Copyright 2024 Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> */ @@ -161,3 +161,50 @@ ClearCompartment( return hr; } + +/***********************************************************************/ + +struct MODEBIAS +{ + REFGUID m_guid; + LONG m_bias; +}; + +static const MODEBIAS g_ModeBiasMap[] = +{ + { GUID_MODEBIAS_FILENAME, 0x00000001 }, + { GUID_MODEBIAS_NUMERIC, 0x00000004 }, + { GUID_MODEBIAS_URLHISTORY, 0x00010000 }, + { GUID_MODEBIAS_DEFAULT, 0x00000000 }, + { GUID_MODEBIAS_NONE, 0x00000000 }, +}; + +void CModeBias::SetModeBias(REFGUID rguid) +{ + m_guid = rguid; +} + +GUID CModeBias::ConvertModeBias(LONG bias) +{ + const GUID *pguid = &GUID_NULL; + for (auto& item : g_ModeBiasMap) + { + if (item.m_bias == bias) + { + pguid = &item.m_guid; + break; + } + } + + return *pguid; +} + +LONG CModeBias::ConvertModeBias(REFGUID guid) +{ + for (auto& item : g_ModeBiasMap) + { + if (IsEqualGUID(guid, item.m_guid)) + return item.m_bias; + } + return 0; +} diff --git a/dll/ime/msctfime/compartment.h b/dll/ime/msctfime/misc.h similarity index 74% rename from dll/ime/msctfime/compartment.h rename to dll/ime/msctfime/misc.h index 88805566832..ca96a227f54 100644 --- a/dll/ime/msctfime/compartment.h +++ b/dll/ime/msctfime/misc.h @@ -1,7 +1,7 @@ /* * PROJECT: ReactOS msctfime.ime * LICENSE: LGPL-2.1-or-later (https://spdx.org/licenses/LGPL-2.1-or-later) - * PURPOSE: Supporting compartments + * PURPOSE: Miscellaneous of msctfime.ime * COPYRIGHT: Copyright 2024 Katayama Hirofumi MZ <katayama.hirofumi...@gmail.com> */ @@ -42,3 +42,15 @@ ClearCompartment( IUnknown *pUnknown, REFGUID rguid, BOOL bThread); + +/***********************************************************************/ + +class CModeBias +{ +public: + GUID m_guid; + + GUID ConvertModeBias(LONG bias); + LONG ConvertModeBias(REFGUID guid); + void SetModeBias(REFGUID rguid); +}; diff --git a/dll/ime/msctfime/msctfime.h b/dll/ime/msctfime/msctfime.h index cb482318830..28597863047 100644 --- a/dll/ime/msctfime/msctfime.h +++ b/dll/ime/msctfime/msctfime.h @@ -50,13 +50,18 @@ static inline HIMC GetActiveContext(VOID) DEFINE_GUID(GUID_COMPARTMENT_CTFIME_DIMFLAGS, 0xA94C5FD2, 0xC471, 0x4031, 0x95, 0x46, 0x70, 0x9C, 0x17, 0x30, 0x0C, 0xB9); DEFINE_GUID(GUID_COMPARTMENT_CTFIME_CICINPUTCONTEXT, 0x85A688F7, 0x6DC8, 0x4F17, 0xA8, 0x3A, 0xB1, 0x1C, 0x09, 0xCD, 0xD7, 0xBF); +DEFINE_GUID(GUID_MODEBIAS_FILENAME, 0xD7F707FE, 0x44C6, 0x4FCA, 0x8E, 0x76, 0x86, 0xAB, 0x50, 0xC7, 0x93, 0x1B); +DEFINE_GUID(GUID_MODEBIAS_NUMERIC, 0x4021766C, 0xE872, 0x48FD, 0x9C, 0xEE, 0x4E, 0xC5, 0xC7, 0x5E, 0x16, 0xC3); +DEFINE_GUID(GUID_MODEBIAS_URLHISTORY, 0x8B0E54D9, 0x63F2, 0x4C68, 0x84, 0xD4, 0x79, 0xAE, 0xE7, 0xA5, 0x9F, 0x09); +DEFINE_GUID(GUID_MODEBIAS_DEFAULT, 0xF3DA8BD4, 0x0786, 0x49C2, 0x8C, 0x09, 0x68, 0x39, 0xD8, 0xB8, 0x4F, 0x58); +#define GUID_MODEBIAS_NONE GUID_NULL #include "resource.h" #include "bridge.h" -#include "compartment.h" #include "functions.h" #include "inputcontext.h" +#include "misc.h" #include "profile.h" #include "sinks.h" #include "tls.h"