From 9b772ac0a0537ac7a9862be4bac96581d250a139 Mon Sep 17 00:00:00 2001 From: Ivica Ico Bukvic <ico@vt.edu> Date: Wed, 18 Sep 2013 21:27:27 -0400 Subject: [PATCH] fixed regression of drawing ellipses/circles and their redraw in response to move command --- pd/tkpath/ChangeLog | 1 + pd/tkpath/generic/path.c | 2 +- pd/tkpath/generic/tkCanvEllipse.c | 18 +++++++++++------- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pd/tkpath/ChangeLog b/pd/tkpath/ChangeLog index ad4cc27e9..f0731b813 100755 --- a/pd/tkpath/ChangeLog +++ b/pd/tkpath/ChangeLog @@ -18,6 +18,7 @@ * tclconfig/tcl.m4: * configure, configure.in: Updated to TEA 3.9. * generic/*.c: Various fixes for mingw32/mingw64. + * configure, configure.in: Bumped revision to 0.3.3 2011-10-28 Peter Spjuth <peter.spjuth@gmail.com> diff --git a/pd/tkpath/generic/path.c b/pd/tkpath/generic/path.c index 9a4e5060c..b421bc982 100644 --- a/pd/tkpath/generic/path.c +++ b/pd/tkpath/generic/path.c @@ -18,7 +18,7 @@ /* Keep patch level release numbers odd and set even only on release. */ #define TKPATH_VERSION "0.3" -#define TKPATH_PATCHLEVEL "0.3.2" +#define TKPATH_PATCHLEVEL "0.3.3" #define TKPATH_REQUIRE "8.5" int gAntiAlias = 1; diff --git a/pd/tkpath/generic/tkCanvEllipse.c b/pd/tkpath/generic/tkCanvEllipse.c index 25f973149..432ffb0a6 100644 --- a/pd/tkpath/generic/tkCanvEllipse.c +++ b/pd/tkpath/generic/tkCanvEllipse.c @@ -215,6 +215,8 @@ CreateAny(Tcl_Interp *interp, Tk_PathCanvas canvas, struct Tk_PathItem *itemPtr, itemExPtr->canvas = canvas; itemExPtr->styleObj = NULL; itemExPtr->styleInst = NULL; + itemPtr->bbox = NewEmptyPathRect(); + itemPtr->totalBbox = NewEmptyPathRect(); ellPtr->type = type; if (ellPtr->type == kOvalTypeCircle) { @@ -290,7 +292,6 @@ ComputeEllipseBbox(Tk_PathCanvas canvas, EllipseItem *ellPtr) Tk_PathItem *itemPtr = &itemExPtr->header; Tk_PathStyle style; Tk_PathState state = itemExPtr->header.state; - PathRect totalBbox, bbox; if(state == TK_PATHSTATE_NULL) { state = TkPathCanvasState(canvas); @@ -301,9 +302,9 @@ ComputeEllipseBbox(Tk_PathCanvas canvas, EllipseItem *ellPtr) return; } style = TkPathCanvasInheritStyle(itemPtr, kPathMergeStyleNotFill); - bbox = GetBareBbox(ellPtr); - totalBbox = GetGenericPathTotalBboxFromBare(NULL, &style, &bbox); - SetGenericPathHeaderBbox(&itemExPtr->header, style.matrixPtr, &totalBbox); + itemPtr->bbox = GetBareBbox(ellPtr); + itemPtr->totalBbox = GetGenericPathTotalBboxFromBare(NULL, &style, &itemPtr->bbox); + SetGenericPathHeaderBbox(&itemExPtr->header, style.matrixPtr, &itemPtr->totalBbox); TkPathCanvasFreeInheritedStyle(&style); } @@ -399,7 +400,7 @@ DisplayEllipse(Tk_PathCanvas canvas, Tk_PathItem *itemPtr, Display *display, Dra { EllipseItem *ellPtr = (EllipseItem *) itemPtr; TMatrix m = GetCanvasTMatrix(canvas); - PathRect bbox; + //PathRect bbox; PathAtom *atomPtr; EllipseAtom ellAtom; Tk_PathStyle style; @@ -419,9 +420,9 @@ DisplayEllipse(Tk_PathCanvas canvas, Tk_PathItem *itemPtr, Display *display, Dra ellAtom.rx = ellPtr->rx; ellAtom.ry = ellPtr->ry; - bbox = GetBareBbox(ellPtr); + itemPtr->bbox = GetBareBbox(ellPtr); style = TkPathCanvasInheritStyle(itemPtr, 0); - TkPathDrawPath(Tk_PathCanvasTkwin(canvas), drawable, atomPtr, &style, &m, &bbox); + TkPathDrawPath(Tk_PathCanvasTkwin(canvas), drawable, atomPtr, &style, &m, &itemPtr->bbox); TkPathCanvasFreeInheritedStyle(&style); } @@ -630,6 +631,9 @@ TranslateEllipse(Tk_PathCanvas canvas, Tk_PathItem *itemPtr, double deltaX, doub ellPtr->center[0] += deltaX; ellPtr->center[1] += deltaY; + //TranslatePathAtoms(ellPtr->atomPtr, deltaX, deltaY); + TranslatePathRect(&itemPtr->bbox, deltaX, deltaY); + TranslatePathRect(&itemPtr->totalBbox, deltaX, deltaY); TranslateItemHeader(itemPtr, deltaX, deltaY); } -- GitLab