X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Usermode%2FApplications%2Faxwin4_src%2FServer%2Finclude%2FCCompositor.hpp;h=7c1272a6711d5029294cb5c9d23750c04615f9f3;hb=145dd00e5c5a36f844be327e16a00b2983245423;hp=e86286a6bb0ea74ea0457144087ea143b8cacea5;hpb=340e7923b1e95c39ac85a4b22af7f1b53b315cd9;p=tpg%2Facess2.git diff --git a/Usermode/Applications/axwin4_src/Server/include/CCompositor.hpp b/Usermode/Applications/axwin4_src/Server/include/CCompositor.hpp index e86286a6..7c1272a6 100644 --- a/Usermode/Applications/axwin4_src/Server/include/CCompositor.hpp +++ b/Usermode/Applications/axwin4_src/Server/include/CCompositor.hpp @@ -8,26 +8,58 @@ #ifndef _CCOMPOSITOR_H_ #define _CCOMPOSITOR_H_ +#include #include +#include #include "CRect.hpp" #include "CWindow.hpp" namespace AxWin { class CClient; +class CVideo; + +struct TWindowID +{ + uint16_t Client; + uint16_t Window; +}; + +enum eMouseButton +{ + MOUSEBTN_MAIN, // Left + MOUSEBTN_SECONDARY, // Right + MOUSEBTN_MIDDLE, // Scroll wheel + MOUSEBTN_BTN4, + MOUSEBTN_BTN5, +}; class CCompositor { + CVideo& m_video; ::std::list m_damageRects; ::std::list m_windows; + ::std::vector m_windowIDBuffer; // One 32-bit value per pixel + public: - CCompositor(); + CCompositor(CVideo& video); + + CWindow* CreateWindow(CClient& client, const ::std::string& name); + + void ShowWindow(CWindow* window); + void HideWindow(CWindow* window); - CWindow* CreateWindow(CClient& client); + bool GetScreenDims(unsigned int ScrenID, unsigned int *Width, unsigned int *Height); void Redraw(); void DamageArea(const CRect& rect); + void BlitFromSurface(const CSurface& dest, const CRect& src_rect); + + void MouseMove(unsigned int Cursor, unsigned int X, unsigned int Y, int dX, int dY); + void MouseButton(unsigned int Cursor, unsigned int X, unsigned int Y, eMouseButton Button, bool Press); + + void KeyState(unsigned int KeyboardID, uint32_t KeySym, bool Press, uint32_t Codepoint); };