-*-*-*-*-*-*-*-*Execute action corresponding to one event*-*-*-*-*-*-*-*-*-* -* ========================================= * -* This member function is called when a object is clicked with the locator * -* * -* If Left button clicked in the object area, while the button is kept down * -* the cube representing the surrounding frame for the corresponding * -* new latitude and longitude position is drawn. * -* * -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
1241{
1253 static Int_t system, framewasdrawn;
1254 static Double_t xrange, yrange, xmin, ymin, longitude1, latitude1, longitude2, latitude2;
1255 static Double_t newlatitude, newlongitude, oldlatitude, oldlongitude;
1256 Double_t dlatitude, dlongitude, x, y;
1257 Int_t irep = 0;
1258 Double_t psideg;
1259
1260
1261
1263 {
1264 gPad->SetCursor(kPointer);
1265 return;
1266 }
1267 if (!gPad->IsEditable()) return;
1268 gPad->AbsCoordinates(kTRUE);
1269
1271
1272 case kKeyPress :
1273 fChanged = kTRUE;
1274 MoveViewCommand(Char_t(px), py);
1275 break;
1276 case kMouseMotion:
1277 gPad->SetCursor(kRotate);
1278 break;
1279
1280 case kButton1Down:
1281
1282
1283 xmin = gPad->GetX1();
1284 ymin = gPad->GetY1();
1285 xrange = gPad->GetX2() - xmin;
1286 yrange = gPad->GetY2() - ymin;
1287 x = gPad->PixeltoX(px);
1288 y = gPad->PixeltoY(py);
1289 system = GetSystem();
1290 framewasdrawn = 0;
1292 longitude1 = 180*(x-xmin)/xrange;
1293 latitude1 = 90*(y-ymin)/yrange;
1294 } else {
1295 latitude1 = 90*(x-xmin)/xrange;
1296 longitude1 = 180*(y-ymin)/yrange;
1297 }
1298 newlongitude = oldlongitude = -90 - gPad->GetPhi();
1299 newlatitude = oldlatitude = 90 - gPad->GetTheta();
1300 psideg = GetPsi();
1301
1302
1303 if(!fOutline)
1304 SetOutlineToCube();
1305 break;
1306
1307 case kButton1Motion:
1308 {
1309
1310
1311 fChanged = kTRUE;
1312 if (framewasdrawn) fOutline->Paint();
1313 framewasdrawn = 1;
1314 x = gPad->PixeltoX(px);
1315 y = gPad->PixeltoY(py);
1317 longitude2 = 180*(x-xmin)/xrange;
1318 latitude2 = 90*(y-ymin)/yrange;
1319 } else {
1320 latitude2 = 90*(x-xmin)/xrange;
1321 longitude2 = 180*(y-ymin)/yrange;
1322 }
1323 dlongitude = longitude2 - longitude1;
1324 dlatitude = latitude2 - latitude1;
1325 newlatitude = oldlatitude + dlatitude;
1326 newlongitude = oldlongitude - dlongitude;
1327 psideg = GetPsi();
1328 ResetView(newlongitude, newlatitude, psideg, irep);
1329 fOutline->Paint();
1330
1331 break;
1332 }
1333 case kButton1Up:
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353 psideg = GetPsi();
1354 SetView(newlongitude, newlatitude, psideg, irep);
1355 gPad->SetPhi(-90-newlongitude);
1356 gPad->SetTheta(90-newlatitude);
1357 gPad->Modified(kTRUE);
1358
1359
1360 gVirtualX->SetLineColor(-1);
1361 gVirtualX->SetLineStyle(-1);
1362 gVirtualX->SetLineWidth(-1);
1363 break;
1364 }
1365
1366
1367 gPad->AbsCoordinates(kFALSE);
1368}
const Int_t kCARTESIAN
Definition: EdbDisplayBase.cxx:23
const Int_t kPOLAR
Definition: EdbDisplayBase.cxx:24
int event
Definition: shower_tr.C:25