What to do about KColor?
Andreas Pakulat
apaku at gmx.de
Mon May 28 21:47:45 BST 2007
On 28.05.07 21:34:01, Thomas Zander wrote:
> On Monday 28 May 2007 20:40:58 Alex Merry wrote:
> > I agree with this - the function name is very confusing, because it
> > _doesn't_ blend two colours. It overlays the second on the first.
>
> That entirely depends on your definition of what a color is.
> Beginning in Qt4, and in other toolkits quite a bit longer, the definition
> of a color is *including* the alpha channel. And with that in mind, the
> blend method indeed does exactly what it says.
Hmm, but why is the alpha channel of the first color not taken into
account then? How does a user blend two colors that he gets from the
palette where he doesn't know wether they have an alpha value or not? Do
I have to check for that and then just do the blend and if the 2nd color
doesn't have an alpha value then I need to set one? Sorry but thats just
unintuitive API.
> As I (and Aaron) stated elsewhere; lets see where actual apps end up
> using this and avoid this 'design by committee' re-painting of the
> bikeshed.
So you want some code? How's this:
QColor background = QApplication::palette().window().color();
QBrush foreground = ret->foreground();
if( background.alphaF() > 0 )
foreground.setColor(KGraphicsUtils::blendColor(QApplication::palette().highlight().color(), background));
else
{
background.setAlpha(128);
foreground.setColor(KGraphicsUtils::blendColor(QApplication::palette().highlight().color(), background));
}
ret->setForeground(foreground);
from
trunk/kdevelop/buildtools/builder/makebuilder/outputfilters.cpp:143
Unfortunately there has been a bug introduced recently in the
makebuilder which leads to it not showing the highlighting. I didn't
have time to look into that yet.
Instead of the above I'd like to do just
QBrush b = ret->foreground();
b.setColor( KGraphicsUtil::blendColor(
QApplication::palette().highlight().color(),
QApplication::palette().window().color())
);
ret->setForeground(b);
Andreas
--
A vivid and creative mind characterizes you.
More information about the kde-core-devel
mailing list