00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifdef HAVE_CONFIG_H
00028 # include <config.h>
00029 #endif
00030
00031
00039
00040
00043 #include "xsh_dump.h"
00044
00045 #include <xsh_error.h>
00046 #include <xsh_msg.h>
00047
00048 #include <cpl.h>
00049 #include <xsh_cpl_size.h>
00050
00051
00063
00064 cpl_error_code
00065 xsh_print_cpl_propertylist (const cpl_propertylist * pl, long low, long high)
00066 {
00067 cpl_property *prop;
00068 long i = 0;
00069
00070 assure (0 <= low && high <= cpl_propertylist_get_size (pl) && low <= high,
00071 CPL_ERROR_ILLEGAL_INPUT, "Illegal range");
00072
00073
00074 if (pl == NULL) {
00075 xsh_msg ("NULL");
00076 }
00077 else if (cpl_propertylist_is_empty (pl)) {
00078 xsh_msg ("[Empty property list]");
00079 }
00080 else
00081 for (i = low; i < high; i++) {
00082
00083
00084 prop = cpl_propertylist_get ((cpl_propertylist *) pl, i);
00085 check (xsh_print_cpl_property (prop));
00086 }
00087
00088 cleanup:
00089 return cpl_error_get_code ();
00090 }
00091
00092
00100
00101
00102 cpl_error_code
00103 xsh_print_cpl_property (const cpl_property * prop)
00104 {
00105 cpl_type t;
00106
00107 if (prop == NULL) {
00108 xsh_msg ("NULL");
00109 }
00110 else {
00111
00112
00113
00114
00115
00116
00117
00118
00119 xsh_msg ("%s =", cpl_property_get_name (prop));
00120
00121
00122
00123 check (t = cpl_property_get_type (prop));
00124
00125 switch (t & (~CPL_TYPE_FLAG_ARRAY)) {
00126 case CPL_TYPE_CHAR:
00127 if (t & CPL_TYPE_FLAG_ARRAY) {
00128 xsh_msg (" '%s'", cpl_property_get_string (prop));
00129 }
00130 else {
00131
00132 xsh_msg (" %c", cpl_property_get_char (prop));
00133 }
00134 break;
00135 case CPL_TYPE_BOOL:
00136 if (cpl_property_get_bool (prop)) {
00137 xsh_msg (" true");
00138 }
00139 else {
00140 xsh_msg (" false");
00141 }
00142 break;
00143 case CPL_TYPE_UCHAR:
00144 xsh_msg (" %c", cpl_property_get_char (prop));
00145 break;
00146 case CPL_TYPE_INT:
00147 xsh_msg (" %d", cpl_property_get_int (prop));
00148 break;
00149 case CPL_TYPE_UINT:
00150 xsh_msg (" %d", cpl_property_get_int (prop));
00151 break;
00152 case CPL_TYPE_LONG:
00153 xsh_msg (" %ld", cpl_property_get_long (prop));
00154 break;
00155 case CPL_TYPE_ULONG:
00156 xsh_msg (" %ld", cpl_property_get_long (prop));
00157 break;
00158 case CPL_TYPE_FLOAT:
00159 xsh_msg (" %f", cpl_property_get_float (prop));
00160 break;
00161 case CPL_TYPE_DOUBLE:
00162 xsh_msg (" %f", cpl_property_get_double (prop));
00163 break;
00164 case CPL_TYPE_POINTER:
00165 xsh_msg (" POINTER");
00166 break;
00167 case CPL_TYPE_INVALID:
00168 xsh_msg (" INVALID");
00169 break;
00170 default:
00171 xsh_msg (" unrecognized property");
00172 break;
00173 }
00174
00175
00176 if (t & CPL_TYPE_FLAG_ARRAY) {
00177 #if defined CPL_VERSION_CODE && CPL_VERSION_CODE <= CPL_VERSION(5, 5, 0)
00178 cpl_msg_info(cpl_func," (array size = %l" CPL_SIZE_FORMAT " )",
00179 cpl_property_get_size(prop));
00180 #else
00181 cpl_msg_info(cpl_func," (array size = %" CPL_SIZE_FORMAT " )",
00182 cpl_property_get_size(prop));
00183 #endif
00184 }
00185
00186
00187 if (cpl_property_get_comment (prop) != NULL) {
00188 xsh_msg (" %s", cpl_property_get_comment (prop));
00189 }
00190 }
00191
00192 cleanup:
00193 return cpl_error_get_code ();
00194 }
00195
00196
00204
00205 cpl_error_code
00206 xsh_print_cpl_frameset (cpl_frameset * frames)
00207 {
00208
00209
00210 if (frames == NULL) {
00211 xsh_msg ("NULL");
00212 }
00213 else {
00214 cpl_frame *f = NULL;
00215 check (f = cpl_frameset_get_first (frames));
00216
00217 if (f == NULL) {
00218 xsh_msg ("[Empty frame set]");
00219 }
00220 else {
00221 do {
00222 check (xsh_print_cpl_frame (f));
00223 check (f = cpl_frameset_get_next (frames));
00224 }
00225 while (f != NULL);
00226 }
00227 }
00228
00229 cleanup:
00230 return cpl_error_get_code ();
00231 }
00232
00233
00241
00242 cpl_error_code
00243 xsh_print_cpl_frame (const cpl_frame * f)
00244 {
00245 if (f == NULL) {
00246 xsh_msg ("NULL");
00247 }
00248 else {
00249 xsh_msg ("%-7s %-20s '%s'",
00250 xsh_tostring_cpl_frame_group (cpl_frame_get_group (f)),
00251 cpl_frame_get_tag (f) != NULL ? cpl_frame_get_tag (f) : "Null",
00252 cpl_frame_get_filename (f));
00253
00254 xsh_msg_dbg_low ("type \t= %s",
00255 xsh_tostring_cpl_frame_type (cpl_frame_get_type (f)));
00256 xsh_msg_dbg_low ("group \t= %s",
00257 xsh_tostring_cpl_frame_group (cpl_frame_get_group (f)));
00258 xsh_msg_dbg_low ("level \t= %s",
00259 xsh_tostring_cpl_frame_level (cpl_frame_get_level (f)));
00260 }
00261
00262 return cpl_error_get_code ();
00263 }
00264
00265
00271
00272 const char *
00273 xsh_tostring_cpl_frame_type (cpl_frame_type ft)
00274 {
00275 switch (ft) {
00276 case CPL_FRAME_TYPE_NONE:
00277 return "NONE";
00278 break;
00279 case CPL_FRAME_TYPE_IMAGE:
00280 return "IMAGE";
00281 break;
00282 case CPL_FRAME_TYPE_MATRIX:
00283 return "MATRIX";
00284 break;
00285 case CPL_FRAME_TYPE_TABLE:
00286 return "TABLE";
00287 break;
00288 default:
00289 return "unrecognized frame type";
00290 }
00291 }
00292
00293
00299
00300 const char *
00301 xsh_tostring_cpl_frame_group (cpl_frame_group fg)
00302 {
00303 switch (fg) {
00304 case CPL_FRAME_GROUP_NONE:
00305 return "NONE";
00306 break;
00307 case CPL_FRAME_GROUP_RAW:
00308 return CPL_FRAME_GROUP_RAW_ID;
00309 break;
00310 case CPL_FRAME_GROUP_CALIB:
00311 return CPL_FRAME_GROUP_CALIB_ID;
00312 break;
00313 case CPL_FRAME_GROUP_PRODUCT:
00314 return CPL_FRAME_GROUP_PRODUCT_ID;
00315 break;
00316 default:
00317 return "unrecognized frame group";
00318 }
00319 }
00320
00321
00327
00328 const char *
00329 xsh_tostring_cpl_frame_level (cpl_frame_level fl)
00330 {
00331
00332 switch (fl) {
00333 case CPL_FRAME_LEVEL_NONE:
00334 return "NONE";
00335 break;
00336 case CPL_FRAME_LEVEL_TEMPORARY:
00337 return "TEMPORARY";
00338 break;
00339 case CPL_FRAME_LEVEL_INTERMEDIATE:
00340 return "INTERMEDIATE";
00341 break;
00342 case CPL_FRAME_LEVEL_FINAL:
00343 return "FINAL";
00344 break;
00345 default:
00346 return "unrecognized frame level";
00347 }
00348 }
00349
00350
00351
00357
00358 const char *
00359 xsh_tostring_cpl_type (cpl_type t)
00360 {
00361
00362
00363
00364
00365 if (!(t & CPL_TYPE_FLAG_ARRAY))
00366 switch (t & (~CPL_TYPE_FLAG_ARRAY)) {
00367 case CPL_TYPE_CHAR:
00368 return "char";
00369 break;
00370 case CPL_TYPE_UCHAR:
00371 return "uchar";
00372 break;
00373 case CPL_TYPE_BOOL:
00374 return "boolean";
00375 break;
00376 case CPL_TYPE_INT:
00377 return "int";
00378 break;
00379 case CPL_TYPE_UINT:
00380 return "uint";
00381 break;
00382 case CPL_TYPE_LONG:
00383 return "long";
00384 break;
00385 case CPL_TYPE_ULONG:
00386 return "ulong";
00387 break;
00388 case CPL_TYPE_FLOAT:
00389 return "float";
00390 break;
00391 case CPL_TYPE_DOUBLE:
00392 return "double";
00393 break;
00394 case CPL_TYPE_POINTER:
00395 return "pointer";
00396 break;
00397
00398 case CPL_TYPE_INVALID:
00399 return "invalid";
00400 break;
00401 default:
00402 return "unrecognized type";
00403 }
00404 else
00405 switch (t & (~CPL_TYPE_FLAG_ARRAY)) {
00406 case CPL_TYPE_CHAR:
00407 return "string (char array)";
00408 break;
00409 case CPL_TYPE_UCHAR:
00410 return "uchar array";
00411 break;
00412 case CPL_TYPE_BOOL:
00413 return "boolean array";
00414 break;
00415 case CPL_TYPE_INT:
00416 return "int array";
00417 break;
00418 case CPL_TYPE_UINT:
00419 return "uint array";
00420 break;
00421 case CPL_TYPE_LONG:
00422 return "long array";
00423 break;
00424 case CPL_TYPE_ULONG:
00425 return "ulong array";
00426 break;
00427 case CPL_TYPE_FLOAT:
00428 return "float array";
00429 break;
00430 case CPL_TYPE_DOUBLE:
00431 return "double array";
00432 break;
00433 case CPL_TYPE_POINTER:
00434 return "pointer array";
00435 break;
00436
00437 case CPL_TYPE_INVALID:
00438 return "invalid (array)";
00439 break;
00440 default:
00441 return "unrecognized type";
00442 }
00443 }
00444