55 |
if (pass == 0) { |
if (pass == 0) { |
56 |
cr->line_to(w, h); |
cr->line_to(w, h); |
57 |
cr->line_to(0, h); |
cr->line_to(0, h); |
58 |
cr->set_source_rgba(0.5, 0.44, 1.0, 0.2); |
cr->set_source_rgba(0.5, 0.44, 1.0, is_sensitive() ? 0.2 : 0.1); |
59 |
cr->fill(); |
cr->fill(); |
60 |
} else { |
} else { |
61 |
cr->set_line_width(3); |
cr->set_line_width(3); |
62 |
cr->set_source_rgb(0.5, 0.44, 1.0); |
cr->set_source_rgba(0.5, 0.44, 1.0, is_sensitive() ? 1.0 : 0.3); |
63 |
cr->stroke(); |
cr->stroke(); |
64 |
} |
} |
65 |
} |
} |
82 |
#else |
#else |
83 |
bool CrossfadeCurve::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { |
bool CrossfadeCurve::on_draw(const Cairo::RefPtr<Cairo::Context>& cr) { |
84 |
#endif |
#endif |
85 |
if (dimreg && dimreg->Crossfade.out_end) { |
if (dimreg) { |
|
int w = get_width(); |
|
|
int h = get_height(); |
|
|
|
|
86 |
cr->translate(1.5, 0); |
cr->translate(1.5, 0); |
87 |
|
|
88 |
|
// first, draw curves for the other layers |
89 |
|
gig::Region* region = dimreg->GetParent(); |
90 |
|
int dimregno; |
91 |
|
for (dimregno = 0 ; dimregno < region->DimensionRegions ; dimregno++) { |
92 |
|
if (region->pDimensionRegions[dimregno] == dimreg) { |
93 |
|
break; |
94 |
|
} |
95 |
|
} |
96 |
|
int bitcount = 0; |
97 |
|
int layer_bit = 0; |
98 |
|
for (int dim = 0 ; dim < region->Dimensions ; dim++) { |
99 |
|
if (region->pDimensionDefinitions[dim].dimension == |
100 |
|
gig::dimension_layer) { |
101 |
|
layer_bit = 1 << bitcount; |
102 |
|
|
103 |
|
int mask = |
104 |
|
~(((1 << region->pDimensionDefinitions[dim].bits) - 1) << |
105 |
|
bitcount); |
106 |
|
int c = dimregno & mask; // mask away the layer dimension |
107 |
|
|
108 |
|
for (int i = 0 ; i < region->pDimensionDefinitions[dim].zones ; |
109 |
|
i++) { |
110 |
|
gig::DimensionRegion* d = |
111 |
|
region->pDimensionRegions[c + (i << bitcount)]; |
112 |
|
if (d != dimreg) { |
113 |
|
draw_one_curve(cr, d, false); |
114 |
|
} |
115 |
|
} |
116 |
|
break; |
117 |
|
} |
118 |
|
bitcount += region->pDimensionDefinitions[dim].bits; |
119 |
|
} |
120 |
|
|
121 |
|
// then, draw the currently selected layer |
122 |
|
draw_one_curve(cr, dimreg, is_sensitive()); |
123 |
|
} |
124 |
|
return true; |
125 |
|
} |
126 |
|
|
127 |
|
void CrossfadeCurve::draw_one_curve(const Cairo::RefPtr<Cairo::Context>& cr, |
128 |
|
const gig::DimensionRegion* d, |
129 |
|
bool sensitive) { |
130 |
|
int w = get_width(); |
131 |
|
int h = get_height(); |
132 |
|
|
133 |
|
if (d->Crossfade.out_end) { |
134 |
for (int pass = 0 ; pass < 2 ; pass++) { |
for (int pass = 0 ; pass < 2 ; pass++) { |
135 |
cr->move_to(dimreg->Crossfade.in_start / 127.0 * (w - 3), h); |
cr->move_to(d->Crossfade.in_start / 127.0 * (w - 3), h); |
136 |
cr->line_to(dimreg->Crossfade.in_end / 127.0 * (w - 3), 1.5); |
cr->line_to(d->Crossfade.in_end / 127.0 * (w - 3), 1.5); |
137 |
cr->line_to(dimreg->Crossfade.out_start / 127.0 * (w - 3), 1.5); |
cr->line_to(d->Crossfade.out_start / 127.0 * (w - 3), 1.5); |
138 |
cr->line_to(dimreg->Crossfade.out_end / 127.0 * (w - 3), h); |
cr->line_to(d->Crossfade.out_end / 127.0 * (w - 3), h); |
139 |
|
|
140 |
if (pass == 0) { |
if (pass == 0) { |
141 |
cr->set_source_rgba(0.5, 0.44, 1.0, 0.2); |
cr->set_source_rgba(0.5, 0.44, 1.0, sensitive ? 0.2 : 0.1); |
142 |
cr->fill(); |
cr->fill(); |
143 |
} else { |
} else { |
144 |
cr->set_line_width(3); |
cr->set_line_width(3); |
145 |
cr->set_source_rgb(0.5, 0.44, 1.0); |
cr->set_source_rgba(0.5, 0.44, 1.0, sensitive ? 1.0 : 0.3); |
146 |
cr->stroke(); |
cr->stroke(); |
147 |
} |
} |
148 |
} |
} |
149 |
} |
} |
|
return true; |
|
150 |
} |
} |
151 |
|
|
152 |
|
|
943 |
eVCFVelocityCurve.set_sensitive(sensitive); |
eVCFVelocityCurve.set_sensitive(sensitive); |
944 |
eVCFVelocityScale.set_sensitive(sensitive); |
eVCFVelocityScale.set_sensitive(sensitive); |
945 |
eVCFVelocityDynamicRange.set_sensitive(sensitive); |
eVCFVelocityDynamicRange.set_sensitive(sensitive); |
946 |
|
cutoff_curve.set_sensitive(sensitive); |
947 |
eVCFResonance.set_sensitive(sensitive); |
eVCFResonance.set_sensitive(sensitive); |
948 |
eVCFResonanceController.set_sensitive(sensitive); |
eVCFResonanceController.set_sensitive(sensitive); |
949 |
eVCFKeyboardTracking.set_sensitive(sensitive); |
eVCFKeyboardTracking.set_sensitive(sensitive); |
1036 |
eCrossfade_in_end.set_sensitive(hasController); |
eCrossfade_in_end.set_sensitive(hasController); |
1037 |
eCrossfade_out_start.set_sensitive(hasController); |
eCrossfade_out_start.set_sensitive(hasController); |
1038 |
eCrossfade_out_end.set_sensitive(hasController); |
eCrossfade_out_end.set_sensitive(hasController); |
1039 |
|
crossfade_curve.set_sensitive(hasController); |
1040 |
} |
} |
1041 |
|
|
1042 |
void DimRegionEdit::LFO1Controller_changed() |
void DimRegionEdit::LFO1Controller_changed() |