1 /*============================================================
2 *
3 * This file is a part of digiKam project
4 * https://www.digikam.org
5 *
6 * Description : Hugin parser API
7 *
8 * Copyright (C) 2007 by Daniel M German <dmgerman at uvic doooot ca>
9 * Copyright (C) 2012 by Benjamin Girault <benjamin dot girault at gmail dot com>
10 *
11 * This program is free software; you can redistribute it and/or
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of
14 * the License, or (at your option) any later version.
15 *
16 * This program is distributed in the hope that it will be useful,
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
21 * You should have received a copy of the GNU General Public License
22 * along with this program. If not, see <https://www.gnu.org/licenses/>.
23 *
24 * ============================================================ */
25
26 #include "tparsergetters.h"
27
28 // C includes
29
30 #include <assert.h>
31 #include <stddef.h>
32 #include <string.h>
33 #include <stdlib.h>
34
panoScriptGetImagesCount(pt_script * script)35 int panoScriptGetImagesCount(pt_script* script)
36 {
37 assert(script != NULL);
38 return script->iInputImagesCount;
39 }
40
panoScriptGetImagePrevCommentsCount(pt_script * script,int i)41 int panoScriptGetImagePrevCommentsCount(pt_script* script, int i)
42 {
43 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
44 return script->iImage_prevCommentsCount[i];
45 }
46
panoScriptGetImageComment(pt_script * script,int i,int c)47 char* panoScriptGetImageComment(pt_script* script, int i, int c)
48 {
49 assert(c >= 0 && c < panoScriptGetImagePrevCommentsCount(script, i));
50 return script->image_prevComments[i][c];
51 }
52
panoScriptGetImageProjection(pt_script * script,int i)53 int panoScriptGetImageProjection(pt_script* script, int i)
54 {
55 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
56 return script->inputImageSpec[i].projection;
57 }
58
panoScriptGetImageWidth(pt_script * script,int i)59 int panoScriptGetImageWidth(pt_script* script, int i)
60 {
61 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
62 return script->inputImageSpec[i].width;
63 }
64
panoScriptGetImageHeight(pt_script * script,int i)65 int panoScriptGetImageHeight(pt_script* script, int i)
66 {
67 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
68 return script->inputImageSpec[i].height;
69 }
70
panoScriptGetImageHFOV(pt_script * script,int i)71 double panoScriptGetImageHFOV(pt_script* script, int i)
72 {
73 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
74 return script->inputImageSpec[i].fHorFOV;
75 }
76
panoScriptGetImageHFOVRef(pt_script * script,int i)77 int panoScriptGetImageHFOVRef(pt_script* script, int i)
78 {
79 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
80 return script->inputImageSpec[i].fHorFOVRef;
81 }
82
panoScriptGetImageYaw(pt_script * script,int i)83 double panoScriptGetImageYaw(pt_script* script, int i)
84 {
85 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
86 return script->inputImageSpec[i].yaw;
87 }
88
panoScriptGetImagePitch(pt_script * script,int i)89 double panoScriptGetImagePitch(pt_script* script, int i)
90 {
91 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
92 return script->inputImageSpec[i].pitch;
93 }
94
panoScriptGetImageRoll(pt_script * script,int i)95 double panoScriptGetImageRoll(pt_script* script, int i)
96 {
97 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
98 return script->inputImageSpec[i].roll;
99 }
100
panoScriptGetImageCoefA(pt_script * script,int i)101 double panoScriptGetImageCoefA(pt_script* script, int i)
102 {
103 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
104 return script->inputImageSpec[i].geometryCoef[0];
105 }
106
panoScriptGetImageCoefARef(pt_script * script,int i)107 int panoScriptGetImageCoefARef(pt_script* script, int i)
108 {
109 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
110 return script->inputImageSpec[i].geometryCoefRef[0];
111 }
112
panoScriptGetImageCoefB(pt_script * script,int i)113 double panoScriptGetImageCoefB(pt_script* script, int i)
114 {
115 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
116 return script->inputImageSpec[i].geometryCoef[1];
117 }
118
panoScriptGetImageCoefBRef(pt_script * script,int i)119 int panoScriptGetImageCoefBRef(pt_script* script, int i)
120 {
121 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
122 return script->inputImageSpec[i].geometryCoefRef[1];
123 }
124
panoScriptGetImageCoefC(pt_script * script,int i)125 double panoScriptGetImageCoefC(pt_script* script, int i)
126 {
127 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
128 return script->inputImageSpec[i].geometryCoef[2];
129 }
130
panoScriptGetImageCoefCRef(pt_script * script,int i)131 int panoScriptGetImageCoefCRef(pt_script* script, int i)
132 {
133 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
134 return script->inputImageSpec[i].geometryCoefRef[2];
135 }
136
panoScriptGetImageCoefD(pt_script * script,int i)137 double panoScriptGetImageCoefD(pt_script* script, int i)
138 {
139 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
140 return script->inputImageSpec[i].geometryCoef[3];
141 }
142
panoScriptGetImageCoefDRef(pt_script * script,int i)143 int panoScriptGetImageCoefDRef(pt_script* script, int i)
144 {
145 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
146 return script->inputImageSpec[i].geometryCoefRef[3];
147 }
148
panoScriptGetImageCoefE(pt_script * script,int i)149 double panoScriptGetImageCoefE(pt_script* script, int i)
150 {
151 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
152 return script->inputImageSpec[i].geometryCoef[4];
153 }
154
panoScriptGetImageCoefERef(pt_script * script,int i)155 int panoScriptGetImageCoefERef(pt_script* script, int i)
156 {
157 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
158 return script->inputImageSpec[i].geometryCoefRef[4];
159 }
160
panoScriptGetImageSheerX(pt_script * script,int i)161 double panoScriptGetImageSheerX(pt_script* script, int i)
162 {
163 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
164 return script->inputImageSpec[i].geometryCoef[5];
165 }
166
panoScriptGetImageSheerXRef(pt_script * script,int i)167 int panoScriptGetImageSheerXRef(pt_script* script, int i)
168 {
169 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
170 return script->inputImageSpec[i].geometryCoefRef[5];
171 }
172
panoScriptGetImageSheerY(pt_script * script,int i)173 double panoScriptGetImageSheerY(pt_script* script, int i)
174 {
175 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
176 return script->inputImageSpec[i].geometryCoef[6];
177 }
178
panoScriptGetImageSheerYRef(pt_script * script,int i)179 int panoScriptGetImageSheerYRef(pt_script* script, int i)
180 {
181 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
182 return script->inputImageSpec[i].geometryCoefRef[6];
183 }
184
panoScriptGetImageExposure(pt_script * script,int i)185 double panoScriptGetImageExposure(pt_script* script, int i)
186 {
187 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
188 return script->inputImageSpec[i].imageEV;
189 }
190
panoScriptGetImageExposureRef(pt_script * script,int i)191 int panoScriptGetImageExposureRef(pt_script* script, int i)
192 {
193 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
194 return script->inputImageSpec[i].imageEVRef;
195 }
196
panoScriptGetImageWBRed(pt_script * script,int i)197 double panoScriptGetImageWBRed(pt_script* script, int i)
198 {
199 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
200 return script->inputImageSpec[i].whiteBalanceFactorRed;
201 }
202
panoScriptGetImageWBRedRef(pt_script * script,int i)203 int panoScriptGetImageWBRedRef(pt_script* script, int i)
204 {
205 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
206 return script->inputImageSpec[i].whiteBalanceFactorRedRef;
207 }
208
panoScriptGetImageWBBlue(pt_script * script,int i)209 double panoScriptGetImageWBBlue(pt_script* script, int i)
210 {
211 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
212 return script->inputImageSpec[i].whiteBalanceFactorBlue;
213 }
214
panoScriptGetImageWBBlueRef(pt_script * script,int i)215 int panoScriptGetImageWBBlueRef(pt_script* script, int i)
216 {
217 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
218 return script->inputImageSpec[i].whiteBalanceFactorBlueRef;
219 }
220
panoScriptGetImagePhotometricCoeffA(pt_script * script,int i)221 double panoScriptGetImagePhotometricCoeffA(pt_script* script, int i)
222 {
223 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
224 return script->inputImageSpec[i].photometricCoef[0];
225 }
226
panoScriptGetImagePhotometricCoeffARef(pt_script * script,int i)227 int panoScriptGetImagePhotometricCoeffARef(pt_script* script, int i)
228 {
229 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
230 return script->inputImageSpec[i].photometricCoefRef[0];
231 }
232
panoScriptGetImagePhotometricCoeffB(pt_script * script,int i)233 double panoScriptGetImagePhotometricCoeffB(pt_script* script, int i)
234 {
235 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
236 return script->inputImageSpec[i].photometricCoef[1];
237 }
238
panoScriptGetImagePhotometricCoeffBRef(pt_script * script,int i)239 int panoScriptGetImagePhotometricCoeffBRef(pt_script* script, int i)
240 {
241 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
242 return script->inputImageSpec[i].photometricCoefRef[1];
243 }
244
panoScriptGetImagePhotometricCoeffC(pt_script * script,int i)245 double panoScriptGetImagePhotometricCoeffC(pt_script* script, int i)
246 {
247 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
248 return script->inputImageSpec[i].photometricCoef[2];
249 }
250
panoScriptGetImagePhotometricCoeffCRef(pt_script * script,int i)251 int panoScriptGetImagePhotometricCoeffCRef(pt_script* script, int i)
252 {
253 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
254 return script->inputImageSpec[i].photometricCoefRef[2];
255 }
256
panoScriptGetImagePhotometricCoeffD(pt_script * script,int i)257 double panoScriptGetImagePhotometricCoeffD(pt_script* script, int i)
258 {
259 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
260 return script->inputImageSpec[i].photometricCoef[3];
261 }
262
panoScriptGetImagePhotometricCoeffDRef(pt_script * script,int i)263 int panoScriptGetImagePhotometricCoeffDRef(pt_script* script, int i)
264 {
265 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
266 return script->inputImageSpec[i].photometricCoefRef[3];
267 }
268
panoScriptGetImagePhotometricCoeffE(pt_script * script,int i)269 double panoScriptGetImagePhotometricCoeffE(pt_script* script, int i)
270 {
271 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
272 return script->inputImageSpec[i].photometricCoef[4];
273 }
274
panoScriptGetImagePhotometricCoeffERef(pt_script * script,int i)275 int panoScriptGetImagePhotometricCoeffERef(pt_script* script, int i)
276 {
277 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
278 return script->inputImageSpec[i].photometricCoefRef[4];
279 }
280
panoScriptGetImageVignettingMode(pt_script * script,int i)281 int panoScriptGetImageVignettingMode(pt_script* script, int i)
282 {
283 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
284 return script->inputImageSpec[i].vignettingCorrectionMode;
285 }
286
panoScriptGetImageVignettingModeRef(pt_script * script,int i)287 int panoScriptGetImageVignettingModeRef(pt_script* script, int i)
288 {
289 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
290 return script->inputImageSpec[i].vignettingCorrectionModeRef;
291 }
292
panoScriptGetImageVignettingCoeffA(pt_script * script,int i)293 double panoScriptGetImageVignettingCoeffA(pt_script* script, int i)
294 {
295 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
296 return script->inputImageSpec[i].vignettingCorrectionCoef[0];
297 }
298
panoScriptGetImageVignettingCoeffARef(pt_script * script,int i)299 int panoScriptGetImageVignettingCoeffARef(pt_script* script, int i)
300 {
301 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
302 return script->inputImageSpec[i].vignettingCorrectionCoefRef[0];
303 }
304
panoScriptGetImageVignettingCoeffB(pt_script * script,int i)305 double panoScriptGetImageVignettingCoeffB(pt_script* script, int i)
306 {
307 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
308 return script->inputImageSpec[i].vignettingCorrectionCoef[1];
309 }
310
panoScriptGetImageVignettingCoeffBRef(pt_script * script,int i)311 int panoScriptGetImageVignettingCoeffBRef(pt_script* script, int i)
312 {
313 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
314 return script->inputImageSpec[i].vignettingCorrectionCoefRef[1];
315 }
316
panoScriptGetImageVignettingCoeffC(pt_script * script,int i)317 double panoScriptGetImageVignettingCoeffC(pt_script* script, int i)
318 {
319 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
320 return script->inputImageSpec[i].vignettingCorrectionCoef[2];
321 }
322
panoScriptGetImageVignettingCoeffCRef(pt_script * script,int i)323 int panoScriptGetImageVignettingCoeffCRef(pt_script* script, int i)
324 {
325 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
326 return script->inputImageSpec[i].vignettingCorrectionCoefRef[2];
327 }
328
panoScriptGetImageVignettingCoeffD(pt_script * script,int i)329 double panoScriptGetImageVignettingCoeffD(pt_script* script, int i)
330 {
331 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
332 return script->inputImageSpec[i].vignettingCorrectionCoef[3];
333 }
334
panoScriptGetImageVignettingCoeffDRef(pt_script * script,int i)335 int panoScriptGetImageVignettingCoeffDRef(pt_script* script, int i)
336 {
337 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
338 return script->inputImageSpec[i].vignettingCorrectionCoefRef[3];
339 }
340
panoScriptGetImageVignettingCoeffX(pt_script * script,int i)341 double panoScriptGetImageVignettingCoeffX(pt_script* script, int i)
342 {
343 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
344 return script->inputImageSpec[i].vignettingCorrectionCoef[4];
345 }
346
panoScriptGetImageVignettingCoeffXRef(pt_script * script,int i)347 int panoScriptGetImageVignettingCoeffXRef(pt_script* script, int i)
348 {
349 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
350 return script->inputImageSpec[i].vignettingCorrectionCoefRef[4];
351 }
352
panoScriptGetImageVignettingCoeffY(pt_script * script,int i)353 double panoScriptGetImageVignettingCoeffY(pt_script* script, int i)
354 {
355 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
356 return script->inputImageSpec[i].vignettingCorrectionCoef[5];
357 }
358
panoScriptGetImageVignettingCoeffYRef(pt_script * script,int i)359 int panoScriptGetImageVignettingCoeffYRef(pt_script* script, int i)
360 {
361 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
362 return script->inputImageSpec[i].vignettingCorrectionCoefRef[5];
363 }
364
panoScriptGetImageVignettingFlatField(pt_script * script,int i)365 char* panoScriptGetImageVignettingFlatField(pt_script* script, int i)
366 {
367 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
368 return script->inputImageSpec[i].vignettingFlatFieldFile;
369 }
370
panoScriptGetImageCameraTranslationX(pt_script * script,int i)371 double panoScriptGetImageCameraTranslationX(pt_script* script, int i)
372 {
373 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
374 return script->inputImageSpec[i].cameraPosition[0];
375 }
376
panoScriptGetImageCameraTranslationY(pt_script * script,int i)377 double panoScriptGetImageCameraTranslationY(pt_script* script, int i)
378 {
379 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
380 return script->inputImageSpec[i].cameraPosition[1];
381 }
382
panoScriptGetImageCameraTranslationZ(pt_script * script,int i)383 double panoScriptGetImageCameraTranslationZ(pt_script* script, int i)
384 {
385 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
386 return script->inputImageSpec[i].cameraPosition[2];
387 }
388
panoScriptGetImageProjectionPlaneYaw(pt_script * script,int i)389 double panoScriptGetImageProjectionPlaneYaw(pt_script* script, int i)
390 {
391 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
392 return script->inputImageSpec[i].projectionPlaneRotation[0];
393 }
394
panoScriptGetImageProjectionPlanePitch(pt_script * script,int i)395 double panoScriptGetImageProjectionPlanePitch(pt_script* script, int i)
396 {
397 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
398 return script->inputImageSpec[i].projectionPlaneRotation[1];
399 }
400
panoScriptGetImageName(pt_script * script,int i)401 char* panoScriptGetImageName(pt_script* script, int i)
402 {
403 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
404 return script->inputImageSpec[i].name;
405 }
406
panoScriptGetImageCropLeft(pt_script * script,int i)407 int panoScriptGetImageCropLeft(pt_script* script, int i)
408 {
409 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
410 return script->inputImageSpec[i].cropArea[0];
411 }
412
panoScriptGetImageCropRight(pt_script * script,int i)413 int panoScriptGetImageCropRight(pt_script* script, int i)
414 {
415 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
416 return script->inputImageSpec[i].cropArea[1];
417 }
418
panoScriptGetImageCropTop(pt_script * script,int i)419 int panoScriptGetImageCropTop(pt_script* script, int i)
420 {
421 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
422 return script->inputImageSpec[i].cropArea[2];
423 }
424
panoScriptGetImageCropBottom(pt_script * script,int i)425 int panoScriptGetImageCropBottom(pt_script* script, int i)
426 {
427 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
428 return script->inputImageSpec[i].cropArea[3];
429 }
430
panoScriptGetImageStack(pt_script * script,int i)431 int panoScriptGetImageStack(pt_script* script, int i)
432 {
433 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
434 return script->inputImageSpec[i].stack;
435 }
436
panoScriptGetImageStackRef(pt_script * script,int i)437 int panoScriptGetImageStackRef(pt_script* script, int i)
438 {
439 assert(script != NULL && i >= 0 && i < script->iInputImagesCount);
440 return script->inputImageSpec[i].stackRef;
441 }
442
panoScriptGetPanoPrevCommentsCount(pt_script * script)443 int panoScriptGetPanoPrevCommentsCount(pt_script* script)
444 {
445 assert(script != NULL);
446 return script->iPano_prevCommentsCount;
447 }
448
panoScriptGetPanoComment(pt_script * script,int c)449 char* panoScriptGetPanoComment(pt_script* script, int c)
450 {
451 assert(script != NULL && c >= 0 && c < panoScriptGetPanoPrevCommentsCount(script));
452 return script->pano_prevComments[c];
453 }
454
panoScriptGetPanoWidth(pt_script * script)455 int panoScriptGetPanoWidth(pt_script* script)
456 {
457 assert(script != NULL);
458 return script->pano.width;
459 }
460
panoScriptGetPanoHeight(pt_script * script)461 int panoScriptGetPanoHeight(pt_script* script)
462 {
463 assert(script != NULL);
464 return script->pano.height;
465 }
466
panoScriptGetPanoCropLeft(pt_script * script)467 int panoScriptGetPanoCropLeft(pt_script* script)
468 {
469 assert(script != NULL);
470 return script->pano.cropArea[0];
471 }
472
panoScriptGetPanoCropRight(pt_script * script)473 int panoScriptGetPanoCropRight(pt_script* script)
474 {
475 assert(script != NULL);
476 return script->pano.cropArea[1];
477 }
478
panoScriptGetPanoCropTop(pt_script * script)479 int panoScriptGetPanoCropTop(pt_script* script)
480 {
481 assert(script != NULL);
482 return script->pano.cropArea[2];
483 }
484
panoScriptGetPanoCropBottom(pt_script * script)485 int panoScriptGetPanoCropBottom(pt_script* script)
486 {
487 assert(script != NULL);
488 return script->pano.cropArea[3];
489 }
490
panoScriptGetPanoProjection(pt_script * script)491 int panoScriptGetPanoProjection(pt_script* script)
492 {
493 assert(script != NULL);
494 return script->pano.projection;
495 }
496
panoScriptGetPanoProjectionParmsCount(pt_script * script)497 double panoScriptGetPanoProjectionParmsCount(pt_script* script)
498 {
499 assert(script != NULL);
500 return script->pano.projectionParmsCount;
501 }
502
panoScriptGetPanoProjectionParm(pt_script * script,int index)503 double panoScriptGetPanoProjectionParm(pt_script* script, int index)
504 {
505 assert(script != NULL && index < script->pano.projectionParmsCount);
506 return script->pano.projectionParms[index];
507 }
508
panoScriptGetPanoHFOV(pt_script * script)509 double panoScriptGetPanoHFOV(pt_script* script)
510 {
511 assert(script != NULL);
512 return script->pano.fHorFOV;
513 }
514
panoScriptGetPanoOutputFormat(pt_script * script)515 int panoScriptGetPanoOutputFormat(pt_script* script)
516 {
517 assert(script != NULL);
518
519 char* str = script->pano.outputFormat;
520
521 if (str == 0)
522 {
523 return 4;
524 }
525
526 switch (str[0])
527 {
528 case 'P':
529
530 if (strncmp("NG", str + 1, 2) == 0)
531 return 0;
532
533 break;
534
535 case 'T':
536
537 if (strncmp("IFF", str + 1, 3) == 0)
538 {
539 if (strncmp("_m", str + 4, 2) == 0)
540 {
541 if (strncmp("ultilayer", str + 6, 9) == 0)
542 return 3;
543
544 return 2;
545 }
546
547 return 1;
548 }
549
550 break;
551
552 case 'J':
553
554 if (strncmp("PEG", str + 1, 3) == 0)
555 return 4;
556
557 break;
558
559 default:
560 break;
561 }
562
563 return -1;
564 }
565
panoScriptGetPanoOutputCompression(pt_script * script)566 int panoScriptGetPanoOutputCompression(pt_script* script)
567 {
568 assert(script != NULL && panoScriptGetPanoOutputFormat(script) > 0 && panoScriptGetPanoOutputFormat(script) < 4);
569
570 char* str = script->pano.outputFormat;
571
572 while (str != NULL)
573 {
574 str = strchr(str, ' ');
575
576 if (str != NULL)
577 {
578 if (str[1] == 'c' && str[2] == ':')
579 {
580 str += 3;
581
582 switch (str[0])
583 {
584 case 'N':
585
586 if (strncmp("ONE", str + 1, 3) == 0)
587 return 0;
588
589 break;
590
591 case 'L':
592
593 if (strncmp("ZW", str + 1, 2) == 0)
594 return 1;
595
596 break;
597
598 case 'D':
599
600 if (strncmp("EFLATE", str + 1, 6) == 0)
601 return 2;
602
603 break;
604
605 default:
606 break;
607 }
608
609 return -1;
610 }
611
612 str++;
613 }
614 }
615
616 return -1;
617 }
618
panoScriptGetPanoOutputSaveCoordinates(pt_script * script)619 int panoScriptGetPanoOutputSaveCoordinates(pt_script* script)
620 {
621 assert(script != NULL && panoScriptGetPanoOutputFormat(script) > 1 && panoScriptGetPanoOutputFormat(script) < 4);
622
623 char* str = script->pano.outputFormat;
624
625 while (str != NULL)
626 {
627 str = strchr(str, ' ');
628
629 if (str != NULL)
630 {
631 if (str[1] == 'p')
632 {
633 if (str[2] == '1')
634 return 1;
635
636 return 0;
637 }
638
639 str++;
640 }
641 }
642
643 return 0;
644 }
645
panoScriptGetPanoOutputCropped(pt_script * script)646 int panoScriptGetPanoOutputCropped(pt_script* script)
647 {
648 assert(script != NULL && panoScriptGetPanoOutputFormat(script) > 1 && panoScriptGetPanoOutputFormat(script) < 4);
649
650 char* str = script->pano.outputFormat;
651
652 while (str != NULL)
653 {
654 str = strchr(str, ' ');
655
656 if (str != NULL)
657 {
658 if (str[1] == 'r')
659 {
660 if (strncmp(":CROP", str + 2, 5) == 0)
661 return 1;
662
663 return 0;
664 }
665
666 str++;
667 }
668 }
669
670 return 0;
671 }
672
panoScriptGetPanoOutputQuality(pt_script * script)673 int panoScriptGetPanoOutputQuality(pt_script* script)
674 {
675 assert(script != NULL && panoScriptGetPanoOutputFormat(script) == 4);
676
677 char* str = script->pano.outputFormat;
678
679 while (str != NULL)
680 {
681 str = strchr(str, ' ');
682
683 if (str != NULL)
684 {
685 if (str[1] == 'q')
686 {
687 char* last = 0;
688 int q = strtol(str + 3, &last, 10);
689
690 if (last != str + 3)
691 return q;
692 else
693 return -1;
694 }
695
696 str++;
697 }
698 }
699
700 return -1;
701 }
702
panoScriptGetPanoIsHDR(pt_script * script)703 int panoScriptGetPanoIsHDR(pt_script* script)
704 {
705 assert(script != NULL);
706 return script->pano.dynamicRangeMode;
707 }
708
panoScriptGetPanoBitDepth(pt_script * script)709 int panoScriptGetPanoBitDepth(pt_script* script)
710 {
711 assert(script != NULL);
712 return (int) script->pano.bitDepthOutput;
713 }
714
panoScriptGetPanoExposure(pt_script * script)715 double panoScriptGetPanoExposure(pt_script* script)
716 {
717 assert(script != NULL);
718 return script->pano.exposureValue;
719 }
720
panoScriptGetPanoImageReference(pt_script * script)721 int panoScriptGetPanoImageReference(pt_script* script)
722 {
723 assert(script != NULL);
724 return script->pano.iImagePhotometricReference;
725 }
726
panoScriptGetOptimizePrevCommentsCount(pt_script * script)727 int panoScriptGetOptimizePrevCommentsCount(pt_script* script)
728 {
729 assert(script != NULL);
730 return script->iOptimize_prevCommentsCount;
731 }
732
panoScriptGetOptimizeComment(pt_script * script,int c)733 char* panoScriptGetOptimizeComment(pt_script* script, int c)
734 {
735 assert(script != NULL && c < panoScriptGetOptimizePrevCommentsCount(script));
736 return script->optimize_prevComments[c];
737 }
738
panoScriptGetOptimizeGamma(pt_script * script)739 double panoScriptGetOptimizeGamma(pt_script* script)
740 {
741 assert(script != NULL);
742 return script->optimize.fGamma;
743 }
744
panoScriptGetOptimizeInterpolator(pt_script * script)745 int panoScriptGetOptimizeInterpolator(pt_script* script)
746 {
747 assert(script != NULL);
748 return script->optimize.interpolator;
749 }
750
panoScriptGetOptimizeSpeedUp(pt_script * script)751 int panoScriptGetOptimizeSpeedUp(pt_script* script)
752 {
753 assert(script != NULL);
754 return script->optimize.fastFT;
755 }
756
panoScriptGetOptimizeHuberSigma(pt_script * script)757 double panoScriptGetOptimizeHuberSigma(pt_script* script)
758 {
759 assert(script != NULL);
760 return script->optimize.huberEstimator;
761 }
762
panoScriptGetOptimizePhotometricHuberSigma(pt_script * script)763 double panoScriptGetOptimizePhotometricHuberSigma(pt_script* script)
764 {
765 assert(script != NULL);
766 return script->optimize.photometricHuberSigma;
767 }
768
panoScriptGetVarsToOptimizeCount(pt_script * script)769 int panoScriptGetVarsToOptimizeCount(pt_script* script)
770 {
771 assert(script != NULL);
772 return script->iVarsToOptimizeCount;
773 }
774
panoScriptGetVarsToOptimizePrevCommentCount(pt_script * script,int v)775 int panoScriptGetVarsToOptimizePrevCommentCount(pt_script* script, int v)
776 {
777 assert(script != NULL);
778 return script->iVarsToOptimize_prevCommentsCount[v];
779 }
780
panoScriptGetVarsToOptimizeComment(pt_script * script,int v,int c)781 char* panoScriptGetVarsToOptimizeComment(pt_script* script, int v, int c)
782 {
783 assert(script != NULL);
784 return script->varsToOptimize_prevComments[v][c];
785 }
786
panoScriptGetVarsToOptimizeImageId(pt_script * script,int v)787 int panoScriptGetVarsToOptimizeImageId(pt_script* script, int v)
788 {
789 assert(script != NULL && v >= 0 && v < script->iVarsToOptimizeCount);
790 return script->varsToOptimize[v].varIndex;
791 }
792
panoScriptGetVarsToOptimizeName(pt_script * script,int v)793 int panoScriptGetVarsToOptimizeName(pt_script* script, int v)
794 {
795 assert(script != NULL && v >= 0 && v < script->iVarsToOptimizeCount);
796
797 char* var = script->varsToOptimize[v].varName;
798
799 switch (var[0])
800 {
801 case 'a':
802 case 'b':
803 case 'c':
804 case 'd':
805 case 'e':
806 return var[0] - 'a';
807
808 case 'v':
809 return 5;
810
811 case 'y':
812 return 6;
813
814 case 'p':
815 return 7;
816
817 case 'r':
818 return 8;
819
820 case 'E':
821 {
822 switch (var[1])
823 {
824 case 'e':
825 return 9;
826 case 'r':
827 return 10;
828 case 'b':
829 return 11;
830 default:
831 return 23;
832 }
833 }
834
835 case 'V':
836 {
837 switch(var[1])
838 {
839 case 'a':
840 case 'b':
841 case 'c':
842 case 'd':
843 return var[1] - 'a' + 12;
844 case 'x':
845 case 'y':
846 return var[1] - 'x' + 16;
847 default:
848 return 23;
849 }
850 }
851
852 case 'R':
853 {
854 switch (var[1])
855 {
856 case 'a':
857 case 'b':
858 case 'c':
859 case 'd':
860 case 'e':
861 return var[1] - 'a' + 18;
862 default:
863 return 23;
864 }
865 }
866
867 default:
868 return 23;
869 }
870 }
871
panoScriptGetCtrlPointCount(pt_script * script)872 int panoScriptGetCtrlPointCount(pt_script* script)
873 {
874 assert(script != NULL);
875 return script->iCtrlPointsCount;
876 }
877
panoScriptGetCtrlPointPrevCommentCount(pt_script * script,int cp)878 int panoScriptGetCtrlPointPrevCommentCount(pt_script* script, int cp)
879 {
880 assert(script != NULL && cp >= 0 && cp < panoScriptGetCtrlPointCount(script));
881 return script->iCtrlPoints_prevCommentsCount[cp];
882 }
883
panoScriptGetCtrlPointComment(pt_script * script,int cp,int c)884 char* panoScriptGetCtrlPointComment(pt_script* script, int cp, int c)
885 {
886 assert(script != NULL && cp >= 0 && cp < panoScriptGetCtrlPointCount(script));
887 return script->ctrlPoints_prevComments[cp][c];
888 }
889
panoScriptGetCtrlPointImage1(pt_script * script,int cp)890 int panoScriptGetCtrlPointImage1(pt_script* script, int cp)
891 {
892 assert(script != NULL && cp >= 0 && cp < panoScriptGetCtrlPointCount(script));
893 return script->ctrlPointsSpec[cp].iImage1;
894 }
895
panoScriptGetCtrlPointImage2(pt_script * script,int cp)896 int panoScriptGetCtrlPointImage2(pt_script* script, int cp)
897 {
898 assert(script != NULL && cp >= 0 && cp < panoScriptGetCtrlPointCount(script));
899 return script->ctrlPointsSpec[cp].iImage2;
900 }
901
panoScriptGetCtrlPointX1(pt_script * script,int cp)902 double panoScriptGetCtrlPointX1(pt_script* script, int cp)
903 {
904 assert(script != NULL && cp >= 0 && cp < panoScriptGetCtrlPointCount(script));
905 return script->ctrlPointsSpec[cp].p1.x;
906 }
907
panoScriptGetCtrlPointX2(pt_script * script,int cp)908 double panoScriptGetCtrlPointX2(pt_script* script, int cp)
909 {
910 assert(script != NULL && cp >= 0 && cp < panoScriptGetCtrlPointCount(script));
911 return script->ctrlPointsSpec[cp].p2.x;
912 }
913
panoScriptGetCtrlPointY1(pt_script * script,int cp)914 double panoScriptGetCtrlPointY1(pt_script* script, int cp)
915 {
916 assert(script != NULL && cp >= 0 && cp < panoScriptGetCtrlPointCount(script));
917 return script->ctrlPointsSpec[cp].p1.y;
918 }
919
panoScriptGetCtrlPointY2(pt_script * script,int cp)920 double panoScriptGetCtrlPointY2(pt_script* script, int cp)
921 {
922 assert(script != NULL && cp >= 0 && cp < panoScriptGetCtrlPointCount(script));
923 return script->ctrlPointsSpec[cp].p2.y;
924 }
925
panoScriptGetCtrlPointType(pt_script * script,int cp)926 int panoScriptGetCtrlPointType(pt_script* script, int cp)
927 {
928 assert(script != NULL && cp >= 0 && cp < panoScriptGetCtrlPointCount(script));
929 return script->ctrlPointsSpec[cp].type;
930 }
931
panoScriptGetMaskCount(pt_script * script)932 int panoScriptGetMaskCount(pt_script* script)
933 {
934 assert(script != NULL);
935 return script->iMasksCount;
936 }
937
panoScriptGetMaskPrevCommentCount(pt_script * script,int m)938 int panoScriptGetMaskPrevCommentCount(pt_script* script, int m)
939 {
940 assert(script != NULL && m >= 0 && m < script->iMasksCount);
941 return script->iCtrlPoints_prevCommentsCount[m];
942 }
943
panoScriptGetMaskComment(pt_script * script,int m,int c)944 char* panoScriptGetMaskComment(pt_script* script, int m, int c)
945 {
946 assert(script != NULL && m >= 0 && m < script->iMasksCount);
947 return script->masks_prevComments[m][c];
948 }
949
panoScriptGetMaskImage(pt_script * script,int m)950 int panoScriptGetMaskImage(pt_script* script, int m)
951 {
952 assert(script != NULL && m >= 0 && m < script->iMasksCount);
953 return script->masks[m]->iImage;
954 }
955
panoScriptGetMaskType(pt_script * script,int m)956 int panoScriptGetMaskType(pt_script* script, int m)
957 {
958 assert(script != NULL && m >= 0 && m < script->iMasksCount);
959 return script->masks[m]->type;
960 }
961
panoScriptGetMaskPointCount(pt_script * script,int m)962 int panoScriptGetMaskPointCount(pt_script* script, int m)
963 {
964 assert(script != NULL && m >= 0 && m < script->iMasksCount);
965 return script->masks[m]->iPointsCount;
966 }
967
panoScriptGetMaskPointX(pt_script * script,int m,int p)968 int panoScriptGetMaskPointX(pt_script* script, int m, int p)
969 {
970 assert(script != NULL && m >= 0 && m < script->iMasksCount);
971 return script->masks[m]->points[p].x;
972 }
973
panoScriptGetMaskPointY(pt_script * script,int m,int p)974 int panoScriptGetMaskPointY(pt_script* script, int m, int p)
975 {
976 assert(script != NULL && m >= 0 && m < script->iMasksCount);
977 return script->masks[m]->points[p].y;
978 }
979
panoScriptGetEndingCommentCount(pt_script * script)980 int panoScriptGetEndingCommentCount(pt_script* script)
981 {
982 assert(script != NULL);
983 return script->iEndingCommentsCount;
984 }
985
panoScriptGetEndingComment(pt_script * script,int c)986 char* panoScriptGetEndingComment(pt_script* script, int c)
987 {
988 assert(script != NULL && c >= 0 && c < script->iEndingCommentsCount);
989 return script->endingComments[c];
990 }
991