| 123 | } |
| 124 | |
| 125 | void Decompress( u8* rgba, void const* block, int flags ) |
| 126 | { |
| 127 | // fix any bad flags |
| 128 | flags = FixFlags( flags ); |
| 129 | |
| 130 | // get the block locations |
| 131 | void const* colourBlock = block; |
| 132 | void const* alphaBock = block; |
| 133 | if( ( flags & ( kDxt3 | kDxt5 ) ) != 0 ) |
| 134 | colourBlock = reinterpret_cast< u8 const* >( block ) + 8; |
| 135 | |
| 136 | // decompress colour |
| 137 | DecompressColour( rgba, colourBlock, ( flags & kDxt1 ) != 0 ); |
| 138 | |
| 139 | // decompress alpha separately if necessary |
| 140 | if( ( flags & kDxt3 ) != 0 ) |
| 141 | DecompressAlphaDxt3( rgba, alphaBock ); |
| 142 | else if( ( flags & kDxt5 ) != 0 ) |
| 143 | DecompressAlphaDxt5( rgba, alphaBock ); |
| 144 | } |
| 145 | |
| 146 | int GetStorageRequirements( int width, int height, int flags ) |
| 147 | { |
no test coverage detected