Index: trunk/SophyaPI/PIext/pihisto2d.cc
===================================================================
--- trunk/SophyaPI/PIext/pihisto2d.cc	(revision 1645)
+++ trunk/SophyaPI/PIext/pihisto2d.cc	(revision 1850)
@@ -1,3 +1,4 @@
 #include <stdio.h>
+#include <stdlib.h>
 #include "piapplgen.h"
 #include "pihisto2d.h"
@@ -29,11 +30,10 @@
 //	Createur d'une classe de dessin pour l'histogramme 2D histo.
 //--
-: PIDrawer(), mHisto(histo)
-{
-mAdDO = ad;     // Flag pour suppression automatique de mHisto  
-
-mLogScale = 10.;
-mFPoints = 0.5;
-
+: PIDrawer(), mHisto(histo), mAdDO(ad), mLogScale(10.), mFPoints(0.5)
+{
+// mAdDO : Flag pour suppression automatique de mHisto
+// Attention: mFPoints n'est initialise que si on display par nuages de points
+//            mLogScale n'est initialise que si on utilise une echelle log
+UseScale();
 UseColors();
 UseDisplay();
@@ -48,9 +48,9 @@
 //--
 {
-if(mAdDO) delete mHisto;
-}
-
-//++
-void PIHisto2D::UseColors(bool fg, CMapId cmap)
+if(mAdDO && mHisto!=NULL) delete mHisto;
+}
+
+//++
+void PIHisto2D::UseColors(bool fg,CMapId cmap,bool revcmap)
 //
 //	Choix de la couleur si fg=true avec la color map cmap.
@@ -61,8 +61,10 @@
 //      en couleur. Cette option est incontournable dans le cas
 //      d'un display par des carres de taille fixe.
+//      revcmap doit etre mis a "true" si on veut avoir une color map
+//      inversee.
 //| -**- gestion dans H2WinArg par menu deroulant Black&White etc...
 //--
 {
-mFgCol = fg; mCmap = cmap;
+mFgCol = fg; mCmap = cmap; mRevCmap = revcmap;
 }
 
@@ -89,13 +91,11 @@
 //--
 {
-if(type==0) mTypScal = 0;
-if(type==1) {
-  mTypScal = 1;
-  if(logscale>1.) mLogScale = logscale;
-} else mTypScal = 0;
-}
-
-//++
-void PIHisto2D::UseDisplay(unsigned short type, float fnpt)
+if(type==0)       mTypScal=0;
+else if(type==1) {mTypScal=1; if(logscale>1.) mLogScale=logscale;}
+else              mTypScal=0;
+}
+
+//++
+void PIHisto2D::UseDisplay(unsigned short type,float fnpt)
 //
 //	Type de Display
@@ -112,14 +112,18 @@
 //--
 {
-if(fnpt<0.) fnpt=0; else if(fnpt>1.) fnpt=1.;
-if(type==0)        mTypDisp = 0;
-else if(type==1) { mTypDisp = 1; mFPoints = fnpt;}
-else if(type==2)   mTypDisp = 2;
-else if(type==3)   mTypDisp = 3;
-else               mTypDisp = 1;
-}
-
-//++
-void PIHisto2D::UseDyn(float hmin, float hmax)
+if(type==0) mTypDisp = 0;
+else if(type==1) {
+  mTypDisp = 1;
+  if(fnpt<0.) mFPoints = 0.;
+    else if(fnpt>1.) mFPoints = 1.;
+      else mFPoints = fnpt;
+}
+else if(type==2) mTypDisp = 2;
+else if(type==3) mTypDisp = 3;
+else             mTypDisp = 1;
+}
+
+//++
+void PIHisto2D::UseDyn(float hmin,float hmax)
 //
 //	Gestion de la dynamique a representer:
