Use Opacity type
This commit is contained in:
parent
3788b4c66b
commit
66d98430d8
3 changed files with 61 additions and 41 deletions
|
@ -49,10 +49,6 @@ fn main() -> Result<(), String> {
|
||||||
time.set_height(240);
|
time.set_height(240);
|
||||||
|
|
||||||
let mut bt = Label::new(&mut screen);
|
let mut bt = Label::new(&mut screen);
|
||||||
let mut style_bt = Style::default();
|
|
||||||
//style_bt.set_text_font(font_roboto_28);
|
|
||||||
let style_power = style_bt.clone();
|
|
||||||
bt.add_style(ObjPart::Main, style_bt);
|
|
||||||
bt.set_width(50);
|
bt.set_width(50);
|
||||||
bt.set_height(80);
|
bt.set_height(80);
|
||||||
bt.set_recolor(true);
|
bt.set_recolor(true);
|
||||||
|
@ -61,7 +57,6 @@ fn main() -> Result<(), String> {
|
||||||
bt.set_align(&mut screen, Align::InTopLeft, 0, 0);
|
bt.set_align(&mut screen, Align::InTopLeft, 0, 0);
|
||||||
|
|
||||||
let mut power = Label::new(&mut screen);
|
let mut power = Label::new(&mut screen);
|
||||||
power.add_style(ObjPart::Main, style_power);
|
|
||||||
power.set_recolor(true);
|
power.set_recolor(true);
|
||||||
power.set_width(80);
|
power.set_width(80);
|
||||||
power.set_height(20);
|
power.set_height(20);
|
||||||
|
|
|
@ -7,7 +7,7 @@ pub fn set_{{func_name}}(&mut self, state: State,
|
||||||
{% elif style_type == "_ptr" %}
|
{% elif style_type == "_ptr" %}
|
||||||
value: Any
|
value: Any
|
||||||
{% elif style_type == "_opa" %}
|
{% elif style_type == "_opa" %}
|
||||||
value: u8
|
value: Opacity
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
) {
|
) {
|
||||||
|
@ -23,7 +23,7 @@ pub fn set_{{func_name}}(&mut self, state: State,
|
||||||
{% elif style_type == "_int" %}
|
{% elif style_type == "_int" %}
|
||||||
value
|
value
|
||||||
{% elif style_type == "_opa" %}
|
{% elif style_type == "_opa" %}
|
||||||
value
|
value.into()
|
||||||
{% elif style_type == "_ptr" %}
|
{% elif style_type == "_ptr" %}
|
||||||
value.into()
|
value.into()
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
|
@ -2,7 +2,6 @@ use crate::{Color, State};
|
||||||
use alloc::boxed::Box;
|
use alloc::boxed::Box;
|
||||||
use core::mem;
|
use core::mem;
|
||||||
use cstr_core::CString;
|
use cstr_core::CString;
|
||||||
use lvgl_sys;
|
|
||||||
|
|
||||||
pub enum Themes {
|
pub enum Themes {
|
||||||
Pretty,
|
Pretty,
|
||||||
|
@ -25,6 +24,20 @@ impl Style {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn set_font(&mut self, state: State, value: &str) {
|
||||||
|
let native_state: u32 = state.get_bits();
|
||||||
|
let string = CString::new(value).unwrap();
|
||||||
|
unsafe {
|
||||||
|
lvgl_sys::LV_OPA_COVER;
|
||||||
|
lvgl_sys::_lv_style_set_ptr(
|
||||||
|
self.raw.as_mut(),
|
||||||
|
(lvgl_sys::LV_STYLE_VALUE_STR
|
||||||
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
|
string.into_raw() as *mut cty::c_void,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Default for Style {
|
impl Default for Style {
|
||||||
|
@ -38,15 +51,27 @@ impl Default for Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Clone for Style {
|
bitflags! {
|
||||||
fn clone(&self) -> Self {
|
pub struct Opacity: u32 {
|
||||||
let mut native_style = mem::MaybeUninit::<lvgl_sys::lv_style_t>::uninit();
|
const OPA_TRANSP = lvgl_sys::LV_OPA_TRANSP;
|
||||||
unsafe {
|
const OPA_0 = lvgl_sys::LV_OPA_0;
|
||||||
lvgl_sys::lv_style_copy(native_style.as_mut_ptr(), self.raw.as_ref());
|
const OPA_10 = lvgl_sys::LV_OPA_10;
|
||||||
Self {
|
const OPA_20 = lvgl_sys::LV_OPA_20;
|
||||||
raw: Box::new(native_style.assume_init()),
|
const OPA_30 = lvgl_sys::LV_OPA_30;
|
||||||
|
const OPA_40 = lvgl_sys::LV_OPA_40;
|
||||||
|
const OPA_50 = lvgl_sys::LV_OPA_50;
|
||||||
|
const OPA_60 = lvgl_sys::LV_OPA_60;
|
||||||
|
const OPA_70 = lvgl_sys::LV_OPA_70;
|
||||||
|
const OPA_80 = lvgl_sys::LV_OPA_80;
|
||||||
|
const OPA_90 = lvgl_sys::LV_OPA_90;
|
||||||
|
const OPA_100 = lvgl_sys::LV_OPA_100;
|
||||||
|
const OPA_COVER = lvgl_sys::LV_OPA_COVER;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl Into<u8> for Opacity {
|
||||||
|
fn into(self) -> u8 {
|
||||||
|
self.bits as u8
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,14 +258,14 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_opa_scale(&mut self, state: State, value: u8) {
|
pub fn set_opa_scale(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_OPA_SCALE
|
(lvgl_sys::LV_STYLE_OPA_SCALE
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -425,14 +450,14 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_bg_opa(&mut self, state: State, value: u8) {
|
pub fn set_bg_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_BG_OPA | (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32))
|
(lvgl_sys::LV_STYLE_BG_OPA | (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32))
|
||||||
as u16,
|
as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -497,14 +522,14 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_border_opa(&mut self, state: State, value: u8) {
|
pub fn set_border_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_BORDER_OPA
|
(lvgl_sys::LV_STYLE_BORDER_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -557,14 +582,14 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_outline_opa(&mut self, state: State, value: u8) {
|
pub fn set_outline_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_OUTLINE_OPA
|
(lvgl_sys::LV_STYLE_OUTLINE_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -641,14 +666,14 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_shadow_opa(&mut self, state: State, value: u8) {
|
pub fn set_shadow_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_SHADOW_OPA
|
(lvgl_sys::LV_STYLE_SHADOW_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -689,26 +714,26 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_pattern_opa(&mut self, state: State, value: u8) {
|
pub fn set_pattern_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_PATTERN_OPA
|
(lvgl_sys::LV_STYLE_PATTERN_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_pattern_recolor_opa(&mut self, state: State, value: u8) {
|
pub fn set_pattern_recolor_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_PATTERN_RECOLOR_OPA
|
(lvgl_sys::LV_STYLE_PATTERN_RECOLOR_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -797,14 +822,14 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_value_opa(&mut self, state: State, value: u8) {
|
pub fn set_value_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_VALUE_OPA
|
(lvgl_sys::LV_STYLE_VALUE_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -881,14 +906,14 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_text_opa(&mut self, state: State, value: u8) {
|
pub fn set_text_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_TEXT_OPA
|
(lvgl_sys::LV_STYLE_TEXT_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -965,14 +990,14 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_line_opa(&mut self, state: State, value: u8) {
|
pub fn set_line_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_LINE_OPA
|
(lvgl_sys::LV_STYLE_LINE_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1001,26 +1026,26 @@ impl Style {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_image_opa(&mut self, state: State, value: u8) {
|
pub fn set_image_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_IMAGE_OPA
|
(lvgl_sys::LV_STYLE_IMAGE_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn set_image_recolor_opa(&mut self, state: State, value: u8) {
|
pub fn set_image_recolor_opa(&mut self, state: State, value: Opacity) {
|
||||||
let native_state: u32 = state.get_bits();
|
let native_state: u32 = state.get_bits();
|
||||||
unsafe {
|
unsafe {
|
||||||
lvgl_sys::_lv_style_set_opa(
|
lvgl_sys::_lv_style_set_opa(
|
||||||
self.raw.as_mut(),
|
self.raw.as_mut(),
|
||||||
(lvgl_sys::LV_STYLE_IMAGE_RECOLOR_OPA
|
(lvgl_sys::LV_STYLE_IMAGE_RECOLOR_OPA
|
||||||
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
| (native_state << lvgl_sys::LV_STYLE_STATE_POS as u32)) as u16,
|
||||||
value,
|
value.into(),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue