!21 add guilite cube

* add GuiLite cube
* rename fb.rect to fb.visible_rect
This commit is contained in:
idea4good
2019-07-18 18:03:49 +08:00
parent ea4e1379a5
commit 79ec69420f
9 changed files with 30 additions and 22 deletions

View File

@@ -1,3 +1,7 @@
<p align="center">
<img src="doc/GuiLiteCube.gif" alt="Image" width="600" height="300"/>
</p>
# GuiLite - The smallest GUI library # GuiLite - The smallest GUI library
![badge_build](https://img.shields.io/badge/build-passing-brightgreen.svg) ![badge_docker](https://img.shields.io/badge/docker%20build-passing-brightgreen.svg) ![badge_platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS%20%7C%20iOS%20%7C%20Android%20%7C%20MCU-brightgreen.svg) ![badge_lincense](https://img.shields.io/badge/license-Apache%202-blue.svg) ![badge_lincense](https://img.shields.io/badge/architecture-amd64%20%7C%20arm%20%7C%20arm64-blue.svg) ![badge_build](https://img.shields.io/badge/build-passing-brightgreen.svg) ![badge_docker](https://img.shields.io/badge/docker%20build-passing-brightgreen.svg) ![badge_platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS%20%7C%20iOS%20%7C%20Android%20%7C%20MCU-brightgreen.svg) ![badge_lincense](https://img.shields.io/badge/license-Apache%202-blue.svg) ![badge_lincense](https://img.shields.io/badge/architecture-amd64%20%7C%20arm%20%7C%20arm64-blue.svg)
- [中文](README_zh.md) - [中文](README_zh.md)

View File

@@ -1,3 +1,7 @@
<p align="center">
<img src="doc/GuiLiteCube.gif" alt="Image" width="600" height="300"/>
</p>
# GuiLite超轻量UI框架 - 最小的GUI库 # GuiLite超轻量UI框架 - 最小的GUI库
![badge_build](https://img.shields.io/badge/build-passing-brightgreen.svg) ![badge_docker](https://img.shields.io/badge/docker%20build-passing-brightgreen.svg) ![badge_platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS%20%7C%20iOS%20%7C%20Android%20%7C%20MCU-brightgreen.svg) ![badge_lincense](https://img.shields.io/badge/license-Apache%202-blue.svg) ![badge_lincense](https://img.shields.io/badge/architecture-amd64%20%7C%20arm%20%7C%20arm64-blue.svg) ![badge_build](https://img.shields.io/badge/build-passing-brightgreen.svg) ![badge_docker](https://img.shields.io/badge/docker%20build-passing-brightgreen.svg) ![badge_platform](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS%20%7C%20iOS%20%7C%20Android%20%7C%20MCU-brightgreen.svg) ![badge_lincense](https://img.shields.io/badge/license-Apache%202-blue.svg) ![badge_lincense](https://img.shields.io/badge/architecture-amd64%20%7C%20arm%20%7C%20arm64-blue.svg)
- [功能介绍](#功能介绍) - [功能介绍](#功能介绍)

View File

@@ -21,7 +21,7 @@ c_surface::c_surface(c_display* display, unsigned int width, unsigned int heigh
m_fb = m_usr = 0; m_fb = m_usr = 0;
m_top_zorder = m_max_zorder = Z_ORDER_LEVEL_0; m_top_zorder = m_max_zorder = Z_ORDER_LEVEL_0;
m_is_active = false; m_is_active = false;
m_frame_layers[Z_ORDER_LEVEL_0].rect = c_rect(0, 0, m_width, m_height); m_frame_layers[Z_ORDER_LEVEL_0].visible_rect = c_rect(0, 0, m_width, m_height);
} }
void c_surface::set_surface(void* wnd_root, Z_ORDER_LEVEL max_z_order) void c_surface::set_surface(void* wnd_root, Z_ORDER_LEVEL max_z_order)
@@ -63,7 +63,7 @@ void c_surface::draw_pixel(int x, int y, unsigned int rgb, unsigned int z_order)
m_top_zorder = (Z_ORDER_LEVEL)z_order; m_top_zorder = (Z_ORDER_LEVEL)z_order;
} }
if (0 == m_frame_layers[z_order].rect.PtInRect(x, y)) if (0 == m_frame_layers[z_order].visible_rect.PtInRect(x, y))
{ {
ASSERT(false); ASSERT(false);
return; return;
@@ -78,7 +78,7 @@ void c_surface::draw_pixel(int x, int y, unsigned int rgb, unsigned int z_order)
bool is_covered = false; bool is_covered = false;
for (int tmp_z_order = Z_ORDER_LEVEL_MAX - 1; tmp_z_order > z_order; tmp_z_order--) for (int tmp_z_order = Z_ORDER_LEVEL_MAX - 1; tmp_z_order > z_order; tmp_z_order--)
{ {
if (true == m_frame_layers[tmp_z_order].rect.PtInRect(x, y)) if (true == m_frame_layers[tmp_z_order].visible_rect.PtInRect(x, y))
{ {
is_covered = true; is_covered = true;
break; break;
@@ -354,9 +354,9 @@ void c_surface::draw_rect(int x0, int y0, int x1, int y1, unsigned int rgb, unsi
} }
} }
int c_surface::set_frame_layer(c_rect& rect, unsigned int z_order) int c_surface::set_frame_layer_visible_rect(c_rect& rect, unsigned int z_order)
{ {
if (rect == m_frame_layers[z_order].rect) if (rect == m_frame_layers[z_order].visible_rect)
{ {
return 0; return 0;
} }
@@ -380,7 +380,7 @@ int c_surface::set_frame_layer(c_rect& rect, unsigned int z_order)
} }
m_top_zorder = (Z_ORDER_LEVEL)z_order; m_top_zorder = (Z_ORDER_LEVEL)z_order;
c_rect old_rect = m_frame_layers[z_order].rect; c_rect old_rect = m_frame_layers[z_order].visible_rect;
//Recover the lower layer //Recover the lower layer
int src_zorder = (Z_ORDER_LEVEL)(z_order - 1); int src_zorder = (Z_ORDER_LEVEL)(z_order - 1);
int display_width = m_display->get_width(); int display_width = m_display->get_width();
@@ -398,7 +398,7 @@ int c_surface::set_frame_layer(c_rect& rect, unsigned int z_order)
} }
} }
m_frame_layers[z_order].rect = rect; m_frame_layers[z_order].visible_rect = rect;
if (rect.IsEmpty()) if (rect.IsEmpty())
{ {
m_top_zorder = (Z_ORDER_LEVEL)(z_order - 1); m_top_zorder = (Z_ORDER_LEVEL)(z_order - 1);

View File

@@ -1,12 +1,12 @@
#ifndef GAL_H #ifndef SURFACE_H
#define GAL_H #define SURFACE_H
class c_frame_layer class c_frame_layer
{ {
public: public:
c_frame_layer() { fb = 0;} c_frame_layer() { fb = 0;}
unsigned short* fb; unsigned short* fb;
c_rect rect; c_rect visible_rect;
}; };
typedef enum typedef enum
@@ -52,7 +52,7 @@ public:
bool is_active() { return m_is_active; } bool is_active() { return m_is_active; }
c_display* get_display() { return m_display; } c_display* get_display() { return m_display; }
int set_frame_layer(c_rect& rect, unsigned int z_order); int set_frame_layer_visible_rect(c_rect& rect, unsigned int z_order);
void set_active(bool flag){m_is_active = flag;} void set_active(bool flag){m_is_active = flag;}
protected: protected:
virtual void fill_rect_on_fb(int x0, int y0, int x1, int y1, unsigned int rgb); virtual void fill_rect_on_fb(int x0, int y0, int x1, int y1, unsigned int rgb);

BIN
doc/GuiLiteCube.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 991 KiB

View File

@@ -61,7 +61,7 @@ int c_dialog::open_dialog(c_dialog* p_dlg, bool modal_mode)
c_rect rc; c_rect rc;
p_dlg->get_screen_rect(rc); p_dlg->get_screen_rect(rc);
p_dlg->get_surface()->set_frame_layer(rc, Z_ORDER_LEVEL_1); p_dlg->get_surface()->set_frame_layer_visible_rect(rc, Z_ORDER_LEVEL_1);
p_dlg->set_attr(modal_mode ? (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS | ATTR_MODAL) : (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS)); p_dlg->set_attr(modal_mode ? (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS | ATTR_MODAL) : (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS));
p_dlg->show_window(); p_dlg->show_window();
@@ -80,7 +80,7 @@ int c_dialog::close_dialog(c_surface* surface)
c_rect rc; c_rect rc;
dlg->set_attr(WND_ATTRIBUTION(0)); dlg->set_attr(WND_ATTRIBUTION(0));
surface->set_frame_layer(rc, dlg->m_z_order); surface->set_frame_layer_visible_rect(rc, dlg->m_z_order);
//clear the dialog //clear the dialog
for(int i = 0; i < SURFACE_CNT_MAX; i++) for(int i = 0; i < SURFACE_CNT_MAX; i++)

View File

@@ -122,7 +122,7 @@ void c_edit::on_paint()
if (m_z_order > m_parent->get_z_order()) if (m_z_order > m_parent->get_z_order())
{ {
s_keyboard.disconnect(); s_keyboard.disconnect();
m_surface->set_frame_layer(empty_rect, s_keyboard.get_z_order()); m_surface->set_frame_layer_visible_rect(empty_rect, s_keyboard.get_z_order());
m_z_order = m_parent->get_z_order(); m_z_order = m_parent->get_z_order();
m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS); m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS);
} }
@@ -133,7 +133,7 @@ void c_edit::on_paint()
if (m_z_order > m_parent->get_z_order()) if (m_z_order > m_parent->get_z_order())
{ {
s_keyboard.disconnect(); s_keyboard.disconnect();
m_surface->set_frame_layer(empty_rect, s_keyboard.get_z_order()); m_surface->set_frame_layer_visible_rect(empty_rect, s_keyboard.get_z_order());
m_z_order = m_parent->get_z_order(); m_z_order = m_parent->get_z_order();
m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS); m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS);
} }
@@ -163,7 +163,7 @@ void c_edit::show_keyboard()
c_rect kb_rect; c_rect kb_rect;
s_keyboard.get_screen_rect(kb_rect); s_keyboard.get_screen_rect(kb_rect);
m_surface->set_frame_layer(kb_rect, s_keyboard.get_z_order()); m_surface->set_frame_layer_visible_rect(kb_rect, s_keyboard.get_z_order());
s_keyboard.show_window(); s_keyboard.show_window();
} }

