3
* $Id: dicomimg2dcm.h 3526 2011-03-16 19:56:19Z carlos $
6
* Copyright 2008-10 MetaEmotion S.L. All rights reserved.
7
* http://ginkgo-cadx.com
9
* This file is licensed under LGPL v3 license.
10
* See License.txt for details
15
#include <api/globals.h>
16
#include <api/idicomizador.h>
18
#define MACRO_QUE_ESTORBA verify
22
#include <dcmtk/config/osconfig.h>
23
#include "libi2d/i2d.h"
24
#include "libi2d/i2djpgs.h"
25
#include "libi2d/i2dplsc.h"
26
#include "libi2d/i2dplvlp.h"
27
#include "libi2d/i2dplnsc.h"
28
#include "dcmtk/dcmdata/dcdict.h"
29
#include "dcmtk/dcmdata/dchashdi.h"
36
class DICOMImg2DCM : public IDICOMImg2DCM {
44
writeXfer = EXS_Unknown;
52
void LiberarMemoria() {
53
if (resultObject != NULL) {
57
if (inputPlug != NULL) {
61
if (outputPlug != NULL) {
71
/* Inicializa una conversión. IInspectCallback sirve para especificar un callback mediante el cual se pueden inspeccionar los atributos buscados.
73
* Formatos de entrada soportados:
75
* Formatos de salida soportados (DICOM SOP a generar):
76
* VLP (Visible Light Photography)
77
* SC (Secondary Capture)
78
* NSC (New Secondary Capture)
80
virtual void Inicializar(std::string& inputFile, IInspectCallBack* pICallback = NULL, bool debug = false, TDICOMOutputFormat outputFormat = TDOF_VLP);
82
virtual void Inicializar(unsigned char* pixelData, const int ancho, const int alto, IInspectCallBack* pICallback = NULL, bool debug = false, TDICOMOutputFormat outputFormat = TDOF_VLP);
84
void Inicializar(I2DImgSource* plugEntrada, IInspectCallBack* pICallback, bool debug, TDICOMOutputFormat outputFormat);
86
virtual int InsertarJerarquia(TipoJerarquia& base);
88
virtual int InsertarTagsPrivados(TipoPrivateTags& base);
90
virtual int InsertarTagsPrivados(TipoPrivateTags& base, DcmDataset* dcmDataSet);
92
int InsertarJerarquia(TipoJerarquia& base,DcmDataset* dcmDataSet, DcmItem* itemPadre, DcmSequenceOfItems* seqPadre);
94
/* Actualiza los campos DICOM a sobreescribir */
95
virtual void ActualizarCampos(IInspectCallBack* pICallback);
97
/* Realiza una conversión ya inicializada */
98
virtual bool Convertir(std::string& outputFile);
100
unsigned int GetElementIdentifier(GIL::DICOM::TipoPrivateTags& tags, DcmDataset* dataset);
102
bool CrearSRDoc(std::string& outputFile, TipoJerarquia& base, std::list<GnkPtr<TipoPrivateTags> >& tagsPrivados);
104
virtual void Reset() {
110
/* Crea un elemento de DCMTK parseando la cadena pasada como parámetro que debe tener el formato:
111
<hex_2_bytes>|<hex_2_bytes>
113
<hex_2_bytes>|<hex_2_bytes>=<cadena>
114
Nota: <cadena> puede ser vacía
116
DcmElement* CrearElementoConValor(const char* s);
118
// Main class for controlling conversion
120
// Output plugin to use (ie. SOP class to write)
121
I2DOutputPlug* outputPlug;
122
// Input plugin to use (ie. file format to read)
123
I2DImgSource* inputPlug;
125
DcmDataset* resultObject;
126
// The transfersytanx proposed to be written by output plugin
127
E_TransferSyntax writeXfer;