/*++

Copyright (c) 2001, Microsoft Corporation

Module Name:

    ui.h

Abstract:

    This file defines the UI Class.

Author:

Revision History:

Notes:

--*/

#ifndef _UI_H_
#define _UI_H_

#include "uicomp.h"

class UI
{
public:
    static VOID OnCreate(HWND hUIWnd);
    static VOID OnDestroy(HWND hUIWnd);

public:
    UI(HWND hUIWnd)
    {
        m_hUIWnd = hUIWnd;
    }

    virtual ~UI()
    {
        delete m_UIComposition;
    }

    HRESULT _Create();
    HRESULT _Destroy();

    HRESULT OnImeSetContext(IMCLock& imc, BOOL fActivate, DWORD isc)
    {
        return m_UIComposition->OnImeSetContext(imc, m_hUIWnd, fActivate, isc);
    }
    HRESULT OnImeSetContextAfter(IMCLock& imc)
    {
        return m_UIComposition->OnImeSetContextAfter(imc);
    }
    HRESULT OnImeSelect(BOOL fSelect)
    {
        return m_UIComposition->OnImeSelect(fSelect);
    }
    HRESULT OnImeStartComposition(IMCLock& imc)
    {
        return m_UIComposition->OnImeStartComposition(imc, m_hUIWnd);
    }
    HRESULT OnImeCompositionUpdate(IMCLock& imc)
    {
        return m_UIComposition->OnImeCompositionUpdate(imc);
    }
    HRESULT OnImeCompositionUpdateByTimer(IMCLock& imc)
    {
        return m_UIComposition->OnImeCompositionUpdateByTimer(imc);
    }
    HRESULT OnImeEndComposition()
    {
        return m_UIComposition->OnImeEndComposition();
    }
    HRESULT OnImeNotifySetCompositionWindow(IMCLock& imc)
    {
        return m_UIComposition->OnImeNotifySetCompositionWindow(imc);
    }
    HRESULT OnImeNotifySetCompositionFont(IMCLock& imc)
    {
        return m_UIComposition->OnImeNotifySetCompositionFont(imc);
    }
    HRESULT OnPrivateGetContextFlag(IMCLock& imc, BOOL fStartComposition, IME_UIWND_STATE* uists)
    {
        return m_UIComposition->OnPrivateGetContextFlag(imc, fStartComposition, uists);
    }
    HRESULT OnPrivateGetTextExtent(IMCLock& imc, UIComposition::TEXTEXT *ptext_ext)
    {
        return m_UIComposition->OnPrivateGetTextExtent(imc, ptext_ext);
    }
    HRESULT OnPrivateGetCandRectFromComposition(IMCLock& imc, UIComposition::CandRectFromComposition* pv)
    {
        return m_UIComposition->OnPrivateGetCandRectFromComposition(imc, pv);
    }

    void OnSetCompositionTimerStatus(BOOL bSetTimer) 
    {
        m_UIComposition->OnSetCompositionTimerStatus(bSetTimer);
    }

private:
    HWND              m_hUIWnd;
    UIComposition*    m_UIComposition;
};

#endif // _UI_H_