Changeset 180 in Sophya for trunk/SophyaPI


Ignore:
Timestamp:
Dec 24, 1998, 5:03:22 PM (27 years ago)
Author:
ercodmgr
Message:

Modifs divers - test/debug PIEventHandler et PIScreenBuffer - Reza 24/12/98

Location:
trunk/SophyaPI/PI
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PI/pibwdggen.cc

    r163 r180  
    6666// PIPointer  GetPointerShape()
    6767//      Renvoie la forme du pointeur
    68 // void  Refresh()
    69 //      L'appel à cette méthode permet de retracer le contenu de la
    70 //      fenêtre et des "Drawer" associés.
    7168//--
    7269
     
    115112 
    116113
    117 /* --Methode-- */
     114/* --Methode--
    118115void PIBaseWdgGen::Refresh()
    119116{
     
    124121return;
    125122}
    126 
     123*/
    127124
    128125//++
  • trunk/SophyaPI/PI/pibwdggen.h

    r170 r180  
    5555  virtual PIPointer  GetPointerShape()                                       = 0;
    5656  virtual void       AssignKeyboard()                                        = 0;
    57 
    58 //  Fonction qui doit etre appelee pour rafraichir la fenetre
    59   virtual void       Refresh();
    6057
    6158//  Fonctions qui doivent contenir le dessin du contenu du widget lui-meme
  • trunk/SophyaPI/PI/pibwdgx.cc

    r158 r180  
    106106
    107107/* --Methode-- */
     108void PIBaseWdgX::Refresh()
     109{
     110if ( IsVisible() )  {
     111//  EraseWindow();   --> Ne pas faire  Reza 12/98
     112  Draw(mWGrC, 0, 0, XSize(), YSize());
     113  CallDrawers(mWGrC);
     114  CallDrawHandlers(0, 0, XSize(), YSize());
     115  }
     116return;
     117}
     118
     119
     120/* --Methode-- */
    108121void PIBaseWdgX::ActivatePtrCross()
    109122{
  • trunk/SophyaPI/PI/pibwdgx.h

    r158 r180  
    4646  virtual bool       IsVisible();
    4747
     48//  Fonction qui doit etre appelee pour rafraichir la fenetre
     49  virtual void       Refresh();
     50
    4851//  Appel depuis le PIXtBaseWidget uniquement (ExposeEvt de Xt )
    4952  virtual void       eXposeProcess(int x0, int y0, int dx, int dy);
  • trunk/SophyaPI/PI/pigraphgen.cc

    r173 r180  
    3636//      Constructeur pour les *PIGraphicWin*. Objet "PIGraphic" capable
    3737//      de tracer dans un "PIWdg".
    38 // PIGraphic(PIGraphicBuffer* grb)
     38// PIGraphic(PIScreenBuffer* grb)
    3939//      Constructeur pour objet "PIGraphic" capable de tracer dans un
    4040//      buffer graphique.
     
    4747//      Renvoie le type de l'objet "PIGraphic" .
    4848//      * PI_UnknownGraphics : Objet PIGraphic de type inconnue.
    49 //      * PI_GrBufferGraphics : Objet PIGraphic associé à un "GraphicBuffer"
     49//      * PI_ScrBufferGraphics : Objet PIGraphic associé à un "GraphicBuffer"
    5050//      * PI_ScrWindowGraphics : Objet PIGraphic associé à une fenêtre sur l'écran (PIWdg)
    5151//      * PI_PSFileGraphics : Objet PIGraphic à un fichier PostScript (pour impression papier)
     
    7676
    7777/* --Methode-- */
    78 PIGraphicGen::PIGraphicGen(PIGraphicBuffer* grb)
     78PIGraphicGen::PIGraphicGen(PIScreenBuffer* grb)
    7979{
    8080myWdg = NULL;
  • trunk/SophyaPI/PI/pigraphgen.h

    r173 r180  
    6262
    6363enum PIGraphicsType { PI_UnknownGraphics = 0,
    64                       PI_ScrWindowGraphics = 2, PI_GrBufferGraphics = 3,
     64                      PI_ScrWindowGraphics = 2, PI_ScrBufferGraphics = 3,
    6565                      PI_PSFileGraphics = 8,
    6666                      PI_UCGraphics = 32, PI_3DGraphics = 36 };
     
    7373                     PIGraphicGen();
    7474                     PIGraphicGen(PIWdg* wdg);
    75                      PIGraphicGen(PIGraphicBuffer* grb);
     75                     PIGraphicGen(PIScreenBuffer* grb);
    7676  virtual           ~PIGraphicGen();
    7777
     
    139139// Pour Save/Restore des attributs graphiques
    140140  PIWdg* myWdg;
    141   PIGraphicBuffer* myGrb;
     141  PIScreenBuffer* myGrb;
    142142
    143143  PIColors  sFCol, sBCol;
  • trunk/SophyaPI/PI/pigraphx.cc

    r173 r180  
    5050
    5151/* --Methode-- */
    52 PIGraphicX::PIGraphicX(PIGraphicBuffer* grb)
     52PIGraphicX::PIGraphicX(PIScreenBuffer* grb)
    5353: PIGraphicGen(grb)
    5454{
     
    5656
    5757mDisp = PIXDisplay();       // Structure Display X associe
    58 mWId = grb->XGrBuffer();
     58mWId = grb->XScrBuffer();
    5959
    6060XGCValues  xgv;
     
    9191{
    9292if (myWdg != NULL) return (PI_ScrWindowGraphics);
    93 else if (myGrb != NULL) return (PI_GrBufferGraphics);
     93else if (myGrb != NULL) return (PI_ScrBufferGraphics);
    9494else return(PI_UnknownGraphics);
    9595}
  • trunk/SophyaPI/PI/pigraphx.h

    r173 r180  
    1414public:
    1515                     PIGraphicX(PIWdg* wdg);
    16                      PIGraphicX(PIGraphicBuffer* grb);
     16                     PIGraphicX(PIScreenBuffer* grb);
    1717  virtual           ~PIGraphicX();
    1818
  • trunk/SophyaPI/PI/pimsghandler.h

    r110 r180  
    55
    66#include <stdlib.h>
     7
     8#include "defs.h"
    79
    810enum {
  • trunk/SophyaPI/PI/piscdrawwdg.h

    r162 r180  
    3838
    3939  int                AddScDrawer(PIDrawer*, bool ad=false);   // Ajoute un Drawer en auto
    40   inline PIDrawer*  BaseDrawer() { return mBDrw; };
     40  inline PIElDrawer* BaseDrawer() { return mBDrw; };
    4141
    4242  float XMin() const {return mBDrw->XMin();}
  • trunk/SophyaPI/PI/pisurfdr.cc

    r170 r180  
    9898//  g3->SelForeground(PI_White);
    9999  g3->SelBackground(PI_White);
    100   g3->Erase(xmin, ymin, xmax-xmin, ymax-ymin);
     100//  g3->Erase(xmin, ymin, xmax-xmin, ymax-ymin);
    101101
    102102  int xsz = mArr->XSize();
  • trunk/SophyaPI/PI/piwdggen.cc

    r173 r180  
    9191// bool  IfSensitive()
    9292//      indique si l'objet est répond aux sollicitations utilisateur.
     93//--
     94
     95//++
     96// Titre        Rafraîchissement de la fenêtre
     97//--
     98//++
     99// void  Refresh()
     100//      L'appel à cette méthode permet de retracer le contenu de la
     101//      fenêtre et des "Drawer" associés.
    93102//--
    94103
     
    237246//      La méthode "Draw(PIGraphic* g, ...)" sera appelé pour rafraîchir le contenu de la fenêtre.
    238247// void RemoveDrawHandler(PIEventHandler* drwh)
    239 //      Suppression d'un objet gestionnaire de tracé.
     248//      Suppression d'un objet gestionnaire de tracé. Toutes les réferences sonnt supprimées en cas
     249//      d' enregistrement multiple.
    240250// void AddEventHandler(PIEventHandler* evh, unsigned long evtmask, bool ad=false)
    241251//      Ajout d'un objet gestionnaire d'événements. La variable "evtmask" détermine pour
     
    248258//
    249259// void RemoveEventHandler(PIEventHandler* evh)
    250 //      Suppression d'un gestionnaire d'événements.
     260//      Suppression d'un gestionnaire d'événements. Toutes les réferences sonnt supprimées en cas
     261//      d' enregistrement multiple, même avec différents masques d'événements.
    251262//--
    252263
     
    263274{
    264275list<EvHand>::iterator it;
    265 for(it= mDHlist.begin(); it != mDHlist.end(); it++)
    266   if ((*it).evh == drwh) { mDHlist.erase(it); break; }
     276bool found = true;
     277while (found) {
     278  found = false;
     279  for(it= mDHlist.begin(); it != mDHlist.end(); it++)
     280    if ((*it).evh == drwh) { mDHlist.erase(it); found = true; break; }
     281  }
    267282}
    268283
     
    279294{
    280295list<EvHand>::iterator it;
    281 for(it= mEHlist.begin(); it != mEHlist.end(); it++)
    282   if ((*it).evh == evh) { mEHlist.erase(it); break; }
     296bool found = true;
     297while (found) {
     298  found = false;
     299  for(it= mEHlist.begin(); it != mEHlist.end(); it++)
     300    if ((*it).evh == evh) { mEHlist.erase(it); found = true; break; }
     301  }
    283302}
    284303
  • trunk/SophyaPI/PI/piwdggen.h

    r173 r180  
    8181  virtual bool           IsVisible()=0;
    8282
     83//  Fonction qui doit etre appelee pour rafraichir la fenetre
     84  virtual void           Refresh()=0;
     85
    8386//  Pour rendre un composant graphique (PIWdg) sensible/insensible
    8487//  aux actions utilisateur (souris, clavier, ...)
     
    118121};
    119122
    120 // ---- La classe PIGraphicBuffer doit se conformer a l'interface suivante
    121 // class PIGraphicBuffer {
     123// ---- La classe PIScreenBuffer doit se conformer a l'interface suivante
     124// class PIScreenBuffer {
    122125// public :
    123 //                      PIGraphicBuffer(int sx, int sy);
    124 //  virtual             ~PIGraphicBuffer();
     126//                      PIScreenBuffer(int sx, int sy);
     127//  virtual             ~PIScreenBuffer();
    125128//  virtual int         XSize();
    126129//  virtual int         YSize();
    127130//  virtual  void       CopyFromWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y);
    128131//  virtual  void       CopyToWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y);
    129 //  virtual  void       CopyFrom(PIGraphicBuffer* grb, int ox, int oy, int dx, int dy, int x, int y);
     132//  virtual  void       CopyFrom(PIScreenBuffer* grb, int ox, int oy, int dx, int dy, int x, int y);
    130133// };
    131134 
  • trunk/SophyaPI/PI/piwdgx.cc

    r173 r180  
    245245   ( (this->XtWdg())->core.visible) )  return(true);
    246246else return(false);       
     247}
     248
     249/* --Methode-- */
     250void PIWdgX::Refresh()
     251{
     252if (XtIsRealized(XtWdg()))
     253  XClearArea(XtDisplay(XtWdg()), XtWindow(XtWdg()), 0, 0, 0, 0, True);
    247254}
    248255
     
    770777{
    771778PIWdgGen::AddDrawHandler(drwh, ad);
    772 XtAddEventHandler( XtWdg(), ExposureMask, FALSE, evthandler_piwdgx, this);
     779XtInsertEventHandler( XtWdg(), ExposureMask, FALSE, evthandler_piwdgx, this, XtListTail);
    773780}
    774781
     
    789796if (evtmask & PIEvent_Leave)  mask |= LeaveNotify;
    790797if (evtmask & PIEvent_But1Press)  mask |= ButtonPressMask;
    791 if (evtmask & PIEvent_But1Release)  mask |= ButtonRelease;
     798if (evtmask & PIEvent_But1Release)  mask |= ButtonReleaseMask;
    792799if (evtmask & PIEvent_But2Press)  mask |= ButtonPressMask;
    793 if (evtmask & PIEvent_But2Release)  mask |= ButtonRelease;
     800if (evtmask & PIEvent_But2Release)  mask |= ButtonReleaseMask;
    794801if (evtmask & PIEvent_But3Press)  mask |= ButtonPressMask;
    795 if (evtmask & PIEvent_But3Release)  mask |= ButtonRelease;
     802if (evtmask & PIEvent_But3Release)  mask |= ButtonReleaseMask;
    796803if (evtmask & PIEvent_PtrMove)  mask |= PointerMotionHintMask;
    797804if (evtmask & PIEvent_Ptr1Move)  mask |= (PointerMotionHintMask | Button1MotionMask);
     
    799806if (evtmask & PIEvent_Ptr3Move)  mask |= (PointerMotionHintMask | Button3MotionMask);
    800807if (evtmask & PIEvent_Keyboard)  mask |= KeyPressMask;
    801 XtAddEventHandler( XtWdg(), mask, FALSE, evthandler_piwdgx, this);
     808printf("PIWdgX::AddEventHandler() Mask = %lx \n", (long)mask);
     809XtInsertEventHandler( XtWdg(), mask, FALSE, evthandler_piwdgx, this, XtListTail);
    802810}
    803811
     
    807815PIWdgGen::RemoveEventHandler(evh);
    808816if (mEHlist.size() > 0) return;
    809 unsigned mask = EnterNotify;
     817EventMask mask = EnterNotify;
    810818mask |= LeaveNotify;
    811819mask |= ButtonPressMask;
     
    862870{
    863871
    864 *cont = FALSE ;
     872*cont = true ;
    865873PIWdgX* wx = (PIWdgX*)usd;
    866874PIEventMask evm = PIEvent_None;
     
    9991007
    10001008
    1001 // -------- La classe PIGraphicBuffer ----------
    1002 /* --Methode-- */
    1003 PIGraphicBuffer::PIGraphicBuffer(int sx, int sy)
     1009// -------- La classe PIScreenBuffer ----------
     1010/* --Methode-- */
     1011PIScreenBuffer::PIScreenBuffer(int sx, int sy)
    10041012{
    10051013if (sx < 1) sx = 1;
     
    10081016Display * dsx = PIXDisplay();
    10091017Window rw = DefaultRootWindow(dsx);
    1010 xGrbuff = XCreatePixmap(dsx, rw, sx, sy, DefaultDepth(dsx, DefaultScreen(dsx)) );
    1011 }
    1012 /* --Methode-- */
    1013 PIGraphicBuffer::~PIGraphicBuffer()
    1014 {
    1015 XFreePixmap(PIXDisplay(),xGrbuff);
    1016 }
    1017 
    1018 /* --Methode-- */
    1019 int PIGraphicBuffer::XSize()
     1018xScrbuff = XCreatePixmap(dsx, rw, sx, sy, DefaultDepth(dsx, DefaultScreen(dsx)) );
     1019}
     1020/* --Methode-- */
     1021PIScreenBuffer::~PIScreenBuffer()
     1022{
     1023XFreePixmap(PIXDisplay(),xScrbuff);
     1024}
     1025
     1026/* --Methode-- */
     1027int PIScreenBuffer::XSize()
    10201028{
    10211029return(mSx);
     
    10231031
    10241032/* --Methode-- */
    1025 int PIGraphicBuffer::YSize()
     1033int PIScreenBuffer::YSize()
    10261034{
    10271035return(mSx);
     
    10291037
    10301038/* --Methode-- */
    1031 void PIGraphicBuffer::CopyFromWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y)
    1032 {
    1033 XCopyArea(XtDisplay(wdg->XtWdg()), XtWindow(wdg->XtWdg()), XGrBuffer(), defgc, ox, oy,
     1039void PIScreenBuffer::CopyFromWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y)
     1040{
     1041XCopyArea(XtDisplay(wdg->XtWdg()), XtWindow(wdg->XtWdg()), XScrBuffer(), defgc, ox, oy,
    10341042          (unsigned int)dx, (unsigned int)dy, x, y);
    10351043}
    10361044
    10371045/* --Methode-- */
    1038 void PIGraphicBuffer::CopyToWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y)
    1039 {
    1040 XCopyArea(XtDisplay(wdg->XtWdg()), XGrBuffer(), XtWindow(wdg->XtWdg()), defgc, ox, oy,
     1046void PIScreenBuffer::CopyToWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y)
     1047{
     1048XCopyArea(XtDisplay(wdg->XtWdg()), XScrBuffer(), XtWindow(wdg->XtWdg()), defgc, ox, oy,
    10411049          (unsigned int)dx, (unsigned int)dy, x, y);
    10421050}
    10431051
    10441052/* --Methode-- */
    1045 void PIGraphicBuffer::CopyFrom(PIGraphicBuffer* grb, int ox, int oy, int dx, int dy, int x, int y)
    1046 {
    1047 
    1048 XCopyArea(PIXDisplay(), grb->XGrBuffer(), XGrBuffer(), defgc, ox, oy,
     1053void PIScreenBuffer::CopyFrom(PIScreenBuffer* grb, int ox, int oy, int dx, int dy, int x, int y)
     1054{
     1055
     1056XCopyArea(PIXDisplay(), grb->XScrBuffer(), XScrBuffer(), defgc, ox, oy,
    10491057          (unsigned int)dx, (unsigned int)dy, x, y);
    10501058}
  • trunk/SophyaPI/PI/piwdgx.h

    r173 r180  
    5252  virtual bool   IsVisible();
    5353
     54//  Fonction qui doit etre appelee pour rafraichir la fenetre
     55  virtual void           Refresh();
     56
     57//  Pour rendre un composant graphique (PIWdg) sensible/insensible
    5458  virtual void           SetSensitive();
    5559  virtual void           SetUnSensitive();
     
    97101typedef PIWdgX PIWdg;
    98102
    99 // -------- La classe PIGraphicBuffer ----------
    100 class PIGraphicBuffer {
     103// -------- La classe PIScreenBuffer ----------
     104class PIScreenBuffer {
    101105public :
    102                         PIGraphicBuffer(int sx, int sy);
    103   virtual               ~PIGraphicBuffer();
     106                        PIScreenBuffer(int sx, int sy);
     107  virtual               ~PIScreenBuffer();
    104108
    105109  virtual int           XSize();
     
    107111  virtual  void         CopyFromWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y);
    108112  virtual  void         CopyToWdg(PIWdg* wdg, int ox, int oy, int dx, int dy, int x, int y);
    109   virtual  void         CopyFrom(PIGraphicBuffer* grb, int ox, int oy, int dx, int dy, int x, int y);
     113  virtual  void         CopyFrom(PIScreenBuffer* grb, int ox, int oy, int dx, int dy, int x, int y);
    110114
    111115//  Acces au Drawable X
    112   inline Pixmap         XGrBuffer() { return(xGrbuff); }
     116  inline Pixmap         XScrBuffer() { return(xScrbuff); }
    113117protected :
    114   Pixmap xGrbuff;
     118  Pixmap xScrbuff;
    115119  int mSx, mSy;
    116120};
  • trunk/SophyaPI/PI/pixtbase.cc

    r163 r180  
    198198{
    199199
    200 *cont = FALSE ;
     200*cont = true ;
    201201switch (evt->type) {
    202202  case EnterNotify :
Note: See TracChangeset for help on using the changeset viewer.