Пример #1
0
void gammaEdit(void){
	uint16_t x,y,z;
	setColor(rgb565);
	setRes(qqvga);
	#ifdef MT9D111
		MT9D111Refresh();
	#endif
	tft_paintScreenBlack();
	#ifdef MT9D111
		return;
	#else
		do{
			getPoint(&x,&y,&z);
			tft_setOrientation(1);
			#ifdef ov7670
				wrReg(REG_COM13, COM13_UVSAT|COM13_RSVD);
			#elif defined ov7740
				wrReg(ISP_CTRL00,rdReg(ISP_CTRL00)&(~ISP_CTRL00_gamma));
			#endif
			capImgqqvga(160);
			#ifdef ov7670
				wrReg(REG_COM13, COM13_GAMMA|COM13_UVSAT|COM13_RSVD);
			#elif defined ov7740
				wrReg(ISP_CTRL00,rdReg(ISP_CTRL00)|ISP_CTRL00_gamma);
			#endif
			capImgqqvga(0);
			tft_setDisplayDirect(DOWN2UP);
			redrawGraph();
		}while(z<10);
		setRes(qvga);
	#endif
}
Пример #2
0
void Menu::CreditsReset() {
	int w,h;
	//store curent res
	h = height;
	w = width;
	//change res for ez placment
	height = 600;
	width = 800;
	setRes(width,height);
	for(int i = 0;i<numBut;i++)
	{
		buttons[i].setLoc(100+60*i,200+60*i,300,500);
	}
	buttons[0].setlable(L"By AJ Rolle, Tyler Van Gastel,\n       and Josh Foley");
	buttons[0].setVisable(true);
	buttons[1].setlable(L"Battle Music from Pokemon");
	buttons[1].setVisAct(false);
	buttons[2].setlable(L"Battle Music from Pokemon");
	buttons[2].setVisable(true);
	buttons[3].setlable(L"Menu music and game music from metal gear");
	buttons[3].setVisable(true);
	buttons[4].setlable(L"Back to main menu");
	buttons[4].setVisAct(true);
	buttons[4].setActive(true);
	for(int i = 5;i<numBut;++i)
	{
		buttons[i].setlable(L"Blank");
		buttons[i].setVisAct(false);
	}
	//reset res
	setRes(800,600);
}
Пример #3
0
void Menu::OptionsReset() {
	int w,h;
	//store curent res
	h = height;
	w = width;
	//change res for ez placment
	height = 600;
	width = 800;
	setRes(width,height);
	for(int i = 0;i<numBut;i++)
	{
		buttons[i].setActive(true);
		buttons[i].setLoc(100+60*i,200+60*i,300,500);
	}
	buttons[0].setlable(L"arrow keys for moving");
	buttons[0].setVisAct(true);
	buttons[1].setlable(L"mouse for menus");
	buttons[1].setVisAct(true);
	buttons[2].setlable(L"also arrow keys for menus");
	buttons[2].setVisAct(true);
	buttons[3].setlable(L"Enter or click to select things in menus");
	buttons[3].setVisAct(true);
	buttons[4].setlable(L"Back to Main Menu");
	buttons[4].setVisAct(true);
	for(int i = 5;i<numBut;++i)
	{
		buttons[i].setlable(L"Blank");
		buttons[i].setVisAct(false);
	}
	//reset res
	setRes(800,600);
}
Пример #4
0
void Menu::reset()
{
	int w,h;
	//store curent res
	h = height;
	w = width;
	//change res for ez placment
	height = 600;
	width = 800;
	setRes(width,height);
	for(int i = 0;i<numBut;i++)
	{
		buttons[i].setActive(true);
		buttons[i].setLoc(250+60*i,325+60*i,500,700);
	}
	buttons[0].setlable(L"Play");
	buttons[0].setVisAct(true);
	buttons[1].setlable(L"Intro");
	buttons[1].setVisAct(false);
	buttons[2].setlable(L"Controls");
	buttons[2].setVisAct(true);
	buttons[3].setlable(L"Credits");
	buttons[3].setVisAct(true);
	buttons[4].setlable(L"Quit");
	buttons[4].setVisAct(true);
	for(int i = 5;i<numBut;++i)
	{
		buttons[i].setlable(L"Blank");
		buttons[i].setVisAct(false);
	}
	//reset res
	setRes(800,600);
}
Пример #5
0
void QMplayer::showScreen(QMplayer::Screen scr)
{
    // Full screen -> normal
    if(screen == QMplayer::ScreenFullscreen)
    {
        setRes(640480);
    }

    this->screen = scr;

    lw->setVisible(scr == QMplayer::ScreenInit);
    bOk->setVisible(scr == QMplayer::ScreenInit || scr == QMplayer::ScreenPlay || scr == QMplayer::ScreenStopped || scr == QMplayer::ScreenConnect);
    bBack->setVisible(scr == QMplayer::ScreenInit || scr == QMplayer::ScreenPlay || scr == QMplayer::ScreenStopped || QMplayer::ScreenScan || scr == QMplayer::ScreenConnect);
    bUp->setVisible(scr == QMplayer::ScreenPlay || scr == QMplayer::ScreenStopped);
    bDown->setVisible(scr == QMplayer::ScreenPlay || scr == QMplayer::ScreenStopped);
    label->setVisible(scr == QMplayer::ScreenScan || scr == QMplayer::ScreenDownload || scr == QMplayer::ScreenConnect);
    lineEdit->setVisible(scr == QMplayer::ScreenConnect);
    progress->setVisible(scr == QMplayer::ScreenScan || scr == QMplayer::ScreenDownload);

    switch(scr)
    {
        case QMplayer::ScreenInit:
            bOk->setText(">");
            bBack->setText(tr("Quit"));
            break;
        case QMplayer::ScreenPlay:
            bOk->setText(tr("Pause"));
            bBack->setText(tr("Full screen"));
            bUp->setText(tr("Vol up"));
            bDown->setText(tr("Vol down"));
#ifdef QTOPIA
            QtopiaApplication::setPowerConstraint(QtopiaApplication::Disable);
#endif
            break;
        case QMplayer::ScreenFullscreen:
#ifdef QTOPIA
            setRes(320240);
#endif
            break;
        case QMplayer::ScreenStopped:
            bOk->setText("Play");
            bBack->setText(tr("Back"));
            bUp->setText(tr(">>"));
            bDown->setText(tr("<<"));
#ifdef QTOPIA
            QtopiaApplication::setPowerConstraint(QtopiaApplication::Enable);
#endif
            break;
        case QMplayer::ScreenConnect:
            label->setText(tr("Enter host and port to connect to"));
            bOk->setText(tr("Ok"));
            bBack->setText(tr("Cancel"));
            break;
        case QMplayer::ScreenScan:
        case QMplayer::ScreenDownload:
            bBack->setText(tr("Cancel"));        
            break;
    }
}
Пример #6
0
int main(void){
	cli();//disable interrupts
	/* Setup the 8mhz PWM clock 
	 * This will be on pin 11*/
	DDRB|=(1<<3);//pin 11
	ASSR &= ~(_BV(EXCLK) | _BV(AS2));
	TCCR2A=(1<<COM2A0)|(1<<WGM21)|(1<<WGM20);
	TCCR2B=(1<<WGM22)|(1<<CS20);
	OCR2A=0;//(F_CPU)/(2*(X+1))
	DDRC&=~15;//low d0-d3 camera
	DDRD&=~252;//d7-d4 and interrupt pins
	_delay_ms(3000);
	//set up twi for 100khz
	TWSR&=~3;//disable prescaler for TWI
	TWBR=72;//set to 100khz
	//enable serial
	UBRR0H=0;
	UBRR0L=1;//0 = 2M baud rate. 1 = 1M baud. 3 = 0.5M. 7 = 250k 207 is 9600 baud rate.
	UCSR0A|=2;//double speed aysnc
	UCSR0B = (1<<RXEN0)|(1<<TXEN0);//Enable receiver and transmitter
	UCSR0C=6;//async 1 stop bit 8bit char no parity bits
	camInit();
#ifdef useVga
	setRes(VGA);
	setColorSpace(BAYER_RGB);
	wrReg(0x11,25);
#elif defined(useQvga)
	setRes(QVGA);
	setColorSpace(YUV422);
	wrReg(0x11,12);
#else
	setRes(QQVGA);
	setColorSpace(YUV422);
	wrReg(0x11,3);
#endif
	/* If you are not sure what value to use here for the divider (register 0x11)
	 * Values I have found to work raw vga 25 qqvga yuv422 12 qvga yuv422 21
	 * run the commented out test below and pick the smallest value that gets a correct image */
	while (1){
		/* captureImg operates in bytes not pixels in some cases pixels are two bytes per pixel
		 * So for the width (if you were reading 640x480) you would put 1280 if you are reading yuv422 or rgb565 */
		/*uint8_t x=63;//Uncomment this block to test divider settings note the other line you need to uncomment
		  do{
		  wrReg(0x11,x);
		  _delay_ms(1000);*/
#ifdef useVga
		captureImg(640,480);
#elif defined(useQvga)
		captureImg(320*2,240);
#else
		captureImg(160*2,120);
#endif
		//}while(--x);//Uncomment this line to test divider settings
	}
}
Пример #7
0
PlayerResourceDisplay::PlayerResourceDisplay(int res, int x, int y)
    : CCSprite(), Display(), res_(res)
{
    setRes(res);
    setPosition(ccp(x,y));
    
    CCSize size = boundingBox().size;
    
    label_ = CCLabelTTF::create("0", "Thonburi", 32 );
    label_->setPosition(ccp(size.width/2, size.height/2));
    addChild(label_);
}
Пример #8
0
void Menu::battleResetWithMoves(Pokemon a_pikachu) {
	int w,h;
	//store curent res
	h = height;
	w = width;
	//change res for ez placment
	height = 600;
	width = 800;
	setRes(width,height);
	buttons[0].setActive(true);
	buttons[0].setLoc(450,525,10,210);
	buttons[1].setActive(true);
	buttons[1].setLoc(450,525,210,410);
	buttons[2].setActive(true);
	buttons[2].setLoc(525,600,10,210);
	buttons[3].setActive(true);
	buttons[3].setLoc(525,600,210,410);

	for(int i = 4;i<numBut;++i)
	{
		buttons[i].setActive(false);
		buttons[i].setLoc(100+60*i,150+60*i,300,500);
	}
	buttons[0].setlable(a_pikachu.getMove(0).getName());
	buttons[0].setVisAct(true);
	buttons[1].setlable(a_pikachu.getMove(1).getName());
	buttons[1].setVisAct(true);
	buttons[2].setlable(a_pikachu.getMove(2).getName());
	buttons[2].setVisAct(true);
	buttons[3].setlable(a_pikachu.getMove(3).getName());
	buttons[3].setVisAct(true);
	for(int i = 4;i<numBut;++i)
	{
		buttons[i].setlable(L"Blank");
		buttons[i].setVisAct(false);
	}
	//reset res
	setRes(800,600);
}
Пример #9
0
void Menu::battleReset() {
	int w,h;
	//store curent res
	h = height;
	w = width;
	//change res for ez placment
	height = 600;
	width = 800;
	setRes(width,height);
	buttons[0].setActive(true);
	buttons[0].setLoc(450,525,10,210);
	buttons[1].setActive(true);
	buttons[1].setLoc(450,525,210,410);
	buttons[2].setActive(true);
	buttons[2].setLoc(525,600,10,210);
	buttons[3].setActive(true);
	buttons[3].setLoc(525,600,210,410);

	for(int i = 4;i<numBut;++i)
	{
		buttons[i].setActive(false);
		buttons[i].setLoc(100+60*i,150+60*i,300,500);
	}
	buttons[0].setlable(L"Fight");
	buttons[0].setVisAct(true);
	buttons[1].setlable(L"Bag");
	buttons[1].setVisAct(true);
	buttons[2].setlable(L"Pokemon");
	buttons[2].setVisAct(true);
	buttons[3].setlable(L"Run");
	buttons[3].setVisAct(true);
	for(int i = 4;i<numBut;++i)
	{
		buttons[i].setlable(L"Blank");
		buttons[i].setVisAct(false);
	}
	//reset res
	setRes(800,600);
}
Пример #10
0
void RayTracingRenderer::render(Scene & scene) {
	setRes(scene.camera->xRes(), scene.camera->yRes());

	//clear m_rgbaBuffer
	this->m_rgbaBuffer(scene.camera->xRes(), scene.camera->yRes());
	this->m_rgbaBuffer.reset(Color4f(0));

	//setup progress reporting using Platform::Progress
	Platform::Progress renderProgress("Initializing", (scene.camera->xRes()/50)+1);

	//for each pixel generate a camera ray 
	unsigned int xRes = scene.camera->xRes();
	unsigned int yRes = scene.camera->yRes();
	for (unsigned int i = 0; i < xRes; i++) {
		for (unsigned int j = 0; j < yRes; j++) {
			auto r = std::unique_ptr<Ray>(new Ray());
			scene.camera->generateRay(r.get(), static_cast<float>(i), static_cast<float>(j));
	
			//loop over all scene objects and find the closest intersection
			for (unsigned int k = 0; k < scene.shapes.size(); k++)
				scene.shapes[k]->intersect(r.get());

			//if ray hit something then shade it
			if (r->hit.shape != 0 && r->hit.surfaceShader != 0) {
				std::stack<float> refraction = std::stack<float>();
				refraction.push(1);
				Math::Color3f shaded = r->hit.surfaceShader->shade(r->hit, &scene, refraction);
				
				m_rgbaBuffer(i,j).x = shaded.x;
				m_rgbaBuffer(i,j).y = shaded.y;
				m_rgbaBuffer(i,j).z = shaded.z;
				m_rgbaBuffer(i,j).w = 1;
			} else
				m_rgbaBuffer(i,j) = scene.background->getBackground(r->d);
		}

		if (i % 50 == 0)
			renderProgress.step();
	}
	renderProgress.step();

	//Copy the final rendering to the texture
	glBindTexture(GL_TEXTURE_2D, m_fbo->colorTextureID(0));
	glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_fbo->width(), m_fbo->height(), GL_RGBA, GL_FLOAT, &m_rgbaBuffer(0,0));
	glBindTexture(GL_TEXTURE_2D, 0);
	
	//Render to Screen
	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	m_fbo->displayAsFullScreenTexture(FBO_COLOR0);
}
Пример #11
0
void
PhotonMapper::render(Scene &scene)
{
    int xRes = scene.camera.xRes();
    int yRes = scene.camera.yRes();
    setRes(xRes, yRes);
    
	//clear m_rgbaBuffer
    m_rgbaBuffer.reset(Math::Color4f(1.0,1,1,1.0));
	//setup progress reporting using Platform::Progress
    
	//for each pixel generate a camera ray
    
    if (scene.photonMap == NULL && scene.specularPhotonMap == NULL) {
        scene.emit_scatterPhotons();
    }
    Platform::Progress progress = Platform::Progress("Raytracing Image", xRes*yRes);    
    for (int i=0; i < xRes; i++) {

        #pragma omp parallel for
        for (int j=0; j<yRes; j++) {
            Ray r = Ray();
            scene.camera.generateRay(r, i, j);
            Math::Vec3f col = recursiveRender(r, *(scene.photonMap), *(scene.specularPhotonMap), scene, true);
            m_rgbaBuffer(i, j) = Math::Vec4f(col.x, col.y, col.z, 1.0);
        }
        progress.step(yRes);
    }
	
	//Copy the final rendering to the texture
    glBindTexture(GL_TEXTURE_2D, m_fbo.colorTextureID(0));
    glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, m_fbo.width(), m_fbo.height(), GL_RGBA, GL_FLOAT, &m_rgbaBuffer(0,0));
    glBindTexture(GL_TEXTURE_2D, 0);    //Render to Screen
	m_fbo.blitFramebuffer(FBO_COLOR0);
