void PAGE_DrExpInit(int page) { (void)page; enum { COL3 = (4 + ((LCD_WIDTH - 320) / 2)), COL4 = (112 + ((LCD_WIDTH - 320) / 2)), COL5 = (216 + ((LCD_WIDTH - 320) / 2)), COL1 = COL4, COL2 = (COL1 + 32), ROW1 = (36 + ((LCD_HEIGHT - 240) / 2)), ROW2 = (ROW1 + 20), ROW3 = (ROW1 + 40), ROW4 = (ROW1 + 60), ROW5 = (ROW1 + 80), }; PAGE_ShowHeader_ExitOnly(PAGE_GetName(PAGEID_DREXP), MODELMENU_Show); PAGE_ShowHeader_ExitOnly(NULL, MODELMENU_Show); PAGE_ShowHeader_SetLabel(STDMIX_TitleString, SET_TITLE_DATA(PAGEID_DREXP, SWITCHFUNC_DREXP_AIL+drexp_type)); memset(mp, 0, sizeof(*mp)); int count = get_mixers(); int expected = INPUT_NumSwitchPos(mapped_std_channels.switches[SWITCHFUNC_DREXP_AIL+drexp_type]); if (count != expected) { GUI_CreateLabelBox(&gui->msg, 0, 120, 240, 16, &NARROW_FONT, NULL, NULL, "Invalid model ini!");// must be invalid model ini return; } /* Row 1 */ GUI_CreateLabelBox(&gui->srclbl, COL1, ROW1, 96, 16, &DEFAULT_FONT, NULL, NULL, _tr("Src")); GUI_CreateTextSelect(&gui->src, COL2, ROW1, TEXTSELECT_64, NULL, set_type_cb, NULL); /* Row 2 */ GUI_CreateLabelBox(&gui->mode[0], COL3, ROW2, 96, 16, &DEFAULT_FONT, NULL, NULL, STDMIX_ModeName(PITTHROMODE_NORMAL)); GUI_CreateLabelBox(&gui->mode[1], COL4, ROW2, 96, 16, &DEFAULT_FONT, NULL, NULL, STDMIX_ModeName(PITTHROMODE_IDLE1)); GUI_CreateLabelBox(&gui->mode[2], COL5, ROW2, 96, 16, &DEFAULT_FONT, NULL, NULL, STDMIX_ModeName(PITTHROMODE_IDLE2)); /* Row 3 */ GUI_CreateTextSelect(&gui->dr[0], COL3, ROW3, TEXTSELECT_96, NULL, set_dr_cb, ((void *)(long)PITTHROMODE_NORMAL)); GUI_CreateTextSelect(&gui->dr[1], COL4, ROW3, TEXTSELECT_96, NULL, set_dr_cb, ((void *)(long)PITTHROMODE_IDLE1)); GUI_CreateTextSelect(&gui->dr[2], COL5, ROW3, TEXTSELECT_96, NULL, set_dr_cb, ((void *)(long)PITTHROMODE_IDLE2)); /* Row 4 */ GUI_CreateTextSelect(&gui->exp[0], COL3, ROW4, TEXTSELECT_96, NULL, set_exp_cb, ((void *)(long)PITTHROMODE_NORMAL)); GUI_CreateTextSelect(&gui->exp[1], COL4, ROW4, TEXTSELECT_96, NULL, set_exp_cb, ((void *)(long)PITTHROMODE_IDLE1)); GUI_CreateTextSelect(&gui->exp[2], COL5, ROW4, TEXTSELECT_96, NULL, set_exp_cb, ((void *)(long)PITTHROMODE_IDLE2)); /* Row 5 */ u16 ymax = CHAN_MAX_VALUE/100 * MAX_SCALAR; s16 ymin = -ymax; GUI_CreateXYGraph(&gui->graph[0], COL3, ROW5, 96, 120, CHAN_MIN_VALUE, ymin, CHAN_MAX_VALUE, ymax, 0, 0, show_curve_cb, curpos_cb, NULL, (void *)(PITTHROMODE_NORMAL+1L)); GUI_CreateXYGraph(&gui->graph[1], COL4, ROW5, 96, 120, CHAN_MIN_VALUE, ymin, CHAN_MAX_VALUE, ymax, 0, 0, show_curve_cb, curpos_cb, NULL, (void *)(PITTHROMODE_IDLE1+1L)); GUI_CreateXYGraph(&gui->graph[2], COL5, ROW5, 96, 120, CHAN_MIN_VALUE, ymin, CHAN_MAX_VALUE, ymax, 0, 0, show_curve_cb, curpos_cb, NULL, (void *)(PITTHROMODE_IDLE2+1L)); _refresh_page(); }
void PAGE_DrExpInit(int page) { (void)page; PAGE_SetModal(0); // draw a underline only: GUI_CreateRect(&gui->rect, 0, HEADER_WIDGET_HEIGHT, LCD_WIDTH, 1, &DEFAULT_FONT); memset(mp, 0, sizeof(*mp)); int count = get_mixers(); int expected = INPUT_NumSwitchPos(mapped_std_channels.switches[SWITCHFUNC_DREXP_AIL + drexp_type]); if (count != expected) { GUI_CreateLabelBox(&gui->u.msg, 0, MESSAGE_Y, 0, LINE_HEIGHT, &DEFAULT_FONT, NULL, NULL, "Invalid model ini!"); // must be invalid model ini return; } GUI_CreateTextSelectPlate(&gui->u.type, HEADER_X, 0, HEADER_W, HEADER_WIDGET_HEIGHT, &TEXTSEL_FONT, NULL, set_type_cb, (void *)NULL); GUI_CreateScrollable(&gui->scrollable, 0, HEADER_HEIGHT + SCROLL_Y, SCROLL_W, LCD_HEIGHT - HEADER_HEIGHT - SCROLL_Y, 2 * LINE_SPACE, count, row_cb, NULL, NULL, NULL); GUI_CreateXYGraph(&gui->graph, GRAPH_X, GRAPH_Y, GRAPH_W, GRAPH_H, CHAN_MIN_VALUE, CHAN_MIN_VALUE * 1251 / 1000, CHAN_MAX_VALUE, CHAN_MAX_VALUE * 1251 / 1000, 0, 0, show_curve_cb, curpos_cb, NULL, NULL); GUI_Select1stSelectableObj(); }
void PAGE_DrExpInit(int page) { (void)page; PAGE_SetActionCB(_action_cb); PAGE_SetModal(0); PAGE_RemoveAllObjects(); memset(mp, 0, sizeof(*mp)); int count = get_mixers(); int expected = INPUT_NumSwitchPos(mapped_std_channels.switches[SWITCHFUNC_DREXP_AIL+drexp_type]); if (count != expected) { GUI_CreateLabelBox(&gui->u.msg, 0, 10, 0, ITEM_HEIGHT, &DEFAULT_FONT, NULL, NULL, "Invalid model ini!");// must be invalid model ini return; } GUI_CreateTextSelectPlate(&gui->u.type, 0, 0, 60, ITEM_HEIGHT, &DEFAULT_FONT, NULL, set_type_cb, (void *)NULL); GUI_CreateScrollable(&gui->scrollable, 0, ITEM_SPACE, 76, LCD_HEIGHT - ITEM_SPACE, 2 *ITEM_SPACE, count, row_cb, NULL, NULL, NULL); u16 ymax = CHAN_MAX_VALUE/100 * MAX_SCALAR; s16 ymin = -ymax; GUI_CreateXYGraph(&gui->graph, 77, 2, 50, RIGHT_VIEW_HEIGHT, CHAN_MIN_VALUE, ymin, CHAN_MAX_VALUE, ymax, 0, 0, show_curve_cb, curpos_cb, NULL, NULL); GUI_Select1stSelectableObj(); }
static void _show_simple() { GUI_SelectionNotify(NULL); GUI_Select1stSelectableObj(); // bug fix: muset reset to 1st selectable item, otherwise ,the focus will be wrong mp->firstObj = GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LEFT_VIEW_WIDTH + ARROW_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, 2 * ITEM_SPACE, SIMPLE_LAST, simple_row_cb, simple_getobj_cb, NULL, NULL); // The following items are not draw in the logical view; GUI_CreateXYGraph(&gui->graph, 77, LCD_HEIGHT - RIGHT_VIEW_HEIGHT - 1, RIGHT_VIEW_HEIGHT, RIGHT_VIEW_HEIGHT, CHAN_MIN_VALUE, CHAN_MIN_VALUE * 5 / 4, CHAN_MAX_VALUE, CHAN_MAX_VALUE * 5 / 4, 0, 0, eval_mixer_cb, curpos_cb, touch_cb, &mp->mixer[0]); OBJ_SET_USED(&gui->bar, 0); }
void PAGE_EditCurvesInit(int page) { (void)page; struct Curve *curve = edit->curveptr; u8 type = CURVE_TYPE(curve); PAGE_SetActionCB(action_cb); edit->pointnum = 0; edit->reverse = MIXER_SRC_IS_INV(pagemem.u.mixer_page.cur_mixer->src); if ((type == CURVE_EXPO || type == CURVE_DEADBAND) && curve->points[0] == curve->points[1]) { edit->pointnum = -1; } edit->curve = *curve; GUI_CreateTextSelectPlate(&gui->name, NAME_X, 0, NAME_W, HEADER_HEIGHT, &TEXTSEL_FONT, NULL, set_curvename_cb, NULL); GUI_CreateButtonPlateText(&gui->save, SAVE_X, 0, SAVE_W, HEADER_WIDGET_HEIGHT, &BUTTON_FONT , NULL, okcancel_cb, (void *)_tr("Save")); // Draw a line if (UNDERLINE) GUI_CreateRect(&gui->rect, 0, HEADER_WIDGET_HEIGHT, LCD_WIDTH, 1, &DEFAULT_FONT); u8 space = LINE_SPACE; u8 y = space; if (type >= CURVE_3POINT) { GUI_CreateLabelBox(&gui->smoothlbl, LABEL_X, y, LABEL1_W, LINE_HEIGHT, &LABEL_FONT, NULL, NULL, _tr("Smooth")); GUI_CreateTextSelectPlate(&gui->smooth, TEXTSEL1_X, y, TEXTSEL1_W, LINE_HEIGHT, &TEXTSEL_FONT, NULL, set_smooth_cb, NULL); y += space; GUI_CreateLabelBox(&gui->pointlbl, LABEL_X, y , LABEL2_W, LINE_HEIGHT, &LABEL_FONT, NULL, NULL, _tr("Point")); GUI_CreateTextSelectPlate(&gui->point, TEXTSEL2_X, y, TEXTSEL2_W, LINE_HEIGHT, &TEXTSEL_FONT, NULL, set_pointnum_cb, NULL); } else if(type == CURVE_DEADBAND || type == CURVE_EXPO) { GUI_CreateLabelBox(&gui->pointlbl, LABEL_X, y , LABEL_W, LINE_HEIGHT, &LABEL_FONT, NULL, NULL, _tr("Pos/Neg")); y += space; GUI_CreateTextSelectPlate(&gui->point, LABEL_X, y, LABEL_W, LINE_HEIGHT, &TEXTSEL_FONT, NULL, set_expopoint_cb, NULL); } y += space; GUI_CreateLabelBox(&gui->valuelbl, LABEL_X, y , LABEL_W, LINE_HEIGHT, &LABEL_FONT, NULL, NULL, _tr("Value")); y += VALUE_Y_OFFSET; GUI_CreateTextSelectPlate(&gui->value, VALUE_X, y, LABEL_W, LINE_HEIGHT, &TEXTSEL_FONT, NULL, set_value_cb, NULL); GUI_CreateXYGraph(&gui->graph, GRAPH_X, GRAPH_Y, GRAPH_W, GRAPH_H, CHAN_MIN_VALUE, CHAN_MIN_VALUE, CHAN_MAX_VALUE, CHAN_MAX_VALUE, 0, 0, //CHAN_MAX_VALUE / 4, CHAN_MAX_VALUE / 4, show_curve_cb, NULL, touch_cb, &edit->curve); GUI_SetSelected((guiObject_t *)&gui->point); }
static void _show_expo_dr() { GUI_SelectionNotify(notify_cb); GUI_Select1stSelectableObj(); sync_mixers(); mp->firstObj = GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LEFT_VIEW_WIDTH + ARROW_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, ITEM_SPACE, EXPO_LAST, expo_row_cb, simple_getobj_cb, expo_size_cb, NULL); GUI_CreateXYGraph(&gui->graph, 77, LCD_HEIGHT - RIGHT_VIEW_HEIGHT - 1, RIGHT_VIEW_HEIGHT, RIGHT_VIEW_HEIGHT, CHAN_MIN_VALUE, CHAN_MIN_VALUE * 5 / 4, CHAN_MAX_VALUE, CHAN_MAX_VALUE * 5 / 4, 0, 0, eval_mixer_cb, curpos_cb, NULL, NULL); mp->cur_mixer = &mp->mixer[0]; //Enable/Disable the relevant widgets }
void MIXPAGE_EditCurves(struct Curve *curve, void *data) { u8 type = CURVE_TYPE(curve); if (type <= CURVE_FIXED) return; PAGE_RemoveAllObjects(); edit->parent = (void (*)(void))data; edit->pointnum = 0; if ((type == CURVE_EXPO || type == CURVE_DEADBAND) && curve->points[0] == curve->points[1]) { edit->pointnum = -1; } edit->curve = *curve; edit->curveptr = curve; GUI_CreateTextSelect(&gui->name, 8, 8, TEXTSELECT_96, NULL, set_curvename_cb, NULL); PAGE_CreateCancelButton(LCD_WIDTH-160, 4, okcancel_cb); PAGE_CreateOkButton(LCD_WIDTH-56, 4, okcancel_cb); int y = 40; if (type >= CURVE_3POINT) { GUI_CreateLabel(&gui->smoothlbl, 8, y, NULL, DEFAULT_FONT, _tr("Smooth")); GUI_CreateTextSelect(&gui->smooth, 8, y+16, TEXTSELECT_96, NULL, set_smooth_cb, NULL); y += 40; GUI_CreateLabel(&gui->pointlbl, 8, y, NULL, DEFAULT_FONT, _tr("Point")); GUI_CreateTextSelect(&gui->point, 8, y+16, TEXTSELECT_96, NULL, set_pointnum_cb, NULL); } else if(type == CURVE_DEADBAND || type == CURVE_EXPO) { GUI_CreateLabel(&gui->pointlbl, 8, y, NULL, DEFAULT_FONT, _tr("Pos/Neg")); GUI_CreateTextSelect(&gui->point, 8, y+16, TEXTSELECT_96, NULL, set_expopoint_cb, NULL); } y += 40; GUI_CreateLabel(&gui->valuelbl, 8, y, NULL, DEFAULT_FONT, _tr("Value")); GUI_CreateTextSelect(&gui->value, 8, y+16, TEXTSELECT_96, NULL, set_value_cb, NULL); GUI_CreateXYGraph(&gui->graph, LCD_WIDTH-208-ADDITIONAL_H, 36, 200+ADDITIONAL_H, 200+ADDITIONAL_H, CHAN_MIN_VALUE, CHAN_MIN_VALUE, CHAN_MAX_VALUE, CHAN_MAX_VALUE, CHAN_MAX_VALUE / 4, CHAN_MAX_VALUE / 4, show_curve_cb, NULL, touch_cb, &edit->curve); }
static void _show_complex(int page_change) { GUI_SelectionNotify(NULL); mp->max_scroll = 2; int selection = 0; if (page_change) { selection = GUI_ScrollableGetObjRowOffset(&gui->scrollable, GUI_GetSelected()); } mp->firstObj = GUI_CreateScrollable(&gui->scrollable, 0, ITEM_HEIGHT + 1, LEFT_VIEW_WIDTH + ARROW_WIDTH, LCD_HEIGHT - ITEM_HEIGHT -1, 2 * ITEM_SPACE, COMPLEX_LAST - COMMON_LAST, complex_row_cb, simple_getobj_cb, complex_size_cb, NULL); // The following items are not draw in the logical view; GUI_CreateBarGraph(&gui->bar, LEFT_VIEW_WIDTH +10, LCD_HEIGHT - RIGHT_VIEW_HEIGHT -1, 5, RIGHT_VIEW_HEIGHT, CHAN_MIN_VALUE, CHAN_MAX_VALUE, BAR_VERTICAL, eval_chan_cb, NULL); GUI_CreateXYGraph(&gui->graph, 77, LCD_HEIGHT - RIGHT_VIEW_HEIGHT -1, RIGHT_VIEW_HEIGHT, RIGHT_VIEW_HEIGHT, CHAN_MIN_VALUE, CHAN_MIN_VALUE * 5 / 4, CHAN_MAX_VALUE, CHAN_MAX_VALUE * 5 / 4, 0, 0, eval_mixer_cb, curpos_cb, touch_cb, mp->cur_mixer); if (page_change) { GUI_SetSelected(GUI_ShowScrollableRowOffset(&gui->scrollable, selection)); } else { GUI_Select1stSelectableObj(); // bug fix: muset reset to 1st selectable item, otherwise ,the focus will be wrong } }