Program Listing for File waveanimation.cpp

Return to documentation for file (src/animation/waveanimation.cpp)

#include "waveanimation.h"

namespace PixelMaestro {
    WaveAnimation::WaveAnimation(Section& section) : Animation(section) {
        type_ = AnimationType::Wave;
        map();
    }

    int8_t WaveAnimation::get_skew() const {
        return skew_;
    }

    void WaveAnimation::set_skew(int8_t skew) {
        this->skew_ = skew;
        map();
    }

    void WaveAnimation::map() {
        for (uint16_t y = 0; y < section_.get_dimensions().y; y++) {
            for (uint16_t x = 0; x < section_.get_dimensions().x; x++) {
                uint8_t color_index;
                if (orientation_ == Orientation::Vertical || orientation_ == Orientation::VerticalFlipped) {
                    color_index = y + (x * skew_);
                }
                else {  // Horizontal
                    color_index = x + (y * skew_);
                }
                if (color_index == 255) color_index = 254;
                set_map_color_index(x, y, color_index);
            }
        }
    }

    void WaveAnimation::update() {
        update_cycle(0, palette_->get_num_colors());
    }
}