annotate src/Voice.cpp @ 32:06a2fdb333ca

Added visibilty control for tokens; removed token highlight when keyboard disabled.
author samer
date Wed, 15 Feb 2012 10:14:04 +0000
parents 417deb31dd4e
children
rev   line source
hekeus@6 1 /*
hekeus@6 2 * Voice.cpp
hekeus@6 3 * MelodyTriangle
hekeus@6 4 *
hekeus@6 5 * Created by Henrik Ekeus on 12/01/2012.
hekeus@6 6 * Copyright 2012 Queen Mary University of London. All rights reserved.
hekeus@6 7 *
hekeus@6 8 */
hekeus@6 9
hekeus@6 10 #include "Voice.h"
hekeus@6 11
samer@13 12 inline static double min(double x,double y) { return (x<y) ? x : y; }
samer@13 13
samer@22 14 Voice::Voice(int id):
samer@32 15 isActive(true), inTriangle(false), isVisible(true),
samer@32 16 octave(0), amplitude(0.5), status(pending), id(id),
samer@32 17 posx(0), posy(0), truex(-1), truey(-1) {}
hekeus@6 18
samer@23 19 void Voice::draw(bool highlight){
samer@32 20 if (!isVisible) return;
samer@32 21
samer@25 22 int r,g,b;
samer@25 23 switch (status) {
samer@25 24 case clear: r=1; g=1; b=0; break;
samer@25 25 default: r=1; g=0; b=0; break;
samer@25 26 }
samer@25 27 if (isActive) { r=2*r; g=2*g; b=2*b; }
samer@25 28
samer@25 29 if (inTriangle && truex>=0) {
samer@25 30 ofSetColor(230,230,230);
samer@25 31 ofLine(posx,posy,truex,truey);
samer@25 32 // ofNoFill(); ofCircle(truex, truey, RADIUS/2-1);
samer@25 33 }
samer@25 34 ofSetColor(100*r,60*g,60*b);
samer@18 35 ofFill();
samer@23 36 ofCircle(posx, posy, RADIUS);
samer@25 37 ofNoFill();
samer@25 38 if (highlight) ofSetColor(230, 230, 230);
samer@25 39 ofCircle(posx, posy, RADIUS);
samer@25 40 }
samer@25 41
samer@25 42 void Voice::draw_alt(bool highlight){
samer@32 43 if (!isVisible) return;
samer@32 44
samer@25 45 int r,g,b;
samer@25 46 switch (status) {
samer@25 47 case clear: r=1; g=1; b=0; break;
samer@25 48 default: r=1; g=0; b=0; break;
samer@25 49 }
samer@25 50 if (isActive) { r=2*r; g=2*g; b=2*b; }
samer@25 51
samer@25 52 if (inTriangle && truex>=0) {
samer@25 53 ofSetColor(230,230,230);
samer@25 54 ofLine(posx,posy,truex,truey);
samer@25 55 ofSetColor(100*r,60*g,60*b);
samer@25 56 ofFill();
samer@25 57 ofCircle(truex, truey, RADIUS);
samer@18 58 ofNoFill();
samer@25 59 if (highlight) ofSetColor(230, 230, 230);
samer@25 60 ofCircle(truex, truey, RADIUS);
samer@25 61 } else {
samer@25 62 ofSetColor(100*r,60*g,60*b);
samer@25 63 ofFill();
samer@23 64 ofCircle(posx, posy, RADIUS);
hekeus@6 65 ofNoFill();
samer@25 66 if (highlight) ofSetColor(230, 230, 230);
samer@23 67 ofCircle(posx, posy, RADIUS);
hekeus@6 68 }
hekeus@6 69 }
hekeus@6 70
samer@25 71
samer@22 72 double Voice::louder() { return amplitude=min(1,amplitude*1.0625); }
samer@22 73 double Voice::quieter() { return amplitude/=1.0625; }