红孩儿编辑器模块设计7
红孩儿编辑器模块设计7
首次明确一下如下的相关的概念
屏幕 与屏幕的可见区,缓存与文件
屏幕与屏幕的可见区的关系,就好像是拿着放大镜看地图。
地图很大,用放大镜来移动着,看一个部分。
转换公式是
屏幕的可见区的相对的行号+左上角的顶点在屏幕中的行数=屏幕中的绝对的行号
屏幕的可见区的相对的列号+左上角的顶点在屏幕中的列数=屏幕中的绝对的列号
屏幕与缓存都可以看成是两维的数组,如果没有自动换行,
它们一行与一行一一对应。如果是有自动换行,它的对应关系
在模块设计3中有比较详细的介绍 ,这里不写了。
屏幕与缓存的列号的对应逻辑描述如下:
分成如下的四种情况:
1 显示行号,自动换行
缓存中的列号=屏幕上的可见区的相对的列号-行号占用的字符数
+(缓存中该行的序列号-1)*(单行的字符总数 -行号占用的字符数)
2 显示行号,不自动换行
缓存中的列号=屏幕上的绝对的列号 -行号占用的字符数
3 不显示行号,自动换行
缓存中的列号=屏幕上的可见区的相对的列号+(缓存中该行的序列号-1)*单行的字符总数
4 不显示行号,不自动换行
缓存中的列号=屏幕上的绝对的列号
缓存与文件 是二维与一维的关系,把缓存写入文件是序列化的操作过程,
把文件读入缓存是反序列化的操作过程。序列化与反序列化的逻辑,
在下一次文档中详细描述。
红孩儿编辑器模块设计7相关推荐
- 用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器
用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器 HP_tk.py模块是小白量化第二代量化系统中的开发模块.其中HP_tk.py模块是小白量化系统GU ...
- 用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器
用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器 前面我们介绍了在Tkinter中使用exec()函数运行用户程序的方法.exec()采用多线程 ...
- qt 实现html 编辑器,基于QT的HTML编辑器的设计与实现.doc
PAGE PAGE 1 郑州大学毕业设计(论文) 题 目:基于Qt的html编辑器的设计与实现 指导教师: 职称: 学生姓名: 学号: 专 业: 院(系): 完成时间: 2012年5月10日 2012 ...
- 嵌入式在线html编辑器,嵌入式HTML编辑器的设计与实现.ppt
嵌入式HTML编辑器的设计与实现 嵌入式HTML编译器的设计与实现 研究目的和内容 本课题是为了实现可视化HTML编译器的基本功能,将用户编写的HTML语言编译成计算机可识别的机器语言. 使用面向对象 ...
- C++ 开发者怒了:这个无用的模块设计最终会害死 C++!
2018 年年底,C++ 标准委员会历史上规模最大的一次会议在美国 San Diego 召开,讨论了哪些特性要加入到 C++20 中.其中,Modules 便是可能进入 C++ 20 的一大重要特性: ...
- java毕业设计——基于java+JSP+sqlserver的Smart系统-题库及试卷管理模块设计与实现(毕业论文+程序源码)——学生信息管理系统模板2
基于java+JSP+sqlserver的Smart系统-题库及试卷管理模块设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+sqlserver的Smart系统-题库及试卷 ...
- layui源码详细分析系列之富文本编辑器模块
所谓的富文本编辑器就是内嵌在浏览器上.所见即所得的文本编辑器,它的形式如下: layui框架中内置了layedit模块,该模块就是富文本编辑器模块,在最近两天中我自己使用原生js实现了简易的富文本编辑 ...
- 客户管理系统之模块设计(十)
3,客户选择模块设计 客户选择模块是用来提供对已实用户的选择,当中左边用一个ListBox控件显示全部已经加入的客户,右边用一个ListBox显示选择的客户.每次最多选择两个客户.然后还须要加入一个P ...
- 常见模块设计--数据字典
常见模块设计--数据字典 DROP TABLE IF EXISTS `dict_data`; CREATE TABLE `dict_data` (`id` int(11) NOT NULL AUTO_ ...
- 开发笔记:掉落系统模块设计思路
本文所讨论的掉落系统是一个游戏中的通用模块,不仅局限于打怪时掉落物品,包括抽卡.开宝箱.任务奖励.活动奖励等功能都可以使用.抽象地说,掉落系统是由给定参数按照特定的算法生成一系列可附加在玩家身上的东西 ...
最新文章
- Google Maps API 进级:通过XML文档加载Gpolyline或者Gpolygon
- python中几种读取文件的方法_python 逐行读取文件的几种方法
- python url加密解密_小叮当Python进阶(二):爬虫与加密算法Part2之URL与Base64
- Java单链表反转 详细过程
- Maven and Ant for Hybris
- 设计模式 之 工厂模式
- 指纹特征点提取代码matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文
- 第一次写CSDN的博客
- 《30天自制操作系统》学习笔记--第好多天
- linux下vscode配置c++,使其和Visual Studio2019一样调试
- 你看,那个人好像一条狗哎
- Atitit spring单元测试 注解 获取服务名 Spring文件单独放在一个文件夹,去掉dubbo配置,方便测试 里面包含的mybatis 找不到,只好设置成相对于class绝对路径可以了
- 国内外低代码平台一览
- 算法--职前算法复习
- etc fstab 详解linux,/etc/fstab文件详解
- android 数据线有几种,安卓数据线有几种
- Ubuntu 查询IP地址,设置静态IP、网关
- Java实现 简体中文 与 阿拉伯数字 互转
- 没火多久就停业,故宫火锅店咋了?
- 1G、2G、3G、4G和5G有什么区别?5G的原理是什么?