[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-kimageshop
Subject: Re: Tool overlay and cursor shapes
From: "LukasT.dev () gmail ! com" <lukast ! dev () gmail ! com>
Date: 2009-09-17 22:19:53
Message-ID: 200909180019.53611.LukasT.dev () gmail ! com
[Download RAW message or body]
[Attachment #2 (multipart/alternative)]
On Wednesday 16 September 2009 19:07:07 enki wrote:
> > This patch is already in trunk for week or so. Any response?
> > I prefer XOR and B&W solution. Maybe also black outline and current color
> > inside, but this will require to change paintop's settings object so that
> > every change of the color is known to settings object.
>
> 1.XOR is the one I like the most, it looks good and is precise in any case.
> 2.Color outline looks much better than I though, but there are still
> cases where it cause problems.When outline is the only cursor type:
> - you can lose your cursor on big surfaces of the same color (it's not
> good to be an adept of Fauvism these days :p).
> - it's harder to extend that big surface (for example, adding an
> irregular 3 pixels border around it).
> 3.B&W is the one I like the less. It doesn't look like it is an overlay,
> probably because the outside line is not transparent enough.
>
We discussed the XOR solution wins as temporary solution for 2.1.
XOR has hidden problem but it is solved when XORing rgb channel with 0x80 .
This is the solution that GIMP uses.
Anyway I had mission to add setupQPainter method to the KisTool but I changed
it.
setupQPainter is not enough if we want to change the outline in the future.
I wrote method paintToolOutline which takes painter, path and mode as
argument.
So this method can paint twice -- I added also mode B&W and this mode
needs to paint also. Just setup the painter is not enough I think.
Known issues with patch:
Composition mode is RasterOp_SourceXorDestination which disables anti-
aliasing. So the path is not anti-aliased.
I added also BW_MODE. It has different problem. It uses 3px wide line so the
update rect for canvas has different size then just 1px wide line and is not
updated correctly for now.
I did the previous b&w patch wrong, I painted two 3px wide lines in the same
place. Now I do it correctly and it looks nicer.
Check it out. Just change line paintToolOutline(&gc,path); to
paintToolOutline(&gc,path,BW_MODE);
So can I start to patch the svn?
[1] http://lukast.mediablog.sk/patches/0001-Tool-outline-with-
RasterOp_XOR.patch
[Attachment #5 (text/html)]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" \
"http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" \
content="1" /><style type="text/css"> p, li { white-space: pre-wrap; }
</style></head><body style=" font-family:'Sans Serif'; font-size:10pt; \
font-weight:400; font-style:normal;"> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">On Wednesday 16 September 2009 19:07:07 enki wrote:</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> > This patch is \
already in trunk for week or so. Any response?</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> > I prefer XOR and B&W solution. \
Maybe also black outline and current color</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> > inside, but this will require to change \
paintop's settings object so that</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">> > every change of the color is known to settings \
object.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p> \
<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> 1.XOR is the one I like \
the most, it looks good and is precise in any case.</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> 2.Color outline looks much better than I \
though, but there are still</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">> cases where it cause problems.When outline is the only cursor \
type:</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> - you \
can lose your cursor on big surfaces of the same color (it's not</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> good to be an adept of \
Fauvism these days :p).</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">> - it's harder to extend that big surface (for example, adding \
an</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> \
irregular 3 pixels border around it).</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">> 3.B&W is the one I like the less. It \
doesn't look like it is an overlay,</p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">> probably because the outside line is not transparent \
enough.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">> </p> \
<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">We discussed the XOR solution wins as temporary solution for \
2.1.</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;">XOR has \
hidden problem but it is solved when XORing rgb channel with 0x80 . This is the \
solution that GIMP uses. </p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">Anyway I had mission to add setupQPainter method \
to the KisTool but I changed it.</p> <p style="-qt-paragraph-type:empty; \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">setupQPainter is not enough \
if we want to change the outline in the future.</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">I wrote method paintToolOutline which takes \
painter, path and mode as argument.</p> <p style="-qt-paragraph-type:empty; \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">So this method can paint \
twice -- I added also mode B&W and this mode</p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">needs to paint also. Just setup the painter is \
not enough I think.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">Known issues with patch:</p> <p style=" \
margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">Composition mode is <span \
style=" font-family:'Courier New,courier';">RasterOp_SourceXorDestination</span> \
which disables anti-aliasing. So the path is not anti-aliased.</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">I added also BW_MODE. It has \
different problem. It uses 3px wide line so the update rect for canvas has different \
size then just 1px wide line and is not updated correctly for now.</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">I did the previous b&w \
patch wrong, I painted two 3px wide lines in the same place. Now I do it correctly \
and it looks nicer. </p> <p style="-qt-paragraph-type:empty; margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;"></p> <p style=" margin-top:0px; \
margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; \
text-indent:0px; -qt-user-state:0;">Check it out. Just change line \
paintToolOutline(&gc,path); to paintToolOutline(&gc,path,BW_MODE);</p> <p \
style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; \
margin-right:0px; -qt-block-indent:0; text-indent:0px; -qt-user-state:0;"></p> <p \
style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; \
-qt-block-indent:0; text-indent:0px; -qt-user-state:0;">So can I start to patch the \
svn?</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;"></p> <p style=" margin-top:0px; margin-bottom:0px; \
margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; \
-qt-user-state:0;">[1] \
http://lukast.mediablog.sk/patches/0001-Tool-outline-with-RasterOp_XOR.patch</p></body></html>
_______________________________________________
kimageshop mailing list
kimageshop@kde.org
https://mail.kde.org/mailman/listinfo/kimageshop
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic