3
0

ImageThumbnail.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. #if !defined(Q_MOC_RUN)
  10. #include <AzCore/std/containers/unordered_set.h>
  11. #include <AzCore/std/parallel/binary_semaphore.h>
  12. #include <AzFramework/Asset/AssetCatalogBus.h>
  13. #include <AzToolsFramework/Thumbnails/Thumbnail.h>
  14. #include <AzToolsFramework/Thumbnails/ThumbnailerBus.h>
  15. #endif
  16. namespace ImageProcessingAtom
  17. {
  18. namespace Thumbnails
  19. {
  20. /**
  21. * Custom image thumbnail that detects when an asset changes and updates the thumbnail
  22. */
  23. class ImageThumbnail
  24. : public AzToolsFramework::Thumbnailer::Thumbnail
  25. , public AzToolsFramework::Thumbnailer::ThumbnailerRendererNotificationBus::Handler
  26. , public AzFramework::AssetCatalogEventBus::Handler
  27. {
  28. Q_OBJECT
  29. public:
  30. ImageThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key);
  31. ~ImageThumbnail() override;
  32. //! AzToolsFramework::ThumbnailerRendererNotificationBus::Handler overrides...
  33. void ThumbnailRendered(const QPixmap& thumbnailImage) override;
  34. void ThumbnailFailedToRender() override;
  35. void Load() override;
  36. private:
  37. // AzFramework::AssetCatalogEventBus::Handler interface overrides...
  38. void OnCatalogAssetChanged(const AZ::Data::AssetId& assetId) override;
  39. AZStd::unordered_set<AZ::Data::AssetId> m_assetIds;
  40. };
  41. /**
  42. * Cache configuration for large image thumbnails
  43. */
  44. class ImageThumbnailCache
  45. : public AzToolsFramework::Thumbnailer::ThumbnailCache<ImageThumbnail>
  46. {
  47. public:
  48. ImageThumbnailCache();
  49. ~ImageThumbnailCache() override;
  50. int GetPriority() const override;
  51. const char* GetProviderName() const override;
  52. static constexpr const char* ProviderName = "Image Thumbnails";
  53. protected:
  54. bool IsSupportedThumbnail(AzToolsFramework::Thumbnailer::SharedThumbnailKey key) const override;
  55. };
  56. } // namespace Thumbnails
  57. } // namespace ImageProcessingAtom