C语言teletext广播图文电视系统相关练习

在二十世纪七十年代早期,菲利普斯实验室开始在整个电视网络上传输数字信息。 目的是通过电视机提供最新的新闻和天气信息。 这个系统首先由英国广播公司试验,最终被称为“Ceefax”,然后在其他独立的英国地面电台被称为“Oracle”。 BBC微型计算机上实现了一个非常类似的系统,称为模式7(mode 7)。例子如下图所示:图一:图片来源: http://teletext.mb21.co.uk/gall...
摘要由CSDN通过智能技术生成

在二十世纪七十年代早期,菲利普斯实验室开始在整个电视网络上传输数字信息。 目的是通过电视机提供最新的新闻和天气信息。 这个系统首先由英国广播公司试验,最终被称为“Ceefax”,然后在其他独立的英国地面电台被称为“Oracle”。 BBC微型计算机上实现了一个非常类似的系统,称为模式7(mode 7)。例子如下图所示:


图一:图片来源: http://teletext.mb21.co.uk/gallery/ceefax/main1.shtml

本次C语言的练习受这种图文电视系统的启发,将允许一个40*25(1000)的字符文件(.m7文件)使用类似的控制代码渲染到屏幕上。 但是,一些控制代码并未实现,包括那些用于闪烁或隐藏文本以及透明背景的控制代码。 特别是,强调对双倍高度控制代码的定义与传统控制代码的定义不同。字符文件定义如下图:

   图二: 字母数字模式的控制代码和字符。 请注意(因为我们使用白皮书)前景以黑色显示,背景以白色显示。 在图文电视屏幕上,我们在黑色背景上使用白色。

相关结构定义在 .h 文件中:

typedef unsigned char  myUint8;
typedef unsigned short myUint16;

enum colour {
   black, red, green, yellow, blue, magenta, cyan, white
};
typedef enum colour colour;

enum displayMode { alphanumeric, contiguous, separate };
typedef enum displayMode  displayMode;

enum holdMode { release, hold };
typedef enum holdMode holdMode;

enum heightMode { single, doublebottom, doubletop };
typedef enum heightMode heightMode;

struct state {
  myUint8     code;
  myUint16    ch[FNTH];
  colour      fgcolour;
  colour      bgcolour;
  displayMode dismode;
  heightMode  height;
  holdMode    holdgraphics;
} ;
typedef struct state state;

初始化状态state:图文电视页面上的每个新的自然都会先自动以白色文本,单个高度,字母图形,黑色背景,展现图形 来定义:

void state_init(state *s)
{
   s->fgcolour = white;
   s->bgcolour = black;
   s->dismode  = alphanumeric;
   s->holdgraphics = release;
   s->height   = single;
}

程序首先读取.m7文件中的字符文件,再与.fnt文件中所规定的相比较,最后一个一个像素点的渲染到屏幕上。

测试文件test.m7 最后渲染结果:

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值