r2169: *** empty log message ***
[ctsim.git] / libctsim / ctndicom.cpp
index 82d35e1db7e69defbc8c766d059332b85cb35b71..eca164dd3c4a20560f03ef68a5d3356c10789c71 100644 (file)
@@ -9,7 +9,7 @@
 **  This is part of the CTSim program
 **  Copyright (c) 1983-2001 Kevin Rosenberg
 **
-**  $Id: ctndicom.cpp,v 1.15 2002/06/27 01:48:26 kevin Exp $
+**  $Id: ctndicom.cpp,v 1.16 2002/06/27 03:19:23 kevin Exp $
 **
 **  This program is free software; you can redistribute it and/or modify
 **  it under the terms of the GNU General Public License (version 2) as
@@ -60,12 +60,18 @@ DicomImporter::DicomImporter (const char* const pszFile)
 
   unsigned short iNRows, iNCols, iBitsAllocated, iBitsStored, iHighBit, iPixRep;
   DCM_ELEMENT aElemRequired[] = {
-    {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), reinterpret_cast<char*>(&iNRows),},
-    {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), reinterpret_cast<char*>(&iNCols),},
-    {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), reinterpret_cast<char*>(&iBitsAllocated),},
-    {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), reinterpret_cast<char*>(&iBitsStored),},
-    {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), reinterpret_cast<char*>(&iHighBit),},
-    {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), reinterpret_cast<char*>(&iPixRep),},
+    {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), 
+     {reinterpret_cast<char*>(&iNRows)}},
+    {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), 
+     {reinterpret_cast<char*>(&iNCols)}},
+    {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), 
+     {reinterpret_cast<char*>(&iBitsAllocated)}},
+    {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), 
+     {reinterpret_cast<char*>(&iBitsStored)}},
+    {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), 
+     {reinterpret_cast<char*>(&iHighBit)}},
+    {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), 
+     {reinterpret_cast<char*>(&iPixRep)}},
   };
   int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT);
 
@@ -86,10 +92,12 @@ DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned
   U32 lRtnLength;
   unsigned short iSamplesPerPixel, iPlanarConfig;
   
-  DCM_ELEMENT elemPlanarConfig = {DCM_IMGPLANARCONFIGURATION, DCM_US, "", 1, sizeof(iPlanarConfig), 
-                      reinterpret_cast<char*>(&iPlanarConfig)};
-  DCM_ELEMENT elemSamplesPerPixel = {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, 
-                      sizeof(iSamplesPerPixel), reinterpret_cast<char*>(&iSamplesPerPixel)};
+  DCM_ELEMENT elemPlanarConfig = 
+    {DCM_IMGPLANARCONFIGURATION, DCM_US, "", 1, sizeof(iPlanarConfig), 
+     {reinterpret_cast<char*>(&iPlanarConfig)}};
+  DCM_ELEMENT elemSamplesPerPixel = 
+    {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, 
+     sizeof(iSamplesPerPixel), {reinterpret_cast<char*>(&iSamplesPerPixel)}};
 
   if (DCM_ParseObject (&m_pFile, &elemSamplesPerPixel, 1, NULL, 0, NULL) != DCM_NORMAL)
     iSamplesPerPixel = 1;  // default value
@@ -106,8 +114,12 @@ DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned
   char szRescaleIntercept[17];
   double dRescaleSlope = 1;
   double dRescaleIntercept = 0;
-  DCM_ELEMENT elemRescaleSlope = {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope), szRescaleSlope};
-  DCM_ELEMENT elemRescaleIntercept = {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept), szRescaleIntercept};
+  DCM_ELEMENT elemRescaleSlope = 
+    {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope), 
+     {szRescaleSlope}};
+  DCM_ELEMENT elemRescaleIntercept = 
+    {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept), 
+     {szRescaleIntercept}};
   if (DCM_ParseObject (&m_pFile, &elemRescaleSlope, 1, NULL, 0, NULL) == DCM_NORMAL) {
     if (sscanf (szRescaleSlope, "%lf", &dRescaleSlope) != 1)
       sys_error (ERR_SEVERE, "Error parsing rescale slope");
@@ -117,7 +129,7 @@ DicomImporter::loadImage(unsigned short iNRows, unsigned short iNCols, unsigned
       sys_error (ERR_SEVERE, "Error parsing rescale intercept");
   }
 
-  DCM_ELEMENT elemPixelData = {DCM_PXLPIXELDATA, DCM_OT, "", 1, 0, NULL};
+  DCM_ELEMENT elemPixelData = {DCM_PXLPIXELDATA, DCM_OT, "", 1, 0, {NULL}};
   // Get the actual  pixel data (the only other required element)
   if (DCM_GetElementSize (&m_pFile, elemPixelData.tag, &lRtnLength) != DCM_NORMAL) {
     m_bFail = true;
@@ -188,8 +200,10 @@ DicomImporter::loadProjections()
 
   unsigned short iNViews, iNDets;
   DCM_ELEMENT aElemRequired[] = {
-    {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNViews), reinterpret_cast<char*>(&iNViews)},
-    {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNDets), reinterpret_cast<char*>(&iNDets)},
+    {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNViews), 
+     {reinterpret_cast<char*>(&iNViews)}},
+    {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNDets), 
+     {reinterpret_cast<char*>(&iNDets)}},
   };
   int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT);
 
