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); .。,, */