立方体 (Cube)
立方体是一个3D显示控件,它可以展示六个面的旋转立方体,每个面都能够显示不同的图像。
用法
创建控件
gui_cube_create()
创建一个cube控件。其中,img_file
是一个包含了每个面图像源的结构体,支持内存地址或者文件系统路径。通过将 IMG_SOURCE_MODE_TYPE src_mode[6]
设置成 IMG_SRC_MEMADDR
或 IMG_SRC_FILESYS
来选择内存地址还是文件系统路径访问图像。
设置大小
立方体控件的默认大小是 dc->fb_height / 8.0
,可以通过 gui_cube_set_size()
改变大小。注意 size
是立方体的1/2边长。
设置中心
立方体控件的默认中心是 ((dc->fb_width - size) / 2.0f,dc->fb_width - size) / 2.0f)
。使用 gui_cube_set_center()
改变立方体的中心坐标。
设置图像模式
立方体控件默认图像混合模式是 IMG_FILTER_BLACK
(滤黑,即图像中像素值为0的像素不写入屏幕刷新帧缓冲区),可以通过 gui_cube_set_mode()
来改变图像混合模式。
设置立方体图像
可以通过 gui_cube_set_img()
来设置立方体展示的图像。
设置旋转角度
立方体的旋转角度可以通过以下API设置,gui_cube_auto_rotation_by_x()
以及 gui_cube_auto_rotation_by_z()
。
示例
#include <gui_obj.h>
#include "gui_cube.h"
#include "root_image_hongkong/ui_resource.h"
void page_tb_cube(void *parent)
{
gui_cube_imgfile_t imgfile =
{
.src_mode[0] = IMG_SRC_MEMADDR, .src_mode[1] = IMG_SRC_MEMADDR, .src_mode[2] = IMG_SRC_MEMADDR,
.src_mode[3] = IMG_SRC_MEMADDR, .src_mode[4] = IMG_SRC_MEMADDR, .src_mode[5] = IMG_SRC_MEMADDR,
.data_addr.data_addr_front = ACTIVITY_BIN,
.data_addr.data_addr_back = WEATHER_BIN,
.data_addr.data_addr_up = HEARTRATE_BIN,
.data_addr.data_addr_down = CLOCKN_BIN,
.data_addr.data_addr_left = MUSIC_BIN,
.data_addr.data_addr_right = QUICKCARD_BIN
};
gui_cube_t *cube4 = gui_cube_create(parent, "cube", &imgfile, 0, 0);
gui_cube_auto_rotation_by_y(cube4, 100, 5.5f);
gui_cube_set_mode(cube4, CUBE_SIDE_DOWN, IMG_SRC_OVER_MODE);
gui_cube_set_size(cube4, 100);
gui_cube_set_center(cube4, 200, 200);
}

API
Defines
-
RAD(d) (d*3.1415926f/180.0f)
-
angle to rad
Enums
Functions
-
BLEND_MODE_TYPE gui_cube_get_mode(gui_cube_t *cube, T_CUBE_SIDE_TYPE side)
-
Get the cube image’s blend mode.
- 参数:
cube – The cube widget pointer.
cube_side – The cube image’s side, CUBE_SIDE_ALL is not supported.
- 返回:
-
Return the cube image’s blend mode.
-
void gui_cube_set_mode(gui_cube_t *cube, T_CUBE_SIDE_TYPE cube_side, BLEND_MODE_TYPE mode)
-
Set the cube image’s blend mode.
- 参数:
cube – The cube widget pointer.
cube_side – The cube image’s side.
mode – The enumeration value of the mode is BLEND_MODE_TYPE.
-
uint8_t gui_cube_get_opacity(gui_cube_t *cube, T_CUBE_SIDE_TYPE side)
-
Get the cube image’s opacity.
- 参数:
cube – The cube widget pointer.
cube_side – The cube image’s side, CUBE_SIDE_ALL is not supported.
- 返回:
-
Return the cube image’s opacity.
-
void gui_cube_set_opacity(gui_cube_t *cube, T_CUBE_SIDE_TYPE side, uint8_t opacity)
-
Set the cube image’s opacity.
- 参数:
cube – The cube widget pointer.
cube_side – The cube image’s side.
opacity – The cube image’s opacity.
-
void gui_cube_set_img(gui_cube_t *cube, gui_cube_imgfile_t *img_file)
-
Set cube image.
- 参数:
cube – The cube widget pointer.
img_file – The image file data, set flg_fs true when using filesystem.
-
gui_cube_t *gui_cube_create(void *parent, const char *name, gui_cube_imgfile_t *img_file, int16_t x, int16_t y)
-
Create a cube widget, images can be loaded from filesystem or memory address.
- 参数:
parent – Parent widget.
name – Widget name.
img_file – The image file data, set flg_fs true when using filesystem.
x – Left.
y – Top.
- 返回:
-
Return the cube widget pointer.
-
void gui_cube_set_center(gui_cube_t *_this, float c_x, float c_y)
-
Set the center of the cube.
- 参数:
_this – Widget pointer.
c_x – Center X.
c_y – Center Y.
-
void gui_cube_set_size(gui_cube_t *_this, float size)
-
Set the size of the cube.
- 参数:
_this – Widget pointer.
size – Scale size.
-
void gui_cube_add_click_cb(gui_cube_t *_this, gui_cube_cb_t cb_list)
-
Add click callback for the cube.
- 参数:
_this – Widget pointer.
cb_list – Click callback list.
-
void gui_cube_auto_rotation_by_x(gui_cube_t *_this, uint32_t internal_ms, float degree)
-
Enable automatic rotation of the cube along the X-axis.
- 参数:
_this – Widget pointer.
internal_ms – Rotation interval.
degree – Angle per rotation.
-
void gui_cube_auto_rotation_by_y(gui_cube_t *_this, uint32_t internal_ms, float degree)
-
Enable automatic rotation of the cube along the Y-axis.
- 参数:
_this – Widget pointer.
internal_ms – Rotation interval.
degree – Angle per rotation.
-
void gui_cube_auto_rotation_by_z(gui_cube_t *_this, uint32_t internal_ms, float degree)
-
Enable automatic rotation of the cube along the Z-axis.
- 参数:
_this – Widget pointer.
internal_ms – Rotation interval.
degree – Angle per rotation.
-
struct cube_img_path_t
-
struct cube_data_addr_t
-
struct gui_cube_imgfile_t
-
Public Members
-
IMG_SOURCE_MODE_TYPE src_mode[6]
-
flag: indicate file source
-
cube_img_path_t img_path
-
cube_data_addr_t data_addr
- union gui_cube_imgfile_t
-
IMG_SOURCE_MODE_TYPE src_mode[6]
-
struct gui_cube_img_event_t
-
struct gui_cube_cb_t
-
struct gui_cube_t
-
CUBE widget structure.
Public Members
-
gui_obj_t base
-
base structure
-
draw_img_t draw_img[6]
-
float c_x
-
float c_y
-
float cbsize
-
float nz[6]
-
int16_t release_x
-
int16_t release_y
-
bool auto_flag
-
uint32_t interval_ms_y
-
float step_degree_y
-
float xrot
-
float yrot
-
float zrot
-
void *filename[6]
-
void *ftl[6]
- union gui_cube_t
-
void *data[6]
-
uint8_t src_mode[6]
-
gui_obj_t base