#include "colormanager.h" #include #include "common/define.h" #include "config/config.h" #include "core.h" ColorManager::ColorManager() { // Ensures config is set to something config_ = OCIO::GetCurrentConfig(); } OCIO::ConstConfigRcPtr ColorManager::GetConfig() const { return config_; } void ColorManager::SetConfig(const QString &filename) { SetConfig(OCIO::Config::CreateFromFile(filename.toUtf8())); } void ColorManager::SetConfig(OCIO::ConstConfigRcPtr config) { config_ = config; emit ConfigChanged(); } void ColorManager::DisassociateAlpha(FramePtr f) { AssociateAlphaPixFmtFilter(kDisassociate, f); } void ColorManager::AssociateAlpha(FramePtr f) { AssociateAlphaPixFmtFilter(kAssociate, f); } void ColorManager::ReassociateAlpha(FramePtr f) { AssociateAlphaPixFmtFilter(kReassociate, f); } QStringList ColorManager::ListAvailableDisplays() { QStringList displays; int number_of_displays = config_->getNumDisplays(); for (int i=0;igetDisplay(i)); } return displays; } QString ColorManager::GetDefaultDisplay() { return config_->getDefaultDisplay(); } QStringList ColorManager::ListAvailableViews(QString display) { QStringList views; int number_of_views = config_->getNumViews(display.toUtf8()); for (int i=0;igetView(display.toUtf8(), i)); } return views; } QString ColorManager::GetDefaultView(const QString &display) { return config_->getDefaultView(display.toUtf8()); } QStringList ColorManager::ListAvailableLooks() { QStringList looks; int number_of_looks = config_->getNumLooks(); for (int i=0;igetLookNameByIndex(i)); } return looks; } QStringList ColorManager::ListAvailableInputColorspaces() { return ListAvailableInputColorspaces(config_); } QStringList ColorManager::ListAvailableInputColorspaces(OCIO::ConstConfigRcPtr config) { QStringList spaces; int number_of_colorspaces = config->getNumColorSpaces(); for (int i=0;igetColorSpaceNameByIndex(i)); } return spaces; } ColorManager::OCIOMethod ColorManager::GetOCIOMethodForMode(RenderMode::Mode mode) { return static_cast(Core::GetPreferenceForRenderMode(mode, QStringLiteral("OCIOMethod")).toInt()); } void ColorManager::SetOCIOMethodForMode(RenderMode::Mode mode, ColorManager::OCIOMethod method) { Core::SetPreferenceForRenderMode(mode, QStringLiteral("OCIOMethod"), method); } void ColorManager::AssociateAlphaPixFmtFilter(ColorManager::AlphaAction action, FramePtr f) { int pixel_count = f->width() * f->height() * kRGBAChannels; switch (static_cast(f->format())) { case PixelFormat::PIX_FMT_INVALID: case PixelFormat::PIX_FMT_COUNT: qWarning() << "Alpha association functions received an invalid pixel format"; break; case PixelFormat::PIX_FMT_RGBA8: case PixelFormat::PIX_FMT_RGBA16U: qWarning() << "Alpha association functions only works on float-based pixel formats at this time"; break; case PixelFormat::PIX_FMT_RGBA16F: { AssociateAlphaInternal(action, reinterpret_cast(f->data()), pixel_count); break; } case PixelFormat::PIX_FMT_RGBA32F: { AssociateAlphaInternal(action, reinterpret_cast(f->data()), pixel_count); break; } } } template void ColorManager::AssociateAlphaInternal(ColorManager::AlphaAction action, T *data, int pix_count) { for (int i=0;i 0) { for (int j=0;j