ObjectParser.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. #pragma once
  2. #include <vector>
  3. #include "WallpaperEngine/Data/JSON.h"
  4. #include "WallpaperEngine/Data/Model/Object.h"
  5. namespace WallpaperEngine::Data::Model {
  6. struct ObjectData;
  7. }
  8. namespace WallpaperEngine::Data::Parsers {
  9. using JSON = WallpaperEngine::Data::JSON::JSON;
  10. using namespace WallpaperEngine::Data::Model;
  11. class ObjectParser {
  12. public:
  13. /** ImageAlignment flags from an alignment name, images re-read it when a script changes it */
  14. static uint32_t parseAlignment (const std::string& alignment);
  15. static ObjectUniquePtr parse (const JSON& it, const Project& project);
  16. private:
  17. static std::vector<int> parseDependencies (const JSON& it);
  18. static SoundUniquePtr parseSound (const JSON& it, const Project& project, ObjectData base);
  19. static SoundPlaybackMode parsePlaybackMode (const std::string& mode);
  20. static ImageUniquePtr
  21. parseImage (const JSON& it, const Project& project, ObjectData base, const std::string& image);
  22. static ParticleUniquePtr parseParticle (const JSON& it, const Project& project, ObjectData base, int depth = 0);
  23. static TextUniquePtr parseText (const JSON& it, const Project& project, ObjectData base);
  24. static LightUniquePtr parseLight (const JSON& it, const Project& project, ObjectData base);
  25. static MeshUniquePtr parseMesh (const JSON& it, ObjectData base);
  26. static SceneCameraUniquePtr parseCamera (const JSON& it, const Project& project, ObjectData base);
  27. static std::vector<ImageEffectUniquePtr> parseEffects (const JSON& it, const Project& project);
  28. static ImageEffectUniquePtr parseEffect (const JSON& it, const Project& project);
  29. static std::vector<ImageEffectPassOverrideUniquePtr>
  30. parseEffectPassOverrides (const JSON& it, const Project& project);
  31. static ImageEffectPassOverrideUniquePtr parseEffectPass (const JSON& it, const Project& project);
  32. static ComboMap parseComboMap (const JSON& it);
  33. static std::vector<ImageAnimationLayerUniquePtr> parseAnimationLayers (const JSON& it, const Project& project);
  34. static ImageAnimationLayerUniquePtr parseAnimationLayer (const JSON& it, const Project& project);
  35. static ParticleEmitter parseParticleEmitter (const JSON& it);
  36. static ParticleInitializerUniquePtr parseParticleInitializer (const JSON& it, const Properties& properties);
  37. static ParticleOperatorUniquePtr parseParticleOperator (const JSON& it, const Properties& properties);
  38. static ParticleRenderer parseParticleRenderer (const JSON& it);
  39. static ParticleControlPoint parseParticleControlPoint (const JSON& it);
  40. static ParticleEventInput parseParticleEventInput (const JSON& it, ParticleEventInput fallback);
  41. static ParticleChild parseParticleChild (
  42. const JSON& it, const JSON& owner, const Project& project, const ObjectData& ownerBase, size_t index, int depth
  43. );
  44. static ParticleInstanceOverride parseParticleInstanceOverride (const JSON& it, const Properties& properties);
  45. };
  46. } // namespace WallpaperEngine::Data::Parsers