compositor for 2d glitch effects
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

secondapplet.pde 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697
  1. //contains the GUI (ie CP5) in the secondapplet. also contains 3 classes: shaderManager, Brick and Slider
  2. /* todo: implement "solo" and "only up till here" button on bricks */
  3. PImage bin;
  4. int maxSurfaceHeight = 500;
  5. int nativeResoX, nativeResoY;
  6. boolean renderSizeChanged = true;
  7. public class SecondApplet extends PApplet {
  8. ControlP5 cp5;
  9. shaderManager shaderManager = new shaderManager();
  10. ArrayList<Shader> shaderList = new ArrayList<Shader>();
  11. ArrayList<Brick> bricks = new ArrayList<Brick>();
  12. ArrayList<Slider> slider = new ArrayList<Slider>(); //brick
  13. int binX, binY, binS;
  14. public void settings() {
  15. size(275, 120);
  16. }
  17. public void setup() {
  18. surface.setLocation(285, 240);
  19. List l = Arrays.asList(availableFx);
  20. cp5 = new ControlP5(this);
  21. cp5.addScrollableList("")
  22. .setPosition(10, height-110)
  23. .setSize(80, 100)
  24. .setBarHeight(0)
  25. .setItemHeight(20)
  26. .plugTo(this, "CP5_listActions")
  27. .addItems(l)
  28. .setType(ControlP5.LIST);
  29. Toggle rec = cp5.addToggle("record")
  30. .setPosition(100, height-105)
  31. .setSize(15, 15)
  32. .plugTo(this, "CP5_recordAction");
  33. rec.getCaptionLabel().getStyle().setMargin(-17, 0, 0, 20);
  34. Toggle auto = cp5.addToggle("spawn playing")
  35. .setPosition(100, height-85)
  36. .setSize(15, 15)
  37. .setValue(true)
  38. .plugTo(this, "CP5_spawnPlayingAction");
  39. auto.getCaptionLabel().getStyle().setMargin(-17, 0, 0, 20);
  40. Bang pauseAll = cp5.addBang("pause all")
  41. .setPosition(100, height-65)
  42. .setSize(15, 15)
  43. .plugTo(this, "CP5_pauseAllAction");
  44. pauseAll.getCaptionLabel().getStyle().setMargin(-17, 0, 0, 20);
  45. Bang nativeReso = cp5.addBang("native reso")
  46. .setPosition(220, height-35)
  47. .setSize(15, 15)
  48. .plugTo(this, "CP5_nativeResoAction");
  49. //nativeReso.getCaptionLabel().getStyle().setMargin(-17,0,0,20);
  50. /*
  51. Toggle saveParams = cp5.addToggle("save parameters")
  52. .setPosition(100, height-45)
  53. .setSize(15, 15)
  54. .plugTo(this, "CP5_saveParamsAction");
  55. saveParams.getCaptionLabel().getStyle().setMargin(-17,0,0,20);
  56. */
  57. binX = width-55;
  58. binY = height-85;
  59. binS = 40;
  60. }
  61. void CP5_nativeResoAction() {
  62. renderSize = max(nativeResoX, nativeResoY);
  63. //renderer.setSize(nativeResoX, nativeResoY);
  64. }
  65. void CP5_recordAction() {
  66. recording = !recording;
  67. }
  68. void CP5_spawnPlayingAction() {
  69. spawnPlaying = !spawnPlaying;
  70. }
  71. void CP5_pauseAllAction() {
  72. for (int i = 0; i < bricks.size(); i++) {
  73. if (!bricks.get(i).paused) bricks.get(i).playPause();
  74. }
  75. }
  76. int totalBrickHeight;
  77. public void draw() {
  78. background(68, 68, 68);
  79. pushMatrix();
  80. if (heightOverLimit) {
  81. translate(0, scrollAmount);
  82. }
  83. totalBrickHeight = 0;
  84. for (int i = 0; i < shaderList.size(); i++) {
  85. bricks.get(i).update();
  86. bricks.get(i).display();
  87. //bricks.get(i).y = totalBrickHeight; ????? what was that for
  88. totalBrickHeight+= bricks.get(i).h;
  89. }
  90. popMatrix();
  91. if (heightOverLimit) {
  92. strokeWeight(3);
  93. fill(255);
  94. line(width-5, -scrollAmount+4, width-5, height-120+(maxSurfaceHeight-120-totalBrickHeight)-scrollAmount-4);
  95. //-scrollAmount + (-1*(maxSurfaceHeight-120-totalBrickHeight)));
  96. }
  97. fill(68, 68, 68);
  98. noStroke();
  99. rect(0, height-120, width, 120);
  100. image(bin, binX, binY, binS, binS);
  101. stroke(255);
  102. strokeWeight(1);
  103. textSize(25);
  104. fill(255);
  105. text(renderer.width + "x" + renderer.height, 100, height-18);
  106. textSize(10);
  107. line(0, height-120, width, height-120);
  108. if (pressedBrick != -1) {
  109. fill(255);
  110. noStroke();
  111. rect(mouseX, mouseY, 35, 15);
  112. }
  113. }
  114. boolean heightOverLimit;
  115. void refreshSurface(int mode) {
  116. int currentBrickHeight = 0;
  117. if (shaderList.size() > 0) {
  118. if (mode == 0) {
  119. currentBrickHeight = totalBrickHeight + bricks.get(shaderList.size()-1).h;
  120. surface.setSize(width, height+bricks.get(shaderList.size()-1).h);
  121. } else if (mode == 1) {
  122. currentBrickHeight = totalBrickHeight - bricks.get(pressedBrick).h;
  123. if (heightOverLimit) {
  124. surface.setSize(width, currentBrickHeight+120);
  125. } else {
  126. surface.setSize(width, height-bricks.get(pressedBrick).h);
  127. }
  128. }
  129. } else {
  130. surface.setSize(width, 120);
  131. }
  132. if (currentBrickHeight + 120 > maxSurfaceHeight) {
  133. surface.setSize(width, maxSurfaceHeight);
  134. heightOverLimit = true;
  135. } else {
  136. heightOverLimit = false;
  137. scrollAmount = 0;
  138. }
  139. cp5.setPosition(0, height-120);
  140. binY = height-87;
  141. }
  142. class shaderManager {
  143. void addShader(Shader shader) {
  144. shaderList.add(shader);
  145. shader.pos = shaderList.size()-1;
  146. bricks.add(new Brick(shaderList.size()-1, shaderList.get(shaderList.size()-1).params, shader.name));
  147. refreshSurface(0);
  148. //if (!spawnPlaying) bricks.get(shaderList.size()-1).pauseAllSliders();
  149. println("Added " + shader + " to fxList at spot. List length: " + shaderList.size());
  150. }
  151. void swapShader(int pos1, int pos2) {
  152. Collections.swap(shaderList, pos1, pos2);
  153. Collections.swap(bricks, pos1, pos2);
  154. shaderList.get(pos1).pos = pos1;
  155. shaderList.get(pos2).pos = pos2;
  156. bricks.get(pos1).setPos(pos1);
  157. bricks.get(pos2).setPos(pos2);
  158. for (int i = 0; i < bricks.size(); i++) {
  159. bricks.get(i).updateSliderPos();
  160. }
  161. for (int i = min(pos1, pos2); i < shaderList.size(); i++) {
  162. println(i);
  163. //shaderList.get(i).change = true;
  164. }
  165. }
  166. void moveShader(int pos1, int pos2) {
  167. if (pos2 > pos1) {
  168. pos2 -=1;
  169. for (int i = pos1; i < pos2; i++) {
  170. swapShader(i, i+1);
  171. }
  172. } else {
  173. for (int i = pos1; i > pos2; i--) {
  174. swapShader(i, i-1);
  175. }
  176. }
  177. for (int i = max(pos1, pos2); i > 0; i--) {
  178. //println(i);
  179. //shaderList.get(i).change = true;
  180. }
  181. }
  182. void removeShader(int pos) {
  183. if (pos >= 0 && shaderList.size() > pos) {
  184. refreshSurface(1);
  185. shaderList.remove(pos);
  186. bricks.remove(pos);
  187. for (int i = shaderList.size()-1; i > -1; i--) {
  188. bricks.get(i).setPos(i);
  189. bricks.get(i).updateSliderPos();
  190. shaderList.get(i).pos = i;
  191. }
  192. }
  193. for (int i = pos; i < shaderList.size(); i++) {
  194. //shaderList.get(i).change = true;
  195. }
  196. }
  197. int previousRenderSize = renderSize;
  198. void applyShader() {
  199. renderSizeChanged = true;
  200. if (previousRenderSize != renderSize)
  201. previousRenderSize = renderSize;
  202. else
  203. renderSizeChanged = false;
  204. for (int i = 0; i < shaderList.size(); i++) {
  205. try {
  206. shaderList.get(i).getValuesFromGUI();
  207. if (bricks.get(i).active) {
  208. //shaderList.get(i).getValuesFromGUI();
  209. shaderList.get(i).shade();
  210. }
  211. }
  212. catch(Exception e) {
  213. println("Warning: Brick not yet loaded");
  214. }
  215. if (i > maxFx) break;
  216. }
  217. }
  218. }
  219. int pressedBrick = -1;
  220. class Brick {
  221. ArrayList<Slider> slider = new ArrayList<Slider>();
  222. ArrayList<Param> params = new ArrayList<Param>();
  223. boolean active, paused, dragging, dragHovering, hovering, hoveringLineAbove, hoveringLineBelow, hoverActiveButton, hoverPauseButton;
  224. boolean[] pauseStates;
  225. color brickBGcol;
  226. int pos;
  227. int h, y;
  228. String name;
  229. Brick(int pos_, ArrayList params_, String name_) {
  230. name = name_;
  231. pos = pos_;
  232. params = params_;
  233. active = true;
  234. y = totalBrickHeight;
  235. h = 20 + params.size() * 20;
  236. for (int i = 0; i < params.size(); i++) {
  237. slider.add(new Slider(10, 20+(20*i)+y, 230, 12, params.get(i).minValue, params.get(i).maxValue, params.get(i).name, params.get(i).type, params.get(i).osciModes)); //add possible waves to slider
  238. }
  239. pauseStates = new boolean[slider.size()];
  240. for (int i = 0; i < pauseStates.length; i++) {
  241. pauseStates[i] = false;
  242. }
  243. if (!spawnPlaying) {
  244. playPause();
  245. }
  246. }
  247. void setPos(int pos_) {
  248. pos = pos_;
  249. }
  250. void updateSliderPos() {
  251. y = 0;
  252. for (int i = 0; i < pos; i++) {
  253. y += bricks.get(i).h;
  254. }
  255. for (int i = 0; i < slider.size(); i++) {
  256. slider.get(i).y = 20+(20*i)+y;
  257. }
  258. }
  259. void exchangeSlider(int sliderNo, Param param) {
  260. slider.get(sliderNo).setMinMax(param.minValue, param.maxValue);
  261. slider.get(sliderNo).setMode(param.type);
  262. slider.get(sliderNo).setLabel(param.name);
  263. }
  264. void playPause() {
  265. paused = !paused;
  266. if (paused) {
  267. pauseAllSliders();
  268. } else {
  269. resumeAllSliders();
  270. }
  271. }
  272. void toggleActive() {
  273. active = !active;
  274. //for (int i = pos; i < shaderList.size(); i++) {
  275. // shaderList.get(i).change = true;
  276. //}
  277. }
  278. void pauseAllSliders() {
  279. for (int i = 0; i < slider.size(); i++) {
  280. pauseStates[i] = slider.get(i).animated;
  281. slider.get(i).animated = false;
  282. }
  283. }
  284. void resumeAllSliders() {
  285. for (int i = 0; i < slider.size(); i++) {
  286. slider.get(i).animated = pauseStates[i];
  287. }
  288. }
  289. void update() {
  290. boolean sliderHover = false;
  291. for (int i = 0; i < slider.size(); i++) {
  292. if (slider.get(i).hovering || slider.get(i).hovering_anim_btn) sliderHover = true;
  293. if (paused && slider.get(i).animated) paused = false;
  294. }
  295. if (mouseX > 10 && mouseX < 22 && mouseY > 4+totalBrickHeight+scrollAmount && mouseY < 4+totalBrickHeight+13+scrollAmount) {
  296. hoverActiveButton = true;
  297. } else {
  298. hoverActiveButton = false;
  299. }
  300. if (mouseX > 25 && mouseX < 37 && mouseY > 4+totalBrickHeight+scrollAmount && mouseY < 4+totalBrickHeight+13+scrollAmount) {
  301. hoverPauseButton = true;
  302. } else {
  303. hoverPauseButton = false;
  304. }
  305. if (mouseY > y-5+scrollAmount && mouseY < y+5+scrollAmount && pressedBrick != -1) {
  306. hoveringLineAbove = true;
  307. if (pos > 0) {
  308. bricks.get(pos-1).hovering = false;
  309. }
  310. } else if (pos == bricks.size()-1 && mouseY > y+h-5+scrollAmount && mouseY < y+h+5+scrollAmount && pressedBrick != -1) {
  311. hoveringLineBelow = true;
  312. } else {
  313. hoveringLineBelow = false;
  314. hoveringLineAbove = false;
  315. if (mouseY > totalBrickHeight+scrollAmount && mouseY < totalBrickHeight+h+scrollAmount && !sliderHover && !hoverActiveButton && !hoverPauseButton) {
  316. hovering = true;
  317. } else {
  318. hovering = false;
  319. }
  320. }
  321. for (int i = 0; i < slider.size(); i++) {
  322. slider.get(i).update();
  323. params.get(i).value = slider.get(i).value;
  324. }
  325. brickBGcol = color(85, 85, 85);
  326. }
  327. void press() {
  328. pressedBrick = pos;
  329. }
  330. void display() {
  331. noStroke();
  332. if (active) {
  333. if (dragging) brickBGcol = color(51, 51, 51);
  334. else if (dragHovering && !hoveringLineBelow && !hoveringLineAbove) brickBGcol= color (105, 105, 105);
  335. else brickBGcol = color(85, 85, 85);
  336. } else {
  337. brickBGcol = color(0);
  338. }
  339. fill(brickBGcol);
  340. rect(0, totalBrickHeight, width, h);
  341. fill(255);
  342. text(name, 40, 13+totalBrickHeight, 10);
  343. stroke(255);
  344. strokeWeight(1);
  345. if (active) fill(185);
  346. else noFill();
  347. rect(10, 4+totalBrickHeight, 10, 10);
  348. if (paused) fill(185);
  349. else noFill();
  350. rect(25, 4+totalBrickHeight, 10, 10);
  351. for (int i = 0; i < slider.size(); i++) {
  352. slider.get(i).display();
  353. }
  354. stroke(150);
  355. strokeWeight(1);
  356. line(0, totalBrickHeight+h-1, width, totalBrickHeight+h-1);
  357. if (hoveringLineAbove) {
  358. stroke(200);
  359. strokeWeight(5);
  360. line(0, y, width, y);
  361. }
  362. if (hoveringLineBelow) {
  363. stroke(200);
  364. strokeWeight(5);
  365. line(0, y+h, width, y+h);
  366. }
  367. }
  368. }
  369. int pressedSlider = -1;
  370. //class Slider extends Brick{
  371. class Slider {
  372. int x, y, w, h, mode;
  373. int[] osciModes;
  374. float minVal, maxVal, value; //should be private but doesnt work lol
  375. boolean hovering, hovering_anim_btn, animated;
  376. String label;
  377. Oscillator osci;
  378. Slider(int x_, int y_, int w_, int h_, float minVal_, float maxVal_, String label_, int mode_, int[] osciModes_) {
  379. x = x_;
  380. y = y_;
  381. w = w_;
  382. h = h_;
  383. minVal = minVal_;
  384. maxVal = maxVal_;
  385. mode = mode_;
  386. label = label_ + (mode == INTVAL ? " (INT)" : " (FLOAT)");
  387. osciModes = osciModes_;
  388. osci = new Oscillator(int(random(2, 5)), osciModes);
  389. osci.amplitude(minVal, maxVal);
  390. osci.update();
  391. setValue(osci.value);
  392. animated = true;
  393. slider.add(this);
  394. }
  395. void setPosX(int x_) {
  396. x = x_;
  397. }
  398. void setMinMax(float min, float max) {
  399. float cval = map(value, minVal, maxVal, 0, 10000);
  400. minVal = min;
  401. maxVal = max;
  402. osci.amplitude(minVal, maxVal);
  403. setValue(map(cval, 0, 10000, minVal, maxVal));
  404. }
  405. void setLabel(String lab) {
  406. label = lab + (mode == INTVAL ? " (INT)" : " (FLOAT)");
  407. }
  408. void setMode(int mode_) {
  409. mode = mode_;
  410. }
  411. void press(int myId_) {
  412. pressedSlider = myId_;
  413. animated = false;
  414. setValue(map(mouseX, x, x+w, minVal, maxVal));
  415. }
  416. void setValue(float value_) {
  417. value = value_;
  418. value = constrain(value, minVal, maxVal);
  419. if (mode == INTVAL) value = int(round(value));
  420. }
  421. float getValue() {
  422. return(value);
  423. }
  424. void update() {
  425. osci.update();
  426. if (animated) {
  427. setValue(osci.value);
  428. }
  429. if (mouseX >= x && mouseX <= x+w && mouseY >= y+scrollAmount && mouseY <= y+h+scrollAmount) {
  430. hovering = true;
  431. } else {
  432. hovering = false;
  433. }
  434. if (mouseX >= x+w+5 && mouseX <= x+w+5+15 && mouseY >= y+scrollAmount && mouseY <= y+h+scrollAmount) {
  435. hovering_anim_btn = true;
  436. } else {
  437. hovering_anim_btn = false;
  438. }
  439. }
  440. void display() {
  441. stroke(255);
  442. strokeWeight(1);
  443. fill(100+(40*int(hovering)));
  444. rect(x, y, w, h);
  445. fill(185+(40*int(hovering)));
  446. rect(x, y, map(value, minVal, maxVal, 0, w), h);
  447. fill(255);
  448. text(label, x+5, y+10);
  449. if (animated) {
  450. fill(185+(40*int(hovering_anim_btn)));
  451. } else {
  452. fill(100+(40*int(hovering_anim_btn)));
  453. }
  454. rect(x+w+5, y, h, h);
  455. }
  456. }
  457. //CP5
  458. void CP5_listActions(int n) {
  459. if (shaderList.size() < maxFx) {
  460. switch(n) {
  461. case(0):
  462. shaderManager.addShader(new ASDFPIXELSORT());
  463. break;
  464. case(1):
  465. shaderManager.addShader(new DISTORTER());
  466. break;
  467. case(2):
  468. shaderManager.addShader(new FM());
  469. break;
  470. case(3):
  471. shaderManager.addShader(new WZIP());
  472. break;
  473. case(4):
  474. shaderManager.addShader(new AUECHO());
  475. break;
  476. case(5):
  477. shaderManager.addShader(new SLITSCAN());
  478. break;
  479. case(6):
  480. shaderManager.addShader(new WAHWAH());
  481. break;
  482. case(7):
  483. shaderManager.addShader(new PHASER());
  484. break;
  485. case(8):
  486. shaderManager.addShader(new ECHO());
  487. break;
  488. case(9):
  489. shaderManager.addShader(new DARKER());
  490. break;
  491. case(10):
  492. shaderManager.addShader(new BRIGHTER());
  493. break;
  494. case(11):
  495. shaderManager.addShader(new AMPLIFY());
  496. break;
  497. case(12):
  498. shaderManager.addShader(new BROKENCOLORROT());
  499. break;
  500. case(13):
  501. shaderManager.addShader(new POSTER());
  502. break;
  503. case(14):
  504. shaderManager.addShader(new DUAL());
  505. break;
  506. case(15):
  507. shaderManager.addShader(new GRAUZONE());
  508. break;
  509. case(16):
  510. shaderManager.addShader(new COPYZOOM());
  511. break;
  512. case(17):
  513. shaderManager.addShader(new SUBTLESORT());
  514. break;
  515. case(18):
  516. shaderManager.addShader(new SCANKER());
  517. break;
  518. case(19):
  519. shaderManager.addShader(new MASK());
  520. break;
  521. case(20):
  522. shaderManager.addShader(new DRAWSTROKES());
  523. break;
  524. case(21):
  525. shaderManager.addShader(new DRAWGENERATIVE());
  526. break;
  527. case(22):
  528. shaderManager.addShader(new PIXELDRIFTER());
  529. break;
  530. /*
  531. case(4):
  532. shaderManager.addShader(new AUECHO());
  533. break;
  534. */
  535. default:
  536. break;
  537. }
  538. }
  539. }
  540. void mousePressed() {
  541. for (int i = slider.size()-1; i >= 0; i--) {
  542. Slider s = slider.get(i);
  543. if (s.hovering) s.press(i);
  544. if (s.hovering_anim_btn) s.animated = !s.animated;
  545. }
  546. for (int i = bricks.size()-1; i >= 0; i--) {
  547. if (bricks.get(i).hovering) {
  548. bricks.get(i).press();
  549. }
  550. if (bricks.get(i).hoverActiveButton)
  551. {
  552. bricks.get(i).toggleActive();
  553. }
  554. if (bricks.get(i).hoverPauseButton) bricks.get(i).playPause();
  555. }
  556. }
  557. void mouseDragged() {
  558. if (pressedSlider != -1) {
  559. Slider s = slider.get(pressedSlider);
  560. s.setValue(map(mouseX, s.x, s.x+s.w, s.minVal, s.maxVal));
  561. }
  562. if (pressedBrick != -1) {
  563. bricks.get(pressedBrick).dragging = true;
  564. for (int i = 0; i < bricks.size(); i++) {
  565. if (pressedBrick != i && bricks.get(i).hovering) {
  566. bricks.get(i).dragHovering = true;
  567. } else {
  568. bricks.get(i).dragHovering = false;
  569. }
  570. }
  571. }
  572. }
  573. void mouseReleased() {
  574. if (pressedBrick != -1) {
  575. bricks.get(pressedBrick).dragging = false;
  576. for (int i = 0; i < bricks.size(); i++) {
  577. bricks.get(i).dragHovering = false;
  578. if (pressedBrick != i) {
  579. if (bricks.get(i).hovering && !bricks.get(i).hoveringLineAbove && !bricks.get(i).hoveringLineBelow) {
  580. shaderManager.swapShader(pressedBrick, i);
  581. }
  582. if (pressedBrick != i-1 && bricks.get(i).hoveringLineAbove) {
  583. shaderManager.moveShader(pressedBrick, i);
  584. break;
  585. }
  586. if (bricks.get(i).hoveringLineBelow) {
  587. shaderManager.moveShader(pressedBrick, bricks.size()); //move to last
  588. }
  589. }
  590. }
  591. if (mouseX > binX && mouseX < binX+binS && mouseY > binY && mouseY < binY+binS) {
  592. println("removing");
  593. shaderManager.removeShader(pressedBrick);
  594. }
  595. }
  596. pressedSlider = -1;
  597. pressedBrick = -1;
  598. }
  599. int scrollAmount;
  600. void mouseWheel(MouseEvent event) {
  601. textSize(25);
  602. if (mouseX > 100 && mouseX < textWidth(str(renderer.width) + "x" + str(renderer.height)) + 100 && mouseY > height - 40 && mouseY < height) {
  603. if (event.getCount() < 0) renderSize += 8;
  604. else renderSize -= 8;
  605. renderSize = constrain(renderSize, 8, 15000);
  606. }
  607. if (heightOverLimit && mouseX > 0 && mouseX < width && mouseY > 0 && mouseY < height-120) {
  608. for (int i = 0; i < bricks.size(); i++) {
  609. scrollAmount -= event.getCount();
  610. scrollAmount = constrain(scrollAmount, maxSurfaceHeight-120-totalBrickHeight, 0);
  611. //bricks.get(i).y += event.getCount();
  612. //bricks.get(i).updateSliderPos();
  613. }
  614. }
  615. textSize(10);
  616. }
  617. }