/* * Copyright (c) Contributors to the Open 3D Engine Project. * For complete copyright and license terms please see the LICENSE at the root of this distribution. * * SPDX-License-Identifier: Apache-2.0 OR MIT * */ #pragma once #if !defined(Q_MOC_RUN) #include #include #include #endif namespace ImageProcessingAtom { class PresetSettings; } namespace Ui { class ResolutionSettingItemWidget; } namespace ImageProcessingAtomEditor { enum class ResoultionWidgetType { TexturePipeline, //Fully editable TexturePropety, //Only DownRes is editable }; class ResolutionSettingItemWidget : public QWidget , EditorInternalNotificationBus::Handler { Q_OBJECT public: AZ_CLASS_ALLOCATOR(ResolutionSettingItemWidget, AZ::SystemAllocator, 0); explicit ResolutionSettingItemWidget(ResoultionWidgetType type, QWidget* parent = nullptr); ~ResolutionSettingItemWidget(); void Init(AZStd::string platform, EditorTextureSetting* editorTextureSetting); public slots: void OnChangeDownRes(int downRes); void OnChangeFormat(int index); protected: //////////////////////////////////////////////////////////////////////// //EditorInternalNotificationBus void OnEditorSettingsChanged(bool needRefresh, const AZStd::string& platform); //////////////////////////////////////////////////////////////////////// private: void SetupFormatComboBox(); void SetupResolutionInfo(); void RefreshUI(); QString GetFinalFormat(const ImageProcessingAtom::PresetName& preset); QScopedPointer m_ui; ResoultionWidgetType m_type; AZStd::string m_platform; ImageProcessingAtom::TextureSettings* m_textureSetting; EditorTextureSetting* m_editorTextureSetting; const ImageProcessingAtom::PresetSettings* m_preset; //Cached list of calculated final resolution info based on different reduce levels AZStd::list m_resolutionInfos; //Final reduce level range unsigned int m_maxReduce; unsigned int m_minReduce; }; } //namespace ImageProcessingAtomEditor