void CScreenSetup::paint() { if (!frameBuffer->getActive()) return; int w = (int) frameBuffer->getScreenWidth(true); int h = (int) frameBuffer->getScreenHeight(true); frameBuffer->paintBox(0,0, w, h, make16color(0xA0A0A0)); for(int count = 0; count < h; count += 15) frameBuffer->paintHLine(0, w-1, count, make16color(0x505050) ); for(int count = 0; count < w; count += 15) frameBuffer->paintVLine(count, 0, h-1, make16color(0x505050) ); frameBuffer->paintBox(0, 0, w/3, h/3, make16color(0xA0A0A0)); frameBuffer->paintBox(w-w/3, h-h/3, w-1, h-1, make16color(0xA0A0A0)); frameBuffer->paintBoxRel(x, y, BoxWidth, BoxHeight/2, COL_MENUCONTENTSELECTED_PLUS_0); //upper selected box frameBuffer->paintBoxRel(x, y+BoxHeight/2, BoxWidth, BoxHeight/2, COL_MENUCONTENT_PLUS_0); //lower selected box g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+30, y+BoxHeight/2, BoxWidth, g_Locale->getText(LOCALE_SCREENSETUP_UPPERLEFT ), COL_MENUCONTENTSELECTED , 0, true); // UTF-8 g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+30, y+BoxHeight, BoxWidth, g_Locale->getText(LOCALE_SCREENSETUP_LOWERRIGHT), COL_MENUCONTENT, 0, true); // UTF-8 paintIcons(); paintBorderUL(); paintBorderLR(); paintCoords(); }
void CScreenSetup::paint() { if (!frameBuffer->getActive()) return; int w = (int) frameBuffer->getScreenWidth(true); int h = (int) frameBuffer->getScreenHeight(true); frameBuffer->paintBox(0,0, w, h, make16color(0xA0A0A0)); for(int count = 0; count < h; count += 15) frameBuffer->paintHLine(0, w-1, count, make16color(0x505050) ); for(int count = 0; count < w; count += 15) frameBuffer->paintVLine(count, 0, h-1, make16color(0x505050) ); frameBuffer->paintBox(0, 0, w/3, h/3, make16color(0xA0A0A0)); frameBuffer->paintBox(w-w/3, h-h/3, w-1, h-1, make16color(0xA0A0A0)); frameBuffer->paintBoxRel(x_box, y_box, BoxWidth, BoxHeight, COL_MENUCONTENTSELECTED_PLUS_0); //upper selected box frameBuffer->paintBoxRel(x_box, y_box + BoxHeight, BoxWidth, BoxHeight, COL_MENUCONTENT_PLUS_0); //lower selected box paintIcons(0); paintBorderUL(); paintBorderLR(); paintCoords(); }
int CScreenSetup::exec(CMenuTarget* parent, const std::string &) { neutrino_msg_t msg; neutrino_msg_data_t data; int res = menu_return::RETURN_REPAINT; if (parent) { parent->hide(); } x_coord[0] = g_settings.screen_StartX; x_coord[1] = g_settings.screen_EndX; y_coord[0] = g_settings.screen_StartY; y_coord[1] = g_settings.screen_EndY; paint(); #ifdef FB_BLIT frameBuffer->blit(); #endif selected = 0; unsigned long long timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); bool loop=true; while (loop) { g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd, true ); if ( msg <= CRCInput::RC_MaxRC ) timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings::TIMING_MENU]); switch ( msg ) { case CRCInput::RC_ok: // abspeichern g_settings.screen_StartX = x_coord[0]; g_settings.screen_EndX = x_coord[1]; g_settings.screen_StartY = y_coord[0]; g_settings.screen_EndY = y_coord[1]; loop = false; break; case CRCInput::RC_home: if ( ( ( g_settings.screen_StartX != x_coord[0] ) || ( g_settings.screen_EndX != x_coord[1] ) || ( g_settings.screen_StartY != y_coord[0] ) || ( g_settings.screen_EndY != y_coord[1] ) ) && (ShowLocalizedMessage(LOCALE_VIDEOMENU_SCREENSETUP, LOCALE_MESSAGEBOX_DISCARD, CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbCancel) == CMessageBox::mbrCancel)) break; case CRCInput::RC_timeout: loop = false; break; case CRCInput::RC_red: case CRCInput::RC_green: { selected = ( msg == CRCInput::RC_green ) ? 1 : 0 ; frameBuffer->paintBoxRel(x,y, BoxWidth,BoxHeight/2, (selected==0)? COL_MENUCONTENTSELECTED_PLUS_0:COL_MENUCONTENT_PLUS_0); frameBuffer->paintBoxRel(x,y+BoxHeight/2, BoxWidth,BoxHeight/2, (selected==1)? COL_MENUCONTENTSELECTED_PLUS_0:COL_MENUCONTENT_PLUS_0); g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+30,y+BoxHeight/2, BoxWidth, g_Locale->getText(LOCALE_SCREENSETUP_UPPERLEFT ), (selected == 0)?COL_MENUCONTENTSELECTED:COL_MENUCONTENT, 0, true); // UTF-8 g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->RenderString(x+30,y+BoxHeight, BoxWidth, g_Locale->getText(LOCALE_SCREENSETUP_LOWERRIGHT), (selected == 1)?COL_MENUCONTENTSELECTED:COL_MENUCONTENT, 0, true); // UTF-8 paintIcons(); break; } case CRCInput::RC_up: { y_coord[selected]--; int min = ( selected == 0 ) ? 0 : 400; if ( y_coord[selected] < min ) y_coord[selected] = min ; else paintBorder( selected ); break; } case CRCInput::RC_down: { y_coord[selected]++; //int max = ( selected == 0 ) ? 200 : 575; int max = ( selected == 0 ) ? 200 : frameBuffer->getScreenHeight(true)-1; //printf("selected %d y %d max %d\n", selected, y_coord[selected], max); if ( y_coord[selected] > max ) y_coord[selected] = max ; else paintBorder( selected ); break; } case CRCInput::RC_left: { x_coord[selected]--; int min = ( selected == 0 ) ? 0 : 400; if ( x_coord[selected] < min ) x_coord[selected] = min ; else paintBorder( selected ); break; } case CRCInput::RC_right: { x_coord[selected]++; //int max = ( selected == 0 ) ? 200 : 719; int max = ( selected == 0 ) ? 200 : frameBuffer->getScreenWidth(true)-1; //printf("selected %d y %d max %d\n", selected, x_coord[selected], max); if ( x_coord[selected] > max ) x_coord[selected] = max ; else paintBorder( selected ); break; } case CRCInput::RC_favorites: case CRCInput::RC_sat: break; default: if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) { loop = false; res = menu_return::RETURN_EXIT_ALL; } } #ifdef FB_BLIT frameBuffer->blit(); #endif } hide(); return res; }
int CScreenSetup::exec(CMenuTarget* parent, const std::string &) { neutrino_msg_t msg; neutrino_msg_data_t data; int res = menu_return::RETURN_REPAINT; if (parent) { parent->hide(); } x_box = 15*5; y_box = frameBuffer->getScreenHeight(true) / 2; int icol_w, icol_h; frameBuffer->getIconSize(NEUTRINO_ICON_BUTTON_RED, &icol_w, &icol_h); BoxHeight = std::max(icol_h+4, g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getHeight()); BoxWidth = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(g_Locale->getText(LOCALE_SCREENSETUP_UPPERLEFT)); int tmp = g_Font[SNeutrinoSettings::FONT_TYPE_MENU]->getRenderWidth(g_Locale->getText(LOCALE_SCREENSETUP_LOWERRIGHT)); if (tmp > BoxWidth) BoxWidth = tmp; BoxWidth += 10 + icol_w; x_coord[0] = g_settings.screen_StartX; x_coord[1] = g_settings.screen_EndX; y_coord[0] = g_settings.screen_StartY; y_coord[1] = g_settings.screen_EndY; paint(); selected = 0; uint64_t timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings ::TIMING_MENU]); bool loop=true; while (loop) { g_RCInput->getMsgAbsoluteTimeout( &msg, &data, &timeoutEnd, true ); if ( msg <= CRCInput::RC_MaxRC ) timeoutEnd = CRCInput::calcTimeoutEnd(g_settings.timing[SNeutrinoSettings::TIMING_MENU] == 0 ? 0xFFFF : g_settings.timing[SNeutrinoSettings ::TIMING_MENU]); switch ( msg ) { case CRCInput::RC_ok: // abspeichern g_settings.screen_StartX = x_coord[0]; g_settings.screen_EndX = x_coord[1]; g_settings.screen_StartY = y_coord[0]; g_settings.screen_EndY = y_coord[1]; if(g_settings.screen_preset) { g_settings.screen_StartX_lcd = g_settings.screen_StartX; g_settings.screen_StartY_lcd = g_settings.screen_StartY; g_settings.screen_EndX_lcd = g_settings.screen_EndX; g_settings.screen_EndY_lcd = g_settings.screen_EndY; } else { g_settings.screen_StartX_crt = g_settings.screen_StartX; g_settings.screen_StartY_crt = g_settings.screen_StartY; g_settings.screen_EndX_crt = g_settings.screen_EndX; g_settings.screen_EndY_crt = g_settings.screen_EndY; } if (g_InfoViewer) /* recalc infobar position */ g_InfoViewer->start(); loop = false; break; case CRCInput::RC_home: if ( ( ( g_settings.screen_StartX != x_coord[0] ) || ( g_settings.screen_EndX != x_coord[1] ) || ( g_settings.screen_StartY != y_coord[0] ) || ( g_settings.screen_EndY != y_coord[1] ) ) && (ShowMsg(LOCALE_VIDEOMENU_SCREENSETUP, LOCALE_MESSAGEBOX_DISCARD, CMessageBox::mbrYes, CMessageBox::mbYes | CMessageBox::mbCancel) == CMessageBox::mbrCancel)) break; case CRCInput::RC_timeout: loop = false; break; case CRCInput::RC_red: case CRCInput::RC_green: { selected = ( msg == CRCInput::RC_green ) ? 1 : 0 ; frameBuffer->paintBoxRel(x_box, y_box, BoxWidth, BoxHeight, (selected == 0)?COL_MENUCONTENTSELECTED_PLUS_0:COL_MENUCONTENT_PLUS_0); frameBuffer->paintBoxRel(x_box, y_box + BoxHeight, BoxWidth, BoxHeight, (selected ==1 )?COL_MENUCONTENTSELECTED_PLUS_0:COL_MENUCONTENT_PLUS_0); paintIcons(selected); break; } case CRCInput::RC_up: { int min = (selected == 0) ? 0 : 400; if (y_coord[selected] <= min) y_coord[selected] = min; else { unpaintBorder(selected); y_coord[selected]--; paintBorder(selected); } break; } case CRCInput::RC_down: { int max = (selected == 0 )? 200 : frameBuffer->getScreenHeight(true) - 1; if (y_coord[selected] >= max) y_coord[selected] = max; else { unpaintBorder(selected); y_coord[selected]++; paintBorder(selected); } break; } case CRCInput::RC_left: { int min = (selected == 0) ? 0 : 400; if (x_coord[selected] <= min) x_coord[selected] = min; else { unpaintBorder(selected); x_coord[selected]--; paintBorder( selected ); } break; } case CRCInput::RC_right: { int max = (selected == 0) ? 200 : frameBuffer->getScreenWidth(true) - 1; if (x_coord[selected] >= max) x_coord[selected] = max; else { unpaintBorder(selected); x_coord[selected]++; paintBorder( selected ); } break; } case CRCInput::RC_favorites: case CRCInput::RC_sat: break; default: if ( CNeutrinoApp::getInstance()->handleMsg( msg, data ) & messages_return::cancel_all ) { loop = false; res = menu_return::RETURN_EXIT_ALL; } } } hide(); return res; }