ATS_LCD.h 3.51 KB
/*
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__*/