Download
Magazine
Develop
Account
Download
Magazine
Develop
Login
Forgot Account/Password
Create Account
Language
Help
Language
Help
×
Login
Login Name
Password
×
Forgot Account/Password
Category:
Software
People
PersonalForge
Magazine
Wiki
Search
OSDN
>
Find Software
>
Text Editors
>
Vi/Vim
>
ViVi version 5.0 Free
>
Wiki
>
ビュー行管理
ViVi version 5.0 Free
Description
Project Summary
Developer Dashboard
Web Page
Developers
Image Gallery
List of RSS Feeds
Activity
Statistics
History
Downloads
List of Releases
Stats
Source Code
Code Repository list
Subversion
View Repository
Ticket
Ticket List
Milestone List
Type List
Component List
List of frequently used tickets/RSS
Submit New Ticket
Documents
FrontPage
Title index
Recent changes
Communication
Forums
List of Forums
Developers (1)
Help (1)
Open Discussion (2)
Mailing Lists
list of ML
News
edit
|
Title Index
|
Recent Changes
|
Recent Changes
2011-06-06
スケジュール
2011-06-05
viコマンド
2011-05-16
exコマンド
2011-05-11
ビルド方法
FrontPage
2011-05-10
ユーザを魔法少女・魔法少年にする
Latest File Release
vivi-5.0-win (5.0.028 Dev)
2011-06-07 13:06
Wiki Guide
Wiki Syntax
Wiki Links
Block Processor
Plugins
Sidebar
Affiliate Setting
Side Bar
About this Sidebar
Edit Sidebar
■
背景
ドキュメントの行情報構築は O(N) (※ N は文章サイズ)時間を要する。
文書サイズが大きくなればそれなりの時間を要する。
ビュー行情報の構築も同じく O(N) であるが、QFontMetrics を行表示を計算して1行の文字数を決定しなくてはならず、
ドキュメント行情報構築よりはるかに処理時間を要する。
ブロック情報が必要なのは、画面表示時・垂直スクロールバー情報更新時である。
■
設計
ビュー行情報は一度に全部を更新せず、画面に表示するテキスト部分のみ優先的に更新し、残りは遅延評価を行うこととする。
ビューは評価済みブロック範囲情報を保持するものとする。
評価済み範囲情報としては、ビューブロックインデックス、テキスト位置に加え、ドキュメントブロックインデックスを保持する。
垂直スクロールバー情報更新時には評価済み範囲はそのブロック数、それ以外はドキュメントブロック数を参照するものとする。
話を単純化するために、ひとつの gap_vector<size_t> でビュー行情報を表すことにする。
gap_vector<size_t> の要素はレイアウトされたブロック長を表すものとする。
値が0の場合は未レイアウト状態であることを表す。
要素数が表示ブロック数となる。
レイアウト処理