DYT/Tool/3rdParty_x64/include/dcmtk/dcmpstat/dvpsspl.h
2024-11-22 23:19:31 +08:00

217 lines
7.5 KiB
C++

/*
*
* Copyright (C) 1998-2012, OFFIS e.V.
* All rights reserved. See COPYRIGHT file for details.
*
* This software and supporting documentation were developed by
*
* OFFIS e.V.
* R&D Division Health
* Escherweg 2
* D-26121 Oldenburg, Germany
*
*
* Module: dcmpstat
*
* Author: Marco Eichelberg
*
* Purpose:
* classes: DVPSStoredPrint_PList
*
*/
#ifndef DVPSSPL_H
#define DVPSSPL_H
#include "dcmtk/config/osconfig.h" /* make sure OS specific configuration is included first */
#include "dcmtk/dcmpstat/dvpstyp.h"
#include "dcmtk/dcmpstat/dpdefine.h"
#include "dcmtk/ofstd/oflist.h"
#include "dcmtk/dcmdata/dcvrus.h"
#include "dcmtk/dcmdata/dcvrui.h"
#include "dcmtk/dcmnet/dimse.h"
class DVInterface;
class DVPSStoredPrint;
class DVConfiguration;
class DVPSPresentationLUT_PList;
/** a list of stored print objects, each of which manages a single Basic
* Film Box in a Print SCP.
*/
class DCMTK_DCMPSTAT_EXPORT DVPSStoredPrint_PList
{
public:
/// default constructor
DVPSStoredPrint_PList();
/// copy constructor
DVPSStoredPrint_PList(const DVPSStoredPrint_PList& copy);
/** clone method.
* @return a pointer to a new DVPSStoredPrint_PList object containing
* a deep copy of this object.
*/
DVPSStoredPrint_PList *clone() { return new DVPSStoredPrint_PList(*this); }
/// destructor
virtual ~DVPSStoredPrint_PList();
/** reset the object to initial state.
* After this call, the object is in the same state as after
* creation with the default constructor.
*/
void clear();
/** get number of stored print objects in this list.
* @return the number of stored print objects.
*/
size_t size() const { return list_.size(); }
/** adds a Stored Print object to the list of managed objects. The stored
* print object becomes owned by this object and is destroyed upon
* destruction of the list.
* @param newSP Stored Print object to be added.
*/
void insert(DVPSStoredPrint *newSP) { if (newSP) list_.push_back(newSP); }
/** performs a Print SCP Basic Film Box N-SET operation.
* The results of the N-SET operation are stored in the
* objects passed as rsp and rspDataset.
* @param cfg config file facility
* @param cfgname symbolic printer name in config file
* @param rq N-SET request message
* @param rqDataset N-SET request dataset
* @param rsp N-SET response message
* @param rspDataset N-SET response dataset passed back in this parameter
* @param presentationLUTnegotiated
* OFTrue if support for the Presentation LUT SOP class
* has been negotiated at association negotiation
* @param globalPresentationLUTList
* list of presentation LUTs managed by the Print SCP
*/
void printSCPBasicFilmBoxSet(
DVConfiguration& cfg,
const char *cfgname,
T_DIMSE_Message& rq,
DcmDataset *rqDataset,
T_DIMSE_Message& rsp,
DcmDataset *& rspDataset,
OFBool presentationLUTnegotiated,
DVPSPresentationLUT_PList& globalPresentationLUTList);
/** performs a Print SCP Basic Grayscale Image Box N-SET operation.
* The results of the N-SET operation are stored in the
* objects passed as rsp and rspDataset.
* If successful, a Hardcopy Grayscale Image object containing
* the image data of the N-SET request is created in the database.
* @param cfg config file facility
* @param cfgname symbolic printer name in config file
* @param rq N-SET request message
* @param rqDataset N-SET request dataset
* @param rsp N-SET response message
* @param rspDataset N-SET response dataset passed back in this parameter
* @param presentationLUTnegotiated
* OFTrue if support for the Presentation LUT SOP class
* has been negotiated at association negotiation
*/
void printSCPBasicGrayscaleImageBoxSet(
DVInterface& cfg,
const char *cfgname,
T_DIMSE_Message& rq,
DcmDataset *rqDataset,
T_DIMSE_Message& rsp,
DcmDataset *& rspDataset,
OFBool presentationLUTnegotiated);
/** performs a Print SCP Basic Film Box N-ACTION operation.
* The results of the N-ACTION operation are stored in the
* object passed as rsp.
* If successful, a Stored Print object containing the film box
* hierarchy is created in the database.
* @param cfg config file facility
* @param cfgname symbolic printer name in config file
* @param rq N-ACTION request message
* @param rsp N-ACTION response message
* @param globalPresentationLUTList list of presentation LUTs managed by the Print SCP
*/
void printSCPBasicFilmBoxAction(
DVInterface& cfg,
const char *cfgname,
T_DIMSE_Message& rq,
T_DIMSE_Message& rsp,
DVPSPresentationLUT_PList& globalPresentationLUTList);
/** performs a Print SCP Basic Film Session N-ACTION operation.
* The results of the N-ACTION operation are stored in the
* object passed as rsp.
* If successful, one Stored Print object for each film box
* in the film session is created in the database.
* @param cfg config file facility
* @param cfgname symbolic printer name in config file
* @param rsp N-ACTION response message
* @param globalPresentationLUTList list of presentation LUTs managed by the Print SCP
*/
void printSCPBasicFilmSessionAction(
DVInterface& cfg,
const char *cfgname,
T_DIMSE_Message& rsp,
DVPSPresentationLUT_PList& globalPresentationLUTList);
/** performs a Print SCP basic film box N-DELETE operation.
* The results of the N-DELETE operation are stored in the object passed as rsp.
* @param rq N-DELETE request message
* @param rsp N-DELETE response message
*/
void printSCPBasicFilmBoxDelete(T_DIMSE_Message& rq, T_DIMSE_Message& rsp);
/** checks whether a film box object with the given SOP instance UID
* already exists.
* @param uid uid to be checked
* @return OFTrue if found, OFFalse otherwise
*/
OFBool haveFilmBoxInstance(const char *uid);
/** checks whether the Presentation LUT with the given UID
* is referenced by any Stored Print object in this list
* on the film box level.
* @param uid uid to be compared
* @return OFTrue if equal, OFFalse otherwise
*/
OFBool usesPresentationLUT(const char *uid);
/** checks whether the given Presentation LUT type could be used together
* with all image boxes in all film boxes on a Print SCP that requires a matching
* alignment between a Presentation LUT and the image pixel data.
* @param align LUT alignment type
* @return OFTrue if matching, OFFalse otherwise
*/
OFBool matchesPresentationLUT(DVPSPrintPresentationLUTAlignment align) const;
/** replaces the settings for illumination, reflected ambient light and
* referenced Presentation LUT in all film boxes in this list.
* Used by a Print SCP if Presentation LUT is implemented on Film Session
* level.
* @param newIllumination new value for illumination
* @param newReflectedAmbientLight new value for reflectedAmbientLight
* @param newReferencedPLUT new value for referenced presentation LUT instance UID
* @param newAlignment new alignment type of active presentation LUT
*/
void overridePresentationLUTSettings(
DcmUnsignedShort& newIllumination,
DcmUnsignedShort& newReflectedAmbientLight,
DcmUniqueIdentifier& newReferencedPLUT,
DVPSPrintPresentationLUTAlignment newAlignment);
private:
/// private undefined assignment operator
DVPSStoredPrint_PList& operator=(const DVPSStoredPrint_PList&);
/** the list maintained by this object
*/
OFList<DVPSStoredPrint *> list_;
};
#endif