TEST_F(FetchResponseDataTest, ToWebServiceWorkerDefaultType) { WebServiceWorkerResponse webResponse; FetchResponseData* internalResponse = createInternalResponse(); internalResponse->populateWebServiceWorkerResponse(webResponse); EXPECT_EQ(WebServiceWorkerResponseTypeDefault, webResponse.responseType()); CheckHeaders(webResponse); }
TEST_F(FetchResponseDataTest, ToWebServiceWorkerOpaqueRedirectType) { WebServiceWorkerResponse webResponse; FetchResponseData* internalResponse = createInternalResponse(); FetchResponseData* opaqueRedirectResponseData = internalResponse->createOpaqueRedirectFilteredResponse(); opaqueRedirectResponseData->populateWebServiceWorkerResponse(webResponse); EXPECT_EQ(WebServiceWorkerResponseTypeOpaqueRedirect, webResponse.responseType()); CheckHeaders(webResponse); }
TEST_F(FetchResponseDataTest, ToWebServiceWorkerCORSType) { WebServiceWorkerResponse webResponse; FetchResponseData* internalResponse = createInternalResponse(); FetchResponseData* corsResponseData = internalResponse->createCORSFilteredResponse(); corsResponseData->populateWebServiceWorkerResponse(webResponse); EXPECT_EQ(WebServiceWorkerResponseTypeCORS, webResponse.responseType()); CheckHeaders(webResponse); }
TEST_F(FetchResponseDataTest, ToWebServiceWorkerBasicType) { WebServiceWorkerResponse webResponse; FetchResponseData* internalResponse = createInternalResponse(); FetchResponseData* basicResponseData = internalResponse->createBasicFilteredResponse(); basicResponseData->populateWebServiceWorkerResponse(webResponse); EXPECT_EQ(WebServiceWorkerResponseTypeBasic, webResponse.responseType()); CheckHeaders(webResponse); }
unsigned int GenTextureBitmap(const char*filename){ unsigned int tex_number; int i,j; FILE *fp; //各ピクセルの輝度データ unsigned char* bitdata; // unsigned char* color_pallete_r; unsigned char* color_pallete_g; unsigned char* color_pallete_b; unsigned char* color_pallete_v; //ビットマップヘッダ BitmapHeader header; BitmapInfoHeader info; //色数 unsigned int color_bit; // ファイルオープン if( ( fp = fopen(filename, "rb") )==NULL){ return NULL; } //ヘッダ読み込み if( !ReadHeader(&header,fp) ){ fclose(fp); return NULL; } //ヘッダ読み込み if( !ReadInfoHeader(&info,fp) ){ fclose(fp); return NULL; } //ヘッダチェック if( !(color_bit = CheckHeaders(&header,&info)) ){ fclose(fp); return NULL; } //ビットマップファイルサイズチェック if( !CheckSize(info.width*info.height) ){ fclose(fp); return NULL; } //カラービット数で処理を分ける if(color_bit==8)goto bit_8; else if(color_bit==24)goto bit_24; //一応例外処理 else{ fclose(fp); return NULL; } ///////////////////////////////////////////////////////////////////// // 8bit(256色)ビットマップの処理 bit_8: unsigned char pallete_num; //カラーパレット読み込み //メモリ確保 color_pallete_r = (unsigned char*)malloc(256*sizeof(unsigned char)); color_pallete_g = (unsigned char*)malloc(256*sizeof(unsigned char)); color_pallete_b = (unsigned char*)malloc(256*sizeof(unsigned char)); color_pallete_v = (unsigned char*)malloc(256*sizeof(unsigned char)); //パレット読み込み for(i=0;i<256;i++){ fread( (color_pallete_r+i), sizeof(unsigned char),1,fp); fread( (color_pallete_g+i), sizeof(unsigned char),1,fp); fread( (color_pallete_b+i), sizeof(unsigned char),1,fp); fread( (color_pallete_v+i), sizeof(unsigned char),1,fp); } //ビットデータ読み込み bitdata = (unsigned char*)malloc(3*info.width*info.height*sizeof(unsigned char)); for(j=(info.height-1);j>=0;j--){ for(i=(info.width-1);i>=0;i--){ fread( &pallete_num, sizeof(unsigned char),1,fp); *(bitdata+3*i+3*j*info.width) = *(color_pallete_b+pallete_num); *(bitdata+3*i+3*j*info.width+1)= *(color_pallete_g+pallete_num); *(bitdata+3*i+3*j*info.width+2)= *(color_pallete_r+pallete_num); } } //カラーパレットメモリ開放 free(color_pallete_r); free(color_pallete_g); free(color_pallete_b); free(color_pallete_v); //テクスチャ作成 glGenTextures(1, &tex_number); glBindTexture(GL_TEXTURE_2D, tex_number); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, info.width, info.height, 0, GL_RGB, GL_UNSIGNED_BYTE, bitdata); free(bitdata); // ファイルクローズ fclose(fp); return tex_number; ///////////////////////////////////////////////////////////////////// // 24bit(1677万色)ビットマップの処理 bit_24: unsigned char red,green,blue; //ビットデータ読み込み //メモリ確保 bitdata = (unsigned char*)malloc(3*info.width*info.height*sizeof(unsigned char)); //読み込み for(j=(info.height-1);j>=0;j--){ for(i=(info.width-1);i>=0;i--){ fread( &red, sizeof(unsigned char),1,fp); fread( &green, sizeof(unsigned char),1,fp); fread( &blue, sizeof(unsigned char),1,fp); *(bitdata+3*i+3*j*info.width) = blue; *(bitdata+3*i+3*j*info.width+1)= green; *(bitdata+3*i+3*j*info.width+2)= red; } } //テクスチャ作成 glGenTextures(1, &tex_number); glBindTexture(GL_TEXTURE_2D, tex_number); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, info.width, info.height, 0, GL_RGB, GL_UNSIGNED_BYTE, bitdata); //メモリ開放 free(bitdata); // ファイルクローズ fclose(fp); return tex_number; }
/////////////////////////////////////////////////////////////////////////////// //ビットマップファイルからピクセルデータを返す. unsigned char* ReadBitmap(const char*filename){ int i,j; FILE *fp; //各ピクセルの輝度データ unsigned char* bitdata; // unsigned char* color_pallete_r; unsigned char* color_pallete_g; unsigned char* color_pallete_b; unsigned char* color_pallete_v; //ビットマップヘッダ BitmapHeader header; BitmapInfoHeader info; //色数 unsigned int color_bit; // ファイルオープン if( ( fp = fopen(filename, "rb") )==NULL){ return NULL; } //ヘッダ読み込み if( !ReadHeader(&header,fp) ){ fclose(fp); return NULL; } //ヘッダ読み込み if( !ReadInfoHeader(&info,fp) ){ fclose(fp); return NULL; } //ヘッダチェック if( !(color_bit = CheckHeaders(&header,&info)) ){ fclose(fp); return NULL; } //ビットマップファイルサイズチェック if( !CheckSize(info.width*info.height) ){ fclose(fp); return NULL; } //カラービット数で処理を分ける if(color_bit==8)goto bit_8; if(color_bit==24)goto bit_24; else{ fclose(fp); return NULL; } ///////////////////////////////////////////////////////////////////// // 8bit(256色)ビットマップの処理 bit_8: unsigned char pallete_num; //カラーパレット読み込み color_pallete_r = (unsigned char*)malloc(256*sizeof(unsigned char)); color_pallete_g = (unsigned char*)malloc(256*sizeof(unsigned char)); color_pallete_b = (unsigned char*)malloc(256*sizeof(unsigned char)); color_pallete_v = (unsigned char*)malloc(256*sizeof(unsigned char)); for(i=0;i<256;i++){ fread( (color_pallete_r+i), sizeof(unsigned char),1,fp); fread( (color_pallete_g+i), sizeof(unsigned char),1,fp); fread( (color_pallete_b+i), sizeof(unsigned char),1,fp); fread( (color_pallete_v+i), sizeof(unsigned char),1,fp); } //ビットデータ読み込み bitdata = (unsigned char*)malloc(3*info.width*info.height*sizeof(unsigned char)); for(i=0;i<info.width;i++){ for(j=0;j<info.height;j++){ fread( &pallete_num, sizeof(unsigned char),1,fp); *(bitdata+i+j*info.width) = *(color_pallete_b+pallete_num); *(bitdata+i+j*info.width+1)= *(color_pallete_g+pallete_num); *(bitdata+i+j*info.width+2)= *(color_pallete_b+pallete_num); } } //カラーパレットメモリ開放 free(color_pallete_r); free(color_pallete_g); free(color_pallete_b); free(color_pallete_v); free(bitdata); // ファイルクローズ fclose(fp); return NULL; ///////////////////////////////////////////////////////////////////// // 24bit(1677万色)ビットマップの処理 bit_24: unsigned char red,green,blue; //ビットデータ読み込み bitdata = (unsigned char*)malloc(3*info.width*info.height*sizeof(unsigned char)); for(i=0;i<info.width;i++){ for(j=0;j<info.height;j++){ fread( &red, sizeof(unsigned char),1,fp); fread( &green, sizeof(unsigned char),1,fp); fread( &blue, sizeof(unsigned char),1,fp); *(bitdata+i+j*info.width) = blue; *(bitdata+i+j*info.width+1)= green; *(bitdata+i+j*info.width+2)= red; } } //メモリ開放 free(bitdata); // ファイルクローズ fclose(fp); return NULL; }