![](/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@1:948ffad3284f, 2013-07-31 (annotated)
- Committer:
- jakowisp
- Date:
- Wed Jul 31 22:20:00 2013 +0000
- Revision:
- 1:948ffad3284f
- Parent:
- 0:69eb9d19fb91
- Child:
- 3:6da430f4818a
Instructor requested publish of HW#4
;
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 | 1:948ffad3284f | 3 | this->lcd=inlcd; |
jakowisp | 1:948ffad3284f | 4 | this->level=0; |
jakowisp | 1:948ffad3284f | 5 | this->lastLevel=0; |
jakowisp | 0:69eb9d19fb91 | 6 | if(maxlevelsIn<=32 && maxlevelsIn >=4) |
jakowisp | 1:948ffad3284f | 7 | this->maxlevels=maxlevelsIn; |
jakowisp | 0:69eb9d19fb91 | 8 | else |
jakowisp | 1:948ffad3284f | 9 | this->maxlevels=32; |
jakowisp | 1:948ffad3284f | 10 | if(Xin>=0 && Xin<=127-this->maxlevels) |
jakowisp | 1:948ffad3284f | 11 | this->x=Xin; |
jakowisp | 0:69eb9d19fb91 | 12 | else |
jakowisp | 1:948ffad3284f | 13 | this->x=0; |
jakowisp | 1:948ffad3284f | 14 | if(Yin>=0 && Yin<=31-this->maxlevels) |
jakowisp | 1:948ffad3284f | 15 | this->y=Yin; |
jakowisp | 0:69eb9d19fb91 | 16 | else |
jakowisp | 1:948ffad3284f | 17 | this->y=0; |
jakowisp | 0:69eb9d19fb91 | 18 | if(widthIn>maxlevels && widthIn<128) |
jakowisp | 1:948ffad3284f | 19 | this->width=widthIn-1; |
jakowisp | 0:69eb9d19fb91 | 20 | else |
jakowisp | 1:948ffad3284f | 21 | this->width=127; |
jakowisp | 0:69eb9d19fb91 | 22 | if(heightIn>=(maxlevels-1) && heightIn<31) |
jakowisp | 1:948ffad3284f | 23 | this->height=heightIn; |
jakowisp | 0:69eb9d19fb91 | 24 | else |
jakowisp | 1:948ffad3284f | 25 | this->height=31; |
jakowisp | 1:948ffad3284f | 26 | this->leveladjust=(this->height+1)/this->maxlevels; |
jakowisp | 1:948ffad3284f | 27 | this->levelwidth=(this->width+1)/this->maxlevels; |
jakowisp | 0:69eb9d19fb91 | 28 | } |
jakowisp | 0:69eb9d19fb91 | 29 | |
jakowisp | 0:69eb9d19fb91 | 30 | void bargraph::setMaxLevel(int maxlevels){ |
jakowisp | 1:948ffad3284f | 31 | //TODO: need to defensive check maxlevels |
jakowisp | 1:948ffad3284f | 32 | this->lcd->fillrect(this->x, this->y, this->x+this->width,this->y+this->height, 0); |
jakowisp | 1:948ffad3284f | 33 | this->lastLevel=0; |
jakowisp | 1:948ffad3284f | 34 | this->leveladjust=(this->height+1)/maxlevels; |
jakowisp | 1:948ffad3284f | 35 | this->levelwidth=(this->width+1)/maxlevels; |
jakowisp | 0:69eb9d19fb91 | 36 | } |
jakowisp | 0:69eb9d19fb91 | 37 | |
jakowisp | 0:69eb9d19fb91 | 38 | void bargraph::setLevel(int level){ |
jakowisp | 0:69eb9d19fb91 | 39 | this->level=level; |
jakowisp | 0:69eb9d19fb91 | 40 | } |
jakowisp | 0:69eb9d19fb91 | 41 | |
jakowisp | 0:69eb9d19fb91 | 42 | void bargraph::updateBargraph(){ |
jakowisp | 1:948ffad3284f | 43 | if(this->lcd!=NULL) { |
jakowisp | 1:948ffad3284f | 44 | if(this->level!=this->lastLevel) { |
jakowisp | 1:948ffad3284f | 45 | for(int i = 0 ; i<this->lastLevel;i++) { |
jakowisp | 1:948ffad3284f | 46 | this->lcd->fillrect(this->x+this->levelwidth*(i), |
jakowisp | 1:948ffad3284f | 47 | this->y, |
jakowisp | 1:948ffad3284f | 48 | this->x+this->levelwidth*(i+1)-1, |
jakowisp | 1:948ffad3284f | 49 | this->y+i*this->leveladjust, |
jakowisp | 1:948ffad3284f | 50 | 0); |
jakowisp | 0:69eb9d19fb91 | 51 | } |
jakowisp | 0:69eb9d19fb91 | 52 | for(int i = 0 ; i<level;i++) { |
jakowisp | 1:948ffad3284f | 53 | this->lcd->fillrect(this->x+this->levelwidth*(i), |
jakowisp | 1:948ffad3284f | 54 | this->y, |
jakowisp | 1:948ffad3284f | 55 | this->x+this->levelwidth*(i+1)-1, |
jakowisp | 1:948ffad3284f | 56 | this->y+i*this->leveladjust, |
jakowisp | 1:948ffad3284f | 57 | 1); |
jakowisp | 0:69eb9d19fb91 | 58 | } |
jakowisp | 1:948ffad3284f | 59 | this->lastLevel = this->level; |
jakowisp | 0:69eb9d19fb91 | 60 | } |
jakowisp | 0:69eb9d19fb91 | 61 | } |
jakowisp | 0:69eb9d19fb91 | 62 | }; |
jakowisp | 0:69eb9d19fb91 | 63 | |
jakowisp | 0:69eb9d19fb91 | 64 | |
jakowisp | 0:69eb9d19fb91 | 65 |