photoeditorcui.h 28.3 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
 *
 * Filename:
 * ---------
 *  photoeditorcui.h
 *
 * Project:
 * --------
 *  MAUI
 *
 * Description:
 * ------------
 *  PhotoEditor CUI header file
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 *
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/
#ifndef _PHOEDT_CUI_H_
#define _PHOEDT_CUI_H_

/*******************************************************************************
* Include Header File
*******************************************************************************/
#include "MMI_features.h"
#ifdef __MMI_PHOTOEDITOR__


#include "photoeditorcuigprot.h"

#include "Gdi_include.h"
#include "FileMgrSrvGProt.h"


#include "PhotoEditorCuiConfig.h"
#include "ImgEdtSrvGProt.h"
#include "GlobalConstants.h"


#ifdef __MMI_TOUCH_SCREEN__
#include "wgui_touch_screen.h"
#endif


/* include filename and ext filename */
#define PHOEDT_FULL_PATH_CHAR               (SRV_FMGR_PATH_MAX_LEN)
#define PHOEDT_FULL_PATH_BUFFER_LEN         (PHOEDT_FULL_PATH_CHAR + 1)


/* include filename and ext filename */
#define PHOEDT_DRV_PATH_CHAR                (3)
#define PHOEDT_DRV_PATH_BUFFER_LEN          (PHOEDT_DRV_PATH_CHAR + 1)


#define PHOEDT_RES_DUMMY_ID                 (0)


/*****************************************************************************
* Define
*****************************************************************************/
#ifdef __MMI_FTE_SUPPORT__
#define __MMI_PHOEDT_STYLE_FTE__
#ifdef __MMI_TOUCH_SCREEN__
#define __MMI_PHOEDT_STYLE_FTE_CLIP__
#endif
#endif

#ifdef __MMI_TOUCH_SCREEN__
#define __MMI_PHOEDT_DOODLE__
#endif


#define PHOEDT_ALIGN_BYTES         (4)


#ifdef __MMI_PHOEDT_STYLE_FTE_CLIP__
#if defined(__MMI_MAINLCD_320X480__)
#define PHOEDT_MIN_IMG_WIDTH                (30)    /* (g_phoedt_layout.clip_indicator_sel_size.w) */
#define PHOEDT_MIN_IMG_HEIGHT               (30)    /* (g_phoedt_layout.clip_indicator_sel_size.h) */
#else /* defined(__MMI_MAINLCD_320X480__) */
#define PHOEDT_MIN_IMG_WIDTH                (23)    /* (g_phoedt_layout.clip_indicator_sel_size.w) */
#define PHOEDT_MIN_IMG_HEIGHT               (23)    /* (g_phoedt_layout.clip_indicator_sel_size.h) */
#endif /* defined(__MMI_MAINLCD_320X480__) */
#else /* __MMI_PHOEDT_STYLE_FTE_CLIP__ */
#define PHOEDT_MIN_IMG_WIDTH                (10)    /* mininum editable source image width */
#define PHOEDT_MIN_IMG_HEIGHT               (10)    /* mininum editable source image height */
#endif /* __MMI_PHOEDT_STYLE_FTE_CLIP__ */


/* memory config***************************************************************/
#if defined(MAIN_MEDIA_LAYER_BITS_PER_PIXEL) && (MAIN_MEDIA_LAYER_BITS_PER_PIXEL == 24)
#define PHOEDT_LAYER_BITS_PER_PIXEL (24)
#define PHOEDT_CURRENT_COLOR_FORMAT (GDI_COLOR_FORMAT_24)
#else
#define PHOEDT_LAYER_BITS_PER_PIXEL (GDI_MAINLCD_BIT_PER_PIXEL)
#define PHOEDT_CURRENT_COLOR_FORMAT (GDI_COLOR_FORMAT_16)
#endif

#define PHOEDT_FRAME_BUFFER_SIZE    ((GDI_LCD_WIDTH*GDI_LCD_HEIGHT * PHOEDT_LAYER_BITS_PER_PIXEL)>>3)
#define PHOEDT_IES_BUFFER_SIZE      (1024 * 1024 * 6)

#define PHOEDT_CUI_CNTX_SIZE        (sizeof(phoedt_cui_cntx_struct) + \
                                     (PHOEDT_ALIGN_BYTES - (sizeof(phoedt_cui_cntx_struct) % PHOEDT_ALIGN_BYTES)))

#define PHOEDT_CUI_NEED_SIZE        (PHOEDT_FRAME_BUFFER_SIZE + PHOEDT_IES_BUFFER_SIZE + PHOEDT_CUI_CNTX_SIZE)
/* memory config***************************************************************/


#define PHOEDT_IMAGE_CANVAS_COLOR           (GDI_COLOR_BLACK)
#define PHOEDT_IMAGE_BORDER_COLOR           (GDI_COLOR_WHITE)
#define PHOEDT_IMAGE_BORDER_WIDTH           (1)

#define PHOEDT_ICON_BORDER_COLOR            (GDI_COLOR_RED)
#define PHOEDT_ICON_BORDER_CORNER_LENGH     (4)
#define PHOEDT_ICON_BORDER_WIDTH            (2)
#define PHOEDT_ICON_BORDER_GAP              (PHOEDT_ICON_BORDER_WIDTH + 2)  /* reserve 2 more pixels for avoid border overlap with icon */


#if defined(__MMI_MAINLCD_240X400__) || defined (__MMI_MAINLCD_320X480__)
#define PHOEDT_MATRIX_ICONS_PER_ROW         (4)
#define PHOEDT_MATRIX_ICONS_PER_COL         (5)
#else /* __MMI_MAINLCD_240X400__ */
#define PHOEDT_MATRIX_ICONS_PER_ROW         (3)
#define PHOEDT_MATRIX_ICONS_PER_COL         (3)
#endif /* __MMI_MAINLCD_240X400__ */


#define PHOEDT_FRAME_COUNT                  (IMG_ID_PHOEDT_FRAME_END - IMG_ID_PHOEDT_FRAME_START - 1)
#define PHOEDT_ICON_COUNT                   (IMG_ID_PHOEDT_ICON_END - IMG_ID_PHOEDT_ICON_START - 1)


#ifndef __MMI_PHOEDT_STYLE_FTE_CLIP__
#define PHOEDT_CLIP_RECT_COLOR              (GDI_COLOR_RED)
#define PHOEDT_CLIP_RECT_WIDTH              (1)
#define PHOEDT_CLIP_RECT_WIDTH_SEL          (2)
#endif /* __MMI_PHOEDT_STYLE_FTE_CLIP__ */


#define PHOEDT_CLIP_RECT_MAX_RATIO          (100)
#define PHOEDT_CLIP_RECT_MIN_RATIO          (10)
#define PHOEDT_CLIP_RECT_STEP_RATION        (10)
#define PHOEDT_CLIP_RECT_DEFAULT_RATIO      (50)


#define PHOEDT_CLIP_EDGE_RANGE_RADIUS       (5)


#define PHOEDT_IMAGE_ZOOMIN_STEP            (120)


#define PHOEDT_TEXT_COLOR_COUNT             (23)


#define PHOEDT_MOVE_STEP_MIN                (1)
#define PHOEDT_MOVE_STEP_MAX                (7)
#define PHOEDT_MOVE_STEP_DIFF               (2)
#define PHOEDT_MOVE_STEP_DURATION           (100)


/* exclude ext filename */
#define PHOEDT_MAX_FILENAME_CHAR            (20)
#define PHOEDT_MAX_FILENAME_EXT_CHAR        (SRV_FMGR_PATH_MAX_FILE_EXT_LEN)


/* include "." & ext filename */
#define PHOEDT_FULL_FILENAME_CHAR           (PHOEDT_MAX_FILENAME_CHAR + 1 + PHOEDT_MAX_FILENAME_EXT_CHAR)
#define PHOEDT_FULL_FILENAME_BUFFER_LEN     (PHOEDT_FULL_FILENAME_CHAR + 1)


#define PHOEDT_ADD_ICON_DEF_SIZE            (50)  /* default width of add icon */
#define PHOEDT_ADD_ICON_MAX_SIZE            ((g_phoedt_cui_cntx_p->display_info.img_rect.size.h <       \
                                              g_phoedt_cui_cntx_p->display_info.img_rect.size.w ?       \
                                              g_phoedt_cui_cntx_p->display_info.img_rect.size.h :       \
                                              g_phoedt_cui_cntx_p->display_info.img_rect.size.w) /      \
                                             PHOEDT_ADD_ICON_ZOOM_STEP * PHOEDT_ADD_ICON_ZOOM_STEP)
#define PHOEDT_ADD_ICON_MIN_SIZE            (20)
#define PHOEDT_ADD_ICON_ZOOM_STEP           (10)


#define PHOEDT_MAX_TITLE_CHARACTERS         (MAX_SUBMENU_CHARACTERS)


#define PHOEDT_UPDATE_PROGRESS_DURATION     (100)


#define PHOEDT_DOODLE_UPDATE_RADIUS         (5)


