Skip to content

Commit 6ec5d2d

Browse files
committed
Use DDS size constants
1 parent 90868ae commit 6ec5d2d

6 files changed

+29
-36
lines changed

DDSTextureLoader/DDSTextureLoader11.cpp

+6-7
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ namespace
177177
return E_FAIL;
178178
}
179179

180-
if (ddsDataSize < (sizeof(uint32_t) + sizeof(DDS_HEADER)))
180+
if (ddsDataSize < DDS_MIN_HEADER_SIZE)
181181
{
182182
return E_FAIL;
183183
}
@@ -204,7 +204,7 @@ namespace
204204
(MAKEFOURCC('D', 'X', '1', '0') == hdr->ddspf.fourCC))
205205
{
206206
// Must be long enough for both headers and magic value
207-
if (ddsDataSize < (sizeof(uint32_t) + sizeof(DDS_HEADER) + sizeof(DDS_HEADER_DXT10)))
207+
if (ddsDataSize < DDS_DX10_HEADER_SIZE)
208208
{
209209
return E_FAIL;
210210
}
@@ -214,8 +214,7 @@ namespace
214214

215215
// setup the pointers in the process request
216216
*header = hdr;
217-
auto offset = sizeof(uint32_t)
218-
+ sizeof(DDS_HEADER)
217+
auto offset = DDS_MIN_HEADER_SIZE
219218
+ (bDXT10Header ? sizeof(DDS_HEADER_DXT10) : 0u);
220219
*bitData = ddsData + offset;
221220
*bitSize = ddsDataSize - offset;
@@ -273,7 +272,7 @@ namespace
273272
}
274273

275274
// Need at least enough data to fill the header and magic number to be a valid DDS
276-
if (fileInfo.EndOfFile.LowPart < (sizeof(uint32_t) + sizeof(DDS_HEADER)))
275+
if (fileInfo.EndOfFile.LowPart < DDS_MIN_HEADER_SIZE)
277276
{
278277
return E_FAIL;
279278
}
@@ -328,7 +327,7 @@ namespace
328327
(MAKEFOURCC('D', 'X', '1', '0') == hdr->ddspf.fourCC))
329328
{
330329
// Must be long enough for both headers and magic value
331-
if (fileInfo.EndOfFile.LowPart < (sizeof(uint32_t) + sizeof(DDS_HEADER) + sizeof(DDS_HEADER_DXT10)))
330+
if (fileInfo.EndOfFile.LowPart < DDS_DX10_HEADER_SIZE)
332331
{
333332
ddsData.reset();
334333
return E_FAIL;
@@ -339,7 +338,7 @@ namespace
339338

340339
// setup the pointers in the process request
341340
*header = hdr;
342-
auto offset = sizeof(uint32_t) + sizeof(DDS_HEADER)
341+
auto offset = DDS_MIN_HEADER_SIZE
343342
+ (bDXT10Header ? sizeof(DDS_HEADER_DXT10) : 0u);
344343
*bitData = ddsData.get() + offset;
345344
*bitSize = fileInfo.EndOfFile.LowPart - offset;

DDSTextureLoader/DDSTextureLoader12.cpp

+7-8
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ namespace
223223
return E_FAIL;
224224
}
225225

226-
if (ddsDataSize < (sizeof(uint32_t) + sizeof(DDS_HEADER)))
226+
if (ddsDataSize < DDS_MIN_HEADER_SIZE)
227227
{
228228
return E_FAIL;
229229
}
@@ -250,7 +250,7 @@ namespace
250250
(MAKEFOURCC('D', 'X', '1', '0') == hdr->ddspf.fourCC))
251251
{
252252
// Must be long enough for both headers and magic value
253-
if (ddsDataSize < (sizeof(uint32_t) + sizeof(DDS_HEADER) + sizeof(DDS_HEADER_DXT10)))
253+
if (ddsDataSize < DDS_DX10_HEADER_SIZE)
254254
{
255255
return E_FAIL;
256256
}
@@ -260,8 +260,7 @@ namespace
260260

261261
// setup the pointers in the process request
262262
*header = hdr;
263-
auto offset = sizeof(uint32_t)
264-
+ sizeof(DDS_HEADER)
263+
auto offset = DDS_MIN_HEADER_SIZE
265264
+ (bDXT10Header ? sizeof(DDS_HEADER_DXT10) : 0u);
266265
*bitData = ddsData + offset;
267266
*bitSize = ddsDataSize - offset;
@@ -311,7 +310,7 @@ namespace
311310
}
312311

