Files
QD4C-firmware/app/page/cw_page_ui_widget.c

153 lines
5.6 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "cw_page_ui_widget.h"
#include "zf_common_headfile.h"
#include "main.h"
/**
* @brief 绘制光标
*
* @param Curser_In 当前光标位置
* @param Curser_Last_In 上一时刻光标位置
*/
void Print_Curser(uint8_t Curser_In, uint8_t Curser_Last_In)
{
ips200_show_string(0, Curser_Last_In * 16, " ");
ips200_show_string(0, Curser_In * 16, ">");
}
/**
* @brief 打印菜单项
*
*/
void Print_Menu(const ITEM *item, uint8_t item_sum)
{
ips200_show_string(0, 0, " --return--");
for (uint8_t i = 0; i < item_sum; i++) {
ips200_show_string(8, i * 16 + 16, item[i].text);
}
}
/**
* @brief 打印数值项
*
*/
void Print_Value(const ITEM *item, uint8_t item_sum)
{
// for (uint8_t i = 0; i < item_sum; i++) {
// switch (Param_Data[item[i].data_tag].type) {
// case EINT8:
// ips200_show_int(128, i + 1,
// *((int8_t *)Param_Data[item[i].data_tag].p_data), 5);
// break;
// case EINT16:
// ips200_show_int(128, i + 1,
// *((int16_t *)Param_Data[item[i].data_tag].p_data), 5);
// break;
// case EINT32:
// ips200_show_int(128, i + 1,
// *((int32_t *)Param_Data[item[i].data_tag].p_data), 5);
// break;
// case EUINT8:
// ips200_show_int(128, i + 1,
// *((uint8_t *)Param_Data[item[i].data_tag].p_data), 5);
// break;
// case EUINT16:
// ips200_show_int(128, i + 1,
// *((uint16_t *)Param_Data[item[i].data_tag].p_data), 5);
// break;
// case EUINT32:
// ips200_show_int(128, i + 1,
// *((uint32_t *)Param_Data[item[i].data_tag].p_data), 5);
// case EFLOAT:
// ips200_show_float(128, i + 1,
// *((float *)Param_Data[item[i].data_tag].p_data), 5, 2);
// break;
// default:
// break;
// }
// }
}
/**
* @brief
*
* @param item_num
* @param dir
*/
void Set_Vaule(ITEM *item, uint8_t item_num, float step)
{
// if (EFLOAT == Param_Data[item[item_num].data_tag].type) { // 待修改变量为浮点
// *((float *)Param_Data[item[item_num].data_tag].p_data) += step;
// ips200_show_float(128, item_num + 1,
// *((float *)Param_Data[item[item_num].data_tag].p_data), 6,
// 2);
// return;
// }
// if (0 < step &&
// 1 > step) { // 避免步进值小于 1 时截尾为 0不知道为啥 ceil 函数不可用
// step = 1;
// } else if (0 > step && -1 < step) {
// step = -1;
// }
// switch (Param_Data[item[item_num].data_tag].type) {
// case EINT8:
// *((int8_t *)Param_Data[item[item_num].data_tag].p_data) += (int8_t)step;
// ips200_show_int(128, item_num + 1,
// *((int8_t *)Param_Data[item[item_num].data_tag].p_data), 5);
// break;
// case EINT16:
// *((int16_t *)Param_Data[item[item_num].data_tag].p_data) += (int16_t)step;
// ips200_show_int(128, item_num + 1,
// *((int16_t *)Param_Data[item[item_num].data_tag].p_data), 5);
// break;
// case EINT32:
// *((int32_t *)Param_Data[item[item_num].data_tag].p_data) += (int32_t)step;
// ips200_show_int(128, item_num + 1,
// *((int32_t *)Param_Data[item[item_num].data_tag].p_data), 5);
// break;
// case EUINT8:
// *((uint8_t *)Param_Data[item[item_num].data_tag].p_data) += (uint8_t)step;
// ips200_show_int(128, item_num + 1,
// *((uint8_t *)Param_Data[item[item_num].data_tag].p_data), 5);
// break;
// case EUINT16:
// *((uint16_t *)Param_Data[item[item_num].data_tag].p_data) += (uint16_t)step;
// ips200_show_int(128, item_num + 1,
// *((uint16_t *)Param_Data[item[item_num].data_tag].p_data), 5);
// break;
// case EUINT32:
// *((uint32_t *)Param_Data[item[item_num].data_tag].p_data) += (uint32_t)step;
// ips200_show_int(128, item_num + 1,
// *((uint32_t *)Param_Data[item[item_num].data_tag].p_data), 5);
// break;
// default:
// break;
// }
}
void Show_Marked_Image(void)
{
#define IMAGE_DISPLAY_WIDTH (230U)
#define IMAGE_DISPLAY_HEIGHT (146U)
#define START_X ((240U - IMAGE_DISPLAY_WIDTH) / 2U)
#define START_Y (16U)
float horizontal_zoom_rate = ((float)(IMAGE_DISPLAY_WIDTH)) / ((float)(MT9V03X_W));
float vertical_zoom_rate = ((float)(IMAGE_DISPLAY_HEIGHT)) / ((float)(MT9V03X_H));
ips200_show_gray_image(START_X, START_Y, mt9v03x_image_copy[0], MT9V03X_W, MT9V03X_H, IMAGE_DISPLAY_WIDTH, IMAGE_DISPLAY_HEIGHT, 0);
// 确认边线数组在显示前不会清空
for (uint i = 0; i < PT_MAXLEN; i++) {
ips200_draw_point(START_X + (uint16_t)((float)pts_right[i][1] * horizontal_zoom_rate), START_Y + (uint16_t)((float)pts_right[i][0] * vertical_zoom_rate), RGB565_GREEN);
ips200_draw_point(START_X + (uint16_t)((float)pts_right[i][1] * horizontal_zoom_rate) - 1, START_Y + (uint16_t)((float)pts_right[i][0] * vertical_zoom_rate), RGB565_GREEN);
ips200_draw_point(START_X + (uint16_t)((float)pts_left[i][1] * horizontal_zoom_rate), START_Y + (uint16_t)((float)pts_left[i][0] * vertical_zoom_rate), RGB565_YELLOW);
ips200_draw_point(START_X + (uint16_t)((float)pts_left[i][1] * horizontal_zoom_rate) + 1, START_Y + (uint16_t)((float)pts_left[i][0] * vertical_zoom_rate), RGB565_YELLOW);
}
#undef IMAGE_DISPLAY_WIDTH
#undef START_X
#undef START_Y
}