void ofxFFTBase::drawLogarithmic(int x, int y, int w, int h) { vector<float> &fftLogNormData = logData.dataNorm; vector<float> &fftLogPeakData = logData.dataPeak; vector<int> &fftLogCutData = logData.dataCut; ofPushMatrix(); ofTranslate(x, y); drawBg(fftData, w, h); int renderSingleBandWidth = w / (float)fftLogNormData.size(); int bx, by; // border. bx = by = renderBorder; // draw cut data ofPushStyle(); ofFill(); ofSetColor(200); for(int i=0; i<fftLogCutData.size(); i++) { ofDrawRectangle(i * renderSingleBandWidth + bx, h + by, renderSingleBandWidth, -fftLogCutData[i] * h); } ofPopStyle(); //draw normalized data ofPushStyle(); for(int i=0; i<fftLogNormData.size(); i++) { ofFill(); ofSetColor(100); if (logData.dataBeats[i]) ofSetColor(10, 200, 255); ofDrawRectangle(i * renderSingleBandWidth + bx, h + by, renderSingleBandWidth, -fftLogNormData[i] * h); ofNoFill(); ofSetColor(232); ofDrawRectangle(i * renderSingleBandWidth + bx, h + by, renderSingleBandWidth, -fftLogNormData[i] * h); } ofPopStyle(); //draw peak data ofPushStyle(); ofFill(); ofSetColor(0); for(int i=0; i<fftLogPeakData.size(); i++) { float p = fftLogPeakData[i]; ofDrawRectangle(i * renderSingleBandWidth + bx, (1 - p) * (h - 2) + by, renderSingleBandWidth - 1, 2); } ofPopStyle(); drawBorder(w, h); drawThresholdLine(fftData, w, h); ofPopMatrix(); //drawThresholdLine(audioData, width, height); }
void Renderer::drawFrame() { TRACK_CALL_TEXT("Renderer::drawFrame"); drawBg(); drawScene(false); drawGui(); }
void mySliderButton::paintEvent(QPaintEvent *) { QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing|QPainter::HighQualityAntialiasing); drawBg(&painter); drawBar(&painter); drawText(&painter); }
void ofxFFTBase::drawData(const ofxFFTData & audioData, int width, int height) { drawBg(audioData, width, height); drawGlitchData(audioData, width, height); // drawFftData(audioData, width, height); // this is audio data before its been normalised, good for debugging. drawFftNormData(audioData, width, height); drawFftPeakData(audioData, width, height); drawThresholdLine(audioData, width, height); drawBorder(width, height); }
void SwitchButton::paintEvent(QPaintEvent *) { //绘制准备工作,启用反锯齿 QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); //绘制背景 drawBg(&painter); //绘制滑块 drawSlider(&painter); }
void WorldUIView::draw() { if(isVisible()){ drawBg(); drawSurface(); drawObjects(); drawBorder(); drawParams(); UIView::draw(); } }
void SliderRuler::paintEvent(QPaintEvent *) { //绘制准备工作,启用反锯齿 QPainter painter(this); painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing); //绘制背景 drawBg(&painter); //绘制标尺 drawRule(&painter); //绘制滑块 drawSlider(&painter); //绘制当前值的提示 drawTip(&painter); }
void debug(const char *fmt, ...) { char s[512]; memset(s, 0, 512); va_list args; va_start(args, fmt); vsprintf(s, fmt, args); va_end(args); while (aptMainLoop()) { hidScanInput(); if (hidKeysDown()) break; drawBg(); gfxDrawText(GFX_TOP, GFX_LEFT, &fontDefault, s, MENU_MIN_X + 16, MENU_MIN_Y + 16); gfxDrawText(GFX_TOP, GFX_LEFT, &fontDefault, "Press any key to continue...", MENU_MIN_X + 16, MENU_MIN_Y + 64); gfxSwap(); } }
bool confirm(int confirmButton, const char *fmt, ...) { char s[512]; memset(s, 0, 512); va_list args; va_start(args, fmt); vsprintf(s, fmt, args); va_end(args); while (aptMainLoop()) { hidScanInput(); u32 key = hidKeysDown(); if (key & BIT(confirmButton)) { return true; } else if (key) { return false; } drawBg(); gfxDrawText(GFX_TOP, GFX_LEFT, &fontDefault, s, MENU_MIN_X + 16, MENU_MIN_Y + 16); gfxDrawText(GFX_TOP, GFX_LEFT, &fontDefault, "Press any key to cancel...", MENU_MIN_X + 16, MENU_MIN_Y + 64); gfxDrawTextf(GFX_TOP, GFX_LEFT, &fontDefault, MENU_MIN_X + 16, MENU_MIN_Y + 84, "Press (%s) to confirm...", get_button(confirmButton)); gfxSwap(); } }
int main() { REG_DISPCTL = MODE3 | BG2_ENABLE; reset(); while(1) { waitForVblank(); switch (state) { case START: drawImage3(0, 0, 240, 160, StartScreen); //The start screen state = READY; break; case READY: if (KEY_DOWN_NOW(BUTTON_B)) { drawBg(); state = PLAY; } break; case PLAY: if(KEY_DOWN_NOW(BUTTON_A)) { reset(); } eraseImage3(150, 0, 240, 10); sprintf(buffer, "%d bugs left", bugsNum); drawString(150, 0, buffer, red); sprintf(buffer, "%d lives left", lives); drawString(150, 100, buffer, red); sprintf(buffer, "level %d", level); drawString(150, 190, buffer, red); updateShip(&ship); updateBugs(bugs, &ship, &state); if (bugsNum == 0 && lives > 0) { state = WON; } break; case WON: if (level == 1) { drawString(100, 10, "Almost there! Press enter to continue!", red); if(KEY_DOWN_NOW(BUTTON_A)) { reset(); } if (KEY_DOWN_NOW(BUTTON_START)) { level++; drawBg(); setShip(&ship); setBugs(bugs); state = PLAY; } } else { drawImage3(0, 0, 240, 160, Win); if (KEY_DOWN_NOW(BUTTON_START) || KEY_DOWN_NOW(BUTTON_A)) { reset(); } } break; case DIE: drawBg(); sprintf(buffer, "%d lives left", lives); drawString(50, 75, buffer, red); if(KEY_DOWN_NOW(BUTTON_A)) { reset(); } if (KEY_DOWN_NOW(BUTTON_START)) { drawBg(); state = PLAY; ship.x = START_X; ship.y = START_Y; for (int i = 0; i < bugsNum; i++) { bugs[i].y = bugs[i].startY; bugs[i].charge = 0; } } break; case LOSE: drawImage3(0, 0, 240, 160, Ending); if(KEY_DOWN_NOW(BUTTON_A)) { reset(); } if (KEY_DOWN_NOW(BUTTON_START)) { reset(); } break; } } return 0; }
bool ShootingCans::draw(bool hit, Vector &hitPoint) { switch (mode) { case INIT: startGame(); infobox->set("bounce at the cans."); break; case PLAY: // check hit if (hit) { infobox->clear(); ballHits++; if (!gameStarted) { gameStarted = true; startTime = ofGetElapsedTimef() + 120; } for (int i = 0; i < cans.size(); i++) { if (cans[i].checkHit(hitPoint)) { points += 100; signs.push_back(Sign("+100", hitPoint, 2.0)); shootedCans.push_back(cans[i]); cans.erase(cans.begin() + i); i--; if (points == 1000) { int timeBonus = (startTime - ofGetElapsedTimef()) * 10; points += timeBonus; string bonus = "timebonus: +" + ofToString(timeBonus); signs.push_back(Sign(bonus, Vector((ofGetWidth() - gameFont.stringWidth(bonus)) / 2, ofGetHeight() / 2), 3.0)); points -= ballHits * 10; string minus = "ballthrows: -" + ofToString(ballHits * 10); signs.push_back(Sign(minus, Vector((ofGetWidth() - gameFont.stringWidth(minus)) / 2, ofGetHeight() / 2 + 40), 4.0)); } } } } if (gameStarted) screenTime = startTime - ofGetElapsedTimef(); if ((cans.size() == 0 && signs.size() == 0) || screenTime <= 0) stopGame(); for (int i = 0; i < shootedCans.size(); i++) { if (!shootedCans[i].draw()) { shootedCans.erase(shootedCans.begin() + i); i--; } } drawBg(); break; case PANEL: drawBg(); drawPanel(); if (hit && !insertName) return false; break; default: break; } drawSigns(); return true; }
static void draw(void) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glPushMatrix(); glDisable(GL_BLEND); drawBg(); glScalef( 0.29, 0.29, 0.29); glPushMatrix(); glTranslatef( player.getPos().x, player.getPos().y, 0.0); glRotatef(player.getAngle(), 0.0, 0.0, -1.0); drawShip(); glPopMatrix(); rck::renderRocks(); glEnable(GL_BLEND); ptl::renderParticles(); prjctl::renderProjectiles(); gltext::beginOrtho(); string text; glColor3f(1.0, 0.0, 0.0); text = "Score: " + intToStr(playerScore); gltext::print(0, 460, text.c_str()); glColor3f(1.0, 0.0, 1.0); text = "Level: " + intToStr(curLvl); gltext::print(300, 460, text.c_str()); glColor3f(1.0, 1.0, 0.0); text = "Lives: " + intToStr(playerLives); gltext::print(525, 460, text.c_str()); glColor3f(1.0, 1.0, 1.0); text = intToStr(fps); gltext::print(270, 0, text.c_str()); gltext::endOrtho(); glFlush(); glPopMatrix(); SDL_GL_SwapBuffers(); Frames++; { GLint t = SDL_GetTicks(); if (t - T0 >= 5000) { GLfloat seconds = (t - T0) / 1000.0; fps = (int)(Frames / seconds); //printf("%d frames in %g seconds = %g FPS\n", Frames, seconds, fps); T0 = t; Frames = 0; } } }
int menu_netloaderarm9(void) { s32 sockfd; struct sockaddr_in sa; s32 clientfd; struct sockaddr_in client_addr; s32 addrlen = sizeof(client_addr); s32 sflags = 0; if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) { debug("Err: socket"); return -1; } bzero(&sa, sizeof(sa)); sa.sin_family = AF_INET; sa.sin_port = htons(BRAHMA_NETWORK_PORT); sa.sin_addr.s_addr = gethostid(); if (bind(sockfd, (struct sockaddr *) &sa, sizeof(sa)) != 0) { debug("Err: bind"); close(sockfd); return -1; } if (listen(sockfd, 1) != 0) { debug("Err: listen()"); close(sockfd); return -1; } char msg[256]; sprintf(msg, "NetLoader Active - waiting for arm9\n\n" "IP: %s, Port: %d\n\nPress B to cancel\n", inet_ntoa(sa.sin_addr), BRAHMA_NETWORK_PORT); drawBg(); gfxDrawTextf(GFX_TOP, GFX_LEFT, &fontDefault, MENU_MIN_X + 16, MENU_MIN_Y + 16, msg); gfxSwap(); sflags = fcntl(sockfd, F_GETFL); if (sflags == -1) { debug("Err: fcntl() (1)\n"); close(sockfd); } fcntl(sockfd, F_SETFL, sflags | O_NONBLOCK); while (aptMainLoop()) { hidScanInput(); if (hidKeysDown() & KEY_B) { close(sockfd); return -1; } clientfd = accept(sockfd, (struct sockaddr *) &client_addr, &addrlen); svcSleepThread(100000000); if (clientfd > 0) break; } s32 recvd; u32 total = 0; u8 *arm9_buf = memalign(0x1000, ARM9_PAYLOAD_MAX_SIZE); while ((recvd = recv(clientfd, arm9_buf + total, ARM9_PAYLOAD_MAX_SIZE - total, 0)) != 0) { if (recvd != -1) { total += recvd; drawBg(); gfxDrawTextf(GFX_TOP, GFX_LEFT, &fontDefault, MENU_MIN_X + 16, MENU_MIN_Y + 16, "%i", total); gfxSwap(); } if (total >= ARM9_PAYLOAD_MAX_SIZE) { debug("Err: invalid payload size\n"); close(clientfd); close(sockfd); free(arm9_buf); return -1; } } fcntl(sockfd, F_SETFL, sflags & ~O_NONBLOCK); close(clientfd); close(sockfd); gfxExit(); brahma_init(); if (load_arm9_payload_from_mem(arm9_buf, total) != 1) { debug("Err: Couldn't load arm9 payload...\n"); return -1; } firm_reboot(); brahma_exit(); }
int menu_more() { int i = 0; menu_index = 0; while (aptMainLoop()) { hidScanInput(); u32 kDown = hidKeysDown(); if (kDown & KEY_DOWN) { menu_index++; if (menu_index >= menu_count) menu_index = 0; } if (kDown & KEY_UP) { menu_index--; if (menu_index < 0) menu_index = menu_count - 1; } if (kDown & KEY_A) { if (menu_index == 0 && menu_choose() == 0) { return 0; } else if (menu_index == 1 && menu_netloader() == 0) { return 0; } else if (menu_index == 2) { menu_config(); } else if (menu_index == 3) { reboot(); } else if (menu_index == 4) { poweroff(); } } if (kDown & KEY_B) { return -1; } drawBg(); drawTitle("*** Select an option ***"); for (i = 0; i < menu_count; i++) { drawItem(i == menu_index, 16 * i, menu_item[i]); } // draw "help" switch (menu_index) { case 0: drawInfo("Browse for a file to boot or add a boot entry"); break; case 1: drawInfo("Netload a file (3dsx) from the computer with 3dslink"); break; case 2: drawInfo("Edit boot settings"); break; case 3: drawInfo("Reboot the 3ds..."); break; case 4: drawInfo("Shutdown the 3ds..."); break; default: break; } gfxSwap(); } return -1; }
void pick_file(file_s *picked, const char *path) { picker = malloc(sizeof(picker_s)); get_dir(path); // key repeat timer static time_t t_start = 0, t_end = 0, t_elapsed = 0; while (aptMainLoop()) { hidScanInput(); u32 kHeld = hidKeysHeld(); u32 kDown = hidKeysDown(); if (hidKeysUp()) { time(&t_start); // reset held timer } if (kDown & KEY_DOWN) { picker->file_index++; if (picker->file_index >= picker->file_count) picker->file_index = 0; time(&t_start); } else if (kHeld & KEY_DOWN) { time(&t_end); t_elapsed = t_end - t_start; if (t_elapsed > 0) { picker->file_index++; if (picker->file_index >= picker->file_count) picker->file_index = 0; svcSleep(100); } } if (kDown & KEY_UP) { picker->file_index--; if (picker->file_index < 0) picker->file_index = picker->file_count - 1; time(&t_start); } else if (kHeld & KEY_UP) { time(&t_end); t_elapsed = t_end - t_start; if (t_elapsed > 0) { picker->file_index--; if (picker->file_index < 0) picker->file_index = picker->file_count - 1; svcSleep(100); } } if (kDown & KEY_A) { if (picker->file_count > 0) { int index = picker->file_index; if (!picker->files[index].isDir) { if (confirm(0, "Launch \"%s\" ?", picker->files[index].name)) { strncpy(picked->name, picker->files[index].name, 512); strncpy(picked->path, picker->files[index].path, 512); picked->isDir = picker->files[index].isDir; picked->size = picker->files[index].size; break; } } else { get_dir(picker->files[index].path); } } } else if (kDown & KEY_X) { int index = picker->file_index; if (!picker->files[index].isDir) { const char *ext = get_filename_ext(picker->files[index].name); if (strcasecmp(ext, "3dsx") == 0) { if (confirm(3, "Add entry to boot menu: \"%s\" ?", picker->files[index].name)) { if (config->count > CONFIG_MAX_ENTRIES - 1) { debug("Maximum entries reached (%i)\n", CONFIG_MAX_ENTRIES); } else if (configAddEntry(picker->files[index].name, picker->files[index].path, 0) == 0) { debug("Added entry: %s\n", picker->files[index].name); } else { debug("Error adding entry: %s\n", picker->files[index].name); } } } } } else if (kDown & KEY_B) { // exit if we can't go back if (strlen(picker->now_path) <= 1) break; // remove slash if needed if (end_with(picker->now_path, '/')) picker->now_path[strlen(picker->now_path) - 1] = '\0'; // build path char *slash = strrchr(picker->now_path, '/'); if (slash == NULL) break; int len = (int) (slash - picker->now_path); picker->now_path[len] = '\0'; // enter new dir get_dir(picker->now_path); } drawBg(); drawTitle("*** Select a file ***"); int i, y = 0; int page = picker->file_index / MAX_LINE; for (i = page * MAX_LINE; i < page * MAX_LINE + MAX_LINE; i++) { if (i >= picker->file_count) break; drawItemN(i == picker->file_index, 47, 16 * i, picker->files[i].name); if (i == picker->file_index && !picker->files[i].isDir) { drawInfo("Press (A) to launch\nPress (X) to add to boot menu"); } y++; } gfxSwap(); } free(picker); }
/*! reimplementing protected functions */ void PYInfoPad::paintEvent(QPaintEvent *) { QPainter painter(this); drawBg(&painter); drawCategory(&painter); }