Skip to content

Commit 1edc768

Browse files
committed
add getFrameSize
1 parent 0d1c5df commit 1edc768

File tree

1 file changed

+25
-8
lines changed

1 file changed

+25
-8
lines changed

src/nyx/dicom_util.h

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,34 @@
1-
#include "dcmtk/config/osconfig.h" // For DCMTK_VERSION_NUMBER and config macros
2-
#include "dcmtk/dcmdata/dctk.h" // Core DICOM toolkit (includes DcmDataset, DcmPixelData, etc.)
3-
#include "dcmtk/dcmdata/dcpixel.h" // For DcmPixelData
4-
#include "dcmtk/dcmdata/dcdeftag.h" // For DCM_PixelData tag
1+
#include "dcmtk/config/osconfig.h"
2+
#include "dcmtk/dcmdata/dctk.h"
3+
#include "dcmtk/dcmdata/dcpixel.h"
4+
#include "dcmtk/dcmdata/dcdeftag.h"
5+
6+
// Helper: Determine if the transfer syntax is uncompressed
7+
bool isUncompressedXfer(E_TransferSyntax xfer)
8+
{
9+
return xfer == EXS_LittleEndianExplicit ||
10+
xfer == EXS_LittleEndianImplicit ||
11+
xfer == EXS_BigEndianExplicit;
12+
}
513

614
Uint32 getFrameSize(DcmDataset* dataset)
715
{
8-
DcmPixelData* pixelData = nullptr;
9-
if (dataset->findAndGetElement(DCM_PixelData, pixelData).bad() || !pixelData)
16+
DcmElement* elem = nullptr;
17+
if (dataset->findAndGetElement(DCM_PixelData, elem).bad() || !elem)
18+
return 0;
19+
20+
DcmPixelData* pixelData = dynamic_cast<DcmPixelData*>(elem);
21+
if (!pixelData)
1022
return 0;
1123

1224
Uint32 frameSize = 0;
13-
OFBool isUncompressed = (pixelData->transferState() == ERW_memory);
25+
OFCondition status;
26+
27+
E_TransferSyntax xfer = dataset->getOriginalXfer();
28+
bool isUncompressed = isUncompressedXfer(xfer);
29+
30+
1431
status = pixelData->getUncompressedFrameSize(dataset, frameSize, isUncompressed);
1532

1633
return status.good() ? frameSize : 0;
17-
}
34+
}

0 commit comments

Comments
 (0)