/*
 * Copyright 2017 Google Inc.
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#ifndef SkSplicer_shared_DEFINED
#define SkSplicer_shared_DEFINED

// This file contains definitions shared by SkSplicer.cpp (compiled normally as part of Skia)
// and SkSplicer_stages.cpp (compiled offline into SkSplicer_generated.h).  Keep it simple!

#include <stdint.h>

// SkSplicer Stages can use constant literals only if they end up baked into the instruction,
// like bit shifts and rounding modes.  Any other constant values must be pulled from this struct
// (except 0 and 0.0f, which always end up as some sort of xor instruction).
//
// This constraint makes it much easier to move and reorder the code for each Stage.

struct SkSplicer_constants {
    uint32_t _0x000000ff;  //  0x000000ff
    float    _1;           //  1.0f
    float    _255;         //  255.0f
    float    _1_255;       //  1/255.0f

    // from_srgb
    float    _00025;       //  0.0025f
    float    _06975;       //  0.6975f
    float    _03000;       //  0.3000f
    float    _1_1292;      //  1/12.92f
    float    _0055;        //  0.055f

    // to_srgb
    float    _1246;        //  12.46f
    float    _0411192;     //  0.411192f
    float    _0689206;     //  0.689206f
    float   n_00988;       // -0.0988f
    float    _00043;       //  0.0043f
};

#endif//SkSplicer_shared_DEFINED
