久久精品国产精品国产一区,少妇扒开毛毛自慰喷水,国产精品无码电影在线观看 ,久久天天躁夜夜躁狠狠85麻豆

思澈科技軟件開發(fā)工具包  2.20
EPIC

HAL EPIC模塊提供抽象的軟件接口操作硬件EPIC模塊,EPIC為一個2D圖形引擎,它支持的特性

主要特性

  • alpha混疊兩幅圖片并保存到輸出buffer
  • 以任意點為中心旋轉(zhuǎn)圖片(前景圖片), 將旋轉(zhuǎn)后的圖片與背景圖片混疊,保存混疊后的結(jié)果到輸出buffer
  • 縮小/放到圖片(前景圖),將縮放后的圖片與背景圖混疊,保存混疊后的結(jié)果到輸出buffer
  • 一次GPU操作支持先旋轉(zhuǎn)后縮放,不需要中間緩存buffer
  • 在給定buffer中填充不透明或半透明色
  • 所有的圖形操作支持輪詢和中斷模式
  • 輸入和輸出顏色格式不同即可實現(xiàn)顏色格式的自動轉(zhuǎn)換
  • 混疊的兩幅圖大小可以不同并部分重疊,還可以指定混疊后區(qū)域的一部分作為輸出區(qū)域?qū)懭胼敵鯾uffer
  • 背景圖和輸出圖可以復(fù)用同一個buffer, 比如背景圖和輸出圖都使用frame buffer
  • 輸入圖片格式支持EZIP
  • 支持小數(shù)坐標(biāo)混疊(55X 不支持)

輸入輸出限制

功能 55X 58X 56X 54X
橫向縮放 3.8, 即縮小8倍,放大256倍, 精度1/256 10.16, 即縮小1024倍,放大65536倍, 精度1/65536 同58X 同58X
縱向縮放 橫向縱向縮放倍數(shù)固定一樣,不能分開配置 10.16, 即縮小1024倍,放大65536倍, 精度1/65536,
且可以和橫向縮放系數(shù)不一樣
同58X 同58X
旋轉(zhuǎn)角度 [0 ~ 3600], 單位為0.1度 同55X 同55X 同55X
水平鏡像 支持 支持 支持 支持
垂直鏡像 不支持 不支持 不支持 支持
Note
- 旋轉(zhuǎn)和縮放支持同時進(jìn)行,并且支持同一錨點, 支持任意錨點。
- 鏡像支持任意錨點,且不能和旋轉(zhuǎn)、縮放同時進(jìn)行。
- 前景、背景、輸出區(qū)域的并集不超過1024*1024像素(其中前景指繞任意錨點變形后的圖像區(qū)域(包括錨點和旋轉(zhuǎn)前圖片))

例如, 前景圖為繞圖片外錨點旋轉(zhuǎn)并放大后, 與背景、輸出區(qū)域的并集不超過1024

顏色格式支持

輸入顏色格式支持 55X 58X 56X 54X
RGB565/ARGB8565/RGB888/ARGB88888 Y Y Y Y
L8 N Y Y Y
A4/A8 (Mask,Overwrite,Fill) N Y Y Y
YUV(YUYV/UYVY/iYUV) N N Y Y
A2 (Fill) N N N Y
輸出顏色格式支持 55X 58X 56X 54X
RGB565/ARGB8565/RGB888/ARGB88888 Y Y Y Y

關(guān)圖像問題的建議

  • 用于旋轉(zhuǎn)或縮放的圖像在最外一圈加上一些透明像素(或者背景色),防止縮放時出現(xiàn)切邊和旋轉(zhuǎn)時出現(xiàn)鋸齒
  • 為防止縮放出現(xiàn)不連續(xù),對于連續(xù)縮放場景縮放系數(shù)差值要大于1/256(即縮放精度不能超過1/256)
  • 雖然旋轉(zhuǎn)和縮放可以同時進(jìn)行,但建議一次只執(zhí)行一種變換以保證更好的輸出圖形質(zhì)量
  • 放大時建議使用圖片左上角作為錨點,防止出現(xiàn)錨點抖動
  • EZIP格式的圖片不能用于旋轉(zhuǎn)

詳細(xì)的API說明請參考 EPIC 。