@@ -133,5 +137,6 @@
 //--
 {
-if(hmin>=hmax) {hmin = mHisto->VMin(); hmax = mHisto->VMax();}
+if(mHisto)
+  if(hmin>=hmax) {hmin = mHisto->VMin(); hmax = mHisto->VMax();}
 if(hmin>=hmax) hmax = hmin+1.;
 mHMin = hmin; mHMax = hmax;
@@ -139,5 +144,5 @@
 
 //++
-void PIHisto2D::UseFrac(float frmin, float frmax)
+void PIHisto2D::UseFrac(float frmin,float frmax)
 //
 //	Pour definir la fraction de la dynamique a dessiner:
@@ -167,6 +172,6 @@
 //--
 {
-printf("PIHisto2D::Print FgCol=%d Cmap=%d TypScal=%d TypDisp=%d (FPoints=%g)\n"
-      ,(int)mFgCol,(int)mCmap,mTypScal,mTypDisp,mFPoints);
+printf("PIHisto2D::Print FgCol=%d Cmap=%d (Rev=%d) TypScal=%d TypDisp=%d (FPoints=%g)\n"
+      ,(int)mFgCol,(int)mCmap,(int)mRevCmap,mTypScal,mTypDisp,mFPoints);
 printf("                 Dyn=%g,%g Frac=%g,%g LogSc=%g H=%lx\n"
       ,mHMin,mHMax,mFracMin,mFracMax,mLogScale,(long)mHisto);
@@ -182,11 +187,10 @@
 //--
 {
-  if(!mHisto) return;
-  SetLimits(mHisto->XMin(), mHisto->XMax(), mHisto->YMin() , mHisto->YMax());
-//  SetAxesFlags(kBoxAxes | kExtTicks | kLabels);   Ne pas faire - Reza 11/99
-}
-
-//++
-void PIHisto2D::Draw(PIGraphicUC* g, double xmin, double ymin, double xmax, double ymax)
+ if(!mHisto) return;
+ SetLimits(mHisto->XMin(), mHisto->XMax(), mHisto->YMin() , mHisto->YMax());
+}
+
+//++
+void PIHisto2D::Draw(PIGraphicUC* g,double xmin,double ymin,double xmax,double ymax)
 //
 //	Dessin de l'histogramme.
@@ -210,5 +214,4 @@
 //--
 {
-
 if (axesFlags != kAxesNone) DrawAxes(g);
 
@@ -228,5 +231,7 @@
 int ncol = 0;
 if (mFgCol) {
-  cmap = new PIColorMap(mCmap); ncol = cmap->NCol();
+  cmap = new PIColorMap(mCmap);
+  cmap->ReverseColorIndex(mRevCmap);
+  ncol = cmap->NCol();
   if(mTypDisp==3) fracmin=-1.;
 }
@@ -261,6 +266,6 @@
 
 // Plot de l'histogramme
-for (int i=0; i<mHisto->NBinX(); i++)
-for (int j=0; j<mHisto->NBinY(); j++) {
+for(int i=0; i<mHisto->NBinX(); i++)
+  for(int j=0; j<mHisto->NBinY(); j++) {
 
   r_8 left0,bottom0;
@@ -449,5 +454,5 @@
 : PIScDrawWdg(par,nom,sx,sy,px,py)
 {
-if (!h2dWinArg) h2dWinArg = new H2WinArg(this);
+if(!h2dWinArg) h2dWinArg = new H2WinArg(this);
 nb_h2dWinArg++;
 if(dbg) printf("PIH2DWdg::PIH2DWdg %lx h2dWinArg=%lx %d\n"
@@ -465,5 +470,5 @@
 {
 nb_h2dWinArg--;
-if (nb_h2dWinArg == 0) {
+if(nb_h2dWinArg == 0) {
   h2dWinArg->Hide();
   delete h2dWinArg;
@@ -472,5 +477,5 @@
 if(dbg) printf("PIH2DWdg::~PIH2DWdg h2dWinArg=%lx %d\n"
               ,(long)h2dWinArg,nb_h2dWinArg);
-if (mPih) delete mPih;
+if(mPih) delete mPih;
 }
 
@@ -481,6 +486,6 @@
 //--
 {
-if (!histo) return;
-if (mPih)  delete mPih;
+if(!histo) return;
+if(mPih)  delete mPih;
 mPih = new PIHisto2D(histo, true);
 AddScDrawer(mPih);
@@ -494,6 +499,6 @@
 //--
 {
-if (!pih2) return;
-if (mPih)  delete mPih;
+if(!pih2) return;
+if(mPih)  delete mPih;
 mPih = pih2;
 AddScDrawer(mPih);
@@ -511,5 +516,5 @@
 char str[128];
 
-if ((!mPih) || (!mPih->Histogram())) {
+if((!mPih) || (!mPih->Histogram())) {
   sprintf(str,"X=%g Y=%g ???",x,y);
   return((string)str);
@@ -617,22 +622,14 @@
 //|     et de l'histogramme.
 //--
-: PIWindow((PIMsgHandler *)par, "Options", PIWK_dialog,250,260,150,150)
+: PIWindow((PIMsgHandler *)par,"Options",PIWK_dialog,250,260,150,150)
+, mH2Wdg(NULL)
+, mFgCol(false), mCmap(CMAP_GREYINV32), mRevCmap(false)
+, mTypScal(0)  , mLogScale(10.)
+, mTypDisp(0)  , mFPoints(0.5)
+, mHMin(1.)    , mHMax(-1.)
+, mFracMin(0.1), mFracMax(0.9)
 {
 string sdum;
 if(dbg) printf("H2WinArg::H2WinArg %lx par=%lx\n",(long)this,(long)par);
-
-mH2Wdg = NULL;
-
-// Valeurs par defaut
-mFgCol    = false;
-mCmap     = CMAP_GREYINV32;
-mTypScal  = 0;
-mTypDisp  = 0;
-mFPoints  = 0.5;
-mHMin     = 1.;
-mHMax     = -1.;
-mFracMin  = 0.1;
-mFracMax  = 0.9;
-mLogScale = 10.;
 
 // Taille automatique
@@ -642,14 +639,14 @@
 int spy = (bsy>=5) ? bsy/5 : 1;    // intervalle entre lettres Y
 int wszx = 5*spx+bsx+int(2.5*bsx); // Taille fenetre en X
-int wszy = 11*spy+8.5*bsy;           // Taille fenetre en Y
+int wszy = 11*spy+int(8.5*bsy);    // Taille fenetre en Y
 SetSize(wszx, wszy);
 
 // menu du style de display des bins
   int cpx = 2*spx, cpy = 2*spy;
-mOPop[0] = new PIOptMenu(this, "optmen-h2d-1" ,2*bsx,bsy,cpx,cpy);
-mOPop[0]->AppendItem("Carres Var."  , 6101);
-mOPop[0]->AppendItem("....."        , 6102);
-mOPop[0]->AppendItem(".+12..Z*"     , 6103);
-mOPop[0]->AppendItem("Carres Pleins", 6104);
+mOPop[0] = new PIOptMenu(this,"optmen-h2d-1",2*bsx,bsy,cpx,cpy);
+mOPop[0]->AppendItem("Carres Var."  ,6101);
+mOPop[0]->AppendItem("....."        ,6102);
+mOPop[0]->AppendItem(".+12..Z*"     ,6103);
+mOPop[0]->AppendItem("Carres Pleins",6104);
 sdum = "Carres Var."; mOPop[0]->SetValueStr(sdum);
 mOPop[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
@@ -657,7 +654,7 @@
 // Menu du choix de la dynamique
   cpy += bsy+spy;
-mOPop[1] = new PIOptMenu(this, "optmen-h2d-2",2*bsx,bsy,cpx,cpy);
-mOPop[1]->AppendItem("Lineaire", 6201);
-mOPop[1]->AppendItem("Log10"   , 6202);
+mOPop[1] = new PIOptMenu(this,"optmen-h2d-2",2*bsx,bsy,cpx,cpy);
+mOPop[1]->AppendItem("Lineaire",6201);
+mOPop[1]->AppendItem("Log10"   ,6202);
 sdum = "Lineaire"; mOPop[1]->SetValueStr(sdum);
 mOPop[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
@@ -665,8 +662,8 @@
 // Menu du choix des couleurs
   cpy += bsy+spy;
-mOPop[2] = new PIOptMenu(this, "optmen-h2d-3",2*bsx,bsy,cpx,cpy);
+mOPop[2] = new PIOptMenu(this,"optmen-h2d-3",2*bsx,bsy,cpx,cpy);
 mOPop[2]->AppendItem("Black&White",7000);
-mCasc[0] = new PIMenu(mOPop[2]->Menu(), "PIStd-128Col");
-mCasc[1] = new PIMenu(mOPop[2]->Menu(), "MIDAS-CMap");
+mCasc[0] = new PIMenu(mOPop[2]->Menu(),"PIStd-128Col");
+mCasc[1] = new PIMenu(mOPop[2]->Menu(),"MIDAS-CMap");
 int kcc,nsct1=5,nsct2=9,nsct3=PIColorMap::NumberStandardColorMaps()-1;
 for(kcc=0; kcc<nsct1; kcc++) 
@@ -679,48 +676,52 @@
 mOPop[2]->AppendPDMenu(mCasc[1]);
 for(kcc=nsct3; kcc<PIColorMap::NumberStandardColorMaps(); kcc++) 
-mOPop[2]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(),7001+kcc);
+  mOPop[2]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(),7001+kcc);
 mOPop[2]->SetValue(7000);
 mOPop[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
 
+// Reverse color map
+  cpy += bsy+spy;
+mCkb = new PICheckBox(this,"Reverse CMap",8001,2*bsx,bsy,cpx,cpy);
+mCkb->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
+
 // Labels et zones de saisie texte
-  cpy += 2*(bsy+spy);
-mLab[0] = new PILabel(this, "     Dyn: ",bsx,bsy,cpx,cpy); 
+  cpy += bsy+spy;
+mLab[0] = new PILabel(this,"     Dyn: ",bsx,bsy,cpx,cpy); 
 mLab[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
-mText[0] = new PIText(this, "Dynamique" ,int(2.5*bsx),bsy,cpx+bsx+spx,cpy);
+mText[0] = new PIText(this,"Dynamique",int(2.5*bsx),bsy,cpx+bsx+spx,cpy);
 mText[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
   cpy += bsy+spy;
-mLab[1] = new PILabel(this, "    Frac: ",bsx,bsy,cpx,cpy);
+mLab[1] = new PILabel(this,"    Frac: ",bsx,bsy,cpx,cpy);
 mLab[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
-mText[1] = new PIText(this, "Fraction"  ,int(2.5*bsx),bsy,cpx+bsx+spx,cpy);
+mText[1] = new PIText(this,"Fraction",int(2.5*bsx),bsy,cpx+bsx+spx,cpy);
 mText[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
   cpy += bsy+spy;
-mLab[2] = new PILabel(this, " LogScal: ",bsx,bsy,cpx,cpy);
+mLab[2] = new PILabel(this," LogScal: ",bsx,bsy,cpx,cpy);
 mLab[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
-mText[2] = new PIText(this, "LogScale"  ,int(2.5*bsx),bsy,cpx+bsx+spx,cpy);
+mText[2] = new PIText(this,"LogScale",int(2.5*bsx),bsy,cpx+bsx+spx,cpy);
 mText[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
-SetText();
 
 // Labels et curseur mobile
 cpy += bsy+spy;
-mLab[3] = new PILabel(this, "   PerPt: ",bsx,bsy,cpx,cpy+0.25*bsy);
+mLab[3] = new PILabel(this,"   PerPt: ",bsx,bsy,cpx,cpy+int(0.25*bsy));
 mLab[3]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
 mPScal = new PIScale(this,"FracPoints",6401,kSDirLtoR
-                        ,int(2.5*bsx),1.25*bsy,cpx+bsx+spx,cpy);
+                        ,int(2.5*bsx),int(1.25*bsy),cpx+bsx+spx,cpy);
 mPScal->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
 mPScal->SetMinMax(0,100);
-int imfp = mFPoints*100.f; mPScal->SetValue(imfp);
+SetText();
 
 // Boutons
   cpx = 2*bsx+5*spx, cpy = 2*spy;
-mBut[0] = new PIButton(this, "Apply",  6001,bsx,bsy,cpx,cpy);
+mBut[0] = new PIButton(this,"Apply",6001,bsx,bsy,cpx,cpy);
 mBut[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
   cpy += bsy+spy;
-mBut[1] = new PIButton(this, "Dismiss",6002,bsx,bsy,cpx,cpy);
+mBut[1] = new PIButton(this,"Dismiss",6002,bsx,bsy,cpx,cpy);
 mBut[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
   cpy += bsy+spy;
-mBut[2] = new PIButton(this, "Get"  ,  6003,bsx,bsy,cpx,cpy);
+mBut[2] = new PIButton(this,"Get",6003,bsx,bsy,cpx,cpy);
 mBut[2]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
   cpy += bsy+spy;
-mBut[3] = new PIButton(this, "Print",  6004,bsx,bsy,cpx,cpy);
+mBut[3] = new PIButton(this,"Print",6004,bsx,bsy,cpx,cpy);
 mBut[3]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
 // FinishCreate();
@@ -740,4 +741,5 @@
 for(i=0;i<4;i++) delete mLab[i];
 for(i=0;i<3;i++) delete mText[i];
+delete mCkb;
 delete mPScal;
 }
@@ -758,11 +760,11 @@
 mText[2]->SetText(str);
 
-if(mTypDisp==0)      { sdum="Carres Var.";   mOPop[0]->SetValueStr(sdum);}
-else if(mTypDisp==1) { sdum=".....";         mOPop[0]->SetValueStr(sdum);}
-else if(mTypDisp==2) { sdum=".+12..Z*";      mOPop[0]->SetValueStr(sdum);}
-else if(mTypDisp==3) { sdum="Carres Pleins"; mOPop[0]->SetValueStr(sdum);}
-
-if(mTypScal==0)      { sdum="Lineaire"; mOPop[1]->SetValueStr(sdum);}
-else if(mTypScal==1) { sdum="Log10";    mOPop[1]->SetValueStr(sdum);}
+if(mTypDisp==0)      {sdum="Carres Var.";   mOPop[0]->SetValueStr(sdum);}
+else if(mTypDisp==1) {sdum=".....";         mOPop[0]->SetValueStr(sdum);}
+else if(mTypDisp==2) {sdum=".+12..Z*";      mOPop[0]->SetValueStr(sdum);}
+else if(mTypDisp==3) {sdum="Carres Pleins"; mOPop[0]->SetValueStr(sdum);}
+
+if(mTypScal==0)      {sdum="Lineaire"; mOPop[1]->SetValueStr(sdum);}
+else if(mTypScal==1) {sdum="Log10";    mOPop[1]->SetValueStr(sdum);}
 
 if(!mFgCol) {mOPop[2]->SetValue(7000);}
@@ -772,18 +774,9 @@
       {mOPop[2]->SetValue(7001+kk); break;}
 }
+mCkb->SetState(mRevCmap);
+
+mPScal->SetValue(int(mFPoints*100.));
 
 if(dbg)printf("H2WinArg::SetText\n");
-}
-
-//++
-void H2WinArg::GetText()
-//
-//	Gestion des fenetres de saisie de texte.
-//--
-{
-sscanf(mText[0]->GetText().c_str(),"%g %g",&mHMin,&mHMax);
-sscanf(mText[1]->GetText().c_str(),"%g %g",&mFracMin,&mFracMax);
-sscanf(mText[2]->GetText().c_str(),"%g",&mLogScale);
-if(dbg) printf("H2WinArg::GetText\n");
 }
 
@@ -806,5 +799,5 @@
 {
 if(dbg) printf("PIH2DWdg::Process(%d-%d , %lx ...) \n"
-              ,(int)UserMsg(msg),(int)ModMsg(msg), (long)sender);
+              ,(int)UserMsg(msg),(int)ModMsg(msg),(long)sender);
 
 if(!mH2Wdg) return;
@@ -813,15 +806,15 @@
 
 int opt = UserMsg(msg);
-     if (opt == 6101) { mTypDisp = 0; }
-else if (opt == 6102) { mTypDisp = 1; }
-else if (opt == 6103) { mTypDisp = 2; }
-else if (opt == 6104) { mTypDisp = 3; }
-
-else if (opt == 6201) { mTypScal = 0; }
-else if (opt == 6202) { mTypScal = 1; }
-
-else if (opt == 7000) { mFgCol = false; }
-
-else if (opt >= 7001 && opt <8000) {
+     if(opt == 6101) {mTypDisp = 0;}
+else if(opt == 6102) {mTypDisp = 1;}
+else if(opt == 6103) {mTypDisp = 2;}
+else if(opt == 6104) {mTypDisp = 3;}
+
+else if(opt == 6201) {mTypScal = 0;}
+else if(opt == 6202) {mTypScal = 1;}
+
+else if(opt == 7000) {mFgCol = false;}
+
+else if(opt >= 7001 && opt <8000) {
   int k  = opt-7001;
   mFgCol = true;
@@ -829,9 +822,13 @@
 }
 
-else if (opt == 6401) mFPoints = mPScal->GetValue()/100.;
-
-else if (opt==6001) {
-  GetText();
-  mpih->UseColors(mFgCol, mCmap);
+else if(opt == 8001) mRevCmap = mCkb->GetState();
+
+else if(opt == 6401) mFPoints = mPScal->GetValue()/100.;
+
+else if(opt==6001) {
+  sscanf(mText[0]->GetText().c_str(),"%g %g",&mHMin,&mHMax);
+  sscanf(mText[1]->GetText().c_str(),"%g %g",&mFracMin,&mFracMax);
+  sscanf(mText[2]->GetText().c_str(),"%g",&mLogScale);
+  mpih->UseColors(mFgCol,mCmap,mRevCmap);
   mpih->UseScale(mTypScal,mLogScale);
   mpih->UseDisplay(mTypDisp,mFPoints);
@@ -840,27 +837,19 @@
   mH2Wdg->Refresh();  // On rafraichit le dessin (tout le PIScDrawWdg)
 }
-else if (opt==6002) {
-  this->Hide();
-}
+else if(opt==6002) this->Hide();
 else if (opt==6003) {
-  mFgCol    = mpih->Color();
-  mCmap     = mpih->ColMap();
-  mTypScal  = mpih->TypScale();
-  mTypDisp  = mpih->TypDisplay();
-  mFPoints  = mpih->FPoints();
-  mHMin     = mpih->HMin();
-  mHMax     = mpih->HMax();
-  mFracMin  = mpih->FMin();
-  mFracMax  = mpih->FMax();
-  mLogScale = mpih->LogScale();
+  mFgCol = mpih->Color(); mCmap = mpih->ColMap();
+                          mRevCmap = mpih->IsColMapRev();
+  mTypScal = mpih->TypScale(); mLogScale = mpih->LogScale();
+  mTypDisp = mpih->TypDisplay(); mFPoints = mpih->FPoints();
+  mHMin = mpih->HMin(); mHMax = mpih->HMax();
+  mFracMin = mpih->FMin(); mFracMax = mpih->FMax();
   SetText();
 }
-else if (opt==6004) {
-  mpih->Print(2);
-}
+else if(opt==6004) mpih->Print(2);
 
 if(dbg) {
-  printf("H2WinArg::Process opt=%d col=%d,%d scal=%d disp=%d npt=%g\n"
-        ,opt,(int) mFgCol,(int) mCmap,mTypScal,mTypDisp,mFPoints);
+  printf("H2WinArg::Process opt=%d col=%d,%d,%d scal=%d disp=%d npt=%g\n"
+        ,opt,(int)mFgCol,(int)mCmap,(int)mRevCmap,mTypScal,mTypDisp,mFPoints);
   printf("                  min,max= %g,%g frac= %g,%g logsc= %g\n"
         ,mHMin,mHMax,mFracMin,mFracMax,mLogScale);
