To comment on the following update, log in, then open the issue: http://www.openoffice.org/issues/show_bug.cgi?id=101050
------- Additional comments from [email protected] Thu Apr 30 15:37:32 +0000 2009 ------- AW: Sorry, i missed that point. The condition for this object is simply that all three involved polygons have to have the same internal layout, in the number of polygons and the number of sub-polygons, too. I am sorry that the object is constructable in the current form over the API, but the reason for this is that it is an old object and also a special one only used internally for chart. This is also the reason that there is not more code in the object to ensure that conditions. Nowadays i would check and decline such data sets. So, the code should be something like> const bool bNormals(aPolyNormals3D.count() && aPolyNormals3D.count() == aPolyPolygon3D.count()); const bool bTexture(aPolyTexture2D.count() && aPolyTexture2D.count() == aPolyPolygon3D.count()); if(bNormals || bTexture) { for(sal_uInt32 a(0L); a < aPolyPolygon3D.count(); a++) { basegfx::B3DPolygon aCandidate3D(aPolyPolygon3D.getB3DPolygon(a)); basegfx::B3DPolygon aNormals3D; basegfx::B2DPolygon aTexture2D; bool bNormalsSub(bNormals); bool bTextureSub(bTexture); if(bNormalsSub) { aNormals3D = aPolyNormals3D.getB3DPolygon(a); bNormalsSub = aNormals3D.count() == aCandidate3D.count(); } if(bTextureSub) { aTexture2D = aPolyTexture2D.getB2DPolygon(a); bTextureSub = aTexture2D.count() == aCandidate3D.count(); } for(sal_uInt32 b(0L); b < aCandidate3D.count(); b++) { if(bNormalsSub) { aCandidate3D.setNormal(b, aNormals3D.getB3DPoint(b)); } if(bTextureSub) { aCandidate3D.setTextureCoordinate(b, aTexture2D.getB2DPoint(b)); } } aPolyPolygon3D.setB3DPolygon(a, aCandidate3D); } } Still, the error is in the data provider in the chart. The whole design of E3dPolygonObj should make clear that it|s purpose was to have exactly the same layout for all polygons and that the polygons for texture and normals are only helper polygons for data transport. Today, a basegfx::B3DPolyPolygon which is capable of holding all that data would be used. Since it is not, it IS necessary to construct one from the old data distribution in three single polygons. You may write me an issue to update the implementation of E3dPolygonObj to fulfill all modern needs. I just can't say when i will be able to do this. We should also update the API documentation (if this internal object is documented at all) that normal and texture coordiante PolyPolygons will only be accepted when their layout is equal to the base poygon (the one with the points). --------------------------------------------------------------------- Please do not reply to this automatically generated notification from Issue Tracker. Please log onto the website and enter your comments. http://qa.openoffice.org/issue_handling/project_issues.html#notification --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
