- GWorldPtr gw;
- err = QTNewGWorldFromPtr(&gw, k32ARGBPixelFormat, &natbounds, NULL, NULL,
- 0, texture.data, 4 * natbounds.right);
- if(err)return;
-
- cr = GraphicsImportSetGWorld(gi, gw, NULL);
-
- natbounds.top = natbounds.bottom;
- natbounds.bottom = 0;
-
- cr = GraphicsImportSetBoundsRect(gi, &natbounds);
-
- cr = GraphicsImportDraw(gi);
-
- err = CloseComponent(gi);
- if(err)return;
-
- /*glTexImage2D(textureTarget, 0, GL_RGBA, natbounds.right, natbounds.top, 0,
- GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, buf);
- */
-
- //free(buf);
- DisposeGWorld(gw);
-
- // Loop Through The Image Data
- GLuint imageSize; // Used To Store The Image Size When Setting Aside Ram
- GLuint temp; // Temporary Variable
- GLuint bytesPerPixel; // Temporary Variable
- bytesPerPixel=texture.bpp/8;
- imageSize = texture.sizeX * texture.sizeY * bytesPerPixel;
- //~ int alltrans=10;
-
- for( GLuint i = 0; i < int( imageSize ); i += 4 )
- {
- // Swaps The 1st And 3rd Bytes ('R'ed and 'B'lue)
- temp = texture.data[i]; // Temporarily Store The Value At Image Data 'i'
- texture.data[i] = texture.data[i + 1]; // Set The 1st Byte To The Value Of The 3rd Byte
- texture.data[i + 1] = texture.data[i + 2]; // Set The 3rd Byte To The Value In 'temp' (1st Byte Value)
- texture.data[i + 2] = texture.data[i + 3];
- texture.data[i + 3] = temp;
- }
-
- //~ int tempplace;
- //~ tempplace=0;
- if(!hasalpha){
- for( GLuint i = 0; i < int( imageSize ); i += 4 )
- {
- texture.data[i + 3] = 255;
- /*texture.data[tempplace] = texture.data[i]; // Set The 1st Byte To The Value Of The 3rd Byte
- texture.data[tempplace + 1] = texture.data[i + 1]; // Set The 3rd Byte To The Value In 'temp' (1st Byte Value)
- texture.data[tempplace + 2] = texture.data[i + 2];
- tempplace+=3;*/
- }
- }
-
- if(texdetail>1){
- int which=0;
- float temp;
- float howmany;
- for( GLuint k = 0; k < int( imageSize); k += bytesPerPixel*texture.sizeX*texdetail )
- {
- for( GLuint i = 0; i < int( imageSize/texture.sizeY ); i += bytesPerPixel*texdetail )
- {
- for( GLuint b = 0; b < bytesPerPixel ; b ++ ){
- temp=0;
- howmany=0;
- for( GLuint l = 0; l < texdetail*texture.sizeX ; l +=texture.sizeX ){
- for( GLuint j = 0; j < texdetail ; j ++ )
- {
- temp += (int)texture.data[k+i+j*bytesPerPixel+l*bytesPerPixel+b]; // Set The 1st Byte To The Value Of The 3rd Byte
- howmany++;
- }
- }
- texture.data[which+b]=GLubyte(temp/howmany);
- }
- which+=bytesPerPixel;
- }
- }
- texture.sizeX/=texdetail;
- texture.sizeY/=texdetail;
- }
-
- return true;
-
-#endif