#define PHOEDT_KEY_MAP_ZOOM_OUT             (KEY_POUND)
#define PHOEDT_KEY_MAP_ZOOM_IN              (KEY_STAR)
#define PHOEDT_KEY_MAP_MANUAL_CLIP_STATE    (KEY_STAR)
#define PHOEDT_KEY_MAP_ROTATE_CW            (KEY_RIGHT_ARROW)
#define PHOEDT_KEY_MAP_ROTATE_CCW           (KEY_LEFT_ARROW)
#define PHOEDT_KEY_MAP_FLIP_HORZ_1          (KEY_RIGHT_ARROW)
#define PHOEDT_KEY_MAP_FLIP_HORZ_2          (KEY_LEFT_ARROW)
#define PHOEDT_KEY_MAP_FLIP_VERT_1          (KEY_UP_ARROW)
#define PHOEDT_KEY_MAP_FLIP_VERT_2          (KEY_DOWN_ARROW)
#define PHOEDT_KEY_MAP_ICON_ROTATE          (KEY_0)


/*****************************************************************************
* typedef
*****************************************************************************/
typedef enum
{
    PHOEDT_CONFIRM_TYPE_SAVE_FOR_SEND,
    PHOEDT_CONFIRM_TYPE_UNDO,
    PHOEDT_CONFIRM_TYPE_EXIT,

    PHOEDT_CONFIRM_TYPE_COUNT
} phoedt_confirm_type_enum;


typedef enum
{
    PHOEDT_PATH_RELATIONSHIP_NONE,
    PHOEDT_PATH_RELATIONSHIP_SAME_DRV,
    PHOEDT_PATH_RELATIONSHIP_N_LINE_FOLDER,
    PHOEDT_PATH_RELATIONSHIP_1_LINE_FOLDER,
    PHOEDT_PATH_RELATIONSHIP_SAME_FILE,

    PHOEDT_PATH_RELATIONSHIP_COUNT
} phoedt_path_relationship_enum;


typedef enum
{
    PHOEDT_CHANGE_TYPE_CHANGE,
    PHOEDT_CHANGE_TYPE_UNDO,
    PHOEDT_CHANGE_TYPE_RESET,

    PHOEDT_CHANGE_TYPE_COUNT
} phoedt_change_type_enum;


typedef enum
{
    PHOEDT_SAVE_STATE_BEGINED,
    PHOEDT_SAVE_STATE_SAVING,
    PHOEDT_SAVE_STATE_SAVED,
    PHOEDT_SAVE_STATE_CANCELED,

    PHOEDT_SAVE_STATE_COUNT
} phoedt_save_state_enum;


typedef enum
{
    PHOEDT_SAVE_RESULT_DONE,
    PHOEDT_SAVE_RESULT_CANCELED,
    PHOEDT_SAVE_RESULT_ERROR,
    PHOEDT_SAVE_RESULT_IN_END_KEY,

    PHOEDT_SAVE_RESULT_COUNT
}phoedt_save_result_enum;


typedef enum
{
    PHOEDT_FILE_SOURCE_FROM_FILE,
    PHOEDT_FILE_SOURCE_FROM_CAMERA,

    PHOEDT_SEL_FILE_OPTION_COUNT
}phoedt_file_source_enum;


typedef enum
{
    PHOEDT_ACTION_TYPE_NONE,
    PHOEDT_ACTION_TYPE_LOADING,
    PHOEDT_ACTION_TYPE_FRAME,
    PHOEDT_ACTION_TYPE_EFFECT,
    PHOEDT_ACTION_TYPE_ADJUST,
    PHOEDT_ACTION_TYPE_ICON,
    PHOEDT_ACTION_TYPE_CLIP,
    PHOEDT_ACTION_TYPE_FLIP,
    PHOEDT_ACTION_TYPE_ROTATE,
#ifdef __MMI_PHOEDT_DOODLE__
    PHOEDT_ACTION_TYPE_DOODLE,
#endif

    PHOEDT_ACTION_TYPE_SAVE_FILE,
    PHOEDT_ACTION_TYPE_SAVE_FOR_SEND,
    PHOEDT_ACTION_TYPE_SEND,
    PHOEDT_ACTION_TYPE_UNDO,
    PHOEDT_ACTION_TYPE_HELP,

    PHOEDT_ACTION_TYPE_COUNT
}phoedt_action_type_enum;


typedef enum
{
    PHOEDT_ACTION_STATE_ENDED,
    PHOEDT_ACTION_STATE_STARTED,

    PHOEDT_ACTION_STATE_COUNT
}phoedt_action_state_enum;


