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 }
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); }
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); }
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); }
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; } }
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 } }
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_); }
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); }
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); }
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); }
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); }
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; } }
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; } } }
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); }