紅孩兒編輯器的模組設計8
紅孩兒編輯器的模組設計8
檔案的儲存與序列化與反序列化操作
儲存的策略
有手工的儲存與自動化的儲存。
手工的儲存就是使用者自動點選儲存按鈕或者使用鍵盤上的快捷鍵操作。
自動化的儲存就是系統每隔一定的時間檢查一下,是否有修改,如果有,則儲存到檔案中。
手工的儲存與自動化的儲存,兩者沒有衝突與矛盾,可以同時採用這兩種策略。
序列化 是把快取中的二維結構,轉換成一維的結構,即字串或者是資料位元組流,
再儲存到硬碟的檔案中。 二維的結構便於在記憶體的操作中進行相應的引用。一維的結構
方便儲存操作。
轉換的邏輯如下:
採用的編碼方式是區位碼,ASCII碼的高位元組新增0,補上位置,也就是說無論是英語字元
還是漢語字元,統統對齊,每個字元佔用兩個位元組,一行的結束符用-1。
採用大端位元組序。
反序列化的操作
對於接收到的資料流,進行解析。
相關推薦
紅孩兒編輯器模組設計7
紅孩兒編輯器模組設計7 首次明確一下如下的相關的概念 螢幕 與螢幕的可見區,快取與檔案 螢幕與螢幕的可見區的關係,就好像是拿著放大鏡看地圖。 地圖很大,用放大鏡來移動著,看一個部分。 轉換公式是 螢幕的可見區的相對的行號+左上角的頂點在螢幕中的行數=螢幕中的絕對的行號 螢幕的可見區的相對
紅孩兒編輯器的模組設計8
紅孩兒編輯器的模組設計8 檔案的儲存與序列化與反序列化操作 儲存的策略 有手工的儲存與自動化的儲存。 手工的儲存就是使用者自動點選儲存按鈕或者使用鍵盤上的快捷鍵操作。 自動化的儲存就是系統每隔一定的時間檢查一下,是否有修改,如果有,則儲存到檔案中。 手工的儲存與自動化的儲存,兩者沒有衝突
紅孩兒編輯器的模組設計9
紅孩兒編輯器的模組設計9 主編輯區域的三大物件的設計 第一個是編輯器物件它有屬性長度,寬度,游標的位置,行高度,字寬度,還有狀態這個子物件。 行號所佔用的字元數 它的方法有判斷左邊界,判斷右邊界,定位滑鼠的行首,行尾,上下左右移動,上下翻頁,回車, 退格,初始化,得到游標的位置資訊,包括可見
紅孩兒編輯器的模組設計6
紅孩兒編輯器的模組設計6 編輯器的主顯示區域的檔案顯示的整體邏輯 配置資訊中的是否顯示行號,是否自動換行,對檔案在編輯器上的顯示有直接的影響。 所以分成了如下的四種情況進行描述: 1 顯示行號,自動換行 每行顯示的字元總數n=編輯器的寬度
紅孩兒編輯器的模組設計5
紅孩兒編輯器的模組設計5 5.1 矩陣轉換模組的設計 16*16點陣 轉換成 32*32點陣的邏輯 這就是說把一個點放大成四個點,如果這四點都顯示的話,字型形狀是相似的。 現在需要讓它從粗體變成瘦體一點的。 這四個點的位置如下 1 2 3 4 如果這個點的
紅孩兒編輯器的模組設計4
紅孩兒編輯器的模組設計4 編輯器主顯示區的樣式渲染的邏輯 例如在顯示區有背景色或者是背景圖片,字,以及對字的種種修飾, 包括加外框,下劃線,中劃線等 這需要有圖層的概念,在顯示區繪製第一個圖層,是背景色或者是背景圖片 第二個圖層是字,第三個圖層是字的修飾內容,例如外框,下劃線,中
紅孩兒編輯器的模組設計3
紅孩兒編輯器的模組設計3 編輯器的主顯示區域的顯示行號的邏輯 首先需要明確的是行號的概念,有檔案中的行號和螢幕上相對於螢幕左上角頂點的螢幕的行號。 需要需要的是檔案中的行號,這是使用者更關心的行號。這也意味著在上下翻頁,或者滾動一行時, 行號與顯示內容要一起重新整理。 邏輯上分成
紅孩兒編輯器的模組設計2
紅孩兒編輯器的模組設計2 核心控制子系統的控制模組 第一層的控制分成三種情況: 以事件型別分為滑鼠,鍵盤按下事件,鍵盤彈起事件 第二層控制分成語言設定 分成中文和英文 第三層控制為輸入字元的分類 分成直接列印的字元,英語小寫字母,數字與空格 五筆輸入法的控
紅孩兒編輯器的模組設計(1)主顯示區域的滾動條的邏輯處理
紅孩兒編輯器的模組設計(1)主顯示區域的滾動條的邏輯處理 第一個問題是判斷滾動條是否需要顯示的問題, 第二個問題是如何渲染滾動條的問題 第三個問題是通知渲染滾動條,或者是取消滾動條的顯示的時機問題 第四個問題是滾動條如何響應滑鼠的操作的問題 第一個問題 邏輯規則如下 如果當檔案的行數超過了一
紅孩兒編輯器的詳細設計第四部分
紅孩兒編輯器的詳細設計第四部分 系統中主要的資料結構設計 1快取的結構 二維的陣列,還有一個棧,是一個修改的日誌 包括操作型別,位置,原內容,新內容。 2狀態的結構 是一個物件,它有屬性是檔名,當前的游標行號,當前游標的列號, 左上角頂點處的位置在檔案中的行號,列號 3配置的結構 是
紅孩兒編輯器的詳細設計第三部分
紅孩兒編輯器的詳細設計第三部分 這一部分詳細地列出各個模組的介面定義 輸入子系統 鍵盤模組 key_operation() key_up() 滑鼠模組 input(val) 核心控制子系統 控制模組 &nbs
紅孩兒編輯器的詳細設計第二部分
紅孩兒編輯器的詳細設計第二部分 第一部分是各個子系統的架構圖 根據之前的設計文件,對之前的架構圖進行細化得到如下的架構圖 第二部分是各個子系統的模組的名稱定義 key_map.js 是輸入子系統的鍵值對映的模組,檔案中只有鍵的常量定義, 這是資料檔案的性質。不計入程
紅孩兒編輯器的詳細設計
紅孩兒編輯器的詳細設計 1。輸入子系統 第一個設計問題是編輯器是採用多模式切換的方式,還是單模式的方式。本次開發採用了單模式的方式 多模式是指像linux作業系統下的vim編輯器那樣分成編輯模式,命令模式,單行模式等。 單模式只有一種編輯模式。符合絕大多數的使用者的使用習慣,開發會複雜一些。 多
紅孩兒編輯器的概要設計第二部分
紅孩兒編輯器的概要設計第二部分 技術決策 1程式語言的選擇 html,javascript 2 在1的基礎上影象庫的選擇 使用HTML5的畫布(canvas)api 3 持久化技術選擇 使用WEB瀏覽器的客戶端儲存,以後考慮使用資料
紅孩兒編輯器的概要設計
紅孩兒編輯器的系統設計 設計原則: 1。儘快出一個原型的介面,再快速地進行迭代改進。 2。以易用性為第一目標 功能介面設計 1狀態列區域 2 功能按鈕區域 3 編輯器顯示主區域 4 輸入區域 5 系統配置區域 例如編輯器的主要區域如下所示 紅孩兒編輯器的架構設計 設計原則 1
紅孩兒編輯器的開發 1 字型庫的生成過程
紅孩兒編輯器的開發 1 字型庫的生成過程 採用了點陣圖的方式,以後的優化過程中,會改為向量圖的方式來實現。 現在採用的是16*16的點陣資料,先在EXCEL軟體中,手工地把字的 形狀畫出來。有點的位置為1,無點的位置為0,一行計算成一個數據, 它的值小於等於65535。所以一個字的點
紅孩兒編輯器的開發規範
紅孩兒編輯器的開發規範 第一:先寫相關的設計與開發的文件,然後再開發程式程式碼。 如果不能把設計思路與系統實現的邏輯結構,以文件的形式描述清楚, 那麼就是設計者根本不知道自己要做什麼。開發者也沒有了目標與方向。 在系統的規模很小的情況下,例如,總程式碼行數在2000行以下時, 程式可以不講究
atitit.html編輯器的設計要點與框架選型 attilax總結
編輯功能 att 瀏覽器 lan 粘貼 edit 編輯 -m 上傳 atitit.html編輯器的設計要點與框架選型 attilax總結 1. html編輯器的設計要求1 1.1. 障礙訪問 1 1.2. 強大Ajax上傳 1 1.3. Word完美
[原始碼和文件分享]基於C++的平面形狀編輯器的設計與實現
一 需求分析 參考如下給出的類層次關係,實現一個平面上的形狀編輯程式序。要求如下: 按照下面類圖給出的層次關係來定義類 所有形狀支援無引數構造,有引數構造,拷貝構造,析構 所有形狀支援平移操作,需要過載 operator+ 所有形狀(除去無意義的)
Android Studio官方文件之使用佈局編輯器來設計UI介面
ConstraintLayout基本介面 在今天的文章開始之前,有個忙想請大家幫一下,希望在京東、淘寶、噹噹、亞馬遜購買了我的書《Android群英傳:神兵利器》的朋友們,幫忙去網店上給個簡短的評價,舉手之勞,還是多謝大家啦~~ 更新Android Studio 2.2之後,更新了佈局設計器,同