1 /** 2 * @file 3 * @brief Header file for Color class 4 * @author Jonathan Thomas <jonathan@openshot.org> 5 * 6 * @ref License 7 */ 8 9 /* LICENSE 10 * 11 * Copyright (c) 2008-2019 OpenShot Studios, LLC 12 * <http://www.openshotstudios.com/>. This file is part of 13 * OpenShot Library (libopenshot), an open-source project dedicated to 14 * delivering high quality video editing and animation solutions to the 15 * world. For more information visit <http://www.openshot.org/>. 16 * 17 * OpenShot Library (libopenshot) is free software: you can redistribute it 18 * and/or modify it under the terms of the GNU Lesser General Public License 19 * as published by the Free Software Foundation, either version 3 of the 20 * License, or (at your option) any later version. 21 * 22 * OpenShot Library (libopenshot) is distributed in the hope that it will be 23 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of 24 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 * GNU Lesser General Public License for more details. 26 * 27 * You should have received a copy of the GNU Lesser General Public License 28 * along with OpenShot Library. If not, see <http://www.gnu.org/licenses/>. 29 */ 30 31 #ifndef OPENSHOT_COLOR_H 32 #define OPENSHOT_COLOR_H 33 34 #include "KeyFrame.h" 35 #include <QtGui/QColor> 36 37 namespace openshot { 38 39 /** 40 * @brief This class represents a color (used on the timeline and clips) 41 * 42 * Colors are represented by 4 curves, representing red, green, blue, and alpha. The curves 43 * can be used to animate colors over time. 44 */ 45 class Color{ 46 47 public: 48 openshot::Keyframe red; ///<Curve representing the red value (0 - 255) 49 openshot::Keyframe green; ///<Curve representing the green value (0 - 255) 50 openshot::Keyframe blue; ///<Curve representing the red value (0 - 255) 51 openshot::Keyframe alpha; ///<Curve representing the alpha value (0 - 255) 52 53 /// Default constructor Color()54 Color() {}; 55 56 /// Constructor which takes a HEX color code 57 Color(std::string color_hex); 58 59 /// Constructor which takes R,G,B,A 60 Color(unsigned char Red, unsigned char Green, unsigned char Blue, unsigned char Alpha); 61 62 /// Constructor which takes 4 existing Keyframe curves 63 Color(openshot::Keyframe Red, openshot::Keyframe Green, openshot::Keyframe Blue, openshot::Keyframe Alpha); 64 65 /// Get the HEX value of a color at a specific frame 66 std::string GetColorHex(int64_t frame_number); 67 68 // Get the RGBA values of a color at a specific frame 69 std::vector<int> GetColorRGBA(int64_t frame_number); 70 71 /// Get the distance between 2 RGB pairs. (0=identical colors, 10=very close colors, 760=very different colors) 72 static long GetDistance(long R1, long G1, long B1, long R2, long G2, long B2); 73 74 // Get and Set JSON methods 75 std::string Json() const; ///< Generate JSON string of this object 76 Json::Value JsonValue() const; ///< Generate Json::Value for this object 77 void SetJson(const std::string value); ///< Load JSON string into this object 78 void SetJsonValue(const Json::Value root); ///< Load Json::Value into this object 79 }; 80 81 82 } 83 84 #endif 85