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