Commit 9131e2a1 authored by charras's avatar charras

compiling problems in kbool

parent 44743723
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\
......
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
......
...@@ -572,7 +572,7 @@ void WinEDA_PcbFrame::GetKicadAbout( wxCommandEvent& event ) ...@@ -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");
......
...@@ -30,19 +30,22 @@ CPolyLine::CPolyLine() ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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() ...@@ -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
{ {
......
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
* false: holes are not linked: in this mode contours are added clockwise * false: holes are not linked: in this mode contours are added clockwise
* and polygons added counter clockwise are holes * and polygons added counter clockwise are holes
*/ */
void ArmBoolEng( Bool_Engine* aBooleng, bool aConvertHoles = false); void ArmBoolEng( Bool_Engine* aBooleng, bool aConvertHoles = false );
#define PCBU_PER_MIL 10 #define PCBU_PER_MIL 10
...@@ -201,17 +201,22 @@ public: ...@@ -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
...@@ -223,7 +228,7 @@ public: ...@@ -223,7 +228,7 @@ public:
int m_HatchStyle; // hatch style, see enum above int m_HatchStyle; // hatch style, see enum above
std::vector <CSegment> m_HatchLines; // hatch lines std::vector <CSegment> m_HatchLines; // hatch lines
private: private:
Bool_Engine * m_Kbool_Poly_Engine; // polygons set in kbool engine data Bool_Engine* m_Kbool_Poly_Engine; // polygons set in kbool engine data
bool bDrawn; bool bDrawn;
}; };
......
...@@ -14,7 +14,7 @@ ...@@ -14,7 +14,7 @@
#endif #endif
#ifdef __UNIX__ #ifdef __UNIX__
#include "kbool/include/_dl_itr.h" #include "../include/_dl_itr.h"
#endif #endif
//======================================================================= //=======================================================================
......
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
#endif #endif
#ifdef __UNIX__ #ifdef __UNIX__
#include "kbool/include/_lnk_itr.h" #include "../include/_lnk_itr.h"
#endif #endif
//======================================================================= //=======================================================================
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment