%ffp /************* Header *************/ //Filter Identification Category: "Hidetaka Filter" Title: "sRGB to Lab" Filename:"FM_sRGBtoLab.8bf" Author: "Hidetaka Hama" Copyright: "2001 Hidetaka Hama" /******* Program Description *******/ ForEveryTile: { /* D65 White point */ double Xw65 = 0.9504; double Yw65 = 1.0000; double Zw65 = 1.0889; /* D50 White point */ double Xw50 = 0.9642; double Yw50 = 1.0000; double Zw50 = 0.8249; /* Pixel Value Temp */ double ri,gi,bi; double gr,gg,gb; double x65,y65,z65; double x50,y50,z50; double xx50,yy50,zz50; double lo,ao,bo; for (y=0; y0.008856) { xx50 = pow(x50/Xw50,1.0/3.0); } else { xx50 = 7.78*(x50/Xw50) + 16.0/116.0; } if ((y50/Yw50)>0.008856) { yy50 = pow(y50/Yw50,1.0/3.0); } else { yy50 = 7.78*(y50/Yw50) + 16.0/116.0; } if ((z50/Zw50)>0.008856) { zz50 = pow(z50/Zw50,1.0/3.0); } else { zz50 = 7.78*(z50/Zw50) + 16.0/116.0; } lo = 116.0 * yy50 - 16.0; ao = 500.0 * (xx50-yy50); bo = 200.0 * (yy50-zz50); /*---------- Range Change to 255 ----------*/ lo = lo * 255.0 / 100.0; ao = ao + 128.0; bo = bo + 128.0; /*------------- Output Buffer -------------*/ pset(x,y,0,(int)lo); pset(x,y,1,(int)ao); pset(x,y,2,(int)bo); } updateProgress(y,Y); updatePreview(a); } return true; }