MCPcopy Create free account
hub / github.com/carbonengine/trinity / GetUncompressedBitmap

Function GetUncompressedBitmap

trinity/UI/Tr2MouseCursor.cpp:221–252  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

219}
220
221std::unique_ptr<char[]> GetUncompressedBitmap( const Tr2HostBitmap* bitmap )
222{
223 std::unique_ptr<char[]> bits( new char[bitmap->GetWidth() * bitmap->GetHeight() * 4] );
224 switch( bitmap->GetFormat() )
225 {
226 case Tr2RenderContextEnum::PIXEL_FORMAT_BC1_TYPELESS:
227 case Tr2RenderContextEnum::PIXEL_FORMAT_BC1_UNORM:
228 case Tr2RenderContextEnum::PIXEL_FORMAT_BC1_UNORM_SRGB:
229 DecompressBC1( bits.get(), bitmap->GetRawData(), bitmap->GetWidth(), bitmap->GetHeight(), bitmap->GetWidth() * sizeof( uint32_t ) );
230 break;
231
232 case Tr2RenderContextEnum::PIXEL_FORMAT_BC2_TYPELESS:
233 case Tr2RenderContextEnum::PIXEL_FORMAT_BC2_UNORM:
234 case Tr2RenderContextEnum::PIXEL_FORMAT_BC2_UNORM_SRGB:
235 DecompressBC2( bits.get(), bitmap->GetRawData(), bitmap->GetWidth(), bitmap->GetHeight(), bitmap->GetWidth() * sizeof( uint32_t ) );
236 break;
237 case Tr2RenderContextEnum::PIXEL_FORMAT_B8G8R8A8_TYPELESS:
238 case Tr2RenderContextEnum::PIXEL_FORMAT_B8G8R8A8_UNORM:
239 case Tr2RenderContextEnum::PIXEL_FORMAT_B8G8R8A8_UNORM_SRGB: {
240 const char* row = bitmap->GetRawData();
241 for( uint32_t j = 0; j < bitmap->GetHeight(); ++j )
242 {
243 memcpy( bits.get() + j * bitmap->GetWidth() * 4, row, bitmap->GetWidth() * 4 );
244 row += bitmap->GetPitch();
245 }
246 }
247 break;
248 default:
249 return nullptr;
250 }
251 return bits;
252}
253
254// --------------------------------------------------------------------------------------
255// Description:

Callers 1

CreateMethod · 0.85

Calls 6

DecompressBC1Function · 0.85
DecompressBC2Function · 0.85
getMethod · 0.80
GetWidthMethod · 0.45
GetHeightMethod · 0.45
GetFormatMethod · 0.45

Tested by

no test coverage detected