顏色在sram的存儲格式

bit31~bit25 bit24~bit17 bit16~bit8 bit7~bit0
RGB565 / / R4~R0G5~G3 G2~G0B4~B0
ARGB8565 / A7 ~ A0 R4~R0G5~G3 G2~G0B4~B0
RGB888 / R7 ~ R0 G7 ~ G0 B7 ~ B0
ARGB8888 A7 ~ A0 R7 ~ R0 G7 ~ G0 B7 ~ B0
A8 D7 ~ D0 C7~C0 B7~B0 A7~A0
A4 / / D3~D0C3~C0 B3~B0A3~A0
A2 / / H1H0G1G0F1F0E1E0 D1D0C1C0B1B0A1A0
Note
顏色數(shù)據(jù)均是緊密存放,在A2/A4/A8格式中ABCDEFGH代表像素點(從左到右顯示)

使用HAL EPIC

首先調(diào)用 HAL_EPIC_Init 初始化HAL EPIC. 在 EPIC_HandleTypeDef 結(jié)構(gòu)中需指定EPIC實例(即使用的EPIC硬件模塊),芯片只有一個EPIC實例 hwp_epic 。 初始化之后即可調(diào)用各種圖形操作的接口處理數(shù)據(jù)。

例如,

static EPIC_HandleTypeDef epic_handle;
void init_epic(void)
{ // Initialize driver and enable EPIC IRQ
HAL_NVIC_SetPriority(EPIC_IRQn, 3, 0);
HAL_NVIC_EnableIRQ(EPIC_IRQn);
epic_handle.Instance = hwp_epic;
HAL_EPIC_Init(&epic_handle);
}
/* EPIC IRQ Handler */
void EPIC_IRQHandler(void)
{
HAL_EPIC_IRQHandler(&epic_handle);
}

HAL_EPIC_Rotate_IT 用于中斷模式的混疊、旋轉(zhuǎn)和縮放操作, HAL_EPIC_BlendStart_IT 用于中斷模式的混疊操作,需要在中斷服務(wù)程序中調(diào)用 HAL_EPIC_IRQHandler 處理中斷。

Note
HAL_EPIC_Rotate_IT 實現(xiàn)了所有 HAL_EPIC_BlendStart_IT 的功能,對于只是混疊的場景,建議使用 HAL_EPIC_BlendStart_IT ,因為它的疊圖吞吐率更高

混疊示例

如圖1所示,示例blend_img_1blend_img_2中,前景圖所在區(qū)域的坐標(biāo)為(10, 20)~(59,79),背景圖所在區(qū)域的坐標(biāo)為(0,0)~(99,99), 輸出區(qū)域坐標(biāo)為(5,10)~(44,59),所有坐標(biāo)均為一個坐標(biāo)系中的數(shù)值,體現(xiàn)三個區(qū)域的相對位置關(guān)系, 前景圖以39%的透明度與背景混疊,混疊后(5,10)~(44,59)區(qū)域的顏色值被順序?qū)懭氲捷敵鯾uffer,其中與前景重疊的部分(畫叉的部分,即區(qū)域[10,20]~[44,59])為混疊后的顏色,非重疊部分則是背景圖中的顏色。 需要注意的是所有的數(shù)據(jù)buffer均為對應(yīng)區(qū)域左上角像素的存放地址,例如fg_img.data指向前景圖的坐標(biāo)(10,20)所在像素的顏色值,outout_img.data指向輸出區(qū)域的左上角像素,即(5,10)的顏色值。

Figure 1: Blending

背景圖buffer與輸出buffer不同

使用HAL_EPIC_Rotate_IT

