The JUCE cross-platform C++ framework, with DISTRHO/KXStudio specific changes
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

87 lines
2.5KB

  1. /*
  2. ==============================================================================
  3. This file is part of the JUCE library.
  4. Copyright (c) 2022 - Raw Material Software Limited
  5. JUCE is an open source library subject to commercial or open-source
  6. licensing.
  7. By using JUCE, you agree to the terms of both the JUCE 7 End-User License
  8. Agreement and JUCE Privacy Policy.
  9. End User License Agreement: www.juce.com/juce-7-licence
  10. Privacy Policy: www.juce.com/juce-privacy-policy
  11. Or: You may also use this code under the terms of the GPL v3 (see
  12. www.gnu.org/licenses).
  13. JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
  14. EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
  15. DISCLAIMED.
  16. ==============================================================================
  17. */
  18. #pragma once
  19. //==============================================================================
  20. struct Icon
  21. {
  22. Icon() = default;
  23. Icon (const Path& pathToUse, Colour pathColour)
  24. : path (pathToUse),
  25. colour (pathColour)
  26. {
  27. }
  28. void draw (Graphics& g, const juce::Rectangle<float>& area, bool isCrossedOut) const
  29. {
  30. if (! path.isEmpty())
  31. {
  32. g.setColour (colour);
  33. const RectanglePlacement placement (RectanglePlacement::centred | RectanglePlacement::onlyReduceInSize);
  34. g.fillPath (path, placement.getTransformToFit (path.getBounds(), area));
  35. if (isCrossedOut)
  36. {
  37. g.setColour (Colours::red.withAlpha (0.8f));
  38. g.drawLine ((float) area.getX(), area.getY() + area.getHeight() * 0.2f,
  39. (float) area.getRight(), area.getY() + area.getHeight() * 0.8f, 3.0f);
  40. }
  41. }
  42. }
  43. Icon withContrastingColourTo (Colour background) const
  44. {
  45. return Icon (path, background.contrasting (colour, 0.6f));
  46. }
  47. Icon withColour (Colour newColour)
  48. {
  49. return Icon (path, newColour);
  50. }
  51. Path path;
  52. Colour colour;
  53. };
  54. //==============================================================================
  55. class Icons
  56. {
  57. public:
  58. Icons();
  59. Path imageDoc, config, graph, info, warning, user, closedFolder, exporter, fileExplorer, file,
  60. modules, openFolder, settings, singleModule, plus, android, codeBlocks,
  61. linux, xcode, visualStudio;
  62. private:
  63. JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Icons)
  64. };
  65. const Icons& getIcons();