#include "emotemap.hpp"

#include "application.hpp"
#include "singletons/settingsmanager.hpp"

namespace chatterino {
namespace util {

EmoteData::EmoteData(messages::Image *_image)
    : image1x(_image)
{
}

// Emotes must have a 1x image to be valid
bool EmoteData::isValid() const
{
    return this->image1x != nullptr;
}

messages::Image *EmoteData::getImage(float scale) const
{
    int quality = getApp()->settings->preferredEmoteQuality;

    if (quality == 0) {
        scale *= getApp()->settings->emoteScale.getValue();
        quality = [&] {
            if (scale <= 1)
                return 1;
            if (scale <= 2)
                return 2;
            return 3;
        }();
    }

    messages::Image *_image;
    if (quality == 3 && this->image3x != nullptr) {
        _image = this->image3x;
    } else if (quality >= 2 && this->image2x != nullptr) {
        _image = this->image2x;
    } else {
        _image = this->image1x;
    }

    return _image;
}

}  // namespace util
}  // namespace chatterino