void epic_cplt_callback(EPIC_HandleTypeDef *epic)
{
/* release the semaphore to indicate epic operation done */
sema_release(epic_sema);
}
/* blend the foreground with background image using 100 opacity (0 is transparent, 255 is opaque)
* output specified blended region to another buffer.
*
*/
void blend_img_1(void)
{
/* foreground image, its coordinate (10,20)~(59,79) , buffer size is 50*60 */
fg_img.data = fg_img_buf;
fg_img.x_offset = 10;
fg_img.y_offset = 20;
/* blending area width */
fg_img.width = 50;
/* blending area height */
fg_img.height = 60;
/* image width, it can be different from fg_img.width */
fg_img.total_width = 50;
fg_img.color_en = false;
/* background image, its coordinate (0,0)~(99,99), buffer size is 100*100 */
bg_img.data = bg_img_buf;
bg_img.x_offset = 0;
bg_img.y_offset = 0;
bg_img.width = 100;
bg_img.height = 100;
bg_img.total_width = 100;
bg_img.color_en = false;
/* output image, its coordinate (5,10)~(44,59), buffer size is 40*50 */
HAL_EPIC_BlendDataInit(&output_img);
output_img.data = output_img_buf;
output_img.x_offset = 5;
output_img.y_offset = 10;
output_img.width = 40;
output_img.height = 50;
output_img.total_width = 40;
output_img.color_en = false;
/* set complete callback */
epic_handle.XferCpltCallback = epic_cplt_callback;
/* no rotation and scaling, opacity 100
* start EPIC in interrupt mode
*/
HAL_EPIC_RotDataInit(&trans_cfg);
ret = HAL_EPIC_Rotate_IT(&epic_handle, &trans_cfg, &fg_img, &bg_img, &output_img, 100);
/* check ret value if any error happens */
...
/* wait for completion */
sema_take(epic_sema);
}

使用HAL_EPIC_BlendStart_IT

void epic_cplt_callback(EPIC_HandleTypeDef *epic)
{
/* release the semaphore to indicate epic operation done */
sema_release(epic_sema);
}
/* blend the foreground with background image using 100 opacity (0 is transparent, 255 is opaque)
* output specified blended region to another buffer.
*
*/
void blend_img_1(void)
{
/* foreground image, its coordinate (10,20)~(59,79) , buffer size is 50*60 */
fg_img.data = fg_img_buf;
fg_img.x_offset = 10;
fg_img.y_offset = 20;
/* blending area width */
fg_img.width = 50;
/* blending area height */
fg_img.height = 60;
/* image width, it can be different from fg_img.width */
fg_img.total_width = 50;
fg_img.color_en = false;
/* background image, its coordinate (0,0)~(99,99), buffer size is 100*100 */
bg_img.data = bg_img_buf;
bg_img.x_offset = 0;
bg_img.y_offset = 0;
bg_img.width = 100;
bg_img.height = 100;
bg_img.total_width = 100;
bg_img.color_en = false;
/* output image, its coordinate (5,10)~(44,59), buffer size is 40*50 */
HAL_EPIC_BlendDataInit(&output_img);
output_img.data = output_img_buf;
output_img.x_offset = 5;
output_img.y_offset = 10;
output_img.width = 40;
output_img.height = 50;
output_img.total_width = 40;
output_img.color_en = false;
/* set complete callback */
epic_handle.XferCpltCallback = epic_cplt_callback;
ret = HAL_EPIC_BlendStart_IT(&epic_handle, &fg_img, &bg_img, &output_img, 100);
/* check ret value if any error happens */
...
/* wait for completion */
sema_take(epic_sema);
}

背景圖buffer與輸出buffer相同

blend_img_2展示了輸出buffer復(fù)用背景圖buffer的場景,這也是最常使用的,即frame buffer作為背景圖buffer和輸出buffer, 這種情況下背景圖buffer中的(10,20)~(44,59)區(qū)域所在的顏色值會被修改為混疊后的顏色,其他位置的顏色值保持不變, 需要注意output_img.width和output_img.total_width的設(shè)置,output_img.width表示輸出區(qū)域的寬度,即44-5+1=40, 但output_img.total_width表示輸出buffer的寬度,因為輸出buffer對應(yīng)的圖形大小為100*100,所以output_img.total_width應(yīng)設(shè)為100, 這樣EPIC在寫完一行40個像素的數(shù)據(jù)后,會跳過余下的60個像素,繼續(xù)更新下一行的數(shù)據(jù)。 fg_img和bg_img的width和total_width也是相同的含義。

使用HAL_EPIC_Rotate_IT

