キャッシュ

Last-modified: 2011-01-14 (金) 11:52:24

キャンバスが持っているデータ。
レイヤー内のドキュメントを合成したもの。

キャンバスに問い合わせればレイヤーにアクセスすること無く、キャッシュからデータを返すので高速。
特にビューレイヤーの合成をせずに回転・拡大縮小ができるようになる。


キャッシュシステム

  1. どこか(ブラシなど)→キャンバス
    ドキュメントを更新したという報告+更新した領域。
    いずれかのレイヤーを更新したら上位のキャンバスに報告。
  2. キャンバス
    更新した領域を「タイル」という呼び名で保存
    タイル:位置・サイズドキュメント保存領域を持つ。
    この時、できれば重複していないことを確認。重複していれば非効率的なので既存領域と合成するか、重複部分を削除。

  1. どこか(ビューなど)→キャンバス
    更新して欲しい対象領域を指示。
  2. キャンバス
    対象領域内のタイルを選択。
  3. キャンバスレイヤー、下位キャンバス
    タイルドキュメントを複写・合成。
  4. キャンバス
    合成されたドキュメントを自身が持っているキャッシュに複写。
    更新完了。