+ switch( format )
+ {
+ case k_EImageFormat_RGBA8888:
+ case k_EImageFormat_ABGR8888:
+ case k_EImageFormat_ARGB8888:
+ case k_EImageFormat_BGRA8888:
+ return 4*w*h;
+
+ case k_EImageFormat_RGB888:
+ case k_EImageFormat_BGR888:
+ return 3*w*h;
+
+ case k_EImageFormat_RGB565:
+ case k_EImageFormat_IA88:
+ return 2*w*h;
+
+ case k_EImageFormat_I8:
+ return w*h;
+
+ case k_EImageFormat_DXT1:
+ return block_count * BLOCK_SIZE_DXT1;
+
+ case k_EImageFormat_DXT5:
+ return block_count * BLOCK_SIZE_DXT5;
+
+ default:
+ break;
+ }
+}
+
+static void nbvtf_read_img_data( uint8_t *src, int w, int h,
+ EImageFormat_t format, uint8_t *dst )
+{
+ switch( format )
+ {
+ case k_EImageFormat_RGBA8888:
+ for( int i=0; i<w*h*4; i++ )
+ dst[i] = src[i];
+ break;
+
+ case k_EImageFormat_ABGR8888:
+ for( int i=0; i<w*h; i++ )
+ {
+ dst[i*4+0] = src[i*4+3];
+ dst[i*4+1] = src[i*4+2];
+ dst[i*4+2] = src[i*4+1];
+ dst[i*4+3] = src[i*4+0];
+ }
+ break;
+
+ case k_EImageFormat_RGB888:
+ for( int i=0; i<w*h; i++ )
+ {
+ dst[i*4+0] = src[i*3+0];
+ dst[i*4+1] = src[i*3+1];
+ dst[i*4+2] = src[i*3+2];
+ dst[i*4+3] = 0xFF;
+ }
+ break;
+
+ case k_EImageFormat_BGR888:
+ for( int i=0; i<w*h; i++ )
+ {
+ dst[i*4+0] = src[i*3+2];
+ dst[i*4+1] = src[i*3+1];
+ dst[i*4+2] = src[i*3+0];
+ dst[i*4+3] = 0xFF;
+ }
+ break;
+
+ case k_EImageFormat_RGB565:
+ case k_EImageFormat_I8:
+ case k_EImageFormat_IA88:
+ /* Planned */
+ break;
+
+ case k_EImageFormat_ARGB8888:
+ for( int i=0; i<w*h; i++ )
+ {
+ dst[i*4+0] = src[i*4+1];
+ dst[i*4+1] = src[i*4+2];
+ dst[i*4+2] = src[i*4+3];
+ dst[i*4+3] = src[i*4+0];
+ }
+ break;
+
+ case k_EImageFormat_BGRA8888:
+ for( int i=0; i<w*h; i++ )
+ {
+ dst[i*4+0] = src[i*4+2];
+ dst[i*4+1] = src[i*4+1];
+ dst[i*4+2] = src[i*4+0];
+ dst[i*4+3] = src[i*4+3];
+ }
+ break;
+
+ case k_EImageFormat_DXT1:
+ nbvtf_decompress_dxt( src, w, h, 0, dst );
+ break;
+
+ case k_EImageFormat_DXT5:
+ nbvtf_decompress_dxt( src, w, h, 1, dst );
+ break;
+
+ default:
+ break;
+ }
+}