typedef enum
{
    PHOEDT_MOVE_DIR_LEFT,
    PHOEDT_MOVE_DIR_RIGHT,
    PHOEDT_MOVE_DIR_UP,
    PHOEDT_MOVE_DIR_DOWN,

    PHOEDT_MOVE_DIR_COUNT
}phoedt_move_direction_enum;


typedef enum
{
    PHOEDT_CLIP_TYPE_FIX_RATIO,
    PHOEDT_CLIP_TYPE_MANUAL_CLIP,

    PHOEDT_CLIP_TYPE_COUNT
} phoedt_clip_type_enum;


typedef enum
{
    PHOEDT_ADJUST_STATIC_OBJ_TYPE_ICON,
    PHOEDT_ADJUST_STATIC_OBJ_TYPE_BAR,
#ifdef __MMI_PHOEDT_STYLE_FTE__
    PHOEDT_ADJUST_STATIC_OBJ_TYPE_BG,
#endif

    PHOEDT_ADJUST_STATIC_OBJ_TYPE_COUNT
}phoedt_adjust_static_obj_type_enum;


typedef enum
{
    PHOEDT_CLIP_STATE_RIGHTDOWN,
    PHOEDT_CLIP_STATE_LEFTUP,
#ifdef __MMI_PHOEDT_STYLE_FTE_CLIP__
    PHOEDT_CLIP_STATE_RIGHTUP,
    PHOEDT_CLIP_STATE_LEFTDOWN,
#endif /* __MMI_PHOEDT_STYLE_FTE_CLIP__ */
    PHOEDT_CLIP_STATE_MOVE,

    PHOEDT_CLIP_STATE_COUNT
}phoedt_clip_state_enum;


typedef enum
{
    PHOEDT_CLIP_RECT_ADJUST_EDGE_UP,
    PHOEDT_CLIP_RECT_ADJUST_EDGE_DOWN,
    PHOEDT_CLIP_RECT_ADJUST_EDGE_LEFT,
    PHOEDT_CLIP_RECT_ADJUST_EDGE_RIGHT,

    PHOEDT_CLIP_RECT_ADJUST_EDGE_COUNT
}phoedt_clip_rect_adjust_edge_enum;


typedef enum
{
    PHOEDT_ROTATE_0,
    PHOEDT_ROTATE_90,
    PHOEDT_ROTATE_180,
    PHOEDT_ROTATE_270,

    PHOEDT_ROTATE_COUNT
}phoedt_rotate_enum;


typedef enum
{
    PHOEDT_ROTATE_DIR_CCW,
    PHOEDT_ROTATE_DIR_CW,

    PHOEDT_ROTATE_DIR_COUNT
}phoedt_rotate_direction_enum;


typedef enum
{
    PHOEDT_FLIP_DIR_HORI,
    PHOEDT_FLIP_DIR_VERT,

    PHOEDT_FLIP_DIR_COUNT
}phoedt_flip_direction_enum;


typedef enum
{
    PHOEDT_SWITCH_DIR_PREV,
    PHOEDT_SWITCH_DIR_NEXT,

    PHOEDT_SWITCH_DIR_COUNT
}phoedt_switch_direction_enum;


#ifdef __MMI_PHOEDT_STYLE_FTE_CLIP__
typedef enum
{
    PHOEDT_CLIP_INDICATOR_LEFTUP,
    PHOEDT_CLIP_INDICATOR_RIGHTUP,
    PHOEDT_CLIP_INDICATOR_LEFTDOWN,
    PHOEDT_CLIP_INDICATOR_RIGHTDOWN,

    PHOEDT_CLIP_INDICATOR_COUNT
}phoedt_clip_indicator_enum;
#endif /* __MMI_PHOEDT_STYLE_FTE_CLIP__ */


#ifdef __MMI_PHOEDT_DOODLE__
typedef enum
{
    PHOEDT_DOODLE_TYPE_LINE,
    PHOEDT_DOODLE_TYPE_ERASER,

    PHOEDT_DOODLE_TYPE_COUNT
}phoedt_doodle_type_enum;


typedef enum
{
#ifdef __MMI_PHOEDT_STYLE_FTE__
    PHOEDT_DOODLE_SIZE_LARGE,
    PHOEDT_DOODLE_SIZE_MEDIUM,
    PHOEDT_DOODLE_SIZE_SMALL,
#else
    PHOEDT_DOODLE_SIZE_SMALL,
    PHOEDT_DOODLE_SIZE_MEDIUM,
    PHOEDT_DOODLE_SIZE_LARGE,
#endif

    PHOEDT_DOODLE_SIZE_COUNT
}phoedt_doodle_size_enum;
#endif /* __MMI_PHOEDT_DOODLE__ */


#ifdef __MMI_TOUCH_SCREEN__
typedef enum
{
    PHOEDT_PEN_EVENT_DOWN,
    PHOEDT_PEN_EVENT_MOVE,
    PHOEDT_PEN_EVENT_UP,

    PHOEDT_PEN_EVENT_COUNT
}phoedt_pen_event_enum;


typedef enum
{
    /* nothing */
    PHOEDT_TOUCH_ITEM_NONE,

    /* softkeys */
    PHOEDT_TOUCH_ITEM_LSK,
    PHOEDT_TOUCH_ITEM_RSK,
    PHOEDT_TOUCH_ITEM_CSK,

    /* arrows */
    PHOEDT_TOUCH_ITEM_PREV,
    PHOEDT_TOUCH_ITEM_NEXT,

    /* adjust */
    PHOEDT_TOUCH_ITEM_ADJUST_ICON,
    /* here will have serveral items */
    PHOEDT_TOUCH_ITEM_ADJUST_ICON_END = PHOEDT_TOUCH_ITEM_ADJUST_ICON + PHOEDT_ADJUST_ITEM_TOTAL_COUNT,
    PHOEDT_TOUCH_ITEM_ADJUST_BAR,
    PHOEDT_TOUCH_ITEM_ADJUST_SLIDER,

    /* clip */
    PHOEDT_TOUCH_ITEM_CLIP_RECT,
    PHOEDT_TOUCH_ITEM_CLIP_LEFTUP,
    PHOEDT_TOUCH_ITEM_CLIP_RIGHTDOWN,
#ifdef __MMI_PHOEDT_STYLE_FTE_CLIP__
    PHOEDT_TOUCH_ITEM_CLIP_LEFTDOWN,
    PHOEDT_TOUCH_ITEM_CLIP_RIGHTUP,
#else
    PHOEDT_TOUCH_ITEM_CLIP_UP,
    PHOEDT_TOUCH_ITEM_CLIP_DOWN,
    PHOEDT_TOUCH_ITEM_CLIP_LEFT,
    PHOEDT_TOUCH_ITEM_CLIP_RIGHT,
    PHOEDT_TOUCH_ITEM_CLIP_ZOOMIN,
    PHOEDT_TOUCH_ITEM_CLIP_ZOOMOUT,
    PHOEDT_TOUCH_ITEM_CLIP_STATE_ICON,
#endif

    /* flip */
    PHOEDT_TOUCH_ITEM_FLIP_VERT,
    PHOEDT_TOUCH_ITEM_FLIP_HORZ,

    /* rotate */
    PHOEDT_TOUCH_ITEM_ROTATE_CCW,
    PHOEDT_TOUCH_ITEM_ROTATE_CW,

    /* add icon */
    PHOEDT_TOUCH_ITEM_ICON_ICON,
    PHOEDT_TOUCH_ITEM_ICON_ZOOMIN,
    PHOEDT_TOUCH_ITEM_ICON_ZOOMOUT,
    PHOEDT_TOUCH_ITEM_ICON_ROTATE,

    /* add frame & select area for doodle */
    PHOEDT_TOUCH_ITEM_SEL_AREA_IMAGE,
    PHOEDT_TOUCH_ITEM_SEL_AREA_ZOOMIN,
    PHOEDT_TOUCH_ITEM_SEL_AREA_ZOOMOUT,

#ifdef __MMI_PHOEDT_DOODLE__
    /* doodle */
    PHOEDT_TOUCH_ITEM_DOODLE_DOODLE,
    PHOEDT_TOUCH_ITEM_DOODLE_HIDE,
    PHOEDT_TOUCH_ITEM_DOODLE_COLOR,
#ifdef __MMI_PHOEDT_STYLE_FTE__
    PHOEDT_TOUCH_ITEM_DOODLE_LINE_1,
    PHOEDT_TOUCH_ITEM_DOODLE_LINE_2,
    PHOEDT_TOUCH_ITEM_DOODLE_LINE_3,
    PHOEDT_TOUCH_ITEM_DOODLE_ERASER_1,
    PHOEDT_TOUCH_ITEM_DOODLE_ERASER_2,
    PHOEDT_TOUCH_ITEM_DOODLE_ERASER_3,
#else /* __MMI_PHOEDT_STYLE_FTE__ */
    PHOEDT_TOUCH_ITEM_DOODLE_TYPE,
    PHOEDT_TOUCH_ITEM_DOODLE_SIZE,
#endif /* __MMI_PHOEDT_STYLE_FTE__ */
#endif /* __MMI_PHOEDT_DOODLE__ */

    PHOEDT_TOUCH_ITEM_COUNT
} phoedt_touch_item_enum;
#endif /* __MMI_TOUCH_SCREEN__ */


