ImageProcessingSystemComponent.h 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /*
  2. * Copyright (c) Contributors to the Open 3D Engine Project.
  3. * For complete copyright and license terms please see the LICENSE at the root of this distribution.
  4. *
  5. * SPDX-License-Identifier: Apache-2.0 OR MIT
  6. *
  7. */
  8. #pragma once
  9. #include <AzCore/Component/Component.h>
  10. #include <Atom/ImageProcessing/ImageProcessingBus.h>
  11. #include <Atom/ImageProcessing/ImageProcessingEditorBus.h>
  12. #include <AzToolsFramework/AssetBrowser/AssetBrowserBus.h>
  13. #include <AzToolsFramework/AssetBrowser/AssetBrowserEntry.h>
  14. #include <AzToolsFramework/AssetBrowser/Previewer/PreviewerBus.h>
  15. #include <Source/Previewer/ImagePreviewerFactory.h>
  16. namespace ImageProcessingAtom
  17. {
  18. class ImageProcessingSystemComponent
  19. : public AZ::Component
  20. , protected ImageProcessingRequestBus::Handler
  21. , protected ImageProcessingAtomEditor::ImageProcessingEditorRequestBus::Handler
  22. , protected AzToolsFramework::AssetBrowser::AssetBrowserInteractionNotificationBus::Handler
  23. , protected AzToolsFramework::AssetBrowser::PreviewerRequestBus::Handler
  24. {
  25. public:
  26. AZ_COMPONENT(ImageProcessingSystemComponent, "{AA1B93BF-8150-401A-8FF2-873B0C19299D}");
  27. static void Reflect(AZ::ReflectContext* context);
  28. static void GetProvidedServices(AZ::ComponentDescriptor::DependencyArrayType& provided);
  29. static void GetIncompatibleServices(AZ::ComponentDescriptor::DependencyArrayType& incompatible);
  30. static void GetRequiredServices(AZ::ComponentDescriptor::DependencyArrayType& required);
  31. static void GetDependentServices(AZ::ComponentDescriptor::DependencyArrayType& dependent);
  32. protected:
  33. ////////////////////////////////////////////////////////////////////////
  34. // AtomImageProcessingEditorRequestBus interface implementation
  35. void OpenSourceTextureFile(const AZ::Uuid& textureSourceID) override;
  36. ////////////////////////////////////////////////////////////////////////
  37. ////////////////////////////////////////////////////////////////////////
  38. // AtomImageProcessingRequestBus interface implementation
  39. IImageObjectPtr LoadImage(const AZStd::string& filePath) override;
  40. IImageObjectPtr LoadImagePreview(const AZStd::string& filePath) override;
  41. ////////////////////////////////////////////////////////////////////////
  42. ////////////////////////////////////////////////////////////////////////
  43. // AZ::Component interface implementation
  44. void Init() override;
  45. void Activate() override;
  46. void Deactivate() override;
  47. ////////////////////////////////////////////////////////////////////////
  48. ////////////////////////////////////////////////////////////////////////
  49. // AzToolsFramework::AssetBrowser::AssetBrowserInteractionNotificationsBus::Handler
  50. void AddContextMenuActions(QWidget* /*caller*/, QMenu* menu, const AZStd::vector<const AzToolsFramework::AssetBrowser::AssetBrowserEntry*>& entries) override;
  51. ////////////////////////////////////////////////////////////////////////
  52. ////////////////////////////////////////////////////////////////////////
  53. // AzToolsFramework::AssetBrowser::PreviewerRequestBus::Handler
  54. const AzToolsFramework::AssetBrowser::PreviewerFactory* GetPreviewerFactory(const AzToolsFramework::AssetBrowser::AssetBrowserEntry* entry) const override;
  55. ////////////////////////////////////////////////////////////////////////
  56. private:
  57. bool HandlesSource(const AzToolsFramework::AssetBrowser::SourceAssetBrowserEntry* entry) const;
  58. bool SaveStreamingImageAssetToDDS(const AZ::Data::AssetId& assetId, AZStd::string_view filePath);
  59. AZStd::unique_ptr<const ImagePreviewerFactory> m_previewerFactory;
  60. // Last saved dds file path
  61. QString m_lastSavedPath;
  62. };
  63. } // namespace ImageProcessingAtom