GuiLite/core_include/display.h
idea4good afd7a1c6f3 !23 refactor surface/display/resource/wnd
* fix typo
* refactor display/surface
* Merge branch 'master' into dev
* add boundary check for fill_rect
* Merge branch 'master' into dev
* Merge branch 'master' into dev
* refactor wnd.cpp
* rename some variables
2019-10-02 10:49:41 +08:00

34 lines
1.1 KiB
C++

#ifndef GUILITE_CORE_INCLUDE_DISPLAY_H
#define GUILITE_CORE_INCLUDE_DISPLAY_H
#define SURFACE_CNT_MAX 6//root + pages
class c_hid_pipe;
class c_surface;
class c_display {
friend class c_surface;
public:
c_display(void* phy_fb, unsigned int display_width, unsigned int display_height,
unsigned int surface_width, unsigned int surface_height,
unsigned int color_bytes, unsigned int surface_cnt, EXTERNAL_GFX_OP* gfx_op = 0);
c_surface* alloc_surface(Z_ORDER_LEVEL max_zorder);
int merge_surface(c_surface* s1, c_surface* s2, int x0, int x1, int y0, int y2, int offset);
unsigned int get_width() { return m_width; }
unsigned int get_height() { return m_height; }
void* get_updated_fb(int* width, int* height, bool force_update = false);
int snap_shot(const char* file_name);
private:
unsigned int m_width; //in pixels
unsigned int m_height; //in pixels
unsigned int m_color_bytes; //16 bits, 32 bits only
void* m_phy_fb;
int m_phy_read_index;
int m_phy_write_index;
c_surface* m_surface_group[SURFACE_CNT_MAX];
unsigned int m_surface_cnt;
unsigned int m_surface_index;
};
#endif