![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
Usb Device Interface, protocol, and programming homework #4 Audio Control device
Dependencies: C12832_lcd USBDevice mbed
bargraph.cpp@0:69eb9d19fb91, 2013-07-30 (annotated)
- Committer:
- jakowisp
- Date:
- Tue Jul 30 22:35:10 2013 +0000
- Revision:
- 0:69eb9d19fb91
- Child:
- 1:948ffad3284f
AudioControl Finctional
;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jakowisp | 0:69eb9d19fb91 | 1 | #include "bargraph.h" |
jakowisp | 0:69eb9d19fb91 | 2 | bargraph::bargraph(C12832_LCD *inlcd,int maxlevelsIn,int Xin,int Yin,int widthIn,int heightIn){ |
jakowisp | 0:69eb9d19fb91 | 3 | lcd=inlcd; |
jakowisp | 0:69eb9d19fb91 | 4 | level=0; |
jakowisp | 0:69eb9d19fb91 | 5 | lastLevel=0; |
jakowisp | 0:69eb9d19fb91 | 6 | if(maxlevelsIn<=32 && maxlevelsIn >=4) |
jakowisp | 0:69eb9d19fb91 | 7 | maxlevels=maxlevelsIn; |
jakowisp | 0:69eb9d19fb91 | 8 | else |
jakowisp | 0:69eb9d19fb91 | 9 | maxlevels=32; |
jakowisp | 0:69eb9d19fb91 | 10 | if(Xin>=0 && Xin<=127-maxlevels) |
jakowisp | 0:69eb9d19fb91 | 11 | x=Xin; |
jakowisp | 0:69eb9d19fb91 | 12 | else |
jakowisp | 0:69eb9d19fb91 | 13 | x=0; |
jakowisp | 0:69eb9d19fb91 | 14 | if(Yin>=0 && Yin<=31-maxlevels) |
jakowisp | 0:69eb9d19fb91 | 15 | y=Yin; |
jakowisp | 0:69eb9d19fb91 | 16 | else |
jakowisp | 0:69eb9d19fb91 | 17 | y=0; |
jakowisp | 0:69eb9d19fb91 | 18 | if(widthIn>maxlevels && widthIn<128) |
jakowisp | 0:69eb9d19fb91 | 19 | width=widthIn-1; |
jakowisp | 0:69eb9d19fb91 | 20 | else |
jakowisp | 0:69eb9d19fb91 | 21 | width=127; |
jakowisp | 0:69eb9d19fb91 | 22 | if(heightIn>=(maxlevels-1) && heightIn<31) |
jakowisp | 0:69eb9d19fb91 | 23 | height=heightIn; |
jakowisp | 0:69eb9d19fb91 | 24 | else |
jakowisp | 0:69eb9d19fb91 | 25 | height=31; |
jakowisp | 0:69eb9d19fb91 | 26 | leveladjust=(height+1)/maxlevels; |
jakowisp | 0:69eb9d19fb91 | 27 | levelwidth=(width+1)/maxlevels; |
jakowisp | 0:69eb9d19fb91 | 28 | } |
jakowisp | 0:69eb9d19fb91 | 29 | |
jakowisp | 0:69eb9d19fb91 | 30 | void bargraph::setMaxLevel(int maxlevels){ |
jakowisp | 0:69eb9d19fb91 | 31 | lcd->fillrect(x, y, x+width,y+height, 0); |
jakowisp | 0:69eb9d19fb91 | 32 | leveladjust=(height+1)/maxlevels; |
jakowisp | 0:69eb9d19fb91 | 33 | levelwidth=(width+1)/maxlevels; |
jakowisp | 0:69eb9d19fb91 | 34 | } |
jakowisp | 0:69eb9d19fb91 | 35 | |
jakowisp | 0:69eb9d19fb91 | 36 | void bargraph::setLevel(int level){ |
jakowisp | 0:69eb9d19fb91 | 37 | this->level=level; |
jakowisp | 0:69eb9d19fb91 | 38 | } |
jakowisp | 0:69eb9d19fb91 | 39 | |
jakowisp | 0:69eb9d19fb91 | 40 | void bargraph::updateBargraph(){ |
jakowisp | 0:69eb9d19fb91 | 41 | if(lcd!=NULL) { |
jakowisp | 0:69eb9d19fb91 | 42 | if(level!=lastLevel) { |
jakowisp | 0:69eb9d19fb91 | 43 | for(int i = 0 ; i<lastLevel;i++) { |
jakowisp | 0:69eb9d19fb91 | 44 | lcd->fillrect(x+levelwidth*(i), y, x+levelwidth*(i+1)-1, y+i*leveladjust, 0); |
jakowisp | 0:69eb9d19fb91 | 45 | } |
jakowisp | 0:69eb9d19fb91 | 46 | for(int i = 0 ; i<level;i++) { |
jakowisp | 0:69eb9d19fb91 | 47 | lcd->fillrect(x+levelwidth*(i), y, x+levelwidth*(i+1)-1, y+i*leveladjust, 1); |
jakowisp | 0:69eb9d19fb91 | 48 | } |
jakowisp | 0:69eb9d19fb91 | 49 | lastLevel=level; |
jakowisp | 0:69eb9d19fb91 | 50 | } |
jakowisp | 0:69eb9d19fb91 | 51 | } |
jakowisp | 0:69eb9d19fb91 | 52 | }; |
jakowisp | 0:69eb9d19fb91 | 53 | |
jakowisp | 0:69eb9d19fb91 | 54 | |
jakowisp | 0:69eb9d19fb91 | 55 |