Changeset 389 in Sophya


Ignore:
Timestamp:
Aug 13, 1999, 4:00:53 PM (26 years ago)
Author:
ercodmgr
Message:

coupes X,Y,D,A cmv 13/8/99

Location:
trunk/SophyaPI/PI
Files:
4 edited

Legend:

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

    r343 r389  
    104104showinfo = false;
    105105
    106 // Fenetre et ScDrawWdg pour les coupes
     106// Fenetre et ScDrawWdg pour les coupes
     107selcuts = 3;
    107108cutwin = NULL;
    108109cutscw = NULL;
     
    317318  cutarrx = new PIImg1DArrAdapter();
    318319  cutarry = new PIImg1DArrAdapter();
     320  cutarrd = new PIImg1DArrAdapter();
     321  cutarra = new PIImg1DArrAdapter();
    319322  PIYfXDrawer * drw;
     323  string dum = "";
    320324  drw = new PIYfXDrawer(cutarrx, NULL, true);
    321   drw->SetColAtt(PI_Red);
    322   drw->SetMarkerAtt(5, PI_CrossMarker);
    323   drw->SetLineAtt(PI_ThinLine);
    324   cutscw->AddScDrawer(drw, true);
     325    drw->SetColAtt(PI_Red);
     326    drw->SetMarkerAtt(5, PI_CrossMarker);
     327    drw->SetLineAtt(PI_ThinLine);
     328    cutscw->AddScDrawer(drw, true);
     329    dum += "Red: X, ";
    325330  drw = new PIYfXDrawer(cutarry, NULL, true);
    326   drw->SetColAtt(PI_Blue);
    327   drw->SetMarkerAtt(5, PI_TriangleMarker);
    328   drw->SetLineAtt(PI_ThinLine);
    329   cutscw->AddScDrawer(drw, true);
    330   cutscw->SetTitles("Red: X , Blue: Y");
     331    drw->SetColAtt(PI_Blue);
     332    drw->SetMarkerAtt(5, PI_TriangleMarker);
     333    drw->SetLineAtt(PI_ThinLine);
     334    cutscw->AddScDrawer(drw, true);
     335    dum += "Blue: Y, ";
     336  drw = new PIYfXDrawer(cutarrd, NULL, true);
     337    drw->SetColAtt(PI_Green);
     338    drw->SetMarkerAtt(5, PI_PlusMarker);
     339    drw->SetLineAtt(PI_ThinLine);
     340    cutscw->AddScDrawer(drw, true);
     341    dum += "Green: XY, ";
     342  drw = new PIYfXDrawer(cutarra, NULL, true);
     343    drw->SetColAtt(PI_Orange);
     344    drw->SetMarkerAtt(5, PI_BoxMarker);
     345    drw->SetLineAtt(PI_ThinLine);
     346    cutscw->AddScDrawer(drw, true);
     347    dum += "Orange: -XY";
     348  cutscw->SetTitles(dum.c_str());
    331349  UpdateCuts();
    332350  cutwin->Show();
     
    337355  delete cutwin;
    338356  cutwin = NULL;
    339   cutscw = NULL;
    340   }
     357  cutscw = NULL;
     358  }
     359}
     360
     361/* --Methode-- */
     362void PIImage::SelectCuts(unsigned xyda)
     363// choix des cuts pour le display:
     364// 1=axe des (X), 2=axe des (Y), 4=diag (X,Y), 8=anti-diag (X,-Y)
     365{
     366selcuts = xyda;
     367if(!(selcuts&15)) selcuts = 3;
     368UpdateCuts();
    341369}
    342370
     
    959987if (!cutwin || !img) return;
    960988
    961 int hsx, hsy;
     989int hsx, hsy, hsmin;
     990P2DArrayAdapter * img0=NULL;
    962991hsx = XSzPave()/2;
    963992hsy = YSzPave()/2;
    964 cutarrx->SetData(img, false, 2*hsx+1, XPave(), YPave());
    965 cutarry->SetData(img, true, 2*hsy+1, XPave(), YPave());
     993hsmin = (hsx<hsy)? hsx: hsy;
     994if(selcuts&1) img0=img; else img0=NULL;
     995  cutarrx->SetData(img0, 1, 2*hsx+1, XPave(), YPave());
     996if(selcuts&2) img0=img; else img0=NULL;
     997  cutarry->SetData(img0, 2, 2*hsy+1, XPave(), YPave());
     998if(selcuts&4) img0=img; else img0=NULL;
     999  cutarrd->SetData(img0, 4, 2*hsmin+1, XPave(), YPave());
     1000if(selcuts&8) img0=img; else img0=NULL;
     1001  cutarra->SetData(img0, 8, 2*hsmin+1, XPave(), YPave());
     1002
    9661003double x1,y1,x2,y2;
    967 double xmin, xmax, ymin, ymax;
    9681004img->Coord(XPave()-hsx, YPave()-hsy, x1, y1);
    9691005img->Coord(XPave()+hsx, YPave()+hsy, x2, y2);
    970 if (x1 < x2)  cutarrx->DefineXCoordinate(-cutarrx->Size()/2, 1.);
    971 else   cutarrx->DefineXCoordinate(cutarrx->Size()/2, -1.);
    972 if (y1 < y2)  cutarry->DefineXCoordinate(-cutarry->Size()/2, 1.);
    973 else   cutarry->DefineXCoordinate(cutarry->Size()/2, -1.);
     1006  if(x1<x2) cutarrx->DefineXCoordinate(-cutarrx->Size()/2,  1.);
     1007    else    cutarrx->DefineXCoordinate( cutarrx->Size()/2, -1.);
     1008  if(y1<y2) cutarry->DefineXCoordinate(-cutarry->Size()/2,  1.);
     1009    else    cutarry->DefineXCoordinate( cutarry->Size()/2, -1.);
     1010img->Coord(XPave()-hsmin, YPave()-hsmin, x1, y1);
     1011img->Coord(XPave()+hsmin, YPave()+hsmin, x2, y2);
     1012  if(x1<x2) cutarrd->DefineXCoordinate(-cutarrd->Size()/2,  1.);
     1013    else    cutarrd->DefineXCoordinate( cutarrd->Size()/2, -1.);
     1014  if(x1<x2) cutarra->DefineXCoordinate(-cutarra->Size()/2,  1.);
     1015    else    cutarra->DefineXCoordinate( cutarra->Size()/2, -1.);
    9741016
    9751017// On calcule les limites :
    976 if (cutarrx->Size() > cutarry->Size() ) {
    977   xmax = cutarrx->Size()/2. + 1.;   
    978   xmin = -xmax;
    979 }
    980 else {
    981   xmax = cutarry->Size()/2. + 1.;   
    982   xmin = -xmax;
    983 }
    984  
    985 int i;
    986 double cv;
    987 ymax = ymin = cutarrx->Value(0);
    988 for(i=1; i<cutarrx->Size(); i++) {
    989   cv = cutarrx->Value(i);
    990   if (cv < ymin)  ymin = cv;
    991   if (cv > ymax)  ymax = cv;
    992 }
    993 for(i=0; i<cutarry->Size(); i++) {
    994   cv = cutarry->Value(i);
    995   if (cv < ymin)  ymin = cv;
    996   if (cv > ymax)  ymax = cv;
     1018double xmin=0., xmax=0., ymin=0., ymax=0.; bool vue=false;
     1019if(cutarrx->Size()) {
     1020  if(!vue) vue=true;
     1021  xmax=cutarrx->Size()/2.+1.; xmin=-xmax;
     1022}
     1023if(cutarry->Size()) {
     1024  if(!vue)
     1025    {vue=true; xmax=cutarry->Size()/2.+1.; xmin=-xmax;}
     1026  else if(cutarry->Size()>xmax)
     1027    {xmax=cutarry->Size()/2.+1.; xmin=-xmax;}
     1028}
     1029if(cutarrd->Size()) {
     1030  if(!vue)
     1031    {vue=true; xmax=cutarrd->Size()/2.+1.; xmin=-xmax;}
     1032  else if(cutarrd->Size()>xmax)
     1033    {xmax=cutarrd->Size()/2.+1.; xmin=-xmax;}
     1034}
     1035if(cutarra->Size()) {
     1036  if(!vue)
     1037    {vue=true; xmax=cutarra->Size()/2.+1.; xmin=-xmax;}
     1038  else if(cutarra->Size()>xmax)
     1039    {xmax=cutarra->Size()/2.+1.; xmin=-xmax;}
     1040}
     1041
     1042int i; double cv; vue = false;
     1043if(cutarrx->Size()) {
     1044  vue=true; ymax=ymin=cutarrx->Value(0);
     1045  for(i=0; i<cutarrx->Size(); i++) {
     1046    cv = cutarrx->Value(i);
     1047    if (cv < ymin)  ymin = cv;
     1048    if (cv > ymax)  ymax = cv;
     1049  }
     1050}
     1051if(cutarry->Size()) {
     1052  if(!vue) {vue=true; ymax=ymin=cutarry->Value(0);}
     1053  for(i=0; i<cutarry->Size(); i++) {
     1054    cv = cutarry->Value(i);
     1055    if (cv < ymin)  ymin = cv;
     1056    if (cv > ymax)  ymax = cv;
     1057  }
     1058}
     1059if(cutarrd->Size()) {
     1060  if(!vue) {vue=true; ymax=ymin=cutarrd->Value(0);}
     1061  for(i=0; i<cutarrd->Size(); i++) {
     1062    cv = cutarrd->Value(i);
     1063    if (cv < ymin)  ymin = cv;
     1064    if (cv > ymax)  ymax = cv;
     1065  }
     1066}
     1067if(cutarra->Size()) {
     1068  if(!vue) {vue=true; ymax=ymin=cutarra->Value(0);}
     1069  for(i=0; i<cutarra->Size(); i++) {
     1070    cv = cutarra->Value(i);
     1071    if (cv < ymin)  ymin = cv;
     1072    if (cv > ymax)  ymax = cv;
     1073  }
    9971074}
    9981075ymin -= 0.05*(ymax-ymin);
     
    12361313{
    12371314data = NULL;
    1238 fgay = false;
     1315fgaxyda = 1;
    12391316off1 = off2 = 0;
    12401317}
    12411318
    12421319/* --Methode-- */
    1243 void PIImage::PIImg1DArrAdapter::SetData(P2DArrayAdapter* d, bool ax, int sz, int o1, int o2)
    1244 {
    1245 data = d;
    1246 fgay = ax;
     1320void PIImage::PIImg1DArrAdapter::SetData(P2DArrayAdapter* d, unsigned short axyda
     1321                                        ,int sz,int o1,int o2)
     1322// axyda&1 axe (X), axyda&2 axe (Y), axyda&4 diag (X,Y), axyda&8 anti-diag (X,-Y)
     1323{
     1324data = d; mSize = 0;
     1325fgaxyda = axyda;
     1326if(!data) return;
    12471327if (o1 < 0)  o1 = 0;
    12481328if (o2 < 0)  o2 = 0;
     
    12601340{
    12611341if (!data) return(0.);
    1262 int k;
    1263 if (fgay) {
     1342int j,k;
     1343if (fgaxyda&1) {          // Axe X
     1344  j = off1-mSize/2+i;
     1345  if (j<0) j=0; if(j>=data->XSize()) j=data->XSize()-1;
     1346  return((*data)(j,off2));
     1347  }
     1348else if (fgaxyda&2) {     // Axe Y
    12641349  k = off2-mSize/2+i;
    1265   if (k < 0)  k = 0;
    1266   if (k >= data->YSize()) k = data->YSize()-1;
    1267   return((*data)(off1, k));
    1268   }
    1269 else {
    1270   k = off1-mSize/2+i;
    1271   if (k < 0)  k = 0;
    1272   if (k >= data->XSize()) k = data->XSize()-1;
    1273   return((*data)(k, off2));
    1274   }
    1275 }
     1350  if(k<0) k=0; if(k>=data->YSize()) k=data->YSize()-1;
     1351  return((*data)(off1,k));
     1352  }
     1353else if (fgaxyda&4) {     // Axe XY
     1354  j = off1-mSize/2+i;
     1355  k = off2-mSize/2+i;
     1356  if(j<0) j=0; if(j>=data->XSize()) j=data->XSize()-1;
     1357  if(k<0) k=0; if(k>=data->YSize()) k=data->YSize()-1;
     1358  return((*data)(j,k));
     1359  }
     1360else if (fgaxyda&8) {     // Axe -XY
     1361  j = off1-mSize/2+i;
     1362  k = off2+mSize/2-i;
     1363  if(j<0) j=0; if(j>=data->XSize()) j=data->XSize()-1;
     1364  if(k<0) k=0; if(k>=data->YSize()) k=data->YSize()-1;
     1365  return((*data)(j,k));
     1366  }
     1367return(0.);
     1368}
  • trunk/SophyaPI/PI/piimage.h

    r329 r389  
    4949
    5050  void ShowCuts(bool cuts=true);
     51  void SelectCuts(unsigned xyda=3);
    5152
    5253//  Gestion du choix de LUT, facteur d agrandissement, table de couleur
     
    110111                     PIImg1DArrAdapter();
    111112     virtual double  Value(int i);
    112      virtual void    SetData(P2DArrayAdapter* d, bool ax, int sz, int o1, int o2);
     113     virtual void    SetData(P2DArrayAdapter* d, unsigned short axyda, int sz, int o1, int o2);
    113114  protected :
    114115    P2DArrayAdapter* data;
    115     bool fgay;
     116    unsigned short fgaxyda;
    116117    int off1, off2;
    117118  };
     
    176177  PIColors cucol;    // Attribut de couleur du curseur
    177178  int xszpav, yszpav;
    178 // Pour gerer une fenetre pour les coupes en X,Y 
    179   bool hascuts;
     179// Pour gerer une fenetre pour les coupes en X,Y
     180  unsigned short selcuts;
    180181  PIWindow * cutwin;
    181182  PIScDrawWdg * cutscw;
    182183  PIImg1DArrAdapter * cutarrx;
    183184  PIImg1DArrAdapter * cutarry;
     185  PIImg1DArrAdapter * cutarrd;
     186  PIImg1DArrAdapter * cutarra;
    184187
    185188// buffer pour copier-coller
  • trunk/SophyaPI/PI/piimgtools.cc

    r316 r389  
    8383cpy += 2*spy+bsy;
    8484cpx = 3*spx;
    85 mBut[0] = new PIButton(this, "Apply", 2500, bsx*1.75, bsy, cpx, cpy);
    86 cpx += bsx*1.75+2*spx;
    87 mBut[1] = new PIButton(this, "Dismiss", 2600,  bsx*1.75, bsy, cpx, cpy);
     85mBut[0] = new PIButton(this, "Apply", 2500, bsx, bsy, cpx, cpy);
    8886mBut[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     87cpx += bsx+2*spx;
     88mBut[1] = new PIButton(this, "Dismiss", 2600, bsx, bsy, cpx, cpy);
    8989mBut[1]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
     90cpx += bsx+2*spx;
     91mOptCut = new PIOptMenu(this, "Cut", bsx, bsy, cpx, cpy);
     92mOptCut->AppendItem("Cut X",301);
     93mOptCut->AppendItem("Cut Y",302);
     94mOptCut->AppendItem("CutXY",303);
     95mOptCut->AppendItem("Cut D",304);
     96mOptCut->AppendItem("Cut A",308);
     97mOptCut->AppendItem("CutDA",312);
     98mOptCut->AppendItem("CutAll",315);
     99mOptCut->SetValue(303);
     100mOptCut->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic);
    90101
    91102int offy = cpy+bsy+spy*2;
     
    217228for(i=0; i<3; i++)  delete mButcax[i];
    218229for(i=0; i<5; i++)  delete mButoa[i];
    219 
     230delete mOptCut;
    220231}
    221232
     
    243254mOptzc[0]->SetValue(203);
    244255mOptzc[1]->SetValue(101);
     256mOptCut->SetValue(303);
    245257return;
    246258}
     
    383395  PIImage::CurrentPIImage()->SetColMapId(cmap[msg-201], true);
    384396
     397// Cuts
     398if(301<=msg && msg<=315) {
     399  PIImage::CurrentPIImage()->SelectCuts((unsigned short) (msg-300));
     400}
     401
    385402return;
    386403}
  • trunk/SophyaPI/PI/piimgtools.h

    r119 r389  
    4343// Options show/hide
    4444  PIButton* mButoa[5];
     45// Options Cuts
     46  PIOptMenu* mOptCut;
    4547};
    4648
Note: See TracChangeset for help on using the changeset viewer.