From f5de714451a565a0b3bc1b54be68b6a2bbf38074 Mon Sep 17 00:00:00 2001 From: zcx <33644940+zcx-xxx@users.noreply.github.com> Date: Fri, 19 Nov 2021 23:57:07 +0800 Subject: [PATCH] Merge pull request #20987 from zcx-xxx:master MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update drawing.cpp optimize FillEdgeCollection function * Update drawing.cpp optimize FillEdgeCollection,remove sort_flag --- modules/imgproc/src/drawing.cpp | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/modules/imgproc/src/drawing.cpp b/modules/imgproc/src/drawing.cpp index ae8c6209e8..a5b8893a06 100644 --- a/modules/imgproc/src/drawing.cpp +++ b/modules/imgproc/src/drawing.cpp @@ -1369,7 +1369,6 @@ FillEdgeCollection( Mat& img, std::vector& edges, const void* color ) for( y = e->y0; y < y_max; y++ ) { PolyEdge *last, *prelast, *keep_prelast; - int sort_flag = 0; int draw = 0; int clipline = y < 0; @@ -1444,6 +1443,7 @@ FillEdgeCollection( Mat& img, std::vector& edges, const void* color ) { prelast = &tmp; last = tmp.next; + PolyEdge *last_exchange = 0; while( last != keep_prelast && last->next != 0 ) { @@ -1456,7 +1456,7 @@ FillEdgeCollection( Mat& img, std::vector& edges, const void* color ) last->next = te->next; te->next = last; prelast = te; - sort_flag = 1; + last_exchange = prelast; } else { @@ -1464,9 +1464,10 @@ FillEdgeCollection( Mat& img, std::vector& edges, const void* color ) last = te; } } - keep_prelast = prelast; - } - while( sort_flag && keep_prelast != tmp.next && keep_prelast != &tmp ); + if (last_exchange == NULL) + break; + keep_prelast = last_exchange; + } while( keep_prelast != tmp.next && keep_prelast != &tmp ); } } -- GitLab