mirror of
https://github.com/HASwitchPlate/openHASP.git
synced 2025-07-28 13:46:36 +00:00
Update hasp_attributes with hash function
This commit is contained in:
parent
2463853d3f
commit
3267bd3112
38
src/hasp.cpp
38
src/hasp.cpp
@ -250,44 +250,6 @@ static inline void hasp_send_obj_attribute_txt(lv_obj_t * obj, const char * txt)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
bool check_obj_type(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype)
|
||||
{
|
||||
lvobjtype += 3; // skip "lv_"
|
||||
|
||||
switch(haspobjtype) {
|
||||
case LV_HASP_BUTTON:
|
||||
return (strcmp_P(lvobjtype, PSTR("btn")) == 0);
|
||||
case LV_HASP_LABEL:
|
||||
return (strcmp_P(lvobjtype, PSTR("label")) == 0);
|
||||
case LV_HASP_CHECKBOX:
|
||||
return (strcmp_P(lvobjtype, PSTR("checkbox")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_cb")) == 0);
|
||||
case LV_HASP_DDLIST:
|
||||
return (strcmp_P(lvobjtype, PSTR("dropdown")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_ddlist")) == 0);
|
||||
case LV_HASP_CPICKER:
|
||||
return (strcmp_P(lvobjtype, PSTR("cpicker")) == 0);
|
||||
case LV_HASP_PRELOADER:
|
||||
return (strcmp_P(lvobjtype, PSTR("spinner")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_preload")) == 0);
|
||||
case LV_HASP_SLIDER:
|
||||
return (strcmp_P(lvobjtype, PSTR("slider")) == 0);
|
||||
case LV_HASP_GAUGE:
|
||||
return (strcmp_P(lvobjtype, PSTR("gauge")) == 0);
|
||||
case LV_HASP_BAR:
|
||||
return (strcmp_P(lvobjtype, PSTR("bar")) == 0);
|
||||
case LV_HASP_LMETER:
|
||||
return (strcmp_P(lvobjtype, PSTR("linemeter")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_lmeter")) == 0)
|
||||
case LV_HASP_ROLLER:
|
||||
return (strcmp_P(lvobjtype, PSTR("roller")) == 0);
|
||||
case LV_HASP_SWITCH:
|
||||
return (strcmp_P(lvobjtype, PSTR("switch")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_sw")) == 0)
|
||||
case LV_HASP_LED:
|
||||
return (strcmp_P(lvobjtype, PSTR("led")) == 0);
|
||||
case LV_HASP_CONTAINER:
|
||||
return (strcmp_P(lvobjtype, PSTR("container")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_cont")) == 0)
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
// Used in the dispatcher
|
||||
void hasp_process_attribute(uint8_t pageid, uint8_t objid, const char * attr, const char * payload)
|
||||
{
|
||||
|
@ -86,7 +86,6 @@ void haspWakeUp(void);
|
||||
bool haspGetConfig(const JsonObject & settings);
|
||||
bool haspSetConfig(const JsonObject & settings);
|
||||
|
||||
bool check_obj_type(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype);
|
||||
lv_obj_t * hasp_find_obj_from_id(lv_obj_t * parent, uint8_t objid);
|
||||
|
||||
void IRAM_ATTR btn_event_handler(lv_obj_t * obj, lv_event_t event);
|
||||
|
@ -1,8 +1,6 @@
|
||||
#include "Arduino.h"
|
||||
#include "ArduinoLog.h"
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "hasp.h"
|
||||
#include "hasp_attribute.h"
|
||||
//#include "hasp_attr_get.h"
|
||||
|
||||
#define LVGL7 1
|
||||
|
@ -1,5 +1,5 @@
|
||||
#include "ArduinoLog.h"
|
||||
#include "ArduinoJson.h"
|
||||
#include "ArduinoLog.h"
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "lv_conf.h"
|
||||
@ -13,12 +13,22 @@ extern lv_font_t * haspFonts[8];
|
||||
|
||||
static inline bool is_true(const char * s);
|
||||
static inline bool only_digits(const char * s);
|
||||
static inline void hasp_out_int(lv_obj_t * obj, const char * attr, uint32_t val);
|
||||
static inline void hasp_out_str(lv_obj_t * obj, const char * attr, const char * data);
|
||||
static inline void hasp_out_color(lv_obj_t * obj, const char * attr, lv_color_t color);
|
||||
|
||||
// this function is missing in lvgl
|
||||
// OK
|
||||
/* 16-bit hashing function http://www.cse.yorku.ca/~oz/hash.html */
|
||||
static uint16_t sdbm(const char * str)
|
||||
{
|
||||
uint16_t hash = 0;
|
||||
char c;
|
||||
|
||||
// while(c = *str++) hash = c + (hash << 6) + (hash << 16) - hash;
|
||||
while(c = (*str++)) {
|
||||
hash = tolower(c) + (hash << 6) - hash;
|
||||
}
|
||||
|
||||
return hash;
|
||||
}
|
||||
|
||||
// OK - this function is missing in lvgl
|
||||
static uint8_t lv_roller_get_visible_row_count(lv_obj_t * roller)
|
||||
{
|
||||
const lv_font_t * font = lv_obj_get_style_text_font(roller, LV_ROLLER_PART_BG);
|
||||
@ -186,14 +196,138 @@ static inline bool haspGetLabelText(lv_obj_t * obj, char * text)
|
||||
return false;
|
||||
}
|
||||
|
||||
static void hasp_attribute_get_part_state(lv_obj_t * obj, const char * attr_in, char * attr_out, uint8_t & part,
|
||||
uint8_t & state)
|
||||
{
|
||||
int len = strlen(attr_in);
|
||||
if(len > 0 && len < 32) {
|
||||
// Check Trailing partnumber
|
||||
if(attr_in[len - 1] == '1') {
|
||||
part = LV_TABLE_PART_CELL1;
|
||||
} else if(attr_in[len - 1] == '2') {
|
||||
part = LV_TABLE_PART_CELL2;
|
||||
} else if(attr_in[len - 1] == '3') {
|
||||
part = LV_TABLE_PART_CELL3;
|
||||
} else if(attr_in[len - 1] == '4') {
|
||||
part = LV_TABLE_PART_CELL4;
|
||||
}
|
||||
|
||||
// Remove Trailing part digit
|
||||
char attr[128];
|
||||
if(part != LV_TABLE_PART_BG && len > 0) {
|
||||
len--;
|
||||
}
|
||||
strncpy(attr_out, attr_in, len + 1);
|
||||
attr_out[len] = 0;
|
||||
} else {
|
||||
attr_out[0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static void hasp_local_style_attr_bg(lv_obj_t * obj, const char * attr_p, const char * payload, bool update)
|
||||
{
|
||||
char attr[32];
|
||||
uint8_t part = LV_TABLE_PART_BG;
|
||||
uint8_t state = LV_STATE_DEFAULT;
|
||||
int16_t var = atoi(payload);
|
||||
|
||||
hasp_attribute_get_part_state(obj, attr_p, attr, part, state);
|
||||
|
||||
/* ***** WARNING ****************************************************
|
||||
* when using hasp_out use attr_p for the original attribute name
|
||||
* *************************************************************** */
|
||||
|
||||
if(!strcmp_P(attr, PSTR("bg_blend_mode")))
|
||||
return attribute_bg_blend_mode(obj, part, state, update, attr_p, (lv_blend_mode_t)var);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("bg_main_stop")))
|
||||
return attribute_bg_main_stop(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("bg_grad_stop")))
|
||||
return attribute_bg_grad_stop(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("bg_grad_dir")))
|
||||
return attribute_bg_grad_dir(obj, part, state, update, attr_p, (lv_grad_dir_t)var);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("bg_color"))) {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
if(part != 64)
|
||||
return lv_obj_set_style_local_bg_color(obj, part, state, color);
|
||||
else
|
||||
return lv_obj_set_style_local_bg_color(obj, LV_PAGE_PART_SCRL, LV_STATE_CHECKED, color);
|
||||
}
|
||||
if(!strcmp_P(attr, PSTR("bg_grad_color"))) {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_bg_grad_color(obj, part, state, color);
|
||||
}
|
||||
|
||||
if(!strcmp_P(attr, PSTR("bg_opa"))) return attribute_bg_opa(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
|
||||
Log.warning(F("HASP: Unknown property %s"), attr_p);
|
||||
}
|
||||
|
||||
static void hasp_local_style_attr_pad(lv_obj_t * obj, const char * attr_p, const char * payload, bool update)
|
||||
{
|
||||
char attr[32];
|
||||
uint8_t part = LV_TABLE_PART_BG;
|
||||
uint8_t state = LV_STATE_DEFAULT;
|
||||
int16_t var = atoi(payload);
|
||||
|
||||
hasp_attribute_get_part_state(obj, attr_p, attr, part, state);
|
||||
|
||||
/* ***** WARNING ****************************************************
|
||||
* when using hasp_out use attr_p for the original attribute name
|
||||
* *************************************************************** */
|
||||
|
||||
if(!strcmp_P(attr, PSTR("pad_top")))
|
||||
return attribute_pad_top(obj, part, state, update, attr_p, (lv_blend_mode_t)var);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("pad_bottom")))
|
||||
return attribute_pad_bottom(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("pad_left")))
|
||||
return attribute_pad_left(obj, part, state, update, attr_p, (lv_style_int_t)var);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("pad_right")))
|
||||
return attribute_pad_right(obj, part, state, update, attr_p, (lv_grad_dir_t)var);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("pad_inner"))) {
|
||||
return attribute_pad_inner(obj, part, state, update, attr_p, (lv_opa_t)var);
|
||||
}
|
||||
|
||||
Log.warning(F("HASP: Unknown property %s"), attr_p);
|
||||
}
|
||||
|
||||
static void hasp_local_style_attr(lv_obj_t * obj, const char * attr_p, const char * payload, bool update)
|
||||
{
|
||||
|
||||
if(attr_p == strstr_P(attr_p, PSTR("bg_"))) { // startsWith command/
|
||||
return hasp_local_style_attr_bg(obj, attr_p, payload, update);
|
||||
|
||||
} else if(attr_p == strstr_P(attr_p, PSTR("pad_"))) {
|
||||
return hasp_local_style_attr_pad(obj, attr_p, payload, update);
|
||||
/* } else if(attr_p == strstr_P(attr_p, PSTR("text_"))) {
|
||||
return hasp_local_style_attr_text(obj, attr_p, payload, update);
|
||||
} else if(attr_p == strstr_P(attr_p, PSTR("line_"))) {
|
||||
return hasp_local_style_attr_line(obj, attr_p, payload, update);
|
||||
} else if(attr_p == strstr_P(attr_p, PSTR("value_"))) {
|
||||
return hasp_local_style_attr_value(obj, attr_p, payload, update);
|
||||
} else if(attr_p == strstr_P(attr_p, PSTR("border_"))) {
|
||||
return hasp_local_style_attr_border(obj, attr_p, payload, update);
|
||||
} else if(attr_p == strstr_P(attr_p, PSTR("shadow_"))) {
|
||||
return hasp_local_style_attr_shadow(obj, attr_p, payload, update);
|
||||
} else if(attr_p == strstr_P(attr_p, PSTR("outline_"))) {
|
||||
return hasp_local_style_attr_outline(obj, attr_p, payload, update);
|
||||
} else if(attr_p == strstr_P(attr_p, PSTR("pattern_"))) {
|
||||
return hasp_local_style_attr_pattern(obj, attr_p, payload, update);*/
|
||||
}
|
||||
|
||||
uint8_t part = LV_TABLE_PART_BG;
|
||||
uint8_t state = LV_STATE_DEFAULT;
|
||||
int16_t var = atoi(payload);
|
||||
|
||||
int len = strlen(attr_p);
|
||||
if(len > 0 && len < 128) {
|
||||
if(len > 0 && len < 32) {
|
||||
// Check Trailing partnumber
|
||||
if(attr_p[len - 1] == '1') {
|
||||
part = LV_TABLE_PART_CELL1;
|
||||
@ -208,7 +342,7 @@ static void hasp_local_style_attr(lv_obj_t * obj, const char * attr_p, const cha
|
||||
}
|
||||
|
||||
// Remove Trailing part digit
|
||||
char attr[128];
|
||||
char attr[32];
|
||||
if(part != LV_TABLE_PART_BG && len > 0) {
|
||||
len--;
|
||||
}
|
||||
@ -216,30 +350,19 @@ static void hasp_local_style_attr(lv_obj_t * obj, const char * attr_p, const cha
|
||||
attr[len] = 0;
|
||||
|
||||
// debugPrintln(strAttr + "&" + part);
|
||||
uint8_t t8 = 0;
|
||||
|
||||
/* ***** WARNING ****************************************************
|
||||
* when using hasp_out use attr_p for the original attribute name
|
||||
* *************************************************************** */
|
||||
|
||||
if(!strcmp_P(attr, PSTR("radius"))) {
|
||||
if(update) {
|
||||
return lv_obj_set_style_local_radius(obj, part, state, (lv_style_int_t)var);
|
||||
} else {
|
||||
lv_obj_get_style_local_radius(obj, part, state, &var);
|
||||
return hasp_out_int(obj, attr_p, var);
|
||||
}
|
||||
return attribute_radius(obj, part, state, update, attr_p, var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("clip_corner"))) {
|
||||
if(update) {
|
||||
return lv_obj_set_style_local_clip_corner(obj, part, state, (bool)var);
|
||||
} else {
|
||||
lv_obj_get_style_local_clip_corner(obj, part, state, &t8);
|
||||
return hasp_out_int(obj, attr_p, t8);
|
||||
}
|
||||
return attribute_clip_corner(obj, part, state, update, attr_p, var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("size"))) {
|
||||
return lv_obj_set_style_local_size(obj, part, state, (lv_style_int_t)var);
|
||||
return attribute_size(obj, part, state, update, attr_p, var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("transform_width"))) {
|
||||
return lv_obj_set_style_local_transform_width(obj, part, state, (lv_style_int_t)var);
|
||||
@ -250,44 +373,6 @@ static void hasp_local_style_attr(lv_obj_t * obj, const char * attr_p, const cha
|
||||
} else if(!strcmp_P(attr, PSTR("opa_scale"))) {
|
||||
return lv_obj_set_style_local_opa_scale(obj, part, state, (lv_opa_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("pad_top"))) {
|
||||
return lv_obj_set_style_local_pad_top(obj, part, state, (lv_style_int_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("pad_bottom"))) {
|
||||
return lv_obj_set_style_local_pad_bottom(obj, part, state, (lv_style_int_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("pad_left"))) {
|
||||
return lv_obj_set_style_local_pad_left(obj, part, state, (lv_style_int_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("pad_right"))) {
|
||||
return lv_obj_set_style_local_pad_right(obj, part, state, (lv_style_int_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("pad_inner"))) {
|
||||
return lv_obj_set_style_local_pad_inner(obj, part, state, (lv_style_int_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("bg_blend_mode"))) {
|
||||
return lv_obj_set_style_local_bg_blend_mode(obj, part, state, (lv_blend_mode_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("bg_main_stop"))) {
|
||||
return lv_obj_set_style_local_bg_main_stop(obj, part, state, (lv_style_int_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("bg_grad_stop"))) {
|
||||
return lv_obj_set_style_local_bg_grad_stop(obj, part, state, (lv_style_int_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("bg_grad_dir"))) {
|
||||
return lv_obj_set_style_local_bg_grad_dir(obj, part, state, (lv_grad_dir_t)var);
|
||||
|
||||
} else if(!strcmp_P(attr, PSTR("bg_color"))) {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
if(part != 64)
|
||||
return lv_obj_set_style_local_bg_color(obj, part, state, color);
|
||||
else
|
||||
return lv_obj_set_style_local_bg_color(obj, LV_PAGE_PART_SCRL, LV_STATE_CHECKED, color);
|
||||
} else if(!strcmp_P(attr, PSTR("bg_grad_color"))) {
|
||||
lv_color_t color = haspPayloadToColor(payload);
|
||||
return lv_obj_set_style_local_bg_grad_color(obj, part, state, color);
|
||||
} else if(!strcmp_P(attr, PSTR("bg_opa"))) {
|
||||
return lv_obj_set_style_local_bg_opa(obj, part, state, (lv_opa_t)var);
|
||||
} else if(!strcmp_P(attr, PSTR("border_width"))) {
|
||||
return lv_obj_set_style_local_border_width(obj, part, state, (lv_style_int_t)var);
|
||||
} else if(!strcmp_P(attr, PSTR("border_side"))) {
|
||||
@ -582,95 +667,69 @@ static void hasp_process_obj_attribute_range(lv_obj_t * obj, const char * attr,
|
||||
}
|
||||
|
||||
// OK
|
||||
static void hasp_process_obj_attribute1(lv_obj_t * obj, const char * attr, const char * payload, bool update)
|
||||
// @param update bool: change the value if true, dispatch value if false
|
||||
void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char * payload, bool update)
|
||||
{
|
||||
if(!obj) return Log.warning(F("HASP: Unknown object"));
|
||||
int16_t val = atoi(payload);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("x"))) {
|
||||
char * attr = (char *)attr_p;
|
||||
if(*attr == '.') attr++; // strip leading '.'
|
||||
|
||||
Log.trace("ATTR: %s => %d", attr, sdbm(attr));
|
||||
|
||||
/* 16-bit Hash Lookup Table */
|
||||
switch(sdbm(attr)) {
|
||||
case ATTR_X:
|
||||
return update ? lv_obj_set_x(obj, val) : hasp_out_int(obj, attr, lv_obj_get_x(obj));
|
||||
}
|
||||
if(!strcmp_P(attr, PSTR("y"))) {
|
||||
|
||||
case ATTR_Y:
|
||||
return update ? lv_obj_set_y(obj, val) : hasp_out_int(obj, attr, lv_obj_get_y(obj));
|
||||
}
|
||||
if(!strcmp_P(attr, PSTR("w"))) {
|
||||
|
||||
case ATTR_W:
|
||||
return update ? lv_obj_set_width(obj, val) : hasp_out_int(obj, attr, lv_obj_get_width(obj));
|
||||
}
|
||||
if(!strcmp_P(attr, PSTR("h"))) {
|
||||
|
||||
case ATTR_H:
|
||||
return update ? lv_obj_set_height(obj, val) : hasp_out_int(obj, attr, lv_obj_get_height(obj));
|
||||
}
|
||||
|
||||
hasp_local_style_attr(obj, attr, payload, update);
|
||||
}
|
||||
|
||||
// OK
|
||||
static void hasp_process_obj_attribute2(lv_obj_t * obj, const char * attr, const char * payload, bool update)
|
||||
{
|
||||
int16_t val = atoi(payload);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("id"))) {
|
||||
case ATTR_ID:
|
||||
return update ? (void)(obj->user_data = (uint8_t)val) : hasp_out_int(obj, attr, obj->user_data);
|
||||
}
|
||||
|
||||
hasp_local_style_attr(obj, attr, payload, update);
|
||||
}
|
||||
case ATTR_VIS:
|
||||
return update ? lv_obj_set_hidden(obj, !is_true(payload))
|
||||
: hasp_out_int(obj, attr, !lv_obj_get_hidden(obj));
|
||||
|
||||
// OK
|
||||
static void hasp_process_obj_attribute3(lv_obj_t * obj, const char * attr, const char * payload, bool update)
|
||||
{
|
||||
// int16_t val = atoi(payload);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("vis"))) {
|
||||
return update ? lv_obj_set_hidden(obj, !is_true(payload)) : hasp_out_int(obj, attr, !lv_obj_get_hidden(obj));
|
||||
}
|
||||
if(!strcmp_P(attr, PSTR("txt"))) { // In order of likelihood to occur
|
||||
case ATTR_TXT:
|
||||
return hasp_process_obj_attribute_txt(obj, attr, payload, update);
|
||||
}
|
||||
if(!strcmp_P(attr, PSTR("val"))) { // In order of likelihood to occur
|
||||
|
||||
case ATTR_VAL:
|
||||
return hasp_process_obj_attribute_val(obj, attr, payload, update);
|
||||
}
|
||||
if(!strcmp_P(attr, PSTR("min"))) { // In order of likelihood to occur
|
||||
|
||||
case ATTR_MIN:
|
||||
return hasp_process_obj_attribute_range(obj, attr, payload, update, true, false);
|
||||
}
|
||||
if(!strcmp_P(attr, PSTR("max"))) { // In order of likelihood to occur
|
||||
|
||||
case ATTR_MAX:
|
||||
return hasp_process_obj_attribute_range(obj, attr, payload, update, false, true);
|
||||
}
|
||||
|
||||
hasp_local_style_attr(obj, attr, payload, update);
|
||||
}
|
||||
case ATTR_HIDDEN:
|
||||
return update ? lv_obj_set_hidden(obj, is_true(payload)) : hasp_out_int(obj, attr, lv_obj_get_hidden(obj));
|
||||
|
||||
static void hasp_process_obj_attribute4(lv_obj_t * obj, const char * attr, const char * payload, bool update)
|
||||
{
|
||||
int16_t val = atoi(payload);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("rows"))) {
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(obj, &list);
|
||||
const char * objtype = list.type[0];
|
||||
|
||||
if(check_obj_type(objtype, LV_HASP_ROLLER)) {
|
||||
case ATTR_ROWS:
|
||||
if(check_obj_type(obj, LV_HASP_ROLLER)) {
|
||||
return update ? lv_roller_set_visible_row_count(obj, (uint8_t)val)
|
||||
: hasp_out_int(obj, attr, lv_roller_get_visible_row_count(obj));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
// if(!strcmp_P(attr, PSTR("page"))) {
|
||||
// return lv_obj_set_parent;
|
||||
// }
|
||||
|
||||
/* Attributes depending on objecttype */
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(obj, &list);
|
||||
const char * objtype = list.type[0];
|
||||
|
||||
if(!strcmp_P(attr, PSTR("rect"))) {
|
||||
if(check_obj_type(objtype, LV_HASP_CPICKER)) {
|
||||
case ATTR_RECT:
|
||||
if(check_obj_type(obj, LV_HASP_CPICKER)) {
|
||||
lv_cpicker_set_type(obj, is_true(payload) ? LV_CPICKER_TYPE_RECT : LV_CPICKER_TYPE_DISC);
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
if(!strcmp_P(attr, PSTR("mode"))) {
|
||||
if(check_obj_type(objtype, LV_HASP_BUTTON)) {
|
||||
case ATTR_MODE:
|
||||
if(check_obj_type(obj, LV_HASP_BUTTON)) {
|
||||
lv_obj_t * label = FindButtonLabel(obj);
|
||||
if(label) {
|
||||
hasp_process_label_long_mode(label, payload, update);
|
||||
@ -679,31 +738,14 @@ static void hasp_process_obj_attribute4(lv_obj_t * obj, const char * attr, const
|
||||
return;
|
||||
}
|
||||
|
||||
if(check_obj_type(objtype, LV_HASP_LABEL)) {
|
||||
if(check_obj_type(obj, LV_HASP_LABEL)) {
|
||||
hasp_process_label_long_mode(obj, payload, update);
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
hasp_local_style_attr(obj, attr, payload, update);
|
||||
}
|
||||
|
||||
// OK
|
||||
static void hasp_process_obj_attribute6(lv_obj_t * obj, const char * attr, const char * payload, bool update)
|
||||
{
|
||||
// int16_t val = atoi(payload);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("hidden"))) {
|
||||
return update ? lv_obj_set_hidden(obj, is_true(payload)) : hasp_out_int(obj, attr, lv_obj_get_hidden(obj));
|
||||
}
|
||||
|
||||
/* Attributes depending on objecttype */
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(obj, &list);
|
||||
const char * objtype = list.type[0];
|
||||
|
||||
if(!strcmp_P(attr, PSTR("toggle"))) {
|
||||
if(check_obj_type(objtype, LV_HASP_BUTTON)) {
|
||||
case ATTR_TOGGLE:
|
||||
if(check_obj_type(obj, LV_HASP_BUTTON)) {
|
||||
if(update) {
|
||||
bool toggle = is_true(payload);
|
||||
lv_btn_set_checkable(obj, toggle);
|
||||
@ -713,40 +755,26 @@ static void hasp_process_obj_attribute6(lv_obj_t * obj, const char * attr, const
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
break; // not a toggle object
|
||||
|
||||
hasp_local_style_attr(obj, attr, payload, update);
|
||||
}
|
||||
|
||||
// OK
|
||||
static void hasp_process_obj_attribute7(lv_obj_t * obj, const char * attr, const char * payload, bool update)
|
||||
{
|
||||
int16_t val = atoi(payload);
|
||||
|
||||
if(!strcmp_P(attr, PSTR("opacity"))) {
|
||||
case ATTR_OPACITY:
|
||||
return update ? lv_obj_set_style_local_opa_scale(obj, LV_OBJ_PART_MAIN, LV_STATE_DEFAULT, val)
|
||||
: hasp_out_int(obj, attr, lv_obj_get_style_opa_scale(obj, LV_OBJ_PART_MAIN));
|
||||
}
|
||||
|
||||
if(!strcmp_P(attr, PSTR("enabled"))) {
|
||||
case ATTR_ENABLED:
|
||||
return update ? lv_obj_set_click(obj, is_true(payload)) : hasp_out_int(obj, attr, lv_obj_get_click(obj));
|
||||
}
|
||||
|
||||
if(!strcmp_P(attr, PSTR("options"))) {
|
||||
/* Attributes depending on objecttype */
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(obj, &list);
|
||||
const char * objtype = list.type[0];
|
||||
|
||||
if(check_obj_type(objtype, LV_HASP_DDLIST)) {
|
||||
case ATTR_OPTIONS:
|
||||
if(check_obj_type(obj, LV_HASP_DDLIST)) {
|
||||
if(update) {
|
||||
lv_dropdown_set_options(obj, payload);
|
||||
} else {
|
||||
hasp_out_str(obj, attr, lv_dropdown_get_options(obj));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
} else if(check_obj_type(objtype, LV_HASP_ROLLER)) {
|
||||
if(check_obj_type(obj, LV_HASP_ROLLER)) {
|
||||
if(update) {
|
||||
lv_roller_ext_t * ext = (lv_roller_ext_t *)lv_obj_get_ext_attr(obj);
|
||||
lv_roller_set_options(obj, payload, ext->mode);
|
||||
@ -755,44 +783,15 @@ static void hasp_process_obj_attribute7(lv_obj_t * obj, const char * attr, const
|
||||
}
|
||||
return;
|
||||
}
|
||||
break; // not a options object
|
||||
|
||||
// default:
|
||||
// hasp_local_style_attr(obj, attr, payload, update);
|
||||
}
|
||||
|
||||
hasp_local_style_attr(obj, attr, payload, update);
|
||||
}
|
||||
|
||||
// OK
|
||||
// @param update bool: change the value if true, dispatch value if false
|
||||
void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char * payload, bool update)
|
||||
{
|
||||
if(!obj) return Log.warning(F("HASP: Unknown object"));
|
||||
|
||||
char * attr = (char *)attr_p;
|
||||
if(*attr == '.') attr++; // strip leading '.'
|
||||
|
||||
switch(strlen(attr)) {
|
||||
case 1:
|
||||
hasp_process_obj_attribute1(obj, attr, payload, update);
|
||||
break;
|
||||
case 2:
|
||||
hasp_process_obj_attribute2(obj, attr, payload, update);
|
||||
break;
|
||||
case 4:
|
||||
hasp_process_obj_attribute4(obj, attr, payload, update);
|
||||
break;
|
||||
case 3:
|
||||
hasp_process_obj_attribute3(obj, attr, payload, update);
|
||||
break;
|
||||
case 6:
|
||||
hasp_process_obj_attribute6(obj, attr, payload, update);
|
||||
break;
|
||||
case 7:
|
||||
hasp_process_obj_attribute7(obj, attr, payload, update);
|
||||
break;
|
||||
default:
|
||||
hasp_local_style_attr(obj, attr, payload, update); // all other lengths
|
||||
}
|
||||
}
|
||||
|
||||
/* **************************
|
||||
* Static Inline functions
|
||||
* **************************/
|
||||
@ -812,17 +811,63 @@ static inline bool only_digits(const char * s)
|
||||
return strlen(s) == digits;
|
||||
}
|
||||
|
||||
static inline void hasp_out_int(lv_obj_t * obj, const char * attr, uint32_t val)
|
||||
static void hasp_out_int(lv_obj_t * obj, const char * attr, uint32_t val)
|
||||
{
|
||||
hasp_send_obj_attribute_int(obj, attr, val);
|
||||
}
|
||||
|
||||
static inline void hasp_out_str(lv_obj_t * obj, const char * attr, const char * data)
|
||||
static void hasp_out_str(lv_obj_t * obj, const char * attr, const char * data)
|
||||
{
|
||||
hasp_send_obj_attribute_str(obj, attr, data);
|
||||
}
|
||||
|
||||
static inline void hasp_out_color(lv_obj_t * obj, const char * attr, lv_color_t color)
|
||||
static void hasp_out_color(lv_obj_t * obj, const char * attr, lv_color_t color)
|
||||
{
|
||||
hasp_send_obj_attribute_color(obj, attr, color);
|
||||
}
|
||||
|
||||
bool check_obj_type(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype)
|
||||
{
|
||||
lvobjtype += 3; // skip "lv_"
|
||||
|
||||
switch(haspobjtype) {
|
||||
case LV_HASP_BUTTON:
|
||||
return (strcmp_P(lvobjtype, PSTR("btn")) == 0);
|
||||
case LV_HASP_LABEL:
|
||||
return (strcmp_P(lvobjtype, PSTR("label")) == 0);
|
||||
case LV_HASP_CHECKBOX:
|
||||
return (strcmp_P(lvobjtype, PSTR("checkbox")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_cb")) == 0);
|
||||
case LV_HASP_DDLIST:
|
||||
return (strcmp_P(lvobjtype, PSTR("dropdown")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_ddlist")) == 0);
|
||||
case LV_HASP_CPICKER:
|
||||
return (strcmp_P(lvobjtype, PSTR("cpicker")) == 0);
|
||||
case LV_HASP_PRELOADER:
|
||||
return (strcmp_P(lvobjtype, PSTR("spinner")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_preload")) == 0);
|
||||
case LV_HASP_SLIDER:
|
||||
return (strcmp_P(lvobjtype, PSTR("slider")) == 0);
|
||||
case LV_HASP_GAUGE:
|
||||
return (strcmp_P(lvobjtype, PSTR("gauge")) == 0);
|
||||
case LV_HASP_BAR:
|
||||
return (strcmp_P(lvobjtype, PSTR("bar")) == 0);
|
||||
case LV_HASP_LMETER:
|
||||
return (strcmp_P(lvobjtype, PSTR("linemeter")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_lmeter")) == 0)
|
||||
case LV_HASP_ROLLER:
|
||||
return (strcmp_P(lvobjtype, PSTR("roller")) == 0);
|
||||
case LV_HASP_SWITCH:
|
||||
return (strcmp_P(lvobjtype, PSTR("switch")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_sw")) == 0)
|
||||
case LV_HASP_LED:
|
||||
return (strcmp_P(lvobjtype, PSTR("led")) == 0);
|
||||
case LV_HASP_CONTAINER:
|
||||
return (strcmp_P(lvobjtype, PSTR("container")) == 0); // || (strcmp_P(lvobjtype, PSTR("lv_cont")) == 0)
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool check_obj_type(lv_obj_t * obj, lv_hasp_obj_type_t haspobjtype)
|
||||
{
|
||||
lv_obj_type_t list;
|
||||
lv_obj_get_type(obj, &list);
|
||||
const char * objtype = list.type[0];
|
||||
return check_obj_type(objtype, haspobjtype);
|
||||
}
|
@ -2,6 +2,7 @@
|
||||
#define HASP_ATTR_SET_H
|
||||
|
||||
#include "lvgl.h"
|
||||
#include "hasp.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@ -13,4 +14,217 @@ void hasp_process_obj_attribute(lv_obj_t * obj, const char * attr_p, const char
|
||||
} /* extern "C" */
|
||||
#endif
|
||||
|
||||
static void hasp_out_int(lv_obj_t * obj, const char * attr, uint32_t val);
|
||||
static void hasp_out_str(lv_obj_t * obj, const char * attr, const char * data);
|
||||
static void hasp_out_color(lv_obj_t * obj, const char * attr, lv_color_t color);
|
||||
|
||||
bool check_obj_type(const char * lvobjtype, lv_hasp_obj_type_t haspobjtype);
|
||||
bool check_obj_type(lv_obj_t * obj, lv_hasp_obj_type_t haspobjtype);
|
||||
|
||||
#define _HASP_ATTRIBUTE(prop_name, func_name, value_type) \
|
||||
static inline void attribute_##func_name(lv_obj_t * obj, uint8_t part, lv_state_t state, bool update, \
|
||||
const char * attr, value_type val) \
|
||||
{ \
|
||||
if(update) { \
|
||||
return lv_obj_set_style_local_##func_name(obj, part, state, (value_type)val); \
|
||||
} else { \
|
||||
value_type temp; \
|
||||
lv_obj_get_style_local_##func_name(obj, part, state, &temp); \
|
||||
return hasp_out_int(obj, attr, temp); \
|
||||
} \
|
||||
}
|
||||
|
||||
_HASP_ATTRIBUTE(RADIUS, radius, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(CLIP_CORNER, clip_corner, bool)
|
||||
_HASP_ATTRIBUTE(SIZE, size, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSFORM_WIDTH, transform_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSFORM_HEIGHT, transform_height, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(OPA_SCALE, opa_scale, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(PAD_TOP, pad_top, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_BOTTOM, pad_bottom, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_LEFT, pad_left, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_RIGHT, pad_right, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(PAD_INNER, pad_inner, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BG_BLEND_MODE, bg_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(BG_MAIN_STOP, bg_main_stop, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BG_GRAD_STOP, bg_grad_stop, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BG_GRAD_DIR, bg_grad_dir, lv_grad_dir_t)
|
||||
//_HASP_ATTRIBUTE(BG_COLOR, bg_color, lv_color_t, _color, nonscalar)
|
||||
//_HASP_ATTRIBUTE(BG_GRAD_COLOR, bg_grad_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(BG_OPA, bg_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(BORDER_WIDTH, border_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(BORDER_SIDE, border_side, lv_border_side_t)
|
||||
_HASP_ATTRIBUTE(BORDER_BLEND_MODE, border_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(BORDER_POST, border_post, bool)
|
||||
//_HASP_ATTRIBUTE(BORDER_COLOR, border_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(BORDER_OPA, border_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_WIDTH, outline_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_PAD, outline_pad, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(OUTLINE_BLEND_MODE, outline_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(OUTLINE_COLOR, outline_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(OUTLINE_OPA, outline_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_WIDTH, shadow_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_OFS_X, shadow_ofs_x, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_OFS_Y, shadow_ofs_y, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_SPREAD, shadow_spread, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SHADOW_BLEND_MODE, shadow_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(SHADOW_COLOR, shadow_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(SHADOW_OPA, shadow_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(PATTERN_REPEAT, pattern_repeat, bool)
|
||||
_HASP_ATTRIBUTE(PATTERN_BLEND_MODE, pattern_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(PATTERN_RECOLOR, pattern_recolor, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(PATTERN_OPA, pattern_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(PATTERN_RECOLOR_OPA, pattern_recolor_opa, lv_opa_t)
|
||||
//_HASP_ATTRIBUTE(PATTERN_IMAGE, pattern_image, const void *, _data_ptr, scalar)
|
||||
_HASP_ATTRIBUTE(VALUE_LETTER_SPACE, value_letter_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_LINE_SPACE, value_line_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_BLEND_MODE, value_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(VALUE_OFS_X, value_ofs_x, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_OFS_Y, value_ofs_y, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(VALUE_ALIGN, value_align, lv_align_t)
|
||||
//_HASP_ATTRIBUTE(VALUE_COLOR, value_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(VALUE_OPA, value_opa, lv_opa_t)
|
||||
//_HASP_ATTRIBUTE(VALUE_FONT, value_font, const lv_font_t *, _data_ptr, scalar)
|
||||
//_HASP_ATTRIBUTE(VALUE_STR, value_str, const char *, _data_ptr, scalar)
|
||||
_HASP_ATTRIBUTE(TEXT_LETTER_SPACE, text_letter_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TEXT_LINE_SPACE, text_line_space, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TEXT_DECOR, text_decor, lv_text_decor_t)
|
||||
_HASP_ATTRIBUTE(TEXT_BLEND_MODE, text_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(TEXT_COLOR, text_color, lv_color_t, _color, nonscalar)
|
||||
//_HASP_ATTRIBUTE(TEXT_SEL_COLOR, text_sel_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(TEXT_OPA, text_opa, lv_opa_t)
|
||||
//_HASP_ATTRIBUTE(TEXT_FONT, text_font, const lv_font_t *, _data_ptr, scalar)
|
||||
_HASP_ATTRIBUTE(LINE_WIDTH, line_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(LINE_BLEND_MODE, line_blend_mode, lv_blend_mode_t)
|
||||
_HASP_ATTRIBUTE(LINE_DASH_WIDTH, line_dash_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(LINE_DASH_GAP, line_dash_gap, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(LINE_ROUNDED, line_rounded, bool)
|
||||
//_HASP_ATTRIBUTE(LINE_COLOR, line_color, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(LINE_OPA, line_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(IMAGE_BLEND_MODE, image_blend_mode, lv_blend_mode_t)
|
||||
//_HASP_ATTRIBUTE(IMAGE_RECOLOR, image_recolor, lv_color_t, _color, nonscalar)
|
||||
_HASP_ATTRIBUTE(IMAGE_OPA, image_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(IMAGE_RECOLOR_OPA, image_recolor_opa, lv_opa_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_TIME, transition_time, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_DELAY, transition_delay, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_1, transition_prop_1, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_2, transition_prop_2, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_3, transition_prop_3, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_4, transition_prop_4, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_5, transition_prop_5, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(TRANSITION_PROP_6, transition_prop_6, lv_style_int_t)
|
||||
|
||||
_HASP_ATTRIBUTE(SCALE_WIDTH, scale_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SCALE_BORDER_WIDTH, scale_border_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SCALE_END_BORDER_WIDTH, scale_end_border_width, lv_style_int_t)
|
||||
_HASP_ATTRIBUTE(SCALE_END_LINE_WIDTH, scale_end_line_width, lv_style_int_t)
|
||||
//_HASP_ATTRIBUTE(SCALE_GRAD_COLOR, scale_grad_color, lv_color_t, _color, nonscalar)
|
||||
//_HASP_ATTRIBUTE(SCALE_END_COLOR, scale_end_color, lv_color_t, _color, nonscalar)
|
||||
|
||||
/* attribute hashes */
|
||||
#define ATTR_SIZE 16417
|
||||
#define ATTR_BG_OPA 48966
|
||||
#define ATTR_RADIUS 20786
|
||||
#define ATTR_PAD_TOP 59081
|
||||
#define ATTR_LINE_OPA 24501
|
||||
#define ATTR_BG_COLOR 64969
|
||||
#define ATTR_PAD_LEFT 43123
|
||||
#define ATTR_TEXT_OPA 37166
|
||||
#define ATTR_IMAGE_OPA 58140
|
||||
#define ATTR_OPA_SCALE 64875
|
||||
#define ATTR_PAD_INNER 9930
|
||||
#define ATTR_PAD_RIGHT 65104
|
||||
#define ATTR_BORDER_OPA 2061
|
||||
#define ATTR_VALUE_OPA 50482
|
||||
#define ATTR_LINE_WIDTH 25467
|
||||
#define ATTR_LINE_COLOR 22200
|
||||
#define ATTR_PAD_BOTTOM 3767
|
||||
#define ATTR_TEXT_FONT 22465
|
||||
#define ATTR_VALUE_STR 1091
|
||||
#define ATTR_SHADOW_OPA 38401
|
||||
#define ATTR_TEXT_COLOR 23473
|
||||
#define ATTR_TEXT_DECOR 1971
|
||||
#define ATTR_BORDER_SIDE 53962
|
||||
#define ATTR_VALUE_FONT 9405
|
||||
#define ATTR_CLIP_CORNER 9188
|
||||
#define ATTR_PATTERN_OPA 43633
|
||||
#define ATTR_OUTLINE_OPA 23011
|
||||
#define ATTR_BORDER_POST 49491
|
||||
#define ATTR_OUTLINE_PAD 26038
|
||||
#define ATTR_SCALE_WIDTH 36017
|
||||
#define ATTR_BG_GRAD_DIR 41782
|
||||
#define ATTR_VALUE_ALIGN 27895
|
||||
#define ATTR_VALUE_COLOR 52661
|
||||
#define ATTR_BG_GRAD_STOP 4025
|
||||
#define ATTR_VALUE_OFS_X 21415
|
||||
#define ATTR_VALUE_OFS_Y 21416
|
||||
#define ATTR_BG_MAIN_STOP 63118
|
||||
#define ATTR_BORDER_WIDTH 24531
|
||||
#define ATTR_LINE_ROUNDED 15042
|
||||
#define ATTR_BORDER_COLOR 21264
|
||||
#define ATTR_BG_BLEND_MODE 31147
|
||||
#define ATTR_BG_GRAD_COLOR 44140
|
||||
#define ATTR_SHADOW_WIDTH 13255
|
||||
#define ATTR_IMAGE_RECOLOR 52204
|
||||
#define ATTR_SHADOW_COLOR 9988
|
||||
#define ATTR_LINE_DASH_GAP 49332
|
||||
#define ATTR_OUTLINE_WIDTH 9897
|
||||
#define ATTR_SHADOW_OFS_X 44278
|
||||
#define ATTR_SHADOW_OFS_Y 44279
|
||||
#define ATTR_PATTERN_IMAGE 61292
|
||||
#define ATTR_SHADOW_SPREAD 21138
|
||||
#define ATTR_OUTLINE_COLOR 6630
|
||||
#define ATTR_TEXT_SEL_COLOR 32076
|
||||
#define ATTR_LINE_DASH_WIDTH 32676
|
||||
#define ATTR_PATTERN_REPEAT 31338
|
||||
#define ATTR_LINE_BLEND_MODE 60284
|
||||
#define ATTR_TEXT_LINE_SPACE 54829
|
||||
#define ATTR_TEXT_BLEND_MODE 32195
|
||||
#define ATTR_TRANSITION_PROP_1 49343
|
||||
#define ATTR_TRANSITION_PROP_2 49344
|
||||
#define ATTR_SCALE_END_COLOR 44074
|
||||
#define ATTR_TRANSITION_PROP_3 49345
|
||||
#define ATTR_TRANSFORM_WIDTH 48627
|
||||
#define ATTR_TRANSITION_PROP_4 49346
|
||||
#define ATTR_TRANSITION_PROP_5 49347
|
||||
#define ATTR_TRANSITION_PROP_6 49348
|
||||
#define ATTR_TRANSITION_TIME 26263
|
||||
#define ATTR_PATTERN_RECOLOR 7745
|
||||
#define ATTR_TRANSITION_PATH 43343
|
||||
#define ATTR_IMAGE_BLEND_MODE 11349
|
||||
#define ATTR_VALUE_LINE_SPACE 26921
|
||||
#define ATTR_BORDER_BLEND_MODE 23844
|
||||
#define ATTR_VALUE_BLEND_MODE 4287
|
||||
#define ATTR_IMAGE_RECOLOR_OPA 43949
|
||||
#define ATTR_TRANSITION_DELAY 64537
|
||||
#define ATTR_SCALE_GRAD_COLOR 47239
|
||||
#define ATTR_SHADOW_BLEND_MODE 64048
|
||||
#define ATTR_TRANSFORM_HEIGHT 55994
|
||||
#define ATTR_TEXT_LETTER_SPACE 62079
|
||||
#define ATTR_OUTLINE_BLEND_MODE 25038
|
||||
#define ATTR_PATTERN_BLEND_MODE 43456
|
||||
#define ATTR_SCALE_BORDER_WIDTH 2440
|
||||
#define ATTR_VALUE_LETTER_SPACE 51067
|
||||
#define ATTR_PATTERN_RECOLOR_OPA 35074
|
||||
#define ATTR_SCALE_END_LINE_WIDTH 30324
|
||||
#define ATTR_SCALE_END_BORDER_WIDTH 34380
|
||||
#define ATTR_X 120
|
||||
#define ATTR_Y 121
|
||||
#define ATTR_W 119
|
||||
#define ATTR_H 104
|
||||
#define ATTR_OPTIONS 29886
|
||||
#define ATTR_ENABLED 28193
|
||||
#define ATTR_OPACITY 10155
|
||||
#define ATTR_TOGGLE 38580
|
||||
#define ATTR_HIDDEN 11082
|
||||
#define ATTR_VIS 16320
|
||||
#define ATTR_MODE 45891
|
||||
#define ATTR_RECT 11204
|
||||
#define ATTR_ROWS 52153
|
||||
#define ATTR_MIN 46130
|
||||
#define ATTR_MAX 45636
|
||||
#define ATTR_VAL 15809
|
||||
#define ATTR_TXT 9328
|
||||
#define ATTR_ID 6715
|
||||
|
||||
#endif
|
||||
|
Loading…
x
Reference in New Issue
Block a user