#ifndef ANIMTOOL_OP_H_ #define ANIMTOOL_OP_H_ #include "util/str.h" enum op_category { OPC_COMMAND, OPC_EXPR, OPC_NODE, OPC_TRANSFORM, OPC_SURFACE, OPC_SEQ, OPC_REP, OPC_PROJ, OPC_CAMERA, OPC_POS, }; #define OP_TYPES(X) \ X("var", VAR, COMMAND) \ X("fps", FPS, COMMAND) \ X("size", SIZE, COMMAND) \ X("seq", SEQ, COMMAND) \ X("proj", PROJ, COMMAND) \ X("bg", BG, COMMAND) \ X("out", OUT, COMMAND) \ X("scene", SCENE, COMMAND) \ X("+", ADD, EXPR) \ X("-", SUB, EXPR) \ X("*", MUL, EXPR) \ X("/", DIV, EXPR) \ X("%", MOD, EXPR) \ X("abs", ABS, EXPR) \ X("min", MIN, EXPR) \ X("max", MAX, EXPR) \ X("clamp", CLAMP, EXPR) \ X("mix", MIX, EXPR) \ X("rgb", RGB, EXPR) \ X("time", TIME, EXPR) \ X("cube", CUBE, NODE) \ X("obj", OBJ, NODE) \ X("bone", BONE, NODE) \ X("camera", CAMERA, NODE) \ X("light", LIGHT, NODE) \ X("trans", TRANSFORM, NODE) \ X("t", TRANSLATE, TRANSFORM) \ X("s", SCALE, TRANSFORM) \ X("r", ROTATE, TRANSFORM) \ X("texture", TEXTURE, SURFACE) \ X("cubemap", CUBEMAP, SURFACE) \ X("color", COLOR, SURFACE) \ X("pov", POV, SEQ) \ X("rep", REP, SEQ) \ X("inf", INF, REP) \ X("fov", FOV, PROJ) \ X("planes", PLANES, PROJ) \ X("roll", ROLL, CAMERA) \ X("pos", POS, POS) \ X("attach", ATTACH, POS) enum op_type { #define OP_TYPE_SYM(name, sym, cat) OP_##sym, OP_TYPES(OP_TYPE_SYM) #undef OP_TYPE_SYM }; extern enum op_category op_category_tab[]; extern str op_name_tab[]; #endif