#include "page_ui_widget.h" #include "zf_common_headfile.h" /** * @brief 绘制光标 * * @param Curser_In 当前光标位置 * @param Curser_Last_In 上一时刻光标位置 */ void Print_Curser(uint8_t Curser_In, uint8_t Curser_Last_In,uint16_t color) { // ips200_show_string(0, Curser_Last_In * 18, " "); // ips200_show_string(0, Curser_In * 18, ">"); for (uint8_t i = 0; i < 160; i++) { ips200_draw_point(10 + i, Curser_Last_In * 18 + 19, IPS200_DEFAULT_BGCOLOR); // system_delay_us(200); } ips200_draw_rect(10, Curser_Last_In * 18 + 19, 170, Curser_Last_In * 18 + 19, IPS200_DEFAULT_BGCOLOR); for (uint8_t i = 0; i < 160; i++) { ips200_draw_point(10 + i, Curser_In * 18 + 19, color); system_delay_ms(1); } } /** * @brief 打印菜单项 * */ void Print_Menu(const ITEM *item, uint8_t item_sum) { for (uint8_t i = 0; i < item_sum; i++) { ips200_show_string(8, i * 18 + 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); // ips200_draw_frame(START_X - 3, START_Y - 3, START_X + IMAGE_DISPLAY_WIDTH + 2, START_Y + IMAGE_DISPLAY_HEIGHT + 2, 2, RGB565_BLUE); // // 确认边线数组在显示前不会清空 // for (uint i = 0; i < PT_MAXLEN; i++) { // //寻近线逆透视后边线数组 // uint16_t l_x = START_X + (uint16_t)((float)pts_inv_r[i][1] * horizontal_zoom_rate); // uint16_t l_y = START_Y + (uint16_t)((float)pts_inv_r[i][0] * vertical_zoom_rate); // uint16_t r_x = START_X + (uint16_t)((float)pts_inv_l[i][1] * horizontal_zoom_rate); // uint16_t r_y = START_Y + (uint16_t)((float)pts_inv_l[i][0] * vertical_zoom_rate); // //寻远线逆透视后边线数组 // uint16_t far_l_x = START_X + (uint16_t)((float)pts_far_inv_r[i][1] * horizontal_zoom_rate); // uint16_t far_l_y = START_Y + (uint16_t)((float)pts_far_inv_r[i][0] * vertical_zoom_rate); // uint16_t far_r_x = START_X + (uint16_t)((float)pts_far_inv_l[i][1] * horizontal_zoom_rate); // uint16_t far_r_y = START_Y + (uint16_t)((float)pts_far_inv_l[i][0] * vertical_zoom_rate); // //寻近线中线数组 // uint16_t mid_x_l = START_X + (uint16_t)(mid_left[i][1] * horizontal_zoom_rate); // uint16_t mix_y_l = START_Y + (uint16_t)(mid_left[i][0] * vertical_zoom_rate); // uint16_t mid_x_r = START_X + (uint16_t)(mid_right[i][1] * horizontal_zoom_rate); // uint16_t mix_y_r = START_Y + (uint16_t)(mid_right[i][0] * vertical_zoom_rate); // //近线数组显示 // ips200_draw_rect(l_x, l_y, l_x + 2, l_y, RGB565_RED); // ips200_draw_rect(r_x - 2, r_y, r_x, r_y, RGB565_BLUE); // //远线数组显示 // //ips200_draw_rect(far_l_x, far_l_y, far_l_x + 2, far_l_y, RGB565_RED); // //ips200_draw_rect(far_r_x - 2, far_r_y, far_r_x, far_r_y, RGB565_BLUE); // //中线数组显示 // ips200_draw_rect(mid_x_l, mix_y_l, mid_x_l + 2, mix_y_l, RGB565_BLACK); // ips200_draw_rect(mid_x_r, mix_y_r, mid_x_r + 2, mix_y_r, RGB565_BLUE); // // 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 // } uint16_t rgb_gradient(uint16_t i) { #define STEP1 (32.0f / 33.0f) #define STEP2 (64.0f / 33.0f) static uint16_t color = 0; static uint16_t i_last; static float r = 32; static float g = 0; static float b = 0; uint8_t r_h = 0; uint8_t g_h = 0; uint8_t b_h = 0; if (i == i_last) { return color; } if (i < 33) { if (0 == i) { r = 32; g = 0; b = 0; } r = r - STEP1; g = g + STEP2; b = 0; } else if (i > 33) { if (i < 67) { r = 0; g = g - STEP2; b = b + STEP1; } else { r = r + STEP1; g = 0; b = b - STEP1; } } color = 0; r_h = (uint8_t)r; g_h = (uint8_t)g; b_h = (uint8_t)b; printf("%d - r:%d, g:%d, b:%d\r\n", i, r_h, g_h, b_h); color |= (r_h & 0x1F) << 11; color |= (g_h & 0x3F) << 5; color |= (b_h & 0x1F); i_last = i; return color; #undef STEP1 #undef STEP2 }