ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

DTPの構造を考える-その13:アルゴリズムとメモリ構造 その4 編集関係。

2007-06-23 20:08:57 | 土日シリーズ

 土日シリーズ「DTPの構造を考える」です。

 このシリーズ、第9回までで、本の構造、さらにDTPソフト全体でもつ、フォント、色、ライブラリの構造を概念的に説明してきました。
 それ以降、機能のお話しを書いています。

 今回は、編集関係の機能についてです。




■カットアンドペーストと、プロパティ変更

 一般的な機能としては、一般的な編集ソフトの作り方 その12:イベント発生時の動き(概要)。 で、あげたように
  ・印刷
  ・保存
  ・読み込み
  ・カット(切り取り)
  ・ペースト(貼り込み)
  ・プロパティ(属性設定・変更)
  ・表示
  ・要素の選択
  ・(要素の)移動

とあり、とくに、プロパティの変更に関しては、ここで取り上げました。
 プロパティ変更には、
 ・大きさ、位置がかわるもの
 ・大きさ、位置はかわらず、中身のみ変わるもの
とあり、それぞれ処理が違うと書きました。
 この、大きさ位置が変わる処理と、カットアンドペーストの動きはにているので、今回はまとめて、編集機能として書きます。




■位置決めが問題
 で、先ほどあげたところでは、処理は、こんな漢字に書きました。

1.ダイアログや、その他いろいろな操作で、プロパティ変更を受け付ける

2.現在選択されているもの(=変更するプロパティ)を決定

3.変更するものの親に対し、子供(変更するものと、その兄弟)
  の位置決めをする

4.3の値に変更し、変更するものに通知する。
   →変更できない場合、変更処理を取り消し、元に戻る

5.変更するものの子供に対し、変更後の位置決めをする
   →変更できない場合、変更処理を取り消し、元に戻る

6.5の位置に子供の属性を変更する。自分の属性も変更する

7.再描画する
   →クリックされたとこををバッファをもって調べている場合、
    そのバッファにも書き出し

つまり、3で自分の親が自分を含めた子供に対し、
5で、自分が、子供に対して、位置決めを行います。

この位置決めを、どの範囲で、どのようにやるのかが問題です。




■どの範囲で、どのように位置決めするか

 位置決めについて、どのように行うかが問題というのは、わかっていただけると思います。
 どの範囲の問題なのですが、親が、子供全体に行うのであれば、何も問題はないのですが、それだと時間がかかります。たとえば、10行書いて、文末の。を削除した場合、。の文字1字分だけ処理すればいいです。しかし、文頭の文字を削除した場合、全部の文字に影響が出ます。
 前者の1文字だけ処理すればいい場合、全部の子供(10行分)を処理するのは無駄になってしまいます。なので、範囲があるといいのですが、このとき、修正した文字からでいいかというと、そうではないです。

 英語などで、追い込んで入れたり、文字を追い出したりする場合、その行1行分使って処理します。つまり、変更文字の前も含めて変更行全体を処理します。なので、前の部分も含まれることがあります。




 次回は、この位置決めについて、さらに深く考えます。



この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« 一般的な編集ソフトの作り方... | トップ | Second Lifeのケータイ版って... »
最新の画像もっと見る

土日シリーズ」カテゴリの最新記事