无忧启动论坛

 找回密码
 注册
搜索
一次装机 终生领工资最纯净的「微PE装机优盘」UEPON大师作品卡瑞飞系统和装机二合一超级U盘
广告位出租系统gho:最纯净好用系统下载站广告联系 QQ:184822951 微信:wuyouceo
查看: 38458|回复: 231

[发布] 增强 GRUB4DOS 菜单编辑功能,支持动画,支持精简字库,支持图形菜单

    [复制链接]
发表于 2015-7-9 20:57:09 | 显示全部楼层 |阅读模式
[ 本帖最后由 2011yaya2007777 于 2019-3-25 15:48 编辑 ]\n\n

2019-3-25
    条件菜单项目(iftitle )支持图形菜单。
    图形菜单改进:支持背景高亮、支持图文混排。
       
    setmenu --graphic-entry=图形类型=图形菜单行数=图形菜单列数=图形宽=图形高=图形行间隙 图形文件
    图文混排时,图形与文本选中项(高亮项)的设置,是各种独立的,可以单独设置。
    如果高亮只需要通过文本实现,图形类型可设置为0x90.
    图形类型:
    位0:前景高亮    位1:前景色翻转    位2:图形加框    位3:背景高亮   位4:图文混排     位7:背景透明
    图形行间隙在图文混排模式,不能实现随意调整。如果间隙不理想,可以设置图形间隙为零。然后使用增加字符间距实现。(setmenu --font-spacing=0:n)

2018-8-21
  增加 setmenu --auto-num-all-on 参数。
  给所有标题编号。(--auto-num-on 参数仅给引导标题编号)
  注释:0x8274 00/01/02=禁止自动编号/仅给引导标题编号/给所有标题编号
        0x8275 标题编号与标题内容之间的字符。如:0x20=' '   0x2d='-'
        0x8276 返回当前标题编号。(按所有标题计)

2018-07-01
  增加 setmenu --triangle-on --triangle-off 参数,打开/关闭菜单三角形指示器。默认打开。
  增加 setmenu --middle-align 参数。菜单项目及菜单项目帮助居中。

