<!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;">Hi,<br /><br>
There are some nice commits from Cyrille in trunk about the preview of the brush on the canvas. So far it is little buggy. When you select the Pixel Brush and select the diameter e.g. 25 and try to paint, you will get the wrong result.<br /><br>
I have some questions about the code as I don't understand it a bit:<br /><br>
The code is in PaintOpSettings object.Will it be possible to change the state of the shape of the preview throught stroke painting? The way I see it now would be : add some variable to Settings Object and call setter in the paintAt? There is reference to settings object in the constructor, so paintop would have to make member with reference.<br>
<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;"><br></p>This returns the area of KisImage that should be recomposited? If so I would propose to just return the QRectF which would represent the size of the brush <br>
and handle the pixelToDocument higher in the API as I'm really confused with it.<br>
<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;"><br></p>You create QRectF of the brush, which is transformed into pixelToDocument and the result is then translated to the position of the centre of the brush? Is it right?<br>
<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;"><br></p>QRectF KisBrushOpSettings::paintOutlineRect(const QPointF&amp; pos, KisImageSP image) const<br>
{<br>
...<br>
return image-&gt;<br>
pixelToDocument(<br>
QRect(0,0, brush-&gt;width(), brush-&gt;height() )<br>
 ).translated( pos - hotSpot + QPoint(1,1) <br>
);<br>
}<br>
<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;"><br></p>Here is drawOutline, which draws outline. I would again propose just to paint on the pos which would be transformed before this method is called higher in the API. So that you don't have to handle the transformation process in the paintop as it leads to code duplication and mistakes.<br>
<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;"><br></p>Let me guess what this is doing:<br>
documentToView convert from pt to pixels. Why do you need it?<br>
pixelToDocument transform the translated QRect area of the brush and result is converted from pt to pixels?<br>
<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;"><br></p>void KisBrushOpSettings::paintOutline(const QPointF&amp; pos, KisImageSP image, QPainter &amp;painter, const KoViewConverter &amp;converter) const<br>
{<br>
...<br>
    painter.drawEllipse( converter.documentToView( image-&gt;pixelToDocument(QRect(0,0, brush-&gt;width(), brush-&gt;height()) ).translated( pos - hotSpot + QPoint(1,1) ) ) );<br>
}<br>
<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;"><br></p>I really like the preview of the brush. It is really nice and important feature.<br>
<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;"><br></p>Lukas</p></body></html>