Tizen 2.0 Release
[profile/ivi/libscl-ui.git] / scl / include / sclconfig.h
1 /*
2  * Copyright 2012-2013 Samsung Electronics Co., Ltd.
3  *
4  * Licensed under the Flora License, Version 1.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://floralicense.org/license/
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  *
16  */
17
18 #ifndef __SCL_CONFIG_H__
19 #define __SCL_CONFIG_H__
20
21 #ifndef IMG_PATH_PREFIX
22 #define IMG_PATH_PREFIX "image"
23 #endif
24
25 /* Display direction definition */
26 typedef enum _SCLDisplayMode {
27     DISPLAYMODE_PORTRAIT = 0,   /* portrait display mode */
28     DISPLAYMODE_LANDSCAPE,              /* landscape display mode */
29     DISPLAYMODE_MAX,                    /* maximum count of display mode */
30 }SCLDisplayMode;
31
32 /* Rotation definition */
33 typedef enum _SCLRotation {
34     ROTATION_0 = 0,             /* No rotation */
35     ROTATION_90_CW,             /* 90 degree, clockwise */
36     ROTATION_180,               /* 180 degree */
37     ROTATION_90_CCW,    /* 90 degree, counter-clockwise (Same as 270 degree, clockwise) */
38     ROTATION_MAX,
39 }SCLRotation;
40
41 /**@brief  Layout and Input mode Style definition */
42 typedef enum _SCLLayoutStyle {
43     LAYOUT_STYLE_BASE = 0,
44     LAYOUT_STYLE_POPUP,
45     LAYOUT_STYLE_POPUP_GRAB,
46     MAX_LAYOUT_STYLE
47 }SCLLayoutStyle;
48
49 /* Key Define */
50
51 /**@brief  Button Type definition */
52 typedef enum _SCLButtonType {
53     BUTTON_TYPE_NORMAL   = 0,           /**< Normal key */
54     BUTTON_TYPE_GRAB,                           /**< Focus grab */
55     /* No button gets focus when cursor moves out of this button's area */
56     BUTTON_TYPE_SELFISH,
57     /* A button that fires click event when dragged into the button's area */
58     BUTTON_TYPE_DRAG,                           /**< Drag button */
59     /* A button with variant value - ex> [a] -> [b] */
60     BUTTON_TYPE_MULTITAP,                       /**< Multi-tap key */
61     /* A multitap with automatic commitment - ex> ([a] -> a[b]) , ([p] -> p[i] -> pi[n] -> pin[g])*/
62     BUTTON_TYPE_ROTATION,                       /**< Rotation key */
63     BUTTON_TYPE_DIRECTION,                      /**< Direction decided by whole mouse movement from inital point */
64     BUTTON_TYPE_RELATIVE_DIRECTION,     /**< Direction decided by recent mouse movement */
65     BUTTON_TYPE_UIITEM,                         /** Not a button, just for displaying image */
66     MAX_BUTTON_TYPE                                     /* maximum number of Key type */
67 }SCLButtonType;
68
69 /* Values used for extra_option field of SclLayoutKeyProperties structure, in case of BUTTON_TYPE_DIRECTION type button */
70 #define DIRECTION_EXTRA_OPTION_4_DIRECTIONS 0
71 #define DIRECTION_EXTRA_OPTION_8_DIRECTIONS 1
72 #define DIRECTION_EXTRA_OPTION_4_DIRECTIONS_WITH_LONG 2
73 #define DIRECTION_EXTRA_OPTION_8_DIRECTIONS_WITH_LONG 3
74 #define DIRECTION_EXTRA_OPTION_4_DIRECTIONS_WITH_RETURN 4
75 #define DIRECTION_EXTRA_OPTION_8_DIRECTIONS_WITH_RETURN 5
76 #define DIRECTION_EXTRA_OPTION_4_DIRECTIONS_WITH_RETURN_AND_CURVE 6
77
78 /**@brief Key Type definition */
79 typedef enum _SCLKeyType {
80     KEY_TYPE_NONE = 0,          /**< none */
81     KEY_TYPE_CHAR,                      /**< key that can be displayed independently */
82     KEY_TYPE_CONTROL,           /**< key to use as control */
83     KEY_TYPE_MODECHANGE,        /**< key to change mode*/
84     KEY_TYPE_STRING,            /**< key to be displayed as string */
85     KEY_TYPE_USER,                      /**< key to be processed by user custom function */
86     MAX_KEY_TYPE                        /* maximum number of Key type */
87 }SCLKeyType;
88
89 /**@brief Key Event Type definition */
90 typedef enum _SCLEventType{
91     EVENT_TYPE_NONE = 0,        /**< none */
92     EVENT_TYPE_PRESS,           /**< button press event */
93     EVENT_TYPE_MOVE,            /**< button move event */
94     EVENT_TYPE_RELEASE,         /**< button release event */
95     EVENT_TYPE_LONGPRESS,       /**< button longpress event */
96     EVENT_TYPE_REPEAT,          /**< button repeat event */
97     MAX_EVENT_TYPE                      /* maximum number of Key type */
98 }SCLEventType;
99
100
101 /**@brief Key Modifier definition */
102 typedef enum _SCLKeyModifier {
103     KEY_MODIFIER_NONE = 0,                                              /**< none */
104     KEY_MODIFIER_LONGKEY,                                               /**< longkey event */
105     KEY_MODIFIER_MULTITAP_START,                                /**< multitap started */
106     KEY_MODIFIER_MULTITAP_REPEAT,                               /**< multitap repeated */
107     
108     KEY_MODIFIER_DIRECTION_LEFT,                                /**< drag left */
109     KEY_MODIFIER_DIRECTION_RIGHT,                               /**< drag right */
110     KEY_MODIFIER_DIRECTION_UP,                                  /**< drag up */
111     KEY_MODIFIER_DIRECTION_DOWN,                                /**< drage down */
112     KEY_MODIFIER_DIRECTION_UP_LEFT,                             /**< drag up left */
113     KEY_MODIFIER_DIRECTION_UP_RIGHT,                    /**< drag up right */
114     KEY_MODIFIER_DIRECTION_DOWN_LEFT,                   /**< drag down left */
115     KEY_MODIFIER_DIRECTION_DOWN_RIGHT,                  /**< drage down right */
116
117     KEY_MODIFIER_DIRECTION_LEFT_LONG,                   /**< drag left */
118     KEY_MODIFIER_DIRECTION_RIGHT_LONG,                  /**< drag right */
119     KEY_MODIFIER_DIRECTION_UP_LONG,                             /**< drag up */
120     KEY_MODIFIER_DIRECTION_DOWN_LONG,                   /**< drage down */
121     KEY_MODIFIER_DIRECTION_UP_LEFT_LONG,                /**< drag up left */
122     KEY_MODIFIER_DIRECTION_UP_RIGHT_LONG,               /**< drag up right */
123     KEY_MODIFIER_DIRECTION_DOWN_LEFT_LONG,              /**< drag down left */
124     KEY_MODIFIER_DIRECTION_DOWN_RIGHT_LONG,             /**< drage down right */
125
126     KEY_MODIFIER_DIRECTION_LEFT_RETURN,                 /**< drag left */
127     KEY_MODIFIER_DIRECTION_RIGHT_RETURN,                /**< drag right */
128     KEY_MODIFIER_DIRECTION_UP_RETURN,                   /**< drag up */
129     KEY_MODIFIER_DIRECTION_DOWN_RETURN,                 /**< drage down */
130     KEY_MODIFIER_DIRECTION_UP_LEFT_RETURN,              /**< drag up left */
131     KEY_MODIFIER_DIRECTION_UP_RIGHT_RETURN,             /**< drag up right */
132     KEY_MODIFIER_DIRECTION_DOWN_LEFT_RETURN,    /**< drag down left */
133     KEY_MODIFIER_DIRECTION_DOWN_RIGHT_RETURN,   /**< drage down right */
134
135     KEY_MODIFIER_DIRECTION_CURVE_UP_LEFT,               /**< drag up left */
136     KEY_MODIFIER_DIRECTION_CURVE_UP_RIGHT,              /**< drag up right */
137     KEY_MODIFIER_DIRECTION_CURVE_DOWN_LEFT,             /**< drag down left */
138     KEY_MODIFIER_DIRECTION_CURVE_DOWN_RIGHT,    /**< drage down right */
139     KEY_MODIFIER_DIRECTION_CURVE_LEFT_UP,               /**< drag left up */
140     KEY_MODIFIER_DIRECTION_CURVE_LEFT_DOWN,             /**< drag left down */
141     KEY_MODIFIER_DIRECTION_CURVE_RIGHT_UP,              /**< drag right up */
142     KEY_MODIFIER_DIRECTION_CURVE_RIGHT_DOWN,    /**< drage right down */
143
144     KEY_MODIFIER_MAX                    /* maximum number of Key type */
145 }SCLKeyModifier;
146
147
148 /**@brief  Popup Type definition */
149 typedef enum _SCLPopupType {
150     /**< doesn't use popup */
151     POPUP_TYPE_NONE = 0,
152     /**< to use popup (It is used in extention character sign. After to be selected, this action is continued until selecting another area) */
153     POPUP_TYPE_BTN_RELEASE_POPUP,
154     /**< to use popup (It is used in extention character sign. After to be selected, this action disappears instantly) */
155     POPUP_TYPE_BTN_RELEASE_POPUP_ONCE,
156     /**< to use popup (it is used in extention character sign. This action disappears at Drag-Up */
157     POPUP_TYPE_BTN_PRESS_POPUP_DRAG,
158     /**< to use popup (it is used in extention character sign. This action disappears at Drag-Up */
159     POPUP_TYPE_BTN_LONGPRESS_POPUP,
160     /**< to use popup (it is used in extention character sign. This action disappears at Drag-Up */
161     POPUP_TYPE_BTN_LONGPRESS_POPUP_ONCE,
162     /**< to use popup (for multi-tap char) */
163     POPUP_TYPE_AUTO_POPUP,
164     /* maximum number of popup type */
165     MAX_POPUP_TYPE
166 }SCLPopupType;
167
168 /**@brief Candidate position style definition */
169 typedef enum _SCLCandidatePosition {
170     CAND_POS_ABOVE_KEYPAD = 0,
171     CAND_POS_BELOW_TEXT,
172     CAND_POS_MANUAL,
173     MAX_CANDIDATE_POSITION
174 }SCLCandidatePosition;
175
176 /**@brief Candidate style definition */
177 typedef enum _SCLCandidateStyle {
178     CAND_STYLE_DEFAULT = 0,
179     CAND_STYLE_A,
180     CAND_STYLE_B,
181     CAND_STYLE_C,
182     MAX_CANDIDATE_STYLE
183 }SCLCandidateStyle;
184
185 /**@brief Magnifier display style definition */
186 typedef enum _SCLMagnifierStyle {
187     MAGNIFIER_STYLE_LABEL_ONLY = 0,
188     MAGNIFIER_STYLE_SEL_AREA_CAPTURE,
189     MAX_MAGNIFIER_STYLE
190 }SCLMagnifierStyle;
191
192 /**@brief Preview window position type definition */
193 typedef enum _SCLPreviewPosition {
194     PREVIEW_POS_CENTER_OF_APPL_AREA = 0,
195     PREVIEW_POS_ABOVE_SELECTED_BUTTON,
196     PREVIEW_POS_MANUAL,
197     MAX_PREVIEW_POSITION
198 }SCLPreviewPosition;
199
200 /**@brief Action state definition */
201 typedef enum _SCLActionState {
202     ACTION_STATE_BASE_INIT = 0,
203     ACTION_STATE_BASE_PRESS,
204     ACTION_STATE_BASE_MOVING,
205     ACTION_STATE_BASE_RELEASE,
206     ACTION_STATE_BASE_LONGKEY,
207     ACTION_STATE_BASE_REPEATKEY,
208     ACTION_STATE_POPUP_INIT,
209     ACTION_STATE_POPUP_PRESS,
210     ACTION_STATE_POPUP_MOVING,
211     ACTION_STATE_POPUP_RELEASE,
212     ACTION_STATE_POPUP_LONGKEY,
213     ACTION_STATE_POPUP_REPEATKEY,
214     MAX_ACTION_STATE
215 }SCLActionState;
216
217 /**@brief  Button state definition */
218 typedef enum _SCLButtonState {
219     BUTTON_STATE_NORMAL = 0,    /**< normal state */
220     BUTTON_STATE_PRESSED,               /**< pressed state */
221     BUTTON_STATE_DISABLED,              /**< disabled state */
222     //BUTTON_STATE_HIGHLIGHT,   /**< highlighed state */
223     //BUTTON_STATE_LONGKEY,             /**< londkey state */
224     SCL_BUTTON_STATE_MAX                /* maximum number of button state */
225 }SCLButtonState;
226
227
228 /**@brief  Drag Direction definition */
229 typedef enum _SCLDragType {
230     DRAG_NONE = 0,              /* doesn't use Drag */
231     DRAG_LEFT,                  /* drag to left side */
232     DRAG_RIGHT,                 /* drag to right side */
233     DRAG_UP,                    /* drag to upper side */
234     DRAG_DOWN,                  /* drage to down side */
235     DRAG_LEFT_TOP,              /* drag to left top side */
236     DRAG_RIGHT_TOP,             /* drag to right top side */
237     DRAG_LEFT_BOTTOM,   /* drag to left bottm side */
238     DRAG_RIGHT_BOTTOM,  /* drage to right bottom side */
239     MAX_DRAG,                   /* maximum number of drag type */
240 }SCLDragType;
241
242 /**@brief  Label alignment definition */
243 typedef enum _SCLLabelAlignment {
244     LABEL_ALIGN_LEFT_TOP = 0,
245     LABEL_ALIGN_CENTER_TOP,
246     LABEL_ALIGN_RIGHT_TOP,
247     LABEL_ALIGN_LEFT_MIDDLE,
248     LABEL_ALIGN_CENTER_MIDDLE,
249     LABEL_ALIGN_RIGHT_MIDDLE,
250     LABEL_ALIGN_LEFT_BOTTOM,
251     LABEL_ALIGN_CENTER_BOTTOM,
252     LABEL_ALIGN_RIGHT_BOTTOM,
253     MAX_LABEL_ALIGNMENT
254 }SCLLabelAlignment;
255
256 /**@brief  Shadow direction definition */
257 typedef enum _SCLShadowDirection {
258     SHADOW_DIRECTION_NONE = 0,
259     SHADOW_DIRECTION_LEFT_TOP ,
260     SHADOW_DIRECTION_CENTER_TOP,
261     SHADOW_DIRECTION_RIGHT_TOP,
262     SHADOW_DIRECTION_LEFT_MIDDLE,
263     SHADOW_DIRECTION_CENTER_MIDDLE,
264     SHADOW_DIRECTION_RIGHT_MIDDLE,
265     SHADOW_DIRECTION_LEFT_BOTTOM,
266     SHADOW_DIRECTION_CENTER_BOTTOM,
267     SHADOW_DIRECTION_RIGHT_BOTTOM,
268     MAX_SHADOW_DIRECTION
269 }SCLShadowDirection;
270
271 /**@brief  timer id */
272 typedef enum _SCLTimer {
273     SCL_TIMER_AUTOPOPUP = 100,
274     SCL_TIMER_SHORT_LONGKEY,
275     SCL_TIMER_LONGKEY,
276     SCL_TIMER_REPEATKEY,
277     SCL_TIMER_USERAREA,
278     SCL_TIMER_BUTTON_DELAY,
279     SCL_TIMER_POPUP_TIMEOUT,
280     SCL_TIMER_AUTOTEST,
281 }SCLTimer;
282
283 /**@brief  Feedback style */
284 typedef enum _SCLFeedbackStyle {
285     FEEDBACK_STYLE_SOUND,
286     FEEDBACK_STYLE_VIBRATION,
287     MAX_FEEDBACK_STYLE
288 }SCLFeedbackStyle;
289
290 /**@brief  Touch Offset */
291 typedef enum _SCLTouchOffsetLevel {
292     TOUCH_OFFSET_LEVEL_1,
293     TOUCH_OFFSET_LEVEL_2,
294     TOUCH_OFFSET_LEVEL_3,
295     MAX_TOUCH_OFFSET_LEVEL
296 }SCLTouchOffsetLevel;
297
298 /* Type Limitation definition */
299 #define MAX_SIZE_OF_LAYOUT_NAME 255
300 #define MAX_SIZE_OF_MULTITAP_CHAR 10
301 #define MAX_SIZE_OF_LABEL_FOR_ONE 9
302 #define MAX_SIZE_OF_LAYOUT 10
303 #define MAX_SIZE_OF_CANDIDATE 50
304 #define MAX_PRIVATE_KEY 100
305 #define MAX_DISABLED_KEY 100
306 #define MAX_SIZE_OF_AUTOPOPUP_STRING 20
307 #define MAX_SIZE_OF_MAGNIFIER_STRING 4
308 #define MAX_SIZE_OF_SUBLAYOUT_STRING 32
309
310 /**@brief  Window Decorator Images */
311 typedef enum _SCLWindowDecorator {
312     WND_DECORATOR_TOP_LEFT,
313     WND_DECORATOR_TOP_CENTER,
314     WND_DECORATOR_TOP_RIGHT,
315     WND_DECORATOR_MIDDLE_LEFT,
316     WND_DECORATOR_MIDDLE_RIGHT,
317     WND_DECORATOR_BOTTOM_LEFT,
318     WND_DECORATOR_BOTTOM_CENTER,
319     WND_DECORATOR_BOTTOM_RIGHT,
320     MAX_WND_DECORATOR,
321 }SCLWindowDecorator;
322
323 /**@brief  SCL Notification to ISEs */
324 typedef enum _SCLUINotiType {
325     SCL_UINOTITYPE_POPUP_TIMEOUT, // The layout of popup window will be passed as etc_info data
326     SCL_UINOTITYPE_GESTURE_FLICK,
327     SCL_UINOTITYPE_SHIFT_STATE_CHANGE,
328     MAX_NOTITYPE,
329 }SCLUINotiType;
330
331 /**@brief  Current dragging state */
332 typedef enum _SCLDragState {
333     SCL_DRAG_STATE_NONE,
334     SCL_DRAG_STATE_LEFT,
335     SCL_DRAG_STATE_RIGHT,
336     SCL_DRAG_STATE_UP,
337     SCL_DRAG_STATE_DOWN,
338     SCL_DRAG_STATE_INVALID,
339     SCL_DRAG_STATE_RETURN,
340     SCL_DRAG_STATE_MAX,
341 } SCLDragState;
342
343 typedef enum _SCLMultitouchType {
344     SCL_MULTI_TOUCH_TYPE_EXCLUSIVE,                     /* On a new PRESS event, previous touch events will be forcefully released */
345     SCL_MULTI_TOUCH_TYPE_SETTLE_PREVIOUS,       /* On a new PRESS event, previous touch events will be forcefully settled */
346     SCL_MULTI_TOUCH_TYPE_COOPERATIVE,           /* New touch events do not affect previous touch events */
347     SCL_MULTI_TOUCH_TYPE_GRAB_SUB_EVENTS,       /* New touch events are considered to be sub events, not generating button events */
348 } SCLMultiTouchType;
349
350 /* Shift flag */
351 typedef enum _SCLShiftState {
352     SCL_SHIFT_STATE_OFF,
353     SCL_SHIFT_STATE_ON,
354     SCL_SHIFT_STATE_LOCK,
355     SCL_SHIFT_STATE_MAX,
356 } SCLShiftState;
357
358 /* Shift Multi-touch state */
359 typedef enum _SCLShiftMultitouchState {
360     SCL_SHIFT_MULTITOUCH_OFF,                           /* Shift button is set to OFF state */
361     SCL_SHIFT_MULTITOUCH_ON_PRESSED,            /* When OFF state, shift button is just pressed  */
362     SCL_SHIFT_MULTITOUCH_ON_KEY_ENTERED,        /* While the shift button is in pressed state, another key was entered  */
363     SCL_SHIFT_MULTITOUCH_ON_RELEASED,           /* Shift button was released without any other key stroke */
364     SCL_SHIFT_MULTITOUCH_LOCK,                          /* Shift button is set to LOCK state */
365     SCL_SHIFT_MULTITOUCH_MAX,
366 } SCLShiftMultitouchState;
367
368 /* UI Parser types */
369 typedef enum _SCLParserType {
370     SCL_PARSER_TYPE_XML,
371     SCL_PARSER_TYPE_BINARY_XML,
372 } SCLParserType;
373
374
375 /* SCL predefined Identifiers */
376 #define SCL_INPUTMODE_AUTOPOPUP 10000
377 #define SCL_LAYOUT_AUTOPOPUP 10000
378
379 #define SCL_LABEL_PROPERTY_AUTOPOPUP 10000
380 #define SCL_LABEL_PROPERTY_CANDIDATE 10001
381 #define SCL_LABEL_PROPERTY_ZOOMING 10002
382 #define SCL_LABEL_PROPERTY_PREVIEW 10003
383
384 #define SCL_LABEL_OVERLENGTH_TEXT_RESIZE_RATE 0.9f
385
386 #define SCL_LONGKEY_DURATION 800
387 #define SCL_LONGKEY_CANCEL_DIST -1
388 #define SCL_AUTOPOPUP_KEY_DURATION 500
389 #define SCL_REPEATKEY_DURATION 150
390 #define SCL_REPEATKEY_WORD_DELETION_START_DURATION 100
391 #define SCL_REPEATKEY_ACCELERATION 10
392 #define SCL_REPEATKEY_MIN_DURATION 50
393
394 #define SCL_BUTTON_MIN_DURATION 100
395
396 #define SCL_DIRECTION_RECOG_DIST 60
397 #define SCL_DIRECTION_RECOG_DIST_SIDE 20
398 #define SCL_DIRECTION_LONG_RECOG_DIST 50
399 #define SCL_DIRECTION_RELATIVE_RECOG_DIST 10
400 #define SCL_DIRECTION_RELATIVE_DIFFDIR_RECOG_DIST 30
401
402 #define SCL_DRAG_CURVE_RECOG_DIST 70
403 #define SCL_DRAG_CURVE_4_DIRECTION_ANGLE_VALUE 1.0f // ratio between x and y for determining 4 direction, 3 means atan(1/3) degree
404 #define SCL_DRAG_CURVE_FINAL_ANGLE_VALUE 3.0f // ratio between x and y for determining final drag curve, 3 means atan(1/3) degree
405
406 #define SCL_DRAG_RETURN_RECOG_THRESHOLD_RETURN 1.1f // In RETURN drag state, apply this value for checking drag return action
407 #define SCL_DRAG_RETURN_RECOG_THRESHOLD_OTHER 0.9f // In non-NONE drag state, apply this value for checking drag return action
408 #define SCL_DRAG_RETURN_RECOG_DIST_BACKWARD 20
409 #define SCL_DRAG_RETURN_RECOG_ANGLE_BACKWARD (M_PI * 3) / 4
410
411 #define SCL_AUTOTEST_TIMER_INTERVAL 20
412 #define SCL_AUTOTEST_TIMER_INITIAL_INTERVAL 3000
413 #define SCL_AUTOTEST_NUM 500
414
415 #define SCL_MOUSE_BUTTON_CHANGE_THRESHOLD_X 15
416 #define SCL_MOUSE_BUTTON_CHANGE_THRESHOLD_Y 20
417
418 #define SCL_FLICK_GESTURE_RECOG_THRESHOLD 200
419 #define SCL_FLICK_GESTURE_RECOG_TIME 500
420
421 #define SCL_AUTO_DETECT_PORTRAIT_LANDSCAPE TRUE
422
423 typedef enum _SCLDebugMode {
424     DEBUGMODE_DISABLED,
425     DEBUGMODE_DISPLAY_INTERNAL,
426     DEBUGMODE_AUTOTEST,
427 }SCLDebugMode;
428
429 #endif //__SCL_CONFIG_H__