OSDN Git Service

123123
[psychlops/cpp.git] / win32gl / test / compilenew.cpp
1 #include <psychlops.h>\r
2 using namespace Psychlops;\r
3 \r
4 Psychlops::Polygon Poly;\r
5 \r
6 int radius = 100;\r
7 int v_n = 6;\r
8 double bg_lum =0.0;\r
9 double Poly_lum = 0.5;\r
10 \r
11 void StimDisplay()\r
12 {\r
13 \r
14     Range rng;\r
15     Independent << Poly_lum | "Poly lum" | 0 <= rng <= 1.0 | 0.05 | 0.1;\r
16 \r
17     for(int i=0; i<v_n; i++)\r
18     {\r
19         double angle = (double)i/v_n * 2*PI;\r
20         Poly.append(radius*cos(angle), radius*sin(angle));\r
21     }\r
22     Poly.Shape::centering();\r
23 \r
24     while(!Keyboard::esc.pushed()){\r
25         Display::clear(bg_lum);\r
26         Poly.draw(Poly_lum);\r
27         Display::flip();\r
28     }\r
29 }\r
30 \r
31 void psychlops_main()\r
32 {\r
33     Canvas canvas(Canvas::window, Display::secondary);\r
34     canvas.showFPS();\r
35     canvas.watchFPS();\r
36 \r
37     Procedure p;\r
38     p.setDesign(Procedure::DEMO);\r
39     p.setProcedure(&StimDisplay);\r
40     p.run();\r
41 }\r
42 \r
43 \r
44 #if 0\r
45 \r
46 // Motion with glass patterns.\r
47 // Ross, J., Badcock, D. R., and Hayes, A. (2000)\r
48 // Coherent global motion in the absence of coherent velocity signals.\r
49 // Current Biology, 10, 679-682.\r
50 ///+ Prefix\r
51 //// Include Psychlops Package\r
52 #include <psychlops.h>\r
53 using namespace Psychlops;    // Initially developed with Psychlops Win32 1.5.3 / 20110311\r
54 ///- Prefix\r
55 \r
56 ///+ Stimulus drawing function\r
57 //// A function for stimulus drawing (main body)\r
58 \r
59 \r
60 void psychlops_main() {\r
61         Canvas cnvs(Canvas::window);\r
62 \r
63         Letters let(L"flower_png24.png");\r
64         let.fill = Color::white;\r
65 \r
66         Psychlops::Ellipse rect(100,100);\r
67         rect.fill = Color::red;\r
68 \r
69         char data[100] = {\r
70                 0,0,0,0,0,0,0,0,0,0,\r
71                 0,0,0,0,0,0,0,0,0,0,\r
72                 0,0,0,0,0,0,0,0,0,0,\r
73                 0,0,0,0,0,0,0,0,0,0,\r
74                 0,0,0,0,0,0,0,0,0,0,\r
75                 0,0,0,0,0,0,0,0,0,0,\r
76                 -128,-128,-128,-128,-128,-128,-128,-128,\r
77                 -128,-128,-128,-128,-128,-128,-128,-128,\r
78                 -128,-128,-128,-128,-128,-128,-128,-128,\r
79                 -128,-128,-128,-128,-128,-128,-128,-128,\r
80         };\r
81         Devices::GenericParallelPort trigger0("USB_PARALLEL", 0);\r
82         Devices::GenericParallelPort trigger1("USB_PARALLEL", Devices::GenericParallelPort::D0 + Devices::GenericParallelPort::D2);\r
83 \r
84         trigger0.trigger();\r
85         trigger1.trigger();\r
86 \r
87 \r
88         int trigger_ticks = 100, a;\r
89         Interval rng;\r
90         Widgets::Slider slide;\r
91         slide.link(trigger_ticks, "trigger_ticks", 1<=rng<=1000, 20.0, 100.0);\r
92 \r
93         int t=0;\r
94 \r
95         while(!Keyboard::esc.pushed()) {\r
96                 t++;\r
97                 if(t%2==0) Display::clear(); //Clear window\r
98                 else  Display::clear(Color::gray); //Clear window\r
99 \r
100                 //if(t%100 == 0)\r
101                 //      rs = CreateProcess("C:\\Windows\\System32\\print.exe",(LPTSTR)" /D:LPT1 D:\\Users\\hskwk\\Desktop\\zzz.txt",NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS,NULL,NULL,&si,&pi);\r
102 \r
103                 //if(t%300==0) trigger1.trigger(data,100);\r
104                 if(t%150==0) trigger0.trigger(trigger_ticks);\r
105                 rect.draw();\r
106 \r
107                 slide.draw();\r
108 \r
109                 Display::flip(); // Flip frame buffers\r
110         }\r
111 }\r
112 ///- Stimulus drawing function\r
113 \r
114 #endif\r
115 \r
116 \r
117 #if 0\r
118 \r
119 // Motion with glass patterns.\r
120 // Ross, J., Badcock, D. R., and Hayes, A. (2000)\r
121 // Coherent global motion in the absence of coherent velocity signals.\r
122 // Current Biology, 10, 679-682.\r
123 ///+ Prefix\r
124 //// Include Psychlops Package\r
125 #include <psychlops.h>\r
126 using namespace Psychlops;    // Initially developed with Psychlops Win32 1.5.3 / 20110311\r
127 ///- Prefix\r
128 \r
129 ///+ Stimulus drawing function\r
130 //// A function for stimulus drawing (main body)\r
131 void psychlops_main() {\r
132 \r
133         Canvas cnvs(Canvas::window);\r
134 \r
135         Letters let(L"flower_png24.png");\r
136         let.fill = Color::white;\r
137 \r
138         Psychlops::Ellipse rect(100,100);\r
139         rect.fill = Color::red;\r
140 \r
141         while(!Keyboard::esc.pushed()) {\r
142                 Display::clear(); //Clear window\r
143 \r
144                 rect.centering();\r
145                 std::cout << rect.getDatum().x << std::endl;\r
146                 rect.shift(100,100).draw();\r
147                 std::cout << rect.getDatum().x << std::endl << std::endl;\r
148                 let.centering();\r
149                 let.shift(100,100).draw();\r
150                 std::cout << let.getDatum().x << std::endl;\r
151 \r
152                 Display::flip(); // Flip frame buffers\r
153         }\r
154 \r
155         //Figures::Movie mov;\r
156         //mov.bin_path = "C:\\";\r
157 }\r
158 ///- Stimulus drawing function\r
159 \r
160 \r
161 \r
162 #include <psychlops.h>\r
163 using namespace Psychlops;\r
164 \r
165 \r
166 Clock before, after;\r
167 void memoBefore() { before.update(); }\r
168 double pastTime() { after.update(); return (after-before).at_msec(); }\r
169 \r
170 \r
171 void psychlops_main() {\r
172 \r
173 \r
174         Display target_display = Display::secondary;\r
175         std::cout << target_display.width << std::endl;\r
176         std::cout << Display::secondary.getHeight() << std::endl;\r
177 \r
178 \r
179         Canvas display(1024, 768, Canvas::window, target_display);\r
180         Range rng;\r
181 /*\r
182         Mouse::show();\r
183         Color::setGammaValue(1.0,1.0,1.0);\r
184 \r
185         double cutoff1=1.0,cutoff2=0.0;\r
186         Widgets::Slider slider[3];\r
187         slider[0].link(cutoff1, "cutoff1"  , 0<=rng<=256, 1);\r
188         slider[1].link(cutoff2, "half width"  , 0<=rng<=1, 0.125);\r
189 */\r
190 \r
191 /*\r
192         //void drawGrating(Image &img, int width, int height, double wavelength, double contrast, double orientation, double phase);
193         //void drawGaussian(Image &img, double sigma, double factor);
194         //void drawGabor(Image &img, double sigma, double wavelength, double contrast, double orientation, double phase);\r
195         std::stringstream ss;
196         Image img;\r
197         for(double wavelength_=2; wavelength_<8; wavelength_+=1.0 )\r
198         {\r
199                 for(double ori = 0; ori<180.0; ori+=30)\r
200                 {\r
201                         for(double amp = 0.25; amp<=1; amp+=0.25)\r
202                         {\r
203                                 for(double phase = 0; phase<360.0; phase+=30)\r
204                                 {\r
205                                         Figures::drawGrating(img, 36, 36, pow(2,wavelength_), amp, ori/360*2*PI, phase/360*2*PI);\r
206                                         ss.str("");\r
207                                         ss << "output/Grating_wav" << pow(2,wavelength_) << "_amp" << amp << "_ori" << ori << "_pha" << phase << ".png";\r
208                                         img.save(ss.str());\r
209                                         //Figures::drawGrating(img, 45, 45, pow(2,wavelength_), amp, ori/360*2*PI, phase/360*2*PI);\r
210                                 }\r
211                         }\r
212                 }\r
213         }\r
214 */\r
215 \r
216 /*\r
217         while(!Keyboard::esc.pushed()) {\r
218 \r
219                 memoBefore();\r
220                 std::cout << pastTime() << std::endl;\r
221 \r
222 \r
223                 memoBefore();\r
224 */\r
225 \r
226         Figures::Movie m;\r
227         m.source.set(100,100).centering();\r
228 \r
229                 //while(!Keyboard::esc.pushed()) {\r
230                 for(int j=0; j<10; j++) {\r
231                         display.clear(Color::blue);\r
232 \r
233 \r
234                         //img.centering().draw();\r
235                         for(int i=0; i<2; i++)\r
236                         {\r
237                                 //slider[i].setDatum(Point(0,0)).shift(20, i*25 + 10).draw();\r
238                         }\r
239                         m.capture();\r
240                         //display.to(m[j], r);\r
241                         display.flip();\r
242                 }\r
243                 m.save("test.gif");\r
244         //      std::cout << pastTime() << std::endl;\r
245         //}* /\r
246 }\r
247 #endif\r