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];