#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 }