// Allocate conversion state structures and make look_up tables for // the Yr,Yb,Yg <=> r,g,b conversions. public static int TIFFCIELabToRGBInit(TIFFCIELabToRGB cielab, TIFFDisplay display, double[] refWhite) { cielab.range = TIFFCIELabToRGB.CIELABTORGB_TABLE_RANGE; cielab.display.CopyTo(display); cielab.rstep = (cielab.display.d_YCR - cielab.display.d_Y0R) / cielab.range; cielab.gstep = (cielab.display.d_YCG - cielab.display.d_Y0G) / cielab.range; cielab.bstep = (cielab.display.d_YCB - cielab.display.d_Y0B) / cielab.range; double gammaR = 1.0 / cielab.display.d_gammaR; double gammaG = 1.0 / cielab.display.d_gammaG; double gammaB = 1.0 / cielab.display.d_gammaB; for (int i = 0; i <= cielab.range; i++) { double v = (double)i / cielab.range; cielab.Yr2r[i] = cielab.display.d_Vrwr * ((float)Math.Pow(v, gammaR)); cielab.Yg2g[i] = cielab.display.d_Vrwg * ((float)Math.Pow(v, gammaG)); cielab.Yb2b[i] = cielab.display.d_Vrwb * ((float)Math.Pow(v, gammaB)); } // Init reference white point cielab.X0 = (float)refWhite[0]; cielab.Y0 = (float)refWhite[1]; cielab.Z0 = (float)refWhite[2]; return(0); }
// Allocate conversion state structures and make look_up tables for // the Yr,Yb,Yg <=> r,g,b conversions. public static int TIFFCIELabToRGBInit(TIFFCIELabToRGB cielab, TIFFDisplay display, double[] refWhite) { cielab.range=TIFFCIELabToRGB.CIELABTORGB_TABLE_RANGE; cielab.display.CopyTo(display); cielab.rstep=(cielab.display.d_YCR-cielab.display.d_Y0R)/cielab.range; cielab.gstep=(cielab.display.d_YCG-cielab.display.d_Y0G)/cielab.range; cielab.bstep=(cielab.display.d_YCB-cielab.display.d_Y0B)/cielab.range; double gammaR=1.0/cielab.display.d_gammaR; double gammaG=1.0/cielab.display.d_gammaG; double gammaB=1.0/cielab.display.d_gammaB; for(int i=0; i<=cielab.range; i++) { double v=(double)i/cielab.range; cielab.Yr2r[i]=cielab.display.d_Vrwr*((float)Math.Pow(v, gammaR)); cielab.Yg2g[i]=cielab.display.d_Vrwg*((float)Math.Pow(v, gammaG)); cielab.Yb2b[i]=cielab.display.d_Vrwb*((float)Math.Pow(v, gammaB)); } // Init reference white point cielab.X0=(float)refWhite[0]; cielab.Y0=(float)refWhite[1]; cielab.Z0=(float)refWhite[2]; return 0; }
public void CopyTo(TIFFDisplay t) { t.d_mat[0, 0] = d_mat[0, 0]; t.d_mat[0, 1] = d_mat[0, 1]; t.d_mat[0, 2] = d_mat[0, 2]; t.d_mat[1, 0] = d_mat[1, 0]; t.d_mat[1, 1] = d_mat[1, 1]; t.d_mat[1, 2] = d_mat[1, 2]; t.d_mat[2, 0] = d_mat[2, 0]; t.d_mat[2, 1] = d_mat[2, 1]; t.d_mat[2, 2] = d_mat[2, 2]; t.d_YCR = d_YCR; t.d_YCG = d_YCG; t.d_YCB = d_YCB; t.d_Vrwr = d_Vrwr; t.d_Vrwg = d_Vrwg; t.d_Vrwb = d_Vrwb; t.d_Y0R = d_Y0R; t.d_Y0G = d_Y0G; t.d_Y0B = d_Y0B; t.d_gammaR = d_gammaR; t.d_gammaG = d_gammaG; t.d_gammaB = d_gammaB; }
public void CopyTo(TIFFDisplay t) { t.d_mat[0, 0]=d_mat[0, 0]; t.d_mat[0, 1]=d_mat[0, 1]; t.d_mat[0, 2]=d_mat[0, 2]; t.d_mat[1, 0]=d_mat[1, 0]; t.d_mat[1, 1]=d_mat[1, 1]; t.d_mat[1, 2]=d_mat[1, 2]; t.d_mat[2, 0]=d_mat[2, 0]; t.d_mat[2, 1]=d_mat[2, 1]; t.d_mat[2, 2]=d_mat[2, 2]; t.d_YCR=d_YCR; t.d_YCG=d_YCG; t.d_YCB=d_YCB; t.d_Vrwr=d_Vrwr; t.d_Vrwg=d_Vrwg; t.d_Vrwb=d_Vrwb; t.d_Y0R=d_Y0R; t.d_Y0G=d_Y0G; t.d_Y0B=d_Y0B; t.d_gammaR=d_gammaR; t.d_gammaG=d_gammaG; t.d_gammaB=d_gammaB; }