Register your product to gain access to bonus material or receive a coupon.
This eBook includes the following formats, accessible from your Account page after purchase:
EPUB The open industry format known for its reflowable content and usability on supported mobile devices.
PDF The popular standard, used most often with the free Acrobat® Reader® software.
This eBook requires no passwords or activation to read. We customize your eBook by discreetly watermarking it with your name, making it uniquely yours.
One of HTML5’s most exciting features, Canvas provides a powerful 2D graphics API that lets you implement everything from word processors to video games. In Core HTML5 Canvas, best-selling author David Geary presents a code-fueled, no-nonsense deep dive into that API, covering everything you need to know to implement rich and consistent web applications that run on a wide variety of operating systems and devices.
Succinctly and clearly written, this book examines dozens of real-world uses of the Canvas API, such as interactively drawing and manipulating shapes, saving and restoring the drawing surface to temporarily draw shapes and text, and implementing text controls. You’ll see how to keep your applications responsive with web workers when you filter images, how to implement smooth animations, and how to create layered, 3D scrolling backgrounds with parallax. In addition, you’ll see how to implement video games with extensive coverage of sprites, physics, collision detection, and the implementation of a game engine and an industrial-strength pinball game. The book concludes by showing you how to implement Canvas-based controls that you can use in any HTML5 application and how to use Canvas on mobile devices, including iOS5. This authoritative Canvas reference covers
Throughout the book, Geary discusses high-quality, reusable code to help professional developers learn everything they really need to know, with no unnecessary verbiage. All of the book’s code and live demonstrations of key techniques are available at corehtml5canvas.com.
Preface xv
Acknowledgments xxiii
About the Author xxv
Chapter 1: Essentials 1
1.1 The canvas Element 1
1.2 Canvas Contexts 8
1.3 Canonical Examples in This Book 12
1.4 Getting Started 14
1.5 Fundamental Drawing Operations 22
1.6 Event Handling 26
1.7 Saving and Restoring the Drawing Surface 33
1.8 Using HTML Elements in a Canvas 36
1.9 Printing a Canvas 46
1.10 Offscreen Canvases 51
1.11 A Brief Math Primer 53
1.12 Conclusion 64
Chapter 2: Drawing 65
2.1 The Coordinate System 67
2.2 The Drawing Model 68
2.3 Drawing Rectangles 70
2.4 Colors and Transparency 72
2.5 Gradients and Patterns 76
2.6 Shadows 83
2.7 Paths, Stroking, and Filling 88
2.8 Lines 103
2.9 Arcs and Circles 124
2.10 Bézier Curves 137
2.11 Polygons 144
2.12 Advanced Path Manipulation 150
2.13 Transformations 170
2.14 Compositing 181
2.15 The Clipping Region 187
2.16 Conclusion 198
Chapter 3: Text 201
3.1 Stroking and Filling Text 202
3.2 Setting Font Properties 207
3.3 Positioning Text 210
3.4 Implementing Text Controls 225
3.5 Conclusion 252
Chapter 4: Images and Video 253
4.1 Drawing Images 254
4.2 Scaling Images 259
4.3 Drawing a Canvas into a Canvas 266
4.4 Offscreen Canvases 270
4.5 Manipulating Images 274
4.6 Clipping Images 302
4.7 Animating Images 306
4.8 Security 312
4.9 Performance 313
4.10 A Magnifying Glass 321
4.11 Video Processing 328
4.12 Conclusion 337
Chapter 5: Animation 339
5.1 The Animation Loop 340
5.2 Calculating Frame Rates 358
5.3 Scheduling Tasks at Alternate Frame Rates 359
5.4 Restoring the Background 360
5.5 Double Buffering 364
5.6 Time-Based Motion 367
5.7 Scrolling the Background 370
5.8 Parallax 377
5.9 User Gestures 383
5.10 Timed Animations 385
5.11 Animation Best Practices 390
5.12 Conclusion 391
Chapter 6: Sprites 393
6.1 Sprites Overview 394
6.2 Painters 398
6.3 Sprite Behaviors 411
6.4 Sprite Animators 417
6.5 A Sprite-Based Animation Loop 424
6.6 Conclusion 425
Chapter 7: Physics 427
7.1 Gravity 428
7.2 Warping Time 450
7.3 Time-Warp Functions 456
7.4 Warping Motion 458
7.5 Warping Animation 473
7.6 Conclusion 482
Chapter 8: Collision Detection 483
8.1 Bounding Areas 483
8.2 Bouncing Off Walls 488
8.3 Ray Casting 490
8.4 The Separating Axis Theorem (SAT) and Minimum Translation Vector (MTV) 495
8.5 Conclusion 541
Chapter 9: Game Development 543
9.1 A Game Engine 544
9.2 The Ungame 572
9.3 A Pinball Game 589
9.4 Conclusion 614
Chapter 10: Custom Controls 615
10.1 Rounded Rectangles 617
10.2 Progress Bars 625
10.3 Sliders 631
10.4 An Image Panner 643
10.5 Conclusion 655
Chapter 11: Mobile 657
11.1 The Mobile Viewport 659
11.2 Media Queries 666
11.3 Touch Events 671
11.4 iOS5 677
11.5 A Virtual Keyboard 682
11.6 Conclusion 701
Index 703