File: gdcmCurve.h

package info (click to toggle)
gdcm 3.0.21-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 26,880 kB
  • sloc: cpp: 203,477; ansic: 78,582; xml: 48,129; python: 3,459; cs: 2,308; java: 1,629; lex: 1,290; sh: 334; php: 128; makefile: 117
file content (86 lines) | stat: -rw-r--r-- 2,622 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/*=========================================================================

  Program: GDCM (Grassroots DICOM). A DICOM library

  Copyright (c) 2006-2011 Mathieu Malaterre
  All rights reserved.
  See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.

     This software is distributed WITHOUT ANY WARRANTY; without even
     the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
     PURPOSE.  See the above copyright notice for more information.

=========================================================================*/
#ifndef GDCMCURVE_H
#define GDCMCURVE_H

#include "gdcmTypes.h"
#include "gdcmObject.h"

#include <vector>

namespace gdcm
{

class CurveInternal;
class ByteValue;
class DataSet;
class DataElement;
/**
 * \brief Curve class to handle element 50xx,3000 Curve Data
 * \details  
 *  WARNING: This is deprecated and lastly defined in PS 3.3 - 2004
 *
 *  Examples:
 *  - GE_DLX-8-MONO2-Multiframe-Jpeg_Lossless.dcm
 *  - GE_DLX-8-MONO2-Multiframe.dcm
 *  - gdcmSampleData/Philips_Medical_Images/integris_HV_5000/xa_integris.dcm
 *  - TOSHIBA-CurveData[1-3].dcm
 */
class GDCM_EXPORT Curve : public Object
{
public:
  Curve();
  ~Curve() override;
  void Print(std::ostream &) const override;

  void GetAsPoints(float *array) const;

  static unsigned int GetNumberOfCurves(DataSet const & ds);

  // Update curve data from dataelmenet de:
  void Update(const DataElement & de);

  void SetGroup(unsigned short group);
  unsigned short GetGroup() const;
  void SetDimensions(unsigned short dimensions);
  unsigned short GetDimensions() const;
  void SetNumberOfPoints(unsigned short numberofpoints);
  unsigned short GetNumberOfPoints() const;
  void SetTypeOfData(const char *typeofdata);
  const char *GetTypeOfData() const;
  // See PS 3.3 - 2004 - C.10.2.1.1 Type of data
  const char *GetTypeOfDataDescription() const;
  void SetCurveDescription(const char *curvedescription);
  void SetDataValueRepresentation(unsigned short datavaluerepresentation);
  unsigned short GetDataValueRepresentation() const;
  void SetCurveDataDescriptor(const uint16_t * values, size_t num);
  std::vector<unsigned short> const &GetCurveDataDescriptor() const;
  void SetCoordinateStartValue( unsigned short v );
  void SetCoordinateStepValue( unsigned short v );

  void SetCurve(const char *array, unsigned int length);

  bool IsEmpty() const;

  void Decode(std::istream &is, std::ostream &os);

  Curve(Curve const &ov);
private:
  double ComputeValueFromStartAndStep(unsigned int idx) const;
  CurveInternal *Internal;
};

} // end namespace gdcm

#endif //GDCMCURVE_H