1/******************************************************************* 2 * morpho_easy_hdr.h 3 * [CP932/CRLF] { »û®©®»èp } 4 *------------------------------------------------------------------ 5 * Copyright (C) 2010-2012 Morpho,Inc. 6 *******************************************************************/ 7 8#ifndef MORPHO_EASY_HDR_H 9#define MORPHO_EASY_HDR_H 10 11/*******************************************************************/ 12 13#include "morpho_api.h" 14#include "morpho_error.h" 15#include "morpho_image_data.h" 16#include "morpho_rect_int.h" 17 18/*******************************************************************/ 19 20#define MORPHO_EASY_HDR_VER "Morpho EasyHDR Ver.2.0.1 2012/07/18" 21 22/*-----------------------------------------------------------------*/ 23 24/* (input-limitaion) */ 25 26#define MORPHO_EASY_HDR_MIN_IMAGE_WIDTH 100 27#define MORPHO_EASY_HDR_MAX_IMAGE_WIDTH 8192 28#define MORPHO_EASY_HDR_MIN_IMAGE_HEIGHT 100 29#define MORPHO_EASY_HDR_MAX_IMAGE_HEIGHT 8192 30#define MORPHO_EASY_HDR_MIN_NIMAGES 2 31#define MORPHO_EASY_HDR_MAX_NIMAGES 10 32 33/*-----------------------------------------------------------------*/ 34 35/* (parameter) */ 36 37#define MORPHO_EASY_HDR_DISABLED 0 38#define MORPHO_EASY_HDR_ENABLED 1 39 40#define MORPHO_EASY_HDR_IMAGE_ALIGNMENT_DEFAULT MORPHO_EASY_HDR_ENABLED 41 42#define MORPHO_EASY_HDR_GHOST_REMOVAL_DEFAULT MORPHO_EASY_HDR_ENABLED 43 44#define MORPHO_EASY_HDR_AUTO_SCALING_DEFAULT MORPHO_EASY_HDR_ENABLED 45 46#define MORPHO_EASY_HDR_FACE_DETECTION_DEFAULT MORPHO_EASY_HDR_ENABLED 47 48#define MORPHO_EASY_HDR_FAIL_SOFT_MERGING_DEFAULT MORPHO_EASY_HDR_ENABLED 49 50#define MORPHO_EASY_HDR_GHOST_DETECTION_SENSITIVITY_LEVEL_MIN 0 51#define MORPHO_EASY_HDR_GHOST_DETECTION_SENSITIVITY_LEVEL_MAX 10 52#define MORPHO_EASY_HDR_GHOST_DETECTION_SENSITIVITY_LEVEL_DEFAULT 7 53 54#define MORPHO_EASY_HDR_MERGE_SMOOTHNESS_LEVEL_MIN 0 55#define MORPHO_EASY_HDR_MERGE_SMOOTHNESS_LEVEL_MAX 10 56#define MORPHO_EASY_HDR_MERGE_SMOOTHNESS_LEVEL_DEFAULT 6 57 58#define MORPHO_EASY_HDR_MERGE_PARAM_MIN 0 59#define MORPHO_EASY_HDR_MERGE_PARAM_MAX 255 60#define MORPHO_EASY_HDR_MERGE_PARAM1_DEFAULT 0 61#define MORPHO_EASY_HDR_MERGE_PARAM2_DEFAULT 128 62#define MORPHO_EASY_HDR_MERGE_PARAM3_DEFAULT 0 63#define MORPHO_EASY_HDR_MERGE_PARAM4_DEFAULT 255 64 65#define MORPHO_EASY_HDR_RELIABLE_RECT_RATE_THRESHOLD_MIN 0 66#define MORPHO_EASY_HDR_RELIABLE_RECT_RATE_THRESHOLD_MAX 100 67#define MORPHO_EASY_HDR_RELIABLE_RECT_RATE_THRESHOLD_DEFAULT 80 68 69#define MORPHO_EASY_HDR_GHOST_RATE_THRESHOLD_MIN 0 70#define MORPHO_EASY_HDR_GHOST_RATE_THRESHOLD_MAX 100 71#define MORPHO_EASY_HDR_GHOST_RATE_THRESHOLD_DEFAULT 90 72 73#define MORPHO_EASY_HDR_CC_OFFSET_MIN 0 74#define MORPHO_EASY_HDR_CC_OFFSET_MAX 255 75#define MORPHO_EASY_HDR_CC_Y_OFFSET_DEFAULT 0 76#define MORPHO_EASY_HDR_CC_C_OFFSET_DEFAULT 0 77 78#define MORPHO_EASY_HDR_CC_GAIN_MIN 100 79#define MORPHO_EASY_HDR_CC_GAIN_MAX 2000 80#define MORPHO_EASY_HDR_CC_Y_GAIN_DEFAULT 1000 81#define MORPHO_EASY_HDR_CC_C_GAIN_DEFAULT 1000 82 83#define MORPHO_EASY_HDR_CC_GAMMA_MIN 100 84#define MORPHO_EASY_HDR_CC_GAMMA_MAX 2000 85#define MORPHO_EASY_HDR_CC_Y_GAMMA_DEFAULT 1000 86#define MORPHO_EASY_HDR_CC_C_GAMMA_DEFAULT 1000 87 88/*-----------------------------------------------------------------*/ 89 90/* (merge-status) */ 91 92#define MORPHO_EASY_HDR_OK 0x00000000 93#define MORPHO_EASY_HDR_ERROR_IMAGE_ALIGNMENT_FAILURE 0x00000001 94#define MORPHO_EASY_HDR_ERROR_EXP_ESTIMATION_FAILURE 0x00000002 95#define MORPHO_EASY_HDR_ERROR_MOSTLY_GHOST 0x00000004 96#define MORPHO_EASY_HDR_ERROR_INTERNAL 0x80000000 97 98/*******************************************************************/ 99 100typedef struct _morpho_EasyHDR morpho_EasyHDR; 101typedef struct _morpho_EasyHDR_Callback morpho_EasyHDR_Callback; 102 103/*-----------------------------------------------------------------*/ 104 105/** EasyHDR */ 106struct _morpho_EasyHDR 107{ 108 void *p; /**< à\¢ÌÖÌ|C^ */ 109}; 110 111/** EasyHDR Callback (for multi-thread processing) */ 112struct _morpho_EasyHDR_Callback 113{ 114 void *p; /**< R[obNÖÌæêøƵÄn³êél */ 115 116 void * (* thread_create )(void *p, int index, void *(*start_routine)(void *arg), void *arg); 117 int (* thread_destroy)(void *p, void *thread); 118 int (* thread_join )(void *p, void *thread, void **value_ptr); 119 120 void * (* mutex_create )(void *p); 121 int (* mutex_destroy)(void *p, void *mutex); 122 int (* mutex_lock )(void *p, void *mutex); 123 int (* mutex_trylock)(void *p, void *mutex); 124 int (* mutex_unlock )(void *p, void *mutex); 125 126 void * (* cond_create )(void *p); 127 int (* cond_destroy )(void *p, void *cond); 128 int (* cond_wait )(void *p, void *cond, void *lock); 129 int (* cond_signal )(void *p, void *cond); 130 int (* cond_broadcast)(void *p, void *cond); 131}; 132 133/*******************************************************************/ 134 135#ifdef __cplusplus 136extern "C" 137{ 138#endif 139 140/*-----------------------------------------------------------------*/ 141 142/** 143 * o[W¶ñðæ¾ 144 * 145 * @return o[W¶ñ(MORPHO_EASY_HDR_VER) 146 */ 147MORPHO_API(char const *) 148morpho_EasyHDR_getVersion(void); 149 150/*-----------------------------------------------------------------*/ 151 152/** 153 * KvÈTCYðæ¾ 154 * 155 * @param[in] max_width üÍæÌÅå 156 * @param[in] max_height üÍæÌÅå³ 157 * @param[in] format ætH[}bg¶ñ 158 * 159 * @return KvÈTCY(byte) 160 */ 161MORPHO_API(int) 162morpho_EasyHDR_getBufferSize( 163 int max_width, 164 int max_height, 165 char const *format); 166 167/** 168 * ú» 169 * 170 * gpXbhÉ0ȺÌlðÝèµ½êA 171 * ªÀsðs¤B 172 * 173 * gpXbhÉ1ÈãÌlðÝèµ½êA 174 * êÀsðs¤B 175 * 176 * gpXbhÉ2ÈãÌlðÝèµ½êA 177 * }`XbhÉæéÀñÀs(êÀs)ðs¤B 178 * callback ÉKØÈlðÝè·éKv èB 179 * 180 * yÀsóÔÌJÚz 181 * ?_UNKNOWN ¨ 0_INITIALIZED 182 * 183 * @param[in,out] p EasyHDR CX^X 184 * @param[out] buffer EasyHDRÉèÄéÖÌ|C^ 185 * @param[in] buffer_size EasyHDRÉèÄéÌTCY 186 * @param[in] nthreads gpXbh (RA) 187 * @param[in] callback R[obNÖQ 188 * 189 * @return G[R[h (see morpho_error.h) 190 */ 191MORPHO_API(int) 192morpho_EasyHDR_initialize( 193 morpho_EasyHDR *p, 194 void *buffer, 195 int buffer_size, 196 int nthreads, 197 morpho_EasyHDR_Callback const *callback); 198 199/** 200 * N[Abv 201 * initialize() ÀsãÉÀsÂ\ 202 * 203 * @param[in,out] p EasyHDR CX^X 204 * 205 * @return G[R[h (see morpho_error.h) 206 */ 207MORPHO_API(int) 208morpho_EasyHDR_finalize( 209 morpho_EasyHDR *p); 210 211/*-----------------------------------------------------------------*/ 212 213/** 214 * ¬ÌJnEÀs 215 * setImageFormat() ÀsãÉÀsÂ\ 216 * 217 * yÀsóÔÌJÚ (êÀs)z 218 * 0_INITIALIZED ¨ (1_PROCESSING) ¨ 0_INITIALIZED (®¹) 219 * ¨ 2_SUSPENDED (suspend()ÄÑoµ) 220 * 221 * yÀsóÔÌJÚ (ªÀs)z 222 * 0_INITIALIZED ¨ 3_PAUSED () 223 * ¨ 0_INITIALIZED (®¹) 224 * 225 * @param[in,out] p EasyHDR CX^X 226 * @param[out] output_image Êæ (u1ÚvÌüÍæðwèÂ\) 227 * @param[in,out] input_images üÍæQ (GWÉæÁÄ«·¦çêé) 228 * @param[in] nimages üÍæÌ 229 * 230 * @return G[R[h (see morpho_error.h) 231 */ 232MORPHO_API(int) 233morpho_EasyHDR_merge( 234 morpho_EasyHDR *p, 235 morpho_ImageData *output_image, 236 morpho_ImageData *input_images[], 237 int nimages); 238 239/*-----------------------------------------------------------------*/ 240 241/** 242 * ¬Ìp±Às 243 * 244 * merge() ÀsãÉÀsÂ\ 245 * 246 * ªÀs(initialize() Å nthreads É 0 ðw赽ƫ)ÌÝLø 247 * 248 * yÀsóÔÌJÚ (ªÀs)z 249 * 3_PAUSED ¨ 3_PAUSED () 250 * ¨ 0_INITIALIZED (®¹) 251 * 252 * @param[in,out] p EasyHDR CX^X 253 * 254 * @return G[R[h (see morpho_error.h) 255 */ 256MORPHO_API(int) 257morpho_EasyHDR_process( 258 morpho_EasyHDR *p); 259 260/*-----------------------------------------------------------------*/ 261 262/** 263 * ¬Ìf (ÊReLXg©çÌÄÑoµÉæé) 264 * merge() ÀsÉÀsÂ\ 265 * 266 * yÀsóÔÌJÚ (êÀs)z 267 * 1_PROCESSING ¨ 2_SUSPENDED 268 * 269 * @param[in,out] p EasyHDR CX^X 270 * 271 * @return G[R[h (see morpho_error.h) 272 */ 273MORPHO_API(int) 274morpho_EasyHDR_suspend( 275 morpho_EasyHDR *p); 276 277/** 278 * ¬ÌÄJ 279 * suspend() ÀsãÉÀsÂ\ 280 * 281 * yÀsóÔÌJÚ (êÀs)z 282 * 2_SUSPENDED ¨ (1_PROCESSING) ¨ 0_INITIALIZED (®¹) 283 * ¨ 2_SUSPENDED (suspend()ÄÑoµ) 284 * 285 * @param[in,out] p EasyHDR CX^X 286 * 287 * @return G[R[h (see morpho_error.h) 288 */ 289MORPHO_API(int) 290morpho_EasyHDR_resume( 291 morpho_EasyHDR *p); 292 293/*-----------------------------------------------------------------*/ 294 295/** 296 * ætH[}bgÌÝè 297 * initialize() ÀsãÉÀsÂ\ 298 * 299 * @param[in,out] p EasyHDR CX^X 300 * @param[in] format ætH[}bgð çí·¶ñ 301 * 302 * @return G[R[h (see morpho_error.h) 303 */ 304MORPHO_API(int) 305morpho_EasyHDR_setImageFormat( 306 morpho_EasyHDR *p, 307 char const *format); 308 309/** 310 * ætH[}bgÌæ¾ 311 * setImageFormat() ÀsãÉÀsÂ\ 312 * 313 * @param[in,out] p EasyHDR CX^X 314 * @param[out] buffer ætH[}bgð çí·¶ñªi[³êéobt@ 315 * @param[in] buffer_size obt@ÌTCY(I[¶ÜÞ) 316 * 317 * @return G[R[h (see morpho_error.h) 318 */ 319MORPHO_API(int) 320morpho_EasyHDR_getImageFormat( 321 morpho_EasyHDR *p, 322 char *buffer, 323 int buffer_size); 324 325/*-----------------------------------------------------------------*/ 326 327/** 328 * Êuí¹(èÔêâ³)ÌL³ÌÝè 329 * initialize() ÀsãÉÀsÂ\ 330 * 331 * value: 332 * MOR_EASY_HDR_ENABLED : Êuí¹ è 333 * MOR_EASY_HDR_DISABLED : Êuí¹Èµ 334 * 335 * @param[in,out] p EasyHDR CX^X 336 * @param[in] value Ýèl 337 * 338 * @return G[R[h (see morpho_error.h) 339 */ 340MORPHO_API(int) 341morpho_EasyHDR_setImageAlignmentStatus( 342 morpho_EasyHDR *p, 343 int value); 344 345/** 346 * Êuí¹(èÔêâ³)ÌL³Ìæ¾ 347 * initialize() ÀsãÉÀsÂ\ 348 * 349 * @param[in,out] p EasyHDR CX^X 350 * @param[out] value Ýèli[æ 351 * 352 * @return G[R[h (see morpho_error.h) 353 */ 354MORPHO_API(int) 355morpho_EasyHDR_getImageAlignmentStatus( 356 morpho_EasyHDR *p, 357 int *value); 358 359/*-----------------------------------------------------------------*/ 360 361/** 362 * S[Xg(íÊÌÔêâ³)ÌL³ÌÝè 363 * initialize() ÀsãÉÀsÂ\ 364 * 365 * value: 366 * MOR_EASY_HDR_ENABLED : S[Xg è 367 * MOR_EASY_HDR_DISABLED : S[Xgȵ 368 * 369 * @param[in,out] p EasyHDR CX^X 370 * @param[in] value Ýèl 371 * 372 * @return G[R[h (see morpho_error.h) 373 */ 374MORPHO_API(int) 375morpho_EasyHDR_setGhostRemovalStatus( 376 morpho_EasyHDR *p, 377 int value); 378 379/** 380 * S[Xg(íÊÌÔêâ³)ÌL³Ìæ¾ 381 * initialize() ÀsãÉÀsÂ\ 382 * 383 * @param[in,out] p EasyHDR CX^X 384 * @param[out] value Ýèli[æ 385 * 386 * @return G[R[h (see morpho_error.h) 387 */ 388MORPHO_API(int) 389morpho_EasyHDR_getGhostRemovalStatus( 390 morpho_EasyHDR *p, 391 int *value); 392 393/*-----------------------------------------------------------------*/ 394 395/** 396 * ©®gå(NbsO)ÌL³ÌÝè 397 * initialize() ÀsãÉÀsÂ\ 398 * 399 * value: 400 * MOR_EASY_HDR_ENABLED : ©®gå è 401 * MOR_EASY_HDR_DISABLED : ©®gåȵ 402 * 403 * @param[in,out] p EasyHDR CX^X 404 * @param[in] value Ýèl 405 * 406 * @return G[R[h (see morpho_error.h) 407 */ 408MORPHO_API(int) 409morpho_EasyHDR_setAutoScalingStatus( 410 morpho_EasyHDR *p, 411 int value); 412 413/** 414 * ©®gå(NbsO)ÌL³Ìæ¾ 415 * initialize() ÀsãÉÀsÂ\ 416 * 417 * @param[in,out] p EasyHDR CX^X 418 * @param[out] value Ýèli[æ 419 * 420 * @return G[R[h (see morpho_error.h) 421 */ 422MORPHO_API(int) 423morpho_EasyHDR_getAutoScalingStatus( 424 morpho_EasyHDR *p, 425 int *value); 426 427/*-----------------------------------------------------------------*/ 428 429/** 430 * çoâ³ÌL³ÌÝè 431 * initialize() ÀsãÉÀsÂ\ 432 * 433 * value: 434 * MOR_EASY_HDR_ENABLED : çoâ³ è 435 * MOR_EASY_HDR_DISABLED : çoâ³Èµ 436 * 437 * @param[in,out] p EasyHDR CX^X 438 * @param[in] value Ýèl 439 * 440 * @return G[R[h (see morpho_error.h) 441 */ 442MORPHO_API(int) 443morpho_EasyHDR_setFaceDetectionStatus( 444 morpho_EasyHDR *p, 445 int value); 446 447/** 448 * çoâ³ÌL³Ìæ¾ 449 * initialize() ÀsãÉÀsÂ\ 450 * 451 * @param[in,out] p EasyHDR CX^X 452 * @param[out] value Ýèli[æ 453 * 454 * @return G[R[h (see morpho_error.h) 455 */ 456MORPHO_API(int) 457morpho_EasyHDR_getFaceDetectionStatus( 458 morpho_EasyHDR *p, 459 int *value); 460 461/*-----------------------------------------------------------------*/ 462 463/** 464 * Fail-soft-merging ÌL³ÌÝè 465 * initialize() ÀsãÉÀsÂ\ 466 * 467 * value: 468 * MOR_EASY_HDR_ENABLED : Fail-soft-merging è 469 * MOR_EASY_HDR_DISABLED : Fail-soft-merging ȵ 470 * 471 * @param[in,out] p EasyHDR CX^X 472 * @param[in] value Ýèl 473 * 474 * @return G[R[h (see morpho_error.h) 475 */ 476MORPHO_API(int) 477morpho_EasyHDR_setFailSoftMergingStatus( 478 morpho_EasyHDR *p, 479 int value); 480 481/** 482 * Fail-soft-merging ÌL³Ìæ¾ 483 * initialize() ÀsãÉÀsÂ\ 484 * 485 * @param[in,out] p EasyHDR CX^X 486 * @param[out] value Ýèli[æ 487 * 488 * @return G[R[h (see morpho_error.h) 489 */ 490MORPHO_API(int) 491morpho_EasyHDR_getFailSoftMergingStatus( 492 morpho_EasyHDR *p, 493 int *value); 494 495/*-----------------------------------------------------------------*/ 496 497/** 498 * S[Xg»è´xxÌÝè 499 * initialize() ÀsãÉÀsÂ\ 500 * 501 * @param[in,out] p EasyHDR CX^X 502 * @param[in] value Ýèl 503 * 504 * @return G[R[h (see morpho_error.h) 505 */ 506MORPHO_API(int) 507morpho_EasyHDR_setGhostDetectionSensitivityLevel( 508 morpho_EasyHDR *p, 509 int value); 510 511/** 512 * S[Xg»è´xxÌæ¾ 513 * initialize() ÀsãÉÀsÂ\ 514 * 515 * @param[in,out] p EasyHDR CX^X 516 * @param[out] value Ýèli[æ 517 * 518 * @return G[R[h (see morpho_error.h) 519 */ 520MORPHO_API(int) 521morpho_EasyHDR_getGhostDetectionSensitivityLevel( 522 morpho_EasyHDR *p, 523 int *value); 524 525/*-----------------------------------------------------------------*/ 526 527/** 528 * ¬Èß穳ÌÝè 529 * initialize() ÀsãÉÀsÂ\ 530 * 531 * @param[in,out] p EasyHDR CX^X 532 * @param[in] value Ýèl 533 * 534 * @return G[R[h (see morpho_error.h) 535 */ 536MORPHO_API(int) 537morpho_EasyHDR_setMergeSmoothnessLevel( 538 morpho_EasyHDR *p, 539 int value); 540 541/** 542 * ¬Èß穳Ìæ¾ 543 * initialize() ÀsãÉÀsÂ\ 544 * 545 * @param[in,out] p EasyHDR CX^X 546 * @param[out] value Ýèli[æ 547 * 548 * @return G[R[h (see morpho_error.h) 549 */ 550MORPHO_API(int) 551morpho_EasyHDR_getMergeSmoothnessLevel( 552 morpho_EasyHDR *p, 553 int *value); 554 555/*-----------------------------------------------------------------*/ 556 557/** 558 * ¬p[^ÌÝè 559 * initialize() ÀsãÉÀsÂ\ 560 * 561 * @param[in,out] p EasyHDR CX^X 562 * @param[in] value1 Ýèl 563 * @param[in] value2 Ýèl 564 * @param[in] value3 Ýèl 565 * @param[in] value4 Ýèl 566 * 567 * @return G[R[h (see morpho_error.h) 568 */ 569MORPHO_API(int) 570morpho_EasyHDR_setMergeParameters( 571 morpho_EasyHDR *p, 572 int value1, 573 int value2, 574 int value3, 575 int value4); 576 577/** 578 * ¬p[^Ìæ¾ 579 * initialize() ÀsãÉÀsÂ\ 580 * 581 * @param[in,out] p EasyHDR CX^X 582 * @param[out] value1 Ýèli[æ 583 * @param[out] value2 Ýèli[æ 584 * @param[out] value3 Ýèli[æ 585 * @param[out] value4 Ýèli[æ 586 * 587 * @return G[R[h (see morpho_error.h) 588 */ 589MORPHO_API(int) 590morpho_EasyHDR_getMergeParameters( 591 morpho_EasyHDR *p, 592 int *value1, 593 int *value2, 594 int *value3, 595 int *value4); 596 597/*-----------------------------------------------------------------*/ 598 599/** 600 * LøÌæèlÌÝè 601 * initialize() ÀsãÉÀsÂ\ 602 * 603 * @param[in,out] p EasyHDR CX^X 604 * @param[in] rate Ýèl ( rate % é`) 605 * 606 * @return G[R[h (see morpho_error.h) 607 */ 608MORPHO_API(int) 609morpho_EasyHDR_setReliableRectRateThreshold( 610 morpho_EasyHDR *p, 611 int rate); 612 613/** 614 * LøÌæèlÌæ¾ 615 * initialize() ÀsãÉÀsÂ\ 616 * 617 * @param[in,out] p EasyHDR CX^X 618 * @param[out] rate Ýèli[æ 619 * 620 * @return G[R[h (see morpho_error.h) 621 */ 622MORPHO_API(int) 623morpho_EasyHDR_getReliableRectRateThreshold( 624 morpho_EasyHDR *p, 625 int *rate); 626 627/** 628 * LøÌæÌæ¾ 629 * initialize() ÀsãÉÀsÂ\ 630 * (LøÈlªZbg³êéÌÍ merge() ã) 631 * 632 * @param[in,out] p EasyHDR CX^X 633 * @param[out] rect Ýèli[æ 634 * 635 * @return G[R[h (see morpho_error.h) 636 */ 637MORPHO_API(int) 638morpho_EasyHDR_getReliableRect( 639 morpho_EasyHDR *p, 640 morpho_RectInt *rect); 641 642/*-----------------------------------------------------------------*/ 643 644/** 645 * S[XgèlÌÝè 646 * initialize() ÀsãÉÀsÂ\ 647 * 648 * @param[in,out] p EasyHDR CX^X 649 * @param[in] rate Ýèl 650 * 651 * @return G[R[h (see morpho_error.h) 652 */ 653MORPHO_API(int) 654morpho_EasyHDR_setGhostRateThreshold( 655 morpho_EasyHDR *p, 656 int rate); 657 658/** 659 * S[XgèlÌæ¾ 660 * initialize() ÀsãÉÀsÂ\ 661 * 662 * @param[in,out] p EasyHDR CX^X 663 * @param[out] rate Ýèli[æ 664 * 665 * @return G[R[h (see morpho_error.h) 666 */ 667MORPHO_API(int) 668morpho_EasyHDR_getGhostRateThreshold( 669 morpho_EasyHDR *p, 670 int *rate); 671 672/*-----------------------------------------------------------------*/ 673 674/** 675 * Fâ³p[^ÌÝè 676 * initialize() ÀsãÉÀsÂ\ 677 * 678 * @param[in,out] p EasyHDR CX^X 679 * @param[in] y_offset Ýèl 680 * @param[in] y_gain Ýèl 681 * @param[in] y_gamma Ýèl 682 * @param[in] c_offset Ýèl 683 * @param[in] c_gain Ýèl 684 * @param[in] c_gamma Ýèl 685 * 686 * @return G[R[h (see morpho_error.h) 687 */ 688MORPHO_API(int) 689morpho_EasyHDR_setColorCorrectionParameters( 690 morpho_EasyHDR *p, 691 int y_offset, 692 int y_gain, 693 int y_gamma, 694 int c_offset, 695 int c_gain, 696 int c_gamma); 697 698/** 699 * Fâ³p[^Ìæ¾ 700 * initialize() ÀsãÉÀsÂ\ 701 * 702 * @param[in,out] p EasyHDR CX^X 703 * @param[out] y_offset Ýèli[æ 704 * @param[out] y_gain Ýèli[æ 705 * @param[out] y_gamma Ýèli[æ 706 * @param[out] c_offset Ýèli[æ 707 * @param[out] c_gain Ýèli[æ 708 * @param[out] c_gamma Ýèli[æ 709 * 710 * @return G[R[h (see morpho_error.h) 711 */ 712MORPHO_API(int) 713morpho_EasyHDR_getColorCorrectionParameters( 714 morpho_EasyHDR *p, 715 int *y_offset, 716 int *y_gain, 717 int *y_gamma, 718 int *c_offset, 719 int *c_gain, 720 int *c_gamma); 721 722/*-----------------------------------------------------------------*/ 723 724/** 725 * ¬Xe[^XÌæ¾ 726 * initialize() ÀsãÉÀsÂ\ 727 * 728 * Xe[^XR[h 729 * MORPHO_EASY_HDR_OK 730 * MORPHO_EASY_HDR_ERROR_* 731 * 732 * @param[in,out] p EasyHDR CX^X 733 * 734 * @return Xe[^XR[h (MORPHO_EASMORPHO_EASY_HDR_ERROR_ 735 */ 736MORPHO_API(int) 737morpho_EasyHDR_getMergeStatus( 738 morpho_EasyHDR *p); 739 740/*-----------------------------------------------------------------*/ 741 742/** 743 * TlCÌì¬ (oÍæÌk¬) 744 * morpho_EasyHDR_setImageFormat() ÀsãÉÀsÂ\ 745 * 746 * @param[in,out] p EasyHDR CX^X 747 * @param[out] thumbnail_image oÍæ 748 * @param[in] output_image üÍæ 749 * 750 * @return G[R[h (see morpho_error.h) 751 */ 752MORPHO_API(int) 753morpho_EasyHDR_makeThumbnail( 754 morpho_EasyHDR *p, 755 morpho_ImageData *thumbnail_image, 756 morpho_ImageData const *output_image); 757 758/*-----------------------------------------------------------------*/ 759 760#ifdef __cplusplus 761} /* extern "C" */ 762#endif 763 764/*******************************************************************/ 765 766#endif /* !MORPHO_EASY_HDR_H */ 767 768/*******************************************************************/ 769/* [EOF] */ 770