private void DuaICCProfile_Data_Data(ILGenerator CMIL, ICCProfile profile1, ICCProfile profile2) { if (profile1.PCS == profile2.PCS) { TempColor1 = profile1.GetPCSColor(true); var c1 = new ConversionCreator_ICC(CMIL, Data, InColor, TempColor1, false); c1.SetConversionMethod(); var c2 = new ConversionCreator_ICC(c1, TempColor1, OutColor, true); c1.SetConversionMethod(); } else { TempColor1 = profile1.GetPCSColor(true); TempColor2 = profile2.GetPCSColor(true); var c1 = new ConversionCreator_ICC(CMIL, Data, InColor, TempColor1, false); c1.SetConversionMethod(); var c2 = new ConversionCreator_Color(c1, TempColor1, TempColor2, false); c2.SetConversionMethod(); var c3 = new ConversionCreator_ICC(c2, TempColor2, OutColor, true); c3.SetConversionMethod(); } }
/// <summary> /// Sets the conversion method with the provided <see cref="ILGenerator"/> /// </summary> protected virtual void GetConversionMethod(ILGenerator CMIL) { var iccIn = InColor.Space as ColorspaceICC; var iccOut = OutColor.Space as ColorspaceICC; if (iccIn != null && iccOut != null) { if (iccIn.Profile.Equals(iccOut.Profile)) { SingleICCProfile(CMIL, iccIn.Profile); } else { DuaICCProfile(CMIL, iccIn.Profile, iccOut.Profile); } } else if (iccIn != null) { SingleICCProfile(CMIL, iccIn.Profile); } else if (iccOut != null) { SingleICCProfile(CMIL, iccOut.Profile); } else { var colCreator = new ConversionCreator_Color(CMIL, Data, InColor, OutColor); colCreator.SetConversionMethod(); } }
private void DuaICCProfile_PCS_PCS(ILGenerator CMIL, ICCProfile profile1, ICCProfile profile2) { //PCS1 == PCS2 will result in an assign //PCS1 != PCS2 will result in a conversion var c = new ConversionCreator_Color(CMIL, Data, InColor, OutColor); c.SetConversionMethod(); }
private void SingleICCProfile(ILGenerator CMIL, ICCProfile profile) { var inType = InColor.GetType(); var outType = OutColor.GetType(); if (profile.Class == ProfileClassName.Abstract) { if (inType == profile.PCSType && outType == profile.PCSType) { var c = new ConversionCreator_ICC(CMIL, Data, InColor, OutColor); c.SetConversionMethod(); } else { throw new ConversionSetupException(); } } else if (profile.Class == ProfileClassName.DeviceLink) { if (inType == profile.DataColorspaceType && outType == profile.PCSType) { var c = new ConversionCreator_ICC(CMIL, Data, InColor, OutColor); c.SetConversionMethod(); } else { throw new ConversionSetupException(); } } else { if (inType == profile.PCSType) { if (outType == profile.DataColorspaceType) { var c = new ConversionCreator_ICC(CMIL, Data, InColor, OutColor); c.SetConversionMethod(); } else { var c = new ConversionCreator_Color(CMIL, Data, InColor, OutColor); c.SetConversionMethod(); } } else if (inType == profile.DataColorspaceType) { if (outType == profile.PCSType) { var c = new ConversionCreator_ICC(CMIL, Data, InColor, OutColor); c.SetConversionMethod(); } else { TempColor1 = profile.GetPCSColor(true); var c1 = new ConversionCreator_ICC(CMIL, Data, InColor, TempColor1, false); c1.SetConversionMethod(); var c2 = new ConversionCreator_Color(c1, TempColor1, OutColor, true); c2.SetConversionMethod(); } } else { if (outType == profile.DataColorspaceType) { TempColor1 = profile.GetPCSColor(true); var c1 = new ConversionCreator_Color(CMIL, Data, InColor, TempColor1, false); c1.SetConversionMethod(); var c2 = new ConversionCreator_ICC(c1, TempColor1, OutColor, true); c2.SetConversionMethod(); } else { var c = new ConversionCreator_Color(CMIL, Data, InColor, OutColor); c.SetConversionMethod(); } } } }