Skip to content
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

コマンドアイコンの追加 #680

Merged
merged 2 commits into from
Dec 9, 2018

Conversation

berryzplus
Copy link
Contributor

最近追加された5つのコマンドにアイコンを割り付け、#607 を解決します。

画才はないのでアイコンはテキトーです。
(しかし、アイコン作成にめっちゃ時間かけたりもします 😢 )

アイコン引き延ばしの対応が入ってないので、確認は表示倍率100%で行いました。
各コマンドをタブメニューに登録した状態でタブメニューを表示させ、表示が行われることを確認しました。

/* 65 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 66 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 67 */ F_DISABLE /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
/* 65 */ F_OPEN_FOLDER_IN_EXPLORER /* , TBSTATE_ENABLED, TBSTYLE_BUTTON, 0, 0 */, //ダミー
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ちょっと質問。コード全然みてないのですが、
この 65 というコメントは何に対するインデックスですか?

resource/mytool.bmp の中のアイコンに対するインデックス(ビットファイル内での位置)はどこで指定しますか?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ちょっと質問。コード全然みてないのですが、
この 65 というコメントは何に対するインデックスですか?

コード見て(笑

とは言え、やや込み入ってるので軽く説明します。

結論を先に言うと65はbitmap内のアイコン番号で、左上隅を1とし振られている番号です。横は32列あるので65は3行目1列目になります。

resource/mytool.bmpには赤枠で数字が書かれているアイコンがたくさんあるんですが、あの赤枠が空きアイコンです。配列の定義は赤枠と一致するとこにF_DISABLEが入ってます。配列には0番目にダミーを入れてるので添字はresource/mytool.bmpの番号と一致します。

コンストラクタの処理はこのあとstd::vectorに配列のデータを移し替えています。実行時、機能番号に対するアイコンの探索はvectorを使ってます。先頭から指定した機能番号を探して見つかった位置をアイコン番号とする仕組みです。

きっと色々改善案が浮かぶと思うんですが、このへんの構造を分かりやすくするネタはいくつか用意してますので、別の機会にしたいです。

@KENCHjp KENCHjp added the enhancement ■機能追加 label Dec 5, 2018
追加したコマンドにコメントを付けるのを忘れていたので追加修正
@KageShiron
Copy link
Member

アイコン、いい感じだと思います!

// 全体的に古いのでImage Libraryのものに差し替えたい気もしますが、これもある意味で味ですかね・・・?
// http://sakura.qp.land.to/?Customize%2FIcons

@berryzplus
Copy link
Contributor Author

review ぷりーず 😭

アイコン、いい感じだと思います!

// 全体的に古いのでImage Libraryのものに差し替えたい気もしますが、これもある意味で味ですかね・・・?
// http://sakura.qp.land.to/?Customize%2FIcons

これについては「味」というよりもサイズ的な抵抗感によるものです。
現状の埋め込みアイコンは16色の16x16なんですけど、これだと1pixelあたり4bitで済みます。
仮に今風のアイコンに変えると、color 24bit + alpha 8bitで1pixelあたり32bit要ります。
同じ画像に大して、単純計算で8倍の容量が必要になります。これは困ります。

サイズ対策として考えられるのは

  • BitmapのRLE圧縮(すでに適用済み
  • PNGなどの圧縮フォーマットの採用(WIC導入が必要
    くらいです。

このPRにより、wikiにあるアイコンビットマップが使えなくなってしまう(※) ので、
784D+4icons(256色16x16) を master に取り込む提案を別でやろうと思っています。

@beru
Copy link
Contributor

beru commented Dec 8, 2018

これについては「味」というよりもサイズ的な抵抗感によるものです。
現状の埋め込みアイコンは16色の16x16なんですけど、これだと1pixelあたり4bitで済みます。
仮に今風のアイコンに変えると、color 24bit + alpha 8bitで1pixelあたり32bit要ります。
同じ画像に大して、単純計算で8倍の容量が必要になります。これは困ります。

サイズ対策として考えられるのは

  • BitmapのRLE圧縮(すでに適用済み
  • PNGなどの圧縮フォーマットの採用(WIC導入が必要
    くらいです。

アイコンサイズが 16x16 や 32x32 ならまだまだサイズは小さいので容量については気にしないで良いと思います。ファイルサイズもメモリ使用量も大した事無いと思います。

なおWindowsのアイコンの最大サイズは 256x256 ピクセルみたいですが、仮に 32bit BMP で アイコンサイズ 256x256 だと resource/mytool.bmp は 33列15行なので画像解像度が 8448x3840 になり非圧縮で 123MiB 程になります。こうなるとSVGアイコンを採用したくなりますね。

Copy link
Contributor

@beru beru left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

問題無いと思います。

なお Visual Studio でも全てのコマンドにアイコンがあるわけでもなく(むしろ無いものの方が多い)ツールバーにアイコン無しのコマンドを入れるとコマンド名が表示されました。アイコンをすべてのコマンドに対して用意するのは無理があるという事ですね…。

@berryzplus
Copy link
Contributor Author

review ありがとうございます。
マージします。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement ■機能追加
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants