X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fscreen.h;h=85b3c27ba36799364d558b89e46ac49ea28ea189;hp=f2a98c2abff72c37b4d38a7c85f83cff83addb67;hb=e88c1ef58e2446cf57d5f7b0d5d4e5bfff0b8c37;hpb=f8ef964f021d1d6da6ea46bbb1fe8f0250a5be8c diff --git a/src/screen.h b/src/screen.h index f2a98c2..85b3c27 100644 --- a/src/screen.h +++ b/src/screen.h @@ -1,7 +1,7 @@ #ifndef _SCREEN_H #define _SCREEN_H -#include +#include "SDL.h" #include @@ -11,6 +11,7 @@ namespace IPDF { + class View; /* * The "Screen" class handles managing the OS window (using SDL2). */ @@ -41,7 +42,7 @@ namespace IPDF void DebugFontPrintF(const char *fmt, ...); // Handle mouse input. - typedef std::function MouseHandler; + typedef void(*MouseHandler)(int x, int y, int button, int wheel, Screen * scr, View * view); void SetMouseHandler(MouseHandler handler) { m_mouse_handler = handler; @@ -59,7 +60,10 @@ namespace IPDF void ScreenShot(const char * filename) const; void RenderBMP(const char * filename) const; - void RenderPixels(int x, int y, int w, int h, void * pixels) const; + void RenderPixels(int x, int y, int w, int h, uint8_t * pixels) const; + + + void SetView(View * new_view) {m_view = new_view;} // Returns the CPU time (in seconds) it took to render the last completed frame. double GetLastFrameTimeCPU() const { return m_last_frame_time / SDL_GetPerformanceFrequency(); } @@ -83,6 +87,7 @@ namespace IPDF SDL_Window *m_window; SDL_GLContext m_gl_context; ShaderProgram m_texture_prog; + ShaderProgram m_font_prog; GLint m_colour_uniform_location; GraphicsBuffer m_viewport_ubo; stbtt_bakedchar m_debug_font_rects[96]; @@ -94,6 +99,7 @@ namespace IPDF GraphicsBuffer m_debug_font_indices; int m_debug_font_vertex_head; int m_debug_font_index_head; + View * m_view; }; }