# lv_draw_sw_grad.h (/api/draw/sw/lv_draw_sw_grad_h)



<ApiSummary functions="12" structs="1" />

Functions [#functions]

<ApiTabs items="[&#x22;Getters (4)&#x22;,&#x22;Other (8)&#x22;]">
  <ApiTab value="Getters (4)">
    <ApiMember kind="function" name="lv_draw_sw_grad_get" file="draw/sw/lv_draw_sw_grad.h" line="53" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L53">
      lv_draw_sw_grad_get [#lv_draw_sw_grad_get]

      Get a gradient cache from the given parameters

      ```c title=" " lineNumbers=1
      lv_draw_sw_grad_calc_t * lv_draw_sw_grad_get(const lv_grad_dsc_t *gradient, int32_t w, int32_t h)
      ```

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

      | Name       | Type                                                             |
      | ---------- | ---------------------------------------------------------------- |
      | `gradient` | <ApiLink name="lv_grad_dsc_t" display="const lv_grad_dsc_t *" /> |
      | `w`        | <ApiLink name="int32_t" />                                       |
      | `h`        | <ApiLink name="int32_t" />                                       |
    </ApiMember>

    <ApiMember kind="function" name="lv_draw_sw_grad_linear_get_line" file="draw/sw/lv_draw_sw_grad.h" line="85" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L85">
      lv_draw_sw_grad_linear_get_line [#lv_draw_sw_grad_linear_get_line]

      Calculate a line segment of a linear gradient

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_linear_get_line(lv_grad_dsc_t *dsc, int32_t xp, int32_t yp, int32_t width, lv_draw_sw_grad_calc_t *result)
      ```

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

      | Name     | Type                                                                         | Description                                   |
      | -------- | ---------------------------------------------------------------------------- | --------------------------------------------- |
      | `dsc`    | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" />                   | gradient descriptor                           |
      | `xp`     | <ApiLink name="int32_t" />                                                   | starting point x coordinate in gradient space |
      | `yp`     | <ApiLink name="int32_t" />                                                   | starting point y coordinate in gradient space |
      | `width`  | <ApiLink name="int32_t" />                                                   | width of the line segment in pixels           |
      | `result` | <ApiLink name="lv_draw_sw_grad_calc_t" display="lv_draw_sw_grad_calc_t *" /> | color buffer for the resulting line segment   |
    </ApiMember>

    <ApiMember kind="function" name="lv_draw_sw_grad_radial_get_line" file="draw/sw/lv_draw_sw_grad.h" line="110" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L110">
      lv_draw_sw_grad_radial_get_line [#lv_draw_sw_grad_radial_get_line]

      Calculate a line segment of a radial gradient

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_radial_get_line(lv_grad_dsc_t *dsc, int32_t xp, int32_t yp, int32_t width, lv_draw_sw_grad_calc_t *result)
      ```

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

      | Name     | Type                                                                         | Description                                   |
      | -------- | ---------------------------------------------------------------------------- | --------------------------------------------- |
      | `dsc`    | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" />                   | gradient descriptor                           |
      | `xp`     | <ApiLink name="int32_t" />                                                   | starting point x coordinate in gradient space |
      | `yp`     | <ApiLink name="int32_t" />                                                   | starting point y coordinate in gradient space |
      | `width`  | <ApiLink name="int32_t" />                                                   | width of the line segment in pixels           |
      | `result` | <ApiLink name="lv_draw_sw_grad_calc_t" display="lv_draw_sw_grad_calc_t *" /> | color buffer for the resulting line segment   |
    </ApiMember>

    <ApiMember kind="function" name="lv_draw_sw_grad_conical_get_line" file="draw/sw/lv_draw_sw_grad.h" line="135" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L135">
      lv_draw_sw_grad_conical_get_line [#lv_draw_sw_grad_conical_get_line]

      Calculate a line segment of a conical gradient

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_conical_get_line(lv_grad_dsc_t *dsc, int32_t xp, int32_t yp, int32_t width, lv_draw_sw_grad_calc_t *result)
      ```

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

      | Name     | Type                                                                         | Description                                   |
      | -------- | ---------------------------------------------------------------------------- | --------------------------------------------- |
      | `dsc`    | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" />                   | gradient descriptor                           |
      | `xp`     | <ApiLink name="int32_t" />                                                   | starting point x coordinate in gradient space |
      | `yp`     | <ApiLink name="int32_t" />                                                   | starting point y coordinate in gradient space |
      | `width`  | <ApiLink name="int32_t" />                                                   | width of the line segment in pixels           |
      | `result` | <ApiLink name="lv_draw_sw_grad_calc_t" display="lv_draw_sw_grad_calc_t *" /> | color buffer for the resulting line segment   |
    </ApiMember>
  </ApiTab>

  <ApiTab value="Other (8)">
    <ApiMember kind="function" name="lv_draw_sw_grad_color_calculate" file="draw/sw/lv_draw_sw_grad.h" line="49" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L49">
      lv_draw_sw_grad_color_calculate [#lv_draw_sw_grad_color_calculate]

      Compute the color in the given gradient and fraction Gradient are specified in a virtual \[0-255] range, so this function scales the virtual range to the given range

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_color_calculate(const lv_grad_dsc_t *dsc, int32_t range, int32_t frac, lv_color_t *color_out, lv_opa_t *opa_out)
      ```

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

      | Name        | Type                                                             | Description                                                |
      | ----------- | ---------------------------------------------------------------- | ---------------------------------------------------------- |
      | `dsc`       | <ApiLink name="lv_grad_dsc_t" display="const lv_grad_dsc_t *" /> | The gradient descriptor to use                             |
      | `range`     | <ApiLink name="int32_t" />                                       | The range to use in computation.                           |
      | `frac`      | <ApiLink name="int32_t" />                                       | The current part used in the range. frac is in \[0; range] |
      | `color_out` | <ApiLink name="lv_color_t" display="lv_color_t *" />             | Calculated gradient color                                  |
      | `opa_out`   | <ApiLink name="lv_opa_t" display="lv_opa_t *" />                 | Calculated opacity                                         |
    </ApiMember>

    <ApiMember kind="function" name="lv_draw_sw_grad_cleanup" file="draw/sw/lv_draw_sw_grad.h" line="59" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L59">
      lv_draw_sw_grad_cleanup [#lv_draw_sw_grad_cleanup]

      Clean up the gradient item after it was get with `lv_grad_get_from_cache`.

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_cleanup(lv_draw_sw_grad_calc_t *grad)
      ```

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

      | Name   | Type                                                                         | Description           |
      | ------ | ---------------------------------------------------------------------------- | --------------------- |
      | `grad` | <ApiLink name="lv_draw_sw_grad_calc_t" display="lv_draw_sw_grad_calc_t *" /> | pointer to a gradient |
    </ApiMember>

    <ApiMember kind="function" name="lv_draw_sw_grad_linear_setup" file="draw/sw/lv_draw_sw_grad.h" line="69" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L69">
      lv_draw_sw_grad_linear_setup [#lv_draw_sw_grad_linear_setup]

      Calculate constants from the given parameters that are used during rendering

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_linear_setup(lv_grad_dsc_t *dsc, const lv_area_t *coords)
      ```

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

      | Name     | Type                                                       | Description                         |
      | -------- | ---------------------------------------------------------- | ----------------------------------- |
      | `dsc`    | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | gradient descriptor                 |
      | `coords` | <ApiLink name="lv_area_t" display="const lv_area_t *" />   | the area where to draw the gradient |
    </ApiMember>

    <ApiMember kind="function" name="lv_draw_sw_grad_linear_cleanup" file="draw/sw/lv_draw_sw_grad.h" line="75" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L75">
      lv_draw_sw_grad_linear_cleanup [#lv_draw_sw_grad_linear_cleanup]

      Free up the allocated memory for the gradient calculation

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_linear_cleanup(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_draw_sw_grad_radial_setup" file="draw/sw/lv_draw_sw_grad.h" line="94" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L94">
      lv_draw_sw_grad_radial_setup [#lv_draw_sw_grad_radial_setup]

      Calculate constants from the given parameters that are used during rendering

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_radial_setup(lv_grad_dsc_t *dsc, const lv_area_t *coords)
      ```

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

      | Name     | Type                                                       | Description                         |
      | -------- | ---------------------------------------------------------- | ----------------------------------- |
      | `dsc`    | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | gradient descriptor                 |
      | `coords` | <ApiLink name="lv_area_t" display="const lv_area_t *" />   | the area where to draw the gradient |
    </ApiMember>

    <ApiMember kind="function" name="lv_draw_sw_grad_radial_cleanup" file="draw/sw/lv_draw_sw_grad.h" line="100" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L100">
      lv_draw_sw_grad_radial_cleanup [#lv_draw_sw_grad_radial_cleanup]

      Free up the allocated memory for the gradient calculation

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_radial_cleanup(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_draw_sw_grad_conical_setup" file="draw/sw/lv_draw_sw_grad.h" line="119" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L119">
      lv_draw_sw_grad_conical_setup [#lv_draw_sw_grad_conical_setup]

      Calculate constants from the given parameters that are used during rendering

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_conical_setup(lv_grad_dsc_t *dsc, const lv_area_t *coords)
      ```

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

      | Name     | Type                                                       | Description                         |
      | -------- | ---------------------------------------------------------- | ----------------------------------- |
      | `dsc`    | <ApiLink name="lv_grad_dsc_t" display="lv_grad_dsc_t *" /> | gradient descriptor                 |
      | `coords` | <ApiLink name="lv_area_t" display="const lv_area_t *" />   | the area where to draw the gradient |
    </ApiMember>

    <ApiMember kind="function" name="lv_draw_sw_grad_conical_cleanup" file="draw/sw/lv_draw_sw_grad.h" line="125" url="https://github.com/lvgl/lvgl/tree/a7b95c5b0839ce901c09c205610bc2c77cc3345d/src/draw/sw/lv_draw_sw_grad.h#L125">
      lv_draw_sw_grad_conical_cleanup [#lv_draw_sw_grad_conical_cleanup]

      Free up the allocated memory for the gradient calculation

      ```c title=" " lineNumbers=1
      void lv_draw_sw_grad_conical_cleanup(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>
  </ApiTab>
</ApiTabs>

Structs [#structs]

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

  | Member      | Type                                                 | Description |
  | ----------- | ---------------------------------------------------- | ----------- |
  | `color_map` | <ApiLink name="lv_color_t" display="lv_color_t *" /> |             |
  | `opa_map`   | <ApiLink name="lv_opa_t" display="lv_opa_t *" />     |             |
  | `size`      | <ApiLink name="uint32_t" />                          |             |
</ApiMember>

<TypeUsedBy name="lv_draw_sw_grad_calc_t" count="4">
  * `lv_draw_sw_grad_cleanup` — param `grad`
  * `lv_draw_sw_grad_linear_get_line` — param `result`
  * `lv_draw_sw_grad_radial_get_line` — param `result`
  * `lv_draw_sw_grad_conical_get_line` — param `result`
</TypeUsedBy>

Dependencies [#dependencies]

<FileIncludes includes="[&#x22;lv_color.h&#x22;, &#x22;lv_style.h&#x22;]" transitiveIncludes="[&#x22;lv_anim.h&#x22;, &#x22;lv_area.h&#x22;, &#x22;lv_assert.h&#x22;, &#x22;lv_bidi.h&#x22;, &#x22;lv_color_op.h&#x22;, &#x22;lv_conf_internal.h&#x22;, &#x22;lv_conf_kconfig.h&#x22;, &#x22;lv_draw_buf.h&#x22;, &#x22;lv_ext_data.h&#x22;, &#x22;lv_flex.h&#x22;, &#x22;lv_font.h&#x22;, &#x22;lv_grad.h&#x22;, &#x22;lv_grid.h&#x22;, &#x22;lv_image_dsc.h&#x22;, &#x22;lv_layout.h&#x22;, &#x22;lv_ll.h&#x22;, &#x22;lv_log.h&#x22;, &#x22;lv_math.h&#x22;, &#x22;lv_mem.h&#x22;, &#x22;lv_palette.h&#x22;, &#x22;lv_sprintf.h&#x22;, &#x22;lv_string.h&#x22;, &#x22;lv_style_gen.h&#x22;, &#x22;lv_symbol_def.h&#x22;, &#x22;lv_text.h&#x22;, &#x22;lv_tick.h&#x22;, &#x22;lv_timer.h&#x22;, &#x22;lv_types.h&#x22;]" />
