Changeset 1645 in Sophya


Ignore:
Timestamp:
Aug 24, 2001, 1:08:42 PM (24 years ago)
Author:
cmv
Message:

Correc. bug display Statis si axes inverses cmv 24/08/2001

Location:
trunk/SophyaPI/PIext
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaPI/PIext/pihisto.cc

    r1644 r1645  
    142142  PIGrCoord a, d;
    143143  double cH = (double)g->GetFontHeight(a,d);
    144   double cellHeight = cH * 3.6;
     144  double cellHeight = 3.6 * cH;
    145145
    146146  // Les labels et leurs longueurs -> largeur de la cellule
    147   char *label, label1[32], label2[32], label3[32];
    148   sprintf(label1, "N= %-6g",mHisto->NData());
    149   sprintf(label2, "m= %-6g",mHisto->Mean());
    150   sprintf(label3, "s= %-6g",mHisto->Sigma());
     147  char *label, label1[64], label2[64], label3[64];
     148  sprintf(label1, "N= %-g",mHisto->NData());
     149  sprintf(label2, "m= %-g",mHisto->Mean());
     150  sprintf(label3, "s= %-g",mHisto->Sigma());
    151151  label = label1;
    152152  if(strlen(label)<strlen(label2)) label = label2;
     
    154154  double cellWidth =  1.1 * (double)g->CalcStringWidth(label);
    155155
    156   double xu, yu;
     156  double xu, yu, cw;
    157157  // Les limites du cadre
    158   xu = g->DeltaUCX(XMax(), - cellWidth);
    159   yu = g->DeltaUCY(YMax(), - cellHeight);
    160   g->DrawLine(xu, YMax(), xu, yu);
    161   g->DrawLine(xu, yu, XMax(), yu);
     158  xu = g->DeltaUCX(XMax(), -cellWidth);
     159  yu = g->DeltaUCY(YMax(), -cellHeight);
     160  g->DrawLine(xu,YMax(),xu,yu);
     161  g->DrawLine(xu,yu,XMax(),yu);
    162162
    163   // L'ecriture des labels
    164   xu = g->DeltaUCX(XMax(), - cellWidth*0.95);
    165   yu = g->DeltaUCY(YMax(), - cH*1.15);
    166   g->DrawString(xu, yu, label1);
    167   yu = g->DeltaUCY(YMax(), - cH*2.3);
    168   g->DrawString(xu, yu, label2);
    169   yu = g->DeltaUCY(YMax(), - cH*3.45);
    170   g->DrawString(xu, yu, label3);
     163  // L'ecriture des labels (attention aux inversions possibles des axes!)
     164  cw = (g->isAxeXDirRtoL()) ? -0.05*cellWidth : -0.95*cellWidth;
     165  xu = g->DeltaUCX(XMax(),cw);
     166
     167  cw = (g->isAxeYDirUpDown()) ? -0.15*cH : -1.15*cH;
     168  yu = g->DeltaUCY(YMax(),cw);
     169  g->DrawString(xu, yu,label1);
     170    cw +=  -1.15*cH;
     171    yu = g->DeltaUCY(YMax(),cw);
     172    g->DrawString(xu, yu,label2);
     173      cw +=  -1.15*cH;
     174      yu = g->DeltaUCY(YMax(),cw);
     175      g->DrawString(xu, yu,label3);
    171176                       
    172177}
    173 
  • trunk/SophyaPI/PIext/pihisto2d.cc

    r1644 r1645  
    6161//      en couleur. Cette option est incontournable dans le cas
    6262//      d'un display par des carres de taille fixe.
     63//| -**- gestion dans H2WinArg par menu deroulant Black&White etc...
    6364//--
    6465{
     
    8485//|        f   -> lf = log10(1.+f*(logscale-1))/log10(logscale)
    8586//|   3. codage de lf=[0,1] sur la dynamique du display choisi
     87//| -**- gestion dans H2WinArg par menu deroulant Lineaire/Log10
     88//|         et "logscale" par saisie de valeur dans champ LogScal
    8689//--
    8790{
     
    105108//|            (cf detail PIHisto2D::HPrint2)
    106109//| Type = 3 : carres de taille fixe (couleur).
     110//| -**- gestion dans H2WinArg par menu deroulant Carres_Var etc...
     111//|         et "fnpt" par saisie de valeur dans champ PerPt
    107112//--
    108113{
     
    122127//|  [hmin,hmax] -> [0,1]
    123128//|       h      ->   f = (h-hmin)/(hmax-hmin)
    124 //|  Par la suite selon ce qui est demande, f va coder le display ou etre
    125 //|  transforme en une autre echelle [0,1].
     129//|  Par la suite, selon ce qui est demande, f va coder le display
     130//|  ou etre transforme en une autre echelle [0,1] (ex: echelle log10).
    126131//|  Si hmax<=hmin, ils sont forces a la dynamique totale de l'histo2D.
     132//| -**- gestion dans H2WinArg par saisie de valeurs dans champ Dyn
    127133//--
    128134{
     
    136142//
    137143//      Pour definir la fraction de la dynamique a dessiner:
    138 //| Certains type de display (f=[0,1] cf PIHisto2D::UseDyn),
     144//| Selon le type de display (f=[0,1] cf PIHisto2D::UseDyn),
    139145//|  - on ne dessine rien si f <= frmin dans les cas de display avec
    140146//|    des nuages de points ou des carres de tailles variables.
     
    146152//|    le + grand qui pourra etre dessine dans un bin
    147153//|    aura une taille egale a 0.8*(taille du bin)).
    148 //--
    149 {
    150 if(frmax<=0. || frmax>1.) frmax = 1.;
     154//| -**- gestion dans H2WinArg par saisie de valeurs dans champ Frac
     155//--
     156{
     157if(frmin<0.  || frmin>=1.) frmin = 0.;
     158if(frmax<=0. || frmax>1. ) frmax = 1.;
    151159if(frmin>=frmax) {frmin=0.1; frmax=0.9;}
    152160mFracMin = frmin; mFracMax = frmax;
     
    183191//
    184192//      Dessin de l'histogramme.
    185 //| Code de dessin selon choix des options:
     193//| -**- Code de dessin selon choix des options:
    186194//|  (detail voir UseColors UseScale UseDisplay UseDyn UseFrac)
    187 //|  [hmin,hmax] -> [0,1] [[ -> re-codage log10 entre [0,1] ]] -> f=[0,1]
    188 //|  Puis selon display:
    189 //|  0 carres variables : if(f>fracmin) taille carre = f*fracmax *taille_du_bin
    190 //|  1 nuage de points  : if(f>fracmin) npoints = f*PerPt *npoints_ecran_dans_bin
    191 //|  2 code hbook2      : if(f>0) map de f=]0,1] dans ".+...Z*"
    192 //|  3 carres fixes     : couleur = lut[f*nombre_d_entree_dans_la_lut]
     195//|  - [hmin,hmax] -> f=[0,1]
     196//|    (Choix hmin,hmax champ Dyn de H2WinArg)
     197//|  - Eventuellement ech Log -> re-codage log10 entre f=[0,1]
     198//|    (Choix menu deroulant et champ LogScal de H2WinArg)
     199//|  - Restriction de f=[0,1] -> f=[Frac(min),Frac(max)]
     200//|    (Choix champ Frac de H2WinArg)
     201//| -**- Puis selon display:
     202//|  0 carres variables, menu "Carres Var." de H2WinArg:
     203//|      if(f>Frac(min)) taille carre = f * Frac(max) * taille_du_bin
     204//|  1 nuage de points, menu "....." et champ PerPt de H2WinArg:
     205//|      if(f>Frac(min)) npoints = f * PerPt * npoints_ecran_dans_bin
     206//|  2 code hbook2, menu ".12..Z*" de H2WinArg:
     207//|      if(f>0) map de f=]0,1] dans ".+...Z*"
     208//|  3 carres pleins, menu "Carres Pleins" et couleurs de H2WinArg):
     209//|      couleur = lut[ f * nombre_d_entree_dans_la_lut ]
    193210//--
    194211{
     
    200217double dx = mHisto->WBinX(),dy = mHisto->WBinY();
    201218double p1dx,p1dy;
    202 g->DGrC2UC(1.f,1.f,p1dx,p1dy);
     219g->DGrC2UC(1.,1.,p1dx,p1dy);
    203220
    204221// Gamme a representer entre [0,1] mais >=fracmin et scale fracmax
     
    325342  // La hauteur de la cellule
    326343  PIGrCoord a, d;
    327   double cellHeight = 1.2 * (double)g->GetFontHeight(a,d);
     344  double cH = (double)g->GetFontHeight(a,d);
     345  double cellHeight = 1.2 * cH;
    328346
    329347  // Les labels et leurs longueurs -> largeur de la cellule
    330   char label[32];
    331   sprintf(label,"N= %-6g", mHisto->NData());
     348  char label[64];
     349  sprintf(label,"N= %-g", mHisto->NData());
    332350  double cellWidth =  1.1 * (double)g->CalcStringWidth(label);
    333351
     352  double xu, yu, cw;
    334353  // Les limites du cadre
    335   g->DrawLine(XMax() - cellWidth, YMax(),
    336                        XMax() - cellWidth, YMax() - cellHeight);
    337   g->DrawLine(XMax() - cellWidth, YMax() - cellHeight,
    338                        XMax()            , YMax() - cellHeight);
     354  xu = g->DeltaUCX(XMax(), -cellWidth);
     355  yu = g->DeltaUCY(YMax(), -cellHeight);
     356  g->DrawLine(xu,YMax(),xu,yu);
     357  g->DrawLine(xu,yu,XMax(),yu);
    339358
    340359  // L'ecriture des labels
    341   g->DrawString(XMax() - cellWidth*0.95, YMax() - cellHeight*0.8,label);
     360  cw = (g->isAxeXDirRtoL()) ? -0.05*cellWidth : -0.95*cellWidth;
     361  xu = g->DeltaUCX(XMax(),cw);
     362  cw = (g->isAxeYDirUpDown()) ? -0.1*cH : -1.1*cH;
     363  yu = g->DeltaUCY(YMax(),cw);
     364  g->DrawString(xu,yu,label);
     365
    342366  //  printf("H[%d,%d] Dynamique: [%g,%g] Frac [%g,%g]\n"
    343367  //        ,mHisto->NBinX(),mHisto->NBinY(),HMin(),HMax(),FMin(),FMax());
     
    577601//| - Champ texte Dyn: Pour donner la dynamique, si min>=max
    578602//|     alors prend le min et le max de l'histogramme
     603//|     (cf PIHisto2D::UseDyn)
    579604//| - Champ texte Frac: fraction mini et maxi
    580605//|     (cf PIHisto2D::UseFrac)
  • trunk/SophyaPI/PIext/pintuple.cc

    r1644 r1645  
    205205
    206206if (stats) { // Trace de stats
    207   char label[64];
    208   sprintf(label, "Nd= %d/ Ntot= %d", nok, mNT->NbLines());
    209207  g->SelFontSz((YMax() - YMin())/30, mFAtt); 
     208  // La hauteur de la cellule
    210209  PIGrCoord a,d;
    211210  double cH = (double)g->GetFontHeight(a,d);
    212   double cellHeight = cH * 1.2;
     211  double cellHeight = 1.2 * cH;
     212  // Les labels et leurs longueurs -> largeur de la cellule
     213  char label[64];
     214  sprintf(label, "Nd= %d / Ntot= %d", nok, mNT->NbLines());
    213215  double cellWidth =   1.1 * (double)g->CalcStringWidth(label);
    214   double xu, yu;
     216  double xu, yu, cw;
     217  // Les limites du cadre
    215218  xu = g->DeltaUCX(XMax(), - cellWidth);
    216219  yu = g->DeltaUCY(YMax(), - cellHeight);
    217220  g->DrawLine(xu, YMax(), xu, yu);
    218221  g->DrawLine(xu, yu, XMax(), yu);
    219   xu = g->DeltaUCX(XMax(), - cellWidth*0.95);
    220   yu = g->DeltaUCY(YMax(), - cH*1.15);
    221   g->DrawString(xu, yu, label);
     222  // L'ecriture des labels (attention aux inversions possibles des axes!)
     223  cw = (g->isAxeXDirRtoL()) ? -0.05*cellWidth : -0.95*cellWidth;
     224  xu = g->DeltaUCX(XMax(),cw);
     225  cw = (g->isAxeYDirUpDown()) ? -0.1*cH : -1.1*cH;
     226  yu = g->DeltaUCY(YMax(),cw);
     227  g->DrawString(xu,yu,label);
    222228}
    223229
Note: See TracChangeset for help on using the changeset viewer.