Usermode/AxWin4 - Screen dimensions acquisition, speedup, window render
[tpg/acess2.git] / Usermode / Applications / axwin4_src / Server / include / CCompositor.hpp
index e86286a..7c1272a 100644 (file)
@@ -8,26 +8,58 @@
 #ifndef _CCOMPOSITOR_H_
 #define _CCOMPOSITOR_H_
 
+#include <string>
 #include <list>
+#include <vector>
 #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<CRect>      m_damageRects;
        ::std::list<CWindow*>   m_windows;
 
+       ::std::vector<TWindowID>        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);
 };
 
 

UCC git Repository :: git.ucc.asn.au