//    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
//    m_fbo.displayAlphaAsFullScreenTexture(FBO_COLOR0);

}
Пример #12
0
void QMplayer::showScreen(QMplayer::Screen scr)
{
    // Full screen -> normal
    if(screen == QMplayer::ScreenFullscreen)
    {
        setRes(640480);
    }

    // Disable suspend if enter these screens and enable if leave
    enableDisableSuspend(ScreenEncodingInProgress, scr, screen);
    enableDisableSuspend(ScreenPlay, scr, screen);

    this->screen = scr;

    lw->setVisible(scr == QMplayer::ScreenInit || scr == QMplayer::ScreenEncoding);
    bOk->setVisible(scr == QMplayer::ScreenInit || scr == QMplayer::ScreenPlay || scr == QMplayer::ScreenStopped || scr == QMplayer::ScreenConnect || scr == QMplayer::ScreenTube || scr == QMplayer::ScreenEncoding);
    bBack->setVisible(scr == QMplayer::ScreenInit || scr == QMplayer::ScreenPlay || scr == QMplayer::ScreenStopped || scr == QMplayer::ScreenScan || scr == QMplayer::ScreenConnect  || scr == QMplayer::ScreenTube || scr == QMplayer::ScreenCmd || scr == ScreenEncodingInProgress);
    bUp->setVisible(scr == QMplayer::ScreenPlay || scr == QMplayer::ScreenStopped);
    bDown->setVisible(scr == QMplayer::ScreenPlay || scr == QMplayer::ScreenStopped);
    label->setVisible(scr == QMplayer::ScreenScan || scr == QMplayer::ScreenDownload || scr == QMplayer::ScreenConnect || scr == QMplayer::ScreenTube || scr == QMplayer::ScreenCmd || scr == ScreenEncodingInProgress);
    lineEdit->setVisible(scr == QMplayer::ScreenConnect);
    progress->setVisible(scr == QMplayer::ScreenScan || scr == QMplayer::ScreenDownload || scr == QMplayer::ScreenTube || scr == QMplayer::ScreenCmd || scr == ScreenEncodingInProgress);

    bOk->setEnabled(true);

#ifdef QTOPIA
    rmMpAction->setEnabled(scr == QMplayer::ScreenInit);
    rmDlAction->setEnabled(scr == QMplayer::ScreenInit);
    rmFlvAction->setEnabled(scr == QMplayer::ScreenInit);
#endif

    switch(scr)
    {
        case QMplayer::ScreenInit:
            bOk->setText(">");
            bBack->setText(tr("Quit"));
            encodingItem->setText(tr("Encode"));
            break;
        case QMplayer::ScreenPlay:
            bOk->setText(tr("Pause"));
            bBack->setText(tr("Full screen"));
            bUp->setText(tr("Vol up"));
            bDown->setText(tr("Vol down"));
            break;
        case QMplayer::ScreenFullscreen:
#ifdef QTOPIA
            setRes(320240);
#endif
            break;
        case QMplayer::ScreenStopped:
            bOk->setText("Play");
            bBack->setText(tr("Back"));
            bUp->setText(tr(">>"));
            bDown->setText(tr("<<"));
            break;
        case QMplayer::ScreenConnect:
            label->setText(tr("Enter host and port to connect to"));
            bOk->setText(tr("Ok"));
            bBack->setText(tr("Cancel"));
            break;
        case QMplayer::ScreenScan:
        case QMplayer::ScreenDownload:
            bBack->setText(tr("Cancel"));        
            break;
        case QMplayer::ScreenTube:
            setDlText();
            progress->setMaximum(100);
            progress->setValue((int)uload);
            bOk->setText("Watch Now!");
            bOk->setEnabled(!ufname.isEmpty());
            bBack->setText(tr("Cancel"));
            break;
        case QMplayer::ScreenCmd:
            bBack->setText(tr("Cancel"));
            break;
        case QMplayer::ScreenEncoding:
            encodingItem->setText(tr("Select file to encode"));
            break;
        case QMplayer::ScreenEncodingInProgress:
            bBack->setText(tr("Cancel"));
            progress->setMaximum(100);
            progress->setValue(0);
            break;
    }
}
Пример #13
0
void menu(void) {
    uint16_t x,y,z;
    while (1) {
        switch (selection((const char**)menu_table,10)) {
        case 0:
#ifdef MT9D111
            setRes(QVGA);
            setColor(RGB565);
            MT9D111Refresh();
            editRegs(0);
#else
            setColor(RGB565);
            setRes(QVGA);
            editRegs();
#endif
            break;
        case 1:
#ifdef MT9D111
            setRes(QVGA);
            setColor(RGB565);
            MT9D111Refresh();
            editRegs(1);
#else
#ifdef ov7740
            setmatrix(selection((const char**)maxtrix_table,2));
#else
            setmatrix(selection((const char**)maxtrix_table,3));
#endif
            tft_setOrientation(1);
            capImg();
            tft_setDisplayDirect(DOWN2UP);
#endif
            break;
        case 2:
#ifdef ov7670
            initCam(0);
#else
            initCam();
#endif
            break;
#ifndef MT9D111
        case 3:
            //compare matrices
            tft_setOrientation(1);
            do {
                getPoint(&x,&y,&z);
                uint8_t a;
#ifdef ov7670
                for (a=0; a<3; a++) {
#elif defined ov7740
                for (a=0; a<2; a++) {
#endif
                    setmatrix(a);
                    capImg();
                }
            }
            while (z < 10);
            tft_setDisplayDirect(DOWN2UP);
            break;
#endif
        case 4:
            setColor(RGB565);
            setRes(QQVGA);
#ifdef MT9D111
            MT9D111Refresh();
#endif
            do {
                getPoint(&x,&y,&z);
                tft_setOrientation(1);
                capImgqqvga(160);
                tft_setDisplayDirect(DOWN2UP);
            } while(z<10);
            setRes(QVGA);
            break;
        case 5:
#ifdef ov7670
            setColor(RGB565);
#endif
            gammaEdit();
            break;
        case 6:
            //File browser
            //start by listing files
#ifdef haveSDcard
            browserSD();
#else
            tft_drawStringP(PSTR("No SD card"),16,320,3,WHITE);
            _delay_ms(666);
#endif
            break;
        case 7:
#ifdef ov7670
        {   uint8_t pick=selection((const char**)wb_table,7);//registers from http://thinksmallthings.wordpress.com/2012/10/25/white-balance-control-with-ov7670/
            if(pick==1||pick==2) {
                wrReg(0x13, 0xE7);
                wrReg(0x6F, 0x9E|(pick&1));
            } else {
                wrReg(0x13, 0xE5);
                switch(pick) {
                case 2:
                    wrReg(0x01, 0x5A);
                    wrReg(0x02, 0x5C);
                    break;
                case 3:
                    wrReg(0x01, 0x58);
                    wrReg(0x02, 0x60);
                    break;
                case 4:
                    wrReg(0x01, 0x84);
                    wrReg(0x02, 0x4C);
                    break;
                case 5:
                    wrReg(0x01, 0x96);
                    wrReg(0x02, 0x40);
                    break;
                }
            }
            tft_setOrientation(1);
            setRes(QVGA);
            setColor(RGB565);
            capImg();
            tft_setDisplayDirect(DOWN2UP);
        }
#endif
        break;
        case 8:
#ifdef ov7670
            wrReg(0x1e,rdReg(0x1e)&(~(1<<5))&(~(1<<4)));
#endif
            {
#ifdef MT9D111
                uint8_t reso=selection((const char**)res_tab,4);
#else
                uint8_t reso=selection((const char**)res_tab,3);
#endif
#ifdef MT9D111
                wrReg16(0xF0,2);//page 2
                wrReg16(0x0D,0);
                setColor(YUV422);
#endif
                switch(reso) {
                case 0:
#ifdef ov7670
                    wrReg(REG_COM7, COM7_BAYER); // BGBGBG... GRGRGR...
#elif defined MT9D111
                    //setup jpeg
                    MT9D111JPegCapture();
#endif
                    break;
                case 1:
#ifdef MT9D111
                    setRes(SVGA);
#else
                    setRes(QVGA);
                    setColor(YUV422);
#endif
                    break;
#ifdef MT9D111
                case 2:
                    setRes(QVGA);
                    break;
#endif
                default:
                    goto theEnd;
                    break;
                }
#ifdef ov7670
                _delay_ms(200);
                if(reso)
                    wrReg(0x11,1);
                else
                    wrReg(0x11,2);
#endif
                tft_setOrientation(1);
                do {
#ifdef MT9D111
                    switch(reso) {
                    case 0:
                    {   uint32_t jpgSize=capJpeg();
                        serialWrB('R');
                        serialWrB('D');
                        serialWrB('Y');
                        uint16_t w;
                        uint8_t h=0;
                        serialWrB(jpgSize&255);
                        serialWrB(jpgSize>>8);
                        serialWrB(jpgSize>>16);
                        serialWrB(jpgSize>>24);
                        while(jpgSize) {
                            if(jpgSize>=640) {
                                for (w=0; w<320; ++w) {
                                    tft_setXY(h,w);
                                    BSend();
                                }
                                ++h;
                                jpgSize-=640;
                            } else {
                                for(w=0; w<jpgSize/2; ++w) {
                                    tft_setXY(h,w);
                                    BSend();
                                }
                                if(jpgSize&1) {
                                    tft_setXY(h,w);
                                    uint16_t res=tft_readRegister(0x22);
                                    serialWrB(res>>8);
                                }
                                jpgSize=0;
                            }
                        }
                    }
                    break;
                    case 1:
                        capImgPC();
                        break;
                    case 2:
                        capImgPCqvga();
                        break;
                    }
#else
                    if(reso)
                        capImgPCqvga();
                    else
                        capImgPC();
#endif
                    getPoint(&x,&y,&z);
                } while(z<10);
theEnd:
                tft_setDisplayDirect(DOWN2UP);
            }
            break;
        case 9:
            switch(selection((const char**)menu_tablep2,3)) {
            case 0:
            {
                tft_drawImage_P(exit_icon,32,32,0,0);
                uint16_t x1,y1;
                do {
                    getPoint(&x,&y,&z);
                } while(z<10);
                if((y<=32)&&(x<=32))
                    break;
                tft_fillCircle(x,y,4,WHITE);
                while(1) {
                    x1=x;
                    y1=y;
                    do {
                        getPoint(&x,&y,&z);
                    } while(z<10);
                    tft_fillRectangle(224,320,16,36,BLACK);
                    tft_fillCircle(x1,y1,4,BLACK);
                    tft_fillCircle(x,y,4,WHITE);
                    if((y<=32)&&(x<=32))
                        break;
                    char temp[6];
                    utoa(x,temp,10);
                    tft_drawString(temp,224,320,1,WHITE);
                    utoa(y,temp,10);
                    tft_drawString(temp,232,320,1,WHITE);
                }
            }
            break;
            case 1:
                //time lapse
#ifdef MT9D111
                //MT9D111Refresh();
                //Since This is a time lapse we want to be in "video" mode
                MT9D111JPegCapture();
                /*do{
                	_delay_ms(10);
                	wrReg16(0xC6,(1<<15)|(1<<13)|(1<<8)|4);
                }while(rdReg16(0xC8)<4);
                waitStateMT9D111(3);*/
#endif
#ifdef haveSDcard
                {
                    char buf[24];
                    uint16_t imgc=0;
                    tft_setOrientation(1);
                    do {
                        FIL Fo;
#ifdef MT9D111
                        uint32_t jpgSize=capJpeg();
#else
                        capImg();
#endif
                        utoa(imgc,buf,10);
#ifdef MT9D111
                        strcat(buf,".JPG");
#else
                        strcat(buf,".RAW");
#endif
                        f_open(&Fo,buf,FA_WRITE|FA_CREATE_ALWAYS);
                        ++imgc;
                        UINT written;
                        uint16_t w;
                        uint8_t h;
                        uint16_t cpybuf[320];
#ifdef MT9D111
                        h=0;
                        uint8_t * cpyptr=cpybuf;
                        for(w=0; w<619; ++w)
                            *cpyptr++=pgm_read_byte_near(jpegHeader+w);
                        f_write(&Fo,cpybuf,619,&written);
                        while(jpgSize) {
                            if(jpgSize>=640) {
                                for (w=0; w<320; ++w) {
                                    tft_setXY(h,w);
                                    cpybuf[w]=__builtin_bswap16(tft_readRegister(0x22));//Either bytes need to be swapped or a byte is being missed
                                }
                                f_write(&Fo,cpybuf,640,&written);
                                ++h;
                                jpgSize-=640;
                            } else {
                                for(w=0; w<jpgSize/2; ++w) {
                                    tft_setXY(h,w);
                                    cpybuf[w]=__builtin_bswap16(tft_readRegister(0x22));
                                }
                                f_write(&Fo,cpybuf,jpgSize,&written);
                                if(jpgSize&1) {
                                    tft_setXY(h,w);
                                    cpybuf[w]=tft_readRegister(0x22);
                                    f_write(&Fo,&cpybuf[w],1,&written);
                                }
                                jpgSize=0;
                            }
                        }
                        cpybuf[0]=0xFFD9;
                        f_write(&Fo,cpybuf,2,&written);
#else
                        for (h=0; h<240; ++h) {
                            for (w=0; w<320; ++w) {
                                tft_setXY(h,w);
                                cpybuf[w]=tft_readRegister(0x22);
                            }
                            f_write(&Fo,cpybuf,640,&written);
                        }
#endif
                        f_close(&Fo);
                        getPoint(&x,&y,&z);
                    } while(z<10);
                    tft_setDisplayDirect(DOWN2UP);
#ifdef MT9D111
                    MT9D111DoPreview();
#endif
                }
#else
                tft_drawStringP(PSTR("No SD card"),16,320,3,WHITE);
                _delay_ms(666);
#endif
                break;
            case 2:
                //previous page
                break;
            }
            break;
        }
    }
}
Пример #14
0
UnicodeString
PluralRules::getRuleFromResource(const Locale& locale, UPluralType type, UErrorCode& errCode) {
    UnicodeString emptyStr;

    if (U_FAILURE(errCode)) {
        return emptyStr;
    }
    LocalUResourceBundlePointer rb(ures_openDirect(NULL, "plurals", &errCode));
    if(U_FAILURE(errCode)) {
        return emptyStr;
    }
    const char *typeKey;
    switch (type) {
    case UPLURAL_TYPE_CARDINAL:
        typeKey = "locales";
        break;
    case UPLURAL_TYPE_ORDINAL:
        typeKey = "locales_ordinals";
        break;
    default:
        // Must not occur: The caller should have checked for valid types.
        errCode = U_ILLEGAL_ARGUMENT_ERROR;
        return emptyStr;
    }
    LocalUResourceBundlePointer locRes(ures_getByKey(rb.getAlias(), typeKey, NULL, &errCode));
    if(U_FAILURE(errCode)) {
        return emptyStr;
    }
    int32_t resLen=0;
    const char *curLocaleName=locale.getName();
    const UChar* s = ures_getStringByKey(locRes.getAlias(), curLocaleName, &resLen, &errCode);

    if (s == NULL) {
        // Check parent locales.
        UErrorCode status = U_ZERO_ERROR;
        char parentLocaleName[ULOC_FULLNAME_CAPACITY];
        const char *curLocaleName=locale.getName();
        uprv_strcpy(parentLocaleName, curLocaleName);

        while (uloc_getParent(parentLocaleName, parentLocaleName,
                                       ULOC_FULLNAME_CAPACITY, &status) > 0) {
            resLen=0;
            s = ures_getStringByKey(locRes.getAlias(), parentLocaleName, &resLen, &status);
            if (s != NULL) {
                errCode = U_ZERO_ERROR;
                break;
            }
            status = U_ZERO_ERROR;
        }
    }
    if (s==NULL) {
        return emptyStr;
    }

    char setKey[256];
    UChar result[256];
    u_UCharsToChars(s, setKey, resLen + 1);
    // printf("\n PluralRule: %s\n", setKey);


    LocalUResourceBundlePointer ruleRes(ures_getByKey(rb.getAlias(), "rules", NULL, &errCode));
    if(U_FAILURE(errCode)) {
        return emptyStr;
    }
    resLen=0;
    LocalUResourceBundlePointer setRes(ures_getByKey(ruleRes.getAlias(), setKey, NULL, &errCode));
    if (U_FAILURE(errCode)) {
        return emptyStr;
    }

    int32_t numberKeys = ures_getSize(setRes.getAlias());
    char *key=NULL;
    int32_t len=0;
    for(int32_t i=0; i<numberKeys; ++i) {
        int32_t keyLen;
        resLen=0;
        s=ures_getNextString(setRes.getAlias(), &resLen, (const char**)&key, &errCode);
        keyLen = (int32_t)uprv_strlen(key);
        u_charsToUChars(key, result+len, keyLen);
        len += keyLen;
        result[len++]=COLON;
        uprv_memcpy(result+len, s, resLen*sizeof(UChar));
        len += resLen;
        result[len++]=SEMI_COLON;
    }
    result[len++]=0;
    u_UCharsToChars(result, setKey, len);
    // printf(" Rule: %s\n", setKey);

    return UnicodeString(result);
}