This file is indexed.

/usr/include/vtkDICOMImageCodec.h is in libvtk-dicom-dev 0.7.4-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

  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
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/*=========================================================================

  Program: DICOM for VTK

  Copyright (c) 2012-2015 David Gobbi
  All rights reserved.
  See Copyright.txt or http://dgobbi.github.io/bsd3.txt 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 vtkDICOMImageCodec_h
#define vtkDICOMImageCodec_h

#include <vtkSystemIncludes.h>
#include "vtkDICOMModule.h" // For export macro

#include <string>

class vtkDICOMMetaData;

//! Codecs for encapsulated images.
/*!
 *  DICOM supports a wide variety of image compression methods.
 */
class VTKDICOM_EXPORT vtkDICOMImageCodec
{
public:
  enum EnumType
  {
    LittleEndian,      // 1.2.1     Little endian
    BigEndian,         // 1.2.2     Big endian
    RLE,               // 1.2.5     RLE packbits
    JPEGBaseline,      // 1.2.4.50  JPEG baseline (1)
    JPEGExtended,      // 1.2.4.51  JPEG extended (1,2,4)
    JPEGLossless,      // 1.2.4.57  JPEG lossless (14)
    JPEGPrediction,    // 1.2.4.70  JPEG lossless prediction (14)
    JPEGLS,            // 1.2.4.80  JPEG-LS
    JPEGLSConstrained, // 1.2.4.81  JPEG-LS constrained error
    JPEG2K,            // 1.2.4.90  JPEG 2000 lossless
    JPEG2KLossless,    // 1.2.4.91  JPEG 2000 lossless/lossy
    MPEG2ML,           // 1.2.4.100 MPEG2 ML
    MPEG2HL,           // 1.2.4.101 MPEG2 HL
    MPEG2HP,           // 1.2.4.102 MPEG4 AVC/H.264 High Profile / Level 4.1
    MPEG2BD,           // 1.2.4.103 MPEG4 AVC/H.264 BD-compatible
    NumberOfCodecs
  };

  enum ErrorCode
  {
    NoError,
    MissingCodec,
    BadPixelFormat,
    MissingData,
    UnknownError
  };

  //! A struct to store basic image information for a codec
  struct ImageFormat
  {
    unsigned short Rows;
    unsigned short Columns;
    unsigned short BitsAllocated;
    unsigned short BitsStored;
    unsigned short PixelRepresentation;
    unsigned short SamplesPerPixel;
    unsigned short PlanarConfiguration;
    bool AllowLossyCompression;

    ImageFormat() : Rows(0), Columns(0), BitsAllocated(0), BitsStored(0),
                    PixelRepresentation(0), SamplesPerPixel(0),
                    PlanarConfiguration(0), AllowLossyCompression(false) {}

    ImageFormat(vtkDICOMMetaData *meta);
  };

  //@{
  //! Construct an object for the default codec (little endian uncompressed).
  vtkDICOMImageCodec() : Key(0) {}

  //! Construct a codec object from the given code.
  /*!
   *  The code can be any of the enumerated code values.
   */
  vtkDICOMImageCodec(int k) : Key(static_cast<unsigned char>(k)) {}

  //! Get a codec for the specified transfer syntax UID.
  /*!
   *  This generates an 8-bit code that uniquely identifies a DICOM
   *  compression method, given the transfer syntax.
   */
  explicit vtkDICOMImageCodec(const std::string& syntax);
  //@}

  //@{
  //! Get the transfer syntax for this codec.
  /*!
   *  If the object is invalid, then an empty string is returned.
   */
  std::string GetTransferSyntaxUID() const;

  //! Get the numerical identifier for this codec.
  unsigned char GetKey() const { return this->Key; }
  //@}

  //@{
  //! Decode a compressed image into the given destination buffer.
  /*!
   *  The length of the source buffer must be provided.  The destination
   *  must be large enough to accept the entire decompressed frame.  On
   *  error, the error code is returned, and on success, zero is returned.
   */
  int Decode(const ImageFormat& image,
             const unsigned char *source, size_t sourceSize,
             unsigned char *dest, size_t destSize) const;

  //! Encode a compressed image, and return an allocated destination buffer.
  /*!
   *  The caller has the responsibility of calling "free" on the returned
   *  destination buffer.
   */
  int Encode(const ImageFormat& image,
             const unsigned char *source, size_t sourceSize,
             unsigned char **dest, size_t *destSize) const;
  //@}

  //@{
  bool operator==(vtkDICOMImageCodec b) const { return (this->Key == b.Key); }
  bool operator!=(vtkDICOMImageCodec b) const { return (this->Key != b.Key); }
  bool operator<=(vtkDICOMImageCodec a) const { return (this->Key <= a.Key); }
  bool operator>=(vtkDICOMImageCodec a) const { return (this->Key >= a.Key); }
  bool operator<(vtkDICOMImageCodec a) const { return (this->Key < a.Key); }
  bool operator>(vtkDICOMImageCodec a) const { return (this->Key > a.Key); }
  //@}

private:
  unsigned char Key;
  static const char *UIDs[16];

  static int DecodeRLE(
    const ImageFormat& image,
    const unsigned char *source, size_t sourceSize,
    unsigned char *dest, size_t destSize);

  static int EncodeRLE(
    const ImageFormat& image,
    const unsigned char *source, size_t sourceSize,
    unsigned char **dest, size_t *destSize);

  //! Unpack one little-endian int.
  static unsigned int UnpackUnsignedInt(const void *source) {
    const unsigned char *cp = static_cast<const unsigned char *>(source);
    return cp[0] + (cp[1] << 8) + (cp[2] << 16) + (cp[3] << 24); }
};

VTKDICOM_EXPORT ostream& operator<<(ostream& o, const vtkDICOMImageCodec& a);

#endif /* vtkDICOMImageCodec_h */
// VTK-HeaderTest-Exclude: vtkDICOMImageCodec.h