红孩儿编辑器的模块设计6

编辑器的主显示区域的文件显示的整体逻辑

配置信息中的是否显示行号,是否自动换行,对文件在编辑器上的显示有直接的影响。
所以分成了如下的四种情况进行描述:

1  显示行号,自动换行
    每行显示的字符总数n=编辑器的宽度/字符的宽度-行号占用的字符数
    文件中的一行在屏幕上占用的行数=文件中的一行字符数/每行显示的字符的总数
   显示时按照屏幕上的一行行进行,例如文件中的第一行占三行,则第一行显示第一到第n个字符。
  第二行显示第n+1到第2n个字符,第三行显示剩余的字符。
   如果在第一行的某个位置添加了一个字符,则从这个字符之后的其它字符向后挪动一个位置。这时
如果第三行是满的,也就是最后一个字符到了右边界了,会有一个字符挤到了下一行。
  这会造成,下面的所有的行都向下移动一行。

2  显示行号,不自动换行
     每行显示的字符总数n=编辑器的宽度/字符的宽度-行号占用的字符数
    文件中的一行在屏幕上占用的行数=1

如果在第一行的某个位置添加了一个字符,则从这个字符之后的其它字符向后挪动一个位置。
    如果这一行是满的,会有一个字符被挤到了右边界之外,而不再显示。

3  不显示行号,自动换行
     每行显示的字符总数n=编辑器的宽度/字符的宽度
     文件中的一行在屏幕上占用的行数=文件中的一行字符数/每行显示的字符的总数
    
     如果在第一行的某个位置删除了一个字符,后面的字符向前挪动一个位置,如果文件
    的这一行占用的最后一行只有一个字符,就意味着,最后一行取消了。
    下面的各行向上挪动一行的位置。

4  不显示行号,不自动换行
    每行显示的字符总数n=编辑器的宽度/字符的宽度
    文件中的一行在屏幕上占用的行数=1
    如果在第一行的某个位置删除了一个字符,之后的每个字符向前挪动一个位置,如果右边界外
   有被挤出去的字符,移最前面的一个字符,显示在右边界的内部。

红孩儿编辑器的模块设计6相关推荐

  1. 用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器

    用Tkinter打造自己的Python IDE开发工具(4)利用HP_tk模块设计自己的代码编辑器 HP_tk.py模块是小白量化第二代量化系统中的开发模块.其中HP_tk.py模块是小白量化系统GU ...

  2. 用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器

    用Tkinter打造自己的Python IDE开发工具(5)利用HP_tka模块设计自己的中文代码编辑器 前面我们介绍了在Tkinter中使用exec()函数运行用户程序的方法.exec()采用多线程 ...

  3. C++ 开发者怒了:这个无用的模块设计最终会害死 C++!

    2018 年年底,C++ 标准委员会历史上规模最大的一次会议在美国 San Diego 召开,讨论了哪些特性要加入到 C++20 中.其中,Modules 便是可能进入 C++ 20 的一大重要特性: ...

  4. 三甲:在线富文本编辑器的架构设计及实践

    12月5日, 极客邦(InfoQ)在深圳举办 GMTC 大会,蚂蚁集团语雀编辑器技术同学三甲受邀参加大会并分享<在线富文本编辑器的架构设计及实践>,以下内容是根据现场演讲收集整理. 大家下 ...

  5. java毕业设计——基于java+JSP+sqlserver的Smart系统-题库及试卷管理模块设计与实现(毕业论文+程序源码)——学生信息管理系统模板2

    基于java+JSP+sqlserver的Smart系统-题库及试卷管理模块设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+JSP+sqlserver的Smart系统-题库及试卷 ...

  6. 客户管理系统之模块设计(十)

    3,客户选择模块设计 客户选择模块是用来提供对已实用户的选择,当中左边用一个ListBox控件显示全部已经加入的客户,右边用一个ListBox显示选择的客户.每次最多选择两个客户.然后还须要加入一个P ...

  7. 常见模块设计--数据字典

    常见模块设计--数据字典 DROP TABLE IF EXISTS `dict_data`; CREATE TABLE `dict_data` (`id` int(11) NOT NULL AUTO_ ...

  8. 开发笔记:掉落系统模块设计思路

    本文所讨论的掉落系统是一个游戏中的通用模块,不仅局限于打怪时掉落物品,包括抽卡.开宝箱.任务奖励.活动奖励等功能都可以使用.抽象地说,掉落系统是由给定参数按照特定的算法生成一系列可附加在玩家身上的东西 ...

  9. HDLBits答案(6)_硬件模块设计的思考方式

    硬件模块设计的思考方式 HDLBits链接 基本的逻辑门操作 题目描述1:将输入端口in和输出端口out连接. Solution1: module top_module (input in,outpu ...

  10. PWM 发生器模块设计

    PWM 发生器模块设计 PWM 产生原理可得出以下两个主要电路: 定时器/计数器电路以及输出比较电路. 最终输出 PWM 波的频率计算公式为:

最新文章

  1. VC模仿超炫QQ界面的实现
  2. c# 链接mongDB集群实战开发
  3. windows系统安装python模块
  4. LINUX常见小问题汇总
  5. 前端工程师应该达到什么水平,找工作薪资才比较高?
  6. 多实例多进程网络编程PHP,php socket网络编程基础知识(四):多进程
  7. LeetCode 5355. T 秒后青蛙的位置
  8. 【转】Java 8十个lambda表达式案例
  9. vba 添加outlook 签名_利用VBA发送附件电子邮件
  10. [synergy]两台机器公用键盘鼠标
  11. python程序开发入门_程序设计入门—Python
  12. fx系列微型可编程控制器 通信_西门子系列资料(64本电子书+PLC视频+软件),整理了很久...
  13. linux命令大全---入门篇(菜鸟必会)
  14. windows_98.css—— 实现Win98效果的网页样式
  15. C语言——求2-1000之间的素数,每行打印8个
  16. 理论篇3:深度学习之----Momentum优化器(2)
  17. 激光SLAM:激光雷达运动畸变补偿--轮速里程计辅助方法
  18. 软件测试遵循的基本原则
  19. windows下vue-cli及webpack 构建网站(三)使用组件
  20. infra-structure Ad Hoc

热门文章

  1. OGG故障集锦(一)
  2. 【相机标定与三维重建原理及实现】学习笔记2——标定的算法与方法
  3. 添闻地图商户采集教程-含高德、腾讯、百度
  4. 排列熵、模糊熵、近似熵、样本熵的原理及MATLAB实现之样本熵
  5. 扩展欧几里得___追风少年的坐骑(2016swust信息院赛)
  6. 第二章 年轻人都是富翁
  7. 计算机没有显示远程桌面连接,连接远程桌面时出现:“这台计算机没有远程桌面客户端访问许可”,怎么处理?...
  8. win10安装mysql8.0,一台电脑上安装多个mysql
  9. D. Decreasing Debts
  10. CTF 实验吧 天网管理系统