@@ -54,14 +54,38 @@ typedef struct clap_mini_display_curve_hints {
54
54
55
55
} clap_mini_display_curve_hints_t ;
56
56
57
+ // A set of points representing the curve to be painted.
58
+ typedef struct clap_mini_display_curve_data {
59
+ // Indicates the kind of curve those values represent, the host can use this
60
+ // information to paint the curve using a meaningful color.
61
+ int32_t curve_kind ;
62
+
63
+ // values[0] will be the leftmost value and values[data_size -1] will be the rightmost
64
+ // value.
65
+ //
66
+ // The value 0 and UINT16_MAX won't be painted.
67
+ // The value 1 will be at the bottom of the curve and UINT16_MAX - 1 will be at the top.
68
+ uint16_t * values ;
69
+ uint32_t values_count ;
70
+ } clap_mini_display_curve_data_t ;
57
71
58
72
typedef struct clap_plugin_mini_curve_display {
73
+ // Returns the number of curves the plugin wants to paint.
74
+ // Be aware that the space to display those curves will be small, and too much data will make
75
+ // the output hard to read.
76
+ uint32_t (CLAP_ABI * get_curve_count )(const clap_plugin_t * plugin );
77
+
59
78
// Renders the curve into the data buffer.
60
- // The value 0 will be at the bottom of the curve and UINT16_MAX will be at the top.
61
- // The value at index 0 will be the leftmost and the value at index data_size -1 will be the
62
- // rightmost.
79
+ //
80
+ // The host will "stack" the curves, from the first one to the last one.
81
+ // data[0] is the first curve to be painted.
82
+ // data[n + 1] will be painted over data[n].
83
+ //
84
+ // Returns the number of curves rendered.
63
85
// [main-thread]
64
- bool (CLAP_ABI * render )(const clap_plugin_t * plugin , uint16_t * data , uint32_t data_size );
86
+ uint32_t (CLAP_ABI * render )(const clap_plugin_t * plugin ,
87
+ clap_mini_display_curve_data_t * data ,
88
+ uint32_t data_size );
65
89
66
90
// Tells the plugin if the curve is currently observed or not.
67
91
// When it isn't observed render() can't be called.
@@ -77,6 +101,7 @@ typedef struct clap_plugin_mini_curve_display {
77
101
// Returns true on success, if the name capacity was sufficient.
78
102
// [main-thread]
79
103
bool (CLAP_ABI * get_axis_name )(const clap_plugin_t * plugin ,
104
+ uint32_t curve_index ,
80
105
char * x_name ,
81
106
char * y_name ,
82
107
uint32_t name_capacity );
@@ -97,8 +122,8 @@ typedef struct clap_host_mini_curve_display {
97
122
// true if succesful. If not, return false.
98
123
// [main-thread]
99
124
bool (CLAP_ABI * get )(const clap_host_t * host ,
100
- uint32_t kind ,
101
- clap_mini_display_curve_hints_t * hints );
125
+ uint32_t kind ,
126
+ clap_mini_display_curve_hints_t * hints );
102
127
103
128
// Mark the curve as being static or dynamic.
104
129
// The curve is initially considered as static, though the plugin should explicitely
0 commit comments