typedef struct
{
    S32 x;
    S32 y;
}phoedt_pos_struct;


typedef struct
{
    S32 w;
    S32 h;
}phoedt_size_struct;


typedef struct
{
    phoedt_size_struct      img_size;
}phoedt_input_limit_struct;


typedef struct
{
#ifdef __MMI_PHOEDT_STYLE_FTE__
    phoedt_size_struct      adjust_bg_size;
    phoedt_pos_struct       adjust_first_bg;
#endif
    phoedt_size_struct      adjust_icon_size;
    phoedt_pos_struct       adjust_first_icon;
    phoedt_size_struct      adjust_bar_size;
    phoedt_pos_struct       adjust_first_bar;
    U16                     adjust_bar_margin;
    phoedt_size_struct      adjust_slider_size;
    S16                     adjust_slider_off_y_on_bar;
    U16                     adjust_icon_interval;

#ifdef __MMI_PHOEDT_DOODLE__
#ifdef __MMI_PHOEDT_STYLE_FTE__
    phoedt_size_struct      doodle_up_down_size;
    phoedt_size_struct      doodle_button_size;
    phoedt_size_struct      doodle_color_rect_size;
#ifdef __MMI_PHOEDT_STYLE_FTE__
    phoedt_size_struct      doodle_bg_expand_size;
    phoedt_size_struct      doodle_bg_collapse_size;
    phoedt_pos_struct       doodle_bg;
#else
    phoedt_pos_struct       doodle_line_bg;
    phoedt_pos_struct       doodle_eraser_bg;
    phoedt_pos_struct       doodle_bg_bottom_long;
    phoedt_pos_struct       doodle_bg_bottom_short;
#endif
    phoedt_pos_struct       doodle_up_down;
    phoedt_pos_struct       doodle_line_title;
    phoedt_pos_struct       doodle_line[PHOEDT_DOODLE_SIZE_COUNT];
    phoedt_pos_struct       doodle_color;
    phoedt_pos_struct       doodle_color_rect;
    phoedt_pos_struct       doodle_eraser_title_long;
    phoedt_pos_struct       doodle_eraser_title_short;
    phoedt_pos_struct       doodle_eraser[PHOEDT_DOODLE_SIZE_COUNT];
#else
    phoedt_size_struct      doodle_button_size;
    phoedt_pos_struct       doodle_hide;
    phoedt_pos_struct       doodle_type;
    phoedt_pos_struct       doodle_size;
    phoedt_pos_struct       doodle_color;
#endif /* __MMI_PHOEDT_STYLE_FTE__ */
#endif /* __MMI_PHOEDT_DOODLE__ */

#ifdef __MMI_PHOEDT_STYLE_FTE_CLIP__
    phoedt_size_struct      clip_indicator_size;
    phoedt_size_struct      clip_indicator_sel_size;
#endif /* __MMI_PHOEDT_STYLE_FTE_CLIP__ */

    phoedt_size_struct      arrow_size;
    phoedt_pos_struct       left_arrow;
    phoedt_pos_struct       right_arrow;

    phoedt_size_struct      button_size;

    phoedt_pos_struct       button_21;
    phoedt_pos_struct       button_22;

    phoedt_pos_struct       button_31;
    phoedt_pos_struct       button_32;
    phoedt_pos_struct       button_33;
}phoedt_layout_struct;


typedef struct
{
    phoedt_pos_struct    offset;
    phoedt_size_struct   size;
}phoedt_rect_struct;


typedef struct
{
    phoedt_rect_struct      img_rect;   /* ref to LCD */
}phoedt_display_info_struct;


typedef struct
{
    phoedt_size_struct      curr_size;
    phoedt_size_struct      org_size;
    phoedt_rect_struct      shown_rect; /* ref to image */
}phoedt_image_info_struct;


typedef struct
{
#ifndef __MMI_PHOEDT_STYLE_FTE_CLIP__
    U16                             scale_ratio;
    U16                             curr_min_ratio;
#endif /* __MMI_PHOEDT_STYLE_FTE_CLIP__ */
    phoedt_size_struct              w_h_ratio;
}phoedt_clip_ratio_struct;


typedef union
{
    phoedt_clip_state_enum          clip_state;
    phoedt_clip_ratio_struct        clip_ratio;
}phoedt_clip_state_union;


