Commit 9131e2a1 authored by charras's avatar charras
Browse files

compiling problems in kbool

parent 44743723
Loading
Loading
Loading
Loading
+2 −1
Original line number Original line Diff line number Diff line
EXTRALIBS = ../common/common.a ../bitmaps/libbitmaps.a ../polygon/lib_polygon.a
EXTRALIBS = ../common/common.a ../bitmaps/libbitmaps.a\
		../polygon/lib_polygon.a ../polygon/kbool/src/libkbool.a


EXTRACPPFLAGS= -DGERBVIEW -DPCBNEW -fno-strict-aliasing\
EXTRACPPFLAGS= -DGERBVIEW -DPCBNEW -fno-strict-aliasing\
	-I./ -I../gerbview -I../include\
	-I./ -I../gerbview -I../include\
+1 −1
Original line number Original line Diff line number Diff line


MAKEGTK = $(MAKE) -f makefile.gtk
MAKEGTK = $(MAKE) -f makefile.gtk
KICAD_SUBDIRS = common bitmaps 3d-viewer polygon pcbnew eeschema eeschema/plugins cvpcb kicad gerbview
KICAD_SUBDIRS = common bitmaps 3d-viewer polygon polygon/kbool/src pcbnew eeschema eeschema/plugins cvpcb kicad gerbview
KICAD_SUBDIRS_BIN = eeschema eeschema/plugins pcbnew cvpcb kicad gerbview
KICAD_SUBDIRS_BIN = eeschema eeschema/plugins pcbnew cvpcb kicad gerbview
KICAD_SUBDIRS_RES = internat modules template library
KICAD_SUBDIRS_RES = internat modules template library
KICAD_SUBDIRS_HELP = help
KICAD_SUBDIRS_HELP = help
+1 −1
Original line number Original line Diff line number Diff line
@@ -572,7 +572,7 @@ void WinEDA_PcbFrame::GetKicadAbout( wxCommandEvent& event )
/**********************************************************/
/**********************************************************/
{
{
    wxString extra_message =
    wxString extra_message =
        wxT("\nPcbnew uses the kbool library (boolean operations on sets of 2d polygons)\n");
        wxT("\nPcbnew uses the kbool library \n");
    extra_message << wxT("version ") << wxT(KBOOL_VERSION)
    extra_message << wxT("version ") << wxT(KBOOL_VERSION)
       << wxT("\nsee http://boolean.klaasholwerda.nl/bool.html\n");
       << wxT("\nsee http://boolean.klaasholwerda.nl/bool.html\n");
    
    
+12 −9
Original line number Original line Diff line number Diff line
@@ -30,19 +30,22 @@ CPolyLine::CPolyLine()
CPolyLine::~CPolyLine()
CPolyLine::~CPolyLine()
{
{
    Undraw();
    Undraw();
    if ( m_Kbool_Poly_Engine )
        delete m_Kbool_Poly_Engine;
}
}


/** Function NormalizeWithKbool
/** Function NormalizeWithKbool
 * Use the Kbool Library to clip contours: if outlines are crossing, the self-crossing polygon
 * Use the Kbool Library to clip contours: if outlines are crossing, the self-crossing polygon
 * is converted to non self-crossing polygon by adding extra points at the crossing locations
 * is converted to non self-crossing polygon by adding extra points at the crossing locations
 * and reordering corners
 * if more than one outside contour are found, extra CPolyLines will be created
 * if more than one outside contour are found, extra CPolyLines will be created
 * because copper areas have only one outside contour
 * because copper areas have only one outside contour
 * Therefore, if this results in new CPolyLines, return them as std::vector pa
 * Therefore, if this results in new CPolyLines, return them as std::vector pa
 * @param pa: pointer on a std::vector<CPolyLine*> to store extra CPolyLines
 * @param aExtraPolys: pointer on a std::vector<CPolyLine*> to store extra CPolyLines
 * @param bRetainArcs == TRUE, try to retain arcs in polys
 * @param bRetainArcs == TRUE, try to retain arcs in polys
 * @return number of external contours, or -1 if error
 * @return number of external contours, or -1 if error
 */
 */
int CPolyLine::NormalizeWithKbool( std::vector<CPolyLine*> * pa, bool bRetainArcs )
int CPolyLine::NormalizeWithKbool( std::vector<CPolyLine*> * aExtraPolyList, bool bRetainArcs )
{
{
    std::vector<CArc>   arc_array;
    std::vector<CArc>   arc_array;
    std::vector <void*> hole_array; // list of holes
    std::vector <void*> hole_array; // list of holes
@@ -111,10 +114,10 @@ int CPolyLine::NormalizeWithKbool( std::vector<CPolyLine*> * pa, bool bRetainArc
            Close();
            Close();
            n_ext_cont++;
            n_ext_cont++;
        }
        }
        else if( pa )                                               // a new outside contour is found: create a new CPolyLine
        else if( aExtraPolyList )                                               // a new outside contour is found: create a new CPolyLine
        {
        {
            polyline = new CPolyLine;                               // create new poly
            polyline = new CPolyLine;                               // create new poly
            pa->push_back( polyline );                              // put it in array
            aExtraPolyList->push_back( polyline );                              // put it in array
            bool first = true;
            bool first = true;
            while( m_Kbool_Poly_Engine->PolygonHasMorePoints() )    // read next external contour
            while( m_Kbool_Poly_Engine->PolygonHasMorePoints() )    // read next external contour
            {
            {
@@ -153,13 +156,13 @@ int CPolyLine::NormalizeWithKbool( std::vector<CPolyLine*> * pa, bool bRetainArc
            int y = (*hole)[1];
            int y = (*hole)[1];
            if( TestPointInside( x, y ) )
            if( TestPointInside( x, y ) )
                polyline = this;
                polyline = this;
            else if( pa )
            else if( aExtraPolyList )
            {
            {
                for( int ext_ic = 0; ext_ic<n_ext_cont - 1; ext_ic++ )
                for( int ext_ic = 0; ext_ic<n_ext_cont - 1; ext_ic++ )
                {
                {
                    if( (*pa)[ext_ic]->TestPointInside( x, y ) )
                    if( (*aExtraPolyList)[ext_ic]->TestPointInside( x, y ) )
                    {
                    {
                        polyline = (*pa)[ext_ic];
                        polyline = (*aExtraPolyList)[ext_ic];
                        break;
                        break;
                    }
                    }
                }
                }
@@ -182,7 +185,7 @@ int CPolyLine::NormalizeWithKbool( std::vector<CPolyLine*> * pa, bool bRetainArc
    }
    }


    if( bRetainArcs )
    if( bRetainArcs )
        RestoreArcs( &arc_array, pa );
        RestoreArcs( &arc_array, aExtraPolyList );


    delete m_Kbool_Poly_Engine;
    delete m_Kbool_Poly_Engine;
    m_Kbool_Poly_Engine = NULL;
    m_Kbool_Poly_Engine = NULL;
@@ -1142,7 +1145,7 @@ void CPolyLine::Hatch()
        return;
        return;
    }
    }


    int layer = m_layer;
    int layer = GetLayer();


    if( GetClosed() )   // If not closed, the poly is beeing created and not finalised. Not not hatch
    if( GetClosed() )   // If not closed, the poly is beeing created and not finalised. Not not hatch
    {
    {
+19 −14
Original line number Original line Diff line number Diff line
@@ -201,17 +201,22 @@ public:
     * @param arc_array : return data on arcs in arc_array
     * @param arc_array : return data on arcs in arc_array
     * @return error: 0 if Ok, 1 if error
     * @return error: 0 if Ok, 1 if error
     */
     */
    int MakeKboolPoly( int aStart_contour = -1, int aEnd_contour = -1, std::vector<CArc> * arc_array = NULL );
    int MakeKboolPoly( int                 aStart_contour = -1,
                       int                 aEnd_contour = -1,
                       std::vector<CArc> * arc_array = NULL );


    /** Function NormalizeWithKbool
    /** Function NormalizeWithKbool
     * Use the Kbool Library to clip contours: if outlines are crossing, the self-crossing polygon
     * Use the Kbool Library to clip contours: if outlines are crossing, the self-crossing polygon
     * is converted in 2 or more non self-crossing polygons
     * is converted to non self-crossing polygon by adding extra points at the crossing locations
     * If this results in new polygons, return them as std::vector pa
     * and reordering corners
     * @param pa: pointer on a std::vector<CPolyLine*> to store extra polylines
     * if more than one outside contour are found, extra CPolyLines will be created
     * because copper areas have only one outside contour
     * Therefore, if this results in new CPolyLines, return them as std::vector pa
     * @param aExtraPolys: pointer on a std::vector<CPolyLine*> to store extra CPolyLines
     * @param bRetainArcs == TRUE, try to retain arcs in polys
     * @param bRetainArcs == TRUE, try to retain arcs in polys
     * @return number of external contours, or -1 if error
     * @return number of external contours, or -1 if error
     */
     */
    int NormalizeWithKbool( std::vector<CPolyLine*> * pa, bool bRetainArcs );
    int NormalizeWithKbool( std::vector<CPolyLine*> * aExtraPolyList, bool bRetainArcs );


private:
private:
    int m_layer;    // layer to draw on
    int m_layer;    // layer to draw on
Loading