On Wednesday, May 02, 2012 12:16:34 AM Inge Wallin wrote:
> https://bugs.kde.org/show_bug.cgi?id=260535 has the title:
> 
> kpresenter:openoffice:Shadow of the picture is not getting displayed.
> 
> I had a look at this, and the reason is the following code in void
> KoShapeShadow::Private::paintShadow() at line 86 in
> libs/flake/KoShapeShadow.cpp:
> 
>     if (shape->background()) {
>         painter.save();
>         KoShape::applyConversion(painter, converter);
>         painter.setBrush(QBrush(color));
>         QPainterPath path(shape->outline());
>         KoPathShape * pathShape = dynamic_cast<KoPathShape*>(shape);
>         if (pathShape)
>             path.setFillRule(pathShape->fillRule());
>         painter.drawPath(path);
>         painter.restore();
>     }
> 
> There is a similar test for stroke right behind it.
> 
> This means that only shapes with a defined background can ever get a shadow.
> I don't really see the reason for this.  Shouldn't it be enough to remove
> the test to make it work everywhere? What would be the drawbacks?

That means we only draw a shadow for the background if there is actually a 
background. E.g. if there is a shape that only has a outline only a shadow for 
the outline will be draw. This is done by the code in the test for the stroke. 
So if that would be changed also e.g. a polygon would show a background.

I see the problem is that the picture shape has no background and therefore 
this fails. One idea would be to add a method to test if there is a shadow for 
the shape background the would in KoShape test if shape->background is set and 
return true in case it is a picture shape. But maybe others have a better 
idea. However that might fail in case the image has transparency at the edges. 
Not sure if that is something we need to support.

Thorsten
_______________________________________________
calligra-devel mailing list
calligra-devel@kde.org
https://mail.kde.org/mailman/listinfo/calligra-devel

Reply via email to