diff options
author | Richard Hughes <richard@hughsie.com> | 2014-11-17 21:13:54 +0000 |
---|---|---|
committer | Richard Hughes <richard@hughsie.com> | 2014-11-17 21:13:54 +0000 |
commit | 6bb42e40891f7a572e75d98237d8b5ac208cf104 (patch) | |
tree | 79ebad5f537f5018b17b58ab5a2a69ce6301b675 /lib | |
parent | 826e1d81a5daa21506583767b95c81546f24d725 (diff) | |
download | colord-6bb42e40891f7a572e75d98237d8b5ac208cf104.tar.gz |
libcolord: Add cd_spectrum_set_value()
Sometimes we just want to overwrite the spectral data without duplicating.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/colord/cd-spectrum.c | 18 | ||||
-rw-r--r-- | lib/colord/cd-spectrum.h | 3 | ||||
-rw-r--r-- | lib/colord/cd-test-private.c | 4 |
3 files changed, 25 insertions, 0 deletions
diff --git a/lib/colord/cd-spectrum.c b/lib/colord/cd-spectrum.c index 5623c2a..2865e3e 100644 --- a/lib/colord/cd-spectrum.c +++ b/lib/colord/cd-spectrum.c @@ -110,6 +110,24 @@ cd_spectrum_get_value (const CdSpectrum *spectrum, guint idx) } /** + * cd_spectrum_set_value: + * @spectrum: a #CdSpectrum instance. + * @idx: an index into the data + * @data: a data value + * + * Overwrites the spectrum data at a specified index. + * + * Since: 1.2.6 + **/ +void +cd_spectrum_set_value (CdSpectrum *spectrum, guint idx, gdouble data) +{ + g_return_if_fail (spectrum != NULL); + g_return_if_fail (idx < spectrum->data->len); + g_array_index (spectrum->data, gdouble, idx) = data / spectrum->norm; +} + +/** * cd_spectrum_get_value_raw: * @spectrum: a #CdSpectrum instance. * @idx: an index into the data diff --git a/lib/colord/cd-spectrum.h b/lib/colord/cd-spectrum.h index f9a7308..1885d62 100644 --- a/lib/colord/cd-spectrum.h +++ b/lib/colord/cd-spectrum.h @@ -72,6 +72,9 @@ void cd_spectrum_set_end (CdSpectrum *spectrum, gdouble end); void cd_spectrum_set_norm (CdSpectrum *spectrum, gdouble norm); +void cd_spectrum_set_value (CdSpectrum *spectrum, + guint idx, + gdouble data); void cd_spectrum_add_value (CdSpectrum *spectrum, gdouble data); CdSpectrum *cd_spectrum_multiply (CdSpectrum *s1, diff --git a/lib/colord/cd-test-private.c b/lib/colord/cd-test-private.c index ac3c08b..337aed2 100644 --- a/lib/colord/cd-test-private.c +++ b/lib/colord/cd-test-private.c @@ -249,6 +249,10 @@ colord_spectrum_func (void) g_assert_cmpfloat (ABS (cd_spectrum_get_value_raw (s, 1) - 0.75f), <, 0.001f); g_assert_cmpfloat (ABS (cd_spectrum_get_value_raw (s, 2) - 1.f), <, 0.001f); + /* test setting of data */ + cd_spectrum_set_value (s, 0, 10.f); + g_assert_cmpfloat (ABS (cd_spectrum_get_value (s, 0) - 10.0f), <, 0.001f); + cd_spectrum_free (s); } |