Changeset 1645 in Sophya for trunk/SophyaPI/PIext/pihisto2d.cc


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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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)
Note: See TracChangeset for help on using the changeset viewer.