Reactos
at master 134 lines 3.0 kB view raw
1/* 2 * PROJECT: ReactOS CTF 3 * LICENSE: LGPL-2.0-or-later (https://spdx.org/licenses/LGPL-2.0-or-later) 4 * PURPOSE: ITfDisplayAttributeMgr implementation 5 * COPYRIGHT: Copyright 2010 CodeWeavers, Aric Stewart 6 * Copyright 2025 Katayama Hirofumi MZ <katayama.hirofumi.mz@gmail.com> 7 */ 8 9#include "precomp.h" 10#include "displayattributemgr.h" 11 12#include <wine/debug.h> 13WINE_DEFAULT_DEBUG_CHANNEL(msctf); 14 15//////////////////////////////////////////////////////////////////////////// 16 17CDisplayAttributeMgr::CDisplayAttributeMgr() 18 : m_cRefs(1) 19{ 20} 21 22CDisplayAttributeMgr::~CDisplayAttributeMgr() 23{ 24 TRACE("destroying %p\n", this); 25} 26 27BOOL CDisplayAttributeMgr::_IsInCollection(REFGUID rguid) 28{ 29 FIXME("(%p)\n", wine_dbgstr_guid(&rguid)); 30 return FALSE; 31} 32 33void CDisplayAttributeMgr::_AdviseMarkupCollection(ITfTextInputProcessor *pProcessor, DWORD dwCookie) 34{ 35 FIXME("(%p, %u)\n", pProcessor, dwCookie); 36} 37 38void CDisplayAttributeMgr::_UnadviseMarkupCollection(DWORD dwCookie) 39{ 40 FIXME("(%u)\n", dwCookie); 41} 42 43void CDisplayAttributeMgr::_SetThis() 44{ 45 FIXME("()\n"); 46} 47 48STDMETHODIMP 49CDisplayAttributeMgr::QueryInterface(REFIID riid, void **ppvObj) 50{ 51 if (!ppvObj) 52 return E_INVALIDARG; 53 54 *ppvObj = NULL; 55 56 if (riid == IID_IUnknown || 57 riid == IID_ITfDisplayAttributeMgr || 58 riid == IID_CDisplayAttributeMgr) 59 { 60 *ppvObj = this; 61 } 62 else if (riid == IID_ITfDisplayAttributeCollectionMgr) 63 { 64 *ppvObj = static_cast<ITfDisplayAttributeCollectionMgr *>(this); 65 } 66 67 if (!*ppvObj) 68 return E_NOINTERFACE; 69 70 AddRef(); 71 return S_OK; 72} 73 74STDMETHODIMP_(ULONG) 75CDisplayAttributeMgr::AddRef() 76{ 77 return ::InterlockedIncrement(&m_cRefs); 78} 79 80STDMETHODIMP_(ULONG) 81CDisplayAttributeMgr::Release() 82{ 83 ULONG ret = ::InterlockedDecrement(&m_cRefs); 84 if (!ret) 85 delete this; 86 return ret; 87} 88 89STDMETHODIMP CDisplayAttributeMgr::OnUpdateInfo() 90{ 91 FIXME("()\n"); 92 return E_NOTIMPL; 93} 94 95STDMETHODIMP 96CDisplayAttributeMgr::EnumDisplayAttributeInfo(_Out_ IEnumTfDisplayAttributeInfo **ppEnum) 97{ 98 FIXME("(%p)\n", ppEnum); 99 return E_NOTIMPL; 100} 101 102STDMETHODIMP 103CDisplayAttributeMgr::GetDisplayAttributeInfo( 104 _In_ REFGUID guid, 105 _Out_ ITfDisplayAttributeInfo **ppInfo, 106 _Out_ CLSID *pclsidOwner) 107{ 108 FIXME("(%s, %p, %s)\n", wine_dbgstr_guid(&guid), ppInfo, wine_dbgstr_guid(pclsidOwner)); 109 return E_NOTIMPL; 110} 111 112STDMETHODIMP 113CDisplayAttributeMgr::UnknownMethod(_In_ DWORD unused) 114{ 115 FIXME("(0x%lX)\n", unused); 116 return E_NOTIMPL; 117} 118 119//////////////////////////////////////////////////////////////////////////// 120 121EXTERN_C 122HRESULT DisplayAttributeMgr_Constructor(IUnknown *pUnkOuter, IUnknown **ppOut) 123{ 124 if (pUnkOuter) 125 return CLASS_E_NOAGGREGATION; 126 127 CDisplayAttributeMgr *This = new(cicNoThrow) CDisplayAttributeMgr(); 128 if (!This) 129 return E_OUTOFMEMORY; 130 131 HRESULT hr = This->QueryInterface(IID_ITfDisplayAttributeMgr, (void **)ppOut); 132 This->Release(); 133 return hr; 134}