void epic_cplt_callback(EPIC_HandleTypeDef *epic)
{
/* release the semaphore to indicate epic operation done */
sema_release(epic_sema);
}
/* blend the foreground with background image using 100 opacity (0 is transparent, 255 is opaque)
* output buffer is same as background image buffer, usually they're both frame buffer.
*
*/
void blend_img_2(void)
{
uint32_t buffer_start_offset;
/* foreground image, its coordinate (10,20)~(59,79), buffer size is 50*60 */
fg_img.data = fg_img_buf;
fg_img.x_offset = 10;
fg_img.y_offset = 20;
fg_img.width = 50;
fg_img.height = 60;
fg_img.total_width = 50;
fg_img.color_en = false;
/* background image, its coordinate (0,0)~(99,99), buffer size is 100*100 */
bg_img.data = bg_img_buf;
bg_img.x_offset = 0;
bg_img.y_offset = 0;
bg_img.width = 100;
bg_img.height = 100;
bg_img.total_width = 100;
bg_img.color_en = false;
/* output image, share the same buffer as bg_img_buf,
output area is (5,10)~(44,59), buffer size is 100*100 */
HAL_EPIC_BlendDataInit(&output_img);
/* topleft pixel is (5, 10), skip (10*100+5) pixels */
buffer_start_offset = (10 - 0) * 100 * 2 + (5 - 0) * 2;
output_img.data = (uint8_t *)((uint32_t)bg_img_buf + buffer_start_offset);
/* output area topleft coordinate */
output_img.x_offset = 5;
output_img.y_offset = 10;
/* output area width */
output_img.width = 40;
/* output area height */
output_img.height = 50;
/* output buffer width, it's different from output_img.width */
output_img.total_width = 100;
output_img.color_en = false;
/* set complete callback */
epic_handle.XferCpltCallback = epic_cplt_callback;
/* no rotation and scaling, opacity 100
* start EPIC in interrupt mode
*/
HAL_EPIC_RotDataInit(&trans_cfg);
ret = HAL_EPIC_Rotate_IT(&epic_handle, &trans_cfg, &fg_img, &bg_img, &output_img, 100);
/* check ret value if any error happens */
...
/* wait for completion */
sema_take(epic_sema);
}

使用HAL_EPIC_BlendStart_IT

void epic_cplt_callback(EPIC_HandleTypeDef *epic)
{
/* release the semaphore to indicate epic operation done */
sema_release(epic_sema);
}
/* blend the foreground with background image using 100 opacity (0 is transparent, 255 is opaque)
* output buffer is same as background image buffer, usually they're both frame buffer.
*
*/
void blend_img_2(void)
{
uint32_t buffer_start_offset;
/* foreground image, its coordinate (10,20)~(59,79), buffer size is 50*60 */
fg_img.data = fg_img_buf;
fg_img.x_offset = 10;
fg_img.y_offset = 20;
fg_img.width = 50;
fg_img.height = 60;
fg_img.total_width = 50;
fg_img.color_en = false;
/* background image, its coordinate (0,0)~(99,99), buffer size is 100*100 */
bg_img.data = bg_img_buf;
bg_img.x_offset = 0;
bg_img.y_offset = 0;
bg_img.width = 100;
bg_img.height = 100;
bg_img.total_width = 100;
bg_img.color_en = false;
/* output image, share the same buffer as bg_img_buf,
output area is (5,10)~(44,59), buffer size is 100*100 */
HAL_EPIC_BlendDataInit(&output_img);
/* topleft pixel is (5, 10), skip (10*100+5) pixels */
buffer_start_offset = (10 - 0) * 100 * 2 + (5 - 0) * 2;
output_img.data = (uint8_t *)((uint32_t)bg_img_buf + buffer_start_offset);
/* output area topleft coordinate */
output_img.x_offset = 5;
output_img.y_offset = 10;
/* output area width */
output_img.width = 40;
/* output area height */
output_img.height = 50;
/* output buffer width, it's different from output_img.width */
output_img.total_width = 100;
output_img.color_en = false;
/* set complete callback */
epic_handle.XferCpltCallback = epic_cplt_callback;
ret = HAL_EPIC_BlendStart_IT(&epic_handle, &fg_img, &bg_img, &output_img, 100);
/* check ret value if any error happens */
...
/* wait for completion */
sema_take(epic_sema);
}

旋轉(zhuǎn)示例

