summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Hughes <richard@hughsie.com>2017-01-02 11:08:11 +0000
committerRichard Hughes <richard@hughsie.com>2017-01-03 08:36:32 +0000
commit18b1c41bc7775d5f632e44e4958083ba36876372 (patch)
tree637e59a4816f3335086d79f8ec5bad3da2d2dac8
parent54f25d7158485034a13bd29065708eac21ce606c (diff)
downloadcolord-18b1c41bc7775d5f632e44e4958083ba36876372.tar.gz
libcolord: Add cd_spectrum_multiply_scalar()
-rw-r--r--lib/colord/cd-spectrum.c20
-rw-r--r--lib/colord/cd-spectrum.h2
2 files changed, 22 insertions, 0 deletions
diff --git a/lib/colord/cd-spectrum.c b/lib/colord/cd-spectrum.c
index 9ee2a22..e0ab0ef 100644
--- a/lib/colord/cd-spectrum.c
+++ b/lib/colord/cd-spectrum.c
@@ -743,6 +743,26 @@ cd_spectrum_multiply (CdSpectrum *s1, CdSpectrum *s2, gdouble resolution)
}
/**
+ * cd_spectrum_multiply_scalar:
+ * @spectrum: a #CdSpectrum instance
+ * @value: a scalar value
+ *
+ * Multiplies a spectra with a scalar value.
+ *
+ * Return value: a #CdSpectrum instance
+ *
+ * Since: 1.3.5
+ **/
+CdSpectrum *
+cd_spectrum_multiply_scalar (CdSpectrum *spectrum, gdouble value)
+{
+ CdSpectrum *s = cd_spectrum_dup (spectrum);
+ for (guint i = 0; i < spectrum->data->len; i++)
+ cd_spectrum_add_value (s, cd_spectrum_get_value (spectrum, i) * value);
+ return s;
+}
+
+/**
* cd_spectrum_subtract:
* @s1: a #CdSpectrum instance, e.g. a sample
* @s2: a #CdSpectrum instance, e.g. a dark calibration
diff --git a/lib/colord/cd-spectrum.h b/lib/colord/cd-spectrum.h
index 83af8c1..b9c7349 100644
--- a/lib/colord/cd-spectrum.h
+++ b/lib/colord/cd-spectrum.h
@@ -104,6 +104,8 @@ void cd_spectrum_get_wavelength_cal (CdSpectrum *spectrum,
CdSpectrum *cd_spectrum_multiply (CdSpectrum *s1,
CdSpectrum *s2,
gdouble resolution);
+CdSpectrum *cd_spectrum_multiply_scalar (CdSpectrum *spectrum,
+ gdouble value);
CdSpectrum *cd_spectrum_resample (CdSpectrum *spectrum,
gdouble start,
gdouble end,