ATS_LCD.h
3.51 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
/*
Copyright Wang yong ALL RIGHT RESERVED !
@ file name: ATS_LCD.h
@ description: LCD 相关的适配函数
@ Author: wangyong, doforfaith@gmail.com
@ Modify History:
Date Event Person
10-05-31 Creator wangyong
*/
#if defined(__SKY_3DGUI__)
#ifndef __ATS_LCD_H__
#define __ATS_LCD_H__
#include "ATS_basic.h"
#include "ATS_adaptation_features.h"
#include "ATS_G_utility.h"
/*
@ 注意点:
为了兼容多平台,ATS 引入了"层"的概念,对应的数据结构为ATS_G_LAYER,见ATS_G_utility.h
ATS 中所有的图片绘制、文字绘制、图形处理接口,均是针对针对活动层的操作,可以将"层" 理解为画布的概念
对于画布,我们可以设置裁剪区域(ATS_lcd_push_and_set_clip),可以将某个画布设置为LCD 显示的画布(ATS_lcd_push_and_set_refresh_layer)
关于ATS 图形处理的接口在ATS_G_transform.h 中
*/
#define ATS_LCD_SLEEP_IN_CALLBACK_COUNT 8
#define ATS_LCD_SLEEP_OUT_CALLBACK_COUNT 8
/*LCD 旋转角度状态*/
typedef enum
{
ATS_LCD_ANGLE_0,
ATS_LCD_ANGLE_90,
ATS_LCD_ANGLE_180,
ATS_LCD_ANGLE_270,
ATS_LCD_ANGLE_MAX
}ATS_LCD_ANGLE;
/*
@ 获取当前屏幕的宽高值,
请注意,当LCD 处于旋转状态时,LCD 的宽高值也相应改变
*/
extern ats_int32 ATS_lcd_get_width(void);
extern ats_int32 ATS_lcd_get_height(void);
/*
@ 旋转LCD 至某种角度状态
angle,要旋转的角度状态
*/
extern void ATS_lcd_rotate(ATS_LCD_ANGLE angle);
/*
@ 获取当前LCD 的角度状态
*/
extern ATS_LCD_ANGLE ATS_lcd_get_rotated_angle(void);
/*
@ 重置LCD 的刷新参数
*/
extern void ATS_lcd_reset_refresh_param(void);
/*
@ 锁住和释放LCD 的刷新,这两个函数必须配对使用,但可以允许重叠调用
*/
extern void ATS_lcd_lock_refresh(void);
extern void ATS_lcd_unlock_refresh(void);
/*
@ LCD Clip属性值的压栈和出栈操作
*/
extern void ATS_lcd_push_and_set_clip( ATS_RECT* clip_rect);
extern void ATS_lcd_pop_and_restore_clip(void);
/*
@ 这两个函数不建议使用,代替函数为ATS_lcd_push_and_set_active_layer 与ATS_lcd_pop_and_restore_active_layer
拟取消这两个函数
*/
extern ats_uint32 ATS_lcd_set_active_buffer( ATS_G_LAYER* layer);
extern void ATS_lcd_reset_active_buffer(ats_uint32 param);
/*
@ 将指定层设置为活动层并将当前活动层压栈
*/
extern void ATS_lcd_push_and_set_active_layer( ATS_G_LAYER* layer);
/*
@ 弹出栈中记录的层为当前活动层
*/
extern void ATS_lcd_pop_and_restore_active_layer(void);
/*
@ LCD 刷新层的压栈和出栈操作
*/
extern void ATS_lcd_push_and_set_refresh_layer( ATS_G_LAYER* layer);
extern void ATS_lcd_pop_and_restore_refresh_layer(void);
/*
@ 刷新LCD 的指定区域
*/
extern void ATS_lcd_refresh_area( ATS_AREA* area );
/*
@ 刷新LCD 的整个区域
*/
extern void ATS_lcd_refresh_all(void);
/*判断LCD 当前是否处在睡眠模式*/
extern ATS_BOOL ATS_lcd_is_sleep_mode(void);
/*注册LCD 进入睡眠模式后的回调函数
返回索引值,小于0 表示注册失败
*/
extern ats_int32 ATS_lcd_register_sleep_in_callback( ATS_VOID_FUNC callback );
/*注册LCD 退出睡眠模式后的回调函数
返回索引值,小于0 表示注册失败
*/
extern ats_int32 ATS_lcd_register_sleep_out_callback( ATS_VOID_FUNC callback );
/*清除LCD 进入睡眠模式的回调函数,指定索引值*/
extern void ATS_lcd_clear_sleep_in_callback( ats_int32 index );
/*清除LCD 退出睡眠模式的回调函数,指定索引值*/
extern void ATS_lcd_clear_sleep_out_callback( ats_int32 index );
/*清除LCD 进入睡眠模式的回调函数,指定索引值*/
extern void ATS_lcd_clear_all_sleep_in_callback(void);
/*清除LCD 退出睡眠模式的回调函数,指定索引值*/
extern void ATS_lcd_clear_all_sleep_out_callback(void);
/*执行LCD 进入/退出睡眠模式的回调函数*/
extern void ATS_lcd_execute_sleep_in_callbacks(void);
extern void ATS_lcd_execute_sleep_out_callbacks(void);
#endif /*__ATS_LCD_H__*/
#endif /*__SKY_3DGUI__*/