text: #include "ofApp.h"
  
  	
  //--------------------------------------------------------------
  void ofApp::setup(){
  	ofSetVerticalSync(true);
  	
  	// we add this listener before setting up so the initial circle resolution is correct
  	circleResolution.addListener(this, &ofApp::circleResolutionChanged);
  	ringButton.addListener(this,&ofApp::ringButtonPressed);
  
  	// change default sizes for ofxGui so it's usable in small/high density screens
  	ofxGuiSetFont("Questrial-Regular.ttf",18,true,true);
  	ofxGuiSetTextPadding(20);
  	ofxGuiSetDefaultWidth(300);
  	ofxGuiSetDefaultHeight(40);
  
  	gui.setup("panel"); // most of the time you don't need a name but don't forget to call setup
  	gui.add(filled.set("bFill", true));
  	gui.add(radius.set( "radius", 140, 10, 300 ));
  	gui.add(center.set("center",ofVec2f(ofGetWidth()*.5,ofGetHeight()*.5),ofVec2f(0,0),ofVec2f(ofGetWidth(),ofGetHeight())));
  	gui.add(color.set("color",ofColor(100,100,140),ofColor(0,0),ofColor(255,255)));
  	gui.add(circleResolution.set("circleRes", 5, 3, 90));
  	gui.add(twoCircles.setup("twoCircles"));
  	gui.add(ringButton.setup("ring"));
  	gui.add(screenSize.set("screenSize", ofToString(ofGetWidth()) + "x" + ofToString(ofGetHeight())));
  	
  	bHide = true;
  
  	ring.load("ring.wav");
  }
  
  //--------------------------------------------------------------
  void ofApp::exit(){
  	ringButton.removeListener(this,&ofApp::ringButtonPressed);
  }
  
  //--------------------------------------------------------------
  void ofApp::circleResolutionChanged(int & circleResolution){
  	ofSetCircleResolution(circleResolution);
  }
  
  //--------------------------------------------------------------
  void ofApp::ringButtonPressed(){
  	ring.play();
  }
  
  //--------------------------------------------------------------
  void ofApp::update(){
  }
  
  //--------------------------------------------------------------
  void ofApp::draw(){
      ofBackgroundGradient(ofColor::white, ofColor::gray);
      
  	if( filled ){
  		ofFill();
  	}else{
  		ofNoFill();
  	}
  
  	ofSetColor(color);
  	if(twoCircles){
  		ofCircle(center->x-radius*.5, center->y, radius );
  		ofCircle(center->x+radius*.5, center->y, radius );
  	}else{
  		ofCircle(center->x, center->y, radius );
  	}
  	
  	if( bHide ){
  		gui.draw();
  	}
  }
  
  //--------------------------------------------------------------
  void ofApp::keyPressed(int key){
  	if( key == 'h' ){
  		bHide = !bHide;
  	}
  	if(key == 's') {
  		gui.saveToFile("settings.xml");
  	}
  	if(key == 'l') {
  		gui.loadFromFile("settings.xml");
  	}
  	if(key == ' '){
  		color = ofColor(255);
  	}
  }
  
  //--------------------------------------------------------------
  void ofApp::keyReleased(int key){
  	
  }
  
  //--------------------------------------------------------------
  void ofApp::mouseMoved(int x, int y ){
  	
  }
  
  //--------------------------------------------------------------
  void ofApp::mouseDragged(int x, int y, int button){
  }
  
  //--------------------------------------------------------------
  void ofApp::mousePressed(int x, int y, int button){
  	
  }
  
  //--------------------------------------------------------------
  void ofApp::mouseReleased(int x, int y, int button){
  	
  }
  
  //--------------------------------------------------------------
  void ofApp::mouseEntered(int x, int y){
  
  }
  
  //--------------------------------------------------------------
  void ofApp::mouseExited(int x, int y){
  
  }
  
  //--------------------------------------------------------------
  void ofApp::windowResized(int w, int h){
      screenSize = ofToString(w) + "x" + ofToString(h);
  }
  
  //--------------------------------------------------------------
  void ofApp::gotMessage(ofMessage msg){
  	
  }
  
  //--------------------------------------------------------------
  void ofApp::dragEvent(ofDragInfo dragInfo){ 
  	
  }
  