红孩儿编辑器模块设计7

红孩儿编辑器模块设计7

首次明确一下如下的相关的概念
屏幕 与屏幕的可见区,缓存与文件

屏幕与屏幕的可见区的关系,就好像是拿着放大镜看地图。
地图很大,用放大镜来移动着,看一个部分。

转换公式是
屏幕的可见区的相对的行号+左上角的顶点在屏幕中的行数=屏幕中的绝对的行号
屏幕的可见区的相对的列号+左上角的顶点在屏幕中的列数=屏幕中的绝对的列号

屏幕与缓存都可以看成是两维的数组,如果没有自动换行,
它们一行与一行一一对应。如果是有自动换行,它的对应关系
在模块设计3中有比较详细的介绍 ,这里不写了。

屏幕与缓存的列号的对应逻辑描述如下:
分成如下的四种情况:
1  显示行号,自动换行
    缓存中的列号=屏幕上的可见区的相对的列号-行号占用的字符数
                         +(缓存中该行的序列号-1)*(单行的字符总数 -行号占用的字符数)

2  显示行号,不自动换行
      缓存中的列号=屏幕上的绝对的列号 -行号占用的字符数

3  不显示行号,自动换行
   缓存中的列号=屏幕上的可见区的相对的列号+(缓存中该行的序列号-1)*单行的字符总数  


4  不显示行号,不自动换行
       缓存中的列号=屏幕上的绝对的列号 

缓存与文件 是二维与一维的关系,把缓存写入文件是序列化的操作过程,
把文件读入缓存是反序列化的操作过程。序列化与反序列化的逻辑,
在下一次文档中详细描述。

猜你喜欢

转载自blog.csdn.net/gggwfn1982/article/details/84205836