Changeset 2278 for trunk/MagicSoft/Cosy/gui
- Timestamp:
- 07/15/03 15:05:21 (22 years ago)
- Location:
- trunk/MagicSoft/Cosy/gui
- Files:
-
- 2 deleted
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MagicSoft/Cosy/gui/GuiLinkDef.h
r1819 r2278 18 18 19 19 #pragma link C++ class MGCosy+; 20 #pragma link C++ class MGStarguider+;21 20 22 21 #endif -
trunk/MagicSoft/Cosy/gui/MGAccuracy.cc
r1953 r2278 170 170 171 171 MGAccuracy::MGAccuracy(const TGWindow* p, const UInt_t w) 172 : MGEmbeddedCanvas("Accuracy", p, w, 75*4)172 : MGEmbeddedCanvas("Accuracy", p, w, 300) 173 173 { 174 174 DrawCoordinateSystem(); -
trunk/MagicSoft/Cosy/gui/MGCosy.cc
r2069 r2278 55 55 kPB_DECp, 56 56 kPB_DECm, 57 kPB_ZDp, 58 kPB_ZDm, 59 kPB_AZp, 60 kPB_AZm, 57 61 kPB_LoadBending, 58 62 kPB_ResetBending, 59 63 kPB_CALIBSE, 60 64 kCB_PredefPos, 65 kCB_StarList, 61 66 62 67 // kLog … … 85 90 TGPopupMenu *logmenu = new TGPopupMenu(gClient->GetRoot()); 86 91 logmenu->AddEntry("&Copy Selected", kLogCopy); 87 logmenu->AddEntry(" Clear all", kLogClear);92 logmenu->AddEntry("&Select All", kLogSelect); 88 93 logmenu->AddSeparator(); 89 logmenu->AddEntry(" Select All", kLogSelect);94 logmenu->AddEntry("Clear &all", kLogClear); 90 95 /* 91 96 logmenu->AddSeparator(); … … 93 98 */ 94 99 logmenu->AddSeparator(); 95 logmenu->AddEntry("Sa ve",kLogSave);96 logmenu->AddEntry("Save a ppend",kLogAppend);100 logmenu->AddEntry("Sa&ve", kLogSave); 101 logmenu->AddEntry("Save a&ppend", kLogAppend); 97 102 logmenu->Associate(this); 98 103 … … 160 165 fList->Add(fLabel2); 161 166 fList->Add(fLabel3); 162 167 /* 163 168 l = new TGLabel(f, "Offset-Zd:"); 164 169 l->Move(x-60, y+102); … … 177 182 fList->Add(fOffsetZd); 178 183 fList->Add(fOffsetAz); 179 184 */ 180 185 l = new TGLabel(f, "Ra (estimated):"); 181 l->Move(x-60, y+142 );186 l->Move(x-60, y+142-20); 182 187 fList->Add(l); 183 188 184 189 l = new TGLabel(f, "Ra (nominal):"); 185 l->Move(x-60, y+159 );190 l->Move(x-60, y+159-20); 186 191 fList->Add(l); 187 192 188 193 l = new TGLabel(f, "Dec (estimated):"); 189 l->Move(x-60, y+182 );194 l->Move(x-60, y+182-20); 190 195 fList->Add(l); 191 196 192 197 l = new TGLabel(f, "Dec (nominal):"); 193 l->Move(x-60, y+199 );198 l->Move(x-60, y+199-20); 194 199 fList->Add(l); 195 200 … … 214 219 fZdSoll->SetTextJustify(kTextRight); 215 220 fAzSoll->SetTextJustify(kTextRight); 216 fRaEst->Move(x+30, y+142 );217 fRaSoll->Move(x+30, y+159 );218 fDecEst->Move(x+30, y+182 );219 fDecSoll->Move(x+30, y+199 );221 fRaEst->Move(x+30, y+142-20); 222 fRaSoll->Move(x+30, y+159-20); 223 fDecEst->Move(x+30, y+182-20); 224 fDecSoll->Move(x+30, y+199-20); 220 225 fZdSoll->Move(x+30, y+222); 221 226 fAzSoll->Move(x+30, y+239); … … 311 316 if (!fin) 312 317 { 313 cout << "ERROR: Predifined posi ionin 'prepos.txt' not found." << endl;318 cout << "ERROR: Predifined positions in 'prepos.txt' not found." << endl; 314 319 return; 315 320 } … … 329 334 } 330 335 331 void MGCosy::CreateTabs(TGTab *fTab) 336 void MGCosy::CreateStarList(TGCompositeFrame *tf1) 337 { 338 /* 339 TGComboBox *box = new TGComboBox(tf1, kCB_StarList); 340 box->Resize(120, 20); 341 box->Associate(this); 342 343 TGLayoutHints *lay = new TGLayoutHints(kLHintsLeft|kLHintsTop, 344 27, 0, 200, 0); 345 tf1->AddFrame(box, lay); 346 347 fList->Add(box); 348 fList->Add(lay); 349 350 ifstream fin("stars.txt"); 351 if (!fin) 352 { 353 cout << "ERROR: Star List 'stars.txt' not found." << endl; 354 return; 355 } 356 357 int i=0; 358 while (1) 359 { 360 TString str; 361 Int_t h, m, s, d, am, as; 362 fin >> h >> m >> s >> d >> am >> as; 363 if (!fin) 364 break; 365 366 box->AddEntry(str, i++); 367 368 fStarList.Add(zd, az); 369 } 370 */ 371 } 372 373 void MGCosy::CreateTabs() 332 374 { 333 375 TGCompositeFrame *tf1 = fTab->AddTab("Position"); 334 376 TGCompositeFrame *tf2 = fTab->AddTab("Track"); 377 TGCompositeFrame *tf4 = fTab->AddTab("Calib"); 335 378 #ifdef EXPERT 336 TGCompositeFrame *tf4 = fTab->AddTab("Calib");337 379 TGCompositeFrame *tf5 = fTab->AddTab("Test SE"); 338 380 TGCompositeFrame *tf6 = fTab->AddTab("Gear"); … … 345 387 346 388 CreatePredefinedPos(tf1); 389 CreateStarList(tf4); 347 390 348 391 fCRaDec = new MGCoordinates(tf2, kETypeRaDec); … … 350 393 fList->Add(fCRaDec); 351 394 352 #ifdef EXPERT353 395 fCCalib = new MGCoordinates(tf4, kETypeRaDec); 354 396 fCCalib->Move(27, 105); 355 397 fList->Add(fCCalib); 356 #endif357 398 358 399 const int x=15; … … 386 427 fList->Add(l3); 387 428 388 #ifdef EXPERT389 429 l1 = new TGLabel(tf4, "Start the calibration using the Start button."); 390 430 l2 = new TGLabel(tf4, "Write a coordinate pair to a TPoint file using"); … … 401 441 fList->Add(l4); 402 442 443 #ifdef EXPERT 403 444 l1 = new TGLabel(tf5, "START starts histograming the differences of"); 404 445 l2 = new TGLabel(tf5, "the two shaftencoders at the elevation axis."); … … 495 536 fList->Add(but); 496 537 */ 538 #ifdef EXPERT 497 539 but = new TGTextButton(tf4, "Load", kPB_LoadBending); 498 but->Resize( 80, 25);499 but->Move( 25, 190);540 but->Resize(50, 25); 541 but->Move(151, 185); 500 542 but->SetToolTipText("Load bending corrections from file 'bending.txt'"); 501 543 but->Associate(this); … … 503 545 504 546 but = new TGTextButton(tf4, "Reset", kPB_ResetBending); 505 but->Resize( 80, 25);506 but->Move(2 5, 220);547 but->Resize(50, 25); 548 but->Move(206, 185); 507 549 but->SetToolTipText("Reset bending correction (coefficients=0)"); 508 550 but->Associate(this); 509 551 fList->Add(but); 552 #endif EXPERT 510 553 511 554 but = new TGTextButton(tf4, "TPoint", kPB_TPOINT); 512 but->Resize( 80, 25);513 but->Move( 25, 250);555 but->Resize(50, 25); 556 but->Move(176/*231*/, 213); 514 557 but->SetToolTipText("Trigger writing a tpoint coordinate pair."); 558 but->Associate(this); 559 fList->Add(but); 560 561 but= new TGTextButton(tf4, "Zd -", kPB_ZDm); 562 but->Resize(50, 25); 563 but->Move(25, 210); 564 but->SetToolTipText("Zenith Distance -= 1SE"); 565 but->Associate(this); 566 fList->Add(but); 567 but= new TGTextButton(tf4, "Zd +", kPB_ZDp); 568 but->Resize(50, 25); 569 but->Move(90, 210); 570 but->SetToolTipText("Zenith Distance += 1SE"); 571 but->Associate(this); 572 fList->Add(but); 573 but= new TGTextButton(tf4, "Az +", kPB_AZp); 574 but->Resize(50, 25); 575 but->Move(55, 185); 576 but->SetToolTipText("Azimuth += 1SE"); 577 but->Associate(this); 578 fList->Add(but); 579 but= new TGTextButton(tf4, "Az -", kPB_AZm); 580 but->Resize(50, 25); 581 but->Move(55, 235); 582 but->SetToolTipText("Azimuth -= 1SE"); 515 583 but->Associate(this); 516 584 fList->Add(but); … … 728 796 AddFrame(f2, hints2); 729 797 730 //731 // FIXME!732 //733 798 #ifdef DEBUG 734 799 cout << "MGCosy: Creating Tabs" << endl; 735 800 #endif 736 CreateTabs( fTab);801 CreateTabs(); 737 802 #ifdef DEBUG 738 803 cout << "MGCosy: Creating Label" << endl; … … 871 936 } 872 937 } 873 938 /* 874 939 void MGCosy::UpdateOffset(ZdAz &off) 875 940 { … … 892 957 } 893 958 } 894 959 */ 895 960 void MGCosy::UpdateZdAz(ZdAz &soll) 896 961 { … … 954 1019 } 955 1020 956 void MGCosy::Update(ZdAz pos, ZdAz acc, ZdAz vel, ZdAz off,RaDec radec,1021 void MGCosy::Update(ZdAz pos, ZdAz acc, ZdAz vel, /*ZdAz off,*/ RaDec radec, 957 1022 ZdAz soll, UInt_t stat, UInt_t stat2) 958 1023 { … … 962 1027 double mjd = UpdateTime(); 963 1028 fSkyPosition->Update(pos, mjd); 964 fAccuracy->Update(pos, acc); 965 fVelocity->Update(vel); 966 UpdateOffset(off); 1029 //UpdateOffset(off); 967 1030 UpdateRaDec(pos, mjd, radec); 968 1031 UpdateZdAz(soll); … … 991 1054 SetLabelColor(fAvailSe3, stat2&0x20); 992 1055 993 stat&kTracking ? fAccuracy->MapWindow() : fAccuracy->UnmapWindow(); 994 stat&kTracking ? fVelocity->MapWindow() : fVelocity->UnmapWindow(); 1056 if (stat&kTracking) 1057 { 1058 fAccuracy->Update(pos, acc); 1059 fVelocity->Update(vel); 1060 fAccuracy->MapWindow(); 1061 fVelocity->MapWindow(); 1062 } 1063 else 1064 { 1065 fAccuracy->UnmapWindow(); 1066 fVelocity->UnmapWindow(); 1067 } 995 1068 // stat&kTracking ? fOffset->MapWindow() : fOffset->UnmapWindow(); 996 1069 … … 1022 1095 } 1023 1096 1024 void MGCosy::StartTrack( )1097 void MGCosy::StartTrack(bool track) 1025 1098 { 1026 1099 cout << "Start tracking." << endl; 1027 1100 1028 XY xy = fCRaDec->GetCoordinates(); 1029 RaDec dest(xy.X()*15., xy.Y()); // xy.X() [h]->[ø] 1030 1031 cout << dest.Ra() << "h " << dest.Dec() << "\xb0" << endl; 1101 XY xy0 = fCRaDec->GetCoordinates(); 1102 XY xy1 = track ? xy0 : fCCalib->GetCoordinates(); 1103 1104 RaDec dest0(xy0.X()*15., xy0.Y()); // xy.X() [h]->[ø] 1105 RaDec dest1(xy1.X()*15., xy1.Y()); // xy.X() [h]->[ø] 1106 1107 cout << "TrackPos: " << dest0.Ra() << "h " << dest0.Dec() << "\xb0" << endl; 1108 cout << "CalibPos: " << dest1.Ra() << "h " << dest1.Dec() << "\xb0" << endl; 1109 1110 RaDec dest[2] = { dest0, dest1 }; 1032 1111 1033 1112 fQueue->PostMsg(WM_TRACK, &dest, sizeof(dest)); … … 1036 1115 } 1037 1116 1038 void MGCosy::StartTrackPos( )1117 void MGCosy::StartTrackPos(Long_t mp1) 1039 1118 { 1040 1119 cout << "Start tracking Zd/Az pos." << endl; … … 1043 1122 1044 1123 ZdAz za(xy.X(), xy.Y()); 1124 1125 switch (mp1) 1126 { 1127 case kPB_ZDm: 1128 za.Zd(za.Zd()-360/16384.); 1129 break; 1130 case kPB_ZDp: 1131 za.Zd(za.Zd()+360/16384.); 1132 break; 1133 case kPB_AZm: 1134 za.Az(za.Az()-360/16384.); 1135 break; 1136 case kPB_AZp: 1137 za.Az(za.Az()+360/16384.); 1138 break; 1139 } 1045 1140 1046 1141 cout << za.Zd() << "\xb0 " << za.Az() << "\xb0" << endl; … … 1203 1298 return kTRUE; 1204 1299 case 1: 1205 StartTrack( );1300 StartTrack(true); 1206 1301 return kTRUE; 1207 1302 case 2: 1208 1303 fCRaDec->SetCoordinates(fCCalib->GetCoordinates()); 1304 StartTrack(false); 1209 1305 return kTRUE; 1210 1306 case 3: … … 1261 1357 break; 1262 1358 } 1263 RaDec dest(xy.X()*15., xy.Y()); // xy.X() [h]->[ø]1264 fQueue->PostMsg(WM_TRACK, &dest, sizeof(dest));1265 //fQueue->Proc(WM_NEWTRACK, &dest);1266 1359 fCRaDec->SetCoordinates(xy); 1267 1268 cout << "New Ra/Dec: " << dest.Ra() << "h " << dest.Dec() << "\xb0" << endl; 1360 StartTrack(false); 1361 /* 1362 RaDec dest(xy.X()*15., xy.Y()); // xy.X() [h]->[ø] 1363 fQueue->PostMsg(WM_TRACK, &dest, sizeof(dest)); 1364 //fQueue->Proc(WM_NEWTRACK, &dest); 1365 */ 1366 //cout << "New Ra/Dec: " << dest.Ra() << "h " << dest.Dec() << "\xb0" << endl; 1269 1367 } 1368 return kTRUE; 1369 1370 case kPB_ZDp: 1371 case kPB_ZDm: 1372 case kPB_AZp: 1373 case kPB_AZm: 1374 StartTrackPos(mp1); 1270 1375 return kTRUE; 1271 1376 -
trunk/MagicSoft/Cosy/gui/MGCosy.h
r2069 r2278 50 50 TGLabel *fLabel3; 51 51 52 TGLabel *fOffsetZd;53 TGLabel *fOffsetAz;52 // TGLabel *fOffsetZd; 53 // TGLabel *fOffsetAz; 54 54 55 55 TGLabel *fRaEst; … … 98 98 void CreateMenu(); 99 99 void CreateLabel(TGCompositeFrame *f); 100 void CreateTabs( TGTab *fTab);100 void CreateTabs(); 101 101 void CreatePredefinedPos(TGCompositeFrame *tf1); 102 void CreateStarList(TGCompositeFrame *tf1); 102 103 103 104 void StartPos(); 104 void StartTrack( );105 void StartTrackPos( );105 void StartTrack(bool track); 106 void StartTrackPos(Long_t mp1=0); 106 107 void StartDemo(); 107 108 //void StartCalib(); … … 110 111 void EnableLabel(TGLabel *label, Bool_t stat); 111 112 void SetLabelColor(TGLabel *label, Bool_t col); 112 void UpdateOffset(ZdAz &off);113 //void UpdateOffset(ZdAz &off); 113 114 void UpdateZdAz(ZdAz &off); 114 115 void UpdateRaDec(ZdAz &pos, double mjd, RaDec &radec); … … 127 128 TGTextView *GetLog() const { return fLog; } 128 129 129 void Update(ZdAz pos, ZdAz acc, ZdAz vel, ZdAz off,RaDec radec, ZdAz soll, UInt_t stat, UInt_t stat2);130 void Update(ZdAz pos, ZdAz acc, ZdAz vel, /*ZdAz off,*/ RaDec radec, ZdAz soll, UInt_t stat, UInt_t stat2); 130 131 131 132 Bool_t ProcessMessage(Long_t msg, Long_t mp1, Long_t mp2); -
trunk/MagicSoft/Cosy/gui/MGEmbeddedCanvas.cc
r1804 r2278 17 17 18 18 MGEmbeddedCanvas::MGEmbeddedCanvas(const char *name, const TGWindow* p, 19 const UInt_t width, Float_t range)19 UInt_t width, Double_t range) 20 20 : TRootEmbeddedCanvas(name, p, width+1, width+1, 0/*kRaisedFrame*/), 21 fModified(kFALSE), fWidth(width), fRange( range), fPix(2.*range/width)21 fModified(kFALSE), fWidth(width), fRange(fabs(range)), fPix(2.*fabs(range)/width) 22 22 { 23 23 #ifdef DEBUG … … 34 34 fCanvas->SetFillColor(39); // s. TAttFill 35 35 #ifdef DEBUG 36 cout << "MGEmbeddedCanvas : fRange=" << fRange<< endl;36 cout << "MGEmbeddedCanvas." << endl; 37 37 #endif 38 if (fRange>0) 39 38 39 fCanvas->Range(-fRange, -fRange, fRange, fRange); 40 40 41 41 fList = new TList; -
trunk/MagicSoft/Cosy/gui/MGEmbeddedCanvas.h
r1804 r2278 34 34 public: 35 35 MGEmbeddedCanvas(const char *name, const TGWindow* p, 36 const UInt_t width, const Float_t range);36 UInt_t width, Double_t range); 37 37 ~MGEmbeddedCanvas(); 38 38 -
trunk/MagicSoft/Cosy/gui/MGImage.cc
r1690 r2278 12 12 #include <pthread.h> 13 13 14 #include <X11/Xlib.h> 15 14 16 #include <TTimer.h> 15 17 #include <TSystem.h> … … 18 20 19 21 ClassImp(MGImage); 22 /* 23 class MyX11 : public TGX11 24 { 25 public: 26 Display *GetDisplay() { return fDisplay; } 27 Drawable GetRootWin() { return fRootWin; } 28 Drawable GetVisRootWin() { return fVisRootWin; } 29 Int_t GetDepth() { return fDepth; } 30 }; 31 */ 20 32 21 33 MGImage::MGImage(const TGWindow* p, UInt_t w, UInt_t h, UInt_t options, ULong_t back) … … 27 39 28 40 // 29 // Set Color Table (Gray scale)30 //31 const int cols = 0x100+4*4*4;32 33 for (int c=0; c<0x100; c++)34 sprintf(fColors[c], "%02x", c);35 36 //37 // create space for the pixmap buffer, initialize pointer to data area38 //39 fBuffer = new char*[1+cols+fHeight+1];40 fBody = &fBuffer[1+cols];41 42 //43 // fill buffer with header informations44 //45 fBuffer[0] = new char[14];46 sprintf(fBuffer[0], "%3d %3d %3d %1d", fWidth, fHeight, cols, 2);47 48 for (int k=0; k<0x100; k++)49 {50 const int l = k+1;51 fBuffer[l] = new char[13];52 fBuffer[l][0] = fColors[k][0];53 fBuffer[l][1] = fColors[k][1];54 fBuffer[l][2] = '\t';55 fBuffer[l][3] = 'c';56 fBuffer[l][4] = ' ';57 fBuffer[l][5] = '#';58 fBuffer[l][6] = fColors[k][0];59 fBuffer[l][7] = fColors[k][1];60 fBuffer[l][8] = fColors[k][0];61 fBuffer[l][9] = fColors[k][1];62 fBuffer[l][10] = fColors[k][0];63 fBuffer[l][11] = fColors[k][1];64 fBuffer[l][12] = '\0';65 }66 67 for (int b=0; b<4; b++)68 for (int g=0; g<4; g++)69 for (int r=0; r<4; r++)70 {71 const int nr = r+(g<<2)+(b<<4);72 const int l = 0x100+nr+1;73 74 fBuffer[l] = new char[13];75 fBuffer[l][0] = 'f'+nr/8+1;76 fBuffer[l][1] = 'f'+nr%8+1;77 fBuffer[l][2] = '\t';78 fBuffer[l][3] = 'c';79 fBuffer[l][4] = ' ';80 fBuffer[l][5] = '#';81 fBuffer[l][6] = fColors[r*85][0];82 fBuffer[l][7] = fColors[r*85][1];83 fBuffer[l][8] = fColors[g*85][0];84 fBuffer[l][9] = fColors[g*85][1];85 fBuffer[l][10] = fColors[b*85][0];86 fBuffer[l][11] = fColors[b*85][1];87 fBuffer[l][12] = '\0';88 }89 90 //91 // mark end of lines of the data area92 //93 for (UInt_t y=0; y<fHeight; y++)94 {95 fBody[y] = new char[fWidth*2+1];96 fBody[y][fWidth*2] = '\0';97 }98 //99 // mark end of buffer100 //101 fBuffer[1+cols+fHeight] = '\0';102 103 //104 // Create Default Graphic Context (XCreateGC)105 //106 fDefGC = gVirtualX->CreateGC(fId, 0); // GetBckgndGC().GetGC(); //107 108 //109 41 // Creat drawing semaphore 110 42 // … … 112 44 pthread_mutex_init((pthread_mutex_t*)fMuxPixmap, NULL); 113 45 114 //115 // create empty (black) pixmap116 // return (Pixmap_t) XCreatePixmap(fDisplay, (Drawable) id, w, h,117 // DefaultDepth(fDisplay, DefaultScreen(fDisplay)));118 //119 fPixmap = kNone; //@@@gVirtualX->CreatePixmap(fId, fWidth, fHeight);120 121 46 Resize(w, h); 122 47 123 //fTimer=new TTimer(Form("gClient->ProcessEventsFor((TGWindow*)0x%p);", this), 250, kTRUE); 124 // fTimer=new TTimer("printf(\"Timer!\\n\"); gSystem->ProcessEvents();", 250, kTRUE); 125 //fTimer->Start(); 126 } 127 128 void MGImage::Resize(UInt_t w, UInt_t h) 129 { 130 // TGFrame::Resize(w+2*GetBorderWidth(), h+2*GetBorderWidth()); 131 // FIXME: RESIZE THE PIXMAP 132 } 133 134 void MGImage::Resize(TGDimension size) 135 { 136 // TGFrame::Resize(size.fWidth+2*GetBorderWidth(), size.fHeight+2*GetBorderWidth()); 137 // FIXME: RESIZE THE PIXMAP 138 } 139 140 void MGImage::MoveResize(Int_t x, Int_t y, UInt_t w, UInt_t h) 141 { 142 // TGFrame::MoveResize(x, y, w+2*GetBorderWidth(), h+2*GetBorderWidth()); 143 // FIXME: RESIZE THE PIXMAP 48 // 49 // create empty pixmap 50 // 51 fPixmap = gVirtualX->CreatePixmap(fId, fWidth, fHeight); 52 fDefGC = gVirtualX->CreateGC(fId, 0); 53 fImage = (XImage*)gVirtualX->CreateImage(fWidth, fHeight); 144 54 } 145 55 146 56 MGImage::~MGImage() 147 57 { 148 //fTimer->Stop();149 //delete fTimer;150 151 58 pthread_mutex_lock((pthread_mutex_t*)fMuxPixmap); 152 59 153 cout << "Deleting fBuffer..." << endl;60 cout << "Deleting MGImage..." << endl; 154 61 155 char **b = fBuffer; 156 while (*b) 157 delete[] *b++; 158 delete[] fBuffer; 159 160 cout << "Deleting Pixmap..." << endl; 161 162 if (fPixmap!=kNone) // @@@ 163 { 164 cout << "Delete Pixmap" << endl; 165 gVirtualX->DeletePixmap(fPixmap); // XFreePixmap(fDisplay, (Pixmap) pmap); 166 } 167 168 cout << "Deleting GC..." << endl; 169 170 171 gVirtualX->DeleteGC(fDefGC); // XFreeGC(fDisplay, (GC) gc); 62 gVirtualX->DeletePixmap(fPixmap); 63 gVirtualX->DeleteGC(fDefGC); 64 gVirtualX->DeleteImage((Drawable_t)fImage); 172 65 173 66 pthread_mutex_destroy((pthread_mutex_t*)fMuxPixmap); … … 176 69 } 177 70 178 #include <X11/Xlib.h>179 /*180 #include <X11/Xutil.h>181 #include <X11/Intrinsic.h>182 XImage *fPix=NULL;183 */184 185 71 void MGImage::DoRedraw() 186 72 { 187 // TGFrame::DrawBorder();188 73 pthread_mutex_lock((pthread_mutex_t*)fMuxPixmap); 189 74 190 //=========================== 191 if (TestBit(kNeedRecreate)) 75 if (TestBit(kNeedRedraw)) 192 76 { 193 Pixmap_t mask = kNone; 194 PictureAttributes_t attr; 195 attr.fMask = kNone; 196 197 if (fPixmap!=kNone) 198 gVirtualX->DeletePixmap(fPixmap); 199 200 fPixmap=kNone; 201 202 if (!gVirtualX->CreatePictureFromData(fId, fBuffer, fPixmap, 203 mask, attr)) 204 { 205 cout << "Warning: Error in CreatePictureFromData" << endl; 206 fPixmap=kNone; 207 } 208 ResetBit(kNeedRecreate); 77 gVirtualX->PutImage(fId, fDefGC, (Drawable_t)fImage, 0, 0, 0, 0, fWidth, fHeight); 78 ResetBit(kNeedRedraw); 209 79 } 210 80 211 //===========================212 213 // Copy a drawable (i.e. pixmap) to another drawable (pixmap, window).214 // The graphics context gc will be used and the source will be copied215 // from src_x,src_y,src_x+width,src_y+height to dest_x,dest_y.216 // XCopyArea(fDisplay, src, dest, (GC) gc, src_x, src_y, width, height,217 // dest_x, dest_y);218 if (fPixmap!=kNone) //@@@219 {220 // gVirtualX->DrawString(fId, fDefGC, 20, 20, "HELLO WORLD!", 12);221 // gVirtualX->FillRectangle(fId, fDefGC, 10, 10, 50, 50);222 223 // cout << gVirtualX->IsA()->GetName() << endl;224 gVirtualX->CopyArea(fPixmap, fId, fDefGC,225 0, 0, fWidth, fHeight,226 GetBorderWidth(), GetBorderWidth());227 228 /*229 XCopyArea((Display*)gVirtualX->GetDisplay(), pm, fId,230 (GC)fDefGC, 0, 0, fWidth, fHeight,231 GetBorderWidth(), GetBorderWidth());232 */233 }234 /*235 if (fPix)236 {237 cout << "put" << flush;238 XPutImage((Display*)gVirtualX->GetDisplay(), fId,239 fDefGC, fPix,240 0, 0, GetBorderWidth(), GetBorderWidth(),241 fWidth, fHeight);242 243 cout << "done " << endl;244 }245 */246 81 pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap); 247 82 } 248 83 249 250 //#include <TGClient.h>251 84 void MGImage::DrawImg(const byte *buffer) 252 85 { … … 254 87 return; 255 88 256 for (UInt_t y=0; y<fHeight; y++) 89 char *d = fImage->data; 90 char *e = (char*)(buffer+fWidth*fHeight); 91 char *s = (char*)buffer; 92 93 // FIXME: This loop depends on the screen color depth 94 while (s<e) 257 95 { 258 for (UInt_t x=0; x<fWidth; x++) 259 { 260 const byte col = buffer[y*fWidth+x]; 261 262 fBody[y][x*2] = fColors[col][0]; 263 fBody[y][x*2+1] = fColors[col][1]; 264 } 96 *d++ = *s; 97 *d++ = *s; 98 *d++ = *s++; 99 d++; 265 100 } 266 101 267 /* 268 cout << "CreateImage" << flush; 269 if (!fPix) 270 { 271 Display *dsp = (Display*)gVirtualX->GetDisplay(); 272 Screen *scr = DefaultScreenOfDisplay(dsp); 273 Visual *vis = DefaultVisualOfScreen(scr); 102 SetBit(kNeedRedraw); 274 103 275 cout << vis->visualid << endl;276 cout << vis->c_class << endl;277 cout << vis->bits_per_rgb << endl;278 cout << vis->map_entries << endl;279 Visual visual;280 visual.c_class = StaticGray;281 282 int n;283 XPixmapFormatValues *fmt = XListPixmapFormats(dsp, &n);284 285 cout << "N: " << n << endl;286 for (int i=0; i<n; i++)287 {288 cout << fmt[i].dww.epth << " " << fmt[i].bits_per_pixel << " "289 << fmt[i].scanline_pad << endl;290 }291 292 Colormap colormap = XCreateColormap(dsp, fId, vis, AllocNone);293 294 for (int i=0; i<vis->map_entries; i++)295 {296 XColor color;297 char data[4];298 299 color.flags = DoRed | DoGreen | DoBlue;300 color.pixel = i;301 color.red = (256*i/vis->map_entries) << 8;302 color.green = (256*i/vis->map_entries) << 8;303 color.blue = (256*i/vis->map_entries) << 8;304 305 XAllocColor(dsp, colormap, &color);306 307 cout << color.pixel <<" " << flush;308 }309 fPix = XCreateImage(dsp, vis, 8, ZPixmap, 0,310 buffer, 768, 576, 32, 0);311 312 cout << "Colors" << visual.visualid << flush;313 314 }315 cout << "Done " << (void*)fPix << endl;316 */317 318 /*319 Pixmap_t mask = kNone;320 PictureAttributes_t attr;321 attr.fMask = kNone;322 if (fPixmap!=kNone) // @@@323 gVirtualX->DeletePixmap(fPixmap); // XFreePixmap(fDisplay, (Pixmap) pmap);324 325 // Create a pixture pixmap from data. The picture attributes326 // are used for input and output. Returns kTRUE in case of success,327 // kFALSE otherwise. If mask does not exist it is set to kNone.328 //329 // XpmAttributes xpmattr;330 //331 // MapPictureAttributes(attr, xpmattr);332 //333 // Int_t res = XpmCreatePixmapFromData(fDisplay, id, data, (Pixmap*)&pict,334 // (Pixmap*)&pict_mask, &xpmattr);335 //336 // MapPictureAttributes(attr, xpmattr, kFALSE);337 // XpmFreeAttributes(&xpmattr);338 //339 // if (res == XpmSuccess || res == XpmColorError)340 // return kTRUE;341 //342 // if (pict) {343 // XFreePixmap(fDisplay, (Pixmap)pict);344 // pict = kNone;345 // }346 // if (pict_mask) {347 // XFreePixmap(fDisplay, (Pixmap)pict_mask);348 // pict_mask = kNone;349 // }350 // return kFALSE;351 fPixmap=kNone;352 if (!gVirtualX->CreatePictureFromData(fId, fBuffer, fPixmap,353 mask, attr))354 {355 cout << "Warning: Error in CreatePictureFromData" << endl;356 fPixmap=kNone;357 }358 */359 SetBit(kNeedRecreate);360 104 pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap); 361 //gClient->NeedRedraw(this);362 //fTimer->Start(10, kTRUE);363 //gVirtualX->UpdateWindow(1);364 // ((TGX11*)gVirtualX)->Sync(1);365 //new TTimer(Form("gClient->ProcessEventsFor((TGWindow*)0x%p);", this), 1, kFALSE);366 // DoRedraw();367 105 } 368 106 … … 372 110 return; 373 111 374 for (UInt_t y=0; y<fHeight; y++) 112 char *d = fImage->data; 113 char *e = (char*)(gbuf+fWidth*fHeight); 114 char *s1 = (char*)gbuf; 115 char *s2 = (char*)cbuf; 116 117 // FROM libAfterImage: 118 // ------------------- 119 //#define ALPHA_TRANSPARENT 0x00 120 //#define ALPHA_SEMI_TRANSPARENT 0x7F 121 //#define ALPHA_SOLID 0xFF 122 // * Lowermost 8 bits - Blue channel 123 // * bits 8 to 15 - Green channel 124 // * bits 16 to 23 - Red channel 125 // * bits 24 to 31 - Alpha channel 126 //#define ARGB32_White 0xFFFFFFFF 127 //#define ARGB32_Black 0xFF000000 128 129 // FIXME: This loop depends on the screen color depth 130 while (s1<e) 375 131 { 376 for (UInt_t x=0; x<fWidth; x++)132 if (*s2) 377 133 { 378 const byte ccol = cbuf[y*fWidth+x];379 380 if (ccol)381 {382 fBody[y][x*2] = 'f'+ccol/8+1;383 fBody[y][x*2+1] = 'f'+ccol%8+1;384 }385 else386 {387 const byte gcol = gbuf[y*fWidth+x];388 fBody[y][x*2] = fColors[gcol][0];389 fBody[y][x*2+1] = fColors[gcol][1];390 }134 *d++ = ((*s2>>4)&0x3)*85; 135 *d++ = ((*s2>>2)&0x3)*85; 136 *d++ = ((*s2++ )&0x3)*85; 137 d++; 138 s1++; 139 } 140 else 141 { 142 *d++ = *s1; 143 *d++ = *s1; 144 *d++ = *s1++; 145 d++; 146 s2++; 391 147 } 392 148 } 393 /*394 Pixmap_t mask = kNone;395 PictureAttributes_t attr;396 attr.fMask = kNone;397 149 398 if (fPixmap!=kNone) 399 gVirtualX->DeletePixmap(fPixmap); 150 SetBit(kNeedRedraw); 400 151 401 fPixmap=kNone;402 403 if (!gVirtualX->CreatePictureFromData(fId, fBuffer, fPixmap,404 mask, attr))405 {406 cout << "Warning: Error in CreatePictureFromData" << endl;407 fPixmap=kNone;408 }409 */410 SetBit(kNeedRecreate);411 152 pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap); 412 //gClient->NeedRedraw(this);413 //fTimer->Start(10, kTRUE);414 //gVirtualX->UpdateWindow(1);415 // ((TGX11*)gVirtualX)->Sync(1);416 //new TTimer(Form("gClient->ProcessEventsFor((TGWindow*)0x%p);", this), 1, kFALSE);417 // DoRedraw();418 153 } 419 -
trunk/MagicSoft/Cosy/gui/MGImage.h
r1690 r2278 8 8 // Version: V1.0 (1-8-2000) 9 9 10 #ifndef ROOT_TGFrame 10 11 #include <TGFrame.h> 12 #endif 13 #ifndef ROOT_TGX11 14 #include <TGX11.h> 15 #endif 11 16 12 17 class TTimer; … … 16 21 class MGImage : public TGFrame 17 22 { 18 char fColors[0x100][3]; 19 20 char **fBuffer; 21 char **fBody; 23 XImage *fImage; 22 24 23 25 GContext_t fDefGC; … … 31 33 TTimer *fTimer; 32 34 33 enum { kNeedRe create= BIT(17) };35 enum { kNeedRedraw = BIT(17) }; 34 36 35 37 public: … … 38 40 39 41 void DoRedraw(); 40 41 void Resize(UInt_t w, UInt_t h);42 void Resize(TGDimension size);43 void MoveResize(Int_t x, Int_t y, UInt_t w, UInt_t h);44 42 45 43 void DrawImg(const byte *buffer); -
trunk/MagicSoft/Cosy/gui/MGSkyPosition.cc
r1804 r2278 69 69 InitArc(fSaturn, 1001, kYellow/*17*/, 16); 70 70 71 for (int i=0; i<1 3; i++)71 for (int i=0; i<14; i++) 72 72 { 73 73 fStars[i] = new TArc(0, 0, 1); … … 110 110 } 111 111 112 static const RaDec stars[1 3] =112 static const RaDec stars[14] = 113 113 { 114 114 // 32349 Sirius -1.44 1.45 2.64 0.009 A0m 115 (RaDec(Slalib::Hms2Rad( 6, 45, 0), Slalib::Dms2Rad(-16, 42,0))),115 (RaDec(Slalib::Hms2Rad( 6, 45, 0), Slalib::Dms2Rad(-16, 42, 0))), 116 116 // 30438 Canopus -0.62 -5.53 95.88 0.164 F0Ib 117 (RaDec(Slalib::Hms2Rad( 6, 23, 0), Slalib::Dms2Rad(-52, 41,0))),117 (RaDec(Slalib::Hms2Rad( 6, 23, 0), Slalib::Dms2Rad(-52, 41, 0))), 118 118 // 69673 Arcturus -0.05 -0.31 11.25 1.239 K2IIIp 119 (RaDec(Slalib::Hms2Rad( 14, 15, 0), Slalib::Dms2Rad( 19, 10, 0))), 120 (RaDec(Slalib::Hms2Rad( 01, 37, 6), Slalib::Dms2Rad(-57, 14, 0))), 121 (RaDec(Slalib::Hms2Rad( 12, 26, 6), Slalib::Dms2Rad(-63, 06, 0))), 122 (RaDec(Slalib::Hms2Rad( 13, 25, 2), Slalib::Dms2Rad(-11, 10, 0))), 123 (RaDec(Slalib::Hms2Rad( 5, 14, 0), Slalib::Dms2Rad(- 8, 12, 5))), 124 (RaDec(Slalib::Hms2Rad( 19, 50, 0), Slalib::Dms2Rad(- 8, 52, 6))), 125 (RaDec(Slalib::Hms2Rad( 18, 37, 0), Slalib::Dms2Rad( 38, 47, 0))), 126 (RaDec(Slalib::Hms2Rad( 5, 16, 0), Slalib::Dms2Rad( 46, 00, 0))), 127 (RaDec(Slalib::Hms2Rad( 7, 39, 0), Slalib::Dms2Rad( 5, 14, 0))), 128 (RaDec(Slalib::Hms2Rad( 5, 55, 0), Slalib::Dms2Rad( 7, 24, 0))), 129 (RaDec(Slalib::Hms2Rad( 19, 50, 0), Slalib::Dms2Rad( 8, 52, 0))) 119 (RaDec(Slalib::Hms2Rad( 14, 15, 0), Slalib::Dms2Rad( 19, 10, 0))), 120 // Vega 0.03 121 (RaDec(Slalib::Hms2Rad( 18, 37, 0), Slalib::Dms2Rad( 38, 47, 0))), 122 // Altair 0.77 123 (RaDec(Slalib::Hms2Rad( 19, 50, 0), Slalib::Dms2Rad( 8, 52, 6))), 124 // Antares 0.96 125 (RaDec(Slalib::Hms2Rad( 16, 29, 25), Slalib::Dms2Rad(-26, 25, 55))), 126 // Spica 0.98 127 (RaDec(Slalib::Hms2Rad( 13, 25, 13), Slalib::Dms2Rad(-11, 9, 41))), 128 // Deneb 1.25 129 (RaDec(Slalib::Hms2Rad( 20, 41, 26), Slalib::Dms2Rad( 45, 16, 49))), 130 (RaDec(Slalib::Hms2Rad( 1, 37, 6), Slalib::Dms2Rad(-57, 14, 0))), 131 (RaDec(Slalib::Hms2Rad( 12, 26, 6), Slalib::Dms2Rad(-63, 06, 0))), 132 (RaDec(Slalib::Hms2Rad( 5, 14, 0), Slalib::Dms2Rad(- 8, 12, 5))), 133 (RaDec(Slalib::Hms2Rad( 5, 16, 0), Slalib::Dms2Rad( 46, 00, 0))), 134 (RaDec(Slalib::Hms2Rad( 7, 39, 0), Slalib::Dms2Rad( 5, 14, 0))), 135 (RaDec(Slalib::Hms2Rad( 5, 55, 0), Slalib::Dms2Rad( 7, 24, 0))) 130 136 }; 131 137 132 138 void MGSkyPosition::UpdateStars() 133 139 { 134 for (int i=0; i<1 3; i++)140 for (int i=0; i<14; i++) 135 141 SetDot(fStars[i], stars[i], 0); 136 142 } … … 138 144 void MGSkyPosition::InitText() 139 145 { 140 fText = new TText(105, 105, ""); 141 //fText->SetFillStyle(4000); // transparent 142 fText->SetTextAlign(33); // right, top 143 fText->SetTextColor(10); // white 144 fText->Draw(); 145 146 fList->Add(fText); 146 fText1 = new TText(-105, 105, ""); 147 fText2 = new TText(105, 105, ""); 148 149 fText1->SetTextAlign(13); // left, top 150 fText2->SetTextAlign(33); // right, top 151 152 fText1->SetTextColor(10); // white 153 fText2->SetTextColor(10); // white 154 155 fText1->Draw(); 156 fText2->Draw(); 157 158 fList->Add(fText1); 159 fList->Add(fText2); 147 160 } 148 161 … … 339 352 340 353 char txt[100]; 341 sprintf(txt, "Zd=%s%d\xb0%02.1f'\nAz=%s%d\xb0%02.1f'", 342 x<0?"-":"", abs(xd), xm, y<0?"-":"", abs(yd), ym); 343 344 fText->SetText(fText->GetX(), fText->GetY(), txt); 354 sprintf(txt, "Zd=%s%d\xb0%02.1f'", x<0?"-":"", abs(xd), xm); 355 fText1->SetText(fText1->GetX(), fText1->GetY(), txt); 356 357 sprintf(txt, "Az=%s%d\xb0%02.1f'", y<0?"-":"", abs(yd), ym); 358 fText2->SetText(fText2->GetX(), fText2->GetY(), txt); 345 359 346 360 SetModified(); … … 379 393 return false; 380 394 381 x= -100;382 y= 395 x= 100; 396 y=-100; 383 397 } 384 398 -
trunk/MagicSoft/Cosy/gui/MGSkyPosition.h
r1804 r2278 35 35 TArc *fSaturn; 36 36 37 TArc *fStars[1 3];37 TArc *fStars[14]; 38 38 39 39 TArc *fSaturnRing; … … 47 47 TLine *fSunL[4]; 48 48 49 TText *fText; 49 TText *fText1; 50 TText *fText2; 50 51 51 52 SlaStars *fSlaStar; -
trunk/MagicSoft/Cosy/gui/MGVelocity.cc
r1702 r2278 24 24 void MGVelocity::DrawCoordinateSystem() 25 25 { 26 /*27 TArc arc;28 arc.SetFillStyle(4000); // transparent29 arc.SetFillColor(39);30 arc.SetLineColor(3); // green31 arc.SetLineStyle(2); // dashed (s. TAttLine)32 arc.DrawArc(0, 0, 20);33 34 arc.SetLineColor(5); // yellow35 arc.DrawArc(0, 0, 40);36 37 arc.SetLineColor(2); // red38 arc.DrawArc(0, 0, 60);39 */40 //41 // FIXME? Use TAxis?42 //43 /*44 TLine line;45 line.SetLineColor(13);46 line.SetLineStyle(3); // dotted (s. TAttLine)47 line.DrawLine(-30., -65., -30., 65.);48 line.DrawLine(-65., -30., 65., -30.);49 line.DrawLine( 30., -65., 30., 65.);50 line.DrawLine( -6., 30., 65., 30.);51 52 line.DrawLine(-15., -65., -15., 65.);53 line.DrawLine(-65., -15., 65., -15.);54 line.DrawLine( 15., -65., 15., 65.);55 line.DrawLine(-65., 15., 65., 15.);56 57 line.DrawLine(-45., -65., -45., 65.);58 line.DrawLine(-65., -45., 65., -45.);59 line.DrawLine( 45., -65., 45., 65.);60 line.DrawLine(-65., 45., 65., 45.);61 62 line.SetLineColor(12);63 line.SetLineStyle(2); // dashed (s. TAttLine)64 line.DrawLine(-60., -65., -60., 65.);65 line.DrawLine(-65., -60., 65., -60.);66 line.DrawLine( 60., -65., 60., 65.);67 line.DrawLine(-65., 60., 65., 60.);68 69 line.SetLineColor(1); // black70 line.SetLineStyle(1); // solid (s. TAttLine)71 line.DrawLine(-65., 0, 65., 0);72 line.DrawLine( 0, -65., 0, 65.);73 74 line.DrawLine(-1., 60., 1., 60.);75 line.DrawLine(-1., -60., 1., -60.);76 line.DrawLine(-1., 30., 1., 30.);77 line.DrawLine(-1., -30., 1., -30.);78 79 line.DrawLine( 60., -1., 60., 1.);80 line.DrawLine(-60., -1., -60., 1.);81 line.DrawLine( 30., -1., 30., 1.);82 line.DrawLine(-30., -1., -30., 1.);83 84 TText text;85 text.SetTextAlign(22); // centered, centered (s.TAttText)86 text.DrawText(60., 5., "vAz['/min]");87 text.DrawText(0, 70., "vZd['/min]");88 89 text.SetTextAlign(23); // centered, centered (s.TAttText)90 text.DrawText(-60., -2., "-1'");91 text.DrawText( 60., -2., "1'");92 text.DrawText(-30., -2., "-.5'");93 text.DrawText( 30., -2., ".5'");94 95 text.SetTextAlign(32); // centered, centered (s.TAttText)96 text.DrawText(-2., -60., "-1'");97 text.DrawText(-2., 60., "1'");98 text.DrawText(-2., -30., "-.5'");99 text.DrawText(-2., 30., ".5'");100 */101 26 TWbox box; 102 27 box.DrawWbox(-145, 145, -35, 120, 18, 2, 1); … … 130 55 void MGVelocity::InitVelocity() 131 56 { 132 /*133 fLin1 = new TLine(0, 0, 0, 0);134 fLin2 = new TLine(0, 0, 0, 0);135 136 fLin1->SetLineColor(10); // white (s. TAttFill)137 fLin2->SetLineColor(10); // white138 fLin1->SetLineStyle(1); // solid (s. TAttLine)139 fLin2->SetLineStyle(1);140 141 fLin1->Draw();142 fLin2->Draw();143 144 fList->Add(fLin1);145 fList->Add(fLin2);146 */147 57 fArrow = new TArrow(0, 0, 0, 0, 0.01); 148 58 fArrowX = new TArrow(0, 0, 0, 0, 0.01); … … 170 80 fText->Draw(); 171 81 fList->Add(fText); 172 173 fTextVel = new TText(2*70, 2*70, "");174 fTextVel->SetTextAlign(33); // right, top175 fTextVel->SetTextColor(10); // white176 fTextVel->Draw();177 fList->Add(fTextVel);178 82 } 179 83 … … 255 159 fArrowAvg->SetX2(avgx); 256 160 fArrowAvg->SetY2(avgy); 257 258 // cout << avgx << " " << avgy << endl;259 161 260 162 if ((fabs(avgx)>/*40.*/110. || fabs(avgy)>/*40.*/110.)) … … 274 176 } 275 177 276 void MGVelocity::UpdateVelText(Float_t vx, Float_t vy)277 {278 static int X = ~0;279 static int Y = ~0;280 281 vx /= 60.; //['/min]282 vy /= 60.; //['/min]283 284 int fx = (int)/*floor*/(vx*10.);285 int fy = (int)/*floor*/(vy*10.);286 287 if (X==fx && Y==fy)288 return;289 290 X = fx;291 Y = fy;292 293 char txt[100];294 sprintf(txt, "Zd=%.1f'\nAz=%.1f'",295 vy, vx);296 297 fTextVel->SetText(fTextVel->GetX(), fTextVel->GetY(), txt);298 }299 300 178 void MGVelocity::Update(ZdAz &zdaz) 301 179 { … … 303 181 // calculate actual time for planet positions 304 182 // 305 // static int X = 0xaffe;306 // static int Y = 0xaffe;307 308 183 float vx = zdaz.Az()*3600.; // ["/min] 309 184 float vy = zdaz.Zd()*3600.; // ["/min] 310 185 311 UpdateVelText(vx, vy);312 313 186 int pixx = (int)(vx*fScale/fPix); 314 187 int pixy = (int)(vy*fScale/fPix); … … 328 201 return; 329 202 330 // cout << fScale << ": " << pixx << " " << pixy;331 // cout << fScale << ": " << (int)rc << (int)((int)fOld->X()==pixx) << (int)((int)fOld->Y()==pixy) << " ";332 // cout << zdaz.Az()*3600. << " " << zdaz.Zd()*3600. << endl;333 334 203 vx *= fScale; 335 204 vy *= fScale; -
trunk/MagicSoft/Cosy/gui/MGVelocity.h
r1111 r2278 31 31 32 32 TText *fText; 33 TText *fTextVel;33 // TText *fTextVel; 34 34 35 35 XY *fOld; … … 44 44 void DrawCoordinateSystem(); 45 45 void UpdateText(); 46 void UpdateVelText(Float_t x, Float_t y);46 //void UpdateVelText(Float_t x, Float_t y); 47 47 48 48 public: -
trunk/MagicSoft/Cosy/gui/Makefile
r1819 r2278 32 32 .SUFFIXES: .c .cc .cxx .h .hxx .o 33 33 34 SRCFILES = MGCoordinate.cc \ 34 SRCFILES = MGCosy.cc \ 35 MGCoordinate.cc \ 35 36 MGCoordinates.cc \ 36 MGCosy.cc \37 37 MGImage.cc \ 38 38 MGEmbeddedCanvas.cc \ 39 39 MGAccuracy.cc \ 40 40 MGVelocity.cc \ 41 MGStarguider.cc \42 41 MGSkyPosition.cc \ 43 MGMenu.cc 44 42 MGMenu.cc 43 45 44 SRCS = $(SRCFILES) 46 45 HEADERS = $(SRCFILES:.cc=.h)
Note:
See TracChangeset
for help on using the changeset viewer.