Exemplo n.º 1
0
        public static Color FromString(string color, IColorConverter converter)
        {
            if (converter == null)
            {
                throw new ArgumentNullException("converter");
            }

            return(converter.FromString(color));
        }
Exemplo n.º 2
0
        public static string ToString(this Color color, IColorConverter converter)
        {
            if (converter == null)
            {
                throw new ArgumentNullException("converter");
            }

            return(converter.ToString(color));
        }
Exemplo n.º 3
0
        private static void OnColorConverterChanged(DependencyObject obj, DependencyPropertyChangedEventArgs args)
        {
            ColorGradient   target   = obj as ColorGradient;
            IColorConverter oldValue = (IColorConverter)args.OldValue;
            IColorConverter newValue = (IColorConverter)args.NewValue;

            if (oldValue != newValue)
            {
                target.OnColorConverterChanged(oldValue, newValue);
            }
        }
        public EmbedService(IFileReader fileReader, IResources resources, IColorConverter colorConverter,
                            IBotConfig botConfig)
        {
            _fileReader     = fileReader;
            _resources      = resources;
            _colorConverter = colorConverter;

            var json = _fileReader.ReadFile(botConfig.EmbedStructuresPath);

            _structures = JsonConvert.DeserializeObject <Dictionary <string, Dictionary <string, string> > >(json);
        }
