|
Boost Users : |
From: Olivier Tournaire (olitour_at_[hidden])
Date: 2007-05-09 18:07:07
OK. Here is the incriminated part of the main :
void Main_MPP( void )
{
boost::shared_ptr<OGRRectangle> rect( new OGRRectangle(5.,TPoint2D
<double>(50.,20.),0.1325) );
boost::shared_ptr< rectangle_with_profile<OGRRectangle> > r( new
rectangle_with_profile<OGRRectangle> ( rect , 5 , 12 , 1.5 , EXTREME) );
//OGRRectangle destructor is call here ...
r->DisplayConsole();
}
Here is the OGRRectangle class :
class OGRRectangle : public OGRPolygon
{
public:
OGRRectangle() {};
OGRRectangle( const double &width , const TPoint2D <double> ¢er ,
const double &angle=0. );
OGRRectangle( const TPoint2D <double> ¢er , const double &width ,
const double &height , const double &angle=0. );
OGRRectangle( const TPoint2D <double> &TopLeft , const TPoint2D <double>
&BottomRight , const double &angle=0. );
~OGRRectangle() {SORTIEMESSAGE("Destruction OGRRectangle
..."<<std::endl);};
void Init( const TPoint2D <double> ¢er , const double &width , const
double &height , const double &angle=0. );
inline void GetWidth( double &width ) {width=m_width;}
inline double GetWidth() {return m_width;}
inline void GetHeight( double &height ) {height=m_height;}
inline double GetHeight() {return m_height;}
void Translate( const TPoint2D <double> &trans );
void Translate( const double &x , const double &y );
void Rotate( const double &angle );
protected:
double m_width;
double m_height;
double m_angle;
};
// Implementation
void OGRRectangle::Init( const TPoint2D <double> ¢er , const double
&width , const double &height , const double &angle )
{
m_width = width;
m_height = height;
m_angle = angle;
boost::shared_ptr<OGRPoint> pt( new OGRPoint );
boost::shared_ptr< OGRLinearRing > lr( new OGRLinearRing );
pt->setCoordinateDimension(2);
pt->setX( center.x-0.5*width );
pt->setY( center.y-0.5*height );
pt->setZ( 0. );
lr->addPoint( pt.get() );
pt->setX( center.x+0.5*width );
pt->setY( center.y-0.5*height );
lr->addPoint( pt.get () );
pt->setX( center.x+0.5*width );
pt->setY( center.y+0.5*height );
lr->addPoint( pt.get() );
pt->setX( center.x-0.5*width );
pt->setY( center.y+0.5*height );
lr->addPoint( pt.get() );
this->addRing( lr.get() );
lr->setCoordinateDimension(2);
this->setCoordinateDimension(2);
this->closeRings();
if ( m_angle != 0. )
Rotate(m_angle);
}
OGRRectangle::OGRRectangle( const double &width , const TPoint2D <double>
¢er , const double &angle )
{
Init(center,width,width,angle);
setCoordinateDimension(2);
}
OGRRectangle::OGRRectangle( const TPoint2D <double> ¢er , const double
&width , const double &height , const double &angle)
{
Init(center,width,height,angle);
setCoordinateDimension(2);
}
OGRRectangle::OGRRectangle( const TPoint2D <double> &TopLeft , const
TPoint2D <double> &BottomRight , const double &angle)
{
double width = abs(BottomRight.x - TopLeft.x);
double height = abs(BottomRight.y - TopLeft.y);
Init(0.5*(TopLeft+BottomRight),width,height,angle);
setCoordinateDimension(2);
}
2007/5/9, Peter Dimov < pdimov_at_[hidden]>:
>
> Olivier Tournaire wrote:
>
> > No one can help me ?
>
> Can you post a complete program that shows the error? I see nothing wrong
> with your code snippets.
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> http://lists.boost.org/mailman/listinfo.cgi/boost-users
>
-- Le temps des cerises reviendra. Dans l'immédiat, c'est le temps des noyaux. Courage.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net