[Feature] Ability to display transparent tray icon#271
Open
XakerTwo wants to merge 3 commits intohenrypp:masterfrom
Open
[Feature] Ability to display transparent tray icon#271XakerTwo wants to merge 3 commits intohenrypp:masterfrom
XakerTwo wants to merge 3 commits intohenrypp:masterfrom
Conversation
when selected color is black next attempt to change it would be rejected zero is valid for CHOOSECOLOR because COLORREF is A,R,G,B, packed into Int32 additionally skip value updating if it's actually not changed
require 3e8b35b2c08fe9b46607122962451be055eb5fbc for routine
fix staircases only for text when transparent background enabled fix invisible border when transparent background enabled (it was masked) alpha in tray icons supported since WinXP original icon drawing functions are untouched new function draw the border as overlay so icon size always same, that's better (IMHO) rounded corners now drawn as ... rounded corners and not ellipse added following fields to the _STATIC_DATA struct HBITMAP hbitmap_alpha - black-white 32bits mask, used for alpha calculation PDWORD dwbits_icon_argb - hold pointer to hbitmap bits PDWORD dwbits_icon_bw - hold pointer to hbitmap_alpha bits LONG dwbits_icon_length - length of dwbits_icon_* added following functions _app_drawbackground_withalpha() _app_setupalpha() _app_iconcreate_withalpha() replace calls of _app_iconcreate() with _app_iconcreate_withalpha()
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
As noted in #229, when transparent background is enabled, text become jagged (aliased) and this happens due to 1bit mask.
However, since WinXP (docs; 2nd approach; comments) tray icons supports transparency(alpha/32bit), so it's possible to solve this issue
There some complications and troubles with using GDI and ClearType(especially ClearType - it's additive and subpixel-alpha-ed)
But here is possible solution: calculating of additive alpha and applying it to bitmap manually
Note: this is not perfect solution because calculated alpha is additive, which is not what actual alpha blending expects.
Note: i'm continue to use
BITMAPINFOHEADERbecause ARGB is a default order; if you wish you can switch toBITMAPV5HEADERand init bitmap according to docs (that was initial implementation, so rest of the code would works as is)This is a cumulative PR, includes #269 #270