# lv_grad.h (/api/misc/lv_grad_h)



<ApiSummary functions="7" enums="2" structs="2" />

Functions [#functions]

<ApiTabs items="[&#x22;Setters (1)&#x22;,&#x22;Other (6)&#x22;]">
  <ApiTab value="Setters (1)">
    <ApiMember kind="function" name="lv_grad_radial_set_focal" file="misc/lv_grad.h" line="153" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_grad.h#L153">
      lv_grad_radial_set_focal [#lv_grad_radial_set_focal]

      Set focal (starting) circle of a radial gradient

      ```c title=" " lineNumbers=1
      void lv_grad_radial_set_focal(lv_grad_dsc_t *dsc, int32_t center_x, int32_t center_y, int32_t radius)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name       | Type                                                       | Description                                                                                                                                                                                                                 |
      | ---------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `dsc`      | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | gradient descriptor                                                                                                                                                                                                         |
      | `center_x` | <ApiLink name="int32_t" />                                 | center x position: can be a coordinate or an <ApiLink name="lv_pct" display="lv_pct()" /> value predefined constants LV\_GRAD\_LEFT, LV\_GRAD\_RIGHT, LV\_GRAD\_TOP, LV\_GRAD\_BOTTOM, LV\_GRAD\_CENTER can be used as well |
      | `center_y` | <ApiLink name="int32_t" />                                 | center y position                                                                                                                                                                                                           |
      | `radius`   | <ApiLink name="int32_t" />                                 | radius of the starting circle (NOTE: this must be a scalar number, not percentage)                                                                                                                                          |
    </ApiMember>
  </ApiTab>

  <ApiTab value="Other (6)">
    <ApiMember kind="function" name="lv_grad_init_stops" file="misc/lv_grad.h" line="104" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_grad.h#L104">
      lv_grad_init_stops [#lv_grad_init_stops]

      Initialize gradient color map from a table

      ```c title=" " lineNumbers=1
      void lv_grad_init_stops(lv_grad_dsc_t *grad, const lv_color_t colors[], const lv_opa_t opa[], const uint8_t fracs[], int num_stops)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name        | Type                                                       | Description                                                          |
      | ----------- | ---------------------------------------------------------- | -------------------------------------------------------------------- |
      | `grad`      | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | pointer to a gradient descriptor                                     |
      | `colors`    | <ApiLink name="lv_color_t" display="const lv_color_t" />   | color array                                                          |
      | `opa`       | <ApiLink name="lv_opa_t" display="const lv_opa_t" />       | opacity array: if NULL, then LV\_OPA\_COVER is assumed               |
      | `fracs`     | <ApiLink name="uint8_t" display="const uint8_t" />         | position array (0..255): if NULL, then colors are distributed evenly |
      | `num_stops` | `int`                                                      | number of gradient stops (1..LV\_GRADIENT\_MAX\_STOPS)               |
    </ApiMember>

    <ApiMember kind="function" name="lv_grad_horizontal_init" file="misc/lv_grad.h" line="111" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_grad.h#L111">
      lv_grad_horizontal_init [#lv_grad_horizontal_init]

      Helper function to initialize a horizontal gradient.

      ```c title=" " lineNumbers=1
      void lv_grad_horizontal_init(lv_grad_dsc_t *dsc)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name  | Type                                                       | Description         |
      | ----- | ---------------------------------------------------------- | ------------------- |
      | `dsc` | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | gradient descriptor |
    </ApiMember>

    <ApiMember kind="function" name="lv_grad_vertical_init" file="misc/lv_grad.h" line="117" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_grad.h#L117">
      lv_grad_vertical_init [#lv_grad_vertical_init]

      Helper function to initialize a vertical gradient.

      ```c title=" " lineNumbers=1
      void lv_grad_vertical_init(lv_grad_dsc_t *dsc)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name  | Type                                                       | Description         |
      | ----- | ---------------------------------------------------------- | ------------------- |
      | `dsc` | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | gradient descriptor |
    </ApiMember>

    <ApiMember kind="function" name="lv_grad_linear_init" file="misc/lv_grad.h" line="129" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_grad.h#L129">
      lv_grad_linear_init [#lv_grad_linear_init]

      Helper function to initialize linear gradient

      ```c title=" " lineNumbers=1
      void lv_grad_linear_init(lv_grad_dsc_t *dsc, int32_t from_x, int32_t from_y, int32_t to_x, int32_t to_y, lv_grad_extend_t extend)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name     | Type                                                       | Description                                                                                                                                                                                                                |
      | -------- | ---------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `dsc`    | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | gradient descriptor                                                                                                                                                                                                        |
      | `from_x` | <ApiLink name="int32_t" />                                 | start x position: can be a coordinate or an <ApiLink name="lv_pct" display="lv_pct()" /> value predefined constants LV\_GRAD\_LEFT, LV\_GRAD\_RIGHT, LV\_GRAD\_TOP, LV\_GRAD\_BOTTOM, LV\_GRAD\_CENTER can be used as well |
      | `from_y` | <ApiLink name="int32_t" />                                 | start y position                                                                                                                                                                                                           |
      | `to_x`   | <ApiLink name="int32_t" />                                 | end x position                                                                                                                                                                                                             |
      | `to_y`   | <ApiLink name="int32_t" />                                 | end y position                                                                                                                                                                                                             |
      | `extend` | <ApiLink name="lv_grad_extend_t" />                        | one of LV\_GRAD\_EXTEND\_PAD, LV\_GRAD\_EXTEND\_REPEAT or LV\_GRAD\_EXTEND\_REFLECT                                                                                                                                        |
    </ApiMember>

    <ApiMember kind="function" name="lv_grad_radial_init" file="misc/lv_grad.h" line="142" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_grad.h#L142">
      lv_grad_radial_init [#lv_grad_radial_init]

      Helper function to initialize radial gradient

      ```c title=" " lineNumbers=1
      void lv_grad_radial_init(lv_grad_dsc_t *dsc, int32_t center_x, int32_t center_y, int32_t to_x, int32_t to_y, lv_grad_extend_t extend)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name       | Type                                                       | Description                                                                                                                                                                                                                 |
      | ---------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `dsc`      | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | gradient descriptor                                                                                                                                                                                                         |
      | `center_x` | <ApiLink name="int32_t" />                                 | center x position: can be a coordinate or an <ApiLink name="lv_pct" display="lv_pct()" /> value predefined constants LV\_GRAD\_LEFT, LV\_GRAD\_RIGHT, LV\_GRAD\_TOP, LV\_GRAD\_BOTTOM, LV\_GRAD\_CENTER can be used as well |
      | `center_y` | <ApiLink name="int32_t" />                                 | center y position                                                                                                                                                                                                           |
      | `to_x`     | <ApiLink name="int32_t" />                                 | point on the end circle x position                                                                                                                                                                                          |
      | `to_y`     | <ApiLink name="int32_t" />                                 | point on the end circle y position                                                                                                                                                                                          |
      | `extend`   | <ApiLink name="lv_grad_extend_t" />                        | one of LV\_GRAD\_EXTEND\_PAD, LV\_GRAD\_EXTEND\_REPEAT or LV\_GRAD\_EXTEND\_REFLECT                                                                                                                                         |
    </ApiMember>

    <ApiMember kind="function" name="lv_grad_conical_init" file="misc/lv_grad.h" line="165" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_grad.h#L165">
      lv_grad_conical_init [#lv_grad_conical_init]

      Helper function to initialize conical gradient

      ```c title=" " lineNumbers=1
      void lv_grad_conical_init(lv_grad_dsc_t *dsc, int32_t center_x, int32_t center_y, int32_t start_angle, int32_t end_angle, lv_grad_extend_t extend)
      ```

      <span className="sr-only">
        Parameters
      </span>

      | Name          | Type                                                       | Description                                                                                                                                                                                                                 |
      | ------------- | ---------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
      | `dsc`         | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | gradient descriptor                                                                                                                                                                                                         |
      | `center_x`    | <ApiLink name="int32_t" />                                 | center x position: can be a coordinate or an <ApiLink name="lv_pct" display="lv_pct()" /> value predefined constants LV\_GRAD\_LEFT, LV\_GRAD\_RIGHT, LV\_GRAD\_TOP, LV\_GRAD\_BOTTOM, LV\_GRAD\_CENTER can be used as well |
      | `center_y`    | <ApiLink name="int32_t" />                                 | center y position                                                                                                                                                                                                           |
      | `start_angle` | <ApiLink name="int32_t" />                                 | start angle in degrees                                                                                                                                                                                                      |
      | `end_angle`   | <ApiLink name="int32_t" />                                 | end angle in degrees                                                                                                                                                                                                        |
      | `extend`      | <ApiLink name="lv_grad_extend_t" />                        | one of LV\_GRAD\_EXTEND\_PAD, LV\_GRAD\_EXTEND\_REPEAT or LV\_GRAD\_EXTEND\_REFLECT                                                                                                                                         |
    </ApiMember>
  </ApiTab>
</ApiTabs>

Enums [#enums]

<ApiMember kind="enum" name="lv_grad_dir_t" file="misc/lv_grad.h" line="31" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_grad.h#L31">
  lv_grad_dir_t [#lv_grad_dir_t]

  The direction of the gradient.

  | Name                  | Description                                                           |
  | --------------------- | --------------------------------------------------------------------- |
  | `LV_GRAD_DIR_NONE`    | No gradient (the `grad_color` property is ignored)                    |
  | `LV_GRAD_DIR_VER`     | Simple vertical (top to bottom) gradient                              |
  | `LV_GRAD_DIR_HOR`     | Simple horizontal (left to right) gradient                            |
  | `LV_GRAD_DIR_LINEAR`  | Linear gradient defined by start and end points. Can be at any angle. |
  | `LV_GRAD_DIR_RADIAL`  | Radial gradient defined by start and end circles                      |
  | `LV_GRAD_DIR_CONICAL` | Conical gradient defined by center point, start and end angles        |
</ApiMember>

<TypeUsedBy name="lv_grad_dir_t" count="2">
  * `lv_obj_set_style_bg_grad_dir` — param `value`
  * `lv_style_set_bg_grad_dir` — param `value`
</TypeUsedBy>

<ApiMember kind="enum" name="lv_grad_extend_t" file="misc/lv_grad.h" line="43" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/misc/lv_grad.h#L43">
  lv_grad_extend_t [#lv_grad_extend_t]

  Gradient behavior outside the defined range.

  | Name                     | Description                 |
  | ------------------------ | --------------------------- |
  | `LV_GRAD_EXTEND_PAD`     | Repeat the same color       |
  | `LV_GRAD_EXTEND_REPEAT`  | Repeat the pattern          |
  | `LV_GRAD_EXTEND_REFLECT` | Repeat the pattern mirrored |
</ApiMember>

<TypeUsedBy name="lv_grad_extend_t" count="3">
  * `lv_grad_linear_init` — param `extend`
  * `lv_grad_radial_init` — param `extend`
  * `lv_grad_conical_init` — param `extend`
</TypeUsedBy>

Structs [#structs]

<ApiMember kind="struct" name="lv_grad_stop_t">
  lv_grad_stop_t [#lv_grad_stop_t]

  A gradient stop definition. This matches a color and a position in a virtual 0-255 scale.

  | Member  | Type                          | Description                     |
  | ------- | ----------------------------- | ------------------------------- |
  | `color` | <ApiLink name="lv_color_t" /> | The stop color                  |
  | `opa`   | <ApiLink name="lv_opa_t" />   | The opacity of the color        |
  | `frac`  | <ApiLink name="uint8_t" />    | The stop position in 1/255 unit |
</ApiMember>

<TypeUsedBy name="lv_grad_stop_t" count="2">
  * `lv_draw_vector_dsc_set_fill_gradient_color_stops` — param `stops`
  * `lv_draw_vector_dsc_set_stroke_gradient_color_stops` — param `stops`
</TypeUsedBy>

<ApiMember kind="struct" name="lv_grad_dsc_t">
  lv_grad_dsc_t [#lv_grad_dsc_t]

  A descriptor of a gradient.

  | Member         | Type                                                            | Description                                                                                                                                                         |
  | -------------- | --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
  | `stops`        | `lv_grad_stop_t[2]`                                             | A gradient stop array                                                                                                                                               |
  | `stops_count`  | <ApiLink name="uint8_t" />                                      | The number of used stops in the array                                                                                                                               |
  | `dir`          | <ApiLink name="lv_grad_dir_t" />                                | The gradient direction. Any of LV\_GRAD\_DIR\_NONE, LV\_GRAD\_DIR\_VER, LV\_GRAD\_DIR\_HOR, LV\_GRAD\_TYPE\_LINEAR, LV\_GRAD\_TYPE\_RADIAL, LV\_GRAD\_TYPE\_CONICAL |
  | `extend`       | <ApiLink name="lv_grad_extend_t" />                             | Behaviour outside the defined range. LV\_GRAD\_EXTEND\_NONE, LV\_GRAD\_EXTEND\_PAD, LV\_GRAD\_EXTEND\_REPEAT, LV\_GRAD\_EXTEND\_REFLECT                             |
  | `start`        | <ApiLink name="lv_point_t" />                                   | Linear gradient vector start point                                                                                                                                  |
  | `end`          | <ApiLink name="lv_point_t" />                                   | Linear gradient vector end point<br /><br />Center of the ending circle in local coordinates                                                                        |
  | `linear`       | <ApiLink name="lv_grad_dsc_t" display="struct lv_grad_dsc_t" /> |                                                                                                                                                                     |
  | `focal`        | <ApiLink name="lv_point_t" />                                   | Center of the focal (starting) circle in local coordinates                                                                                                          |
  | `focal_extent` | <ApiLink name="lv_point_t" />                                   | Point on the circle (can be the same as the center)                                                                                                                 |
  | `end_extent`   | <ApiLink name="lv_point_t" />                                   | Point on the circle determining the radius of the gradient                                                                                                          |
  | `radial`       | <ApiLink name="lv_grad_dsc_t" display="struct lv_grad_dsc_t" /> |                                                                                                                                                                     |
  | `center`       | <ApiLink name="lv_point_t" />                                   | Conical gradient center point                                                                                                                                       |
  | `start_angle`  | <ApiLink name="int16_t" />                                      | Start angle 0..3600                                                                                                                                                 |
  | `end_angle`    | <ApiLink name="int16_t" />                                      | End angle 0..3600                                                                                                                                                   |
  | `conical`      | <ApiLink name="lv_grad_dsc_t" display="struct lv_grad_dsc_t" /> |                                                                                                                                                                     |
  | `params`       | <ApiLink name="lv_grad_dsc_t" display="union lv_grad_dsc_t" />  |                                                                                                                                                                     |
  | `state`        | `void *`                                                        |                                                                                                                                                                     |
</ApiMember>

<TypeUsedBy name="lv_grad_dsc_t" count="23">
  * `lv_obj_set_style_bg_grad` — param `value`
  * `lv_nanovg_draw_grad_helper` — param `grad_dsc`
  * `lv_nemagfx_grad_set` — param `lv_grad`
  * `lv_draw_sw_grad_color_calculate` — param `dsc`
  * `lv_draw_sw_grad_get` — param `gradient`
  * `lv_draw_sw_grad_linear_setup` — param `dsc`
  * `lv_draw_sw_grad_linear_cleanup` — param `dsc`
  * `lv_draw_sw_grad_linear_get_line` — param `dsc`
  * `lv_draw_sw_grad_radial_setup` — param `dsc`
  * `lv_draw_sw_grad_radial_cleanup` — param `dsc`
  * `lv_draw_sw_grad_radial_get_line` — param `dsc`
  * `lv_draw_sw_grad_conical_setup` — param `dsc`
  * `lv_draw_sw_grad_conical_cleanup` — param `dsc`
  * `lv_draw_sw_grad_conical_get_line` — param `dsc`
  * `lv_vg_lite_draw_grad_helper` — param `grad_dsc`
  * `lv_grad_init_stops` — param `grad`
  * `lv_grad_horizontal_init` — param `dsc`
  * `lv_grad_vertical_init` — param `dsc`
  * `lv_grad_linear_init` — param `dsc`
  * `lv_grad_radial_init` — param `dsc`
  * `lv_grad_radial_set_focal` — param `dsc`
  * `lv_grad_conical_init` — param `dsc`
  * `lv_style_set_bg_grad` — param `value`
</TypeUsedBy>

Dependencies [#dependencies]

<FileIncludes includes="[&#x22;lv_conf_internal.h&#x22;, &#x22;lv_color.h&#x22;, &#x22;lv_area.h&#x22;]" includedBy="[&#x22;lv_style.h&#x22;]" transitiveIncludes="[&#x22;lv_assert.h&#x22;, &#x22;lv_color_op.h&#x22;, &#x22;lv_conf_kconfig.h&#x22;, &#x22;lv_log.h&#x22;, &#x22;lv_math.h&#x22;, &#x22;lv_mem.h&#x22;, &#x22;lv_palette.h&#x22;, &#x22;lv_string.h&#x22;, &#x22;lv_types.h&#x22;]" />
