Meter (lv_meter) ================ Overview ******** The Meter widget can visualize data in very flexible ways. In can show arcs, needles, ticks lines and labels. Parts and Styles **************** - :cpp:enumerator:`LV_PART_MAIN` The background of the Meter. Uses the typical background properties. - :cpp:enumerator:`LV_PART_TICK` The tick lines a labels using the *line* and *text* style properties. - :cpp:enumerator:`LV_PART_INDICATOR` The needle line or image using the *line* and *img* style properties, as well as the background properties to draw a square (or circle) on the pivot of the needles. Padding makes the square larger. - :cpp:enumerator:`LV_PART_ITEMS` The arcs using the *arc* properties. Usage ***** Scale ----- The Scale has minor and major ticks, and labels on the major ticks. The minor tick lines can be configured with: :cpp:expr:`lv_meter_set_scale_ticks(meter, tick_count, line_width, tick_length, tick_color)`. To show major tick lines use :cpp:expr:`lv_meter_set_scale_major_ticks(meter, nth_major, tick_width, tick_length, tick_color, label_gap)`. ``nth_major`` to specify how many minor ticks to skip to draw a major tick. Labels are added automatically on major ticks with ``label_gap`` distance from the ticks with text proportionally to the values of the tick line. :cpp:expr:`lv_meter_set_scale_range(meter, min, max, angle_range, rotation)` sets the value and angle range of the scale. Add indicators -------------- Indicators can be added to meter and their value is interpreted in the range of the scale. All the indicator add functions return an ``lv_meter_indicator_t *``. Needle line ^^^^^^^^^^^ ``indic = lv_meter_add_needle_line(meter, line_width, line_color, r_mod)`` adds a needle line to a Scale. By default, the length of the line is the same as the scale's radius but ``r_mod`` changes the length. :cpp:expr:`lv_meter_set_indicator_value(meter, indic, value)` sets the value of the indicator. Needle image ^^^^^^^^^^^^ ``indic = lv_meter_add_needle_img(meter, img_src, pivot_x, pivot_y)`` sets an image that will be used as a needle. ``img_src`` should be a needle pointing to the right like this ``-O--->``. ``pivot_x`` and ``pivot_y`` sets the pivot point of the rotation relative to the top left corner of the image. :cpp:expr:`lv_meter_set_indicator_value(meter, indicator, value)` sets the value of the indicator. Arc ^^^ ``indic = lv_meter_add_arc(meter, arc_width, arc_color, r_mod)`` adds and arc indicator. . By default, the radius of the arc is the same as the scale's radius but ``r_mod`` changes the radius. :cpp:expr:`lv_meter_set_indicator_start_value(meter, indic, value)` and :cpp:expr:`lv_meter_set_indicator_end_value(meter, indicator, value)` sets the value of the indicator. Scale lines (ticks) ^^^^^^^^^^^^^^^^^^^ ``indic = lv_meter_add_scale_lines(meter, color_start, color_end, local, width_mod)`` adds an indicator that modifies the ticks lines. If ``local`` is ``true`` the ticks' color will be faded from ``color_start`` to ``color_end`` in the indicator's start and end value range. If ``local`` is ``false`` ``color_start`` and ``color_end`` will be mapped to the start and end value of the scale and only a "slice" of that color gradient will be visible in the indicator's start and end value range. ``width_mod`` modifies the width of the tick lines. :cpp:expr:`lv_meter_set_indicator_start_value(meter, indicator, value)` and :cpp:expr:`lv_meter_set_indicator_end_value(meter, indicator, value)` sets the value of the indicator. Events ****** - :cpp:enumerator:`LV_EVENT_DRAW_PART_BEGIN` and :cpp:enumerator:`LV_EVENT_DRAW_PART_END` is sent for the following types: - :cpp:enumerator:`LV_METER_DRAW_PART_ARC` The arc indicator - ``part``: :cpp:enumerator:`LV_PART_ITEMS` - ``sub_part_ptr``: pointer to the indicator - ``arc_dsc`` - ``radius``: radius of the arc - ``p1`` center of the arc - :cpp:enumerator:`LV_METER_DRAW_PART_NEEDLE_LINE` The needle lines - ``part``: :cpp:enumerator:`LV_PART_ITEMS` - ``p1``, ``p2`` points of the line - ``line_dsc`` - ``sub_part_ptr``: pointer to the indicator - :cpp:enumerator:`LV_METER_DRAW_PART_NEEDLE_IMG` The needle images - ``part``: :cpp:enumerator:`LV_PART_ITEMS` - ``p1``, ``p2`` points of the line - ``img_dsc`` - ``sub_part_ptr``: pointer to the indicator - :cpp:enumerator:`LV_METER_DRAW_PART_TICK` The tick lines and labels - ``part``: :cpp:enumerator:`LV_PART_TICKS` - ``value``: the value of the line - ``text``: ``value`` converted to decimal or ``NULL`` on minor lines - ``label_dsc``: label draw descriptor or ``NULL`` on minor lines - ``line_dsc``: - ``id``: the index of the line See the events of the `Base object `__ too. Learn more about :ref:`events`. Keys **** No keys are handled by the Meter widget. Learn more about :ref:`indev_keys`. Example ******* .. include:: ../examples/widgets/meter/index.rst API ***