custom_wave_types.h
上传用户:kjfoods
上传日期:2020-07-06
资源大小:29949k
文件大小:2k
源码类别:

midi

开发平台:

Unix_Linux

  1. #ifndef CUSTOM_WAVE_TYPES_H
  2. #define CUSTOM_WAVE_TYPES_H
  3. #include "common.h"
  4. #include "splaytree_types.h"
  5. #include "expr_types.h"
  6. #define X_POINT_OP 0
  7. #define Y_POINT_OP 1
  8. #define R_POINT_OP 2
  9. #define G_POINT_OP 3
  10. #define B_POINT_OP 4
  11. #define A_POINT_OP 5
  12. #define NUM_POINT_OPS 6
  13. typedef struct PER_POINT_EQN_T {
  14.   int index;
  15.   param_t * param;
  16.   gen_expr_t * gen_expr;
  17. } per_point_eqn_t;
  18. typedef struct CUSTOM_WAVE_T {
  19.   /* Numerical id */
  20.   int id;
  21.   int per_frame_count;
  22.   /* Parameter tree associated with this custom wave */
  23.   splaytree_t * param_tree;
  24.   /* Engine variables */
  25.   double x; /* x position for per point equations */
  26.   double y; /* y position for per point equations */
  27.   double r; /* red color value */
  28.   double g; /* green color value */
  29.   double b; /* blue color value */
  30.   double a; /* alpha color value */
  31.   double * x_mesh;
  32.   double * y_mesh;
  33.   double * r_mesh;
  34.   double * b_mesh;
  35.   double * g_mesh;
  36.   double * a_mesh;
  37.   double * value1;
  38.   double * value2;
  39.   double * sample_mesh;
  40.   int enabled; /* if nonzero then wave is visible, hidden otherwise */
  41.   int samples; /* number of samples associated with this wave form. Usually powers of 2 */
  42.   double sample;
  43.   int bSpectrum; /* spectrum data or pcm data */
  44.   int bUseDots; /* draw wave as dots or lines */
  45.   int bDrawThick; /* draw thicker lines */
  46.   int bAdditive; /* add color values together */
  47.   double scaling; /* scale factor of waveform */
  48.   double smoothing; /* smooth factor of waveform */
  49.   int sep;  /* no idea what this is yet... */
  50.   /* stupid t variables */
  51.   double t1;
  52.   double t2;
  53.   double t3;
  54.   double t4;
  55.   double t5;
  56.   double t6;
  57.   double t7;
  58.   double t8;
  59.   double v1,v2;
  60.   /* Data structure to hold per frame and per point equations */
  61.   splaytree_t * init_cond_tree;
  62.   splaytree_t * per_frame_eqn_tree;
  63.   splaytree_t * per_point_eqn_tree;
  64.   splaytree_t * per_frame_init_eqn_tree;
  65.   /* Denotes the index of the last character for each string buffer */
  66.   int per_point_eqn_string_index;
  67.   int per_frame_eqn_string_index;
  68.   int per_frame_init_eqn_string_index;
  69.   /* String buffers for per point and per frame equations */
  70.   char per_point_eqn_string_buffer[STRING_BUFFER_SIZE];
  71.   char per_frame_eqn_string_buffer[STRING_BUFFER_SIZE];
  72.   char per_frame_init_eqn_string_buffer[STRING_BUFFER_SIZE];
  73.   /* Per point equation array */
  74.   gen_expr_t * per_point_eqn_array[NUM_POINT_OPS];
  75.   
  76. } custom_wave_t;
  77. #endif