Hi Christian,
I have modified the codes according to your suggestion. And I have submitted 
the codes into my cws. I think the codes is easier to be read than last time.

> in Writer::Impl_writePolyPolygon you use the method parameter rPolyPoly.
> You should not do it as it is not clipped. You should only use aPolyPoly
> as it contains the already clipped polygon. Else you loose the clipping.
> The following code in Impl_writePolyPolygon seems to be wrong by using
> both aPolyPoly and aPolyPolgon which was created with unclipped
> rPolyPoly. This needs a rework.

I am now only using aPolyPoly to have a compare. 
map(aPolyPoly) leads to an epsilon in the result, so I overloaded the IsEqual 
in Polygon and PolyPolygon.The codes are like this:
sal_Bool Polygon::IsEqual( const Polygon& rPoly,USHORT nEpsilon ) const
{
     sal_Bool bIsEqual = sal_True;;
     sal_uInt16 i;
     if ( GetSize() != rPoly.GetSize() )
          bIsEqual = sal_False;
     else
      {
            for ( i = 0; i < GetSize(); i++ )
       {
             if ( ( GetPoint( i ) != rPoly.GetPoint( i ) ) ||
                   ( GetFlags( i ) != rPoly.GetFlags( i ) ) )
             {
                   //add fangyq 070822 issue 80199
                   //a little difference that can be thought equal
                   Point aDiffPoint= GetPoint( i )-rPoly.GetPoint( i );
                   
if((abs(aDiffPoint.getX())<=nEpsilon)&&(abs(aDiffPoint.getY())<=nEpsilon))
                         continue;
                   //end issue 80199
                   bIsEqual = sal_False;
                   break;
             }
           }
      }
      return bIsEqual;
} 

> Also I would love to see that the minimum point is stored inside the
> maShapeIds. The usage of the maIdMinPointMap here seems overly complex.
> It would be much simpier to store the minimum point inside the
> sequential maShapeIds vector.

I have add a vector maIdMinPointVector instead maShapeIds. The codes are like 
this:
    typedef std::pair<sal_uInt16, ::basegfx::B2DPoint> IdMinPointPair;
    std::vector<IdMinPointPair> maIdMinPointVector;

> Please note that the file "tools/inc/poly.hxx" was moved on the
> master cvs to "tools/inc/tools/poly.hxx". So before the cws
> can be integrated, it must be resynched and the changes made
> to "tools/inc/poly.hxx" must be manually transfered to
> "tools/inc/tools/poly.hxx".

My codes are based on m205, so I will change the codes into m217 later.

My cws ID is 5598, name is "flashexport01", milestone is "m205".
I submit a issue about it, it is issue 80199
I add two modules on this cws, they are "filter" and "tools"
The files I have modified are:
filter/source/flash/swfwrite.hxx   add class PolyPolygonCacheKey
filter/source/flash/swfwrite.cxx   add class PolyPolygonCacheKey
filter/source/flash/swfwrite1.cxx  add a cache for complex charactors
filter/source/flash/swfwrite2.cxx  add operator == for class FillStyle
tools/inc/poly.hxx                     add operator < for class PolyPolygon
tools/source/generic/poly2.cxx    add operator < and overload IsEqual() for 
class PolyPolygon
tools/source/generic/poly.cxx     overload IsEqual() for class Polygon

Looking forward to your suggestions sincerely.

Best regards,
Fang



Fang Yaqiong [EMAIL PROTECTED]
2007-08-23
Regards&Thanks!
Tel:010-5802-2828 Ext.693
Beijing Redflag CH2000 Software Co., Ltd.

Reply via email to