View File

@@ -46,7 +46,7 @@ void c_list_box::on_paint()
case STATUS_NORMAL: case STATUS_NORMAL:
if (m_z_order > m_parent->get_z_order()) if (m_z_order > m_parent->get_z_order())
{ {
m_surface->set_frame_layer(empty_rect, m_z_order); m_surface->set_frame_layer_visible_rect(empty_rect, m_z_order);
m_z_order = m_parent->get_z_order(); m_z_order = m_parent->get_z_order();
m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS); m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS);
} }
@@ -56,7 +56,7 @@ void c_list_box::on_paint()
case STATUS_FOCUSED: case STATUS_FOCUSED:
if (m_z_order > m_parent->get_z_order()) if (m_z_order > m_parent->get_z_order())
{ {
m_surface->set_frame_layer(empty_rect, m_z_order); m_surface->set_frame_layer_visible_rect(empty_rect, m_z_order);
m_z_order = m_parent->get_z_order(); m_z_order = m_parent->get_z_order();
m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS); m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS);
} }
@@ -74,7 +74,7 @@ void c_list_box::on_paint()
{ {
m_z_order++; m_z_order++;
} }
m_surface->set_frame_layer(m_list_screen_rect, m_z_order); m_surface->set_frame_layer_visible_rect(m_list_screen_rect, m_z_order);
m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS | ATTR_MODAL); m_attr = (WND_ATTRIBUTION)(ATTR_VISIBLE | ATTR_FOCUS | ATTR_MODAL);
show_list(); show_list();
} }

