-
Notifications
You must be signed in to change notification settings - Fork 165
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
コマンドアイコンの編集を簡略化できないか検討する #733
Comments
現状の複数のアイコンを1つのビットマップで管理する方法は利点もあるとは思いますが欠点もありますね。個人的には画像毎に別々の画像ファイルに分けるようにしたいです。ICOファイルだと色々なサイズやビット数のアイコン画像を1つのファイルに詰め込めるので高DPI対応の観点ではそっちの方が良いなぁと思います。 あとVista以降からアイコンの最大サイズは 256 x 256 なのでみんなが愛してやまない検索アイコンの目を血走らせた表現も出来ますし、GIF画像とか使えば瞬きさせる事も出来るのではないかと…。だれも反対する人はいないと思います。 |
画像操作関連のバッチを組みたい、の意図と理解しました。 imageMagick は blog 文化の黎明期に流行った perl で画像を扱えるライブラリです。 言語的には、開発者の端末に普通に入るであろう言語ならばなんでも良いと思っています。 beru さんの話も「いいねぇ~」なんですが、数段階飛ばしにハードル上がった感じです。 |
たとえば resource/mytool.bmp というファイルがありますが、 resource/mytool/ というフォルダの下に以下のように個別のファイルを置いて resource/mytool/000-abc.bmp その上でアルファベット順に画像を連結するスクリプトを python で作成できたらいいな~と思っています。 画像の連結自体は OpenCV というものを使えば簡単にできそうに思います。 |
ああ、めっちゃ簡単そうw
mytoolのビットマップ内のどの位置に何のアイコンが格納されるかは sakura/sakura_core/uiparts/CMenuDrawer.cpp Lines 126 to 129 in f6566a0
1 + 2 + 3 + ... + 32 + ダミー という感じに連結してやればバラで定義したものを連結できそうです。 考えないといけないのは未定義領域をどう扱うか?というネタですが、 |
ちょっとやってみた。
|
作った bmp をペイントで開いて 16色のビットマップで保存したら元ファイルと完全一致した。 |
分割も連結も簡単だが、16色にするのは難しそう |
最後の一手にこういうものを使うとか。 |
まぁ別に 8bit で容量が倍になって無駄遣いになっても良いんじゃないかと思います。 個人的には仕様を変えてアイコン画像を連結せずに個別にICOファイルで扱うようにした方が良いと思います。アイコン画像をどうしても差し替えたい人は自分で Resource Hacker とか使って何とかするだろうし。 |
このMISTを使って8bit⇒4bit変換のフィルタを書けばいい、という話ではなく? |
↑ c++ みたいなので面倒だなと思ったので、なんとか python でやれないかなと考えてます。 |
BMP画像の分割や連結はライブラリやコマンド使えば楽に出来ると思いますが自前で書く事も出来るので方法自体は何とでもなるとは思います。 画像が結合されているとそんなに編集がしにくいかというと、具体的に何が問題で編集がしにくいのか書かれてないので理解していませんが、今までそれでやってきたんだし今のままでも良いんじゃないかなぁと個人的には思います。 まぁ分ける方針にするならそれで良いとも思いますが、それならどうせ仕様を変えて結合した画像にしないで個々にICOファイルにしませんか?色々なサイズやビット数のアイコンを自然な形で持てますし。 |
↑ ツールバーって ico ファイルのまま使えるのでしょうか? |
普通のWin32アプリって全部アイコン画像はICOファイルだったような記憶が…。 イメージリストを使う場合 http://wisdom.sakura.ne.jp/system/winapi/common/common14.html 1枚の画像に詰めない方式にするなら現状のサクラエディタの実装は独自にやってるので色々と変える必要があると思います。具体的には 今みたいに1枚の画像に詰める方式だとグリッドに並んでいるので一覧性は良いとは思いますが、アイコンのサイズやビット数が異なるものも(高DPI対応などの理由で)リソースに含めたいとなった時に何か別の工夫が必要になりますね。ネーミングルール決めて別のファイルで持ってリソースに入れるとか。 まぁでもソースコードを色々変えるのはちょっと大変なので、まずは画像を分割してファイル管理したい、リソースに組み込む為に連結した画像を作るのは自動化したい、をまずやるのは全然良いと思います。むしろステップ踏んでそうした方が良いかもしれないですね。 |
アイコンの編集はほとんどしたことないです。 |
Visual Studio に bmp ファイルを放り込むとエディタが表示されますが、思ったより高機能ですね。 |
win10の3D paintってmspaintなんですかね。 |
pythonからCOMコンポーネントを扱う手段もあるようです。 COM使ってよいならWIC使えばいいです。 |
ペイント 3D の実行ファイル名は |
https://docs.microsoft.com/en-us/windows/desktop/wic/-wic-codec-native-pixel-formats#indexed-and-grayscale-color-models
Python で画像扱う場合は Pillow っていうライブラリが有名みたいですけど、8bit から 4bit への削減をするだけならライブラリに頼らずに Python で自前で処理を書いても良い気もします。 画像の分割や結合とかビット数削減とかは単純な処理なのでそれ自体はあんまり問題では無いと思います。ただ個別に分かれてないと本当にアイコンの編集しづらいですか? |
|
.NETなら4bit Bitmapに画像を書き込む→Saveで4bit保存ができたはずなので、やり方によってはPowerShellでやってみてもいいかもしれませんね。 画像編集は、ここの画像だけVisual Studio Image Libraryから取って来たやつと入れ替えようみたいなことだと個別の方がファイル入れ替えで済むので俄然楽になりそうです。 |
powershell 使うなら、powershell だけで完結したいですね。 |
分かれていた方が入れ替えは楽かもしれないですね。ただしインデックスカラー画像にはパレットの概念があるので、後で結合する際に何も考えずに処理すると問題が出ます。 |
プログラム側の改変が要りますけど分割したものを結合はせずに、個別に ico ファイルにしてリソースに埋め込む通常のやり方が良いと思うんですよね。その方が変な制約が無くて楽です。 そうする場合は |
http://sakura.qp.land.to/?Customize/Icons |
ここで話してよいのかな? 新機能提案
この仕組みの利点は、変更したいアイコン番号を把握していれば、 課題アイコン番号を直接指定する仕組みの都合上、 というかそもそも、アイコン番号を指定して置き換える仕様はユーザビリティ的にどうなんだ?とも思いますので、機能とアイコン番号を対応付けるうまい方法の模索が必要かもしれません。 発展形の模索任意のアイコン番号を置き換える仕組みができたら、 問題は、課題をどう解くか・・・。 |
その機能って重要ですか?そもそも使ってます?自分は使っていませんが…。 |
私はXPぐらいのアイコンが好きで差し替えてるので、何らかの差し替えられる方法はあった方がいいかなーと思います。
結局、対応表をヘルプに用意して |
ファイルによるアイコン差し替えですが、実行ファイルと同じディレクトリに置くというのは UAC による確認が出たりするのでフォルダ指定出来ると良いかなと思いました。マルチユーザーの場合は |
HLP000010.html に書かれていましたが、MIKさんが専用アプリを作られてました。 |
もう一昨年の話になりますが、MIKさんとはgoogle groupですれ違ったことがあります。 ToolIconMakerについては、 テキトーな場所にブランチ切ってメンテしていく感じにしたらいいのかなと思いました。 それにしても、プロダクト名が「サクラエディタのツールアイコン作って。」ってファンキーだな・・・。 |
具体的には何も考えてませんが、以下のような夢を見ました。 原本データは、SVG形式のドローデータで保持し、Pythonでごにょごにょする。 ※まあ、アイコン普通に作るより、画像生成の仕組みをプログラムするだけもっとめんどくさいっていう。 Photoshopやillustratorのように使えるOSSなら、GIMPやInkscapeあたりが真っ先に思いつきますネ。 |
なんだか随分具体的な夢ですね…。 2017 年 4 月に配布された Windows 10 Creators Update で Direct2D が SVG 画像のレンダリングをサポートしたみたいです。 SVGをBMP等のラスター形式の画像に変換すると容量が増えるので、SVGデータをリソースにそのまま含めてしまうのが良いのではないかと思います。 なお古いOS向けには今まで通り16x16 ピクセルの16色のアイコンを使いつづければ良いのではないかと。 |
あ。普通にそれでよかったですね(笑) |
#1130 で C# ですが、ツールを実装してみました。
Bitmap.Clone メソッド を使って実現できたので C# で書いてみました。 |
#1130 をマージしました。 |
コマンドアイコンの編集を簡略化できないか検討する
#680
で不足しているコマンドアイコンが対応されたが
複数のアイコンが一つのビットマップで管理されており
編集するのが大変だ。
これを複数の細かいビットマップに分けて管理して
なにかツールを一発実行することにより、リソースコンパイラに
渡せる形でくっつけることができないか検討する。
The text was updated successfully, but these errors were encountered: