Exemple #1
0
        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();
            }
        }
Exemple #2
0
        /// <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();
            }
        }
Exemple #3
0
        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();
        }
Exemple #4
0
        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();
                    }
                }
            }
        }