示例#1
0
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);
	
}
示例#2
0
void Renderer::drawFrame()
{
	TRACK_CALL_TEXT("Renderer::drawFrame");
	drawBg();
	drawScene(false);
	drawGui();
}
示例#3
0
void mySliderButton::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing|QPainter::HighQualityAntialiasing);
    drawBg(&painter);
    drawBar(&painter);
    drawText(&painter);
}
示例#4
0
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);
}
示例#5
0
void SwitchButton::paintEvent(QPaintEvent *)
{
    //绘制准备工作,启用反锯齿
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    //绘制背景
    drawBg(&painter);
    //绘制滑块
    drawSlider(&painter);
}
示例#6
0
void WorldUIView::draw() {	
	if(isVisible()){	
		drawBg();
		drawSurface();
		drawObjects();
		drawBorder();
		drawParams();

		UIView::draw();
	}		
	
}
示例#7
0
void SliderRuler::paintEvent(QPaintEvent *)
{
    //绘制准备工作,启用反锯齿
    QPainter painter(this);
    painter.setRenderHints(QPainter::Antialiasing | QPainter::TextAntialiasing);

    //绘制背景
    drawBg(&painter);
    //绘制标尺
    drawRule(&painter);
    //绘制滑块
    drawSlider(&painter);
    //绘制当前值的提示
    drawTip(&painter);
}
示例#8
0
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();
    }
}
示例#9
0
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();
    }
}
示例#10
0
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;
}
示例#11
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;
}
示例#12
0
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();
}
示例#14
0
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;
}
示例#15
0
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);
}
示例#16
0
/*!
  reimplementing protected functions
*/
void PYInfoPad::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    drawBg(&painter);
    drawCategory(&painter);
}