home *** CD-ROM | disk | FTP | other *** search
/ ftp.sunet.sepub/pictures / 2014.11.ftp.sunet.se-pictures.tar / ftp.sunet.se / pub / pictures / ACiD-artpacks / programs / unix / editors / gimp-plugins-unstable-0_99_23_tar.gz / gimp-plugins-unstable-0_99_23_tar / gimp-plugins-unstable-0.99.23 / gag / expressions.tmpl < prev    next >
Text File  |  1998-02-19  |  4KB  |  150 lines

  1. PRINT < END
  2. /* 
  3.    WARNING: This file is generated automaticaly from expressions.tmpl 
  4.      - all changes you made into this file will be distarded in next
  5.        recompilation!  
  6. */
  7.  
  8. #include <stdio.h>
  9. #include <math.h>
  10. #include "expressions.h"
  11.  
  12. void ex_push_const(void);
  13. void ex_push_vector3(void);
  14. void ex_push_vector4(void);
  15. void ex_push_color_noise(void);
  16. void ex_push_color_noise_xy(void);
  17.  
  18. void warp_abs_push_xy();
  19. void warp_rel_push_xy();
  20. void pop_xy();
  21.  
  22. END
  23.  
  24.  
  25. TABLE FuncInfo < END_TABLE
  26. // N - arbitrary number of parameters, 1<= N <= MAX_NUMBER_OF_PARAMETERS
  27. //    or arbitrary (return|parameter) type
  28. // R - return value, P?, P0...PN parameters, NOP - not yet implemented
  29. //    name         nof[pd]    altstring  ret_types paramtypes func0 code
  30.  
  31.     const        0 1      ""        1    -    LAST( ex_push_const )
  32.                                 
  33.     vector3     0 3      ""        3    -    LAST( ex_push_vector3 )
  34.     vector4     0 4      ""        4    -    LAST( ex_push_vector4 )
  35.                                 
  36.                                 
  37.     x        0 0      -        1    -    RETURN{{ x_val }}
  38.     y        0 0      -        1    -    RETURN{{ y_val }}
  39.                                 
  40.                                 
  41.     plus        N 0      "+"        N    -    INIT{{R=P0;}} BODY{{1..N-1, R+= P?; }}
  42.     minus        2 0      "-"        N    -    RETURN{{ P0-P1 }}
  43.     mult        N 0      "*"        N    -    INIT{{R=P0;}} BODY{{1..N-1, R*= P?; }}
  44.     div        2 0      "/"        N    -    RETURN{{ (P1!=0.0)?P0/P1:INFINITY }}
  45. //    mod        2 0      "%"        N    -    RETURN{{ 0.0; /*HOW TO IMPLEMENT IT ?? */ }}
  46.                                 
  47.     min        N 0      -        N    -    INIT{{R=P0;}} BODY{{1..N-1, if (R>P?) R=P?; }}
  48.     max        N 0      -         N    -    INIT{{R=P0;}} BODY{{1..N-1, if (R<P?) R=P?; }}
  49.                                 
  50.                                 
  51.        and        N 0      "&"        N    -    INIT{{R=P0;}} BODY{{1..N-1,R=double_and(R,P?);}}
  52.       or        N 0      "|"        N    -    INIT{{R=P0;}} BODY{{1..N-1,R=double_or (R,P?);}}
  53.       xor        N 0      "^"        N    -    INIT{{R=P0;}} BODY{{1..N-1,R=double_xor(R,P?);}}
  54.                                 
  55. //    bw_noise_xy    0 0   "bw-noise-xy"    1    -    RETURN{{ solid_noise(x_val,y_val) }}
  56.     bw_noise    2 0   "bw-noise"    1    11    RETURN{{ solid_noise( P0, P1) }}
  57.                                 
  58. //    color_noise_xy    0 0  "color-noise-xy"    3    -    LAST ( ex_push_color_noise_xy )
  59.     color_noise       2 0  "color-noise"    3    11    LAST ( ex_push_color_noise )
  60.                                 
  61.     warp_abs    3 0   "warp-abs"    N    11N    PUSH2(warp_abs_push_xy) PUSH3(pop_xy)
  62.     warp_rel    3 0   "warp-rel"    N    11N     PUSH2(warp_rel_push_xy) PUSH3(pop_xy)
  63.                                 
  64. // boring functions :-)                        
  65.     floor        1 0      -        N    -    RETURN{{ floor(P0) }}
  66.     abs        1 0      -        N    -    RETURN{{ fabs(P0) }}
  67.                                 
  68.     exp        1 0      -        N    -    RETURN{{ exp(P0) }}
  69.     log        1 0      -        N    -    RETURN{{ log(P0) }}
  70.     pow        2 0      -        N    -    RETURN{{ pow(P0,P1) }}
  71.                                 
  72.     sin          1 0      -        N    -    RETURN{{ sin(P0) }}
  73.     cos        1 0      -        N    -    RETURN{{ cos(P0) }}
  74.     atan        1 0      -        N    -    RETURN{{ atan(P0) }}
  75. END_TABLE
  76.  
  77. // flush all definition, tables etc to expr_pgen.c
  78.     
  79. FLUSH
  80.  
  81. // other functions...
  82. PRINT < END
  83.  
  84. void ex_push_const(void)
  85. {
  86.   r_top++;  *r_top= *data_top;  data_top++;
  87. }
  88.  
  89. void ex_push_vector3(void)
  90. {
  91.   r_top++;  *r_top= *data_top;  data_top++;
  92.   g_top++;  *g_top= *data_top;  data_top++;
  93.   b_top++;  *b_top= *data_top;  data_top++;
  94. }
  95.  
  96. void ex_push_vector4(void)
  97. {
  98.   r_top++;  *r_top= *data_top;  data_top++;
  99.   g_top++;  *g_top= *data_top;  data_top++;
  100.   b_top++;  *b_top= *data_top;  data_top++;
  101.   alfa_top++;  *alfa_top= *data_top;  data_top++;
  102. }
  103.  
  104. void ex_push_color_noise(void)
  105. {
  106.  r_top--; *r_top= solid_noise(r_top[0]+128.,r_top[1]+199.);
  107.  g_top--; *g_top= solid_noise(g_top[0]+232.,g_top[1]+ 74.);
  108.  b_top--; *b_top= solid_noise(b_top[0]+312.,b_top[1]+ 32.);
  109. }
  110.  
  111. void ex_push_color_noise_xy(void)
  112. {
  113.  r_top++; *r_top= solid_noise(x_val+128.,y_val+199.);
  114.  g_top++; *g_top= solid_noise(x_val+232.,y_val+ 74.);
  115.  b_top++; *b_top= solid_noise(x_val+312.,y_val+ 32.);
  116. }
  117.  
  118. static DBL x_stack[MAX_TREE_DEPTH];
  119. static DBL y_stack[MAX_TREE_DEPTH];
  120.  
  121. static DBL *xptr = x_stack,
  122.        *yptr = y_stack;
  123.  
  124. void warp_abs_push_xy()
  125. {
  126.   *xptr= x_val;  xptr++;
  127.   *yptr= y_val;  yptr++;
  128.  
  129.   x_val= *r_top; r_top--;
  130.   y_val= *r_top; r_top--;
  131. }
  132.  
  133. void warp_rel_push_xy()
  134. {
  135.   *xptr= x_val;  xptr++;
  136.   *yptr= y_val;  yptr++;
  137.  
  138.   x_val+= *r_top; r_top--;
  139.   y_val+= *r_top; r_top--;
  140. }
  141.  
  142. void pop_xy()
  143. {
  144.   xptr--;  yptr--;
  145.   x_val= *xptr; y_val= *yptr;
  146. }
  147. END
  148.  
  149.  
  150. END_OF_FILE