92 lines
2.2 KiB
C
92 lines
2.2 KiB
C
/**
|
|
* @file lv_utils.h
|
|
*
|
|
*/
|
|
|
|
#ifndef LV_UTILS_H
|
|
#define LV_UTILS_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/*********************
|
|
* INCLUDES
|
|
*********************/
|
|
|
|
#include "lv_types.h"
|
|
#include "../draw/lv_draw_buf.h"
|
|
|
|
/*********************
|
|
* DEFINES
|
|
*********************/
|
|
|
|
/**********************
|
|
* TYPEDEFS
|
|
**********************/
|
|
|
|
/**********************
|
|
* GLOBAL PROTOTYPES
|
|
**********************/
|
|
|
|
/** Searches base[0] to base[n - 1] for an item that matches *key.
|
|
*
|
|
* @note The function cmp must return negative if it's first
|
|
* argument (the search key) is less that it's second (a table entry),
|
|
* zero if equal, and positive if greater.
|
|
*
|
|
* @note Items in the array must be in ascending order.
|
|
*
|
|
* @param key Pointer to item being searched for
|
|
* @param base Pointer to first element to search
|
|
* @param n Number of elements
|
|
* @param size Size of each element
|
|
* @param cmp Pointer to comparison function (see unicode_list_compare()
|
|
* as a comparison function example)
|
|
*
|
|
* @return a pointer to a matching item, or NULL if none exists.
|
|
*/
|
|
void * lv_utils_bsearch(const void * key, const void * base, size_t n, size_t size,
|
|
int (*cmp)(const void * pRef, const void * pElement));
|
|
|
|
/**
|
|
* Save a draw buf to a file
|
|
* @param draw_buf pointer to a draw buffer
|
|
* @param path path to the file to save
|
|
* @return LV_RESULT_OK: success; LV_RESULT_INVALID: error
|
|
*/
|
|
lv_result_t lv_draw_buf_save_to_file(const lv_draw_buf_t * draw_buf, const char * path);
|
|
|
|
/**
|
|
* Reverse the order of the bytes in a 32-bit value.
|
|
* @param x a 32-bit value.
|
|
* @return the value `x` with reversed byte-order.
|
|
*/
|
|
static inline uint32_t lv_swap_bytes_32(uint32_t x)
|
|
{
|
|
return (x << 24)
|
|
| ((x & 0x0000ff00U) << 8)
|
|
| ((x & 0x00ff0000U) >> 8)
|
|
| (x >> 24);
|
|
}
|
|
|
|
/**
|
|
* Reverse the order of the bytes in a 16-bit value.
|
|
* @param x a 16-bit value.
|
|
* @return the value `x` with reversed byte-order.
|
|
*/
|
|
static inline uint16_t lv_swap_bytes_16(uint16_t x)
|
|
{
|
|
return (x << 8) | (x >> 8);
|
|
}
|
|
|
|
/**********************
|
|
* MACROS
|
|
**********************/
|
|
|
|
#ifdef __cplusplus
|
|
} /*extern "C"*/
|
|
#endif
|
|
|
|
#endif
|