/*!
* \brief Returns a grayscaled and dithered version of the current Image.
*
+ * Using std::optional would be ideal here, but this program is aiming for
+ * compatibility up to C++11, and std::optional was made available in C++17.
+ *
* \return A std::unique_ptr holding an Image on success, empty otherwise.
*/
std::unique_ptr<Image> ToGrayscaleDitheredWithBlueNoise(Image *blue_noise);
* channels. There may be mixed pixels as a result, such as yellow, cyan,
* magenta, or white.
*
+ * Using std::optional would be ideal here, but this program is aiming for
+ * compatibility up to C++11, and std::optional was made available in C++17.
+ *
* \return A std::unique_ptr holding an Image on success, empty otherwise.
*/
std::unique_ptr<Image> ToColorDitheredWithBlueNoise(Image *blue_noise);
* \brief Assign a previously created buffer to a kernel function's
* parameter.
*
+ * idx refers to the parameter index for the kernel function.
+ *
* \return true on success.
*/
bool AssignKernelBuffer(const std::string &kernel_name, unsigned int idx,
~Video();
+ // disable copy
+ Video(const Video &other) = delete;
+ Video &operator=(const Video &other) = delete;
+
+ // allow move
+ Video(Video &&other) = default;
+ Video &operator=(Video &&other) = default;
+
/// Same as DitherVideo(const std::string&, Image*, bool, bool)
bool DitherVideo(const char *output_filename, Image *blue_noise,
bool grayscale = false, bool overwrite = false);