Fixed text file permissions
[snark14.git] / tools / Display / proj.cpp
1 /** @file proj.cpp
2     @package snark14Display
3     @author Bruno M. Carvalho and Deniz Sarioz
4     licensed under (open-source) QPL v1.0
5     which accompanies this distribution in the file QPL
6 */
7
8 #include "variables.hpp"
9 #include "proj.hpp"
10
11 #include <stdio.h>
12 #include <stdlib.h>
13 #include <malloc.h>
14 #include <qmessagebox.h>
15
16 Snarkproj::Snarkproj()
17 {
18   proj=NULL;
19   max=-100000;
20   min=100000;
21   isloaded=false;
22   fileformat=DIGDataFormat_ASCII;
23 }
24
25 Snarkproj::Snarkproj(DIGDataFormat format)
26 {
27   unsigned int i,j;
28   double *tmpimg;
29
30   max=-100000;
31   min=100000;
32   tmpimg=(double *)malloc(sizeof(double)*usrays);
33   proj=matrix(0,prjnum,0,usrays);
34   if(!format) { /* format=0 (ASCII)  */
35     projformat=DIGDataFormat_ASCII;
36     for(i=0;i<prjnum;i++) {
37 //       digprojfil.SelectArraySet(i);
38       digprojfil.SelectProj(i);
39 //       digprojfil.SelectArray(0);
40 //       digprojfil.GetArrayData(tmpimg);
41       digprojfil.GetProjData(tmpimg);
42       for(j=0;j<usrays;j++) {
43         proj[i][j]=tmpimg[j];
44         if(proj[i][j]>max)
45           max=proj[i][j];
46         if(proj[i][j]<min)
47           min=proj[i][j];
48       }
49     }
50   }
51   else { /* format=1 (BINARY) */
52     projformat=DIGDataFormat_BINARY;
53     for(i=0;i<prjnum;i++) {
54       //      digprojfil.SelectArraySet(i);
55       digprojfil.SelectProj(i);
56       //      digprojfil.SelectArray(0);
57       //      digprojfil.GetArrayData(tmpimg);
58       digprojfil.GetProjData(tmpimg);
59       for(j=0;j<usrays;j++) {
60         proj[i][j]=tmpimg[j];
61         if(proj[i][j]>max)
62           max=proj[i][j];
63         if(proj[i][j]<min)
64           min=proj[i][j];
65       }
66     }
67   }
68  isloaded=true;
69  free(tmpimg);
70 }
71
72 /*  
73  *  Destroys the object and frees any allocated resources
74  */
75 Snarkproj::~Snarkproj()
76 {
77     // no need to delete child widgets, Qt does it all for us
78 }
79
80 // void Snarkproj::readProj(DIGDataFormat format)
81 void Snarkproj::readProj()
82 {
83   int i,j;
84   double *tmpimg;
85
86   max=-100000;
87   min=100000;
88   tmpimg=(double *)malloc(sizeof(double)*usrays);
89   proj=matrix(0,prjnum,0,usrays);
90 //   if(!format) { /* format=0 (DIGDataFormat_ASCII)  */
91 //     for(i=0;i<prjnum;i++) {
92 //       //      digprojfil.SelectArraySet(i);
93 //       digprojfil.SelectProj(i);
94 //       //      digprojfil.SelectArray(0);
95 //       //      digprojfil.GetArrayData(tmpimg);
96 //       digprojfil.GetProjData(tmpimg);
97 //       for(j=0;j<usrays;j++) {
98 //      proj[i][j]=tmpimg[j];
99 //         if(proj[i][j]>max)
100 //        max=proj[i][j];
101 //         if(proj[i][j]<min)
102 //        min=proj[i][j];
103 //       }
104 //     }
105 //   }
106 //  else { /* format=1 (DIGDataFormat_BINARY) */
107     for(i=0; i< (static_cast<int>(prjnum)) ; i++) {
108       //      digprojfil.SelectArraySet(i);
109       digprojfil.SelectProj(i);
110       //      digprojfil.SelectArray(0);
111       //      digprojfil.GetArrayData(tmpimg);
112       digprojfil.GetProjData(tmpimg);
113       for(j=0; j< (static_cast<int>(usrays)) ; j++) {
114         proj[i][j]=tmpimg[j];
115         if(proj[i][j]>max)
116           max=proj[i][j];
117         if(proj[i][j]<min)
118           min=proj[i][j];
119       }
120     }
121     //  }
122  isloaded=true;
123  free(tmpimg);
124 }
125
126 double** Snarkproj::getProj()
127 {
128   return proj;
129 }
130
131 double Snarkproj::getMax()
132 {
133   return max;
134 }
135
136 double Snarkproj::getMin()
137 {
138   return min;
139 }
140
141 bool Snarkproj::isLoaded()
142 {
143   return isloaded;
144 }
145
146 double** Snarkproj::matrix(int nrl,int nrh,int ncl,int nch)
147 /*  Allocates a double array with range [npl .. nph][nrl .. nrh][ncl .. nch]  */
148 {
149    int j;
150    double **m;
151
152    m = (double **) malloc((unsigned) (nrh-nrl+1)*sizeof(double*));
153    if (!m) {
154        printf("Allocation failure in matrix() (y)\n");
155        exit(-1);
156    }
157    m -= nrl;
158    for(j=nrl; j<=nrh; j++) {
159      m[j] = (double *) malloc((unsigned) (nch-ncl+1)*sizeof(double));
160      if(!m[j]) {
161        printf("Allocation failure in matrix() (x)\n");
162        exit(-1);
163      }
164      m[j] -= ncl;
165    }
166    return m;
167 }
168