summaryrefslogtreecommitdiff
path: root/src/op.h
blob: 1231552512efcbb1a7db1386e969ffafbbea0ff7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#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