Changeset 37 in Sophya for trunk/SophyaPI/PI/piscdrawwdg.cc


Ignore:
Timestamp:
Feb 24, 1997, 4:34:49 PM (29 years ago)
Author:
ansari
Message:
  • Amelioration gestion couleurs ds picmapx.cc + Gestion d'Elts graphique ds

pipixmapgen.cc,.h , remplacement de GetXmString par fonction CStrFrXmStr()

  • Gestion de fenetre d'image totale ds piimage.cc piimage.h
  • Raccourci clavier pour les menus - PIMsg_Resize et PIMsg_Drop (pimsghandler.h)
  • Gestion de sens d'axe (X ou Y) et Position Click ds piscdrawwdg.cc,.h
  • + Petites corrections de bug, amelioration Reza 24/02/97
File:
1 edited

Legend:

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

    r23 r37  
    3232
    3333void
    34 PIScDrawWdg::SetLimits(double xmin, double xmax,
    35                        double ymin, double ymax, bool tmp)
     34PIScDrawWdg::SetLimits(double xmin, double xmax, double ymin, double ymax,
     35                       bool axrl, bool ayud, bool tmp)
    3636{
    3737  if (xmax <= xmin || ymax <= ymin)
    3838    return; // $CHECK$ exception ?
     39  aXdir = axrl;      // Vrai si Axe X de Droite vers Gauche
     40  aYdir = ayud;      // Vrai si Axe Y de Haut vers Bas
    3941  xMin = xmin;
    4042  xMax = xmax;
    4143  yMin = ymin;
    4244  yMax = ymax;
     45  mPPos[0] = 0.5*(xMin+xMax);
     46  mPPos[1] = 0.5*(yMin+yMax);
    4347  if (!tmp) {
    4448    xMinS = xmin;
     
    6367PIScDrawWdg::CalcScale()
    6468{
    65   double margeH = (xMax-xMin)*0.2;
    66   double margeV = (yMax-yMin)*0.2;
     69  double margeH = (xMax-xMin)*0.15;
     70  double margeV = (yMax-yMin)*0.15;
    6771  xScale = XSize() / (xMax-xMin + 2*margeH);
    68   yScale = -YSize() / (yMax-yMin + 2*margeV);
    69   xOrg   = (-xMin + margeH) * xScale;// + XPos();
    70   yOrg   = (-yMax - margeV) * yScale;// + YPos();
     72  if (aXdir)  {
     73    xScale = -xScale;
     74    xOrg   = (-xMax - margeH) * xScale;// + XPos();
     75  }
     76  else xOrg   = (-xMin + margeH) * xScale;// + XPos();
     77  yScale = YSize() / (yMax-yMin + 2*margeV);
     78  if (!aYdir) {
     79    yScale = -yScale;
     80    yOrg   = (-yMax - margeV) * yScale;// + YPos();
     81  }
     82  else yOrg   = (-yMin + margeV) * yScale;// + YPos();
     83return;
    7184}
    7285
     
    361374{
    362375  double xOffset = 0;
    363  
     376  int kk;
    364377  ScSelFontSz(xMajTickLen*4);
    365378  for (double x=xBeg; x<=xMax; x += xStep) {
    366379      char label[20]; sprintf(label, "%-6g", x);
     380      for(kk=0; kk<20; kk++)
     381        if (label[kk] == ' ')   { label[kk] = '\0' ; break; }
    367382      double largeur = ScStringWidth(label);
    368383      if (just == 1)
     
    372387      else
    373388        xOffset = 0;
     389      if (aXdir)  xOffset = -xOffset;
    374390      ScDrawString(x+xOffset, y, label);
    375391  }
     
    390406      else
    391407        xOffset = 0;
     408      if (aXdir)  xOffset = -xOffset;
    392409      ScDrawString(x+xOffset, y, label);
    393410  }
     
    427444   
    428445    if (flags & kLabels) {
     446      if (!aYdir)
    429447        DrawHLabels(-xMajTickLen*8, xFirstMajTick, xMajTickStep,0);
     448      else
     449        DrawHLabels(xMajTickLen*8, xFirstMajTick, xMajTickStep,0);
     450      if (!aXdir)
    430451        DrawVLabels(-yMajTickLen*2, yFirstMajTick, yMajTickStep,1);
     452      else
     453        DrawVLabels(yMajTickLen*2, yFirstMajTick, yMajTickStep,1);
    431454    }
    432455   
     
    475498   
    476499    if (flags & kLabels) {
     500      if (!aYdir) {
    477501        DrawHLabels(yMin-xMajTickLen*8, xFirstMajTick, xMajTickStep,0);
    478502        DrawHLabels(yMax+xMajTickLen*2, xFirstMajTick, xMajTickStep,0);
     503      }
     504      else {
     505        DrawHLabels(yMin-xMajTickLen*2, xFirstMajTick, xMajTickStep,0);
     506        DrawHLabels(yMax+xMajTickLen*8, xFirstMajTick, xMajTickStep,0);
     507      }
     508      if (!aXdir) {
    479509        DrawVLabels(xMin-yMajTickLen*2, yFirstMajTick, yMajTickStep,1);
    480510        DrawVLabels(xMax+yMajTickLen*2, yFirstMajTick, yMajTickStep,-1);
     511      }
     512      else {
     513        DrawVLabels(xMin-yMajTickLen*2, yFirstMajTick, yMajTickStep,-1);
     514        DrawVLabels(xMax+yMajTickLen*2, yFirstMajTick, yMajTickStep,1);
     515      }
    481516    }
    482517  }
     
    604639PIScDrawWdg::UpdateText(int xp, int yp)
    605640{
    606   if ((mTxw == NULL) && (mTrlb == NULL)) return(false);
    607 
    608   char buff[128];
     641
    609642  double dx, dy;
    610643  Local2Sc(xp, yp, dx, dy);
     644  mPPos[0] = dx;  mPPos[1] = dy;
     645  if ((mTxw == NULL) && (mTrlb == NULL)) return(false);
     646
     647  char buff[128];
    611648  sprintf(buff, "X= %g  Y= %g",  dx, dy);
    612649  if (mTxw)
     
    647684 
    648685  if (xBegDrag == xEndDrag || yBegDrag == yEndDrag)
    649     SetLimits(xMinS, xMaxS, yMinS, yMaxS);
     686    SetLimits(xMinS, xMaxS, yMinS, yMaxS, aXdir, aYdir );
    650687  else {
    651688    double xl,yl,xh,yh;
     
    654691    if (xl > xh) swap(xl, xh);
    655692    if (yl > yh) swap(yl, yh);
    656     SetLimits(xl,xh,yl,yh, true);
     693    SetLimits(xl,xh,yl,yh, aXdir, aYdir, true);
    657694  }
    658695 
Note: See TracChangeset for help on using the changeset viewer.