VisualTheme.h 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. // zlib open source license
  2. //
  3. // Copyright (c) 2018 to 2022 David Forsgren Piuva
  4. //
  5. // This software is provided 'as-is', without any express or implied
  6. // warranty. In no event will the authors be held liable for any damages
  7. // arising from the use of this software.
  8. //
  9. // Permission is granted to anyone to use this software for any purpose,
  10. // including commercial applications, and to alter it and redistribute it
  11. // freely, subject to the following restrictions:
  12. //
  13. // 1. The origin of this software must not be misrepresented; you must not
  14. // claim that you wrote the original software. If you use this software
  15. // in a product, an acknowledgment in the product documentation would be
  16. // appreciated but is not required.
  17. //
  18. // 2. Altered source versions must be plainly marked as such, and must not be
  19. // misrepresented as being the original software.
  20. //
  21. // 3. This notice may not be removed or altered from any source
  22. // distribution.
  23. #ifndef DFPSR_GUI_VISUALTHEME
  24. #define DFPSR_GUI_VISUALTHEME
  25. #include "../api/mediaMachineAPI.h"
  26. namespace dsr {
  27. // ---------------------------------------- WARNING! ----------------------------------------
  28. //
  29. // This API is not yet finished and may break backwards compatibility before completed.
  30. // It is not yet decided if the media machine will expose virtual assembly code,
  31. // which syntax to define themes using or if themes should be bundled together into archives.
  32. //
  33. // ------------------------------------------------------------------------------------------
  34. // TODO: Move to the API folder once complete.
  35. // Create a theme using a virtual machine with functions to call, style settings telling which functions to call with what arguments, and a path to load any non-embedded images from.
  36. VisualTheme theme_createFromText(const MediaMachine &machine, const ReadableString &styleSettings, const ReadableString &fromPath);
  37. // Create a theme using a virtual machine with functions to call, and a path to the style settings to load.
  38. // Any non-embedded images will be loaded relative to styleFilename's folder;
  39. VisualTheme theme_createFromFile(const MediaMachine &machine, const ReadableString &styleFilename);
  40. // Get a handle to the default theme.
  41. VisualTheme theme_getDefault();
  42. // Get a scalable image by name from the theme.
  43. MediaMethod theme_getScalableImage(const VisualTheme &theme, const ReadableString &className);
  44. // Called by VisualComponent to assign input arguments to functions in the media machine that were not given by the component itself.
  45. // Post-condition: Returns true if argumentName was identified and assigned as input to inputIndex of methodIndex in machine.
  46. bool theme_assignMediaMachineArguments(const VisualTheme &theme, int contextIndex, MediaMachine &machine, int methodIndex, int inputIndex, const ReadableString &argumentName);
  47. }
  48. #endif