@@ -200,7 +214,7 @@ DicomImporter::loadProjections()
   }
 
   DCM_TAG somatomTag = DCM_MAKETAG(TAG_GROUP_SOMATOM, TAG_MEMBER_SOMATOM_DATA);
-  DCM_ELEMENT elemProjections = {somatomTag, DCM_UN, "", 1, 0, NULL};
+  DCM_ELEMENT elemProjections = {somatomTag, DCM_UN, "", 1, 0, {NULL}};
   if (DCM_GetElementSize (&m_pFile, elemProjections.tag, &lRtnLength) != DCM_NORMAL) {
     m_bFail = true;
     m_strFailMessage = "Can't find projection data";
@@ -356,51 +370,77 @@ DicomExporter::createDicomObject()
   unsigned short iPixRep = 0;
   unsigned short iSamplesPerPixel = 1;
   DCM_ELEMENT aElemRequired[] = {
-    {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), reinterpret_cast<char*>(&iNRows)},
-    {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), reinterpret_cast<char*>(&iNCols)},
-    {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), reinterpret_cast<char*>(&iBitsAllocated)},
-    {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), reinterpret_cast<char*>(&iBitsStored)},
-    {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), reinterpret_cast<char*>(&iHighBit)},
-    {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), reinterpret_cast<char*>(&iPixRep)},
-    {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, sizeof(iSamplesPerPixel), reinterpret_cast<char*>(&iSamplesPerPixel)},
-    {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope), szRescaleSlope},
-    {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept), szRescaleIntercept},
-    {DCM_IMGPHOTOMETRICINTERP, DCM_CS, "", 1, strlen(szImgPhotometricInterp), szImgPhotometricInterp},
-    {DCM_IMGPIXELSPACING, DCM_DS, "", 1, strlen(szPixelSpacing), szPixelSpacing},
-    {DCM_RELIMAGEORIENTATIONPATIENT, DCM_DS, "", 1, strlen(szRelImageOrientationPatient), szRelImageOrientationPatient},
-    {DCM_RELIMAGEPOSITIONPATIENT, DCM_DS, "", 1, strlen(szRelImagePositionPatient), szRelImagePositionPatient},
-    {DCM_ACQKVP, DCM_DS, "", 1, strlen(szAcqKvp), szAcqKvp},
-    {DCM_RELACQUISITIONNUMBER, DCM_IS, "", 1, strlen(szRelAcquisitionNumber), szRelAcquisitionNumber},
-    {DCM_ACQSLICETHICKNESS, DCM_DS, "", 1, strlen(szRelAcquisitionNumber), szRelAcquisitionNumber},
-    {DCM_RELIMAGENUMBER, DCM_IS, "", 1, strlen(szRelImageNumber), szRelImageNumber},
-    {DCM_IDSOPINSTANCEUID, DCM_UI, "", 1, strlen(szIDSOPInstanceUID), szIDSOPInstanceUID},
-    {DCM_IDMANUFACTURER, DCM_LO, "", 1, strlen(szIDManufacturer), szIDManufacturer},
-    {DCM_RELPOSITIONREFINDICATOR, DCM_LO, "", 1, strlen(szRelPositionRefIndicator), szRelPositionRefIndicator},
-    {DCM_RELFRAMEOFREFERENCEUID, DCM_UI, "", 1, strlen(szRelFrameOfReferenceUID), szRelFrameOfReferenceUID},
-    {DCM_RELSERIESNUMBER, DCM_IS, "", 1, strlen(szRelSeriesNumber), szRelSeriesNumber},
-    {DCM_RELSERIESINSTANCEUID, DCM_UI, "", 1, strlen(szIDAccessionNumber), szIDAccessionNumber},
-    {DCM_IDACCESSIONNUMBER, DCM_SH, "", 1, strlen(szIDAccessionNumber), szIDAccessionNumber},
-    {DCM_RELSTUDYID, DCM_SH, "", 1, strlen(szRelStudyID), szRelStudyID},
-    {DCM_IDREFERRINGPHYSICIAN, DCM_PN, "", 1, strlen(szIDReferringPhysician), szIDReferringPhysician},
-    {DCM_IDSTUDYTIME, DCM_TM, "", 1, strlen(szIDStudyTime), szIDStudyTime},
-    {DCM_IDSTUDYDATE, DCM_DA, "", 1, strlen(szIDStudyDate), szIDStudyDate},
-    {DCM_RELSTUDYINSTANCEUID, DCM_UI, "", 1, strlen(szRelStudyInstanceUID), szRelStudyInstanceUID},
-    {DCM_PATSEX, DCM_CS, "", 1, strlen(szPatSex), szPatSex},
-    {DCM_PATBIRTHDATE, DCM_DA, "", 1, strlen(szPatBirthdate), szPatBirthdate},
-    {DCM_PATID, DCM_LO, "", 1, strlen(szPatID), szPatID},
-    {DCM_PATNAME, DCM_PN, "", 1, strlen(szPatName), szPatName},
-    {DCM_IDIMAGETYPE, DCM_CS, "", 1, strlen(szIDImageType), szIDImageType},
-    {DCM_IDMODALITY, DCM_CS, "", 1, strlen(szModality), szModality},
-    {DCM_IDSOPCLASSUID, DCM_UI, "", 1, strlen(szSOPClassUID), szSOPClassUID},
-    {DCM_IDMANUFACTURERMODEL, DCM_LO, "", 1, strlen(szIDManufacturerModel), szIDManufacturerModel},
-    {DCM_PATCOMMENTS, DCM_LT, "", 1, strlen(pszPatComments), pszPatComments},
+    {DCM_IMGROWS, DCM_US, "", 1, sizeof(iNRows), 
+     {reinterpret_cast<char*>(&iNRows)}},
+    {DCM_IMGCOLUMNS, DCM_US, "", 1, sizeof(iNCols), 
+     {reinterpret_cast<char*>(&iNCols)}},
+    {DCM_IMGBITSALLOCATED, DCM_US, "", 1, sizeof(iBitsAllocated), 
+     {reinterpret_cast<char*>(&iBitsAllocated)}},
+    {DCM_IMGBITSSTORED, DCM_US, "", 1, sizeof(iBitsStored), 
+     {reinterpret_cast<char*>(&iBitsStored)}},
+    {DCM_IMGHIGHBIT, DCM_US, "", 1, sizeof(iHighBit), 
+     {reinterpret_cast<char*>(&iHighBit)}},
+    {DCM_IMGPIXELREPRESENTATION, DCM_US, "", 1, sizeof(iPixRep), 
+     {reinterpret_cast<char*>(&iPixRep)}},
+    {DCM_IMGSAMPLESPERPIXEL, DCM_US, "", 1, sizeof(iSamplesPerPixel), 
+     {reinterpret_cast<char*>(&iSamplesPerPixel)}},
+    {DCM_IMGRESCALESLOPE, DCM_DS, "", 1, strlen(szRescaleSlope), 
+     {szRescaleSlope}},
+    {DCM_IMGRESCALEINTERCEPT, DCM_DS, "", 1, strlen(szRescaleIntercept), 
+     {szRescaleIntercept}},
+    {DCM_IMGPHOTOMETRICINTERP, DCM_CS, "", 1, strlen(szImgPhotometricInterp), 
+     {szImgPhotometricInterp}},
+    {DCM_IMGPIXELSPACING, DCM_DS, "", 1, strlen(szPixelSpacing), 
+     {szPixelSpacing}},
+    {DCM_RELIMAGEORIENTATIONPATIENT, DCM_DS, "", 1, 
+     strlen(szRelImageOrientationPatient), {szRelImageOrientationPatient}},
+    {DCM_RELIMAGEPOSITIONPATIENT, DCM_DS, "", 1, 
+     strlen(szRelImagePositionPatient), {szRelImagePositionPatient}},
+    {DCM_ACQKVP, DCM_DS, "", 1, strlen(szAcqKvp), {szAcqKvp}},
+    {DCM_RELACQUISITIONNUMBER, DCM_IS, "", 1, strlen(szRelAcquisitionNumber), 
+     {szRelAcquisitionNumber}},
+    {DCM_ACQSLICETHICKNESS, DCM_DS, "", 1, strlen(szRelAcquisitionNumber), 
+     {szRelAcquisitionNumber}},
+    {DCM_RELIMAGENUMBER, DCM_IS, "", 1, strlen(szRelImageNumber), 
+     {szRelImageNumber}},
+    {DCM_IDSOPINSTANCEUID, DCM_UI, "", 1, strlen(szIDSOPInstanceUID), 
+     {szIDSOPInstanceUID}},
+    {DCM_IDMANUFACTURER, DCM_LO, "", 1, strlen(szIDManufacturer), 
+     {szIDManufacturer}},
+    {DCM_RELPOSITIONREFINDICATOR, DCM_LO, "", 1, 
+     strlen(szRelPositionRefIndicator), {szRelPositionRefIndicator}},
+    {DCM_RELFRAMEOFREFERENCEUID, DCM_UI, "", 1, 
+     strlen(szRelFrameOfReferenceUID), {szRelFrameOfReferenceUID}},
+    {DCM_RELSERIESNUMBER, DCM_IS, "", 1, strlen(szRelSeriesNumber), 
+     {szRelSeriesNumber}},
+    {DCM_RELSERIESINSTANCEUID, DCM_UI, "", 1, strlen(szIDAccessionNumber), 
+     {szIDAccessionNumber}},
+    {DCM_IDACCESSIONNUMBER, DCM_SH, "", 1, strlen(szIDAccessionNumber), 
+     {szIDAccessionNumber}},
+    {DCM_RELSTUDYID, DCM_SH, "", 1, strlen(szRelStudyID), {szRelStudyID}},
+    {DCM_IDREFERRINGPHYSICIAN, DCM_PN, "", 1, strlen(szIDReferringPhysician), 
+     {szIDReferringPhysician}},
+    {DCM_IDSTUDYTIME, DCM_TM, "", 1, strlen(szIDStudyTime), {szIDStudyTime}},
+    {DCM_IDSTUDYDATE, DCM_DA, "", 1, strlen(szIDStudyDate), {szIDStudyDate}},
+    {DCM_RELSTUDYINSTANCEUID, DCM_UI, "", 1, strlen(szRelStudyInstanceUID), 
+     {szRelStudyInstanceUID}},
+    {DCM_PATSEX, DCM_CS, "", 1, strlen(szPatSex), {szPatSex}},
+    {DCM_PATBIRTHDATE, DCM_DA, "", 1, strlen(szPatBirthdate), {szPatBirthdate}},
+    {DCM_PATID, DCM_LO, "", 1, strlen(szPatID), {szPatID}},
+    {DCM_PATNAME, DCM_PN, "", 1, strlen(szPatName), {szPatName}},
+    {DCM_IDIMAGETYPE, DCM_CS, "", 1, strlen(szIDImageType), {szIDImageType}},
+    {DCM_IDMODALITY, DCM_CS, "", 1, strlen(szModality), {szModality}},
+    {DCM_IDSOPCLASSUID, DCM_UI, "", 1, strlen(szSOPClassUID), {szSOPClassUID}},
+    {DCM_IDMANUFACTURERMODEL, DCM_LO, "", 1, strlen(szIDManufacturerModel), 
+     {szIDManufacturerModel}},
+    {DCM_PATCOMMENTS, DCM_LT, "", 1, strlen(pszPatComments), {pszPatComments}},
   };
   int nElemRequired = sizeof (aElemRequired) / sizeof(DCM_ELEMENT);
 
   int iUpdateCount;
   cond = DCM_ModifyElements (&m_pObject, aElemRequired, nElemRequired, NULL, 0, &iUpdateCount);
 
-  DCM_ELEMENT elemPixelData = {DCM_PXLPIXELDATA, DCM_OT, "", 1, 0, NULL};
+  DCM_ELEMENT elemPixelData = {DCM_PXLPIXELDATA, DCM_OT, "", 1, 0, {NULL}};
 
   unsigned long lRealLength = 2 * m_pImageFile->nx() * m_pImageFile->ny();