Changeset 3545 in Sophya for trunk/SophyaPI
- Timestamp:
- Nov 17, 2008, 11:45:06 AM (17 years ago)
- Location:
- trunk/SophyaPI/PI
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaPI/PI/lut.cc
r3527 r3545 12 12 #include "lut.h" 13 13 14 14 //++ 15 // Class LUT 16 // Lib PI 17 // include lut.h 18 // 19 // Classe Look-Up table : transformation de valeurs (intensite/RGB) en index de couleur 20 //-- 21 //++ 22 // Links Voir aussi 23 // PIColorMap 24 // PIPixmap 25 // PIImage 26 //-- 15 27 /* --Methode-- */ 16 28 … … 80 92 { 81 93 int i; 82 double dx; 83 double dlx; 94 double dx, dlx, fmx; 84 95 switch (typ) 85 96 { … … 91 102 break; 92 103 case kLutType_Log : 93 dlx = log(max-min) / (double)nLevel; 104 fmx = (max-min)/(exp(1.)-1.); 105 dlx = 1./(double)nLevel; 94 106 for(i=0; i<nLevel; i++) 95 bornes[i] = min+(double)exp((double)i*dlx); 107 bornes[i] = min+((double)exp((double)i*dlx)-1.)*fmx; 108 break; 109 case kLutType_Exp : 110 dlx = (exp(1.)-1.)/(double)nLevel; 111 for(i=0; i<nLevel; i++) 112 bornes[i] = min+(double)log(1.+(double)i*dlx)*(max-min); 96 113 break; 97 114 case kLutType_Sqrt : … … 114 131 else bornes[0] = 0.5*(min+max); 115 132 // ComputeTable((ntable > nLevel) ? ntable : tablenbin); 116 ComputeTable(0);133 if (type != kLutType_RGB) ComputeTable(0); 117 134 return; 118 135 } … … 131 148 132 149 /* --Methode-- */ 133 unsigned short LUT::Apply (double x)150 unsigned short LUT::ApplyI(double x) 134 151 { 135 152 int i; … … 154 171 void LUT::ComputeTable(int nt) 155 172 { 156 if (nt <= 0) nt = 16*(nLevel+2); 173 if (nt <= 0) { 174 int fm = 16; 175 if ((nLevel+2)>4096) fm = 1; 176 else if ((nLevel+2)>2048) fm = 2; 177 else if ((nLevel+2)>1024) fm = 4; 178 else if ((nLevel+2)>512) fm = 8; 179 nt = fm*(nLevel+2); 180 } 157 181 else if (nt < (nLevel+2)) nt = (nLevel+2); 158 182 tablenbin = nt; … … 161 185 tablebinwidth = (Max()-Min())/(nt-2); 162 186 double x = Min()+0.5*tablebinwidth; 163 for(int i=0; i<nt-2; i++) { table[i] = Apply (x); x += tablebinwidth; }187 for(int i=0; i<nt-2; i++) { table[i] = ApplyI(x); x += tablebinwidth; } 164 188 } -
trunk/SophyaPI/PI/lut.h
r3527 r3545 13 13 14 14 // Type de lut possibles 15 enum {kLutType_Lin=1, kLutType_Log=2, kLutType_ Sqrt=3, kLutType_Square=4, kLutType_RGB=11 };15 enum {kLutType_Lin=1, kLutType_Log=2, kLutType_Exp=3, kLutType_Sqrt=4, kLutType_Square=5, kLutType_RGB=11 }; 16 16 17 17 class LUT … … 24 24 void SetLut(double min, double max, int typ=kLutType_Lin); 25 25 void Print(); 26 unsigned short Apply(double x); 27 unsigned short ApplyRGB(double x); 26 27 inline unsigned short Apply(double x) 28 { 29 if (type == kLutType_RGB) return ApplyRGB(x); 30 else return ApplyI(x); 31 } 28 32 29 33 inline unsigned short ApplyFast(double x) … … 42 46 protected: 43 47 void ComputeTable(int nt); 48 unsigned short ApplyI(double x); 49 unsigned short ApplyRGB(double x); 44 50 inline unsigned short AppFast(double x) 45 51 { -
trunk/SophyaPI/PI/picmap.cc
r3527 r3545 6 6 #include "picmap.h" 7 7 #include <iostream> 8 8 9 9 10 //++ … … 24 25 //-- 25 26 26 #define MXMAPIDS 3 327 #define MXMAPIDS 34 27 28 static int MapNCols[MXMAPIDS] = { 28 29 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 29 30 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 30 31 256, 256, 256, 256, 256, 256, 256, 256, 256, 256, 31 216, 512, 4096 };32 216, 512, 4096, 32768 }; 32 33 33 34 // Tables de couleurs : … … 41 42 // 1 Standard PI , 512 couleurs RGB (8x8x8) 42 43 // 1 Standard PI , 4096 couleurs RGB (16x16x16) 44 // 1 Standard PI , 32768 couleurs RGB (32x32x32) 43 45 44 46 static const char* MapNoms[MXMAPIDS] = { … … 51 53 "MIDAS_Stairs9","MIDAS_StairCase","MIDAS_Color", 52 54 "MIDAS_ManyCol","MIDAS_Idl14","MIDAS_Idl15", 53 "MultiCol16","MultiCol64","RGB216CM","RGB512CM","RGB4096CM"}; 55 "MultiCol16","MultiCol64", 56 "RGB216CM","RGB512CM","RGB4096CM","RGB32768CM"}; 54 57 55 58 static CMapId MapIds[MXMAPIDS] = { … … 62 65 CMAP_MIDAS_Stairs9, CMAP_MIDAS_StairCase, CMAP_MIDAS_Color, 63 66 CMAP_MIDAS_ManyCol, CMAP_MIDAS_Idl14, CMAP_MIDAS_Idl15, 64 CMAP_COL16, CMAP_COL64, CMAP_RGB216, CMAP_RGB512, CMAP_RGB4096, } ; 67 CMAP_COL16, CMAP_COL64, 68 CMAP_RGB216, CMAP_RGB512, CMAP_RGB4096, CMAP_RGB32768} ; 65 69 66 70 static int mColTNums[8192]; // Max 8192 tables differentes pour le moment … … 75 79 NULL, NULL, NULL, NULL, NULL, 76 80 NULL, NULL, NULL, NULL, NULL, 77 NULL, NULL, NULL, };81 NULL, NULL, NULL, NULL }; 78 82 79 83 int PIColorMap::NumberStandardColorMaps() … … 130 134 //| CMAP_RGB512 : 512 couleurs, 8x8x8 couleurs en composantes RGB 131 135 //| CMAP_RGB4096 : 4096 couleurs, 16x16x16 couleurs en composantes RGB 136 //| CMAP_RGB4096 : 32768 couleurs, 32x32x32 couleurs en composantes RGB 132 137 133 138 // Toutes les tables de couleurs standard possèdent 256 cellules de couleurs, 134 // contenant 16 ou 32 ou 128 (ou 216) couleurs distinctes, sauf CMAP_RGB512 et CMAP_RGB4096. 139 // contenant 16 ou 32 ou 128 (ou 216) couleurs distinctes, 140 // sauf CMAP_RGB512 , CMAP_RGB4096 et CMAP_RGB32768. 135 141 // 136 142 // PIColorMap(string const& nom, int nCol) … … 153 159 154 160 if (NMaxTableAuto == 0) { // Il faut allouer les tables de depart 155 if ( TotNbColors() > 4096 ) NMaxTableAuto = MXMAPIDS-1; 161 if ( TotNbColors() >= 4096 ) NMaxTableAuto = MXMAPIDS-2; 162 if ( TotNbColors() >= 65536 ) NMaxTableAuto = MXMAPIDS-1; 156 163 else NMaxTableAuto = 3; 157 164 // for(k=0; k<NMaxTableAuto; k++) { … … 167 174 for(kdx=0; kdx<MXMAPIDS; kdx++) if (id == MapIds[kdx]) break; 168 175 if (kdx == MXMAPIDS) { id = MapIds[0]; kdx = 0; } 169 for(k=0; k< NMaxTableAuto; k++) {176 for(k=0; k<=NMaxTableAuto; k++) { 170 177 if ((MapIds[k] == id) && (mMaps[k] == NULL)) { // Table pas encore alloue 171 178 mnom = MapNoms[k]; … … 185 192 if ( mMaps[k] ) { 186 193 mColTNums[mMaps[k]->mCTId] = 1; // Je force a liberer les couleurs 187 delete mMaps[k] ; 194 delete mMaps[k] ; mMaps[k] = NULL; 195 mnom = MapNoms[k]; 196 cout << " PIColorMap::PIColorMap(CMapId id) Freeing colors for ColorMap " 197 << mnom << " ... " << endl; 188 198 } 189 199 mnom = MapNoms[kdx]; 200 cout << " PIColorMap::PIColorMap(CMapId id) Allocating ColorMap " 201 << mnom << " ... " << endl; 190 202 mMaps[k] = new PIColorMap(MapIds[kdx], MapNCols[kdx], mnom); 191 203 } … … 592 604 case CMAP_RGB512 : 593 605 case CMAP_RGB4096 : 606 case CMAP_RGB32768 : 594 607 { 595 608 int nlev = 8; 596 if ( mType == CMAP_RGB4096) nlev = 16; 609 if (mType == CMAP_RGB4096) nlev = 16; 610 else if (mType == CMAP_RGB32768) nlev = 32; 597 611 int drgb = 65535/(nlev-1); 598 612 i = 0; -
trunk/SophyaPI/PI/picmap.h
r3519 r3545 52 52 CMAP_RGB216 = 993, // 216 couleurs avec toutes les nuances RGB 53 53 CMAP_RGB512 = 994, // 512 couleurs avec toutes les nuances RGB 54 CMAP_RGB4096 = 995 // 4096 couleurs avec toutes les nuances RGB 54 CMAP_RGB4096 = 995, // 4096 couleurs avec toutes les nuances RGB 55 CMAP_RGB32768 = 996 // 32768 couleurs avec toutes les nuances RGB 55 56 }; 56 57 -
trunk/SophyaPI/PI/picmapview.cc
r2652 r3545 79 79 if ( cmap && (cmp->Type() == cmap->Type()) && (cmp->Type() != CMAP_OTHER) 80 80 && (cmp->IsColorIndexReversed() == cmap->IsColorIndexReversed()) 81 && (fabs(vmin-min) < 1.e-69) && (fabs(vmax-max) > -1.e-69) ) return; 81 && (fabs(vmin-min) < 1.e-69) && (fabs(vmax-max) > -1.e-69) ) { 82 if (refr) Refresh(); 83 return; 84 } 82 85 if (cmap) delete cmap; 83 86 cmap = new PIColorMap(*cmp); … … 93 96 (cmap->IsColorIndexReversed() == revidx) && 94 97 ((vmin-min) < 1.e-69) && ((vmin-min) > -1.e-69) && 95 ((vmax-max) < 1.e-69) && ((vmax-max) > -1.e-69) ) return; 98 ((vmax-max) < 1.e-69) && ((vmax-max) > -1.e-69) ) { 99 if (refr) Refresh(); 100 return; 101 } 96 102 if (cmap) delete cmap; 97 103 cmap = new PIColorMap(cmapid); … … 117 123 118 124 int k; 125 // On limite le nombre de carres de couleurs traces, si trop de couleur ... 126 int dk = cmap->NCol()/128; 127 if (dk<1) dk=1; 119 128 if (sx > sy) { // horizontal 120 129 int xc, dx; 121 130 xc = 0; 122 for(k=0; k<cmap->NCol(); k+ +) {123 dx = (sx-xc)/(cmap->NCol()-k);131 for(k=0; k<cmap->NCol(); k+=dk) { 132 dx = dk*(sx-xc)/(cmap->NCol()-k); 124 133 g->SelForeground((*cmap), k); 125 134 g->DrawFBox(xc, 0, dx+1, sy); … … 130 139 int yc, dy; 131 140 yc = sy; 132 for(k=0; k<cmap->NCol(); k+ +) {133 dy = yc/(cmap->NCol()-k);141 for(k=0; k<cmap->NCol(); k+=dk) { 142 dy = dk*yc/(cmap->NCol()-k); 134 143 yc -= dy; 135 144 g->SelForeground((*cmap), k); -
trunk/SophyaPI/PI/picmapx.cc
r2615 r3545 187 187 mColRGB = new PIColor[mNCol]; 188 188 mNewCol = new bool[mNCol]; 189 /* Remplace par memcpy pour performances, Reza, Nov 2008 189 190 for (int i=0; i<mNCol; i++) 190 191 { mColors[i] = ((PIColorMapX *)x)->mColors[i]; … … 192 193 // C'est la table de couleur originale qui est responsable de liberer les couleurs - Reza 8/2/98 193 194 mNewCol[i] = false; } 194 } 195 -> memcpy (Nov08) */ 196 memcpy(mColors, ((PIColorMapX *)x)->mColors, sizeof(PIXColor)*mNCol); 197 memcpy(mColRGB, ((PIColorMapX *)x)->mColRGB, sizeof(PIColor)*mNCol); 198 // C'est la table de couleur originale qui est responsable de liberer les couleurs - Reza 8/2/98 199 for (int i=0; i<mNCol; i++) mNewCol[i] = false; 200 } -
trunk/SophyaPI/PI/piimage.cc
r3527 r3545 628 628 if (opts.substr(4,3) == "lin") typlut=kLutType_Lin; 629 629 else if (opts.substr(4,3) == "log") typlut=kLutType_Log; 630 else if (opts.substr(4,3) == "exp") typlut=kLutType_Exp; 630 631 else if (opts.substr(4,4) == "sqrt") typlut=kLutType_Sqrt; 631 632 else if (opts.substr(4,6) == "square") typlut=kLutType_Square; … … 724 725 { 725 726 if (!cmp) return; 727 int ncolold = 0; 728 if (cmap) ncolold = cmap->NCol(); 729 bool fgapp = false; 730 if (refr && cmp->NCol() != ncolold) { 731 fgapp = true; refr = false; 732 } 726 733 int cmapid = cmp->Type(); 727 734 if ( (cmapid == CMAP_GREY32) || (cmapid == CMAP_GREYINV32) || … … 732 739 if (refr) { xcurs = ycurs = -1; } 733 740 if (zow) zow->SetColMap(cmp, refr); 734 if (gvw) gvw->SetColMap(cmp, refr); 741 if (gvw) { 742 if (cmap->NCol() != ncolold) { 743 ComputeGloVPixmap(); 744 SetGloVPixmap(); 745 } 746 else gvw->SetColMap(cmp, refr); 747 } 735 748 if (cmvw) cmvw->SetColMap(cmap, Lut()->Min(), Lut()->Max(), refr); 749 if (fgapp) Apply(); 736 750 return; 737 751 } … … 740 754 void PIImage::SetColMapId(CMapId cmapid, bool revidx, bool refr) 741 755 { 756 int ncolold = 0; 757 if (cmap) ncolold = cmap->NCol(); 742 758 if ( (cmapid == CMAP_GREY32) || (cmapid == CMAP_GREYINV32) || 743 759 (cmapid == CMAP_GREY128) || (cmapid == CMAP_GREYINV128)) mdrw->GetGraphicAtt().SetColAtt(PI_Red); 744 760 else mdrw->GetGraphicAtt().SetColAtt(PI_Turquoise); 745 761 PIPixmap::SetColMapId(cmapid, revidx, false); 762 if (refr) { xcurs = ycurs = -1; } 763 bool fgapp = false; 764 if (refr && cmap->NCol() != ncolold) { 765 fgapp = true; refr = false; 766 } 746 767 if (lut) lut->SetNCol(GetColMap()->NCol()); 747 768 if (refr) Refresh(); 748 769 if (zow) zow->SetColMapId(cmapid, revidx, refr); 749 if (gvw) gvw->SetColMapId(cmapid, revidx, refr); 770 if (gvw) { 771 if (cmap->NCol() != ncolold) { 772 ComputeGloVPixmap(); 773 SetGloVPixmap(); 774 } 775 else gvw->SetColMapId(cmapid, revidx, refr); 776 } 750 777 if (cmvw) cmvw->SetColMapId(cmapid, revidx, Lut()->Min(), Lut()->Max(), refr); 778 if (fgapp) Apply(); 751 779 return; 752 780 } -
trunk/SophyaPI/PI/piimgtools.cc
r3527 r3545 99 99 mOpt[0] = new PIOptMenu(this, "imglut-opt-1", 1.5*bsx, bsy, cpx, cpy); 100 100 mOpt[0]->AppendItem("Linear", 1100); 101 mOpt[0]->AppendItem("Log.", 1101); 102 mOpt[0]->AppendItem("Sqrt", 1102); 103 mOpt[0]->AppendItem("Square", 1103); 104 mOpt[0]->AppendItem("RGB", 1104); 101 mOpt[0]->AppendItem("Log", 1101); 102 mOpt[0]->AppendItem("Exp", 1102); 103 mOpt[0]->AppendItem("Sqrt", 1103); 104 mOpt[0]->AppendItem("Square", 1104); 105 mOpt[0]->AppendItem("RGB", 1105); 105 106 mOpt[0]->SetValue(1100); 106 107 mOpt[0]->SetBinding(PIBK_elastic,PIBK_elastic, PIBK_elastic,PIBK_elastic); … … 175 176 mCasc[1] = new PIMenu(mOptzc[0]->Menu(), "PIUniCol32"); 176 177 mCasc[2] = new PIMenu(mOptzc[0]->Menu(), "MIDAS-CMap"); 177 178 int nsct1,nsct2,nsct3,nsct4; 178 mCasc[3] = new PIMenu(mOptzc[0]->Menu(), "RGB-CMap"); 179 180 int nsct1,nsct2,nsct3,nsct4,nsct5; 179 181 // D'abord les tables standard de PI 32 couleurs 180 182 nsct1 = 5; // Les 5 premieres tables … … 191 193 mOptzc[0]->AppendPDMenu(mCasc[1]); 192 194 // Apres les tables importees de MIDAS 193 nsct4 = PIColorMap::NumberStandardColorMaps()- 5; // Les reste jusqu'a l'avant derniere195 nsct4 = PIColorMap::NumberStandardColorMaps()-6; // Les reste jusqu'a l'avant derniere 194 196 for(kcc=nsct3; kcc<nsct4; kcc++) 195 197 mCasc[2]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc); 196 198 mOptzc[0]->AppendPDMenu(mCasc[2]); 197 // Les tables qui restent ( RGB218, Col16 , ... ) 198 for(kcc=nsct4; kcc< PIColorMap::NumberStandardColorMaps(); kcc++)199 nsct5 = PIColorMap::NumberStandardColorMaps()-4; // Les reste jusqu'aux tables RGB 200 for(kcc=nsct4; kcc<nsct5; kcc++) 199 201 mOptzc[0]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc); 200 // On ajoute un CheckItem pour inverser les index de table de couleur 202 // Les tables de couleur RGB ( RGB216, RGB512 , ... ) 203 for(kcc=nsct5; kcc<PIColorMap::NumberStandardColorMaps(); kcc++) 204 mCasc[3]->AppendItem(PIColorMap::GetStandardColorMapName(kcc).c_str(), 201+kcc); 205 mOptzc[0]->AppendPDMenu(mCasc[3]); 206 // On ajoute un CheckItem pour inverser les index de table de couleur 201 207 mOptzc[0]->Menu()->AppendSeparator(); 202 208 mOptzc[0]->Menu()->AppendCheckItem("Reverse CMap", 299); … … 311 317 for(i=0; i<3; i++) delete mBut[i]; 312 318 delete mButR; 313 for(i=0; i< 2; i++) delete mCasc[i];319 for(i=0; i<4; i++) delete mCasc[i]; 314 320 for(i=0; i<5; i++) delete mButsz[i]; 315 321 for(i=0; i<3; i++) delete mButcax[i]; … … 372 378 if ( (mpii->Lut())->Type() == kLutType_Lin ) mOpt[0]->SetValue(1100); 373 379 else if( (mpii->Lut())->Type() == kLutType_Log ) mOpt[0]->SetValue(1101); 374 else if( (mpii->Lut())->Type() == kLutType_Sqrt ) mOpt[0]->SetValue(1102); 375 else if( (mpii->Lut())->Type() == kLutType_Square ) mOpt[0]->SetValue(1103); 376 else if( (mpii->Lut())->Type() == kLutType_RGB ) mOpt[0]->SetValue(1104); 380 else if( (mpii->Lut())->Type() == kLutType_Exp ) mOpt[0]->SetValue(1102); 381 else if( (mpii->Lut())->Type() == kLutType_Sqrt ) mOpt[0]->SetValue(1103); 382 else if( (mpii->Lut())->Type() == kLutType_Square ) mOpt[0]->SetValue(1104); 383 else if( (mpii->Lut())->Type() == kLutType_RGB ) mOpt[0]->SetValue(1105); 377 384 else mOpt[0]->SetValue(1100); 378 385 } … … 390 397 double min, max, del; 391 398 int lauto, typ; 392 int typlut[ 5] = {kLutType_Lin, kLutType_Log, kLutType_Sqrt, kLutType_Square, kLutType_RGB } ;399 int typlut[6] = {kLutType_Lin, kLutType_Log, kLutType_Exp, kLutType_Sqrt, kLutType_Square, kLutType_RGB } ; 393 400 AutoLutType alts[13] = { AutoLut_No, 394 401 AutoLut_MeanSigma, AutoLut_MeanSigma, AutoLut_MeanSigma, … … 448 455 if ((lauto < 0) || (lauto > 12)) lauto = 12; 449 456 typ = mOpt[0]->GetValue() - 1100; 450 if ( (typ < 0) || (typ > 4) ) typ = 0;457 if ( (typ < 0) || (typ > 5) ) typ = 0; 451 458 (PIImage::CurrentPIImage())->SetLut(alts[lauto], min, max, typlut[typ], nsas[lauto]); 452 459 if (msg == 2500) { -
trunk/SophyaPI/PI/pipixmapx.cc
r3519 r3545 8 8 #include "pipixmapx.h" 9 9 #include <iostream> 10 10 11 using namespace std; 11 12 -
trunk/SophyaPI/PI/pipixutils.cc
r3519 r3545 92 92 sx_ = sy_ = 0; 93 93 rgbpix_ = NULL; 94 // lecture fichier a faire94 ReadFrFile(filename); 95 95 } 96 96 … … 100 100 } 101 101 102 voidPIPixRGBArray::SaveToFile(const char * filename)102 int PIPixRGBArray::SaveToFile(const char * filename) 103 103 { 104 // ECRIRE fichier A FAIRE 105 return; 104 FILE * fip = fopen(filename,"wb"); 105 if (fip == NULL) { 106 cout << " PIPixRGBArray::SaveToFile()/Error opening file " << filename << endl; 107 return 1; 108 } 109 char buff[48]; 110 for(int k=0; k<48; k++) buff[k] = '\0'; 111 sprintf(buff, "PI-RGB File Sx,Sy= %d %d", sx_, sy_); 112 fwrite((void *)buff, 1, 48, fip); 113 fwrite((void *)rgbpix_, sizeof(PIPixRGB), sx_*sy_, fip); 114 fclose(fip); 115 // cout << " PIPixRGBArray::SaveToFile()*DBG* sizeof(PIPixRGB)=" << sizeof(PIPixRGB) 116 // << " sx*sy=" << sx_*sy_ << endl; 117 return 0; 106 118 } 107 119 120 int PIPixRGBArray::ReadFrFile(const char * filename) 121 { 122 if (rgbpix_) { 123 delete[] rgbpix_; 124 sx_ = sy_ = 0; 125 rgbpix_ = NULL; 126 } 127 FILE * fip = fopen(filename,"rb"); 128 if (fip == NULL) { 129 cout << " PIPixRGBArray::ReadFrFile()/Error opening file " << filename << endl; 130 return 1; 131 } 132 char buff[48]; 133 fread((void *)buff, 1, 48, fip); 134 if (strncmp(buff, "PI-RGB File Sx,Sy=",18) != 0) { 135 cout << " PIPixRGBArray::ReadFrFile()/Error wrong header - file=" << filename << endl; 136 return 2; 137 } 138 sscanf(buff+18,"%d %d", &sx_, &sy_); 139 size_t sz = sx_*sy_; 140 if (sz>0) { 141 rgbpix_ = new PIPixRGB[sz]; 142 fread((void *)rgbpix_, sizeof(PIPixRGB), sx_*sy_, fip); 143 } 144 else rgbpix_ = NULL; 145 146 fclose(fip); 147 // cout << " PIPixRGBArray::ReadFrFile()*DBG* sizeof(PIPixRGB)=" << sizeof(PIPixRGB) 148 // << " Sx=" << sx_ << " Sy=" << sy_ << endl; 149 return 0; 150 } 108 151 -
trunk/SophyaPI/PI/pipixutils.h
r3519 r3545 70 70 { return rgbpix_[j*sx_+i]; } 71 71 72 void SaveToFile(const char * filename); 72 int SaveToFile(const char * filename); 73 int ReadFrFile(const char * filename); 73 74 74 75 protected:
Note:
See TracChangeset
for help on using the changeset viewer.