PARSER_ARG_STATE_EXPECT_FACTOR, PARSER_ARG_STATE_MAYBE_SRC_ALPHA_SATURATE, PARSER_ARG_STATE_MAYBE_MINUS, PARSER_ARG_STATE_EXPECT_CLOSE_PAREN, PARSER_ARG_STATE_EXPECT_END } parser_arg_state_t; #define DEFINE_COLOR_SOURCE(NAME, NAME_LEN) \ { /*.type = */ \ CG_BLEND_STRING_COLOR_SOURCE_##NAME, \ /*.name = */ #NAME, \ /*.name_len = */ NAME_LEN \ } static cg_blend_string_color_source_info_t blending_color_sources[] = { DEFINE_COLOR_SOURCE(SRC_COLOR, 9), DEFINE_COLOR_SOURCE(DST_COLOR, 9), DEFINE_COLOR_SOURCE(CONSTANT, 8) }; #undef DEFINE_COLOR_SOURCE #define DEFINE_FUNCTION(NAME, NAME_LEN, ARGC) \ { /*.type = */ \ CG_BLEND_STRING_FUNCTION_##NAME, \ /*.name = */ #NAME, \ /*.name_len = */ NAME_LEN, \ /*.argc = */ ARGC \ } static cg_blend_string_function_info_t blend_functions[] = { DEFINE_FUNCTION( ADD, 3, 2) };
PARSER_ARG_STATE_EXPECT_OPEN_PAREN, PARSER_ARG_STATE_EXPECT_FACTOR, PARSER_ARG_STATE_MAYBE_SRC_ALPHA_SATURATE, PARSER_ARG_STATE_MAYBE_MINUS, PARSER_ARG_STATE_EXPECT_CLOSE_PAREN, PARSER_ARG_STATE_EXPECT_END } ParserArgState; #define DEFINE_COLOR_SOURCE(NAME, NAME_LEN) \ {/*.type = */COGL_BLEND_STRING_COLOR_SOURCE_ ## NAME, \ /*.name = */#NAME, \ /*.name_len = */NAME_LEN} static CoglBlendStringColorSourceInfo blending_color_sources[] = { DEFINE_COLOR_SOURCE (SRC_COLOR, 9), DEFINE_COLOR_SOURCE (DST_COLOR, 9), DEFINE_COLOR_SOURCE (CONSTANT, 8) }; static CoglBlendStringColorSourceInfo tex_combine_color_sources[] = { DEFINE_COLOR_SOURCE (TEXTURE, 7), /* DEFINE_COLOR_SOURCE (TEXTURE_N, *) - handled manually */ DEFINE_COLOR_SOURCE (PRIMARY, 7), DEFINE_COLOR_SOURCE (CONSTANT, 8), DEFINE_COLOR_SOURCE (PREVIOUS, 8) }; static CoglBlendStringColorSourceInfo tex_combine_texture_n_color_source = { /*.type = */COGL_BLEND_STRING_COLOR_SOURCE_TEXTURE_N, /*.name = */"TEXTURE_N",