313312
// Need at least enough data to fill the header and magic number to be a valid DDS
314-
if (fileInfo.EndOfFile.LowPart < (sizeof(uint32_t) + sizeof(DDS_HEADER)))
313+
if (fileInfo.EndOfFile.LowPart < DDS_MIN_HEADER_SIZE)
315314
{
316315
return E_FAIL;
317316
}
@@ -354,7 +353,7 @@ namespace
354353
return E_FAIL;
355354

356355
// Need at least enough data to fill the header and magic number to be a valid DDS
357-
if (fileLen < (sizeof(uint32_t) + sizeof(DDS_HEADER)))
356+
if (fileLen < DDS_MIN_HEADER_SIZE)
358357
return E_FAIL;
359358

360359
ddsData.reset(new (std::nothrow) uint8_t[size_t(fileLen)]);
@@ -404,7 +403,7 @@ namespace
404403
(MAKEFOURCC('D', 'X', '1', '0') == hdr->ddspf.fourCC))
405404
{
406405
// Must be long enough for both headers and magic value
407-
if (len < (sizeof(uint32_t) + sizeof(DDS_HEADER) + sizeof(DDS_HEADER_DXT10)))
406+
if (len < DDS_DX10_HEADER_SIZE)
408407
{
409408
ddsData.reset();
410409
return E_FAIL;
@@ -415,7 +414,7 @@ namespace
415414

416415
// setup the pointers in the process request
417416
*header = hdr;
418-
auto offset = sizeof(uint32_t) + sizeof(DDS_HEADER)
417+
auto offset = DDS_MIN_HEADER_SIZE
419418
+ (bDXT10Header ? sizeof(DDS_HEADER_DXT10) : 0u);
420419
*bitData = ddsData.get() + offset;
421420
*bitSize = len - offset;

DDSTextureLoader/DDSTextureLoader9.cpp

+7-9
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ namespace
121121
static_assert(sizeof(DDS_PIXELFORMAT) == 32, "DDS pixel format size mismatch");
122122
static_assert(sizeof(DDS_HEADER) == 124, "DDS Header size mismatch");
123123

124-
constexpr size_t DDS_MIN_HEADER_SIZE = sizeof(uint32_t) + sizeof(DDS_HEADER);
124+
constexpr size_t DDS_DX9_HEADER_SIZE = sizeof(uint32_t) + sizeof(DDS_HEADER);
125125

126126
//--------------------------------------------------------------------------------------
127127
struct handle_closer { void operator()(HANDLE h) noexcept { if (h) CloseHandle(h); } };
@@ -150,7 +150,7 @@ namespace
150150
return E_FAIL;
151151
}
152152

153-
if (ddsDataSize < (sizeof(uint32_t) + sizeof(DDS_HEADER)))
153+
if (ddsDataSize < DDS_DX9_HEADER_SIZE)
154154
{
155155
return E_FAIL;
156156
}
@@ -181,9 +181,8 @@ namespace
181181

182182
// setup the pointers in the process request
183183
*header = hdr;
184-
auto offset = sizeof(uint32_t) + sizeof(DDS_HEADER);
185-
*bitData = ddsData + offset;
186-
*bitSize = ddsDataSize - offset;
184+
*bitData = ddsData + DDS_DX9_HEADER_SIZE;
185+
*bitSize = ddsDataSize - DDS_DX9_HEADER_SIZE;
187186

188187
return S_OK;
189188
}
@@ -240,7 +239,7 @@ namespace
240239
}
241240