typedef struct
{
    U32                             step;
    phoedt_move_direction_enum      direction;
}phoedt_move_info_struct;


typedef struct
{
    MMI_BOOL                    horz;
    MMI_BOOL                    vert;
}phoedt_flip_para_struct;


typedef struct
{
    U16                         frame_idx;
    phoedt_move_info_struct     move_info;
}phoedt_frame_para_struct;


typedef struct
{
    phoedt_clip_type_enum       clip_type;
    phoedt_clip_state_union     state;
    phoedt_rect_struct          clip_rect;  /* ref to LCD */
    phoedt_move_info_struct     move_info;
}phoedt_clip_para_struct;


typedef struct
{
    U16                     icon_idx;
    phoedt_pos_struct       location;       /* icon location on the screen */
    S32                     size;           /* icon size on the screen */
    S32                     max;            /* icon limit on the screen */
    S32                     min;            /* icon limit on the screen */
    S32                     srv_max;        /* icon limit on the image */
    S32                     srv_min;        /* icon limit on the image */
    phoedt_rotate_enum      rotate;
    phoedt_move_info_struct move_info;
}phoedt_add_icon_para_struct;


#ifdef __MMI_PHOEDT_DOODLE__
typedef struct
{
    phoedt_move_info_struct     move_info;
    MMI_BOOL                    is_hide_osd;
    srv_ies_doodle_info_handle  ies_doodle_hdle;
    phoedt_doodle_type_enum     type;
    phoedt_doodle_size_enum     size;
    phoedt_doodle_size_enum     eraser_size;
    U16                         color_idx;
}phoedt_doodle_para_struct;
#endif /* #define __MMI_PHOEDT_DOODLE__ */


typedef void (*callback)(void);
typedef void (*phoedt_save_callback)(phoedt_save_result_enum);

typedef struct
{
    srv_ies_job_handle          job;
    GDI_HANDLE                  loading_hdl;
}phoedt_loading_para_struct;


typedef struct
{
    phoedt_save_state_enum      state;
    srv_ies_job_handle          job;
    phoedt_size_struct          output_size;
    MMI_BOOL                    is_bg_save;
    MMI_BOOL                    is_in_end_key;
    MMI_ID                      parent_gid;
    phoedt_save_callback        callback;
}phoedt_save_para_struct;


typedef struct
{
    MMI_MENU_ID                 item;
}phoedt_help_para_struct;


typedef struct
{
    U16                         idx;
    U16                         curr_item_idx;
}phoedt_adjust_para_struct;


typedef struct
{
    U16                         idx;
}phoedt_effect_para_struct;


typedef struct
{
    S32                 min;
    S32                 max;
    S32                 init;
    S32                 value;
    S32                 step;
}phoedt_adjust_range_struct;


typedef struct
{
    srv_ies_effect_enum id;
    MMI_STR_ID          name;
}phoedt_effect_struct;


typedef struct
{
    MMI_BOOL                        is_used;
    MMI_STR_ID                      name;
    MMI_IMG_ID                      icon;
    MMI_IMG_ID                      icon_sel;
    phoedt_adjust_range_struct      para;
}phoedt_adjust_item_struct;


typedef struct
{
    srv_ies_effect_enum                 id;
    MMI_STR_ID                          name;
    U16                                 para_count;
    phoedt_adjust_item_struct           *para_items;
}phoedt_adjust_struct;


typedef struct
{
    phoedt_effect_struct                effects[PHOEDT_EFFECT_MAX_COUNT];
    phoedt_adjust_struct                adjusts[PHOEDT_ADJUST_MAX_COUNT];
    phoedt_adjust_item_struct           adjust_para_items[PHOEDT_ADJUST_ITEM_TOTAL_COUNT];
    U32                                 effect_count;
    U32                                 adjust_count;
}phoedt_ies_capacity_info_struct;


typedef union
{
    phoedt_loading_para_struct  loading;
    phoedt_save_para_struct     save;
    phoedt_effect_para_struct   effect;
    phoedt_adjust_para_struct   adjust;
    phoedt_frame_para_struct    frame;
    phoedt_rotate_enum          rotate;
    phoedt_flip_para_struct     flip;
    phoedt_clip_para_struct     clip;
    phoedt_add_icon_para_struct icon;

#ifdef __MMI_PHOEDT_DOODLE__
    phoedt_doodle_para_struct   doodle;
#endif /* #ifdef __MMI_PHOEDT_DOODLE__ */

    phoedt_help_para_struct     help;
}phoedt_action_para_union;


