///+ Prefix linkto BasicCode1
//// Lines for set up Psychlops environment
#include <psychlops.h>
using namespace Psychlops;
///- Prefix linkto BasicCode1


///+ Main Routine
//// Psychlops runs at the first line of this function psychlops_main().
void psychlops_main() {
    
    ///+ 0 SetGlobal
    ////Prepare global parameters
     const int maxrectnum = 200;
     int rectnum = 100/*ID:rectnumber 25.0 200.0 25.0*/;
     double rectsize = 3.0/*ID:dotsize 1.0 10.0 1.0*/;
     Psychlops::Rectangle rect[maxrectnum];
     double rectcolorR[maxrectnum];
     double rectcolorG[maxrectnum];
     double rectcolorB[maxrectnum];
    ///- 0 SetGlobal

	 Canvas window(Canvas::window);

     ///+ 1 Initialize
     ////Initialize
     for(int i=0; i < rectnum; i++){
         ///+ 1.1
         ////set positions and sizes
         rect[i].set(rectsize, rectsize); //Set a size of rectangles.
         rect[i].centering(); //Move Rectangles to the center.
         rect[i].shift((i - 0.5 * rectnum) * rectsize * 1.5/*ID:RectHGap 1.0 3.0 0.5*/,
                (i - 0.5 * rectnum) * rectsize * 1.5/*ID:RectVGap 1.0 3.0 0.5*/); //Move Rectangles to initial positions
         ///- 1.1

         ///+ 1.2
         ////set colors
         rectcolorR[i]=(double)i * 0.5/*ID:RGain 0.0 1.0 0.5*//(double)rectnum; //Set R values. Note that "i" and "rectnum" is converted to double-type.
         rectcolorG[i]=(double)i * 0.5/*ID:GGain 0.0 1.0 0.5*//(double)rectnum; //Set G values. Note that "i" and "rectnum" is converted to double-type.
         rectcolorB[i]=(double)i * 0.5/*ID:BGain 0.0 1.0 0.5*//(double)rectnum; //Set B values. Note that "i" and "rectnum" is converted to double-type.
         ///- 1.2
    }
    ///- 1 Initialize
    
    ///+ 2 drawing
    ////drawing objects
    while(!Keyboard::esc.pushed()){
        window.clear(Color::black); //Clear window with black
        for(int i=0; i < rectnum; i++){
            rect[i].draw(Color(rectcolorR[i], rectcolorG[i], rectcolorB[i])); //draw objects by designated colors.
        }
        window.flip();
    }
    ///- 2 drawing

}
///- Main Routine
./3_1a.xap