1 /*
2 *
3 * Copyright (C) 2002-2010, OFFIS e.V.
4 * All rights reserved. See COPYRIGHT file for details.
5 *
6 * This software and supporting documentation were developed by
7 *
8 * OFFIS e.V.
9 * R&D Division Health
10 * Escherweg 2
11 * D-26121 Oldenburg, Germany
12 *
13 *
14 * Module: dcmimage
15 *
16 * Author: Marco Eichelberg
17 *
18 * Purpose: class DcmQuantPixelBoxArray
19 *
20 */
21
22
23 #include "dcmtk/config/osconfig.h"
24 #include "dcmtk/ofstd/ofcast.h"
25 #include "dcmtk/dcmimage/diqtpbox.h" /* for DcmQuantPixelBoxArray */
26
27 #ifdef USE_STD_CXX_INCLUDES
28 // Solaris defines qsort() in namespace std, other compilers don't...
29 namespace std { }
30 using namespace std;
31 #endif
32
33
34 BEGIN_EXTERN_C
sumcompare(const void * x1,const void * x2)35 static int sumcompare(const void *x1, const void *x2)
36 {
37 return (*(DcmQuantPixelBoxPointer *) x2)->sum
38 - (*(DcmQuantPixelBoxPointer *) x1)->sum;
39 }
40 END_EXTERN_C
41
42
sort(unsigned long boxes)43 void DcmQuantPixelBoxArray::sort(unsigned long boxes)
44 {
45 #ifdef DEBUG
46 assert(boxes <= length);
47 #endif
48 qsort(OFreinterpret_cast(char *, array), OFstatic_cast(unsigned int, boxes), sizeof(DcmQuantPixelBoxPointer), sumcompare);
49 }
50
51
DcmQuantPixelBoxArray(unsigned long entries)52 DcmQuantPixelBoxArray::DcmQuantPixelBoxArray(unsigned long entries)
53 : array(NULL)
54 , length(entries)
55 {
56 array = new DcmQuantPixelBoxPointer[entries];
57 for (unsigned long i=0; i<entries; i++) array[i] = new DcmQuantPixelBox();
58 }
59
60
~DcmQuantPixelBoxArray()61 DcmQuantPixelBoxArray::~DcmQuantPixelBoxArray()
62 {
63 for (unsigned long i=0; i<length; i++) delete array[i];
64 delete[] array;
65 }
66