如圖2所示,示例rotate_img將位于(10,20)~(59,79)的前景圖以圖中心為軸順時針旋轉(zhuǎn)30度,與背景圖混疊后更新背景圖對應(yīng)位置的顏色,落在旋轉(zhuǎn)后圖形外的像素仍舊保持背景圖的顏色。 由于旋轉(zhuǎn)后圖形覆蓋的矩形區(qū)域會擴(kuò)大(即[x0,y0]~[x1,y1]),為了保證旋轉(zhuǎn)后的圖形能被完整的顯示出來,可以簡單的將輸出區(qū)域設(shè)成最大,HAL將自動計算旋轉(zhuǎn)后的矩形區(qū)域, 當(dāng)背景圖buffer與輸出buffer相同時, 只會更新輸出buffer中被旋轉(zhuǎn)區(qū)域覆蓋的像素點的顏色。

Figure 1: Rotation
/* rotate the foreground image by 30 degree (clockwisely) and blend it with background using 100 opacity (0 is transparent, 255 is opaque)
* output data is written back to background image buffer, it can also output to another buffer like blend_img_1.
*
*/
void rotate_img(void)
{
/* foreground image, its coordinate (10,20)~(59,79) before rotation, buffer size is 50*60 */
fg_img.data = fg_img_buf;
fg_img.x_offset = 10;
fg_img.y_offset = 20;
fg_img.width = 50;
fg_img.height = 60;
fg_img.total_width = 50;
fg_img.color_en = false;
/* background image, its coordinate (0,0)~(99,99), buffer size is 100*100 */
bg_img.data = bg_img_buf;
bg_img.x_offset = 0;
bg_img.y_offset = 0;
bg_img.width = 100;
bg_img.height = 100;
bg_img.total_width = 100;
bg_img.color_en = false;
/* output image, its coordinate (0,0)~(99,99), share same buffer as background image */
HAL_EPIC_BlendDataInit(&output_img);
output_img.data = bg_img_buf;
output_img.x_offset = 0;
output_img.y_offset = 0;
output_img.width = 100;
output_img.height = 100;
output_img.total_width = 100;
output_img.color_en = false;
epic_handle.XferCpltCallback = epic_cplt_callback;
/* foreground image is rotated by 30 degree around its center */
HAL_EPIC_RotDataInit(&trans_cfg);
trans_cfg.angle = 300;
trans_cfg.pivot_x = fg_img.width / 2;
trans_cfg.pivot_y = fg_img.height / 2;
trans_cfg.scale_x = 1000;
trans_cfg.scale_y = 1000;
/* no scaling, opacity 100
* start EPIC in interrupt mode
*/
ret = HAL_EPIC_Rotate_IT(&epic_handle, &trans_cfg, &fg_img, &bg_img, &output_img, 100);
/* check ret value if any error happens */
...
/* wait for completion */
sema_take(epic_sema);
}

縮放示例

如圖3所示,示例scale_down_img將位于(10,20)~(59,79)的前景圖橫向與縱向都縮小到原圖的71%,同時保持圖中心點位置不變。 類似旋轉(zhuǎn),也可以簡單的將輸出區(qū)域設(shè)成最大,如果輸出buffer復(fù)用背景buffer,HAL將只更新縮小后區(qū)域(即[x0,y0]~[x1,y1])所包含的像素的顏色值。

