MCPcopy Create free account
hub / github.com/FastLED/FastLED / ui

Function ui

examples/Fx/FxWave2d/wavefx.cpp:265–320  ·  view source on GitHub ↗

Apply all UI settings to the wave effects and return button states

Source from the content-addressed store, hash-verified

263
264// Apply all UI settings to the wave effects and return button states
265ui_state ui() {
266 // Set the easing function based on the checkbox
267 // Easing controls how wave heights are calculated:
268 // - LINEAR: Simple linear mapping (sharper waves)
269 // - SQRT: Square root mapping (more natural, rounded waves)
270 fl::U8EasingFunction easeMode = easeModeSqrt
271 ? fl::U8EasingFunction::WAVE_U8_MODE_SQRT
272 : fl::U8EasingFunction::WAVE_U8_MODE_LINEAR;
273
274 // Apply all settings from UI controls to the lower wave layer
275 waveFxLower.setSpeed(speedLower); // Wave propagation speed
276 waveFxLower.setDampening(dampeningLower); // How quickly waves lose energy
277 waveFxLower.setHalfDuplex(halfDuplexLower); // Whether waves can go negative
278 waveFxLower.setSuperSample(getSuperSample()); // Anti-aliasing quality
279 // Apply after setSuperSample() so the user's choice survives the
280 // wrapper's multiplier-based auto-select for the stencil.
281 waveFxLower.setStencil(isotropicStencilLower
282 ? fl::LaplacianStencil::NinePointIsotropic
283 : fl::LaplacianStencil::FivePoint);
284 waveFxLower.setEasingMode(easeMode); // Wave height calculation method
285 waveFxLower.setUseChangeGrid(useChangeGrid); // Performance optimization vs visual quality
286
287 // Apply all settings from UI controls to the upper wave layer
288 waveFxUpper.setSpeed(speedUpper); // Wave propagation speed
289 waveFxUpper.setDampening(dampeningUpper); // How quickly waves lose energy
290 waveFxUpper.setHalfDuplex(halfDuplexUpper); // Whether waves can go negative
291 waveFxUpper.setSuperSample(getSuperSample()); // Anti-aliasing quality
292 waveFxUpper.setStencil(isotropicStencilUpper
293 ? fl::LaplacianStencil::NinePointIsotropic
294 : fl::LaplacianStencil::FivePoint);
295 waveFxUpper.setEasingMode(easeMode); // Wave height calculation method
296 waveFxUpper.setUseChangeGrid(useChangeGrid); // Performance optimization vs visual quality
297
298 // Apply global blur settings to the blender
299 fxBlend.setGlobalBlurAmount(blurAmount); // Overall blur strength
300 fxBlend.setGlobalBlurPasses(blurPasses); // Number of blur passes
301
302 // Create parameter structures for each wave layer's blur settings
303 fl::Blend2dParams lower_params;
304 lower_params.blur_amount = blurAmountLower; // Blur amount for lower layer
305 lower_params.blur_passes = blurPassesLower; // Blur passes for lower layer
306
307 fl::Blend2dParams upper_params;
308 upper_params.blur_amount = blurAmountUpper; // Blur amount for upper layer
309 upper_params.blur_passes = blurPassesUpper; // Blur passes for upper layer
310
311 // Apply the layer-specific blur parameters
312 fxBlend.setParams(waveFxLower, lower_params);
313 fxBlend.setParams(waveFxUpper, upper_params);
314
315 // Return the current state of the UI buttons
316 ui_state state;
317 state.button = button; // Regular ripple button
318 state.bigButton = buttonFancy; // Fancy effect button
319 return state;
320}
321
322// Handle automatic triggering of ripples at random intervals

Callers 1

wavefx_loopFunction · 0.85

Calls 11

setGlobalBlurAmountMethod · 0.80
setGlobalBlurPassesMethod · 0.80
getSuperSampleFunction · 0.70
setSpeedMethod · 0.45
setDampeningMethod · 0.45
setHalfDuplexMethod · 0.45
setSuperSampleMethod · 0.45
setStencilMethod · 0.45
setEasingModeMethod · 0.45
setUseChangeGridMethod · 0.45
setParamsMethod · 0.45

Tested by

no test coverage detected