Click here to Skip to main content
15,890,185 members
Home / Discussions / C#
   

C#

 
GeneralRe: C# Color challenge Pin
BillWoodruff2-Jul-17 14:53
professionalBillWoodruff2-Jul-17 14:53 
GeneralRe: C# Color challenge Pin
Eddy Vluggen3-Jul-17 23:30
professionalEddy Vluggen3-Jul-17 23:30 
GeneralRe: C# Color challenge Pin
harold aptroot2-Jul-17 2:34
harold aptroot2-Jul-17 2:34 
GeneralRe: C# Color challenge Pin
BillWoodruff2-Jul-17 14:35
professionalBillWoodruff2-Jul-17 14:35 
GeneralRe: C# Color challenge Pin
harold aptroot2-Jul-17 15:07
harold aptroot2-Jul-17 15:07 
GeneralRe: C# Color challenge Pin
BillWoodruff2-Jul-17 19:21
professionalBillWoodruff2-Jul-17 19:21 
GeneralRe: C# Color challenge Pin
Richard Deeming3-Jul-17 1:35
mveRichard Deeming3-Jul-17 1:35 
GeneralRe: C# Color challenge Pin
BillWoodruff3-Jul-17 2:51
professionalBillWoodruff3-Jul-17 2:51 
Hi Richard,

Yes, I'm messing around with creating a Color extension for Yoshifumi Kawai's MessagePack open-source serializer: [^].

The speed and memory efficiency of MessagePack (which has optional built-in LZ4 compression) is, imho, remarkable.

I came up with something similar to your code, and implemented the required MessagePack 'Formatter and 'Resolver structures, but it had incredibly poor (slow) performance. So, I fell back on just making a simple class that saves a Color as either an integer, or a KnownColor name (string): this (excerpt) will give you an idea of what's going on:
[MessagePackObject]
public class MPColor
{
    [Key(0)] public Int32 _colorAsInt32 = -1;

    [Key(1)] public String _colorName = String.Empty;

    public MPColor()
    {
    }

    public MPColor(Color color)
    {
        MColor = color;
    }

    [IgnoreMember]
    public Color MColor
    {
        set
        {
            if (value.IsKnownColor)
            {
                _colorAsInt32 = -1;
                _colorName = value.Name;
            }
            else
            {
                _colorName = String.Empty;
                _colorAsInt32 = value.ToArgb();
            }
        }

        get
        {
            if (String.IsNullOrEmpty(_colorName))
            {
                if (_colorAsInt32 == -1)
                {
                    return Color.Empty;
                }

                return Color.FromArgb(_colorAsInt32);
            }
            
            return Color.FromName(_colorName);
        }
    }
}
This is quite fast and memory efficient. Since the KnownColor enumeration includes System Colors, that removes the need to store one aspect of state.

Tomorrow, I will study your code in depth, possibly try it out with the required 'Resolver and 'Formatter components in MessagePack.

As ever, really appreciate your quality responses !

cheers, Bill
«Beauty is in the eye of the beholder, and it may be necessary from time to time to give a stupid or misinformed beholder a black eye.» Miss Piggy


modified 3-Jul-17 9:56am.

Questionprinting an string data. Pin
rahul199529-Jun-17 20:21
rahul199529-Jun-17 20:21 
AnswerRe: printing an string data. Pin
OriginalGriff29-Jun-17 20:34
mveOriginalGriff29-Jun-17 20:34 
AnswerRe: printing an string data. Pin
Richard MacCutchan29-Jun-17 21:36
mveRichard MacCutchan29-Jun-17 21:36 
AnswerRe: printing an string data. Pin
bindumol L29-Jun-17 21:53
bindumol L29-Jun-17 21:53 
SuggestionRe: printing an string data. Pin
Richard MacCutchan29-Jun-17 23:07
mveRichard MacCutchan29-Jun-17 23:07 
Questionqr code printing. Pin
rahul199528-Jun-17 0:31
rahul199528-Jun-17 0:31 
AnswerRe: qr code printing. Pin
Pete O'Hanlon28-Jun-17 0:35
mvePete O'Hanlon28-Jun-17 0:35 
Questionhow we can adjust the size of qr code while printing? Pin
rahul199527-Jun-17 19:07
rahul199527-Jun-17 19:07 
AnswerRe: how we can adjust the size of qr code while printing? Pin
OriginalGriff27-Jun-17 19:51
mveOriginalGriff27-Jun-17 19:51 
QuestionHow to Check Data for data existence in database using C# Pin
Tej_dev27-Jun-17 8:23
Tej_dev27-Jun-17 8:23 
AnswerRe: How to Check Data for data existence in database using C# Pin
Mycroft Holmes27-Jun-17 19:32
professionalMycroft Holmes27-Jun-17 19:32 
AnswerRe: How to Check Data for data existence in database using C# Pin
jschell28-Jun-17 6:03
jschell28-Jun-17 6:03 
GeneralRe: How to Check Data for data existence in database using C# Pin
Tej_dev28-Jun-17 9:20
Tej_dev28-Jun-17 9:20 
GeneralRe: How to Check Data for data existence in database using C# Pin
Pete O'Hanlon28-Jun-17 10:44
mvePete O'Hanlon28-Jun-17 10:44 
GeneralRe: How to Check Data for data existence in database using C# Pin
Tej_dev29-Jun-17 4:51
Tej_dev29-Jun-17 4:51 
GeneralRe: How to Check Data for data existence in database using C# Pin
Pete O'Hanlon29-Jun-17 4:55
mvePete O'Hanlon29-Jun-17 4:55 
GeneralRe: How to Check Data for data existence in database using C# Pin
jschell2-Jul-17 7:10
jschell2-Jul-17 7:10 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.