Directory Line a barvičky - nečitelné

Hlášení chyb a problémů programu Altap Salamander. Buďte, prosím, ve svých popisech co nejpodrobnější a vytvořte pro každý incident nový příspěvek. Nevkládejte programem generovaná hlášení o pádu programu, pošlete je e-mailem.
User avatar
zarevak
Plugin Developer
Plugin Developer
Posts: 789
Joined: 04 Feb 2006, 16:49
Location: Prague, Czech Republic

Directory Line a barvičky - nečitelné

Post by zarevak »

Dobrý den,
implementuji do DiskMapy obdobu Directory Line a tak zjištuji, jak se chová v různých barevných schámetech.

Aktivní panel:
- barva pozadí: COLOR_ACTIVECAPTION
- barva textu: COLOR_CAPTIONTEXT
- barva myší zvýrazněného textu:
a) (COLOR_ACTIVECAPTION + COLOR_CAPTIONTEXT) / 2
b) ??? (pokud barvy moc blízké)

Nekativní panel:
- barva pozadí: COLOR_INACTIVECAPTION
- barva textu: COLOR_CAPTIONTEXT
- barva myší zvýrazněného textu:
a) (COLOR_INACTIVECAPTION + COLOR_CAPTIONTEXT) / 2
b) ??? (pokud barvy moc blízké)

Font:
- SystemParametersInfo(SPI_GETICONTITLELOGFONT, ...) ? (použito skoro všude v hlavním okně)

Problémy:
a) Neaktivní panel používá COLOR_CAPTIONTEXT místo COLOR_INACTIVECAPTIONTEXT a ani nekontroluje blízkost barev. Pro testování jsem si nastavil aktivní text titulku na žlutou (pozadí modré) a pozadí titulku neaktivního okna na bílou (text tmavě šedý) - Windows 2000. Výsledek byl žlutý text na bílem pozadí pro neaktivní panel. :(
b) Nedávno Salamander obsahoval opravu na překreslování textu Directory line pro řešení problému s Antialiasingem a ClearType technologií. Tato oprava však nefunguje, pokud cesta obsahuje "elipsis" (tři tečky).
Attachments
Ukázka popisovaných věcí...
Ukázka popisovaných věcí...
dirline_colors.png (49.14 KiB) Viewed 5798 times
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Directory Line a barvičky - nečitelné

Post by Jan Rysavy »

Díky za info, na problémy se podívám. Pouze dotaz, zda jsi potkal CSalamanderGeneralAbstract::GetCurrentColor() a konstanty SALCOL_*?
Možný to není komplet, pak rádi doplníme.
User avatar
zarevak
Plugin Developer
Plugin Developer
Posts: 789
Joined: 04 Feb 2006, 16:49
Location: Prague, Czech Republic

Re: Directory Line a barvičky - nečitelné

Post by zarevak »

Potkal, ale zapomněl... (v Explorer Thumbnails - pro barvu pozadí náhledu používám SALCOL_ITEM_BK_NORMAL. Je to správně? Existují ještě nějaké SALCOL_THUMBNAIL_xxx...)

Většinou nejdřív hledám vlastní řešení a až pak když mi něco nejde jednoduše, mrknu, zda to jste se s tím nesetkali a nenabízíte svoje řešení ;-)

K Directory line:
1) Není mi přesně jasné, které konstanty zmíněných 6 barev vyjadřují. Barvy 23 (SALCOL_HOT_PANEL) až 29 (SALCOL_INACTIVE_CAPTION_BK) vypadají jako nejlepší kandidáti, ale nerozumím proč jsou tři SALCOL_HOT_xxx barvy.
2) Pravděpodobně pro DiskMapu budu potřebovat jinou skladbu barev:
- Nevím, zda budu využívat Inactive barev. Nepotřebuji odlišovat Active/Inactive stav. (škrtnuto)
- Budu používat Active i Inactive stav - vypadá to lépe ;)
- Plánuji tyto barvy textu: barva otevřené cesty, barva proklikané cesty, myší zvýrazěná barva proklikané cesty, (možná) zvýrazněná barva otevřené cesty.
Ukázka pro DiskMapu otevřenou ve složce "C:\Windows" a proklikanou do "system32\drivers\etc":
- C:\Windows\System32\drivers\etc
s myší na "drivers":
- C:\Windows\System32\drivers\etc - naznačuje, že kliknutí provede rychlý přechod v rámci načteného stromu
s myší na "C:\" (až někdy v budoucnu):
- C:\Windows\System32\drivers\etc - naznačuje, že po kliknutí DiskMapa bude muset znovu projít disk
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Directory Line a barvičky - nečitelné

Post by Jan Rysavy »

Oba problémy jsem opravil, ještě jednou díky za info.

Pokud detekujeme blízké barvy (momentálně používáme převod do grayscale pro srovnání) přichází ke slovu celkem zoufalá heuristika. Petr tu seděl asi dva dny a proklikával standardní barevná schémata v podporovaných Windows a ladil a ladil. Počítám, že zmíněná funkce by ti asi moc neposloužila. V případě zájmu je k dispozici.

Pro vysvícení položek používáme převod barvy RGB->HLS, kde upravíme L a převedeme zpět do RGB. Kód viz How To Converting Colors Between RGB and HLS (HBS).

Do grayscale momentálně převádíme pomocí

Code: Select all

inline BYTE GetGrayscaleFromRGB(int red, int green, int blue)
{
  int brightness = (55*(int)red + 183*(int)green + 19*(int)blue) / 255;
  if (brightness > 255) brightness = 255;
  return (BYTE) brightness;
}
Není to samozřejmě ideální způsob detekce "vzdálenosti" dvou barev, protože dvě rozdílné barvy se mohou promítnout na blízké grayscale hodnoty. Nic lepšího jsme v době implementace nevymysleli (nechtěli jsme nad věcí trávit moc času a o teorii barev toho moc nevíme).
User avatar
zarevak
Plugin Developer
Plugin Developer
Posts: 789
Joined: 04 Feb 2006, 16:49
Location: Prague, Czech Republic

Re: Directory Line a barvičky - nečitelné

Post by zarevak »

Ajéje... RGB->HSL->RGB si radši odpustím :oops:

Koukám ještě na původní screenshot a zaujala mne další nesrovnalost (možná to je vlastnost):
c) Tooltip zobrazuje celou cestu, přestože mám myší zvýrazněný jen kousek.
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Directory Line a barvičky - nečitelné

Post by Jan Rysavy »

To je úmysl. Cesta je zkrácená, takže ji v tooltipu chceme ukázat celou.
Post Reply