Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OS
U-Boot.Mirror
提交
0bbe2005
U
U-Boot.Mirror
项目概览
OS
/
U-Boot.Mirror
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
U-Boot.Mirror
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
0bbe2005
编写于
3月 14, 2002
作者:
W
wdenk
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Initial revision
上级
f6d29959
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
177 addition
and
0 deletion
+177
-0
tools/bmp_logo.c
tools/bmp_logo.c
+177
-0
未找到文件。
tools/bmp_logo.c
0 → 100644
浏览文件 @
0bbe2005
#include <stdio.h>
#include <stdlib.h>
#if defined(__linux__)
#include <stdint.h>
#else
#ifdef __CYGWIN__
#include "elf.h"
#else
#include <inttypes.h>
#endif
#endif
#ifdef __CYGWIN__
typedef
unsigned
short
ushort
;
#endif
/* __CYGWIN__ */
typedef
struct
bitmap_s
{
/* bitmap description */
uint16_t
width
;
uint16_t
height
;
uint8_t
palette
[
256
*
3
];
uint8_t
*
data
;
}
bitmap_t
;
#define DEFAULT_CMAP_SIZE 16
/* size of default color map */
/*
* Neutralize little endians.
*/
uint16_t
le_short
(
uint16_t
x
)
{
uint16_t
val
;
uint8_t
*
p
=
(
uint8_t
*
)(
&
x
);
val
=
(
*
p
++
&
0xff
)
<<
0
;
val
|=
(
*
p
&
0xff
)
<<
8
;
return
val
;
}
void
skip_bytes
(
FILE
*
fp
,
int
n
)
{
while
(
n
--
>
0
)
fgetc
(
fp
);
}
int
main
(
int
argc
,
char
*
argv
[])
{
int
i
,
x
;
FILE
*
fp
;
bitmap_t
bmp
;
bitmap_t
*
b
=
&
bmp
;
uint16_t
n_colors
;
if
(
argc
<
2
)
{
fprintf
(
stderr
,
"Usage: %s file
\n
"
,
argv
[
0
]);
exit
(
EXIT_FAILURE
);
}
if
((
fp
=
fopen
(
argv
[
1
],
"rb"
))
==
NULL
)
{
perror
(
argv
[
1
]);
exit
(
EXIT_FAILURE
);
}
if
(
fgetc
(
fp
)
!=
'B'
||
fgetc
(
fp
)
!=
'M'
)
{
fprintf
(
stderr
,
"%s is not a bitmap file.
\n
"
,
argv
[
1
]);
exit
(
EXIT_FAILURE
);
}
/*
* read width and height of the image, and the number of colors used;
* ignore the rest
*/
skip_bytes
(
fp
,
16
);
fread
(
&
b
->
width
,
sizeof
(
uint16_t
),
1
,
fp
);
skip_bytes
(
fp
,
2
);
fread
(
&
b
->
height
,
sizeof
(
uint16_t
),
1
,
fp
);
skip_bytes
(
fp
,
22
);
fread
(
&
n_colors
,
sizeof
(
uint16_t
),
1
,
fp
);
skip_bytes
(
fp
,
6
);
/*
* Repair endianess.
*/
b
->
width
=
le_short
(
b
->
width
);
b
->
height
=
le_short
(
b
->
height
);
n_colors
=
le_short
(
n_colors
);
/* assume we are working with an 8-bit file */
if
((
n_colors
==
0
)
||
(
n_colors
>
256
-
DEFAULT_CMAP_SIZE
))
{
/* reserve DEFAULT_CMAP_SIZE color map entries for default map */
n_colors
=
256
-
DEFAULT_CMAP_SIZE
;
}
printf
(
"/*
\n
"
" * Automatically generated by
\"
tools/bmp_logo
\"\n
"
" *
\n
"
" * DO NOT EDIT
\n
"
" *
\n
"
" */
\n\n\n
"
"#ifndef __BMP_LOGO_H__
\n
"
"#define __BMP_LOGO_H__
\n\n
"
"#define BMP_LOGO_WIDTH
\t\t
%d
\n
"
"#define BMP_LOGO_HEIGHT
\t\t
%d
\n
"
"#define BMP_LOGO_COLORS
\t\t
%d
\n
"
"#define BMP_LOGO_OFFSET
\t\t
%d
\n
"
"
\n
"
,
b
->
width
,
b
->
height
,
n_colors
,
DEFAULT_CMAP_SIZE
);
/* allocate memory */
if
((
b
->
data
=
(
uint8_t
*
)
malloc
(
b
->
width
*
b
->
height
))
==
NULL
)
{
fclose
(
fp
);
printf
(
"Error allocating memory for file %s.
\n
"
,
argv
[
1
]);
exit
(
EXIT_FAILURE
);
}
/* read and print the palette information */
printf
(
"unsigned short bmp_logo_palette[] = {
\n
"
);
for
(
i
=
0
;
i
<
n_colors
;
++
i
)
{
b
->
palette
[(
int
)(
i
*
3
+
2
)]
=
fgetc
(
fp
);
b
->
palette
[(
int
)(
i
*
3
+
1
)]
=
fgetc
(
fp
);
b
->
palette
[(
int
)(
i
*
3
+
0
)]
=
fgetc
(
fp
);
x
=
fgetc
(
fp
);
#if 0
if ((i%4) == 0)
putchar ('\t');
printf ("0x%02X, 0x%02X, 0x%02X,%s",
b->palette[(int)(i*3+0)],
b->palette[(int)(i*3+1)],
b->palette[(int)(i*3+2)],
((i%4) == 3) ? "\n" : " "
);
#else
if
((
i
%
8
)
==
0
)
putchar
(
'\t'
);
printf
(
"0x0%X%X%X,%s"
,
(
b
->
palette
[(
int
)(
i
*
3
+
0
)]
>>
4
)
&
0x0F
,
(
b
->
palette
[(
int
)(
i
*
3
+
1
)]
>>
4
)
&
0x0F
,
(
b
->
palette
[(
int
)(
i
*
3
+
2
)]
>>
4
)
&
0x0F
,
((
i
%
8
)
==
7
)
?
"
\n
"
:
" "
);
#endif
}
/* read the bitmap; leave room for default color map */
printf
(
"
\n
"
);
printf
(
"};
\n
"
);
printf
(
"
\n
"
);
printf
(
"unsigned char bmp_logo_bitmap[] = {
\n
"
);
for
(
i
=
(
b
->
height
-
1
)
*
b
->
width
;
i
>=
0
;
i
-=
b
->
width
)
{
for
(
x
=
0
;
x
<
b
->
width
;
x
++
)
{
b
->
data
[(
uint16_t
)
i
+
x
]
=
(
uint8_t
)
fgetc
(
fp
)
\
+
DEFAULT_CMAP_SIZE
;
}
}
fclose
(
fp
);
for
(
i
=
0
;
i
<
(
b
->
height
*
b
->
width
);
++
i
)
{
if
((
i
%
8
)
==
0
)
putchar
(
'\t'
);
printf
(
"0x%02X,%c"
,
b
->
data
[
i
],
((
i
%
8
)
==
7
)
?
'\n'
:
' '
);
}
printf
(
"
\n
"
"};
\n\n
"
"#endif /* __BMP_LOGO_H__ */
\n
"
);
return
(
0
);
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录