Mercurial > love-experiments
comparison src/libraries/ddsparse/ddsparse.cpp @ 1421:aa603d1b03bc image-CompressedData
Code cleanup
| author | Alex Szpakowski <slime73@gmail.com> |
|---|---|
| date | Fri, 05 Apr 2013 18:55:44 -0300 |
| parents | 2a5ef265e040 |
| children | 377f9dad7a2d |
comparison
equal
deleted
inserted
replaced
| 1420:2a5ef265e040 | 1421:aa603d1b03bc |
|---|---|
| 79 if ((header->format.flags & DDPF_FOURCC) && (header->format.fourCC == FourCC('D','X','1','0'))) | 79 if ((header->format.flags & DDPF_FOURCC) && (header->format.fourCC == FourCC('D','X','1','0'))) |
| 80 { | 80 { |
| 81 // Data must be big enough for both headers plus the magic value. | 81 // Data must be big enough for both headers plus the magic value. |
| 82 if (dataSize < (sizeof(uint32_t) + sizeof(DDSHeader) + sizeof(DDSHeader10))) | 82 if (dataSize < (sizeof(uint32_t) + sizeof(DDSHeader) + sizeof(DDSHeader10))) |
| 83 return false; | 83 return false; |
| 84 | |
| 85 } | 84 } |
| 86 | 85 |
| 87 return true; | 86 return true; |
| 88 } | 87 } |
| 89 | 88 |
| 104 Image img = *it; | 103 Image img = *it; |
| 105 | 104 |
| 106 if ((options & OPTIONS_COPY_DATA) && img.dataSize > 0) | 105 if ((options & OPTIONS_COPY_DATA) && img.dataSize > 0) |
| 107 { | 106 { |
| 108 uint8_t *data = 0; | 107 uint8_t *data = 0; |
| 109 | |
| 110 try | 108 try |
| 111 { | 109 { |
| 112 data = new uint8_t[img.dataSize]; | 110 data = new uint8_t[img.dataSize]; |
| 113 } | 111 } |
| 114 catch (std::exception &) | 112 catch (std::exception &) |
| 115 { | 113 { |
| 116 clearData(); | 114 clearData(); |
| 117 throw; | 115 throw; |
| 118 } | 116 } |
| 119 | 117 memcpy(data, it->data, img.dataSize); |
| 120 img.data = data; | 118 img.data = data; |
| 121 } | 119 } |
| 122 | 120 |
| 123 texData.push_back(img); | 121 texData.push_back(img); |
| 124 } | 122 } |
| 162 else if (fmt.fourCC == FourCC('D','X','T','3')) | 160 else if (fmt.fourCC == FourCC('D','X','T','3')) |
| 163 return FORMAT_DXT3; | 161 return FORMAT_DXT3; |
| 164 else if (fmt.fourCC == FourCC('D','X','T','5')) | 162 else if (fmt.fourCC == FourCC('D','X','T','5')) |
| 165 return FORMAT_DXT5; | 163 return FORMAT_DXT5; |
| 166 else if (fmt.fourCC == FourCC('A','T','I','2')) | 164 else if (fmt.fourCC == FourCC('A','T','I','2')) |
| 167 return FORMAT_BC5u; | 165 return FORMAT_BC5; |
| 166 else if (fmt.fourCC == FourCC('B','C','5','S')) | |
| 167 return FORMAT_BC5s; | |
| 168 } | 168 } |
| 169 | 169 |
| 170 return FORMAT_UNKNOWN; | 170 return FORMAT_UNKNOWN; |
| 171 } | 171 } |
| 172 | 172 |
| 194 case DXGI_FORMAT_BC5_SNORM: | 194 case DXGI_FORMAT_BC5_SNORM: |
| 195 f = FORMAT_BC5s; | 195 f = FORMAT_BC5s; |
| 196 break; | 196 break; |
| 197 case DXGI_FORMAT_BC5_TYPELESS: | 197 case DXGI_FORMAT_BC5_TYPELESS: |
| 198 case DXGI_FORMAT_BC5_UNORM: | 198 case DXGI_FORMAT_BC5_UNORM: |
| 199 f = FORMAT_BC5u; | 199 f = FORMAT_BC5; |
| 200 break; | 200 break; |
| 201 case DXGI_FORMAT_BC7_TYPELESS: | 201 case DXGI_FORMAT_BC7_TYPELESS: |
| 202 case DXGI_FORMAT_BC7_UNORM: | 202 case DXGI_FORMAT_BC7_UNORM: |
| 203 f = FORMAT_BC7; | 203 f = FORMAT_BC7; |
| 204 break; | 204 break; |
| 219 { | 219 { |
| 220 case FORMAT_DXT1: | 220 case FORMAT_DXT1: |
| 221 case FORMAT_DXT3: | 221 case FORMAT_DXT3: |
| 222 case FORMAT_DXT5: | 222 case FORMAT_DXT5: |
| 223 case FORMAT_BC5s: | 223 case FORMAT_BC5s: |
| 224 case FORMAT_BC5u: | 224 case FORMAT_BC5: |
| 225 case FORMAT_BC7: | 225 case FORMAT_BC7: |
| 226 case FORMAT_BC7srgb: | 226 case FORMAT_BC7srgb: |
| 227 { | 227 { |
| 228 int numBlocksWide = 0; | 228 int numBlocksWide = 0; |
| 229 if (width > 0) | 229 if (width > 0) |
| 267 | 267 |
| 268 // Create our own copy of the data, if requested. | 268 // Create our own copy of the data, if requested. |
| 269 if (options & OPTIONS_COPY_DATA) | 269 if (options & OPTIONS_COPY_DATA) |
| 270 { | 270 { |
| 271 uint8_t *newData = 0; | 271 uint8_t *newData = 0; |
| 272 | |
| 273 try | 272 try |
| 274 { | 273 { |
| 275 newData = new uint8_t[img.dataSize]; | 274 newData = new uint8_t[img.dataSize]; |
| 276 } | 275 } |
| 277 catch (std::exception &) | 276 catch (std::exception &) |
| 278 { | 277 { |
| 279 // Clean up before throwing. | 278 // Clean up before throwing. |
| 280 clearData(); | 279 clearData(); |
| 281 throw; | 280 throw; |
| 282 } | 281 } |
| 283 | |
| 284 memcpy(newData, &data[offset], img.dataSize); | 282 memcpy(newData, &data[offset], img.dataSize); |
| 285 img.data = newData; | 283 img.data = newData; |
| 286 } | 284 } |
| 287 else | 285 else |
| 288 img.data = &data[offset]; | 286 img.data = &data[offset]; |
