Ignore:
Timestamp:
11/17/03 13:50:48 (21 years ago)
Author:
tbretz
Message:
*** empty log message ***
Location:
trunk/MagicSoft/Cosy/gui
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/MagicSoft/Cosy/gui/MGAccuracy.cc

    r2278 r2518  
    149149}
    150150
     151void MGAccuracy::InitBar()
     152{
     153    fBar = new TLine(0, 0, 0, 0);
     154    fBar->SetLineColor(kBlack);
     155    fBar->SetLineStyle(1);
     156    fBar->SetLineWidth(5);
     157    fBar->Draw();
     158
     159    fList->Add(fBar);
     160}
     161
    151162void MGAccuracy::InitCross()
    152163{
     
    176187    InitText();
    177188    InitCross();
     189    InitBar();
    178190
    179191    InitCanvas();
     
    215227    double dist = acos(d);
    216228
    217     dist *= 3600./d2r;
     229    dist *= 3600./d2r; // [min]
    218230
    219231    int rs = (int)floor(fmod(dist, 60.));
     232
    220233    dist /= 60.;
    221234    int rm = (int)dist;//floor(fmod(dist, 60.));
     
    225238
    226239    fTxt->SetText(fTxt->GetX(), fTxt->GetY(), txt);
     240
     241    fBar->SetX2(dist*60);
     242    if (dist*16384<1*360*60)
     243        fBar->SetLineColor(kGreen);
     244    else
     245        if (dist*16384<2*360*60)
     246            fBar->SetLineColor(kYellow);
     247        else
     248            fBar->SetLineColor(kRed);
    227249}
    228250
  • trunk/MagicSoft/Cosy/gui/MGAccuracy.h

    r1111 r2518  
    2424    TText  *fTxt;
    2525
     26    TLine  *fBar;
     27
    2628    void DrawCoordinateSystem();
    2729
    2830    void InitText();
    2931    void InitCross();
     32    void InitBar();
    3033
    3134    void UpdateText(Float_t zd, Float_t x, Float_t y);
  • trunk/MagicSoft/Cosy/gui/MGCosy.cc

    r2514 r2518  
    5353    kPB_CALCALTAZ,
    5454    kPB_TPOINT,
     55    kPB_ENDSWITCH,
    5556    kPB_START,
    5657    kPB_DISPLAY1,
     
    270271    fStopped->SetBackgroundColor(color);
    271272
    272     fError   ->Move(10, 25);
    273     fMoving  ->Move(10, 25+20);
    274     fTracking->Move(10, 25+40);
    275     fStopping->Move(10, 25+60);
    276     fStopped ->Move(10, 25+80);
    277     fAvailMac1->Move(10, 25+120);
    278     fAvailMac2->Move(10, 25+140);
     273    fError   ->MoveResize(10, 25, 60, 20);
     274    fMoving  ->MoveResize(10, 25+20, 60, 20);
     275    fTracking->MoveResize(10, 25+40, 60, 20);
     276    fStopping->MoveResize(10, 25+60, 60, 20);
     277    fStopped ->MoveResize(10, 25+80, 60, 20);
     278    fAvailMac1->MoveResize(10, 25+120, 60, 20);
     279    fAvailMac2->MoveResize(10, 25+140, 60, 20);
    279280    //fAvailMac3->Move(10, 25+160);
    280     fAvailSe1->Move(10, 25+180);
    281     fAvailSe2->Move(10, 25+200);
    282     fAvailSe3->Move(10, 25+220);
    283 
    284     fError   ->Resize(60, 20);
    285     fMoving  ->Resize(60, 20);
    286     fTracking->Resize(60, 20);
    287     fStopping->Resize(60, 20);
    288     fStopped ->Resize(60, 20);
    289     fAvailMac1->Resize(60, 20);
    290     fAvailMac2->Resize(60, 20);
    291     //fAvailMac3->Resize(60, 20);
    292     fAvailSe1->Resize(60, 20);
    293     fAvailSe2->Resize(60, 20);
    294     fAvailSe3->Resize(60, 20);
     281    fAvailSe1->MoveResize(10, 25+200, 60, 20);
     282    fAvailSe2->MoveResize(10, 25+220, 60, 20);
     283    fAvailSe3->MoveResize(10, 25+180, 60, 20);
    295284
    296285    fList->Add(fError);
     
    486475
    487476    but= new TGTextButton(tf2, "Ra -",  kPB_RAm);
    488     but->Resize(50, 25);
    489     but->Move(25, 210);
     477    but->MoveResize(25, 210, 50, 25);
    490478    but->SetToolTipText("Right ascension -= 1'");
    491479    but->Associate(this);
    492480    fList->Add(but);
    493481    but= new TGTextButton(tf2, "RA +",  kPB_RAp);
    494     but->Resize(50, 25);
    495     but->Move(90, 210);
     482    but->MoveResize(90, 210, 50, 25);
    496483    but->SetToolTipText("Right ascension += 1'");
    497484    but->Associate(this);
    498485    fList->Add(but);
    499486    but= new TGTextButton(tf2, "DEC +",  kPB_DECp);
    500     but->Resize(50, 25);
    501     but->Move(55, 185);
     487    but->MoveResize(55, 185, 50, 25);
    502488    but->SetToolTipText("Declination += 1'");
    503489    but->Associate(this);
    504490    fList->Add(but);
    505491    but= new TGTextButton(tf2, "DEC -",  kPB_DECm);
    506     but->Resize(50, 25);
    507     but->Move(55, 235);
     492    but->MoveResize(55, 235, 50, 25);
    508493    but->SetToolTipText("Declination -= 1'");
    509494    but->Associate(this);
     
    511496
    512497    but = new TGTextButton(tf1, "Move'n'Track", kPB_TRACKPOS);
    513     but->Resize(100, 25);
    514     but->Move(25, 242);
     498    but->MoveResize(25, 242, 100, 25);
    515499    but->SetToolTipText("Move telescope to a Zd/Az position and start tracking.");
    516500    but->Associate(this);
     
    518502
    519503    but= new TGTextButton(tf2, "Calc Zd/Az",  kPB_CALCALTAZ);
    520     but->Resize(80, 25);
    521     but->Move(165, 197);
     504    but->MoveResize(165, 197, 80, 25);
    522505    but->SetToolTipText("Calculate Zd/Az corresponding to Ra/Dec.");
    523506    but->Associate(this);
     
    525508
    526509    but = new TGTextButton(tf4, "TPoint", kPB_TPOINT);
    527     but->Resize(50, 25);
    528     but->Move(176/*231*/, 213);
     510    but->MoveResize(139, 213, 62, 25);
    529511    but->SetToolTipText("Trigger writing a tpoint coordinate pair.");
     512    but->Associate(this);
     513    fList->Add(but);
     514
     515    but = new TGTextButton(tf4, "Endswitch", kPB_ENDSWITCH);
     516    but->MoveResize(204, 213, 62, 25);
     517    but->SetToolTipText("Print coordinates in 'Endswitch-Position' units.");
    530518    but->Associate(this);
    531519    fList->Add(but);
     
    533521#ifdef EXPERT
    534522    but= new TGTextButton(tf1, "New Position",  kPB_SavePreDef);
    535     but->Resize(80, 25);
    536     but->Move(165, 197);
     523    but->MoveResize(165, 197, 80, 25);
    537524    but->SetToolTipText("Save new predefined position.");
    538525    but->Associate(this);
     
    540527
    541528    but= new TGTextButton(tf4, "New", kPB_SaveStar);
    542     but->Resize(60, 23);
    543     but->Move(211, 69);
     529    but->MoveResize(211, 69, 60, 23);
    544530    but->SetToolTipText("Save new Source position.");
    545531    but->Associate(this);
     
    547533
    548534    but = new TGTextButton(tf5, "Display", kPB_DISPLAY1);
    549     but->Resize(80, 25);
    550     but->Move(160, 197);
     535    but->MoveResize(160, 197, 80, 25);
    551536    but->SetToolTipText("Display Histogram.");
    552537    but->Associate(this);
     
    554539
    555540    but = new TGTextButton(tf6, "Display", kPB_DISPLAY2);
    556     but->Resize(80, 25);
    557     but->Move(160, 197);
     541    but->MoveResize(160, 197, 80, 25);
    558542    but->SetToolTipText("Display Histogram.");
    559543    but->Associate(this);
     
    561545
    562546    but = new TGTextButton(tf4, "Load", kPB_LoadBending);
    563     but->Resize(50, 25);
    564     but->Move(151, 185);
     547    but->ResizeMove(151, 185, 50, 25);
    565548    but->SetToolTipText("Load bending corrections from file 'bending.txt'");
    566549    but->Associate(this);
     
    568551
    569552    but = new TGTextButton(tf4, "Reset", kPB_ResetBending);
    570     but->Resize(50, 25);
    571     but->Move(206, 185);
     553    but->MoveResize(206, 185, 50, 25);
    572554    but->SetToolTipText("Reset bending correction (coefficients=0)");
    573555    but->Associate(this);
     
    575557
    576558    but= new TGTextButton(tf4, "Zd -",  kPB_ZDm);
    577     but->Resize(50, 25);
    578     but->Move(25, 210);
     559    but->MoveResize(25, 210, 50, 25);
    579560    but->SetToolTipText("Zenith Distance -= 1SE");
    580561    but->Associate(this);
    581562    fList->Add(but);
    582563    but= new TGTextButton(tf4, "Zd +",  kPB_ZDp);
    583     but->Resize(50, 25);
    584     but->Move(90, 210);
     564    but->MoveResize(90, 210, 50, 25);
    585565    but->SetToolTipText("Zenith Distance += 1SE");
    586566    but->Associate(this);
    587567    fList->Add(but);
    588568    but= new TGTextButton(tf4, "Az +",  kPB_AZp);
    589     but->Resize(50, 25);
    590     but->Move(55, 185);
     569    but->MoveResize(55, 185, 50, 25);
    591570    but->SetToolTipText("Azimuth += 1SE");
    592571    but->Associate(this);
    593572    fList->Add(but);
    594573    but= new TGTextButton(tf4, "Az -",  kPB_AZm);
    595     but->Resize(50, 25);
    596     but->Move(55, 235);
     574    but->MoveResize(55, 235, 50, 25);
    597575    but->SetToolTipText("Azimuth -= 1SE");
    598576    but->Associate(this);
     
    605583    gClient->GetColorByName("Green", color);
    606584    but->SetBackgroundColor(color);
    607     but->Move(147, 295);
    608     but->Resize(62, 25);
     585    but->MoveResize(147, 295, 62, 25);
    609586    but->SetToolTipText("Start a telescope movement.");
    610587    fList->Add(but);
     
    614591    gClient->GetColorByName("Red", color);
    615592    but->SetBackgroundColor(color);
    616     but->Move(212, 295);
    617     but->Resize(62, 25);
     593    but->MoveResize(212, 295, 62, 25);
    618594    but->SetToolTipText("Stop any movement of telescope.");
    619595    fList->Add(but);
     
    989965void MGCosy::UpdateZdAz(ZdAz &soll)
    990966{
    991     soll *= kRad2Deg;
    992 
    993967    static Int_t zd=~0;
    994968    static Int_t az=~0;
     
    996970    char text[21];
    997971
    998     ZdAz test = soll*600;
    999 
     972    UShort_t z, a;
     973    Double_t zm, am;
     974    Char_t   sz, sa;
     975
     976    Slalib::Rad2Dm(soll.Zd(), sz, z, zm);
     977    Slalib::Rad2Dm(soll.Az(), sa, a, am);
     978
     979    const ZdAz test = soll*kRad2Deg*600;
    1000980    if (zd!=(int)test.Zd())
    1001981    {
    1002982        zd = (int)test.Zd();
    1003         sprintf(text, "%c%dd %.1fm", soll.Zd()<0?'-':'+', abs((int)soll.Zd()), 0.1*(abs((int)test.Zd())%600));
     983        sprintf(text, "%c%dd %.1fm", sz, z, zm);
    1004984        fZdSoll->SetText(new TGString(text));
    1005985    }
     
    1007987    {
    1008988        az = (int)test.Az();
    1009         sprintf(text, "%c%dd %.1fm", soll.Az()<0?'-':'+' , abs((int)soll.Az()), 0.1*(abs((int)test.Az())%600));
     989        sprintf(text, "%c%dd %.1fm", sa, a, am);
    1010990        fAzSoll->SetText(new TGString(text));
    1011991    }
     
    11131093    // TGMainFrame::CloseWindow();
    11141094    cout << "Closing window - waiting until all nodes are stopped." << endl;
    1115     fQueue->PostMsg(WM_QUIT, 0, 0);
     1095    fQueue->PostMsg(WM_QUIT);
    11161096    cout << "Closing window - done." << endl;
    11171097    // gApplication->Terminate(0);
     
    13761356                StopDemo();
    13771357#endif
    1378                 fQueue->PostMsg(WM_STOP, 0, 0);
     1358                fQueue->PostMsg(WM_STOP);
    13791359                if (fTab->GetCurrent()==3)
    1380                     fQueue->Proc(WM_TESTSE, NULL);
     1360                    fQueue->Proc(WM_TESTSE);
    13811361                if (fTab->GetCurrent()==4)
    1382                     fQueue->Proc(WM_GEAR, NULL);
     1362                    fQueue->Proc(WM_GEAR);
    13831363                cout << "PostMsg (WM_Stop) returned." << endl;
    13841364                return kTRUE;
     
    14581438                StartTPoint();
    14591439                return kTRUE;
     1440
     1441            case kPB_ENDSWITCH:
     1442                fQueue->Proc(WM_ENDSWITCH);
     1443                return kTRUE;
    14601444                /*
    14611445            case kPB_CALIBSE:
     
    14641448                */
    14651449            case kPB_LoadBending:
    1466                 fQueue->Proc(WM_LOADBENDING, NULL);
     1450                fQueue->Proc(WM_LOADBENDING);
    14671451                return kTRUE;
    14681452            case kPB_ResetBending:
    1469                 fQueue->Proc(WM_RESETBENDING, NULL);
     1453                fQueue->Proc(WM_RESETBENDING);
    14701454                return kTRUE;
    14711455                /*
     
    14791463            case kPB_DISPLAY1:
    14801464            case kPB_DISPLAY2:
    1481                 fQueue->PostMsg(WM_DISPLAY, 0, 0);
     1465                fQueue->PostMsg(WM_DISPLAY);
    14821466                return kTRUE;
    14831467
     
    14931477            case IDM_EXIT:
    14941478                cout << "IDM_EXIT: Posting WM_QUIT." << endl;
    1495                 fQueue->PostMsg(WM_QUIT, 0, 0);
     1479                fQueue->PostMsg(WM_QUIT);
    14961480                cout << "IDM_EXIT: WM_QUIT done." << endl;
    14971481                //cout << "Idm_Exit." << endl;
  • trunk/MagicSoft/Cosy/gui/MGImage.cc

    r2514 r2518  
    99#include "MGImage.h"
    1010
    11 #include <iostream.h>
    12 #include <pthread.h>
    13 
    14 #include <X11/Xlib.h>
    15 
    16 #include <TTimer.h>
    17 #include <TSystem.h>
    18 #include <TVirtualX.h>
     11#include <iostream>
     12
    1913#include <TGX11.h>
     14#include <TMutex.h>
    2015
    2116ClassImp(MGImage);
     17
     18using namespace std;
    2219/*
    2320class MyX11 : public TGX11
     
    4138    // Creat drawing semaphore
    4239    //
    43     fMuxPixmap = new pthread_mutex_t;
    44     pthread_mutex_init((pthread_mutex_t*)fMuxPixmap, NULL);
     40    fMuxPixmap = new TMutex;
    4541
    4642    Resize(w, h);
     
    5854MGImage::~MGImage()
    5955{
    60     pthread_mutex_lock((pthread_mutex_t*)fMuxPixmap);
     56    fMuxPixmap->Lock();
    6157
    6258    cout << "Deleting MGImage..." << endl;
     
    6662    gVirtualX->DeleteImage((Drawable_t)fImage);
    6763
    68     pthread_mutex_destroy((pthread_mutex_t*)fMuxPixmap);
     64    delete fMuxPixmap;
    6965
    7066    cout << "MGImage destroyed." << endl;
     
    7369void MGImage::DoRedraw()
    7470{
    75     pthread_mutex_lock((pthread_mutex_t*)fMuxPixmap);
     71    fMuxPixmap->Lock();
    7672
    7773    if (TestBit(kNeedRedraw))
     
    8177    }
    8278
    83     pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap);
     79    fMuxPixmap->UnLock();
    8480}
    8581
     
    9187    while (s<e)
    9288    {
     89        //      11111100    11111000      11111100
    9390        *d++ = (*s&0xfc) | (*s&0xf8)<<5 | (*s&0xfc)<<11;
    9491        s++;
     
    107104        *d++ = *s++;
    108105        d++;
     106    }
     107}
     108
     109void MGImage::DrawImg(const byte *buffer)
     110{
     111    if (fMuxPixmap->TryLock()==13)
     112        return;
     113
     114    switch (gVirtualX->GetDepth())
     115    {
     116    case 8:
     117        memcpy(fImage->data, buffer, fWidth*fHeight);
     118        break;
     119    case 16:
     120        DrawImg16((unsigned short*)fImage->data, (char*)buffer, (char*)(buffer+fWidth*fHeight));
     121        break;
     122    case 24:
     123        DrawImg24(fImage->data, (char*)buffer, (char*)(buffer+fWidth*fHeight));
     124        break;
     125    default:
     126        cout << "Sorry, " << gVirtualX->GetDepth() << "bit color depth not yet implemented." << endl;
     127    }
     128
     129    SetBit(kNeedRedraw);
     130
     131    fMuxPixmap->UnLock();
     132}
     133
     134void MGImage::DrawColImg16(unsigned short *d, char *s1, char *s2, char *e)
     135{
     136    // d=destination, s1=source1, s2=source2, e=end
     137    // d:  rrrrrggg gggbbbbb
     138    // s2:          00rrggbb
     139    //
     140    while (s1<e)
     141    {
     142        if (*s2)
     143        {   
     144            //      00000011   00001100        00110000
     145            *d++ = (*s2&0x3) | (*s2&0xb)<<3 | (*s2&0x30)<<7;
     146            s1++;
     147        }
     148        else
     149        {
     150            //      11111100     11111000        11111100
     151            *d++ = (*s1&0xfc) | (*s1&0xf8)<<5 | (*s1&0xfc)<<11;
     152            s2++;
     153        }
    109154    }
    110155}
     
    134179}
    135180
    136 void MGImage::DrawImg(const byte *buffer)
    137 {
    138     if (pthread_mutex_trylock((pthread_mutex_t*)fMuxPixmap))
    139         return;
    140 
    141     switch (gVirtualX->GetDepth())
    142     {
    143     case 8:
    144         memcpy(fImage->data, buffer, fWidth*fHeight);
    145         break;
    146     case 16:
    147         DrawImg16((unsigned short*)fImage->data, (char*)buffer, (char*)(buffer+fWidth*fHeight));
    148         break;
    149     case 24:
    150         DrawImg24(fImage->data, (char*)buffer, (char*)(buffer+fWidth*fHeight));
    151         break;
    152     default:
    153         cout << "Sorry, " << gVirtualX->GetDepth() << "bit color depth not yet implemented." << endl;
    154     }
    155 
    156     SetBit(kNeedRedraw);
    157 
    158     pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap);
    159 }
    160 
    161181void MGImage::DrawColImg(const byte *gbuf, const byte *cbuf)
    162182{
    163     if (pthread_mutex_trylock((pthread_mutex_t*)fMuxPixmap))
     183    if (fMuxPixmap->TryLock()==13)
    164184        return;
    165185
     
    179199    switch (gVirtualX->GetDepth())
    180200    {
     201    case 16:
     202        DrawColImg16((unsigned short*)fImage->data, (char*)gbuf, (char*)cbuf, (char*)(gbuf+fWidth*fHeight));
     203        break;
    181204    case 24:
    182         DrawColImg32(fImage->data, (char*)gbuf, (char*)cbuf, (char*)(gbuf+fWidth*fHeight));
     205        DrawColImg24(fImage->data, (char*)gbuf, (char*)cbuf, (char*)(gbuf+fWidth*fHeight));
    183206        break;
    184207    default:
     
    188211    SetBit(kNeedRedraw);
    189212
    190     pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap);
    191 }
     213    fMuxPixmap->UnLock();
     214}
  • trunk/MagicSoft/Cosy/gui/MGImage.h

    r2514 r2518  
    1515#endif
    1616
    17 class TTimer;
     17class TMutex;
    1818
    1919typedef unsigned char byte;
     
    2929    UInt_t fHeight;
    3030
    31     void *fMuxPixmap; //! test
    32 
    33     TTimer *fTimer;
     31    TMutex *fMuxPixmap; //! test
    3432
    3533    enum { kNeedRedraw = BIT(17) };
     
    3735    void DrawImg16(unsigned short *d, char *s, char *e);
    3836    void DrawImg24(char *d, char *s, char *e);
     37    void DrawColImg16(unsigned short *d, char *s1, char *s2, char *e);
    3938    void DrawColImg24(char *d, char *s1, char *s2, char *e);
    4039
Note: See TracChangeset for help on using the changeset viewer.