スクリプト:拡張の要望

Issue #1047 new
Ito Mitsuhiro repo owner created an issue

さて、スクリプトの使い勝手についてですが、単なるGUI操作の自動化だけではなく開いている画像の情報に基づく「動的な処理」を行いたいと思っていますが、実現のためには幾分かの機能強化があればと思っています。具体的には以下に示すような動作のプロパティ/メソッド/クラスがあったらすごく助かりそうです。

  1. NeeView自体の情報。

1-1. エディション(0:インストーラ版/1:Zip版/2:ストアアプリ版)のnumberの取得。
1-2. 正式版かCanary/βかのbooleanの取得。

  1. ブック(アーカイブ/動画)またはページ(画像)の実体であるファイルの情報のオブジェクト定義。将来、画像/書庫プラグインを自作するときに要求される機能です。

2-1. パスのstringの取得。
2-2. 全Byte数のnumberの取得。
2-3. 作成日時のDateの取得。
2-4. 更新日時のDateの取得。
2-5. 展開またはデコード前のファイルバイナリの各Byteを表すnumberをfor-in文で列挙すること。

  1. ブック。開きたいブックの選択そのものを自動化したときにBookshelfItemAccessor主体の操作を行えた方がよいです。

3-1. BookshelfItemAccessorを指定してブックを開くこと。
3-2. BookshelfItemAccessorを指定して明示的にサムネイルを作成すること。
3-3. BookshelfItemAccessorがブックとして開かれたりサムネイルが作成済みなど読み込み済みかどうかのbooleanの取得。
3-4. BookshelfItemAccessorがファイル(アーカイブ/動画)であるかどうかのbooleanの取得。
3-5. BookshelfItemAccessorの上記2のファイルオブジェクトの取得。
3-6. BookshelfItemAccessorから対応するBookAccessorの取得。
3-7. BookAccessorから対応するBookshelfItemAccessorの取得。
3-8. BookAccessorがアーカイブファイルであるかどうかのbooleanの取得。
3-9. BookAccessorから対応するページリストを開くこと。

  1. デコード済みのオリジナル画像の情報のオブジェクト定義。画像のデータ基準での自動処理で最も重要なところです。特にピクセルとExifに基づいた処理が現状でできないことに不自由を感じています。

4-1. 幅のピクセル数のnumberの取得。
4-2. 高さのピクセル数のnumberの取得。
4-3. 水平方向のdpiのnumberの取得。
4-4. 垂直方向のdpiのnumberの取得。
4-5. デコーダー名のstringの取得。
4-6. ピクセル(RGBA各8bitからなるUInt32)のnumberの配列の取得。
4-7. 情報パネルで表示可能なExifなどのメタデータの{Name:string,Value:string}の配列の取得。
4-8. デコード前のファイルの上記2のファイルオブジェクトの取得。

  1. ページ。表示するページの選択そのものを自動化したときにPageAccessor主体の操作を行えた方がよいです。こちらの画像サイズとピクセルデータは上記4のオリジナル画像のものとは異なり、ビューに表示された「見たまま」のものを指しています。

5-1. PageAccessorが所属するブックのBookAccessorの取得。
5-2. PageAccessorを指定してページを開く(ビューに表示またはブックとして開く)こと。
5-3. PageAccessorを指定して明示的にサムネイルを作成すること。
5-4. PageAccessorがビューに表示されたりサムネイルが作成済みなど読み込み済みかどうかのbooleanの取得。
5-5. PageAccessorがブックであるかどうかのbooleanの取得。
5-6. PageAccessorの上記2のファイルオブジェクトの取得。
5-7. PageAccessorの上記4の画像オブジェクトの取得。
5-8. PageAccessorから対応するViewPageAccessorの取得。
5-9. ViewPageAccessorから対応するPageAccessorの取得。
5-10. dpiやリサイズや回転などが適用されて実際にレンダリングされている画像の幅のピクセル数のnumberの取得。
5-11. dpiやリサイズや回転などが適用されて実際にレンダリングされている画像の高さのピクセル数のnumberの取得。
5-12. dpiやリサイズや回転などが適用されて実際にレンダリングされている画像のピクセル(RGBA各8bitからなるUInt32)のnumberの配列の取得。

  1. Susie設定。NeeView自体の管理作業の中で最も労力がいるのがSusieプラグインの設定作業です。特に、大量の拡張子を各プラグインに振り分けることを手作業で行わないといけないためかなり骨が折れます。この項目への対応は最優先で行ってもらえればと思っています。

6-1. 各プラグイン設定エントリのオブジェクト定義。
6-1-1. プラグインファイルの名前と拡張子のstringの取得。
6-1-2. プラグインの説明文のstringの取得。
6-1-3. プラグインが固有の設定ダイアログを持っているかどうかのbooleanの取得。
6-1-4. プラグインが固有の設定ダイアログを開くこと。
6-1-5. プラグインを有効にするかどうかのbooleanの取得/設定。
6-1-6. プラグインをキャッシュするかどうかのbooleanの取得/設定。
6-1-7. プラグインの種類(0:画像/1:書庫)のnumberの取得。
6-1-8. (書庫プラグインのみ)書庫を事前展開するかどうかのbooleanの取得/設定。
6-1-9. 拡張子リストのstringの取得/設定。
6-2. 現在利用可能な画像プラグインの設定の上記6-1の設定オブジェクトの配列を生成すること。
6-3. 編集された上記6-2の配列を画像プラグインの設定として適用すること。
6-4. 現在利用可能な書庫プラグインの設定の上記6-1の設定オブジェクトの配列を生成すること。
6-5. 編集された上記6-2の配列を書庫プラグインの設定として適用すること。

現在使用中のバージョンはCanary20210523です。

Comments (1)

  1. Ito Mitsuhiro reporter

    一応、新しいクラスの定義が必要なのは、

    1. (名前の例:Fileとか)
    2. (名前の例:Pictureとか)

    6-1. (名前の例:SusiePluginConfigとか)
    です。

    また、2-5.はnumber(実質System.Byte)を列挙可能なコレクション(実質System.Collections.Generic.IEnumerable)のことなのですが、ファイルを全部ロードしてからではなく、「ロードしながら順次先頭Byteから」MoveNext()でコレクションの列挙子オブジェクト(System.Collections.Generic.IEnumerator)の内部フィールドに1Byteだけ読み込んで、Currentでこれを吐き出すというやり方にして、2GB以上の巨大書庫でも読めるようにするのが望ましいでしょう。

    3-1.~3-6.はBookshelfItemAccessorに、 3-7.~3-9.はBookAccessorに追加するプロパティ/メソッドです。

    5-1.~5-8.はPageAccessorに、5-9.~5-12.はViewPageAccessorに追加するプロパティ/メソッドです。

  2. Log in to comment