1
0
Fork 0

Add a simple formatters library

We can add common formats here so you don't need to repeat them all the
time.
This commit is contained in:
Robbert van der Helm 2022-01-28 14:33:29 +01:00
parent 6439acad84
commit 71dc144c73
3 changed files with 27 additions and 1 deletions

View file

@ -18,6 +18,7 @@
extern crate nih_plug; extern crate nih_plug;
use nih_plug::{ use nih_plug::{
formatters,
params::{FloatParam, Params, Range}, params::{FloatParam, Params, Range},
plugin::{BufferConfig, BusConfig, Plugin, ProcessStatus, Vst3Plugin}, plugin::{BufferConfig, BusConfig, Plugin, ProcessStatus, Vst3Plugin},
util, util,
@ -53,7 +54,7 @@ impl Default for GainParams {
}, },
name: "Gain", name: "Gain",
unit: " dB", unit: " dB",
value_to_string: None, value_to_string: formatters::f32_rounded(2),
string_to_value: None, string_to_value: None,
}, },
} }

22
src/formatters.rs Normal file
View file

@ -0,0 +1,22 @@
// nih-plug: plugins, but rewritten in Rust
// Copyright (C) 2022 Robbert van der Helm
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
//! Convenience functions for formatting and parsing parameter values in common formats.
/// Round an `f32` value to always have a specific number of decimal digits.
pub fn f32_rounded(digits: usize) -> Option<Box<dyn Send + Sync + Fn(f32) -> String>> {
Some(Box::new(move |x| format!("{:.digits$}", x)))
}

View file

@ -14,8 +14,11 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>. // along with this program. If not, see <https://www.gnu.org/licenses/>.
// TODO: Once everything is more fleshed out, document the basic usage of this library
#[macro_use] #[macro_use]
pub mod debug; pub mod debug;
pub mod formatters;
pub mod params; pub mod params;
pub mod plugin; pub mod plugin;
pub mod util; pub mod util;