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.

57 lines
1.3KB

  1. #pragma once
  2. #include <common.hpp>
  3. #include <math.hpp>
  4. #include <jansson.h>
  5. namespace rack {
  6. /** Rack-specific GUI widgets and functions that control and offer feedback for the rack state.
  7. */
  8. namespace app {
  9. extern const std::string APP_NAME;
  10. extern const std::string APP_VERSION;
  11. extern const std::string APP_ARCH;
  12. extern const std::string ABI_VERSION;
  13. extern const std::string API_URL;
  14. extern const std::string API_VERSION;
  15. static const float SVG_DPI = 75.f;
  16. static const float MM_PER_IN = 25.4f;
  17. /** Converts inch measurements to pixels */
  18. inline float in2px(float in) {
  19. return in * SVG_DPI;
  20. }
  21. inline math::Vec in2px(math::Vec in) {
  22. return in.mult(SVG_DPI);
  23. }
  24. /** Converts millimeter measurements to pixels */
  25. inline float mm2px(float mm) {
  26. return mm * (SVG_DPI / MM_PER_IN);
  27. }
  28. inline math::Vec mm2px(math::Vec mm) {
  29. return mm.mult(SVG_DPI / MM_PER_IN);
  30. }
  31. // A 1HPx3U module should be 15x380 pixels. Thus the width of a module should be a factor of 15.
  32. static const float RACK_GRID_WIDTH = 15;
  33. static const float RACK_GRID_HEIGHT = 380;
  34. static const math::Vec RACK_GRID_SIZE = math::Vec(RACK_GRID_WIDTH, RACK_GRID_HEIGHT);
  35. static const math::Vec RACK_OFFSET = RACK_GRID_SIZE.mult(math::Vec(2000, 100));
  36. static const math::Vec BUS_BOARD_GRID_SIZE = math::Vec(RACK_GRID_WIDTH * 20, RACK_GRID_HEIGHT);
  37. } // namespace app
  38. } // namespace rack