Ignore:
Timestamp:
12/18/02 17:48:44 (22 years ago)
Author:
tbretz
Message:
*** empty log message ***
File:
1 edited

Legend:

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

    r1343 r1690  
    1111#include <iostream.h>
    1212#include <pthread.h>
     13
     14#include <TTimer.h>
     15#include <TSystem.h>
     16#include <TVirtualX.h>
     17#include <TGX11.h>
    1318
    1419ClassImp(MGImage);
     
    97102
    98103    //
    99     // get frame id
    100     //
    101     fId = GetId();
    102 
    103     //
    104104    // Create Default Graphic Context (XCreateGC)
    105105    //
    106     fDefGC = gVirtualX->CreateGC(fId, 0); // GetBckgndGC(); //
     106    fDefGC = gVirtualX->CreateGC(fId, 0); // GetBckgndGC().GetGC(); //
    107107
    108108    //
     
    120120
    121121    Resize(w, h);
     122
     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();
    122126}
    123127
    124128void MGImage::Resize(UInt_t w, UInt_t h)
    125129{
    126     TGFrame::Resize(w+2*GetBorderWidth(), h+2*GetBorderWidth());
     130//    TGFrame::Resize(w+2*GetBorderWidth(), h+2*GetBorderWidth());
    127131    // FIXME: RESIZE THE PIXMAP
    128132}
     
    130134void MGImage::Resize(TGDimension size)
    131135{
    132     TGFrame::Resize(size.fWidth+2*GetBorderWidth(), size.fHeight+2*GetBorderWidth());
     136//    TGFrame::Resize(size.fWidth+2*GetBorderWidth(), size.fHeight+2*GetBorderWidth());
    133137    // FIXME: RESIZE THE PIXMAP
    134138}
     
    136140void MGImage::MoveResize(Int_t x, Int_t y, UInt_t w, UInt_t h)
    137141{
    138    TGFrame::MoveResize(x, y, w+2*GetBorderWidth(), h+2*GetBorderWidth());
     142//   TGFrame::MoveResize(x, y, w+2*GetBorderWidth(), h+2*GetBorderWidth());
    139143   // FIXME: RESIZE THE PIXMAP
    140144}
     
    142146MGImage::~MGImage()
    143147{
     148    //fTimer->Stop();
     149    //delete fTimer;
     150
    144151    pthread_mutex_lock((pthread_mutex_t*)fMuxPixmap);
    145152
     
    154161
    155162    if (fPixmap!=kNone) // @@@
     163    {
     164        cout << "Delete Pixmap" << endl;
    156165        gVirtualX->DeletePixmap(fPixmap);  // XFreePixmap(fDisplay, (Pixmap) pmap);
     166    }
    157167
    158168    cout << "Deleting GC..." << endl;
    159169
     170
    160171    gVirtualX->DeleteGC(fDefGC);       // XFreeGC(fDisplay, (GC) gc);
    161172
     
    165176}
    166177
     178#include <X11/Xlib.h>
    167179/*
    168 #include <X11/Xlib.h>
    169180#include <X11/Xutil.h>
    170181#include <X11/Intrinsic.h>
     
    174185void MGImage::DoRedraw()
    175186{
    176     // Pixmap_t pm = gVirtualX->CreatePixmap(this->GetId(), buffer,
    177     //                                       768, 576, 0, 0xff, 8);
    178     TGFrame::DrawBorder();
     187//    TGFrame::DrawBorder();
    179188    pthread_mutex_lock((pthread_mutex_t*)fMuxPixmap);
     189
     190    //===========================
     191    if (TestBit(kNeedRecreate))
     192    {
     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);
     209    }
     210
     211    //===========================
    180212
    181213    // Copy a drawable (i.e. pixmap) to another drawable (pixmap, window).
     
    185217    //           dest_x, dest_y);
    186218    if (fPixmap!=kNone) //@@@
    187     gVirtualX->CopyArea(fPixmap, fId, fDefGC,
    188                         0, 0, fWidth, fHeight,
    189                         GetBorderWidth(), GetBorderWidth());
     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    }
    190234/*
    191235     if (fPix)
     
    271315    cout << "Done " << (void*)fPix << endl;
    272316    */
     317
     318/*
    273319    Pixmap_t mask = kNone;
    274320    PictureAttributes_t attr;
    275321    attr.fMask = kNone;
    276322    if (fPixmap!=kNone) // @@@
    277     gVirtualX->DeletePixmap(fPixmap); // XFreePixmap(fDisplay, (Pixmap) pmap);
     323        gVirtualX->DeletePixmap(fPixmap); // XFreePixmap(fDisplay, (Pixmap) pmap);
    278324
    279325    // Create a pixture pixmap from data. The picture attributes
     
    310356        fPixmap=kNone;
    311357    }
    312 
     358*/
     359    SetBit(kNeedRecreate);
    313360    pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap);
    314     DoRedraw();
     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();
    315367}
    316368
     
    339391        }
    340392    }
    341 
     393/*
    342394    Pixmap_t mask = kNone;
    343395    PictureAttributes_t attr;
     
    346398    if (fPixmap!=kNone)
    347399        gVirtualX->DeletePixmap(fPixmap);
     400
    348401    fPixmap=kNone;
    349402
     
    354407        fPixmap=kNone;
    355408    }
    356 
     409    */
     410    SetBit(kNeedRecreate);
    357411    pthread_mutex_unlock((pthread_mutex_t*)fMuxPixmap);
    358     DoRedraw();
    359 }
    360 
     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}
     419
Note: See TracChangeset for help on using the changeset viewer.