tiger.html 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <!DOCTYPE HTML>
  2. <html>
  3. <!--
  4. Copyright 2007 The Closure Library Authors. All Rights Reserved.
  5. Use of this source code is governed by the Apache License, Version 2.0.
  6. See the COPYING file for details.
  7. -->
  8. <head>
  9. <title>The SVG tiger drawn with goog.graphics</title>
  10. <script type="text/javascript" src="../../base.js"></script>
  11. <script type="text/javascript">
  12. goog.require('goog.dom');
  13. goog.require('goog.graphics');
  14. </script>
  15. <script src="tigerdata.js"></script>
  16. <script type="text/javascript">
  17. function drawTiger() {
  18. var graphics = goog.graphics.createGraphics(600, 600);
  19. var fills = {};
  20. var strokes = {};
  21. var segmentFunctions = {
  22. 'z': goog.graphics.Path.prototype.close,
  23. 'M': goog.graphics.Path.prototype.moveTo,
  24. 'L': goog.graphics.Path.prototype.lineTo,
  25. 'C': goog.graphics.Path.prototype.curveTo
  26. };
  27. function createPath(stroke, fill, paths) {
  28. var fillObject;
  29. if (fill == null) {
  30. fillObject = null;
  31. } else if (fill in fills) {
  32. fillObject = fills[fill];
  33. } else {
  34. fillObject = new goog.graphics.SolidFill(fill);
  35. fills[fill] = fillObject;
  36. }
  37. var strokeObject;
  38. if (stroke == null) {
  39. strokeObject = null;
  40. } else {
  41. var strokeKey;
  42. if (typeof stroke == 'string') {
  43. strokeKey = stroke;
  44. } else {
  45. strokeKey = stroke.c + stroke.w;
  46. }
  47. if (strokeKey in strokes) {
  48. strokeObject = strokes[strokeKey];
  49. } else if (typeof stroke == 'string') {
  50. strokeObject = null;
  51. } else {
  52. strokeObject = new goog.graphics.Stroke(stroke.w, stroke.c);
  53. }
  54. }
  55. strokes[strokeKey] = strokeObject;
  56. var pathObject = graphics.createPath();
  57. for (var i = 0, path; path = paths[i]; i++) {
  58. segmentFunctions[path.t].apply(pathObject, path.p);
  59. }
  60. graphics.drawPath(pathObject, strokeObject, fillObject);
  61. }
  62. var d0 = new Date;
  63. for (var i = 0; i < tigerData.length; i++) {
  64. var d = tigerData[i];
  65. createPath(d.s, d.f, d.p);
  66. }
  67. graphics.render(goog.dom.getElement('tiger-container'));
  68. var d1 = new Date;
  69. goog.dom.setTextContent(goog.dom.getElement('out'),
  70. 'Creating took: ' + (d1 - d0));
  71. window.setTimeout(function() {
  72. var d2 = new Date;
  73. goog.dom.setTextContent(goog.dom.getElement('out-2'),
  74. 'Drawing took: ' + (d2 - d1));
  75. }, 1);
  76. }
  77. </script>
  78. </head>
  79. <body>
  80. <div id="tiger-container" style='border:1px solid black;width:600px;height:600px'></div>
  81. <div id="out"></div>
  82. <div id="out-2"></div>
  83. <script>
  84. drawTiger();
  85. </script>
  86. </body>
  87. </html>