typedef struct
{
    phoedt_action_type_enum         action;
    phoedt_action_state_enum        state;
    MMI_BOOL                        preview_after_end;
    phoedt_action_para_union        para;
}phoedt_action_struct;


typedef struct
{
    WCHAR                               filepath[PHOEDT_FULL_PATH_BUFFER_LEN];
}phoedt_original_file_info_struct;


typedef struct
{
    WCHAR                               filepath[PHOEDT_FULL_PATH_BUFFER_LEN];
    WCHAR                               filename[PHOEDT_FULL_FILENAME_BUFFER_LEN];
}phoedt_new_file_info_struct;


typedef struct
{
    S32                                 select_idx;
}phoedt_item_selector_struct;


typedef struct
{
    MMI_BOOL                            is_key_down;
    mmi_keypads_enum                    key_code;
}phoedt_key_context_struct;


#ifdef __MMI_TOUCH_SCREEN__
typedef struct
{
    wgui_component_info_struct          lsk;
    wgui_component_info_struct          csk;
    wgui_component_info_struct          rsk;

#ifdef __MMI_PHOEDT_STYLE_FTE_CLIP__
    wgui_component_info_struct          clip_indicators[PHOEDT_CLIP_INDICATOR_COUNT];
#endif

    wgui_component_info_struct          adjust_slider;
}phoedt_dynamic_components_struct;


typedef struct
{
    MMI_BOOL                            is_pen_down;
    phoedt_pos_struct                   last_pos;
    phoedt_touch_item_enum              obj;
    phoedt_dynamic_components_struct    dyn_comp;
}phoedt_touch_screen_context_struct;
#endif /* __MMI_TOUCH_SCREEN__ */


typedef struct
{
    srv_ies_image_handle                img;
    srv_ies_app_session_handle          session;
    srv_ies_preview_handle              preview;
    srv_ies_meta_handle                 meta;
}phoedt_ies_handle_struct;


typedef struct
{
    WCHAR*                  message;
    WCHAR*                  sub_message;
    U8                      percent;
}phoedt_cat6003_cntx_struct;


typedef struct
{
    MMI_BOOL                            is_available;
    MMI_MENU_ID                         parent_menu_id;
}phoedt_send_cntx_struct;


typedef struct
{
    phoedt_action_type_enum             changes[PHOEDT_LIMIT_CHANGE_COUNT_TOTAL];
    U32                                 count;
}phoedt_change_cntx_struct;


typedef struct
{
    GDI_HANDLE                          prcessing_icon_handle;
    srv_ies_job_handle                  job;
}phoedt_nb_preview_cntx_struct;


typedef struct
{
    MMI_ID                              cui_gid;

    MMI_BOOL                            is_external_mem;

    MMI_BOOL                            undo_available;

    phoedt_change_cntx_struct           change_cntx;

    phoedt_cat6003_cntx_struct          cat6003_cntx;

    phoedt_nb_preview_cntx_struct       nb_preview_cntx;

    phoedt_send_cntx_struct             send_cntx;

    phoedt_ies_capacity_info_struct     ies_capacity;
    PU8                                 ies_buf;
    phoedt_ies_handle_struct            ies_hdles;

    gdi_handle                          preview_layer;
    PU8                                 preview_buf;
    gdi_handle                          osd_layer;

    phoedt_display_info_struct          display_info;
    phoedt_image_info_struct            image_info;

    phoedt_original_file_info_struct    org_file;
    phoedt_new_file_info_struct         new_file;

    phoedt_action_struct                curr_act;

    phoedt_item_selector_struct         item_selector;

    phoedt_key_context_struct           key_cntx;

#ifdef __MMI_TOUCH_SCREEN__
    phoedt_touch_screen_context_struct  touch_cntx;
#endif /* __MMI_TOUCH_SCREEN__ */
}phoedt_cui_cntx_struct;


typedef struct
{
    MMI_ID                  self_gid;
    PU8                     memory;
    MMI_BOOL                is_send_available;
    WCHAR                   filepath_buf[PHOEDT_FULL_PATH_BUFFER_LEN];
}phoedt_cui_run_para_struct;


/* these APIs are used by PhotoArtEX.c */
extern MMI_STR_ID cui_phoedt_is_supported_format_ext(const WCHAR *filepath);
extern void cui_phoedt_run_ext(
    MMI_ID cui_gid, p_cui_phoedt_run_struct p_args,
    PU8 memory, U32 memory_size, MMI_BOOL is_send_available);
extern mmi_ret cui_phoedt_fmgr_notify_hdlr(mmi_event_struct *evt);

#endif /* __MMI_PHOTOEDITOR__ */
#endif /* _PHOEDT_CUI_H_ */