Removed shiny profiler. The Shiny profiler was only working on MSVC
and nowadays the sampling profiler inside Visual Studio is better.
This commit is contained in:
parent
51cfec55cf
commit
7e77048593
38 changed files with 142 additions and 2989 deletions
|
@ -50,17 +50,6 @@
|
|||
#include <assert.h>
|
||||
#include <libslic3r/Int128.hpp>
|
||||
|
||||
// Profiling support using the Shiny intrusive profiler
|
||||
//#define CLIPPERLIB_PROFILE
|
||||
#if defined(SLIC3R_PROFILE) && defined(CLIPPERLIB_PROFILE)
|
||||
#include <Shiny/Shiny.h>
|
||||
#define CLIPPERLIB_PROFILE_FUNC() PROFILE_FUNC()
|
||||
#define CLIPPERLIB_PROFILE_BLOCK(name) PROFILE_BLOCK(name)
|
||||
#else
|
||||
#define CLIPPERLIB_PROFILE_FUNC()
|
||||
#define CLIPPERLIB_PROFILE_BLOCK(name)
|
||||
#endif
|
||||
|
||||
#ifdef CLIPPERLIB_NAMESPACE_PREFIX
|
||||
namespace CLIPPERLIB_NAMESPACE_PREFIX {
|
||||
#endif // CLIPPERLIB_NAMESPACE_PREFIX
|
||||
|
@ -299,7 +288,6 @@ int PointInPolygon (const IntPoint &pt, OutPt *op)
|
|||
// This is potentially very expensive! O(n^2)!
|
||||
bool Poly2ContainsPoly1(OutPt *OutPt1, OutPt *OutPt2)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
OutPt* op = OutPt1;
|
||||
do
|
||||
{
|
||||
|
@ -768,7 +756,6 @@ TEdge* ClipperBase::ProcessBound(TEdge* E, bool NextIsForward)
|
|||
|
||||
bool ClipperBase::AddPath(const Path &pg, PolyType PolyTyp, bool Closed)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
// Remove duplicate end point from a closed input path.
|
||||
// Remove duplicate points from the end of the input path.
|
||||
int highI = (int)pg.size() -1;
|
||||
|
@ -792,7 +779,6 @@ bool ClipperBase::AddPath(const Path &pg, PolyType PolyTyp, bool Closed)
|
|||
|
||||
bool ClipperBase::AddPathInternal(const Path &pg, int highI, PolyType PolyTyp, bool Closed, TEdge* edges)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
#ifdef use_lines
|
||||
if (!Closed && PolyTyp == ptClip)
|
||||
throw clipperException("AddPath: Open paths must be subject.");
|
||||
|
@ -975,7 +961,6 @@ bool ClipperBase::AddPathInternal(const Path &pg, int highI, PolyType PolyTyp, b
|
|||
|
||||
void ClipperBase::Clear()
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
m_MinimaList.clear();
|
||||
m_edges.clear();
|
||||
#ifndef CLIPPERLIB_INT32
|
||||
|
@ -989,7 +974,6 @@ void ClipperBase::Clear()
|
|||
// Sort the LML entries, initialize the left / right bound edges of each Local Minima.
|
||||
void ClipperBase::Reset()
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
if (m_MinimaList.empty()) return; //ie nothing to process
|
||||
std::sort(m_MinimaList.begin(), m_MinimaList.end(), [](const LocalMinimum& lm1, const LocalMinimum& lm2){ return lm1.Y < lm2.Y; });
|
||||
|
||||
|
@ -1018,7 +1002,6 @@ void ClipperBase::Reset()
|
|||
// Returns (0,0,0,0) for an empty rectangle.
|
||||
IntRect ClipperBase::GetBounds()
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
IntRect result;
|
||||
auto lm = m_MinimaList.begin();
|
||||
if (lm == m_MinimaList.end())
|
||||
|
@ -1079,7 +1062,6 @@ Clipper::Clipper(int initOptions) :
|
|||
|
||||
void Clipper::Reset()
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
ClipperBase::Reset();
|
||||
m_Scanbeam = std::priority_queue<cInt>();
|
||||
m_Maxima.clear();
|
||||
|
@ -1094,7 +1076,6 @@ void Clipper::Reset()
|
|||
bool Clipper::Execute(ClipType clipType, Paths &solution,
|
||||
PolyFillType subjFillType, PolyFillType clipFillType)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
if (m_HasOpenPaths)
|
||||
throw clipperException("Error: PolyTree struct is needed for open path clipping.");
|
||||
solution.clear();
|
||||
|
@ -1112,7 +1093,6 @@ bool Clipper::Execute(ClipType clipType, Paths &solution,
|
|||
bool Clipper::Execute(ClipType clipType, PolyTree& polytree,
|
||||
PolyFillType subjFillType, PolyFillType clipFillType)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
m_SubjFillType = subjFillType;
|
||||
m_ClipFillType = clipFillType;
|
||||
m_ClipType = clipType;
|
||||
|
@ -1126,10 +1106,8 @@ bool Clipper::Execute(ClipType clipType, PolyTree& polytree,
|
|||
|
||||
bool Clipper::ExecuteInternal()
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
bool succeeded = true;
|
||||
try {
|
||||
CLIPPERLIB_PROFILE_BLOCK(Clipper_ExecuteInternal_Process);
|
||||
Reset();
|
||||
if (m_MinimaList.empty()) return true;
|
||||
cInt botY = m_Scanbeam.top();
|
||||
|
@ -1154,13 +1132,11 @@ bool Clipper::ExecuteInternal()
|
|||
|
||||
if (succeeded)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_BLOCK(Clipper_ExecuteInternal_Fix);
|
||||
|
||||
//fix orientations ...
|
||||
//FIXME Vojtech: Does it not invalidate the loop hierarchy maintained as OutRec::FirstLeft pointers?
|
||||
//FIXME Vojtech: The area is calculated with floats, it may not be numerically stable!
|
||||
{
|
||||
CLIPPERLIB_PROFILE_BLOCK(Clipper_ExecuteInternal_Fix_orientations);
|
||||
for (OutRec *outRec : m_PolyOuts)
|
||||
if (outRec->Pts && !outRec->IsOpen && (outRec->IsHole ^ m_ReverseOutput) == (Area(*outRec) > 0))
|
||||
ReversePolyPtLinks(outRec->Pts);
|
||||
|
@ -1170,7 +1146,6 @@ bool Clipper::ExecuteInternal()
|
|||
|
||||
//unfortunately FixupOutPolygon() must be done after JoinCommonEdges()
|
||||
{
|
||||
CLIPPERLIB_PROFILE_BLOCK(Clipper_ExecuteInternal_Fix_fixup);
|
||||
for (OutRec *outRec : m_PolyOuts)
|
||||
if (outRec->Pts) {
|
||||
if (outRec->IsOpen)
|
||||
|
@ -1424,7 +1399,6 @@ bool Clipper::IsContributing(const TEdge& edge) const
|
|||
// Called from Clipper::InsertLocalMinimaIntoAEL() and Clipper::IntersectEdges().
|
||||
OutPt* Clipper::AddLocalMinPoly(TEdge *e1, TEdge *e2, const IntPoint &Pt)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
OutPt* result;
|
||||
TEdge *e, *prevE;
|
||||
if (IsHorizontal(*e2) || ( e1->Dx > e2->Dx ))
|
||||
|
@ -1516,7 +1490,6 @@ void Clipper::CopyAELToSEL()
|
|||
// Called from Clipper::ExecuteInternal()
|
||||
void Clipper::InsertLocalMinimaIntoAEL(const cInt botY)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
while (!m_MinimaList.empty() && m_MinimaList.back().Y == botY)
|
||||
{
|
||||
TEdge* lb = m_MinimaList.back().LeftBound;
|
||||
|
@ -2066,7 +2039,6 @@ OutPt* Clipper::GetLastOutPt(TEdge *e)
|
|||
|
||||
void Clipper::ProcessHorizontals()
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
TEdge* horzEdge = m_SortedEdges;
|
||||
while(horzEdge)
|
||||
{
|
||||
|
@ -2443,7 +2415,6 @@ void Clipper::UpdateEdgeIntoAEL(TEdge *&e)
|
|||
|
||||
bool Clipper::ProcessIntersections(const cInt topY)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
if( !m_ActiveEdges ) return true;
|
||||
try {
|
||||
BuildIntersectList(topY);
|
||||
|
@ -2598,7 +2569,6 @@ void Clipper::DoMaxima(TEdge *e)
|
|||
|
||||
void Clipper::ProcessEdgesAtTopOfScanbeam(const cInt topY)
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
TEdge* e = m_ActiveEdges;
|
||||
while( e )
|
||||
{
|
||||
|
@ -3209,7 +3179,6 @@ bool Clipper::JoinPoints(Join *j, OutRec* outRec1, OutRec* outRec2)
|
|||
// This is potentially very expensive! O(n^3)!
|
||||
void Clipper::FixupFirstLefts1(OutRec* OldOutRec, OutRec* NewOutRec) const
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
//tests if NewOutRec contains the polygon before reassigning FirstLeft
|
||||
for (OutRec *outRec : m_PolyOuts)
|
||||
{
|
||||
|
@ -3233,7 +3202,6 @@ void Clipper::FixupFirstLefts2(OutRec* OldOutRec, OutRec* NewOutRec) const
|
|||
|
||||
void Clipper::JoinCommonEdges()
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
for (Join &join : m_Joins)
|
||||
{
|
||||
OutRec *outRec1 = GetOutRec(join.OutPt1->Idx);
|
||||
|
@ -3784,7 +3752,6 @@ void ClipperOffset::DoRound(int j, int k)
|
|||
// http://www.angusj.com/delphi/clipper/documentation/Docs/Units/ClipperLib/Classes/Clipper/Properties/StrictlySimple.htm
|
||||
void Clipper::DoSimplePolygons()
|
||||
{
|
||||
CLIPPERLIB_PROFILE_FUNC();
|
||||
size_t i = 0;
|
||||
while (i < m_PolyOuts.size())
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue