ConfigurationScreen.cpp 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #include "Sequencer.h"
  2. #include "ConfigurationScreen.h"
  3. #include "colors.h"
  4. #include <iostream>
  5. ConfigurationScreen::ConfigurationScreen(Sequencer& seq)
  6. : parent(seq)
  7. {
  8. }
  9. void ConfigurationScreen::keyPressed(unsigned char x, unsigned char y)
  10. {
  11. std::cout << "config clicked x=" << (int)x << ", y=" << (int)y << std::endl;
  12. if(x == 8) { // very right
  13. } else if(y == 8) { // very top
  14. bool playing = sequencer.player.isPlaying();
  15. switch(x) {
  16. case 5:
  17. disable();
  18. sequencer.playbackScreen.enable();
  19. break;
  20. }
  21. } else {
  22. switch(y) {
  23. case 0: { // number of beats
  24. unsigned int bit = (1 << (configWidth - x - 1));
  25. unsigned int beatsCount = sequencer.beats.size() ^ bit;
  26. std::cout << "set number of beats to " << beatsCount << std::endl;
  27. sequencer.beats.resize(beatsCount);
  28. } break;
  29. case 1: { // sequence expansion
  30. unsigned int factor = x + 2;
  31. sequencer.beats.expand(factor);
  32. sequencer.player.setBpm(sequencer.player.getBpm() * factor);
  33. } break;
  34. case 2: { // sequence reduction erasing conflicts
  35. unsigned int factor = x + 2;
  36. sequencer.beats.reduceErasingConflicts(factor);
  37. sequencer.player.setBpm(
  38. std::max(sequencer.player.getBpm() / factor,
  39. (Player::Bpm)1
  40. ));
  41. } break;
  42. }
  43. sequencer.beats.print(std::cout);
  44. }
  45. refreshAll();
  46. }
  47. void ConfigurationScreen::keyReleased(unsigned char x, unsigned char y)
  48. {
  49. refreshAll();
  50. }
  51. void ConfigurationScreen::refresh(unsigned char x, unsigned char y)
  52. {
  53. if(x == 8) { // very right
  54. } else if(y == 8) { // very top
  55. switch(x) {
  56. case 5:
  57. setColor(x, y, colors::activeOption);
  58. break;
  59. }
  60. } else {
  61. switch(y) {
  62. case 0: { // number of beats
  63. unsigned int beatsCount = sequencer.beats.size();
  64. if(beatsCount & (1 << (configWidth - x - 1))) {
  65. setColor(x, y, colors::activeBeatsCount);
  66. } else {
  67. setColor(x, y, colors::inactiveBeatsCount);
  68. }
  69. } break;
  70. case 1: // sequence expansion
  71. setColor(x, y, colors::sequenceExpansionButton);
  72. break;
  73. case 2: // reduce erasing conflicts
  74. setColor(x, y, colors::sequenceReductionErasingConflictsButton);
  75. break;
  76. }
  77. }
  78. }