X-Git-Url: https://git.ucc.asn.au/?p=ipdf%2Fcode.git;a=blobdiff_plain;f=src%2Fview.h;h=ec5e97f9a66191cae7f15b7260ebf9c5dec42d80;hp=5bfced8cf3359da52cb77bc6957e7ad39e308797;hb=208cee1f6967db42329a3e665401ef51b3f6d9ff;hpb=cfe7da763b5d8ef4252ddb94558abb080bbd893d diff --git a/src/view.h b/src/view.h index 5bfced8..ec5e97f 100644 --- a/src/view.h +++ b/src/view.h @@ -37,7 +37,12 @@ namespace IPDF void ToggleGPUTransform() { m_use_gpu_transform = (!m_use_gpu_transform); m_bounds_dirty = true; m_buffer_dirty = true; } void ToggleGPURendering() { m_use_gpu_rendering = (!m_use_gpu_rendering); m_bounds_dirty = true; m_buffer_dirty = true; } - + + void ForceBoundsDirty() {m_bounds_dirty = true;} + void ForceBufferDirty() {m_buffer_dirty = true;} + void ForceRenderDirty() {m_render_dirty = true;} + + private: struct GPUObjBounds { @@ -46,7 +51,9 @@ namespace IPDF }; void PrepareRender(); // call when m_render_dirty is true - void UpdateObjBoundsVBO(); // call when m_buffer_dirty is true + void UpdateObjBoundsVBO(unsigned first_obj, unsigned last_obj); // call when m_buffer_dirty is true + + void RenderRange(int width, int height, unsigned first_obj, unsigned last_obj); bool m_use_gpu_transform; bool m_use_gpu_rendering; @@ -68,6 +75,13 @@ namespace IPDF // Trust me it will be easier to generalise things this way. Even though there are pointers. std::vector m_object_renderers; uint8_t * m_cpu_rendering_pixels; // pixels to be used for CPU rendering + +#ifndef QUADTREE_DISABLED + QuadTreeIndex m_current_quadtree_node; // The highest node we will traverse. + int m_quadtree_max_depth; // The maximum quadtree depth. + void RenderQuadtreeNode(int width, int height, QuadTreeIndex node, int remaining_depth); + +#endif }; }