Exemplo n.º 5
0
 private unsafe void AllocMemory(int width, int height)
 {
     Height      = height;
     Width       = width;
     Length      = Width * Height;
     SizeOfType  = SizeOfT();
     ByteCount   = SizeOfType * Length;
     m_converter = this.CreateByteConverter();
     StartIntPtr = Marshal.AllocHGlobal(ByteCount);
     m_start     = (Byte *)StartIntPtr;
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="conversionToLMS"></param>
        /// <param name="conversionToXYZ"></param>
        public VonKriesChromaticAdaptation(IColorConverter <XYZ, LMS> conversionToLMS, IColorConverter <LMS, XYZ> conversionToXYZ)
        {
            if (conversionToLMS == null)
            {
                throw new ArgumentNullException(nameof(conversionToLMS));
            }

            if (conversionToXYZ == null)
            {
                throw new ArgumentNullException(nameof(conversionToXYZ));
            }

            _conversionToLMS = conversionToLMS;
            _conversionToXYZ = conversionToXYZ;
        }
Exemplo n.º 7
0
 /// <summary>
 /// Creates a composite converter from two converters.
 /// </summary>
 /// <param name="firstConverter">First converter (from source to intermediate space).</param>
 /// <param name="secondConverter">Second converter (from intermediate to target space).</param>
 public CompositeConverter(IColorConverter <TSource, TIntermediate> firstConverter, IColorConverter <TIntermediate, TTarget> secondConverter)
 {
     FirstConverter  = firstConverter;
     SecondConverter = secondConverter;
 }
Exemplo n.º 8
0
 public ImageConverter(IColorConverter colorConverter)
 {
     ColorConverter = colorConverter;
 }
Exemplo n.º 9
0
 public ConsoleExtendedWrapper(T console, IColorConverter <TC> colorConverter)
 {
     _console        = console;
     _colorConverter = colorConverter;
 }
Exemplo n.º 10
0
 protected virtual void OnColorConverterChanged(IColorConverter oldValue, IColorConverter newValue)
 {
     UpdateMaximumAndMinimumColor();
 }
Exemplo n.º 11
0
        /// <summary>
        /// Builds the RGB<->XYZ transforms from chromaticities
        /// (refer to http://wiki.nuaj.net/index.php/Color_Transforms#XYZ_Matrices for explanations)
        /// </summary>
        protected void BuildTransformFromChroma( bool _bCheckGammaCurveOverride )
        {
            float3	xyz_R = new float3( m_Chromaticities.R.x, m_Chromaticities.R.y, 1.0f - m_Chromaticities.R.x - m_Chromaticities.R.y );
            float3	xyz_G = new float3( m_Chromaticities.G.x, m_Chromaticities.G.y, 1.0f - m_Chromaticities.G.x - m_Chromaticities.G.y );
            float3	xyz_B = new float3( m_Chromaticities.B.x, m_Chromaticities.B.y, 1.0f - m_Chromaticities.B.x - m_Chromaticities.B.y );
            float3	XYZ_W = xyY2XYZ( new float3( m_Chromaticities.W.x, m_Chromaticities.W.y, 1.0f ) );

            float4x4	M_xyz = new float4x4() {
                row0 = new float4( xyz_R, 0.0f ),
                row1 = new float4( xyz_G, 0.0f ),
                row2 = new float4( xyz_B, 0.0f ),
                row3 = new float4( 0.0f, 0.0f, 0.0f, 1.0f )
            };

            M_xyz.Invert();

            float4	Sum_RGB = new float4( XYZ_W, 1.0f ) * M_xyz;

            // Finally, we can retrieve the RGB->XYZ transform
            m_RGB2XYZ.row0 = new float4( Sum_RGB.x * xyz_R, 0.0f );
            m_RGB2XYZ.row1 = new float4( Sum_RGB.y * xyz_G, 0.0f );
            m_RGB2XYZ.row2 = new float4( Sum_RGB.z * xyz_B, 0.0f );

            // And the XYZ->RGB transform
            m_XYZ2RGB = m_RGB2XYZ;
            m_XYZ2RGB.Invert();

            // ============= Attempt to recognize a standard profile =============
            STANDARD_PROFILE	RecognizedChromaticity = m_Chromaticities.RecognizedChromaticity;

            if ( _bCheckGammaCurveOverride )
            {	// Also ensure the gamma ramp is correct before assigning a standard profile
                bool	bIsGammaCorrect = true;
                switch ( RecognizedChromaticity )
                {
                    case STANDARD_PROFILE.sRGB:				bIsGammaCorrect = EnsureGamma( GAMMA_CURVE.sRGB, GAMMA_EXPONENT_sRGB ); break;
                    case STANDARD_PROFILE.ADOBE_RGB_D50:	bIsGammaCorrect = EnsureGamma( GAMMA_CURVE.STANDARD, GAMMA_EXPONENT_ADOBE ); break;
                    case STANDARD_PROFILE.ADOBE_RGB_D65:	bIsGammaCorrect = EnsureGamma( GAMMA_CURVE.STANDARD, GAMMA_EXPONENT_ADOBE ); break;
                    case STANDARD_PROFILE.PRO_PHOTO:		bIsGammaCorrect = EnsureGamma( GAMMA_CURVE.PRO_PHOTO, GAMMA_EXPONENT_PRO_PHOTO ); break;
                    case STANDARD_PROFILE.RADIANCE:			bIsGammaCorrect = EnsureGamma( GAMMA_CURVE.STANDARD, 1.0f ); break;
                }

                if ( !bIsGammaCorrect )
                    RecognizedChromaticity = STANDARD_PROFILE.CUSTOM;	// A non-standard gamma curves fails our pre-defined design...
            }

            // ============= Assign the internal converter depending on the profile =============
            switch ( RecognizedChromaticity )
            {
                case STANDARD_PROFILE.sRGB:
                    m_GammaCurve = GAMMA_CURVE.sRGB;
                    m_Gamma = GAMMA_EXPONENT_sRGB;
                    m_InternalConverter = new InternalColorConverter_sRGB();
                    break;

                case STANDARD_PROFILE.ADOBE_RGB_D50:
                    m_GammaCurve = GAMMA_CURVE.STANDARD;
                    m_Gamma = GAMMA_EXPONENT_ADOBE;
                    m_InternalConverter = new InternalColorConverter_AdobeRGB_D50();
                    break;

                case STANDARD_PROFILE.ADOBE_RGB_D65:
                    m_GammaCurve = GAMMA_CURVE.STANDARD;
                    m_Gamma = GAMMA_EXPONENT_ADOBE;
                    m_InternalConverter = new InternalColorConverter_AdobeRGB_D65();
                    break;

                case STANDARD_PROFILE.PRO_PHOTO:
                    m_GammaCurve = GAMMA_CURVE.PRO_PHOTO;
                    m_Gamma = GAMMA_EXPONENT_PRO_PHOTO;
                    m_InternalConverter = new InternalColorConverter_ProPhoto();
                    break;

                case STANDARD_PROFILE.RADIANCE:
                    m_GammaCurve = GAMMA_CURVE.STANDARD;
                    m_Gamma = 1.0f;
                    m_InternalConverter = new InternalColorConverter_Radiance();
                    break;

                default:	// Switch to one of our generic converters
                    switch ( m_GammaCurve )
                    {
                        case GAMMA_CURVE.sRGB:
                            m_InternalConverter = new InternalColorConverter_Generic_sRGBGamma( m_RGB2XYZ, m_XYZ2RGB );
                            break;
                        case GAMMA_CURVE.PRO_PHOTO:
                            m_InternalConverter = new InternalColorConverter_Generic_ProPhoto( m_RGB2XYZ, m_XYZ2RGB );
                            break;
                        case GAMMA_CURVE.STANDARD:
                            if ( Math.Abs( m_Gamma - 1.0f ) < 1e-3f )
                                m_InternalConverter = new InternalColorConverter_Generic_NoGamma( m_RGB2XYZ, m_XYZ2RGB );
                            else
                                m_InternalConverter = new InternalColorConverter_Generic_StandardGamma( m_RGB2XYZ, m_XYZ2RGB, m_Gamma );
                            break;
                    }
                    break;
            }
        }