Home | History | Annotate | Download | only in util

Lines Matching defs:raw

89    rawImageRec *raw;
101 raw = (rawImageRec *)calloc(1, sizeof(rawImageRec));
102 if (raw == NULL) {
106 raw->file = fopen(fileName, "rb");
107 if (raw->file == NULL) {
110 raw->file = fopen(baseName + 1, "rb");
111 if(raw->file == NULL) {
113 free(raw);
118 result = fread(raw, 1, 12, raw->file);
122 ConvertShort(&raw->imagic, 1);
123 ConvertShort(&raw->type, 1);
124 ConvertShort(&raw->dim, 1);
125 ConvertShort(&raw->sizeX, 1);
126 ConvertShort(&raw->sizeY, 1);
127 ConvertShort(&raw->sizeZ, 1);
130 raw->tmp = (unsigned char *)malloc(raw->sizeX*256);
131 raw->tmpR = (unsigned char *)malloc(raw->sizeX*256);
132 raw->tmpG = (unsigned char *)malloc(raw->sizeX*256);
133 raw->tmpB = (unsigned char *)malloc(raw->sizeX*256);
134 if (raw->sizeZ==4) {
135 raw->tmpA = (unsigned char *)malloc(raw->sizeX*256);
137 if (raw->tmp == NULL || raw->tmpR == NULL || raw->tmpG == NULL ||
138 raw->tmpB == NULL) {
140 free(raw->tmp);
141 free(raw->tmpR);
142 free(raw->tmpG);
143 free(raw->tmpB);
144 free(raw->tmpA);
145 free(raw);
149 if ((raw->type & 0xFF00) == 0x0100) {
150 x = raw->sizeY * raw->sizeZ * sizeof(GLuint);
151 raw->rowStart = (GLuint *)malloc(x);
152 raw->rowSize = (GLint *)malloc(x);
153 if (raw->rowStart == NULL || raw->rowSize == NULL) {
155 free(raw->tmp);
156 free(raw->tmpR);
157 free(raw->tmpG);
158 free(raw->tmpB);
159 free(raw->tmpA);
160 free(raw->rowStart);
161 free(raw->rowSize);
162 free(raw);
165 raw->rleEnd = 512 + (2 * x);
166 fseek(raw->file, 512, SEEK_SET);
167 result = fread(raw->rowStart, 1, x, raw->file);
169 result = fread(raw->rowSize, 1, x, raw->file);
172 ConvertLong(raw->rowStart, (long) (x/sizeof(GLuint)));
173 ConvertLong((GLuint *)raw->rowSize, (long) (x/sizeof(GLint)));
176 return raw;
179 static void RawImageClose(rawImageRec *raw)
181 fclose(raw->file);
182 free(raw->tmp);
183 free(raw->tmpR);
184 free(raw->tmpG);
185 free(raw->tmpB);
186 if (raw->rowStart)
187 free(raw->rowStart);
188 if (raw->rowSize)
189 free(raw->rowSize);
190 if (raw->sizeZ>3) {
191 free(raw->tmpA);
193 free(raw);
196 static void RawImageGetRow(rawImageRec *raw, unsigned char *buf, int y, int z)
202 if ((raw->type & 0xFF00) == 0x0100) {
203 fseek(raw->file, (long) raw->rowStart[y+z*raw->sizeY], SEEK_SET);
204 result = fread(raw->tmp, 1, (unsigned int)raw->rowSize[y+z*raw->sizeY],
205 raw->file);
206 assert(result == (unsigned int)raw->rowSize[y+z*raw->sizeY]);
208 iPtr = raw->tmp;
229 fseek(raw->file, 512+(y*raw->sizeX)+(z*raw->sizeX*raw->sizeY),
231 result = fread(buf, 1, raw->sizeX, raw->file);
232 assert(result == raw->sizeX);
237 static void RawImageGetData(rawImageRec *raw, TK_RGBImageRec *final)
242 final->data = (unsigned char *)malloc((raw->sizeX+1)*(raw->sizeY+1)*4);
249 for (i = 0; i < (int)(raw->sizeY); i++) {
250 RawImageGetRow(raw, raw->tmpR, i, 0);
251 RawImageGetRow(raw, raw->tmpG, i, 1);
252 RawImageGetRow(raw, raw->tmpB, i, 2);
253 if (raw->sizeZ>3) {
254 RawImageGetRow(raw, raw->tmpA, i, 3);
256 for (j = 0; j < (int)(raw->sizeX); j++) {
257 *ptr++ = *(raw->tmpR + j);
258 *ptr++ = *(raw->tmpG + j);
259 *ptr++ = *(raw->tmpB + j);
260 if (raw->sizeZ>3) {
261 *ptr++ = *(raw->tmpA + j);
270 rawImageRec *raw;
273 raw = RawImageOpen(fileName);
274 if (!raw) {
281 RawImageClose(raw);
284 final->sizeX = raw->sizeX;
285 final->sizeY = raw->sizeY;
286 final->components = raw->sizeZ;
287 RawImageGetData(raw, final);
288 RawImageClose(raw);