Figure 1: Scaling
/* scale down the foreground image by 1.4 and blend it with background using 100 opacity (0 is transparent, 255 is opaque)
* output data is written back to background image buffer, it can also output to another buffer like blend_img_1.
*
*/
void scale_down_img(void)
{
/* foreground image, its coordinate (10,20)~(59,79) before scaling */
fg_img.data = fg_img_buf;
fg_img.x_offset = 10;
fg_img.y_offset = 20;
fg_img.width = 50;
fg_img.height = 60;
fg_img.total_width = 50;
fg_img.color_en = false;
/* background image, its coordinate (0,0)~(99,99) */
bg_img.data = bg_img_buf;
bg_img.x_offset = 0;
bg_img.y_offset = 0;
bg_img.width = 100;
bg_img.height = 100;
bg_img.total_width = 100;
bg_img.color_en = false;
/* output image, its coordinate (0,0)~(99,99), share same buffer as background image */
HAL_EPIC_BlendDataInit(&output_img);
output_img.data = bg_img_buf;
output_img.x_offset = 0;
output_img.y_offset = 0;
output_img.width = 100;
output_img.height = 100;
output_img.total_width = 100;
output_img.color_en = false;
epic_handle.XferCpltCallback = epic_cplt_callback;
/* no rotation, both X and Y direction are scaled down by 1.4,
the image center is in the same position after scaling */
HAL_EPIC_RotDataInit(&trans_cfg);
trans_cfg.pivot_x = fg_img.width / 2;
trans_cfg.pivot_y = fg_img.height / 2;
trans_cfg.scale_x = 1400;
trans_cfg.scale_y = 1400;
/* opacity 100
* start EPIC in interrupt mode
*/
ret = HAL_EPIC_Rotate_IT(&epic_handle, &trans_cfg, &fg_img, &bg_img, &output_img, 100);
/* check ret value if any error happens */
...
/* wait for completion */
sema_take(epic_sema);
}

顏色填充示例

一個大小為100*90的buffer,在其(20,10)~(39, 49)區(qū)域填充顏色RGB(99,107,123),配置的顏色值為RGB888格式,填充后的顏色格式為RGB565,硬件會作顏色格式轉(zhuǎn)換。 透明度為100,255表示不透明,0表示透明。 因為填充的第一個像素位置為(20,10),相對buffer的首地址有偏移,配置的起始地址應(yīng)為偏移后的地址,total_width為buffer的總寬度,即100,width為填充區(qū)域的寬度,即(39-20+1)=20, 填充完一行20個像素的顏色后,會跳過余下的80個顏色,轉(zhuǎn)到下一行繼續(xù)填充,直到填完指定行數(shù)。

