gamut icon indicating copy to clipboard operation
gamut copied to clipboard

API: add flag string to flag value

Open p0nce opened this issue 8 months ago • 0 comments

This should be a part of the public API.

int convertEncodeFlagStringToValue(string s)
{
    if (s in allEncodeFlags)
        return allEncodeFlags[s];
    else
        throw new Exception("Unknown encode flag: " ~ s);
}

// Note: keep in sync with types.d

enum allEncodeFlags = buildEncodeFlags();

int[string] buildEncodeFlags()
{
    int[string] flags = 
    [
        "ENCODE_NORMAL": 0,
        
        "ENCODE_PNG_COMPRESSION_DEFAULT": 0,
        "ENCODE_PNG_COMPRESSION_FAST":    2,
        "ENCODE_PNG_COMPRESSION_SMALL":  10,

        "ENCODE_PNG_COMPRESSION_0":       1,
        "ENCODE_PNG_COMPRESSION_1":       2,
        "ENCODE_PNG_COMPRESSION_2":       3,
        "ENCODE_PNG_COMPRESSION_3":       4,
        "ENCODE_PNG_COMPRESSION_4":       5,
        "ENCODE_PNG_COMPRESSION_5":       6,
        "ENCODE_PNG_COMPRESSION_6":       7,
        "ENCODE_PNG_COMPRESSION_7":       8,
        "ENCODE_PNG_COMPRESSION_8":       9,
        "ENCODE_PNG_COMPRESSION_9":       10,
        "ENCODE_PNG_COMPRESSION_10":      11,

        "ENCODE_PNG_FILTER_DEFAULT":      0,
        "ENCODE_PNG_FILTER_SMALL":        0,
        "ENCODE_PNG_FILTER_FAST":  (1 << 4),


        "ENCODE_SQZ_QUALITY_DEFAULT":         0, 
        "ENCODE_SQZ_QUALITY_BPP1_0":  0x20 << 5, 
        "ENCODE_SQZ_QUALITY_BPP1_25": 0x28 << 5, 
        "ENCODE_SQZ_QUALITY_BPP1_5":  0x30 << 5, 
        "ENCODE_SQZ_QUALITY_BPP1_75": 0x38 << 5, 
        "ENCODE_SQZ_QUALITY_BPP2_0":  0x40 << 5, 
        "ENCODE_SQZ_QUALITY_BPP2_25": 0x48 << 5, 
        "ENCODE_SQZ_QUALITY_BPP2_5":  0x50 << 5, // if you want to beat guetzli this is alright
        "ENCODE_SQZ_QUALITY_BPP2_75": 0x58 << 5, 
        "ENCODE_SQZ_QUALITY_MAX":     0xff << 5,
    ];
    return flags;
}

p0nce avatar Apr 18 '25 13:04 p0nce