void TouchScreenCircleButton::draw(bool pressed){
    unsigned int cx = _x+(_w/2);
    unsigned int cy = _y+(_h/2);
    unsigned int radius = _w<=_h?(_w/2):(_h/2);
    
    if(pressed){
        _controller->drawCircle(cx, cy, radius, getForeColor(), true);
        _controller->drawCircle(cx, cy, radius, getBackColor(), false);
    }else{
        _controller->drawCircle(cx, cy, radius, getBackColor(), true);
        _controller->drawCircle(cx, cy, radius, getForeColor(), false);
    }
}
void TouchScreenButton::draw(bool pressed){
    unsigned int x, y, w, h;
    getDims(&x, &y, &w, &h);
    
    if(pressed){
        _controller->drawRectangle(x, y, w, h, getForeColor(),true);
        _controller->drawRectangle(x, y, w, h, getBackColor(),false);
        _controller->drawString(getText(), x + _padding, y + _padding, _fontSize, getBackColor());
    }else{
        _controller->drawRectangle(x, y, w, h, getBackColor(),true);
        _controller->drawRectangle(x, y, w, h, getForeColor(),false);
        _controller->drawString(getText(), x + _padding, y + _padding, _fontSize, getForeColor());
    }
}
OWindow& OWindow::getPresentation(pPresParms presentation)
{
 presentation->Fore = getForeColor();
 presentation->Back = getBackColor();
 strcpy(presentation->Font, getFont());
 return(*this);
}
void TouchScreenArrowButton::drawRight(bool pressed){
    unsigned int x, y, w, h;
    getDims(&x, &y, &w, &h);
    
    if(pressed){
        _controller->drawRectangle(x, y, w, h, getForeColor(),true);
        _controller->drawRectangle(x, y, w, h, getBackColor(),false);
        _controller->drawLine(x + _padding, y + _padding, x + w -1 - _padding, y + (h/2), getBackColor()); //top side
        _controller->drawLine(x + _padding, y + h - 1 - _padding, x + w - 1 - _padding, y + (h/2), getBackColor()); //bottom side
        _controller->drawLine(x + _padding, y + _padding, x + _padding, y + h - 1 - _padding, getBackColor()); //left side
    }else{
        _controller->drawRectangle(x, y, w, h, getBackColor(),true);
        _controller->drawRectangle(x, y, w, h, getForeColor(),false);
        _controller->drawLine(x + _padding, y + _padding, x + w -1 - _padding, y + (h/2), getForeColor()); //top side
        _controller->drawLine(x + _padding, y + h - 1 - _padding, x + w - 1 - _padding, y + (h/2), getForeColor()); //bottom side
        _controller->drawLine(x + _padding, y + _padding, x + _padding, y + h - 1 - _padding, getForeColor()); //left side
    }
}
void TouchScreenSlider::draw(bool pressed){
    unsigned int x, y, w, h;
    getDims(&x, &y, &w, &h);
    
    if(pressed){
        _controller->drawRectangle(x, y, w, h, getForeColor(),true);
        _controller->drawRectangle(x, y, w, h, getBackColor(),false);
        if(_layout==HORIZONTAL){
            unsigned int thumbSize = map((int)(_value*100), 0, 100, 1, w - (_padding*2));
            _controller->drawRectangle(x + _padding, y + _padding, thumbSize, h - (_padding*2), getBackColor(),true);
            for(int lx=x+_padding+10;lx<w - (_padding*2) + x;lx+=10){ 
                _controller->drawVerticalLine(lx, y + _padding, h - (_padding*2), getForeColor());
            }
        }else if(_layout==VERTICAL){
            unsigned int thumbSize = map((int)(_value*100), 0, 100, 1, h - (_padding*2));
            _controller->drawRectangle(x + _padding, y + _padding + ((h - (_padding*2))-thumbSize), w - (_padding*2), thumbSize,  getBackColor(),true);
            for(int ly=y+_padding+10;ly<h - (_padding*2) + y;ly+=10){ 
                _controller->drawHorizontalLine(x + _padding, ly, w - (_padding*2), getForeColor());
            }
        }
    }else{
        _controller->drawRectangle(x, y, w, h, getBackColor(),true);
        _controller->drawRectangle(x, y, w, h, getForeColor(),false);
        if(_layout==HORIZONTAL){
            unsigned int thumbSize = map((int)(_value*100), 0, 100, 1, w - (_padding*2));
            _controller->drawRectangle(x + _padding, y + _padding, thumbSize, h - (_padding*2), getForeColor(),true);
            for(int lx=x+_padding+10;lx<w - (_padding*2) + x;lx+=10){ 
                _controller->drawVerticalLine(lx, y + _padding, h - (_padding*2), getBackColor());
            }
        }else if(_layout==VERTICAL){
            unsigned int thumbSize = map((int)(_value*100), 0, 100, 1, h - (_padding*2));
            _controller->drawRectangle(x + _padding, y + _padding + ((h - (_padding*2))-thumbSize), w - (_padding*2), thumbSize,  getForeColor(),true);
            for(int ly=y+_padding+10;ly<h - (_padding*2) + y;ly+=10){ 
                _controller->drawHorizontalLine(x + _padding, ly, w - (_padding*2), getBackColor());
            }
        }
    }
}