zhuruiProject/1/lvgl2.ts

1100 lines
37 KiB
TypeScript
Raw Normal View History

2023-08-02 17:23:33 +08:00
import Module, { LV_STYLE } from '../lvgl/LVGL';
// 屏幕和控件相比屏幕的flag少了几个
/*flag类*/
export class LVGL_FLAG{
public obj:number
public checkable:boolean = true;
public snappable:boolean = true;
public press_lock:boolean = true;
public gesture_bubble:boolean = true;
public hidden:boolean = false;
public clickable:boolean = false;
public click_focusable:boolean = false;
public event_bubble:boolean = false;
public adv_hittest:boolean = false;
public ignore_layout:boolean = false;
public floating:boolean = false;
public scroll_elastic:boolean = true;
public scroll_momentum:boolean = true;
public scroll_chain:boolean = true;
public scrollable:boolean = false;
public scroll_one:boolean = false;
public scroll_on_focus:boolean = false;
constructor(id:number){
this.obj = id;
}
/**< Make the object hidden. (Like it wasn't there at all)*/
public set Hidden(v:boolean){
this.hidden = v;
if(this.hidden) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_HIDDEN);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_HIDDEN);
}
public get Hidden():{[key:string]:boolean}{
return {"Hidden":this.hidden};
}
/**< Make the object clickable by the input devices*/
public set Clickable(v:boolean){
this.clickable = v;
if(this.clickable) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_CLICKABLE);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_CLICKABLE);
}
public get Clickable():{[key:string]:boolean}{
return {"Clickable":this.clickable};
}
/**< Add focused state to the object when clicked*/
public set Click_Focusable(v:boolean){
this.click_focusable = v;
if(this.click_focusable) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_CLICK_FOCUSABLE);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_CLICK_FOCUSABLE);
}
public get Click_Focusable():{[key:string]:boolean}{
return {"Click_Focusable":this.click_focusable};
}
/**< Toggle checked state when the object is clicked*/
public set Checkable(v:boolean){
this.checkable = v;
if(this.checkable) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_CHECKABLE);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_CHECKABLE);
}
public get Checkable():{[key:string]:boolean}{
return {"Checkable":this.checkable};
}
/**< Make the object scrollable*/
public set Scrollable(v:boolean){
this.scrollable = v;
if(this.scrollable) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_SCROLLABLE);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_SCROLLABLE);
}
public get Scrollable():{[key:string]:boolean}{
return {"Scrollable":this.scrollable};
}
/**< Allow scrolling inside but with slower speed*/
public set Scroll_Elastic(v:boolean){
this.scroll_elastic = v;
if(this.scroll_elastic) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_ELASTIC);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_ELASTIC);
}
public get Scroll_Elastic():{[key:string]:boolean}{
return {"Scroll_Elastic":this.scroll_elastic};
}
/**< Make the object scroll further when "thrown"*/
public set Scroll_Momentum(v:boolean){
this.scroll_momentum = v;
if(this.scroll_momentum) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_MOMENTUM);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_MOMENTUM);
}
public get Scroll_Momentum():{[key:string]:boolean}{
return {"Scroll_Momentum":this.scroll_momentum};
}
/**< Allow scrolling only one snappable children*/
public set Scroll_One(v:boolean){
this.scroll_one = v;
if(this.scroll_one) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_ONE);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_ONE);
}
public get Scroll_One():{[key:string]:boolean}{
return {"Scroll_One":this.scroll_one};
}
/**< Allow propagating the scroll to a parent*/
public set Scroll_Chain(v:boolean){
this.scroll_chain = v;
if(this.scroll_chain) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_CHAIN);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_CHAIN);
}
public get Scroll_Chain():{[key:string]:boolean}{
return {"Scroll_Chain":this.scroll_chain};
}
/**< Automatically scroll object to make it visible when focused*/
public set Scroll_On_Focus(v:boolean){
this.scroll_on_focus = v;
if(this.scroll_on_focus) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_ON_FOCUS);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_SCROLL_ON_FOCUS);
}
public get Scroll_On_Focus():{[key:string]:boolean}{
return {"Scroll_On_Focus":this.scroll_on_focus};
}
/**< If scroll snap is enabled on the parent it can snap to this object*/
public set Snappable(v:boolean){
this.snappable = v;
if(this.snappable) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_SNAPPABLE);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_SNAPPABLE);
}
public get Snappable():{[key:string]:boolean}{
return {"Snappable":this.snappable};
}
/**< Keep the object pressed even if the press slid from the object*/
public set Press_Lock(v:boolean){
this.press_lock = v;
if(this.press_lock) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_PRESS_LOCK);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_PRESS_LOCK);
}
public get Press_Lock():{[key:string]:boolean}{
return {"Press_Lock":this.press_lock};
}
/**< Propagate the events to the parent too*/
public set Event_Bubble(v:boolean){
this.event_bubble = v;
if(this.event_bubble) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_EVENT_BUBBLE);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_EVENT_BUBBLE);
}
public get Event_Bubble():{[key:string]:boolean}{
return {"Event_Bubble":this.event_bubble};
}
/**< Propagate the gestures to the parent*/
public set Gesture_Bubble(v:boolean){
this.gesture_bubble = v;
if(this.gesture_bubble) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_GESTURE_BUBBLE);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_GESTURE_BUBBLE);
}
public get Gesture_Bubble():{[key:string]:boolean}{
return {"Gesture_Bubble":this.gesture_bubble};
}
/**< Allow performing more accurate hit (click) test. E.g. consider rounded corners.*/
public set Adv_Hittest(v:boolean){
this.adv_hittest = v;
if(this.adv_hittest) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_ADV_HITTEST);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_ADV_HITTEST);
}
public get Adv_Hittest():{[key:string]:boolean}{
return {"Adv_Hittest":this.adv_hittest};
}
/**< Make the object position-able by the layouts*/
public set Ignore_Layout(v:boolean){
this.ignore_layout = v;
if(this.ignore_layout) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_IGNORE_LAYOUT);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_IGNORE_LAYOUT);
}
public get Ignore_Layout():{[key:string]:boolean}{
return {"Ignore_Layout":this.ignore_layout};
}
/**< Do not scroll the object when the parent scrolls and ignore layout*/
public set Floating(v:boolean){
this.floating = v;
if(this.floating) Module.lv_obj_add_flag(this.obj,Module.LV_OBJ_FLAG_FLOATING);
else Module.lv_obj_clear_flag(this.obj,Module.LV_OBJ_FLAG_FLOATING);
}
public get Floating():{[key:string]:boolean}{
return {"Floating":this.floating};
}
// public layout_1:boolean = false;
// public layout_2:boolean = false;
// public widget_1:boolean = false;
// public widget_2:boolean = false;
// public user_1:boolean = false;
// public user_2:boolean = false;
// public user_3:boolean = false;
// public user_4:boolean = false;
// LV_OBJ_FLAG_LAYOUT_1 = (1 << 23), /**< Custom flag, free to use by layouts*/
// LV_OBJ_FLAG_LAYOUT_2 = (1 << 24), /**< Custom flag, free to use by layouts*/
// LV_OBJ_FLAG_WIDGET_1 = (1 << 25), /**< Custom flag, free to use by widget*/
// LV_OBJ_FLAG_WIDGET_2 = (1 << 26), /**< Custom flag, free to use by widget*/
// LV_OBJ_FLAG_USER_1 = (1 << 27), /**< Custom flag, free to use by user*/
// LV_OBJ_FLAG_USER_2 = (1 << 28), /**< Custom flag, free to use by user*/
// LV_OBJ_FLAG_USER_3 = (1 << 29), /**< Custom flag, free to use by user*/
// LV_OBJ_FLAG_USER_4 = (1 << 30), /**< Custom flag, free to use by user*/
}
/*state类*/
export class LVGL_STATE{
public obj:number
public focused:boolean = false;
public default:boolean = false;
public checked:boolean = false;
public focus_key:boolean = false;
public edited:boolean = false;
public hovered:boolean = false;
public pressed:boolean = false;
public scrolled:boolean = false;
public disabled:boolean = false;
public user1:boolean = false;
public user2:boolean = false;
public user3:boolean = false;
public user4:boolean = false;
public any:boolean = false;
constructor(id:number){
this.obj = id;
}
public set Focused(v:boolean){
this.focused = v;
if(this.focused) Module.lv_obj_add_state(this.obj,Module.LV_STATE_FOCUSED);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_FOCUSED);
}
public get Focused():{[key:string]:boolean}{
return {"Focused":this.focused};
}
public set Default(v:boolean){
this.default = v;
if(this.default) Module.lv_obj_add_state(this.obj,Module.LV_STATE_DEFAULT);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_DEFAULT);
}
public get Default():{[key:string]:boolean}{
return {"Default":this.default};
}
public set Checked(v:boolean){
this.checked = v;
if(this.checked) Module.lv_obj_add_state(this.obj,Module.LV_STATE_CHECKED);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_CHECKED);
}
public get Checked():{[key:string]:boolean}{
return {"Checked":this.checked};
}
public set Focus_Key(v:boolean){
this.focus_key = v;
if(this.focus_key) Module.lv_obj_add_state(this.obj,Module.LV_STATE_FOCUS_KEY);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_FOCUS_KEY);
}
public get Focus_Key():{[key:string]:boolean}{
return {"Focus_Key":this.focus_key};
}
public set Edited(v:boolean){
this.edited = v;
if(this.edited) Module.lv_obj_add_state(this.obj,Module.LV_STATE_EDITED);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_EDITED);
}
public get Edited():{[key:string]:boolean}{
return {"Edited":this.edited};
}
public set Hovered(v:boolean){
this.hovered = v;
if(this.hovered) Module.lv_obj_add_state(this.obj,Module.LV_STATE_HOVERED);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_HOVERED);
}
public get Hovered():{[key:string]:boolean}{
return {"Hovered":this.hovered};
}
public set Pressed(v:boolean){
this.pressed = v;
if(this.pressed) Module.lv_obj_add_state(this.obj,Module.LV_STATE_HOVERED);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_HOVERED);
}
public get Pressed():{[key:string]:boolean}{
return {"Pressed":this.pressed};
}
public set Scrolled(v:boolean){
this.scrolled = v;
if(this.scrolled) Module.lv_obj_add_state(this.obj,Module.LV_STATE_SCROLLED);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_SCROLLED);
}
public get Scrolled():{[key:string]:boolean}{
return {"Scrolled":this.scrolled};
}
public set Disabled(v:boolean){
this.disabled = v;
if(this.disabled) Module.lv_obj_add_state(this.obj,Module.LV_STATE_DISABLED);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_DISABLED);
}
public get Disabled():{[key:string]:boolean}{
return {"Disabled":this.disabled};
}
public set User_1(v:boolean){
this.user1 = v;
if(this.user1) Module.lv_obj_add_state(this.obj,Module.LV_STATE_USER_1);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_USER_1);
}
public get User_1():{[key:string]:boolean}{
return {"User_1":this.user1};
}
public set User_2(v:boolean){
this.user2 = v;
if(this.user2) Module.lv_obj_add_state(this.obj,Module.LV_STATE_USER_1);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_USER_1);
}
public get User_2():{[key:string]:boolean}{
return {"User_2":this.user2};
}
public set User_3(v:boolean){
this.user3 = v;
if(this.user3) Module.lv_obj_add_state(this.obj,Module.LV_STATE_USER_1);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_USER_1);
}
public get USEUser_3R_3():{[key:string]:boolean}{
return {"User_3":this.user3};
}
public set User_4(v:boolean){
this.user4 = v;
if(this.user4) Module.lv_obj_add_state(this.obj,Module.LV_STATE_USER_1);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_USER_1);
}
public get User_4():{[key:string]:boolean}{
return {"User_4":this.user4};
}
public set Any(v:boolean){
this.any = v;
if(this.any) Module.lv_obj_add_state(this.obj,Module.LV_STATE_ANY);
else Module.lv_obj_clear_state(this.obj,Module.LV_STATE_ANY);
}
public get Any():{[key:string]:boolean}{
return {"Any":this.any};
}
}
/*pos*/
export class LVGL_POS{
public obj:number;
public x:number;
public y:number;
constructor(id:number){
this.obj = id;
this.x = 0;
this.y = 0;
}
public set X(v:number){
this.x = v;
Module.lv_obj_set_size(this.obj,this.x);
}
public get X():{[key:string]:number}{
return {"X:":this.x};
}
public set Y(v:number){
this.y = v;
Module.lv_obj_set_size(this.obj,this.y);
}
public get Y():{[key:string]:number}{
return {"Y:":this.y};
}
public Set_XY(x:number,y:number){
this.x = x;
this.y = y;
Module.lv_obj_set_pos(this.obj,this.x,this.y);
}
public Get_XY():{[key:string]:number}{
return {
"X:":this.x,
"Y:":this.y
};
}
}
/*size*/
export class LVGL_SIZE{
private obj:number;
public width:number;
public height:number;
constructor(id:number){
this.obj = id;
this.height = 100;
this.width = 100;
}
public set Width(v:number){
this.width = v;
Module.lv_obj_set_width(this.obj,this.width);
}
public get Width():{[key:string]:number}{
return {"Width:":this.width};
}
public set Height(v:number){
this.height = v;
Module.lv_obj_set_width(this.obj,this.width);
}
public get Height():{[key:string]:number}{
return {"Width:":this.width};
}
public Set_WH(w:number,h:number){
this.width = w;
this.height = h;
Module.lv_obj_set_width(this.obj,this.width);
}
public Get_WH():{[key:string]:number}{
return {
"Width:":this.width,
"Height:":this.height,
};
}
}
/*布局*/
export class LVGL_FLEX{
public obj:number;
public flex_flow:number;
public flex_align:number;
public main_place:number;
public cross_place:number;
public track_cross_place:number;
public grow:number;
constructor(id:number){
this.obj = id;
Module.lv_flex_init();
}
//弹性布局流动方式
public set Flow(a:number){
this.flex_flow = a;
Module.lv_obj_set_flex_flow(this.obj,this.flex_flow);
}
public get Flow():number{
return this.flex_flow;
}
//弹性布局对齐方式
public setAlign(a1:number,a2:number,a3:number){
this.main_place =a1;
this.cross_place =a2;
this.track_cross_place =a3;
Module.lv_obj_set_flex_align(this.obj,this.main_place,this.cross_place,this.track_cross_place);
}
public get Align():{[key:string]:number}{
return {
"main_place":this.main_place,
"cross_place":this.cross_place,
"track_cross_place":this.cross_place
}
}
//弹性布局伸展程度
public set Grow(a:number){
this.grow = a;
Module.lv_obj_set_flex_grow(this.obj,this.grow);
}
public get Grow():number{
return this.grow;
}
}
/*对齐*/
export class LVGL_ALIGN{
public obj:number;
public base_obj:number;
public align_mode:number;
constructor(id:number){
this.obj = id;
}
public set align(a:number){
this.align_mode = a;
Module.lv_obj_align(this.obj,this.align_mode);
}
public alignTo(a:number,base_id:number){
this.align_mode = a;
this.base_obj = base_id;
Module.lv_obj_align_to(this.obj,this.base_obj,this.align_mode);
}
public Center(){
this.align_mode = 9;
Module.lv_obj_center(this.obj);
}
public get Mode():number{
return this.align_mode;
}
}
/*共有style*/
export class LVGL_STYLE{
public style:number;
// constructor(s:number){
// this.style = s;
// Module.lv_style_init(this.style);
// }
constructor(){
this.style = Module.lv_style_create();
}
public _radius:number;
public set Radius(v:number){
this._radius = v;
Module.lv_style_set_radius(this.style,this._radius);
}
public get Radius():number{
return this._radius;
}
/**background */
public _bg_color:number;
public set BgColor(color:number){
this._bg_color = color;
Module.lv_style_set_bg_color(this.style,Module.lv_color_hex(this._bg_color));
}
public get BgColor():{[key:string]:number}{
return {"bg_color":this._bg_color};
}
public _bg_grad_color:number;
public set BgGradColor(grad_color:number){
this._bg_grad_color = grad_color;
Module.lv_style_set_bg_grad_color(this.style,Module.lv_color_hex(this._bg_grad_color));
}
public get BgGradColor():{[key:string]:number}{
return {"BgGradColor":this._bg_grad_color};
}
public _bg_opa:number;
public set BgOpa(o:number){
if(o<0) this._bg_opa = 0;
else if(o > 255) this._bg_opa = 255;
else this._bg_opa = o;
Module.lv_style_set_bg_opa(this.style,this._bg_opa);
}
public get BgOpa():{[key:string]:number}{
return {"Bg_Opa":this._bg_opa};
}
public _bg_grad_dir:number;
public set BgGradDir(d:number){
if(d == 0){
this._bg_grad_dir = d;
Module.lv_style_set_bg_grad_dir(this.style,Module.LV_GRAD_DIR_NONE);
}else if(d == 1){
this._bg_grad_dir = d;
Module.lv_style_set_bg_grad_dir(this.style,Module.LV_GRAD_DIR_VER);
}else if(d == 2){
this._bg_grad_dir = d;
Module.lv_style_set_bg_grad_dir(this.style,Module.LV_GRAD_DIR_HOR);
}
}
public get BgGradDir():{[key:string]:number}{
if (this._bg_grad_dir == 0) return {"LV_GRAD_DIR_NONE": 0};
else if (this._bg_grad_dir == 1) return {"LV_GRAD_DIR_VER": 1};
else if (this._bg_grad_dir == 2) return {"LV_GRAD_DIR_HOR": 2};
else return {};
}
private _bg_grad_stop:number;
public set bgGradStop(bg_grad_stop:number){
if( bg_grad_stop < 0 ){
this._bg_grad_stop = 0;
Module.lv_style_set_bg_grad_stop(this.style,0);
}else if( bg_grad_stop >255 ){
this._bg_grad_stop = 255;
Module.lv_style_set_bg_grad_stop(this.style,255);
}else{
this._bg_grad_stop = bg_grad_stop;
Module.lv_style_set_bg_grad_stop(this.style,this._bg_grad_stop);
}
}
public get bgGradStop():number{
return this._bg_grad_stop;
}
private _bg_main_stop:number;
public set bgMainStop(bg_main_stop:number){
if( bg_main_stop < 0 ){
this._bg_main_stop = 0;
Module.lv_style_set_bg_main_stop(this.style,0);
}else if( bg_main_stop >255 ){
this._bg_main_stop = 255;
Module.lv_style_set_bg_main_stop(this.style,255);
}else{
this._bg_main_stop = bg_main_stop;
Module.lv_style_set_bg_main_stop(this.style,this._bg_main_stop);
}
}
public get bgMainStop():number{
return this._bg_main_stop;
}
/**background image */
//背景图片透明度
private _bg_img_opa:number;
public set bgImgOpa(bg_img_opa: number){
if(bg_img_opa < 0 ){
this._bg_img_opa = 0;
}else if(bg_img_opa >255){
this._bg_img_opa = 255;
}else{
this._bg_img_opa = bg_img_opa;
}
Module.lv_style_set_bg_img_opa(this.style,this._bg_img_opa);
}
public get bgImgOpa():number{
return this._bg_img_opa;
}
//背景图片着色
private _bg_img_recolor:number;
public set bgImgRecolor(bg_img_recolor:number){
this._bg_img_recolor = bg_img_recolor;
Module.lv_style_set_bg_img_recolor(this.style,Module.lv_color_hex(this._bg_img_recolor));
}
public get bgImgRecolor():number{
return this._bg_img_recolor;
}
//着色透明度
private _bg_img_recolor_opa:number;
public set bgImgRecolorOpa(bg_img_recolor_opa :number ){
if(bg_img_recolor_opa < 0 ){
this._bg_img_recolor_opa = 0;
}else if(bg_img_recolor_opa >255){
this._bg_img_recolor_opa = 255;
}else{
this._bg_img_recolor_opa = bg_img_recolor_opa;
}
Module.lv_style_set_bg_img_recolor_opa(this.style,this._bg_img_recolor_opa);
}
public get bgImgRecolorOpa():number{
return this._bg_img_recolor_opa;
}
//tile
private _bg_img_tile:boolean;
public set bgImgTile(bg_img_tile:boolean){
this._bg_img_tile = bg_img_tile;
Module.lv_style_set_bg_img_tiled(this.style,this._bg_img_tile);
}
public get bgImgTile():boolean{
return this._bg_img_tile;
}
/**border */
//边框颜色
private _border_color: number;
public set borderColor(borderColor:number){
this._border_color = borderColor;
Module.lv_style_set_border_color(this.style,Module.lv_color_hex(this._border_color));
}
public get borderColor():number{
return this._border_color;
}
//边框透明度
private _border_opa : number;
public set borderOpa(border_opa:number) {
if(border_opa < 0){
this._border_opa = 0;
}else if(border_opa > 255){
this._border_opa = 255;
}else{
this._border_opa = border_opa;
}
Module.lv_style_set_border_opa(this.style, this._border_opa);
}
public get borderOpa():number{
return this._border_opa;
}
//边框显示侧
private _border_post:boolean;
public set borderPost(border_post :boolean){
this._border_post = border_post
Module.lv_style_set_border_post(this.style,this._border_post);
}
public get borderPost():boolean{
return this._border_post;
}
//边框显示边
private _border_side : number;
public set borderSide( border_side :number){
this._border_side = border_side;
Module.lv_style_set_border_side(this.style,this._border_side);
}
public get borderSide():{[key:string]:number}{
if(this._border_side == 0x00) return {"LV_BORDER_SIDE_NONE":0x00};
else if(this._border_side == 0x01) return {"LV_BORDER_SIDE_BOTTOM":0x01};
else if(this._border_side == 0x02) return {"LV_BORDER_SIDE_TOP":0x02};
else if(this._border_side == 0x04) return {"LV_BORDER_SIDE_LEFT":0x04};
else if(this._border_side == 0x08) return {"LV_BORDER_SIDE_RIGHT":0x08};
else if(this._border_side == 0x0F) return {"LV_BORDER_SIDE_FULL":0x0F};
else if(this._border_side == 0x10) return {"LV_BORDER_SIDE_INTERNAL":0x10};
else return {};
}
//边框宽度
private _border_width:number;
public set borderWidth(border_width:number){
this._border_width = border_width;
Module.lv_style_set_border_width(this.style,this._border_width);
}
public get borderWidth():number{
return this._border_width;
}
/**outline */
//轮廓颜色
private _outline_color:number;
public set outlineColor(outline_color : number){
this._outline_color = outline_color;
Module.lv_style_set_outline_color(this.style,Module.lv_color_hex(this._outline_color));
}
public get outlineColor():number{
return this._outline_color;
}
//轮廓透明度
private _outline_opa:number;
public set outlineOpa(outline_opa : number){
if(outline_opa < 0){
this._outline_opa = 0;
}else if(outline_opa > 255){
this._outline_opa = 255;
}else{
this._outline_opa = outline_opa;
}
Module.lv_style_set_outline_opa(this.style, this._outline_opa)
}
public get outlineOpa():number{
return this._outline_opa;
}
//轮廓宽度
private _outline_width:number;
public set outlineWidth(outline_width :number){
this._outline_width = outline_width;
Module.lv_style_set_outline_width(this.style,this._outline_width);
}
public get outlineWidth():number{
return this._outline_width;
}
//轮廓与边框的距离
private _outline_pad:number;
public set outlinePad(outline_pad :number){
this._outline_pad = outline_pad;
Module.lv_style_set_outline_pad(this.style,outline_pad);
}
public get outlinePad():number{
return this._outline_pad;
}
/**shadow */
//阴影颜色
private _shadow_color:number;
public set shadowColor(shadow_color : number){
this._shadow_color = shadow_color;
Module.lv_style_set_shadow_color(this.style,Module.lv_color_hex(this._shadow_color));
}
public get shadowColor():number{
return this._shadow_color;
}
//阴影透明度
private _shadow_opa:number;
public set shadowOpa(shadow_opa : number){
if(shadow_opa < 0){
this._shadow_opa = 0;
}else if(shadow_opa > 255){
this._shadow_opa = 255;
}else{
this._shadow_opa = shadow_opa;
}
Module.lv_style_set_shadow_opa(this.style, this._shadow_opa)
}
public get shadowOpa():number{
return this._shadow_opa;
}
//阴影水平偏移
private _shadow_ofs_x:number;
public set shadowOfsX(shadow_ofs_x:number){
this._shadow_ofs_x = shadow_ofs_x;
Module.lv_style_set_shadow_ofs_x(this.style,this._shadow_ofs_x);
}
public get shadowOfsX():number{
return this._shadow_ofs_x;
}
//阴影垂直偏移
private _shadow_ofs_y:number;
public set shadowOfsY(shadow_ofs_y:number){
this._shadow_ofs_y = shadow_ofs_y;
Module.lv_style_set_shadow_ofs_y(this.style,this._shadow_ofs_y);
}
public get shadowOfsY():number{
return this._shadow_ofs_y;
}
//阴影扩散宽度
private _shadow_spread:number;
public set shadowSpread(shadow_spread:number){
this._shadow_spread = shadow_spread;;
Module.lv_style_set_shadow_spread(this.style,this._shadow_spread);
}
public get shadowSpread(){
return this._shadow_spread;
}
//阴影宽度
private _shadow_width:number;
public set shadowWidth(shadow_width:number){
this._shadow_width = shadow_width;
Module.lv_style_set_shadow_width(this.style,this._shadow_width);
}
public get shadowWidth(){
return this._shadow_width;
}
/**blend */
//混合模式
private _blend_mode:number;
public set blendMode(blend_mode : number){
this._blend_mode = blend_mode;
Module.lv_style_set_blend_mode(this.style,this._blend_mode);
}
public get blendMode():{[key:string]:number}{
if(this._blend_mode == 0) return {["LV_BLEND_MODE_NORMAL"]:0};
else if(this._blend_mode == 1) return {["LV_BLEND_MODE_ADDITIVE"]:0};
else if(this._blend_mode == 2) return {["LV_BLEND_MODE_SUBTRACTIVE"]:0};
return {};
}
//混合透明度
private _blend_opa:number;
public set blendOpa(o:number){
if(o<0) this._blend_opa = 0;
else if(o>255) this._blend_opa = 255;
else this._blend_opa = o;
Module.lv_style_set_bg_opa(this.style,this._blend_opa);
Module.lv_style_set_bg_img_opa(this.style,this._blend_opa);
Module.lv_style_set_border_opa(this.style,this._blend_opa);
Module.lv_style_set_outline_opa(this.style,this._blend_opa);
Module.lv_style_set_shadow_opa(this.style,this._blend_opa);
}
public get blendOpa():number{
return this._blend_opa;
}
/**padding */
//上方内边距
private _pad_top:number;
public set padTop(pad_top:number){
this._pad_top = pad_top;
Module.lv_style_set_pad_top(this.style,this._pad_top);
}
public get padTop():number{
return this._pad_top;
}
//下方内边距
private _pad_bottom:number;
public set padBottom(pad_bottom:number){
this._pad_bottom = pad_bottom;
Module.lv_style_set_pad_bottom(this.style,this._pad_bottom);
}
public get padBottom():number{
return this._pad_bottom;
}
//左侧内边距
private _pad_left:number;
public set padLeft(pad_left:number){
this._pad_left = pad_left;
Module.lv_style_set_pad_left(this.style,this._pad_left);
}
public get padLeft():number{
return this._pad_left;
}
//右侧内边距
private _pad_right:number;
public set padRight(pad_right:number){
this._pad_right = pad_right;
Module.lv_style_set_pad_right(this.style,this._pad_right);
}
public get padRight():number{
return this._pad_right;
}
//行内边距
private _pad_row:number;
public set padRow(pad_row:number){
this._pad_row = pad_row;
Module.lv_style_set_pad_row(this.style,this._pad_row);
}
public get padRow():number{
return this._pad_row;
}
//列内边距
private _pad_column:number;
public set padColumn(pad_column:number){
this._pad_column = pad_column;
Module.lv_style_set_pad_column(this.style,this._pad_column);
}
public get padColumn():number{
return this._pad_column;
}
}
/*arc的style */
export class LVGL_ARC_STYLE{
}
/*创建基类 */
export class LVGL_OBJ{
public obj :number;
public Flag :LVGL_FLAG;
public State :LVGL_STATE;
public Pos :LVGL_POS;
public Size :LVGL_SIZE;
public Align :LVGL_ALIGN;
public Flex :LVGL_FLEX;
constructor(public parent:number|undefined = Module.lv_scr_act()){
this.obj = Module.lv_obj_create(parent);
this.Flag = new LVGL_FLAG (this.obj);
this.State = new LVGL_STATE (this.obj);
this.Pos = new LVGL_POS (this.obj);
this.Size = new LVGL_SIZE (this.obj);
this.Align = new LVGL_ALIGN (this.obj);
this.Flex = new LVGL_FLEX (this.obj);
}
/**基础对象obj的方法... */
//设置样式
public setStyle(style:LVGL_STYLE,part:number){
Module.lv_obj_add_style(this.obj,style,part);
}
}
/*创建子类*/
export class LVGL_ARC extends LVGL_OBJ{ //error:找不到arc的相关函数
constructor(public parent:number|undefined = Module.lv_scr_act()){
super(parent);
this.obj = Module.lv_arc_create(parent);
}
/**arc特有的方法... */
//设置圆弧的起始终止角度
private _start_angle:number;
private _end_angle:number;
public setStartAngle(a:number){
this._start_angle =a;
Module.lv_arc_set_start_angle(this.obj,this._start_angle);
}
public getStartAngle():{[key:string]:number}{
return {"start_angle":this._start_angle};
}
public setEndAngle(a:number){
this._end_angle =a;
Module.lv_arc_set_start_angle(this.obj,this._end_angle);
}
public getEndAngle():{[key:string]:number}{
return {"end_angle":this._end_angle};
}
public setAngles(a:number,b:number){
this._start_angle = a;
this._end_angle = b;
Module.lv_arc_set_angles(this.obj,this._start_angle,this._end_angle);
}
public getAngles():{[key:string]:number}{
return {
"start_angle":this._start_angle,
"end_angle":this._end_angle
};
}
//设置圆弧背景起始终止角度
private _bg_start_angle:number;
private _bg_end_angle:number;
public setBgStartAngle(a:number){
this._bg_start_angle =a;
Module.lv_arc_set_bg_start_angle(this.obj,this._bg_start_angle);
}
public getBgStartAngle():{[key:string]:number}{
return {"start_angle":this._bg_start_angle};
}
public setBgEndAngle(a:number){
this._bg_end_angle =a;
Module.lv_arc_set_start_angle(this.obj,this._bg_end_angle);
}
public getBgEndAngle():{[key:string]:number}{
return {"bg_end_angle":this._bg_end_angle};
}
public setBgAngles(a:number,b:number){
this._bg_start_angle = a;
this._bg_end_angle = b;
Module.lv_arc_set_bg_angles(this.obj,this._bg_start_angle,this._bg_end_angle);
}
public getBgAngles():{[key:string]:number}{
return {
"bg_start_angle":this._start_angle,
"bg_end_angle":this._end_angle
};
}
//设置圆弧模式
public _mode:number;
public set Mode(m:number){
if(m == 0 || m == 1 || m == 2){
this._mode = m;
Module.lv_arc_set_mode(this.obj,this._mode);
}
}
public get Mode():{[key:string]:number}{
if(this._mode == 0) return { "LV_ARC_MODE_NORMAL":0 };
else if(this._mode == 1) return {"LV_ARC_MODE_SYMMETRICAL":1};
else if(this._mode == 2) return {"LV_ARC_MODE_REVERSE":2};
else return {};
}
//设置圆弧旋转角度
public _rotation:number;
public set Rotation(r:number){
this._rotation = r;
Module.lv_arc_set_rotation(this.obj,this._rotation);
}
public get Rotation():number{
return this._rotation;
}
//设置当前值
private _value:number;
public set Value(n:number){
this._value = n;
Module.lv_arc_set_value(this.obj,this._value);
}
public get Value():number{
return this._value;
}
//设置弧度取值范围
private _min:number;
private _max:number;
public setRange(a:number,b:number){
this._min =a;
this._max = b;
Module.lv_arc_set_range(this.obj,this._min,this._max);
}
public getRange():{[key:string]:number}{
return {
"min_value":this._min,
"max_value":this._max
}
}
}
export class LVGL_BTN extends LVGL_OBJ{
constructor(public parent:number|undefined = Module.lv_scr_act()){
super(parent);
this.obj = Module.lv_btn_create(parent);
}
/**btn特有的方法... */
}
/**示例 */
/*
const btn = new LVGL_BTN();
btn.Flag.Hidden = true;
btn.State.Default = true;
btn.Pos.Set_XY(200,200);
btn.Pos.X = 20;
btn.Size.Set_WH(480,320);
btn.Align.Center();
btn.Align.base_obj = 123;
btn.Align.alignTo(0,btn.Align.base_obj);
btn.Flex.setAlign(1,2,3);
console.log(btn.Flag.Hidden);
console.log(btn.Size.Get_WH());
const btn_style = new LVGL_STYLE();
btn.setStyle(btn_style,Module.LV_PART_MAIN);
.
*/