CContext.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #pragma once
  2. #include <vector>
  3. #include <glm/vec4.hpp>
  4. #include "WallpaperEngine/Input/CMouseInput.h"
  5. #include "CTextureCache.h"
  6. #include "CWallpaper.h"
  7. #include <X11/Xlib.h>
  8. using namespace WallpaperEngine::Input;
  9. namespace WallpaperEngine::Render
  10. {
  11. class CWallpaper;
  12. class CTextureCache;
  13. class CContext
  14. {
  15. public:
  16. CContext (std::vector <std::string> screens, GLFWwindow* window, CContainer* container);
  17. ~CContext ();
  18. void initializeViewports ();
  19. void render ();
  20. void setWallpaper (CWallpaper* wallpaper);
  21. void setDefaultViewport (glm::vec4 defaultViewport);
  22. CMouseInput* getMouse () const;
  23. void setMouse (CMouseInput* mouse);
  24. CWallpaper* getWallpaper () const;
  25. const CContainer* getContainer () const;
  26. const ITexture* resolveTexture (const std::string& name);
  27. private:
  28. Display* m_display;
  29. Pixmap m_pixmap;
  30. GC m_gc;
  31. XImage* m_image;
  32. GLFWwindow* m_window;
  33. char* m_imageData;
  34. CFBO* m_fbo;
  35. std::vector <std::string> m_screens;
  36. std::vector <glm::ivec4> m_viewports;
  37. glm::vec4 m_defaultViewport;
  38. CWallpaper* m_wallpaper;
  39. CMouseInput* m_mouse;
  40. bool m_isRootWindow;
  41. CContainer* m_container;
  42. CTextureCache* m_textureCache;
  43. };
  44. }