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