#ifndef _LCDINPUTTEXT_H_INCLUDED_ #define _LCDINPUTTEXT_H_INCLUDED_ #define MARKER_HOLD 0 #define MARKER_HORIZONTAL 1 #define MARKER_VERTICAL 2 #define KEYS_RETURN 0 #define KEYS_CTRL_RETURN 1 #include "CLCDTextObject.h" #include "CLCDBar.h" struct SMarker { int iPosition; int iXLine; int iXWidth; int iLine; }; struct SLineEntry { int iOffset; int iWidth; bool bLineBreak; }; class CLineEntry { public: tstring strLine; vector vWrapLineOffsets; }; class CLCDInput : public CLCDTextObject { public: CLCDInput(); ~CLCDInput(); bool Initialize(); bool Shutdown(); bool Draw(CLCDGfx *pGfx); bool Update(); void ShowSymbols(bool bShow); void SetBreakKeys(int iKeys); void SetScrollbar(CLCDBar *pScrollbar); void ActivateInput(); void DeactivateInput(); bool IsInputActive(); tstring GetText(); void Reset(); static LRESULT CALLBACK KeyboardHook(int Code, WPARAM wParam, LPARAM lParam); int GetLineCount(); int GetLine(); bool ScrollLine(bool bDown=true); void ScrollToMarker(); long GetLastInputTime(); protected: void OnFontChanged(); void OnSizeChanged(SIZE OldSize); LRESULT ProcessKeyEvent(int Code, WPARAM wParam, LPARAM lParam); void UpdateOffsets(int iModified); void UpdateMarker(); void MoveMarker(int iDir,int iMove,bool bShift=false); protected: bool m_bShowSymbols; bool m_iBreakKeys; int m_iLineCount; long m_lInputTime; bool m_bInsert; long m_lBlinkTimer; bool m_bShowMarker; int m_iLinePosition; SMarker m_Marker[2]; // Text variables tstring m_strText; vector m_vLineOffsets; // Input variables static CLCDInput* m_pInput; HHOOK m_hKBHook; BYTE m_acKeyboardState[256]; // Scrollbar CLCDBar *m_pScrollbar; }; #endif // !_LCDTEXT_H_INCLUDED_ //** end of LCDText.h ****************************************************