View File

@@ -126,7 +126,7 @@ void c_spin_box::on_paint()
if (m_z_order > m_parent->get_z_order()) if (m_z_order > m_parent->get_z_order())
{ {
hide_arrow_button(); hide_arrow_button();
m_surface->set_frame_layer(empty_rect, m_z_order); m_surface->set_frame_layer_visible_rect(empty_rect, m_z_order);
m_z_order = m_parent->get_z_order(); m_z_order = m_parent->get_z_order();
} }
m_surface->fill_rect(rect, c_theme::get_color(COLOR_WND_NORMAL), m_z_order); m_surface->fill_rect(rect, c_theme::get_color(COLOR_WND_NORMAL), m_z_order);
@@ -136,7 +136,7 @@ void c_spin_box::on_paint()
if (m_z_order > m_parent->get_z_order()) if (m_z_order > m_parent->get_z_order())
{ {
hide_arrow_button(); hide_arrow_button();
m_surface->set_frame_layer(empty_rect, m_z_order); m_surface->set_frame_layer_visible_rect(empty_rect, m_z_order);
m_z_order = m_parent->get_z_order(); m_z_order = m_parent->get_z_order();
} }
m_surface->fill_rect(rect, c_theme::get_color(COLOR_WND_FOCUS), m_z_order); m_surface->fill_rect(rect, c_theme::get_color(COLOR_WND_FOCUS), m_z_order);
@@ -149,7 +149,7 @@ void c_spin_box::on_paint()
} }
tmp_rect.m_top = m_bt_down_rect.m_top; tmp_rect.m_top = m_bt_down_rect.m_top;
tmp_rect.m_bottom = m_bt_down_rect.m_bottom; tmp_rect.m_bottom = m_bt_down_rect.m_bottom;
m_surface->set_frame_layer(tmp_rect, m_z_order); m_surface->set_frame_layer_visible_rect(tmp_rect, m_z_order);
show_arrow_button(); show_arrow_button();
m_surface->fill_rect(rect.m_left, rect.m_top, rect.m_right, rect.m_bottom, c_theme::get_color(COLOR_WND_PUSHED), m_parent->get_z_order()); m_surface->fill_rect(rect.m_left, rect.m_top, rect.m_right, rect.m_bottom, c_theme::get_color(COLOR_WND_PUSHED), m_parent->get_z_order());