void fill_color(void)
{
uint32_t start_offset;
/* topleft pixel offset in the output buffer */
start_offset = 2 * (10 * 100 + 20);
param.start = (uint8_t *)((uint32_t)output_buf + start_offset);
/* filled color format RGB565 */
/* filling area width */
param.width = 20;
/* filling area height */
param.height = 40;
/* filling buffer total width */
param.total_width = 100;
/* red part of RGB888 */
param.color_r = 99;
/* green part of RGB888 */
param.color_g = 107;
/* blue part of RGB888 */
param.color_b = 123;
/* opacity is 100 */
param.alpha = 100;
/* fill in polling mode */
ret = HAL_EPIC_FillStart(&epic_handle, &param);
/* check ret if any error happens */
}
EPIC_BlendingDataType::height
uint16_t height
Definition: bf0_hal_epic.h:305
EPIC_FillingCfgTypeDef::width
uint16_t width
Definition: bf0_hal_epic.h:400
EPIC_FillingCfgTypeDef::color_r
uint8_t color_r
Definition: bf0_hal_epic.h:411
EPIC_FillingCfgTypeDef::alpha
uint8_t alpha
Definition: bf0_hal_epic.h:417
EPIC_BlendingDataType
HAL EPIC Blend layer structures definition.
Definition: bf0_hal_epic.h:297
HAL_EPIC_Init
HAL_StatusTypeDef HAL_EPIC_Init(EPIC_HandleTypeDef *epic)
EPIC Init.
EPIC_FillingCfgTypeDef::color_b
uint8_t color_b
Definition: bf0_hal_epic.h:415
EPIC_FillingCfgTypeDef::color_g
uint8_t color_g
Definition: bf0_hal_epic.h:413
HAL_EPIC_BlendDataInit
void HAL_EPIC_BlendDataInit(EPIC_BlendingDataType *layer)
Init an epic blend struct to default vaules.
EPIC_TransformCfgTypeDef::pivot_x
int16_t pivot_x
Definition: bf0_hal_epic.h:239
__EPIC_HandleTypeDef
Definition: bf0_hal_epic.h:567
HAL_EPIC_FillDataInit
void HAL_EPIC_FillDataInit(EPIC_FillingCfgTypeDef *param)
Init an epic fill cfg struct to default vaules.
EPIC_TransformCfgTypeDef
Definition: bf0_hal_epic.h:230
EPIC_FillingCfgTypeDef::total_width
uint16_t total_width
Definition: bf0_hal_epic.h:409
EPIC_BlendingDataType::x_offset
int16_t x_offset
Definition: bf0_hal_epic.h:306
EPIC_BlendingDataType::color_en
bool color_en
Definition: bf0_hal_epic.h:322
EPIC_BlendingDataType::total_width
uint16_t total_width
Definition: bf0_hal_epic.h:315
EPIC_BlendingDataType::width
uint16_t width
Definition: bf0_hal_epic.h:304
EPIC_FillingCfgTypeDef::start
uint8_t * start
Definition: bf0_hal_epic.h:397
HAL_EPIC_BlendStart_IT
HAL_StatusTypeDef HAL_EPIC_BlendStart_IT(EPIC_HandleTypeDef *epic, EPIC_BlendingDataType *fg, EPIC_BlendingDataType *bg, EPIC_BlendingDataType *dst, uint8_t alpha)
Start blending in interrupt mode.
EPIC_TransformCfgTypeDef::scale_y
uint32_t scale_y
Definition: bf0_hal_epic.h:254
HAL_EPIC_IRQHandler
void HAL_EPIC_IRQHandler(EPIC_HandleTypeDef *epic)
EPIC IRQ Handler.
HAL_NVIC_SetPriority
void HAL_NVIC_SetPriority(IRQn_Type IRQn, uint32_t PreemptPriority, uint32_t SubPriority)
Set the priority of an interrupt.
HAL_StatusTypeDef
HAL_StatusTypeDef
HAL Status structures definition.
Definition: bf0_hal_def.h:74
EPIC_BlendingDataType::color_mode
uint32_t color_mode
Definition: bf0_hal_epic.h:301
__EPIC_HandleTypeDef::Instance
EPIC_TypeDef * Instance
Definition: bf0_hal_epic.h:568
EPIC_TransformCfgTypeDef::angle
int16_t angle
Definition: bf0_hal_epic.h:232
EPIC_TransformCfgTypeDef::scale_x
uint32_t scale_x
Definition: bf0_hal_epic.h:248
hwp_epic
#define hwp_epic
Definition: register.h:526
EPIC_FillingCfgTypeDef::height
uint16_t height
Definition: bf0_hal_epic.h:401
EPIC_COLOR_RGB565
#define EPIC_COLOR_RGB565
Definition: bf0_hal_epic.h:96
HAL_NVIC_EnableIRQ
void HAL_NVIC_EnableIRQ(IRQn_Type IRQn)
Enable a device specific interrupt in the NVIC interrupt controller.
EPIC_BlendingDataType::y_offset
int16_t y_offset
Definition: bf0_hal_epic.h:307
HAL_EPIC_FillStart
HAL_StatusTypeDef HAL_EPIC_FillStart(EPIC_HandleTypeDef *epic, EPIC_FillingCfgTypeDef *param)
Fill the region with given color in polling mode.
EPIC_FillingCfgTypeDef::color_mode
uint32_t color_mode
Definition: bf0_hal_epic.h:399
EPIC_BlendingDataType::data
uint8_t * data
Definition: bf0_hal_epic.h:298
__EPIC_HandleTypeDef::XferCpltCallback
void(* XferCpltCallback)(struct __EPIC_HandleTypeDef *epic)
Definition: bf0_hal_epic.h:573
EPIC_FillingCfgTypeDef
Definition: bf0_hal_epic.h:396
HAL_EPIC_Rotate_IT
HAL_StatusTypeDef HAL_EPIC_Rotate_IT(EPIC_HandleTypeDef *epic, EPIC_TransformCfgTypeDef *rot_cfg, EPIC_BlendingDataType *fg, EPIC_BlendingDataType *bg, EPIC_BlendingDataType *dst, uint8_t alpha)
Rotate and scale src1 based on the image center, blend with bg and output to dst in interrupt mode.
HAL_EPIC_RotDataInit
void HAL_EPIC_RotDataInit(EPIC_TransformCfgTypeDef *rot_cfg)
Init an epic rotate cfg struct to default vaules.
EPIC_TransformCfgTypeDef::pivot_y
int16_t pivot_y
Definition: bf0_hal_epic.h:242