2 * Copyright 2012-2013 Samsung Electronics Co., Ltd.
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
8 * http://floralicense.org/license/
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.
18 #ifndef __SCL_CONFIG_H__
19 #define __SCL_CONFIG_H__
21 #ifndef IMG_PATH_PREFIX
22 #define IMG_PATH_PREFIX "image"
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 */
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) */
41 /**@brief Layout and Input mode Style definition */
42 typedef enum _SCLLayoutStyle {
43 LAYOUT_STYLE_BASE = 0,
45 LAYOUT_STYLE_POPUP_GRAB,
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 */
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 */
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
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 */
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 */
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 */
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 */
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 */
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 */
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 */
144 KEY_MODIFIER_MAX /* maximum number of Key type */
148 /**@brief Popup Type definition */
149 typedef enum _SCLPopupType {
150 /**< doesn't use popup */
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 */
168 /**@brief Candidate position style definition */
169 typedef enum _SCLCandidatePosition {
170 CAND_POS_ABOVE_KEYPAD = 0,
173 MAX_CANDIDATE_POSITION
174 }SCLCandidatePosition;
176 /**@brief Candidate style definition */
177 typedef enum _SCLCandidateStyle {
178 CAND_STYLE_DEFAULT = 0,
185 /**@brief Magnifier display style definition */
186 typedef enum _SCLMagnifierStyle {
187 MAGNIFIER_STYLE_LABEL_ONLY = 0,
188 MAGNIFIER_STYLE_SEL_AREA_CAPTURE,
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,
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,
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 */
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 */
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,
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,
271 /**@brief timer id */
272 typedef enum _SCLTimer {
273 SCL_TIMER_AUTOPOPUP = 100,
274 SCL_TIMER_SHORT_LONGKEY,
278 SCL_TIMER_BUTTON_DELAY,
279 SCL_TIMER_POPUP_TIMEOUT,
283 /**@brief Feedback style */
284 typedef enum _SCLFeedbackStyle {
285 FEEDBACK_STYLE_SOUND,
286 FEEDBACK_STYLE_VIBRATION,
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;
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
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,
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,
331 /**@brief Current dragging state */
332 typedef enum _SCLDragState {
335 SCL_DRAG_STATE_RIGHT,
338 SCL_DRAG_STATE_INVALID,
339 SCL_DRAG_STATE_RETURN,
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 */
351 typedef enum _SCLShiftState {
354 SCL_SHIFT_STATE_LOCK,
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;
368 /* UI Parser types */
369 typedef enum _SCLParserType {
371 SCL_PARSER_TYPE_BINARY_XML,
375 /* SCL predefined Identifiers */
376 #define SCL_INPUTMODE_AUTOPOPUP 10000
377 #define SCL_LAYOUT_AUTOPOPUP 10000
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
384 #define SCL_LABEL_OVERLENGTH_TEXT_RESIZE_RATE 0.9f
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
394 #define SCL_BUTTON_MIN_DURATION 100
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
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
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
411 #define SCL_AUTOTEST_TIMER_INTERVAL 20
412 #define SCL_AUTOTEST_TIMER_INITIAL_INTERVAL 3000
413 #define SCL_AUTOTEST_NUM 500
415 #define SCL_MOUSE_BUTTON_CHANGE_THRESHOLD_X 15
416 #define SCL_MOUSE_BUTTON_CHANGE_THRESHOLD_Y 20
418 #define SCL_FLICK_GESTURE_RECOG_THRESHOLD 200
419 #define SCL_FLICK_GESTURE_RECOG_TIME 500
421 #define SCL_AUTO_DETECT_PORTRAIT_LANDSCAPE TRUE
423 typedef enum _SCLDebugMode {
425 DEBUGMODE_DISPLAY_INTERNAL,
429 #endif //__SCL_CONFIG_H__