Skip to content

Commit c10c2e1

Browse files
committed
Optimize TEllipse::ExecuteEvent
Reuse same coordinates calculations
1 parent e83f2a3 commit c10c2e1

1 file changed

Lines changed: 15 additions & 16 deletions

File tree

graf2d/graf/src/TEllipse.cxx

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -204,16 +204,15 @@ void TEllipse::ExecuteEvent(Int_t event, Int_t px, Int_t py)
204204

205205
auto &parent = *gPad;
206206

207-
auto pp = parent.GetPainter();
208-
209-
Int_t kMaxDiff = 10;
207+
constexpr Int_t kMaxDiff = 10;
210208

211209
static enum { pNone, pTop, pL, pR, pBot, pINSIDE } mode = pNone;
212210
static Int_t sdx = 0, sdy = 0;
213211
static Double_t oldX1, oldY1, oldR1, oldR2;
214212
static Bool_t first_move = kTRUE;
215213

216-
auto paint_hollow = [this,&parent,pp]() {
214+
auto paint_hollow = [this,&parent]() {
215+
auto pp = parent.GetPainter();
217216
pp->SetAttLine(*this);
218217
std::vector<Double_t> x, y;
219218
FillPoints(parent, x, y, GetX1(), GetY1(), GetR1(), GetR2(), GetPhimin(), GetPhimax(), GetTheta());
@@ -247,6 +246,12 @@ void TEllipse::ExecuteEvent(Int_t event, Int_t px, Int_t py)
247246
};
248247

249248
Bool_t opaque = parent.OpaqueMoving();
249+
Int_t px1 = parent.XtoAbsPixel(parent.XtoPad(GetX1()));
250+
Int_t py1 = parent.YtoAbsPixel(parent.YtoPad(GetY1()));
251+
Int_t pLx = parent.XtoAbsPixel(parent.XtoPad(GetX1() - GetR1()));
252+
Int_t pRx = parent.XtoAbsPixel(parent.XtoPad(GetX1() + GetR1()));
253+
Int_t pBy = parent.YtoAbsPixel(parent.YtoPad(GetY1() - GetR2()));
254+
Int_t pTy = parent.YtoAbsPixel(parent.YtoPad(GetY1() + GetR2()));
250255

251256
switch (event) {
252257

@@ -257,18 +262,12 @@ void TEllipse::ExecuteEvent(Int_t event, Int_t px, Int_t py)
257262
oldR1 = GetR1();
258263
oldR2 = GetR2();
259264

260-
sdx = parent.XtoAbsPixel(parent.XtoPad(GetX1())) - px;
261-
sdy = parent.YtoAbsPixel(parent.YtoPad(GetY1())) - py;
265+
sdx = px1 - px;
266+
sdy = py1 - py;
262267

263268
// No break !!!
264269

265270
case kMouseMotion: {
266-
Int_t px1 = parent.XtoAbsPixel(parent.XtoPad(GetX1()));
267-
Int_t py1 = parent.YtoAbsPixel(parent.YtoPad(GetY1()));
268-
Int_t pLx = parent.XtoAbsPixel(parent.XtoPad(GetX1() - GetR1()));
269-
Int_t pRx = parent.XtoAbsPixel(parent.XtoPad(GetX1() + GetR1()));
270-
Int_t pBy = parent.YtoAbsPixel(parent.YtoPad(GetY1() - GetR2()));
271-
Int_t pTy = parent.YtoAbsPixel(parent.YtoPad(GetY1() + GetR2()));
272271
mode = pNone;
273272
if ((TMath::Abs(px - px1) < kMaxDiff) && (TMath::Abs(py - pTy) < kMaxDiff)) {
274273
mode = pTop; // top edge
@@ -301,19 +300,19 @@ void TEllipse::ExecuteEvent(Int_t event, Int_t px, Int_t py)
301300
case pNone:
302301
break;
303302
case pL:
304-
changeX(px, parent.XtoAbsPixel(parent.XtoPad(GetX1() + GetR1())));
303+
changeX(px, pRx);
305304
guide = 'l';
306305
break;
307306
case pR:
308-
changeX(parent.XtoAbsPixel(parent.XtoPad(GetX1() - GetR1())), px);
307+
changeX(pLx, px);
309308
guide = 'r';
310309
break;
311310
case pTop:
312-
changeY(py, parent.YtoAbsPixel(parent.YtoPad(GetY1() - GetR2())));
311+
changeY(py, pBy);
313312
guide = 't';
314313
break;
315314
case pBot:
316-
changeY(parent.YtoAbsPixel(parent.YtoPad(GetY1() + GetR2())), py);
315+
changeY(pTy, py);
317316
guide = 'b';
318317
break;
319318
case pINSIDE:

0 commit comments

Comments
 (0)