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

CImageListMgr::MyDitherBlt で DIB を使う事で最適化 #997

Merged
merged 2 commits into from
Aug 17, 2019
Merged

CImageListMgr::MyDitherBlt で DIB を使う事で最適化 #997

merged 2 commits into from
Aug 17, 2019

Conversation

beru
Copy link
Contributor

@beru beru commented Aug 16, 2019

PR の目的

アイコン描画処理の高速化(処理時間の短縮、消費電力の削減)

カテゴリ

  • 速度向上

PR の背景

元実装ではアイコン画像の行単位で GetDIBits と SetDIBits を呼び出していましたが、そのやり方では効率が悪い為、作業用のビットマップはDIBで作成するようにしました。DIBであれば直接ビットマップの読み書きがメモリ上で行えるので GetDIBits と SetDIBits を呼び出す必要がなくなりました。

PR のメリット

アイコン描画の処理に掛かる時間が短くなり、その分消費する電力も少なくなります。

確認できる違いは数%程度と僅かですが、塵も積もれば山となる、という言葉が有るので行う価値はあると思います。

PR のデメリット (トレードオフとかあれば)

特に無し

PR の影響範囲

CImageListMgr::MyDitherBlt メソッドの実装

関連チケット

#631

@beru beru added the 🚅 speed up 🚀 高速化 label Aug 16, 2019
@beru
Copy link
Contributor Author

beru commented Aug 16, 2019

いったん作った描画内容をメモリ中に保持して使いまわすようにした方が毎回同じ絵を作り直さないのでずっと効率が良いと思いますが(メモリ使用量が増えるのと引き換えに高速化)そのように作り変えするのは大変なのでやってません。

@AppVeyorBot
Copy link

Build sakura 1.0.2150 completed (commit 32abbf8501 by @)

@AppVeyorBot
Copy link

Build sakura 1.0.2151 completed (commit 2b2a75081f by @)

@berryzplus
Copy link
Contributor

対応ありがとうございます。

今年の始めにアイコン対応したときにレビューしてもらった気がしますけど、これレビューするの大変ですねwww ← レビューしてみて改めて実感するなど。

変更対象の「CImageListMgr::MyDitherBlt メソッド」ですが、
こいつはメニューやツールバーの淡色表示アイコンを描画する処理です。
無効状態の・・・押せないボタンの灰色アイコンを描く処理です。
元画像の色素を一定の式で間引いて色抜きをするコードになっています。
(以上、初見な人向けの補足説明でした・・・)

何の問題もなさそうに見えましたが、念のため一晩寝かせてみようと思ってます。

Copy link
Contributor

@berryzplus berryzplus left a comment

Choose a reason for hiding this comment

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

というわけで、問題ないと思います。
対応ありがとうございます。

@beru beru merged commit 94c8ed0 into sakura-editor:master Aug 17, 2019
@beru
Copy link
Contributor Author

beru commented Aug 17, 2019

@berryzplus さん

レビューありがとうございます。もし問題が見つかったら別PRで対処します。

@beru beru deleted the CImageListMgr__MyDitherBlt branch August 17, 2019 13:53
@m-tmatma m-tmatma added this to the v2.4.0 milestone Dec 29, 2019
HoppingTappy pushed a commit to HoppingTappy/sakura that referenced this pull request Jun 16, 2020
…rBlt

CImageListMgr::MyDitherBlt で DIB を使う事で最適化
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants