| 
    OpenShot Library | libopenshot
    0.4.0
    
   | 
 
 
 
 
Go to the documentation of this file.
   19 Wave::Wave() : wavelength(0.06), amplitude(0.3), multiplier(0.2), shift_x(0.0), speed_y(0.2) {
 
   21     init_effect_details();
 
   26         : wavelength(wavelength), amplitude(amplitude), multiplier(multiplier), shift_x(shift_x), speed_y(speed_y)
 
   29     init_effect_details();
 
   33 void Wave::init_effect_details()
 
   49 std::shared_ptr<openshot::Frame> 
Wave::GetFrame(std::shared_ptr<openshot::Frame> frame, int64_t frame_number)
 
   52     std::shared_ptr<QImage> frame_image = frame->GetImage();
 
   55     const unsigned char *original_pixels = (
unsigned char *) frame_image->constBits();
 
   56     unsigned char *pixels = (
unsigned char *) frame_image->bits();
 
   57     int pixel_count = frame_image->width() * frame_image->height();
 
   60     double time = frame_number;
 
   68     #pragma omp parallel for 
   69     for (
int pixel = 0; pixel < pixel_count; ++pixel)
 
   72         int Y = pixel / frame_image->width();
 
   75         float noiseVal = (100 + Y * 0.001) * multiplier_value;  
 
   76         float noiseAmp = noiseVal * amplitude_value;  
 
   77         float waveformVal = sin((Y * wavelength_value) + (time * speed_y_value));  
 
   78         float waveVal = (waveformVal + shift_x_value) * noiseAmp;  
 
   80         long unsigned int source_px = round(pixel + waveVal);
 
   83         if (source_px >= pixel_count)
 
   84             source_px = pixel_count - 1;
 
   87         memcpy(&pixels[pixel * 4], &original_pixels[source_px * 4], 
sizeof(
char) * 4);
 
  127     catch (
const std::exception& e)
 
  130         throw InvalidJSON(
"JSON is invalid (missing keys or invalid data types)");
 
  141     if (!root[
"wavelength"].isNull())
 
  143     if (!root[
"amplitude"].isNull())
 
  145     if (!root[
"multiplier"].isNull())
 
  147     if (!root[
"shift_x"].isNull())
 
  149     if (!root[
"speed_y"].isNull())
 
  167     return root.toStyledString();
 
  
Json::Value add_property_json(std::string name, float value, std::string type, std::string memo, const Keyframe *keyframe, float min_value, float max_value, bool readonly, int64_t requested_frame) const
Generate JSON for a property.
 
const Json::Value stringToJson(const std::string value)
 
EffectInfoStruct info
Information about the current effect.
 
Keyframe wavelength
The length of the wave.
 
std::shared_ptr< openshot::Frame > GetFrame(int64_t frame_number) override
This method is required for all derived classes of ClipBase, and returns a new openshot::Frame object...
 
This namespace is the default namespace for all code in the openshot library.
 
virtual Json::Value JsonValue() const
Generate Json::Value for this object.
 
Keyframe speed_y
Speed of the wave on the Y-axis.
 
void SetJsonValue(const Json::Value root)
Load Json::Value into this object.
 
Json::Value JsonValue() const
Generate Json::Value for this object.
 
Keyframe shift_x
Amount to shift X-axis.
 
Json::Value BasePropertiesJSON(int64_t requested_frame) const
Generate JSON object of base properties (recommended to be used by all effects)
 
Json::Value JsonValue() const override
Generate Json::Value for this object.
 
A Keyframe is a collection of Point instances, which is used to vary a number or property over time.
 
Keyframe amplitude
The height of the wave.
 
Exception for invalid JSON.
 
Keyframe multiplier
Amount to multiply the wave (make it bigger)
 
bool has_audio
Determines if this effect manipulates the audio of a frame.
 
Header file for Wave effect class.
 
std::string PropertiesJSON(int64_t requested_frame) const override
 
void SetJson(const std::string value) override
Load JSON string into this object.
 
std::string class_name
The class name of the effect.
 
std::string description
The description of this effect and what it does.
 
bool has_video
Determines if this effect manipulates the image of a frame.
 
Wave()
Default constructor, useful when using Json to load the effect properties.
 
std::string Json() const override
Generate JSON string of this object.
 
std::string name
The name of the effect.
 
void SetJsonValue(const Json::Value root) override
Load Json::Value into this object.
 
Header file for all Exception classes.
 
virtual void SetJsonValue(const Json::Value root)
Load Json::Value into this object.
 
double GetValue(int64_t index) const
Get the value at a specific index.