2006-02-01 00:09:52 +01:00
/* This file is part of python_mapnik (c++/python mapping toolkit)
2006-02-20 02:34:02 +01:00
* Copyright ( C ) 2005 Artem Pavlenko , Jean - Francois Doyon
2006-02-01 00:09:52 +01:00
*
* Mapnik is free software ; you can redistribute it and / or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation ; either version 2
* of the License , or any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
*/
//$Id: mapnik_envelope.cc 27 2005-03-30 21:45:40Z pavlenko $
# include <boost/python.hpp>
# include <mapnik.hpp>
using mapnik : : coord ;
using mapnik : : Envelope ;
struct envelope_pickle_suite : boost : : python : : pickle_suite
{
static boost : : python : : tuple
getinitargs ( const Envelope < double > & e )
{
using namespace boost : : python ;
return boost : : python : : make_tuple ( e . minx ( ) , e . miny ( ) , e . maxx ( ) , e . maxy ( ) ) ;
}
} ;
//define overloads here
void ( Envelope < double > : : * width_p1 ) ( double ) = & Envelope < double > : : width ;
double ( Envelope < double > : : * width_p2 ) ( ) const = & Envelope < double > : : width ;
void ( Envelope < double > : : * height_p1 ) ( double ) = & Envelope < double > : : height ;
double ( Envelope < double > : : * height_p2 ) ( ) const = & Envelope < double > : : height ;
void ( Envelope < double > : : * expand_to_include_p1 ) ( double , double ) = & Envelope < double > : : expand_to_include ;
void ( Envelope < double > : : * expand_to_include_p2 ) ( coord < double , 2 > const & ) = & Envelope < double > : : expand_to_include ;
void ( Envelope < double > : : * expand_to_include_p3 ) ( Envelope < double > const & ) = & Envelope < double > : : expand_to_include ;
bool ( Envelope < double > : : * contains_p1 ) ( double , double ) const = & Envelope < double > : : contains ;
bool ( Envelope < double > : : * contains_p2 ) ( coord < double , 2 > const & ) const = & Envelope < double > : : contains ;
bool ( Envelope < double > : : * contains_p3 ) ( Envelope < double > const & ) const = & Envelope < double > : : contains ;
bool ( Envelope < double > : : * intersects_p1 ) ( double , double ) const = & Envelope < double > : : intersects ;
bool ( Envelope < double > : : * intersects_p2 ) ( coord < double , 2 > const & ) const = & Envelope < double > : : intersects ;
bool ( Envelope < double > : : * intersects_p3 ) ( Envelope < double > const & ) const = & Envelope < double > : : intersects ;
void export_envelope ( )
{
using namespace boost : : python ;
2006-02-26 22:47:35 +01:00
class_ < Envelope < double > > ( " Envelope " , " A spacial envelope (i.e. bounding box) which also defines some basic operators. " , init < double , double , double , double > ( ) )
2006-02-01 00:09:52 +01:00
. def ( init < > ( ) )
. def ( init < const coord < double , 2 > & , const coord < double , 2 > & > ( ) )
. add_property ( " minx " , & Envelope < double > : : minx )
. add_property ( " miny " , & Envelope < double > : : miny )
. add_property ( " maxx " , & Envelope < double > : : maxx )
. add_property ( " maxy " , & Envelope < double > : : maxy )
. def ( " center " , & Envelope < double > : : center )
. def ( " center " , & Envelope < double > : : re_center )
. def ( " width " , width_p1 )
. def ( " width " , width_p2 )
. def ( " height " , height_p1 )
. def ( " height " , height_p2 )
. def ( " expand_to_include " , expand_to_include_p1 )
. def ( " expand_to_include " , expand_to_include_p2 )
. def ( " expand_to_include " , expand_to_include_p3 )
. def ( " contains " , contains_p1 )
. def ( " contains " , contains_p2 )
. def ( " contains " , contains_p3 )
. def ( " intersects " , intersects_p1 )
. def ( " intersects " , intersects_p2 )
. def ( " intersects " , intersects_p3 )
. def ( self = = self )
. def_pickle ( envelope_pickle_suite ( ) )
;
}