242241
// Need at least enough data to fill the header and magic number to be a valid DDS
243-
if (fileInfo.EndOfFile.LowPart < (sizeof(uint32_t) + sizeof(DDS_HEADER)))
242+
if (fileInfo.EndOfFile.LowPart < DDS_DX9_HEADER_SIZE)
244243
{
245244
return E_FAIL;
246245
}
@@ -300,9 +299,8 @@ namespace
300299

301300
// setup the pointers in the process request
302301
*header = hdr;
303-
auto offset = sizeof(uint32_t) + sizeof(DDS_HEADER);
304-
*bitData = ddsData.get() + offset;
305-
*bitSize = fileInfo.EndOfFile.LowPart - offset;
302+
*bitData = ddsData.get() + DDS_DX9_HEADER_SIZE;
303+
*bitSize = fileInfo.EndOfFile.LowPart - DDS_DX9_HEADER_SIZE;
306304

307305
return S_OK;
308306
}

ScreenGrab/ScreenGrab11.cpp

+3-4
Original file line numberDiff line numberDiff line change
@@ -825,13 +825,12 @@ HRESULT DirectX::SaveDDSTextureToFile(
825825
auto_delete_file delonfail(hFile.get());
826826

827827
// Setup header
828-
constexpr size_t MAX_HEADER_SIZE = sizeof(uint32_t) + sizeof(DDS_HEADER) + sizeof(DDS_HEADER_DXT10);
829-
uint8_t fileHeader[MAX_HEADER_SIZE] = {};
828+
uint8_t fileHeader[DDS_DX10_HEADER_SIZE] = {};
830829

831830
*reinterpret_cast<uint32_t*>(&fileHeader[0]) = DDS_MAGIC;
832831

833832
auto header = reinterpret_cast<DDS_HEADER*>(&fileHeader[0] + sizeof(uint32_t));
834-
size_t headerSize = sizeof(uint32_t) + sizeof(DDS_HEADER);
833+
size_t headerSize = DDS_MIN_HEADER_SIZE;
835834
header->size = sizeof(DDS_HEADER);
836835
header->flags = DDS_HEADER_FLAGS_TEXTURE | DDS_HEADER_FLAGS_MIPMAP;
837836
header->height = desc.Height;
@@ -888,7 +887,7 @@ HRESULT DirectX::SaveDDSTextureToFile(
888887
memcpy_s(&header->ddspf, sizeof(header->ddspf), &DDSPF_DX10, sizeof(DDS_PIXELFORMAT));
889888

890889
headerSize += sizeof(DDS_HEADER_DXT10);
891-
extHeader = reinterpret_cast<DDS_HEADER_DXT10*>(fileHeader + sizeof(uint32_t) + sizeof(DDS_HEADER));
890+
extHeader = reinterpret_cast<DDS_HEADER_DXT10*>(fileHeader + DDS_MIN_HEADER_SIZE);
892891
extHeader->dxgiFormat = desc.Format;
893892
extHeader->resourceDimension = D3D11_RESOURCE_DIMENSION_TEXTURE2D;
894893
extHeader->arraySize = 1;

ScreenGrab/ScreenGrab12.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,7 @@ HRESULT DirectX::SaveDDSTextureToFile(
976976
*reinterpret_cast<uint32_t*>(&fileHeader[0]) = DDS_MAGIC;
977977

978978
auto header = reinterpret_cast<DDS_HEADER*>(&fileHeader[0] + sizeof(uint32_t));
979-
size_t headerSize = sizeof(uint32_t) + sizeof(DDS_HEADER);
979+
size_t headerSize = DDS_MIN_HEADER_SIZE;
980980
header->size = sizeof(DDS_HEADER);
981981
header->flags = DDS_HEADER_FLAGS_TEXTURE | DDS_HEADER_FLAGS_MIPMAP;
982982
header->height = desc.Height;
@@ -1033,7 +1033,7 @@ HRESULT DirectX::SaveDDSTextureToFile(
10331033
memcpy(&header->ddspf, &DDSPF_DX10, sizeof(DDS_PIXELFORMAT));
10341034

10351035
headerSize += sizeof(DDS_HEADER_DXT10);
1036-
extHeader = reinterpret_cast<DDS_HEADER_DXT10*>(fileHeader + sizeof(uint32_t) + sizeof(DDS_HEADER));
1036+
extHeader = reinterpret_cast<DDS_HEADER_DXT10*>(fileHeader + DDS_MIN_HEADER_SIZE);
10371037
extHeader->dxgiFormat = desc.Format;
10381038
extHeader->resourceDimension = D3D12_RESOURCE_DIMENSION_TEXTURE2D;
10391039
extHeader->arraySize = 1;

ScreenGrab/ScreenGrab9.cpp

+4-6
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ namespace
120120
static_assert(sizeof(DDS_PIXELFORMAT) == 32, "DDS pixel format size mismatch");
121121
static_assert(sizeof(DDS_HEADER) == 124, "DDS Header size mismatch");
122122

123-
constexpr size_t DDS_MIN_HEADER_SIZE = sizeof(uint32_t) + sizeof(DDS_HEADER);
123+
constexpr size_t DDS_DX9_HEADER_SIZE = sizeof(uint32_t) + sizeof(DDS_HEADER);
124124

125125
const DDS_PIXELFORMAT DDSPF_DXT1 =
126126
{ sizeof(DDS_PIXELFORMAT), DDS_FOURCC, MAKEFOURCC('D','X','T','1'), 0, 0, 0, 0, 0 };
@@ -612,13 +612,11 @@ HRESULT DirectX::SaveDDSTextureToFile(
612612
auto_delete_file delonfail(hFile.get());
613613

614614
// Setup header
615-
constexpr size_t MAX_HEADER_SIZE = sizeof(uint32_t) + sizeof(DDS_HEADER);
616-
uint8_t fileHeader[MAX_HEADER_SIZE] = {};
615+
uint8_t fileHeader[DDS_DX9_HEADER_SIZE] = {};
617616

618617
*reinterpret_cast<uint32_t*>(&fileHeader[0]) = DDS_MAGIC;
619618

620619
auto header = reinterpret_cast<DDS_HEADER*>(&fileHeader[0] + sizeof(uint32_t));
621-
constexpr size_t headerSize = sizeof(uint32_t) + sizeof(DDS_HEADER);
622620
header->size = sizeof(DDS_HEADER);
623621
header->flags = DDS_HEADER_FLAGS_TEXTURE | DDS_HEADER_FLAGS_MIPMAP;
624622
header->height = desc.Height;
@@ -732,10 +730,10 @@ HRESULT DirectX::SaveDDSTextureToFile(
732730

733731
// Write header & pixels
734732
DWORD bytesWritten;
735-
if (!WriteFile(hFile.get(), fileHeader, static_cast<DWORD>(headerSize), &bytesWritten, nullptr))
733+
if (!WriteFile(hFile.get(), fileHeader, static_cast<DWORD>(DDS_DX9_HEADER_SIZE), &bytesWritten, nullptr))
736734
return HRESULT_FROM_WIN32(GetLastError());
737735

738-
if (bytesWritten != headerSize)
736+
if (bytesWritten != DDS_DX9_HEADER_SIZE)
739737
return E_FAIL;
740738

741739
if (!WriteFile(hFile.get(), pixels.get(), static_cast<DWORD>(slicePitch), &bytesWritten, nullptr))

0 commit comments

Comments
 (0)