dcmtk打印流程之loadImage分析

来源:互联网 发布:淘宝的运费险是什么意思 编辑:程序博客网 时间:2024/06/07 01:03

OFCondition DVInterface::loadImage(const char *imgName){

    newState->createFromImage(*dataset)

}

DVPresentationState::createFromImage

DcmPresentationState::createFromImage{

  if (result==EC_Normal) result = activationLayerList.createFromImage(dset,
    graphicLayerList, overlayList, overlayActivation, curveActivation, layering);

  /* create reference for this image */
  if (EC_Normal == result) result = addImageReference(dset, aetitle, filesetID, filesetUID);

  /* create displayed area selection item for this image */
  if (EC_Normal == result) result = createDefaultDisplayedArea(dset);

  /* create softcopy VOI LUT sequence item for this image if necessary */
  if (EC_Normal == result) result = softcopyVOIList.createFromImage(dset,
    referencedSeriesList, ofsopclassUID.c_str(), ofimageUID.c_str(), voiActivation);

}

addImageReference调用referencedSeriesList.addImageReference

OFCondition DcmPresentationState::addImageReference(
    const char *studyUID,
    const char *seriesUID,
    const char *sopclassUID,
    const char *instanceUID,
    const char *frames,
    const char *aetitle,
    const char *filesetID,
    const char *filesetUID)
{
  if ((studyUID==NULL)||(seriesUID==NULL)||(sopclassUID==NULL)||(instanceUID==NULL)) return EC_IllegalCall;

  OFString study;
  studyInstanceUID.getOFString(study,0);
  if (study != studyUID)
  {
    DCMPSTAT_WARN("cannot add reference to image with different Study Instance UID.");
    return EC_IllegalCall;
  }
  return referencedSeriesList.addImageReference(seriesUID, sopclassUID, instanceUID, frames, aetitle, filesetID, filesetUID);
}


 result = series->addImageReference(sopclassUID, instanceUID, frames);
 if (EC_Normal == result) series->setRetrieveLocation(aetitle, filesetID, filesetUID);

  return referencedImageList.(sopclassUID, instanceUID, frames);

OFCondition DVPSReferencedImage_PList::addImageReference(
    const char *sopclassUID,
    const char *instanceUID,
    const char *frames)
{
  OFCondition result = EC_Normal;

  /* make sure that we don't create two references to the same image */
  if (findImageReference(instanceUID)) result = EC_IllegalCall;
  else
  {
    DVPSReferencedImage *image = new DVPSReferencedImage();
    if (image)
    {
      image->setSOPClassUID(sopclassUID);
      image->setSOPInstanceUID(instanceUID);
      if (frames) image->setFrameNumbers(frames);
      list_.push_back(image);
    } else result = EC_MemoryExhausted;
  }
  return result;
}


0 0