Positioning related methods
This commit is contained in:
parent
df8b8b4277
commit
f8f84002c6
1 changed files with 155 additions and 16 deletions
171
lvgl/src/objx.rs
171
lvgl/src/objx.rs
|
@ -14,6 +14,79 @@ impl Object {
|
||||||
pub(crate) fn new(raw: ptr::NonNull<lvgl_sys::lv_obj_t>) -> Self {
|
pub(crate) fn new(raw: ptr::NonNull<lvgl_sys::lv_obj_t>) -> Self {
|
||||||
Self { raw }
|
Self { raw }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn set_pos(&mut self, x: i16, y: i16) {
|
||||||
|
unsafe {
|
||||||
|
lvgl_sys::lv_obj_set_pos(
|
||||||
|
self.raw().as_mut(),
|
||||||
|
x as lvgl_sys::lv_coord_t,
|
||||||
|
y as lvgl_sys::lv_coord_t,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_size(&mut self, w: i16, h: i16) {
|
||||||
|
unsafe {
|
||||||
|
lvgl_sys::lv_obj_set_size(
|
||||||
|
self.raw().as_mut(),
|
||||||
|
w as lvgl_sys::lv_coord_t,
|
||||||
|
h as lvgl_sys::lv_coord_t,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_width(&mut self, w: u32) {
|
||||||
|
unsafe {
|
||||||
|
lvgl_sys::lv_obj_set_width(
|
||||||
|
self.raw().as_mut(),
|
||||||
|
w as lvgl_sys::lv_coord_t,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_height(&mut self, h: u32) {
|
||||||
|
unsafe {
|
||||||
|
lvgl_sys::lv_obj_set_height(
|
||||||
|
self.raw().as_mut(),
|
||||||
|
h as lvgl_sys::lv_coord_t,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_object_align(&mut self, base: &mut dyn Container, align: ObjectAlign, x_mod: i32, y_mod: i32) {
|
||||||
|
let align= match align {
|
||||||
|
ObjectAlign::Center => lvgl_sys::LV_ALIGN_CENTER,
|
||||||
|
ObjectAlign::InTopLeft => lvgl_sys::LV_ALIGN_IN_TOP_LEFT,
|
||||||
|
ObjectAlign::InTopMid => lvgl_sys::LV_ALIGN_IN_TOP_MID,
|
||||||
|
ObjectAlign::InTopRight => lvgl_sys::LV_ALIGN_IN_TOP_RIGHT,
|
||||||
|
ObjectAlign::InBottomLeft => lvgl_sys::LV_ALIGN_IN_BOTTOM_LEFT,
|
||||||
|
ObjectAlign::InBottomMid => lvgl_sys::LV_ALIGN_IN_BOTTOM_MID,
|
||||||
|
ObjectAlign::InBottomRight => lvgl_sys::LV_ALIGN_IN_BOTTOM_RIGHT,
|
||||||
|
ObjectAlign::InLeftMid => lvgl_sys::LV_ALIGN_IN_LEFT_MID,
|
||||||
|
ObjectAlign::InRightMid => lvgl_sys::LV_ALIGN_IN_RIGHT_MID,
|
||||||
|
ObjectAlign::OutTopLeft => lvgl_sys::LV_ALIGN_OUT_TOP_LEFT,
|
||||||
|
ObjectAlign::OutTopMid => lvgl_sys::LV_ALIGN_OUT_TOP_MID,
|
||||||
|
ObjectAlign::OutTopRight => lvgl_sys::LV_ALIGN_OUT_TOP_RIGHT,
|
||||||
|
ObjectAlign::OutBottomLeft => lvgl_sys::LV_ALIGN_OUT_BOTTOM_LEFT,
|
||||||
|
ObjectAlign::OutBottomMid => lvgl_sys::LV_ALIGN_OUT_BOTTOM_MID,
|
||||||
|
ObjectAlign::OutBottomRight => lvgl_sys::LV_ALIGN_OUT_BOTTOM_RIGHT,
|
||||||
|
ObjectAlign::OutLeftTop => lvgl_sys::LV_ALIGN_OUT_LEFT_TOP,
|
||||||
|
ObjectAlign::OutLeftMid => lvgl_sys::LV_ALIGN_OUT_LEFT_MID,
|
||||||
|
ObjectAlign::OutLeftBottom => lvgl_sys::LV_ALIGN_OUT_LEFT_BOTTOM,
|
||||||
|
ObjectAlign::OutRightTop => lvgl_sys::LV_ALIGN_OUT_RIGHT_TOP,
|
||||||
|
ObjectAlign::OutRightMid => lvgl_sys::LV_ALIGN_OUT_RIGHT_MID,
|
||||||
|
ObjectAlign::OutRightBottom => lvgl_sys::LV_ALIGN_OUT_RIGHT_BOTTOM,
|
||||||
|
} as lvgl_sys::lv_align_t;
|
||||||
|
unsafe {
|
||||||
|
lvgl_sys::lv_obj_align(
|
||||||
|
self.raw().as_mut(),
|
||||||
|
base.raw().as_mut(),
|
||||||
|
align,
|
||||||
|
x_mod as lvgl_sys::lv_coord_t,
|
||||||
|
y_mod as lvgl_sys::lv_coord_t
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Container for Object {
|
impl Container for Object {
|
||||||
|
@ -22,6 +95,30 @@ impl Container for Object {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub enum ObjectAlign {
|
||||||
|
Center,
|
||||||
|
InTopLeft,
|
||||||
|
InTopMid,
|
||||||
|
InTopRight,
|
||||||
|
InBottomLeft,
|
||||||
|
InBottomMid,
|
||||||
|
InBottomRight,
|
||||||
|
InLeftMid,
|
||||||
|
InRightMid,
|
||||||
|
OutTopLeft,
|
||||||
|
OutTopMid,
|
||||||
|
OutTopRight,
|
||||||
|
OutBottomLeft,
|
||||||
|
OutBottomMid,
|
||||||
|
OutBottomRight,
|
||||||
|
OutLeftTop,
|
||||||
|
OutLeftMid,
|
||||||
|
OutLeftBottom,
|
||||||
|
OutRightTop,
|
||||||
|
OutRightMid,
|
||||||
|
OutRightBottom,
|
||||||
|
}
|
||||||
|
|
||||||
pub struct Button {
|
pub struct Button {
|
||||||
core: Object,
|
core: Object,
|
||||||
}
|
}
|
||||||
|
@ -36,24 +133,24 @@ impl Button {
|
||||||
Self { core }
|
Self { core }
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_pos(&mut self, x: u16, y: u16) {
|
pub fn set_pos(&mut self, x: i16, y: i16) {
|
||||||
unsafe {
|
self.core.set_pos(x, y)
|
||||||
lvgl_sys::lv_obj_set_pos(
|
|
||||||
self.raw().as_mut(),
|
|
||||||
x as lvgl_sys::lv_coord_t,
|
|
||||||
y as lvgl_sys::lv_coord_t,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_size(&mut self, w: u16, h: u16) {
|
pub fn set_size(&mut self, w: i16, h: i16) {
|
||||||
unsafe {
|
self.core.set_size(w, h)
|
||||||
lvgl_sys::lv_obj_set_size(
|
}
|
||||||
self.raw().as_mut(),
|
|
||||||
w as lvgl_sys::lv_coord_t,
|
pub fn set_width(&mut self, w: u32) {
|
||||||
h as lvgl_sys::lv_coord_t,
|
self.core.set_width(w)
|
||||||
);
|
}
|
||||||
}
|
|
||||||
|
pub fn set_height(&mut self, h: u32) {
|
||||||
|
self.core.set_height(h)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_object_align(&mut self, base: &mut dyn Container, align: ObjectAlign, x_mod: i32, y_mod: i32) {
|
||||||
|
self.core.set_object_align(base, align, x_mod, y_mod);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -63,6 +160,13 @@ impl Container for Button {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub enum LabelAlign {
|
||||||
|
Left,
|
||||||
|
Center,
|
||||||
|
Right,
|
||||||
|
Auto,
|
||||||
|
}
|
||||||
|
|
||||||
pub struct Label {
|
pub struct Label {
|
||||||
core: Object,
|
core: Object,
|
||||||
}
|
}
|
||||||
|
@ -85,6 +189,41 @@ impl Label {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn set_align(&mut self, align: LabelAlign) {
|
||||||
|
let align = match align {
|
||||||
|
LabelAlign::Left => lvgl_sys::LV_LABEL_ALIGN_LEFT,
|
||||||
|
LabelAlign::Center => lvgl_sys::LV_LABEL_ALIGN_CENTER,
|
||||||
|
LabelAlign::Right => lvgl_sys::LV_LABEL_ALIGN_RIGHT,
|
||||||
|
LabelAlign::Auto => lvgl_sys::LV_LABEL_ALIGN_AUTO,
|
||||||
|
} as lvgl_sys::lv_label_align_t;
|
||||||
|
unsafe {
|
||||||
|
lvgl_sys::lv_label_set_align(
|
||||||
|
self.core.raw().as_mut(),
|
||||||
|
align
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_pos(&mut self, x: i16, y: i16) {
|
||||||
|
self.core.set_pos(x, y)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_size(&mut self, w: i16, h: i16) {
|
||||||
|
self.core.set_size(w, h)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_width(&mut self, w: u32) {
|
||||||
|
self.core.set_width(w)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_height(&mut self, h: u32) {
|
||||||
|
self.core.set_height(h)
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn set_object_align(&mut self, base: &mut dyn Container, align: ObjectAlign, x_mod: i32, y_mod: i32) {
|
||||||
|
self.core.set_object_align(base, align, x_mod, y_mod);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Container for Label {
|
impl Container for Label {
|
||||||
|
|
Loading…
Reference in a new issue