2018-06-12
  1. 增加 beep 函数,播放音乐。(issues #175)(issues #176)
  beep [--start|--mid|--end] [--play=N] [--nowait] 频率 持续时间 ...
  频率: Hz    持续时间: ms     最大 126 音符.
  N:播放次数 0-255。0是停止播放,255是连续播放(按任何键停止播放)。
  当音节很多时,可以用不同的行书写。使用 [--start|--mid|--end] 指定.
  例1: 警报
  beep --play=10 400 20 500 20 600 20 700 20 800 20 900 20 1000 20 1100 20 1200 20 1300 20 1400 20 1500 20 1600 20
  例2: 茉莉花
  title beep
  !BAT
  beep --start 330 600 330 300 392 300 440 300 522 300 522 300 440 300 392 600 393 300 440 300 392 1200
  beep --mid 392 600 392 600 392 600 330 300 392 300 440 600 440 600 392 1200
  beep --mid 330 600 293 300 330 300 392 600 330 300 293 300 261 600 261 300 293 300 261 1200
  beep --mid 330 300 293 300 261 300 330 300 293 900 330 300 392 600 440 300 522 300 392 1200
  beep --mid 293 600 330 300 392 300 293 300 330 300 261 300 220 300 196 1200
  beep --end --play=255 --nowait 220 600 220 300 261 300 293 900 330 300 261 300 293 300 261 300 220 300 196 1800
  2. 改善图像透明背景的算法。
  3. 修改 grub_memmove 函数,提高运算速度。
  4. 修正 map 函数中碎片映射的错误。

2018-04-23  在菜单项首行增加 !BAT 可按批处理方式书写与执行,使用批处理的功能。比如:goto :label

2018-03-15  增强 setmenu --string 函数功能
   --string=[X]=[-]Y=COLOR="STRING"
   没有X, 表示水平居中.
   -Y表示从菜单底部计数.  -0就是最后一行.

2017-12-05  增强颜色赋值功能。修正color及echo帮助信息。
  1. 按目标分配颜色,顺序不能乱(未选菜单 被选菜单 帮助 标题)。颜色可用占位符n替换。
    例: color black/cyan yellow/cyan red/cyan light-green/cyan    字符颜色/背景颜色,使用符号颜色。
    例: color 0x30 0x3e 0x34 0x3a    高位背景色,低位字符颜色,8位数字。
    例: color 0x888800000000 0x888800ffff00 0x888800880000 0x88880000ff00    64位数字。
    例: color 0x30    其余同NORMAL。在命令行上使用,改变控制台颜色。
    例: color 0x30 0xe n 0xa    背景色取自NORMAL。使用占位符n。
  2. 可以给指定目标赋颜色,NORMAL应当在首位。
    例: color normal=0x888800000000    其余目标颜色同NORMAL。
    例: color normal=0x4444440000ffff helptext=0xc highlight=0xd heading=0xe border=0xa    背景色同NORMAL。
    例: color standard=0xFFFFFF    改变控制台颜色。
  3. 改变字符串的颜色
    例: echo $[0xCD]字符串    改变字符串的颜色(8或64位数字)。C=背景色,D=字符颜色。
    例: echo $[]字符串        字符串使用系统标准颜色。
  4. 具体颜色可在命令行查看。
    例: echo -h-rrggbb
    例: echo -rrggbb

2017-11-28  修正 setmenu 函数,并且增加下列参数:
  1. --draw-box=[索引]=[起始x]=[起始y]=[水平长度]=[垂直长度]=[线宽]=[颜色]
          划线或画框。其中:索引=1-16;颜色=24色;线宽=1-255;尺寸单位是像素。
          --draw-box=[索引]  清除指定的线或框。
          --draw-box=        清除所有的线或框。
  2. --string=  清除所有的字符串。

2016-04-04
  支持动画菜单
  setmenu --graphic-entry=类型=菜单行数=菜单列数=图形宽(像素)=图形高(像素)=菜单行间距(像素)  菜单项0的路径文件名
  类型: 位0:高亮指定颜色    位1:高亮颜色翻转    位2:高亮显示线框    位7:背景透明(最好使用黑色背景)
  文件名: *n.??? 格式    n=00-99
  高亮颜色由 color HIGHLIGHT=0xrrggbb 指定。
  字符可以使用任意字型、字高、颜色,可以辅以图标。

2016-03-25
  菜单字符可以使用不同字型。
  例如:"七" 使用不同字型,将 .hex 文件中的 unicode 码 “4e03” 修改为 “0080”,  
            将菜单中的 "七" 修改为 “\X0080”。

2016-03-15
  1.增加动画控制热键 F2:播放/停止。
  2.增加动画控制位 0x835b,位0:0/1=停止/播放。
  3.增加精简字库模式:--simp=起始0,终止0,...,起始3,终止3
    内置字库应当包含 DotSize=[font_h],['simp']
    中文可以使用 --simp=
    例如:font --font-high=24 --simp= /24_24.hex
             DotSize=24,simp
    不使用热键:              可以加载 32*32 unifont 全字库
    使用热键:                 可以加载 24*24 unifont 全字库
    使用精简字库:           可以加载 46*46 汉字全字库
    使用精简字库及热键: 可以加载 40*40 汉字全字库
  4.不再支持 bin 格式字库。

2016-02-26  
加载透明背景的图像    splashimage [--offset=[type]=[x]=[y]] FILE
类型[type]:bit 7: 透明背景

2016-02-21
  1.增加图像背景色设置方法。    splashimage --fill-color=[0xrrggbb]
    作用之一,作为小图像的背景。
    作用之二,直接作为菜单的背景(即不加载图像背景)。此时只设置字体的前景色即可。
  2.增加动画菜单。    splashimage --animated=[type]=[delay]=[last_num]=[x]=[y] START_FILE
    类型[type]:bit 0-3: 播放次数    bit 4: 永远重复    bit 7: 透明背景
                      type=00: 禁止播放
                播放n次:序列图像各显示n次,时间独占。可作为启动前导、序幕。
                永远重复:序列图像无限循环,时间与菜单共享。可作为菜单里的动画。
                背景透明:即抠像。要求4角像素为背景色。
                                背景色最好为白色或黑色,这样可以去除一些灰色杂波。若是彩色背景,则应当非常干净。
                提醒:请以16进制方式输入。否则易错。
    延迟[delay]:序列图像之间的延迟。单位是滴答,即1/18.2秒。
    序列数[last_num]:序列图像总数(2位数,从1开始计数)。
    偏移[x]、[y]:图像偏移,单位像素。
    起始文件名[START_FILE]命名规则:*n.???   n: 1-9 或 01-99 或 001-999。
   
附演示动画,把它复制到.img或者.iso文件。希望大家展示自己创作的动画菜单。

2012-02-14
setmenu函数增加参数:
--highlight-short   高亮菜单项背景色仅限于文字(默认)
--highlight-full      高亮菜单项背景色整行显示(有人偏爱老旧模式)


今天上传的版本,可以增强 GRUB4DOS 菜单的编辑功能。
1.支持每像素16位彩色模式(64K 5:6:5)。
2.支持 jpg(jpeg,jpe)图像格式。
3.在 vbe 模式,使用 echo -rrggbb 可以显示 216 种彩色样本。
4.使用 echo -v 可以显示版本、内存信息。
5.增加 setmenu 函数,增强图形菜单编辑功能。参数:
  --ver-on --ver-off 版本信息打开/关闭。默认打开;
  --lang=en --lang=zh 菜单帮助信息中英文切换。默认英文;
  --auto-num-off --auto-num-on 关闭/打开菜单自动编号。默认关闭;
  --left-align --right-align 菜单左对齐/右对齐。默认左对齐。
  --font-spacing=[font]:[line] 设置字符间距/行间距。单位:像素。默认0。应当位于下面的参数之前;
  --string=[x]=[y]=[color]=["string“] 字符串位置、颜色与内容,可用于标题,说明,帮助等。单位:列,行,24位色彩;
    注:如果省略颜色,位于菜单框以上按标题颜色,位于菜单框以下按帮助颜色;
          字符串头尾要加英文双引号;
          列数=图像水平像素/(字符宽+字符间距)   字符宽=8;
          行数=图像垂直像素/(字符高+行间距)      字符高=10;
  --help=[x]=[w]=[y] 帮助位置。单位:列,行;
    注:x=0 由边框确定(默认);w=0 水平居中;
  --keyhelp=[y_offset]=[color] 按键帮助位置,颜色。单位:列,行,24位色彩;
    注:y_offset=0,项目与按键帮助位于同一区域,项目帮助可以覆盖按键帮助(默认);
          y_offset != 0,按键帮助到项目帮助的行偏移,项目帮助与按键帮助共存;
          y_offset<=4,项目帮助的显示行数;
          color=0 默认 “color helptext";
  --box x=[x] y=[y] w=[w] h=[h] l=[l] 菜单项标题起始列,起始行,每行最大字符数,最大菜单项数,菜单框线条宽度(像素);
    注:w=0 表示水平居中。此时 w 应当在 x 之后;
       l=0 表示不显示菜单框;
  --u 恢复菜单原始状态;
  --timeout=[x]=[y]=[color] 倒计时位置、颜色。单位:列,行,24位色彩.
    注:x=y=0 默认位于选中项目的尾部;
          color=0 默认 "color highlight"。
6.在 font 函数增加参数:
    font [--font-high=24] [--simp=] 文件名
    例子:  font /my.hex
                font --font-high=24 --simp=  /24.hex
  内置字库,如果不是 16*16 字体,头部需声明:DotSize=24,simp
高亮颜色.jpg
颜色翻转.jpg
高亮线框.jpg
图文混排.jpg
背景高亮.jpg

动画演示.rar

1.49 MB, 下载次数: 1329, 下载积分: 无忧币 -2

点评

"unifont 全字库"是什么?是UniFonts吗?  发表于 2016-3-16 06:47
"unifont 全字库"是什么?是UniFonts吗?  发表于 2016-3-16 06:46
"unifont 全字库"是什么?是UniFonts吗?  发表于 2016-3-16 06:46

评分

参与人数 2无忧币 +10 收起 理由
+ 5
oldking + 5 很给力!

查看全部评分

发表于 2015-7-9 21:43:05 | 显示全部楼层
太赞了,支持一下先...

点评

为什么还没有更新到官网?  详情 回复 发表于 2015-8-19 10:31
回复

使用道具 举报

 楼主| 发表于 2015-7-9 22:02:43 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2015-8-13 22:06 编辑

# 默认延迟时间(秒)
timeout 15

# 第三项为默认值
default 0

# 设置图形背景文件
graphicsmode -1 800
splashimage /lt.jpg

# 设置中文支持的字体文件
font /unifont.hex.gz

#设置菜单
color normal=0xff9933 highlight=0xff3300 helptext=0xff00ff heading=0x66ff00 border=0x006699
setmenu   --font-spacing=1:8  --string=35=3=="G4D  维  护  菜  单"

setmenu   --box x=8 w=0 y=6 h=7 l=2 --auto-num-on  --keyhelp=8= --ver-off

setmenu   --lang=zh  --string=23=4=0x00ff00= "=========================================="


setmenu  --help=8=0=14

title 运行0PE_NBv1.5.1.ISO\n1111\n2222\n3333\n4444\n5555\n6666
find --set-root /grub.id
map /boot/program/0PE_NBv1.5.1.ISO (0xff)
map --hook
chainloader (0xff)

title 计算机维护光盘.iso\n计算机维护光盘
find --set-root /grub.id
map /boot/program/计算机维护光盘.iso (0xff)
map --hook
chainloader (0xff)

title 本人Dos工具箱 \n中文MSDOS 7.1
map /boot/mydos.img (fd0)
map --hook
chainloader (fd0)+1
rootnoverify (fd0)

title 启动 Windows 7\n启动本机硬盘
find --set-root /bootmgr
chainloader /bootmgr

title Grub命令行 \n执行命令
commandline

title 重启\n热重启
reboot

title 关机\n关闭计算机
halt


捕获.jpg
cs.jpg

点评

老师,你好。 咨询一个问题, 如何让ver显示的内容居中?  详情 回复 发表于 2015-8-1 11:35
回复

使用道具 举报

发表于 2015-7-9 22:28:01 来自手机 | 显示全部楼层
感谢yaya大分享。。。。。。。。
回复

使用道具 举报

发表于 2015-7-9 22:49:50 | 显示全部楼层
太牛了!果断拿下!
回复

使用道具 举报

发表于 2015-7-10 08:31:54 | 显示全部楼层
大神出手果然强大……
回复

使用道具 举报

发表于 2015-7-10 08:33:01 | 显示全部楼层
大神出手果然强大……
回复

使用道具 举报

发表于 2015-7-10 10:12:58 | 显示全部楼层
我提醒一下 yaya,在 http://reboot.pro 上,有人在想办法支持 “从右到左” 写的文字,如阿拉伯语、希伯来语等。

这些语言的特点是,语言字符是从右向左写的,但 UTF8 格式的记事本文件中,依旧是按字节地址增大的顺序来写的。windows 的记事本能够自动按逆序显示这些语言字符。然而 grub4dos 不能自动按逆序来显示这些语言字符。

需要说明的是,这些语言字符本身是逆序的,但其中夹杂的英文单词、ASCII 字符、文件路径,都是正常的顺序,不是逆序的。

假如我们的 grub4dos 要在内核中支持这样的语言文字,需要修改 put_char 之类的函数,让其能够判断出逆序的字符串,并自动用逆序来显示这个字符串。

目前 Steve6375 是在菜单批处理层面做这个工作。其实也够用了。

我的问题是:对于这些逆序的语言,倒计时的秒数在什么地方显示?如果按目前这样处理(在右端显示),则 Steve6375 所做的工作可能就要不适应了(倒计时的秒数会覆盖菜单开头的内容,因为菜单开头是在最右端)。

回复

使用道具 举报

 楼主| 发表于 2015-7-10 11:38:44 | 显示全部楼层
本帖最后由 2011yaya2007777 于 2015-7-10 13:03 编辑
如果按目前这样处理(在右端显示),则 Steve6375 所做的工作可能就要不适应了(倒计时的秒数会覆盖菜单开头的内容,因为菜单开头是在最右端)。

'逆序的语言'是左对齐?还是右对齐?
一个变通方法是:菜单开头是在最右端向左移动 2 列。即菜单项允许显示的最大列包含 2 字节的倒计时数字字符。

或者把倒计时数字放在菜单框外部?

点评

当然是右边对齐了。就像我们港台的电影字幕那样,从右边向左。 其实你不用管了,我想,假如 Steve6375 发现了这个问题,他会生办法解决的。说不定解决的办法就和你说的一样。 另外,菜单自动编号,是 chenall  详情 回复 发表于 2015-7-10 12:56
回复

使用道具 举报

发表于 2015-7-10 12:56:29 | 显示全部楼层
2011yaya2007777 发表于 2015-7-10 11:38
'逆序的语言'是左对齐?还是右对齐?
一个变通方法是:菜单开头是在最右端向左移动 2 列。即菜单项允许 ...

当然是右边对齐了。就像我们港台的电影字幕那样,从右边向左。

其实你不用管了,我想,假如 Steve6375 发现了这个问题,他会生办法解决的。说不定解决的办法就和你说的一样。

另外,菜单自动编号,是 chenall 实现的功能。这在逆序的语言环境下也有问题,因为编号是在最左边,而最左边则相当于菜单行的尾部,很难看。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持本站|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2019-5-26 21:10

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表