Changeset 120 in Sophya for trunk/SophyaPI


Ignore:
Timestamp:
Jul 15, 1998, 7:08:53 PM (27 years ago)
Author:
ansari
Message:

Suite modifs DrawerTools, introduction de PIYfXDrawer, +debug Reza 15/07/98

Location:
trunk/SophyaPI/PI
Files:
27 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PI/parradapter.h

    r119 r120  
    1414public :
    1515                  P1DArrayAdapter(int sz=0) {mSize=sz; }
    16                   ~P1DArrayAdapter();
     16  virtual         ~P1DArrayAdapter() { };
    1717 
    1818  virtual float   Value(int i) = 0;
  • trunk/SophyaPI/PI/pi3ddrw.cc

    r119 r120  
    152152}
    153153
     154
    154155/* --Methode-- */
    155156void PIDraw3DWdg::Update3DView()
     157{
     158  list<int>::iterator it = m3DrIl.begin();
     159  if (it == m3DrIl.end())  return;
     160#if defined(__GNUC__) && !defined(GCCV28)
     161  PIDrawer3D* dr3 = (PIDrawer3D*)(GetDrawerId(*it));
     162#else
     163  PIDrawer3D* dr3 = dynamic_cast<PIDrawer3D*>(GetDrawerId(*it));
     164#endif
     165  if (dr3 == NULL)  return;
     166  dr3->UpdateLimits();
     167  float xo, yo, zo, xc, yc, zc, teta, phi, psi, dax, day, co, dco;
     168  bool vobs;
     169  vobs = dr3->Get3DView(xc, yc, zc, xo, yo, zo, teta, phi, psi, dax, day, co, dco);
     170  if (vobs) Set3DView_Obs(xo, yo, zo, teta, phi, psi, dax, day, co, dco);
     171  else Set3DView(xc, yc, zc, xo, yo, zo, dax, day, dco, psi);
     172  Refresh();
     173}
     174
     175
     176/* --Methode-- */
     177void PIDraw3DWdg::SetDrawers3DView()
    156178{
    157179  float xc, yc, zc, xo, yo, zo;
     
    179201{
    180202if (!vfixed)  {
    181   dr3->UpdateSize();
     203  dr3->UpdateLimits();
    182204  float xo, yo, zo, xc, yc, zc, teta, phi, psi, dax, day, co, dco;
    183205  bool vobs;
     
    269291  SelPointerShape(PI_ArrowPointer);
    270292  mWGrC->SelForeground(lCol);
    271   Update3DView();
     293  SetDrawers3DView();
    272294  Refresh();
    273295}
     
    305327{
    306328  DrawXYZAxes();
    307   float rapx = (float)(x-lPx)/XSize();
     329  float rapx = (float)(lPx-x)/XSize();
    308330  if (rapx > 0.) rapx = rapx*2.+1;
    309331  else rapx += 1.;
     
    332354  SelPointerShape(PI_ArrowPointer);
    333355  mWGrC->SelForeground(lCol);
    334   Update3DView();
     356  SetDrawers3DView();
    335357  Refresh();
    336358}
     
    375397  PIDrwTools::SetCurrentBaseWdg(this);
    376398  if ( (x > 50) || ( y > 50) ) return;
    377   list<int>::iterator it = m3DrIl.begin();
    378   if (it == m3DrIl.end())  return;
    379 #if defined(__GNUC__) && !defined(GCCV28)
    380   PIDrawer3D* dr3 = (PIDrawer3D*)(GetDrawerId(*it));
    381 #else
    382   PIDrawer3D* dr3 = dynamic_cast<PIDrawer3D*>(GetDrawerId(*it));
    383 #endif
    384   if (dr3 == NULL)  return;
    385   dr3->UpdateSize();
    386   float xo, yo, zo, xc, yc, zc, teta, phi, psi, dax, day, co, dco;
    387   bool vobs;
    388   vobs = dr3->Get3DView(xc, yc, zc, xo, yo, zo, teta, phi, psi, dax, day, co, dco);
    389   if (vobs) Set3DView_Obs(xo, yo, zo, teta, phi, psi, dax, day, co, dco);
    390   else Set3DView(xc, yc, zc, xo, yo, zo, dax, day, dco, psi);
    391   Refresh();
     399  Update3DView();
    392400}
    393401
  • trunk/SophyaPI/PI/pi3ddrw.h

    r116 r120  
    5757                                  float& teta, float& phi, float& psi, float& dax, float& day, float& co, float& dco);
    5858
     59  virtual void          Update3DView();   // Vue 3-D a partir de Drawer No 1
     60
    5961  int                   AddDrawer3D(PIDrawer3D*, bool ad=false);   // Ajoute un Drawer
    6062
     
    7577
    7678protected :
    77   virtual void          Update3DView();
     79  virtual void          SetDrawers3DView();
    7880  virtual void          DrawXYZAxes();
    7981
  • trunk/SophyaPI/PI/pibwdggen.h

    r113 r120  
    9292                                      PIGrCoord x2, PIGrCoord y2, bool psz=true);
    9393  virtual void       RemoveDrawer(int id);       // Ote un drawer de la liste
    94   virtual void       DeleteDrawers();            // Ote et detruit tous les drawers
     94  virtual void       DeleteDrawers();            // Ote tous les drawers, delete des drawers ajoute avec ad=true
    9595// Acces aux drawers
    9696  virtual int        NbDrawers();
  • trunk/SophyaPI/PI/pidrawer.cc

    r113 r120  
    6464
    6565void
    66 PIDrawer::UpdateSize()
     66PIDrawer::UpdateLimits()
    6767{
    6868// Ne fait rien !
     
    8282PIDrawer::SetColAtt(PIColors fg, PIColors bg)
    8383{
    84   if (fg != PI_NotDefColor) mFCol = fg;
    85   if (bg != PI_NotDefColor) mBCol = bg;
     84  mFCol = fg;
     85  mBCol = bg;
    8686}
    8787
     
    8989PIDrawer::SetLineAtt(PILineAtt lat)
    9090{
    91   if (lat != PI_NotDefLineAtt) mLAtt = lat;
     91  mLAtt = lat;
    9292}
    9393
     
    9595PIDrawer::SetFontAtt(PIFontSize fsz, PIFontAtt fat)
    9696{
    97   if (fsz != PI_NotDefFontSize) mFSz = fsz;
    98   if (fat != PI_NotDefFontAtt) mFAtt = fat;
     97  mFSz = fsz;
     98  mFAtt = fat;
    9999}
    100100
     
    102102PIDrawer::SetMarkerAtt(int sz, PIMarker mrk)
    103103{
    104   if (sz >= 0)  mMSz = sz;
    105   if (mrk != PI_NotDefMarker) mMrk = mrk;
     104  mMSz = sz;
     105  mMrk = mrk;
    106106}
    107107
     
    394394DrawAxes(g);   // Trace des axes
    395395
     396SelGraAtt(g);   // DrawAxes change certains attributs graphiques
    396397DrwElList::iterator it;
    397398for (it = mElist.begin(); it != mElist.end(); it++)
  • trunk/SophyaPI/PI/pidrawer.h

    r113 r120  
    3434   
    3535  virtual void       Refresh();      // Recalcule les limites et reaffiche
    36   virtual void       UpdateSize();   // Calcule et change les limites si non fixees
     36  virtual void       UpdateLimits();   // Calcule et change les limites
    3737
    3838  float XMin() const {return xMin;}
  • trunk/SophyaPI/PI/pidrwtools.cc

    r119 r120  
    77#include "pidrwtools.h"
    88#include "piscdrawwdg.h"
     9#include "pi3ddrw.h"
    910
    1011
     
    7071mText[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    7172
    72 cpx = 2*spx;
     73cpx = 2*spx+0.25*bsx;
    7374cpy += spy+bsy;
    7475mCkb[0] = new PICheckBox(this,"AxeX-RtoL", 2000, 1.5*bsx, bsy, cpx, cpy);
     
    7980
    8081cpy += spy+bsy;
    81 cpx = 4*spx;;
    82 mBut[0] = new PIButton(this, "Apply", 2500, bsx*1.5, bsy, cpx, cpy);
    83 cpx += bsx*1.5+2*spx;
    84 mBut[1] = new PIButton(this, "Dismiss", 2600,  bsx*1.5, bsy, cpx, cpy);
     82cpx = 2.5*spx;;
     83mBut[0] = new PIButton(this, "Apply", 2600, bsx, bsy, cpx, cpy);
     84cpx += bsx*1.25;
     85mBut[1] = new PIButton(this, "Auto", 2700, bsx, bsy, cpx, cpy);
     86cpx += bsx*1.25;
     87mBut[2] = new PIButton(this, "Dismiss", 2500,  bsx, bsy, cpx, cpy);
    8588mBut[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    8689mBut[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     90mBut[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    8791
    8892int offy = cpy+bsy+spy*2;
     
    97101
    98102mOpt[0] = new PIOptMenu(this, "bwt-opt-0", bsx*1.75, bsy, cpx, cpy);
     103mOpt[0]->AppendItem("Def.Col", 100);
    99104mOpt[0]->AppendItem("Black", 101);
    100105mOpt[0]->AppendItem("White", 102);
     
    105110mOpt[0]->AppendItem("Yellow", 107);
    106111mOpt[0]->AppendItem("Magenta", 108);
    107 mOpt[0]->SetValue(101);
     112mOpt[0]->SetValue(100);
    108113mOpt[0]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
    109114
    110115cpx += spx+1.75*bsx;
    111116mOpt[1] = new PIOptMenu(this, "bwt-opt-1", bsx*1.75, bsy, cpx, cpy);
    112 mOpt[1]->AppendItem("NoColor", 200);
     117mOpt[1]->AppendItem("No.CMap", 200);
    113118mOpt[1]->AppendItem("Grey32", 201);
    114119mOpt[1]->AppendItem("GreyInv32", 202);
     
    128133cpy += spy+bsy;
    129134mOpt[2] = new PIOptMenu(this, "bwt-opt-2", bsx*1.75, bsy, cpx, cpy);
    130 mOpt[2]->AppendItem("Undef-Mrk", 300);
     135mOpt[2]->AppendItem("Def.Mrk", 300);
    131136mOpt[2]->AppendItem("Mrk Dot(.)", 301);
    132137mOpt[2]->AppendItem("Mrk Plus(+)", 302);
     
    140145mOpt[2]->AppendItem("Mrk Star", 310);
    141146mOpt[2]->AppendItem("Mrk FStar", 311);
    142 mOpt[2]->SetValue(301);
     147mOpt[2]->SetValue(300);
    143148mOpt[2]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
    144149
    145150cpx += spx+1.75*bsx;
    146151mOpt[3] = new PIOptMenu(this, "bwt-opt-3", bsx*1.75, bsy, cpx, cpy);
     152mOpt[3]->AppendItem("Mrk 1 pt", 401);
    147153mOpt[3]->AppendItem("Mrk 3 pt", 403);
    148154mOpt[3]->AppendItem("Mrk 5 pt", 405);
     
    158164cpy += spy+bsy;
    159165mOpt[4] = new PIOptMenu(this, "bwt-opt-4", bsx*1.75, bsy, cpx, cpy);
    160 mOpt[4]->AppendItem("Normal-Font", 500);
    161 mOpt[4]->AppendItem("Bold-Font", 501);
    162 mOpt[4]->AppendItem("Ital-Font", 502);
    163 mOpt[4]->AppendItem("Small-Font", 510);
    164 mOpt[4]->AppendItem("Small-Bold-Font", 511);
    165 mOpt[4]->AppendItem("Small-Ital-Font", 512);
    166 mOpt[4]->AppendItem("Big-Font", 521);
    167 mOpt[4]->AppendItem("Big-Bold-Font", 522);
    168 mOpt[4]->AppendItem("Big-Ital-Font", 523);
     166mOpt[4]->AppendItem("Def.Font", 500);
     167mOpt[4]->AppendItem("Normal-Font", 511);
     168mOpt[4]->AppendItem("Bold", 512);
     169mOpt[4]->AppendItem("Ital", 513);
     170mOpt[4]->AppendItem("Small-Font", 521);
     171mOpt[4]->AppendItem("Small-Bold-Font", 522);
     172mOpt[4]->AppendItem("Small-Ital-Font", 523);
     173mOpt[4]->AppendItem("Big-Font", 531);
     174mOpt[4]->AppendItem("Big-Bold", 532);
     175mOpt[4]->AppendItem("Big-Ital", 533);
    169176mOpt[4]->SetValue(500);
    170177mOpt[4]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
     
    172179cpx += spx+1.75*bsx;
    173180mOpt[5] = new PIOptMenu(this, "bwt-opt-5", bsx*1.75, bsy, cpx, cpy);
    174 mOpt[5]->AppendItem("Undef-Line", 600);
     181mOpt[5]->AppendItem("Def.Line", 600);
    175182mOpt[5]->AppendItem("Thin-Line", 601);
    176183mOpt[5]->AppendItem("Normal-Line", 602);
    177184mOpt[5]->AppendItem("Thick-Line", 603);
    178 mOpt[5]->SetValue(601);
     185mOpt[5]->SetValue(600);
    179186mOpt[5]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
    180187
     
    182189cpy += spy+bsyo;
    183190bsy = bsyo; spy = spyo;
    184 mButdr[0] = new PIButton(this, "Dr-", 3501, bsy, bsy, cpx, cpy, PIBtn_ArrowLeft);
     191mButdr[0] = new PIButton(this, "-", 3501, bsy, bsy, cpx, cpy);
    185192cpx += bsy+0.25*spy;
    186193mNlb = new PILabel(this,"NumDr", bsy, bsy, cpx, cpy);
     
    188195mNDr = 0;
    189196cpx += bsy+0.25*spy;
    190 mButdr[1] = new PIButton(this, "Dr+", 3502, bsy, bsy, cpx, cpy, PIBtn_ArrowRight);
     197mButdr[1] = new PIButton(this, "+", 3502, bsy, bsy, cpx, cpy);
    191198mButdr[0]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
    192199mButdr[1]->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
    193200mNlb->SetBinding(PIBK_elastic, PIBK_elastic, PIBK_elastic, PIBK_elastic);
    194201
    195 cpx += bsy+3*spx;
     202cpx = wszx-1.7*bsx-3*spx;
    196203mButcf[0] = new PIButton(this, "SetAtt", 2800, bsx*0.85, bsy, cpx, cpy);
    197204cpx += 0.85*bsx+spx;
     
    216223  delete mButcf[i];
    217224  }
     225delete mBut[2];
    218226for(int i=0; i<6; i++)  delete mOpt[i];
    219227delete mNlb;
     
    244252mCkb[1]->SetState(false);
    245253
    246 mOpt[0]->SetValue(101);
     254mOpt[0]->SetValue(100);
    247255mOpt[1]->SetValue(200);
    248 mOpt[2]->SetValue(301);
     256mOpt[2]->SetValue(300);
    249257mOpt[3]->SetValue(405);
    250258mOpt[4]->SetValue(500);
    251 mOpt[5]->SetValue(601);
     259mOpt[5]->SetValue(600);
    252260
    253261return;
     
    262270                     PI_Green, PI_Yellow, PI_Magenta};
    263271
    264 PIMarker mrk[11] = { PI_DotMarker, PI_PlusMarker, PI_CrossMarker,
     272PIMarker mrk[12] = { PI_NotDefMarker, PI_DotMarker,
     273                     PI_PlusMarker, PI_CrossMarker,
    265274                     PI_CircleMarker, PI_FCircleMarker,
    266275                     PI_BoxMarker, PI_FBoxMarker,
     
    269278PILineAtt line[4] = { PI_NotDefLineAtt, PI_ThinLine, PI_NormalLine, PI_ThickLine};
    270279
    271 PIFontAtt fntatt[3] = { PI_RomanFont, PI_BoldFont, PI_ItalicFont };
    272 PIFontSize fntsz[3] = { PI_NormalSizeFont, PI_SmallSizeFont, PI_BigSizeFont };
     280PIFontAtt fntatt[4] = { PI_NotDefFontAtt, PI_RomanFont, PI_BoldFont, PI_ItalicFont };
     281PIFontSize fntsz[4] = { PI_NotDefFontSize, PI_NormalSizeFont, PI_SmallSizeFont, PI_BigSizeFont };
    273282CMapId cmap[11] = {  CMAP_OTHER, CMAP_GREY32, CMAP_GREYINV32,
    274283                     CMAP_COLRJ32, CMAP_COLBR32, CMAP_COLRV32, 
     
    276285
    277286msg = UserMsg(msg);
    278 if (msg == 2600)  { Hide(); return; }
     287if (msg == 2500)  { Hide(); return; }
    279288
    280289if (mCurBW == NULL)   return;
     
    284293int axrl = kAxeDirLtoR;
    285294int ayud = kAxeDirDownUp;
    286 int k, kk;
     295int k, kk, kkk;
    287296
    288297switch (msg) {
    289298
    290   case 2500 :
     299  case 2600 :
    291300    sscanf(mText[0]->GetText().c_str(), "%g %g" , &xmin, &xmax);
    292301    sscanf(mText[1]->GetText().c_str(), "%g %g" , &ymin, &ymax);
    293302    if (mCkb[0]->GetState())  axrl = kAxeDirRtoL ;
    294303    if (mCkb[1]->GetState())  ayud = kAxeDirUpDown;
    295     printf("--DBG-- %g-%g , %g-%g , %d %d \n", xmin, xmax, ymin, ymax, axrl, ayud);
    296304    if ( mCurBW->kind() == PIScDrawWdg::ClassId ) ((PIScDrawWdg*)mCurBW)-> SetLimits(xmin, xmax, ymin, ymax, axrl, ayud);
    297305    else mCurBW->SetDefaultDrawerLimits(xmin, xmax, ymin, ymax, axrl, ayud);
    298306    mCurBW->Refresh();
     307    break;
     308
     309  case 2700 :
     310    if ( mCurBW->kind() == PIScDrawWdg::ClassId ) ((PIScDrawWdg*)mCurBW)->UpdateLimits();
     311    else if ( mCurBW->kind() == PIDraw3DWdg::ClassId) ((PIDraw3DWdg*)mCurBW)->Update3DView();
    299312    break;
    300313
     
    311324    drw->SetColMapId(cmap[k]);
    312325    k =  mOpt[2]->GetValue()-300;
    313     if ( (k < 0) || (k > 10) )  k = 0;
     326    if ( (k < 0) || (k > 11) )  k = 0;
    314327    kk =  mOpt[3]->GetValue()-400;
    315328    if ( (kk < 1) || (kk > 27) )  kk = 1;
    316329    drw->SetMarkerAtt(kk, mrk[k]);
    317     k =  ((mOpt[4]->GetValue()-500)/10)%3;
    318     kk = (mOpt[4]->GetValue()-500-10*k)%3;
    319     drw->SetFontAtt(fntsz[k], fntatt[kk]);
     330    k =  (mOpt[4]->GetValue()-500);
     331    kk = k/10;   kkk = k%10;
     332    drw->SetFontAtt(fntsz[kk], fntatt[kkk]);
    320333    k =  mOpt[5]->GetValue()-600;
    321334    if ( (k < 0) || (k > 3) )  k = 0;
     
    327340
    328341  case 3501 :
    329     mNDr--; 
    330     if (mNDr < 0)  mNDr = 0;
     342  case 3502 :
     343    if (msg == 3501) {  mNDr--;   if (mNDr < 0)  mNDr = 0; }
     344    else { mNDr++;  if (mNDr >= mCurBW->NbDrawers())  mNDr--; }
    331345    sprintf(strg, "%d", mNDr);
    332346    mNlb->SetLabel(strg);
    333     break;
    334   case 3502 :
    335     mNDr++; 
    336     if (mNDr >= mCurBW->NbDrawers())  mNDr--;
    337     sprintf(strg, "%d", mNDr);
    338     mNlb->SetLabel(strg);
     347    mOpt[0]->SetValue(100);
     348    mOpt[1]->SetValue(200);
     349    mOpt[2]->SetValue(300);
     350    mOpt[3]->SetValue(405);
     351    mOpt[4]->SetValue(500);
     352    mOpt[5]->SetValue(600);
    339353    break;
    340354
  • trunk/SophyaPI/PI/pidrwtools.h

    r119 r120  
    3535// Pour changer les axes
    3636  PILabel* mLab[2];
    37   PIButton* mBut[2];
     37  PIButton* mBut[3];
    3838  PIText* mText[2];
    3939  PICheckBox* mCkb[2];
  • trunk/SophyaPI/PI/pihisto.cc

    r107 r120  
    1717
    1818void
    19 PIHisto::UpdateSize()
     19PIHisto::UpdateLimits()
    2020{
    2121  if (!mHisto)  return; 
  • trunk/SophyaPI/PI/pihisto.h

    r107 r120  
    1010  virtual           ~PIHisto();
    1111  virtual void       Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax);
    12   virtual void       UpdateSize();
     12  virtual void       UpdateLimits();
    1313  virtual void       DrawStats(PIGraphicUC* g);
    1414  inline  Histo*     Histogram() { return(mHisto); }
  • trunk/SophyaPI/PI/pihisto2d.cc

    r112 r120  
    144144
    145145//++
    146 void PIHisto2D::UpdateSize()
     146void PIHisto2D::UpdateLimits()
    147147//
    148148//      Definition des tailles graphiques en fonction
  • trunk/SophyaPI/PI/pihisto2d.h

    r110 r120  
    2222          void       Print(int lp=0);
    2323  virtual void       Draw(PIGraphicUC* g,float xmin,float ymin,float xmax,float ymax);
    24   virtual void       UpdateSize();
     24  virtual void       UpdateLimits();
    2525  virtual void       DrawStats(PIGraphicUC* g);
    2626
  • trunk/SophyaPI/PI/pintup3d.cc

    r115 r120  
    4444
    4545/* --Methode-- */
    46 void PINTuple3D::UpdateSize()
     46void PINTuple3D::UpdateLimits()
    4747{
    4848  if (!mNT) return;
     
    6767 
    6868  Set3DView((xmin+xmax)/2., (ymin+ymax)/2, (zmin+zmax)/2.,
    69             (xmin+xmax)/2.+D , (ymin+ymax)/2.+2.*D , zmin+(zmax-zmin)*0.1, 0.3, 0.3); 
    70 //  printf("PINTuple3D::UpdateSize() : %g-%g  %g-%g  %g-%g (%g) \n", xmin,xmax,ymin,ymax,zmin,zmax,D);
    71 //  printf("PINTuple3D::UpdateSize() :  %g %g %g << %g %g %g \n",
     69            (xmin+xmax)/2.+D , (ymin+ymax)/2.+2.*D , zmin+(zmax-zmin)*0.2, 0.3, 0.3); 
     70//  printf("PINTuple3D::UpdateLimits() : %g-%g  %g-%g  %g-%g (%g) \n", xmin,xmax,ymin,ymax,zmin,zmax,D);
     71//  printf("PINTuple3D::UpdateLimits() :  %g %g %g << %g %g %g \n",
    7272//         (xmin+xmax)/2., (ymin+ymax)/2, (zmin+zmax)*0.5,
    7373//         (xmin+xmax)/2.+D , (ymin+ymax)/2.+2.*D , zmin+(zmax-zmin)*0.1);
  • trunk/SophyaPI/PI/pintup3d.h

    r113 r120  
    1111 
    1212  virtual void       Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax);
    13   virtual void       UpdateSize();
     13  virtual void       UpdateLimits();
    1414 
    1515          void       SelectXYZ(char* px, char* py, char* pz);
  • trunk/SophyaPI/PI/pintuple.cc

    r107 r120  
    4040
    4141/* --Methode-- */
    42 void PINTuple::UpdateSize()
     42void PINTuple::UpdateLimits()
    4343{
    4444  if (!mNT) return;
  • trunk/SophyaPI/PI/pintuple.h

    r119 r120  
    1111 
    1212  virtual void       Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax);
    13   virtual void       UpdateSize();
     13  virtual void       UpdateLimits();
    1414 
    1515          void       SelectXY(char* px, char* py);
  • trunk/SophyaPI/PI/pipixmapx.cc

    r111 r120  
    6666if (!g) return;
    6767if (g->kind() == PI_PSFileGraphics ) {
    68     g->DrawPixmap(0, 0, pixmap, nx, ny, cmap);
     68    g->DrawPixmap(ofx, ofy, pixmap, nx, ny, cmap);
    6969  /*  Il faut faire quelque chose Sinon ??! */
    7070  }
  • trunk/SophyaPI/PI/pipodrw.h

    r119 r120  
    33
    44#include "pidrawer.h"
     5#include "parradapter.h"
     6#include "cvector.h"
    57
    68class PIFuncDrawer : public PIDrawer {
     
    2931};
    3032
     33
     34// Adaptateur de vecteurs Peida++ a P1DArrayAdapter
     35class POVectorAdapter : public P1DArrayAdapter {
     36public :
     37                  POVectorAdapter(Vector* v, bool ad=false) :
     38                       P1DArrayAdapter(v->NElts())
     39                         { aDel = ad; mVec = v; }
     40  virtual         ~POVectorAdapter() { if (aDel) delete mVec; }
     41  virtual float   Value(int i) { return((*mVec)(i)); }
     42
     43protected:
     44  bool aDel;
     45  Vector* mVec;
     46
     47};
    3148#endif
  • trunk/SophyaPI/PI/piscdrawwdg.cc

    r119 r120  
     1// Module PI : Peida Interactive     PIScDrawWdg
     2// Gestionnaire Drawer-2D  E.Aubourg, R. Ansari  96-98
     3// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
     4
    15#include "piscdrawwdg.h"
    26#include "pidrwtools.h"
     7#include "parradapter.h"
    38
    49PIScDrawWdg::PIScDrawWdg(PIContainerGen *par, char *nom,
     
    4045  if (key == 'O' || key == 'o') {
    4146    PIDrwTools::SetCurrentBaseWdg(this);
    42     PIDrwTools::ShowPIDrwTools();   // Fentre axes et
     47    PIDrwTools::ShowPIDrwTools();   // Fentre axes et options de trace
    4348    }
    4449  }
     
    7378}
    7479 
     80void
     81PIScDrawWdg::UpdateLimits()
     82{
     83  if (NbDrawers() < 2)  return;
     84  PIDrawer* d = GetDrawer(1);
     85  if (d == NULL) return;
     86  d->UpdateLimits();
     87  SetLimits(d->XMin(), d->XMax(), d->YMin(), d->YMax());
     88  Refresh();
     89  return; 
     90}
    7591
    7692int
     
    7995  if (d == NULL)  return(-1);
    8096  if (! LimitsFixed() ) {  //  On met a jour les limites
    81     d->UpdateSize();
     97    d->UpdateLimits();
    8298    SetLimits(d->XMin(), d->XMax(), d->YMin(), d->YMax());
    8399  }
     
    225241
    226242
     243//  Classe de trace de points/fonctions Y=f(X)
     244
     245/* --Methode-- */
     246PIYfXDrawer::PIYfXDrawer(P1DArrayAdapter* ax, P1DArrayAdapter* ay, bool ad)
     247    : PIDrawer()
     248{
     249  mAdDO = ad;
     250  mAx = ax;
     251  mAy = ay;
     252  if ((mAx == NULL) || (mAy == NULL))  mSz = 0;
     253  else mSz = (mAx->Size() < mAy->Size()) ? mAx->Size() :  mAy->Size();
     254}
     255
     256/* --Methode-- */
     257PIYfXDrawer::~PIYfXDrawer()
     258{
     259  if (mAdDO && mAx)  delete mAx;
     260  if (mAdDO && mAy)  delete mAy;
     261}
     262
     263/* --Methode-- */
     264void PIYfXDrawer::UpdateLimits()
     265{
     266  if (mSz <= 0)  return;
     267  float xmin, xmax, ymin, ymax;
     268  int i=0;
     269  xmin = xmax = mAx->Value(i);
     270  ymin = ymax = mAy->Value(i);
     271  float cv;
     272  for(i=0; i<mSz; i++) {
     273    cv = mAx->Value(i);
     274    if (cv < xmin)  xmin = cv;
     275    if (cv > xmax)  xmax = cv;
     276    cv = mAy->Value(i);
     277    if (cv < ymin)  ymin = cv;
     278    if (cv > ymax)  ymax = cv;
     279  }
     280  float dx, dy;
     281  dx = 0.02*(xmax-xmin);
     282  dy = 0.02*(ymax-ymin);
     283
     284  SetLimits(xmin-dx, xmax+dx, ymin-dy, ymax+dy);
     285  SetAxesFlags(kBoxAxes | kExtTicks | kLabels);
     286}
     287
     288
     289/* --Methode-- */
     290void PIYfXDrawer::Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax)
     291{
     292  float xp,yp;
     293  int i;
     294
     295  if (mSz <= 0)  return;
     296
     297//  Trace des markers
     298  if ( (mMrk != PI_NotDefMarker) ||  (mLAtt == PI_NotDefLineAtt) ) {
     299    for(i=0; i<mSz; i++) {
     300      xp = mAx->Value(i);
     301      yp = mAy->Value(i);
     302      if ( (xp < xmin) || (xp > xmax) || (yp < ymin) || (yp > ymax) )  continue;
     303      g->DrawMarker(xp, yp);
     304    }
     305  }
     306
     307  if (mLAtt == PI_NotDefLineAtt)    return;
     308
     309// Trace des lignes
     310  float xp2, yp2;
     311  xp = mAx->Value(0);
     312  yp = mAy->Value(0);
     313  for(i=1; i<mSz; i++) {
     314    xp2 = mAx->Value(i);
     315    yp2 = mAy->Value(i);
     316    if ( ((xp < xmin) || (xp > xmax) || (yp < ymin) || (yp > ymax)) &&
     317         ((xp2 < xmin) || (xp2 > xmax) || (yp2 < ymin) || (yp2 > ymax)) )  continue;
     318    g->DrawLine(xp, yp, xp2, yp2);
     319    xp = xp2; yp = yp2;
     320  }
     321}
  • trunk/SophyaPI/PI/piscdrawwdg.h

    r119 r120  
     1// Module PI : Peida Interactive     PIScDrawWdg
     2// Gestionnaire Drawer-2D  E.Aubourg, R. Ansari  96-98
     3// LAL (Orsay) / IN2P3-CNRS  DAPNIA/SPP (Saclay) / CEA
     4
    15#ifndef PISCDRAWWDG_H
    26#define PISCDRAWWDG_H
     
    1115
    1216
     17// PIScDrawWdg, Gestionnaire de traceur 2D
     18
    1319class PIScDrawWdg : public PIBaseWdg {
    1420public:
     
    2127  virtual long       kind() {return ClassId; }
    2228 
    23   virtual void       Keyboard(int key, PIKeyModifier kmod);
    24   virtual void       PasteSelection(unsigned int typ, void *pdata, unsigned int l);
    25  
    26   void               SetLimits(float xmin, float xmax, float ymin, float ymax,
     29  virtual void       SetLimits(float xmin, float xmax, float ymin, float ymax,
    2730                               int axrl=kAxeDirSame, int ayud=kAxeDirSame, bool tmp=false);
     31  virtual void       UpdateLimits();  // Calcule et change les limites a partir de Drawer-No-1
     32
    2833  inline void        SetAxesFlags(unsigned int flags=kAxesDflt) { mBDrw->SetAxesFlags(flags); }
    2934
    3035  int                AddScDrawer(PIDrawer*, bool ad=false);   // Ajoute un Drawer en auto
    31   PIDrawer*          BaseDrawer() { return mBDrw; };
     36  inline PIDrawer*   BaseDrawer() { return mBDrw; };
    3237
    3338  float XMin() const {return mBDrw->XMin();}
     
    5358  virtual void       Ptr2Move(int x, int y);
    5459 
     60  virtual void       Keyboard(int key, PIKeyModifier kmod);
     61  virtual void       PasteSelection(unsigned int typ, void *pdata, unsigned int l);
     62 
    5563protected:
    5664  float xMinS, xMaxS, yMinS, yMaxS; // Sauvegarde pour zoom
     
    7583
    7684
     85// Classe de traceur de points/fonction Y=F(x)
     86
     87class P1DArrayAdapter;
     88class PIYfXDrawer : public PIDrawer {
     89public:
     90                     PIYfXDrawer(P1DArrayAdapter* ax, P1DArrayAdapter* ay, bool ad);
     91  virtual           ~PIYfXDrawer();
     92 
     93  virtual void       Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax);
     94  virtual void       UpdateLimits();
     95 
     96       
     97protected:
     98  P1DArrayAdapter* mAx;
     99  P1DArrayAdapter* mAy;
     100  int mSz;
     101  bool mAdDO;
     102};
    77103
    78104#endif
  • trunk/SophyaPI/PI/pistdwdgx.cc

    r111 r120  
    337337int n=0;
    338338Arg warg[8];
    339 CreateXtWdg(nom, xmScaleWidgetClass, NULL, sx, sy, px, py);
    340339XtSetArg(warg[n], XmNshowValue, TRUE); n++;
    341340XtSetArg(warg[n],XmNnavigationType,XmNONE);  n++;
     
    354353XtSetArg(warg[n], XmNscaleHeight, sy); n++;
    355354XtSetArg(warg[n], XmNstringDirection, XmSTRING_DIRECTION_R_TO_L); n++;
    356 
    357 XtSetValues(XtWdg(), warg, n);
     355CreateXtWdg(nom, xmScaleWidgetClass, NULL, sx, sy, px, py, warg, n);
     356// XtSetValues(XtWdg(), warg, n);
    358357SetMinMax(1, 100);
    359358SetValue(1);
  • trunk/SophyaPI/PI/pistlist.cc

    r119 r120  
    3737
    3838/* --Methode-- */
    39 void PIStarList::UpdateSize()
     39void PIStarList::UpdateLimits()
    4040{
    4141  if (!mStL) return;
     
    6767int msz = mMSz;
    6868if (msz < 1) msz = 1;
    69 
    70 g->SelFont();
     69PIMarker mrk = (mMrk != PI_NotDefMarker) ? mMrk : PI_FCircleMarker;
     70// g->SelFont();
    7171nok = 0;  nl2 = mNLev*2-1;
    7272for (int i=0; i<mStL->NbStars(); i++) {
     
    8080  sz = (int)((log10((double)flx/mF0))/mDLgF*(double)nl2-0.01) + msz;
    8181  if (sz < 2)  g->SelMarker(sz, PI_DotMarker);
    82   else g->SelMarker(sz, PI_FCircleMarker);
     82  else g->SelMarker(sz, mrk);
    8383  g->DrawMarker((double)xp,(double)yp );
    8484  if (mDspFV) { 
  • trunk/SophyaPI/PI/pistlist.h

    r119 r120  
    1111 
    1212  virtual void       Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax);
    13   virtual void       UpdateSize();
     13  virtual void       UpdateLimits();
    1414 
    1515  void               SetFluxLimits(float min=1., float max=-1., int nl=5, bool dispflx=false, bool refr=false);
  • trunk/SophyaPI/PI/pisurfdr.cc

    r118 r120  
    4040
    4141/* --Methode-- */
    42 void PISurfaceDrawer::UpdateSize()
     42void PISurfaceDrawer::UpdateLimits()
    4343{
    4444  if (mArr == NULL)  return;
     
    5252  float D = xmax-xmin;
    5353  if (D < (ymax-ymin))  D = ymax-ymin;
    54   D *= 1.5;
     54  D *= 1.4;
    5555 
    56   Set3DView((xmin+xmax)/2., (ymin+ymax)/2, zmin+(zmax-zmin)*0.4,
    57             (xmin+xmax)/2.+D , (ymin+ymax)/2.+2.*D , zmin+(zmax-zmin)*0.1, 0.3, 0.3); 
    58 //  printf("PISurfaceDrawer::UpdateSize() : %g-%g  %g-%g  %g-%g (%g) \n", xmin,xmax,ymin,ymax,zmin,zmax,D);
    59 //  printf("PISurfaceDrawer::UpdateSize() :  %g %g %g <<- %g %g %g \n",
    60 //         (xmin+xmax)/2., (ymin+ymax)/2, (zmin+zmax)*0.5,
    61 //         (xmin+xmax)/2.+D , (ymin+ymax)/2.+2.*D , zmin+(zmax-zmin)*0.1 );
     56  Set3DView((xmin+xmax)/2., (ymin+ymax)/2, zmin+(zmax-zmin)*0.40,
     57            (xmin+xmax)/2.+D , (ymin+ymax)/2.+2*D , zmin+(zmax-zmin)*0.60, 0.25, 0.25); 
     58//  printf("PISurfaceDrawer::UpdateLimits() : %g-%g  %g-%g  %g-%g (%g) \n", xmin,xmax,ymin,ymax,zmin,zmax,D);
     59//  printf("PISurfaceDrawer::UpdateLimits() :  %g %g %g <<- %g %g %g \n",
     60//         (xmin+xmax)/2., (ymin+ymax)/2, zmin+(zmax-zmin)*0.40,
     61//         (xmin+xmax)/2.+D , (ymin+ymax)/2.+2.*D , zmin+(zmax-zmin)*0.60 );
    6262
    6363}
  • trunk/SophyaPI/PI/pisurfdr.h

    r113 r120  
    1515                        ~PISurfaceDrawer();
    1616
    17   virtual void          UpdateSize();   // Calcule et change la vue-3D
     17  virtual void          UpdateLimits();   // Calcule et change la vue-3D
    1818
    1919  virtual void          Draw(PIGraphicUC* g, float xmin, float ymin, float xmax, float ymax);
  • trunk/SophyaPI/PI/piwdgx.cc

    r114 r120  
    115115/* --Methode-- */
    116116int PIWdgX::CreateXtWdg(char *nom, SysDWdgClass wdgcl, SysDWdg pwdg,
    117                         int sx, int sy, int px, int py)
    118 {
    119 Arg  wargs[5];
     117                        int sx, int sy, int px, int py, Arg* oarg, int na)
     118{
     119Arg  wargs[20];
    120120int n=0;
    121121
     
    139139XtSetArg(wargs[n],XtNx,px);  n++;
    140140XtSetArg(wargs[n],XtNy,py);  n++;
     141
     142if (na > 16) { printf("PIWdgX::CreateXtWdg()/Warning: na=%d > Max=16 \n", na);  na = 16; }
     143for(int kk=0; kk<na; kk++) { wargs[n] = oarg[kk]; n++; }
    141144
    142145if (wdgcl == NULL)  wdgcl = coreWidgetClass;
  • trunk/SophyaPI/PI/piwdgx.h

    r114 r120  
    2929  virtual ~PIWdgX();
    3030
    31   int CreateXtWdg(char *nom, SysDWdgClass wdgcl=NULL, SysDWdg pwdg=NULL,
    32                   int sx=10, int sy=10, int px=0, int py=0 );
    33 
    3431  virtual void   FinishCreate(); // apres avoir installe les sous-vues
    3532
    3633  virtual void   SetSize(int sx, int sy);
    3734  virtual void   SetPos(int px, int py);
    38   virtual void   SetBorderWidth(int bw);
    3935  virtual void   SetLabel(string const & lab);
    4036  virtual void   SetBinding(PIBindingKind left, PIBindingKind top,
     
    4541  virtual int    XPos();
    4642  virtual int    YPos();
    47   virtual int    BorderWidth();
    4843
    4944  virtual string Nom(); 
     
    6762  virtual void           PasteSelection(unsigned int typ, void *, unsigned int l);
    6863
     64//  Usage limite a a la version X11
    6965  inline SysDWdg XtWdg() const {return(sdw); };
    7066  inline SysDWdg& XtWdg() {return(sdw); };
     67  int           CreateXtWdg(char *nom, SysDWdgClass wdgcl=NULL, SysDWdg pwdg=NULL,
     68                  int sx=10, int sy=10, int px=0, int py=0, Arg* oarg=NULL, int na=0);
     69  int           BorderWidth();
     70  void          SetBorderWidth(int bw);
    7171
    7272protected:
    73   int InitXt(int narg=0, char *arg[]=NULL);
    74 
     73  int           InitXt(int narg=0, char *arg[]=NULL);
    7574
    7675  SysDWdg sdw;
Note: See TracChangeset for help on using the changeset viewer.