OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <math.h> | 5 #include <math.h> |
6 #include <stdio.h> // FIXME(brettw) erase me. | 6 #include <stdio.h> // FIXME(brettw) erase me. |
7 #ifndef _WIN32 | 7 #ifndef _WIN32 |
8 #include <sys/time.h> | 8 #include <sys/time.h> |
9 #endif | 9 #endif |
10 #include <time.h> | 10 #include <time.h> |
(...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
191 } | 191 } |
192 | 192 |
193 virtual pp::Var GetInstanceObject() { | 193 virtual pp::Var GetInstanceObject() { |
194 return new MyScriptableObject(); | 194 return new MyScriptableObject(); |
195 } | 195 } |
196 | 196 |
197 pp::ImageData PaintImage(int width, int height) { | 197 pp::ImageData PaintImage(int width, int height) { |
198 pp::ImageData image(PP_IMAGEDATAFORMAT_BGRA_PREMUL, | 198 pp::ImageData image(PP_IMAGEDATAFORMAT_BGRA_PREMUL, |
199 pp::Size(width, height), false); | 199 pp::Size(width, height), false); |
200 if (image.is_null()) { | 200 if (image.is_null()) { |
201 printf("Couldn't allocate the image data\n"); | 201 printf("Couldn't allocate the image data: %d, %d\n", width, height); |
202 return image; | 202 return image; |
203 } | 203 } |
204 | 204 |
205 // Fill with semitransparent gradient. | 205 // Fill with semitransparent gradient. |
206 for (int y = 0; y < image.size().height(); y++) { | 206 for (int y = 0; y < image.size().height(); y++) { |
207 char* row = &static_cast<char*>(image.data())[y * image.stride()]; | 207 char* row = &static_cast<char*>(image.data())[y * image.stride()]; |
208 for (int x = 0; x < image.size().width(); x++) { | 208 for (int x = 0; x < image.size().width(); x++) { |
209 row[x * 4 + 0] = y; | 209 row[x * 4 + 0] = y; |
210 row[x * 4 + 1] = y; | 210 row[x * 4 + 1] = y; |
211 row[x * 4 + 2] = 0; | 211 row[x * 4 + 2] = 0; |
212 row[x * 4 + 3] = y; | 212 row[x * 4 + 3] = y; |
213 } | 213 } |
214 } | 214 } |
215 | 215 |
| 216 // Draw the orbiting box. |
216 float radians = static_cast<float>(animation_counter_) / kStepsPerCircle * | 217 float radians = static_cast<float>(animation_counter_) / kStepsPerCircle * |
217 2 * 3.14159265358979F; | 218 2 * 3.14159265358979F; |
218 | 219 |
219 float radius = static_cast<float>(std::min(width, height)) / 2.0f - 3.0f; | 220 float radius = static_cast<float>(std::min(width, height)) / 2.0f - 3.0f; |
220 int x = static_cast<int>(cos(radians) * radius + radius + 2); | 221 int x = static_cast<int>(cos(radians) * radius + radius + 2); |
221 int y = static_cast<int>(sin(radians) * radius + radius + 2); | 222 int y = static_cast<int>(sin(radians) * radius + radius + 2); |
222 | 223 |
223 FillRect(&image, x - 3, y - 3, 7, 7, 0x80000000); | 224 const uint32_t box_bgra = 0x80000000; // Alpha 50%. |
| 225 FillRect(&image, x - 3, y - 3, 7, 7, box_bgra); |
224 return image; | 226 return image; |
225 } | 227 } |
226 | 228 |
227 void Paint() { | 229 void Paint() { |
228 pp::ImageData image = PaintImage(width_, height_); | 230 pp::ImageData image = PaintImage(width_, height_); |
229 if (!image.is_null()) { | 231 if (!image.is_null()) { |
230 device_context_.ReplaceContents(&image); | 232 device_context_.ReplaceContents(&image); |
231 device_context_.Flush(pp::CompletionCallback(&FlushCallback, this)); | 233 device_context_.Flush(pp::CompletionCallback(&FlushCallback, this)); |
| 234 } else { |
| 235 printf("NullImage: %d, %d\n", width_, height_); |
232 } | 236 } |
233 } | 237 } |
234 | 238 |
235 virtual void DidChangeView(const pp::Rect& position, const pp::Rect& clip) { | 239 virtual void DidChangeView(const pp::Rect& position, const pp::Rect& clip) { |
236 if (position.size().width() == width_ && | 240 if (position.size().width() == width_ && |
237 position.size().height() == height_) | 241 position.size().height() == height_) |
238 return; // We don't care about the position, only the size. | 242 return; // We don't care about the position, only the size. |
239 | 243 |
240 width_ = position.size().width(); | 244 width_ = position.size().width(); |
241 height_ = position.size().height(); | 245 height_ = position.size().height(); |
| 246 printf("DidChangeView relevant change: width=%d height:%d\n", |
| 247 width_, height_); |
242 | 248 |
243 device_context_ = pp::Graphics2D(pp::Size(width_, height_), false); | 249 device_context_ = pp::Graphics2D(pp::Size(width_, height_), false); |
244 if (!BindGraphics(device_context_)) { | 250 if (!BindGraphics(device_context_)) { |
245 printf("Couldn't bind the device context\n"); | 251 printf("Couldn't bind the device context\n"); |
246 return; | 252 return; |
247 } | 253 } |
248 | 254 |
249 Paint(); | 255 Paint(); |
250 } | 256 } |
251 | 257 |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
417 }; | 423 }; |
418 | 424 |
419 namespace pp { | 425 namespace pp { |
420 | 426 |
421 // Factory function for your specialization of the Module object. | 427 // Factory function for your specialization of the Module object. |
422 Module* CreateModule() { | 428 Module* CreateModule() { |
423 return new MyModule(); | 429 return new MyModule(); |
424 } | 430 } |
425 | 431 |
426 } // namespace pp | 432 } // namespace pp |
OLD | NEW |