mirror of https://github.com/GNOME/gimp.git
150 lines
3.9 KiB
Cheetah
150 lines
3.9 KiB
Cheetah
PRINT < END
|
|
/*
|
|
WARNING: This file is generated automaticaly from expressions.tmpl
|
|
- all changes you made into this file will be distarded in next
|
|
recompilation!
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <math.h>
|
|
#include "expressions.h"
|
|
|
|
void ex_push_const(void);
|
|
void ex_push_vector3(void);
|
|
void ex_push_vector4(void);
|
|
void ex_push_color_noise(void);
|
|
void ex_push_color_noise_xy(void);
|
|
|
|
void warp_abs_push_xy();
|
|
void warp_rel_push_xy();
|
|
void pop_xy();
|
|
|
|
END
|
|
|
|
|
|
TABLE FuncInfo < END_TABLE
|
|
// N - arbitrary number of parameters, 1<= N <= MAX_NUMBER_OF_PARAMETERS
|
|
// or arbitrary (return|parameter) type
|
|
// R - return value, P?, P0...PN parameters, NOP - not yet implemented
|
|
// name nof[pd] altstring ret_types paramtypes func0 code
|
|
|
|
const 0 1 "" 1 - LAST( ex_push_const )
|
|
|
|
vector3 0 3 "" 3 - LAST( ex_push_vector3 )
|
|
vector4 0 4 "" 4 - LAST( ex_push_vector4 )
|
|
|
|
|
|
x 0 0 - 1 - RETURN{{ x_val }}
|
|
y 0 0 - 1 - RETURN{{ y_val }}
|
|
|
|
|
|
plus N 0 "+" N - INIT{{R=P0;}} BODY{{1..N-1, R+= P?; }}
|
|
minus 2 0 "-" N - RETURN{{ P0-P1 }}
|
|
mult N 0 "*" N - INIT{{R=P0;}} BODY{{1..N-1, R*= P?; }}
|
|
div 2 0 "/" N - RETURN{{ (P1!=0.0)?P0/P1:INFINITY }}
|
|
// mod 2 0 "%" N - RETURN{{ 0.0; /*HOW TO IMPLEMENT IT ?? */ }}
|
|
|
|
min N 0 - N - INIT{{R=P0;}} BODY{{1..N-1, if (R>P?) R=P?; }}
|
|
max N 0 - N - INIT{{R=P0;}} BODY{{1..N-1, if (R<P?) R=P?; }}
|
|
|
|
|
|
and N 0 "&" N - INIT{{R=P0;}} BODY{{1..N-1,R=double_and(R,P?);}}
|
|
or N 0 "|" N - INIT{{R=P0;}} BODY{{1..N-1,R=double_or (R,P?);}}
|
|
xor N 0 "^" N - INIT{{R=P0;}} BODY{{1..N-1,R=double_xor(R,P?);}}
|
|
|
|
// bw_noise_xy 0 0 "bw-noise-xy" 1 - RETURN{{ solid_noise(x_val,y_val) }}
|
|
bw_noise 2 0 "bw-noise" 1 11 RETURN{{ solid_noise( P0, P1) }}
|
|
|
|
// color_noise_xy 0 0 "color-noise-xy" 3 - LAST ( ex_push_color_noise_xy )
|
|
color_noise 2 0 "color-noise" 3 11 LAST ( ex_push_color_noise )
|
|
|
|
warp_abs 3 0 "warp-abs" N 11N PUSH2(warp_abs_push_xy) PUSH3(pop_xy)
|
|
warp_rel 3 0 "warp-rel" N 11N PUSH2(warp_rel_push_xy) PUSH3(pop_xy)
|
|
|
|
// boring functions :-)
|
|
floor 1 0 - N - RETURN{{ floor(P0) }}
|
|
abs 1 0 - N - RETURN{{ fabs(P0) }}
|
|
|
|
exp 1 0 - N - RETURN{{ exp(P0) }}
|
|
log 1 0 - N - RETURN{{ log(P0) }}
|
|
pow 2 0 - N - RETURN{{ pow(P0,P1) }}
|
|
|
|
sin 1 0 - N - RETURN{{ sin(P0) }}
|
|
cos 1 0 - N - RETURN{{ cos(P0) }}
|
|
atan 1 0 - N - RETURN{{ atan(P0) }}
|
|
END_TABLE
|
|
|
|
// flush all definition, tables etc to expr_pgen.c
|
|
|
|
FLUSH
|
|
|
|
// other functions...
|
|
PRINT < END
|
|
|
|
void ex_push_const(void)
|
|
{
|
|
r_top++; *r_top= *data_top; data_top++;
|
|
}
|
|
|
|
void ex_push_vector3(void)
|
|
{
|
|
r_top++; *r_top= *data_top; data_top++;
|
|
g_top++; *g_top= *data_top; data_top++;
|
|
b_top++; *b_top= *data_top; data_top++;
|
|
}
|
|
|
|
void ex_push_vector4(void)
|
|
{
|
|
r_top++; *r_top= *data_top; data_top++;
|
|
g_top++; *g_top= *data_top; data_top++;
|
|
b_top++; *b_top= *data_top; data_top++;
|
|
alfa_top++; *alfa_top= *data_top; data_top++;
|
|
}
|
|
|
|
void ex_push_color_noise(void)
|
|
{
|
|
r_top--; *r_top= solid_noise(r_top[0]+128.,r_top[1]+199.);
|
|
g_top--; *g_top= solid_noise(g_top[0]+232.,g_top[1]+ 74.);
|
|
b_top--; *b_top= solid_noise(b_top[0]+312.,b_top[1]+ 32.);
|
|
}
|
|
|
|
void ex_push_color_noise_xy(void)
|
|
{
|
|
r_top++; *r_top= solid_noise(x_val+128.,y_val+199.);
|
|
g_top++; *g_top= solid_noise(x_val+232.,y_val+ 74.);
|
|
b_top++; *b_top= solid_noise(x_val+312.,y_val+ 32.);
|
|
}
|
|
|
|
static DBL x_stack[MAX_TREE_DEPTH];
|
|
static DBL y_stack[MAX_TREE_DEPTH];
|
|
|
|
static DBL *xptr = x_stack,
|
|
*yptr = y_stack;
|
|
|
|
void warp_abs_push_xy()
|
|
{
|
|
*xptr= x_val; xptr++;
|
|
*yptr= y_val; yptr++;
|
|
|
|
x_val= *r_top; r_top--;
|
|
y_val= *r_top; r_top--;
|
|
}
|
|
|
|
void warp_rel_push_xy()
|
|
{
|
|
*xptr= x_val; xptr++;
|
|
*yptr= y_val; yptr++;
|
|
|
|
x_val+= *r_top; r_top--;
|
|
y_val+= *r_top; r_top--;
|
|
}
|
|
|
|
void pop_xy()
|
|
{
|
|
xptr--; yptr--;
|
|
x_val= *xptr; y_val= *yptr;
|
|
}
|
|
END
|
|
|
|
|
|
END_OF_FILE |