-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathBGFunc.h
168 lines (124 loc) · 7.23 KB
/
BGFunc.h
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
#ifndef BGFUNC_HEADER
#define BGFUNC_HEADER
#include "agb.h"
#include "cmddefine.h"
#include "global.h"
#include "dma.h"
#define RGB(r,g,b) ((r)+(g<<5)+(b<<10)) // 设置GBA的色彩
//******************************************************************************
//**** 延时函数(毫秒级);
void sleep(u16 ms);
//******************************************************************************
//**** 在调试显示框中,打印调试信息(要求MODE_3);
void dbgPrint(char *str,...);
//******************************************************************************
//**** 初始化资源,将系统资源结构体进行赋值
void initResource();
//******************************************************************************
//**** 设定当前淡入淡出状态
//**** status=1代表无效果,为0代表为效果最大;
//**** colorWhite=1代表白色效果,为0代表黑色效果
void FadeStatus(u8 status, u8 colorWhite);
//******************************************************************************
//**** 指定时间段的淡入淡出动画效果
//**** fadeIN=0代表淡出(雾化加重),否则淡入(雾化减轻)
//**** colorWhite=1代表白色效果,为0代表黑色效果
//**** time为动画渐变过程中,每帧经历的时间
void FadeInOut(u8 fadeIN, u8 colorWhite, u32 time);
//******************************************************************************
//**** ALPHA混合效果,指定两个GB索引,及各自的比例(二者之和为16);
void AlphaBG(u8 bg1index, u8 bg2index,u8 bg1per, u8 bg2per);
//******************************************************************************
//**** 在屏幕显存/缓存上画满幅图像(240x160);
//**** isDrawDirect=1,直接写入显存;=0则写入二级缓存
void DrawBG(u16 *GFX, u8 isDrawDirect);
//******************************************************************************
//**** 在屏幕显存/缓存 x,y处画一个WxH规格的矩形图形
//**** isTrans为1代表是否过滤透明色,tcolor为透明色值
void DrawPic(u16 *GFX, u16 x, u16 y, u16 w, u16 h, u8 isTrans, u16 tcolor, u8 isDrawDirect);
//******************************************************************************
//**** 指定图像路径文件名,在屏幕显存/缓存 x,y处画一个WxH规格的矩形图形
//**** isTrans为1代表是否过滤透明色,tcolor为透明色值
void DrawFilePic(char *filename, u16 x, u16 y, u16 w, u16 h, u8 isTrans, u16 tcolor, u8 isDrawDirect);
//******************************************************************************
//**** 将二级缓存内容同步到显存
void syncVVram();
//******************************************************************************
//**** 用指定颜色清空显存/缓存的一个区域
void Clear(u16 x, u16 y, u16 w, u16 h, u16 c, u8 isDrawDirect);
//******************************************************************************
//**** 重现某区域的背景图像(使用背景图像相应位置填充某区域)
void ClearWithBG(u16 x, u16 y, u16 w, u16 h, u16* pbg, u8 isDrawDirect);
//******************************************************************************
//**** 二级缓存画点函数
void setPixel(int x, int y, u16 c);
//******************************************************************************
//**** 屏幕显存/缓存画点函数
void setPixel2(u16 *v, int x, int y, u16 c);
//******************************************************************************
//**** 画16X8的ASC字串,长度限制为len,如len=0则自动判断长度
void DrawASCText16(char *str, u32 len, u16 x, u16 y, u16 c, u8 isDrawDirect);
//******************************************************************************
//**** 打印英语音标(12x6格式);,长度限制为len,如len=0则自动判断长度
void DrawYinBiao12(char *str, u32 len, u16 x, u16 y, u16 c, u8 isDrawDirect);
//******************************************************************************
//**** 打印输出一行句子(规格12x12汉字);,长度限制为len,如len=0则自动判断长度
//**** (本函数实现稍微复杂,主要是尽量利用加法实现乘法,加快运算速度);
void DrawHZText12(char *str, u16 len, u16 x, u16 y, u16 c, u8 isDrawDirect);
//******************************************************************************
//**** 准备在指定区域中打印汉字段落(自动换行),本函数得到文本行数
//**** 长度限制为len,如len=0则自动判断长度
void DrawHZTextGetLineNum(char *str, u32 len, u16 w, u16 *totalLineNum);
//******************************************************************************
//**** 简单的TXT文件阅读器(暂停使用);
void DrawTXTviewer(char *data, u32 size, u32 start, u16 spcLine, u16 scrH, u16 scrY , u16 mode);
//******************************************************************************
//**** 在指定区域中打印文本段落,自动换行
//**** 指定每行的高度lineH(推荐14-16);,li指定从哪行开始显示,文本颜色为c
void DrawHZTextRect(char *str, u32 len, u16 x, u16 y, u16 w, u16 h, u16 lineH, u16 li, u16 c, u8 isDrawDirect);
//******************************************************************************
//**** 根据文件名,返回该文件类型
u32 GetFileType(char *rfname);
//******************************************************************************
//**** 画线函数,颜色为c
void DrawLine(u16 x, u16 y, u16 x2, u16 y2, u16 c);
//******************************************************************************
//**** 画一个填充四边形
void DrawRect(u16 x, u16 y, u16 x2, u16 y2, u16 c);
//******************************************************************************
//**** 创建带图标的消息窗口,参数分别为标题、消息内容、X、Y、图标集的索引
void CreateWindow(char* caption, char* msg, u16 x, u16 y, u8 iconIndex);
//******************************************************************************
//**** 画窗口(暂停使用);
void DrawFrame(char *caption);
//******************************************************************************
//**** 画文件管理器窗口(暂停使用);
void DrawFileMngr(char *caption,char* footmsg, FM_MD_FILE* fmf, u16 oldFi, u16 newFi, u16 scrH, u16 scrY , u16 mode);
//******************************************************************************
//**** 移动y1处一条高h的屏幕数据,到y2处(注意数据移动中的重叠);
void moveScreen(u16 y1,u16 y2,u16 h,u8 isDrawDirect);
//******************************************************************************
//**** 在文件管理器中打印一行文件名及大小信息(暂停使用);
void DrawFileRow(u16 rowIndex, char* name, u32 size);
//******************************************************************************
//**** 在屏幕上显示JPEG文件(须MODE_3模式);
void ShowJPEG(u16 x, u16 y, u8* data);
//******************************************************************************
//**** 指定图标索引,在桌面上指定位置画图标
void DrawIcon(u16 x, u16 y, u8 Ii, u8 isDrawDirect);
//******************************************************************************
//**** 指定小图标索引,在文件管理器指定位置画小图标
void DrawFileIcon(u16 x, u16 y, u8 Ii, u8 isDrawDirect);
//******************************************************************************
//**** 向指定偏移量位置写存盘数据
void save(u32 offset, u8 *data, u16 len);
//******************************************************************************
//**** 从指定偏移量位置读存盘数据
void load(u32 offset, u8 *data, u16 len);
//******************************************************************************
//**** 简单解密
void Dec(unsigned char *Indata, int IndataLen, unsigned char *Outdata, int *OutdataLen);
//******************************************************************************
//**** 屏幕保护函数
void ScreenSaver(char *bg);
#endif