lvgl: Compilation error in Arduino IDE for the image button widget

Bug description I am trying to use lvgl widgets. The button works fine, while I’m having a lot of difficulties with the image button. There are errors in the compilation:

[...]\LVGL_Arduino.ino:214:94: error: invalid conversion from 'int' to 'lv_style_prop_t' [-fpermissive]
     static lv_style_prop_t tr_prop[] = {LV_STYLE_TRANSFORM_WIDTH, LV_STYLE_IMG_RECOLOR_OPA, 0};
                                                                                              ^

To Reproduce Hardware: ESP32 DevKit + RA8875 resistive touchscreen Arduino Core ESP32: 2.0.5 Arduino IDE: 2.0.1 LVGL: 8.3.3 LVGL example: 8.1.0

I use the example of the image button version 8.3.3:

  LV_IMG_DECLARE(imgbtn_left);
  LV_IMG_DECLARE(imgbtn_right);
  LV_IMG_DECLARE(imgbtn_mid);

  /*Create a transition animation on width transformation and recolor.*/
  static lv_style_prop_t tr_prop[] = {LV_STYLE_TRANSFORM_WIDTH, LV_STYLE_IMG_RECOLOR_OPA, 0};
  static lv_style_transition_dsc_t tr;
  lv_style_transition_dsc_init(&tr, tr_prop, lv_anim_path_linear, 200, 0, NULL);

  static lv_style_t style_def;
  lv_style_init(&style_def);
  lv_style_set_text_color(&style_def, lv_color_white());
  lv_style_set_transition(&style_def, &tr);

  /*Darken the button when pressed and make it wider*/
  static lv_style_t style_pr;
  lv_style_init(&style_pr);
  lv_style_set_img_recolor_opa(&style_pr, LV_OPA_30);
  lv_style_set_img_recolor(&style_pr, lv_color_black());
  lv_style_set_transform_width(&style_pr, 20);

  /*Create an image button*/
  lv_obj_t * imgbtn1 = lv_imgbtn_create(lv_scr_act());
  lv_imgbtn_set_src(imgbtn1, LV_IMGBTN_STATE_RELEASED, &imgbtn_left, &imgbtn_mid, &imgbtn_right);
  lv_obj_add_style(imgbtn1, &style_def, 0);
  lv_obj_add_style(imgbtn1, &style_pr, LV_STATE_PRESSED);

  lv_obj_align(imgbtn1, LV_ALIGN_CENTER, 0, 0);

  /*Create a label on the image button*/
  lv_obj_t * label = lv_label_create(imgbtn1);
  lv_label_set_text(label, "Button");
  lv_obj_align(label, LV_ALIGN_CENTER, 0, -4);

Expected behavior No compilation error.

About this issue

  • Original URL
  • State: closed
  • Created 2 years ago
  • Comments: 15 (8 by maintainers)

Most upvoted comments

Aaah, I see.

Please try this at the beginning of the image and keep it next to the ino file.

#ifdef __has_include
    #if __has_include("lvgl.h")
        #ifndef LV_LVGL_H_INCLUDE_SIMPLE
            #define LV_LVGL_H_INCLUDE_SIMPLE
        #endif
    #endif
#endif

#if defined(LV_LVGL_H_INCLUDE_SIMPLE)
  #include "lvgl.h"
#else
  #include "lvgl/lvgl.h"
#endif