jsxgraph 1.6.0 → 1.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/CHANGELOG.md +25 -2
  2. package/distrib/docs/files.html +2 -2
  3. package/distrib/docs/index.html +2 -2
  4. package/distrib/docs/static/jsxgraph.css +24 -22
  5. package/distrib/docs/static/jsxgraphcore.js +2 -2
  6. package/distrib/docs/symbols/Angle.html +2 -2
  7. package/distrib/docs/symbols/Arc.html +2 -2
  8. package/distrib/docs/symbols/Arrow.html +2 -2
  9. package/distrib/docs/symbols/Arrowparallel.html +2 -2
  10. package/distrib/docs/symbols/Axis.html +2 -2
  11. package/distrib/docs/symbols/Bisector.html +2 -2
  12. package/distrib/docs/symbols/Bisectorlines.html +2 -2
  13. package/distrib/docs/symbols/Boxplot.html +2 -2
  14. package/distrib/docs/symbols/Button.html +4 -4
  15. package/distrib/docs/symbols/Cardinalspline.html +2 -2
  16. package/distrib/docs/symbols/Chart.html +2 -2
  17. package/distrib/docs/symbols/Checkbox.html +17 -17
  18. package/distrib/docs/symbols/Circle.html +2 -2
  19. package/distrib/docs/symbols/Circumcenter.html +4 -4
  20. package/distrib/docs/symbols/Circumcircle.html +2 -2
  21. package/distrib/docs/symbols/CircumcircleArc.html +2 -2
  22. package/distrib/docs/symbols/CircumcircleSector.html +2 -2
  23. package/distrib/docs/symbols/Comb.html +5 -5
  24. package/distrib/docs/symbols/Conic.html +2 -2
  25. package/distrib/docs/symbols/Constants.html +2 -2
  26. package/distrib/docs/symbols/Curve.html +2 -2
  27. package/distrib/docs/symbols/Curve3D.html +2 -2
  28. package/distrib/docs/symbols/CurveDifference.html +2 -2
  29. package/distrib/docs/symbols/CurveIntersection.html +2 -2
  30. package/distrib/docs/symbols/CurveUnion.html +2 -2
  31. package/distrib/docs/symbols/Derivative.html +2 -2
  32. package/distrib/docs/symbols/Ellipse.html +2 -2
  33. package/distrib/docs/symbols/ForeignObject.html +4 -4
  34. package/distrib/docs/symbols/Functiongraph.html +2 -2
  35. package/distrib/docs/symbols/Functiongraph3D.html +2 -2
  36. package/distrib/docs/symbols/Glider.html +4 -4
  37. package/distrib/docs/symbols/Grid.html +2 -2
  38. package/distrib/docs/symbols/Group.html +2 -2
  39. package/distrib/docs/symbols/Hatch.html +2 -2
  40. package/distrib/docs/symbols/Hyperbola.html +2 -2
  41. package/distrib/docs/symbols/Image.html +4 -4
  42. package/distrib/docs/symbols/Incenter.html +4 -4
  43. package/distrib/docs/symbols/Incircle.html +2 -2
  44. package/distrib/docs/symbols/Inequality.html +2 -2
  45. package/distrib/docs/symbols/Input.html +4 -4
  46. package/distrib/docs/symbols/Integral.html +2 -2
  47. package/distrib/docs/symbols/Intersection.html +4 -4
  48. package/distrib/docs/symbols/JXG.AbstractRenderer.html +2 -2
  49. package/distrib/docs/symbols/JXG.Board.html +144 -11
  50. package/distrib/docs/symbols/JXG.Board.infobox.html +2 -2
  51. package/distrib/docs/symbols/JXG.C.html +2 -2
  52. package/distrib/docs/symbols/JXG.CA.html +2 -2
  53. package/distrib/docs/symbols/JXG.CanvasRenderer.html +2 -2
  54. package/distrib/docs/symbols/JXG.Chart.html +2 -2
  55. package/distrib/docs/symbols/JXG.Circle.html +2 -2
  56. package/distrib/docs/symbols/JXG.Complex.html +2 -2
  57. package/distrib/docs/symbols/JXG.Composition.html +2 -2
  58. package/distrib/docs/symbols/JXG.Coords.html +2 -2
  59. package/distrib/docs/symbols/JXG.CoordsElement.html +54 -2
  60. package/distrib/docs/symbols/JXG.Curve.html +2 -2
  61. package/distrib/docs/symbols/JXG.Curve3D.html +2 -2
  62. package/distrib/docs/symbols/JXG.Dump.html +2 -2
  63. package/distrib/docs/symbols/JXG.EventEmitter.html +2 -2
  64. package/distrib/docs/symbols/JXG.ForeignObject.html +3 -3
  65. package/distrib/docs/symbols/JXG.GeometryElement.html +2 -2
  66. package/distrib/docs/symbols/JXG.GeometryElement3D.html +2 -2
  67. package/distrib/docs/symbols/JXG.GeonextParser.html +2 -2
  68. package/distrib/docs/symbols/JXG.Group.html +2 -2
  69. package/distrib/docs/symbols/JXG.Image.html +3 -3
  70. package/distrib/docs/symbols/JXG.JSXGraph.html +2 -2
  71. package/distrib/docs/symbols/JXG.JessieCode.html +2 -2
  72. package/distrib/docs/symbols/JXG.Legend.html +2 -2
  73. package/distrib/docs/symbols/JXG.Line.html +2 -2
  74. package/distrib/docs/symbols/JXG.Line3D.html +2 -2
  75. package/distrib/docs/symbols/JXG.Math.Clip.html +2 -2
  76. package/distrib/docs/symbols/JXG.Math.Extrapolate.html +2 -2
  77. package/distrib/docs/symbols/JXG.Math.Geometry.html +2 -2
  78. package/distrib/docs/symbols/JXG.Math.IntervalArithmetic.html +2 -2
  79. package/distrib/docs/symbols/JXG.Math.Metapost.html +2 -2
  80. package/distrib/docs/symbols/JXG.Math.Nlp.html +2 -2
  81. package/distrib/docs/symbols/JXG.Math.Numerics.html +23 -15
  82. package/distrib/docs/symbols/JXG.Math.Plot.html +2 -2
  83. package/distrib/docs/symbols/JXG.Math.Poly.Monomial.html +2 -2
  84. package/distrib/docs/symbols/JXG.Math.Poly.Polynomial.html +2 -2
  85. package/distrib/docs/symbols/JXG.Math.Poly.Ring.html +2 -2
  86. package/distrib/docs/symbols/JXG.Math.Poly.html +2 -2
  87. package/distrib/docs/symbols/JXG.Math.ProbFuncs.html +2 -2
  88. package/distrib/docs/symbols/JXG.Math.Quadtree.html +122 -7
  89. package/distrib/docs/symbols/JXG.Math.Statistics.html +2 -2
  90. package/distrib/docs/symbols/JXG.Math.Symbolic.html +2 -2
  91. package/distrib/docs/symbols/JXG.Math.html +45 -2
  92. package/distrib/docs/symbols/JXG.NoRenderer.html +2 -2
  93. package/distrib/docs/symbols/JXG.Options.html +2 -2
  94. package/distrib/docs/symbols/JXG.Plane3D.html +2 -2
  95. package/distrib/docs/symbols/JXG.Point.html +3 -3
  96. package/distrib/docs/symbols/JXG.Point3D.html +2 -2
  97. package/distrib/docs/symbols/JXG.Polygon.html +2 -2
  98. package/distrib/docs/symbols/JXG.SVGRenderer.html +2 -2
  99. package/distrib/docs/symbols/JXG.Server.html +2 -2
  100. package/distrib/docs/symbols/JXG.Server.modules.html +2 -2
  101. package/distrib/docs/symbols/JXG.Surface3D.html +2 -2
  102. package/distrib/docs/symbols/JXG.Text.html +8 -8
  103. package/distrib/docs/symbols/JXG.Ticks.html +2 -2
  104. package/distrib/docs/symbols/JXG.Transformation.html +2 -2
  105. package/distrib/docs/symbols/JXG.Turtle.html +2 -2
  106. package/distrib/docs/symbols/JXG.Util.Base64.html +2 -2
  107. package/distrib/docs/symbols/JXG.Util.UTF8.html +2 -2
  108. package/distrib/docs/symbols/JXG.Util.Unzip.html +2 -2
  109. package/distrib/docs/symbols/JXG.Util.html +2 -2
  110. package/distrib/docs/symbols/JXG.VMLRenderer.html +2 -2
  111. package/distrib/docs/symbols/JXG.View3D.html +2 -2
  112. package/distrib/docs/symbols/JXG.XML.html +2 -2
  113. package/distrib/docs/symbols/Label.html +114 -4
  114. package/distrib/docs/symbols/Legend.html +2 -2
  115. package/distrib/docs/symbols/Line.html +2 -2
  116. package/distrib/docs/symbols/Line3D.html +2 -2
  117. package/distrib/docs/symbols/Locus.html +2 -2
  118. package/distrib/docs/symbols/MajorArc.html +2 -2
  119. package/distrib/docs/symbols/MajorSector.html +2 -2
  120. package/distrib/docs/symbols/Metapostspline.html +2 -2
  121. package/distrib/docs/symbols/Midpoint.html +4 -4
  122. package/distrib/docs/symbols/MinorArc.html +2 -2
  123. package/distrib/docs/symbols/MinorSector.html +2 -2
  124. package/distrib/docs/symbols/Mirrorelement.html +2 -2
  125. package/distrib/docs/symbols/Mirrorpoint.html +4 -4
  126. package/distrib/docs/symbols/NonReflexAngle.html +2 -2
  127. package/distrib/docs/symbols/Normal.html +2 -2
  128. package/distrib/docs/symbols/Orthogonalprojection.html +4 -4
  129. package/distrib/docs/symbols/OtherIntersection.html +4 -4
  130. package/distrib/docs/symbols/Parabola.html +2 -2
  131. package/distrib/docs/symbols/Parallel.html +2 -2
  132. package/distrib/docs/symbols/Parallelpoint.html +4 -4
  133. package/distrib/docs/symbols/ParametricSurface3D.html +2 -2
  134. package/distrib/docs/symbols/Perpendicular.html +2 -2
  135. package/distrib/docs/symbols/PerpendicularPoint.html +4 -4
  136. package/distrib/docs/symbols/PerpendicularSegment.html +2 -2
  137. package/distrib/docs/symbols/Point.html +4 -4
  138. package/distrib/docs/symbols/Point3D.html +2 -2
  139. package/distrib/docs/symbols/PolarLine.html +2 -2
  140. package/distrib/docs/symbols/PolePoint.html +4 -4
  141. package/distrib/docs/symbols/Polygon.html +2 -2
  142. package/distrib/docs/symbols/PolygonalChain.html +2 -2
  143. package/distrib/docs/symbols/RadicalAxis.html +2 -2
  144. package/distrib/docs/symbols/Reflection.html +2 -2
  145. package/distrib/docs/symbols/ReflexAngle.html +2 -2
  146. package/distrib/docs/symbols/RegularPolygon.html +2 -2
  147. package/distrib/docs/symbols/Riemannsum.html +7 -3
  148. package/distrib/docs/symbols/Sector.html +2 -2
  149. package/distrib/docs/symbols/Segment.html +2 -2
  150. package/distrib/docs/symbols/Semicircle.html +2 -2
  151. package/distrib/docs/symbols/Slider.html +145 -4
  152. package/distrib/docs/symbols/Slopefield.html +2 -2
  153. package/distrib/docs/symbols/Slopetriangle.html +2 -2
  154. package/distrib/docs/symbols/Smartlabel.html +4 -4
  155. package/distrib/docs/symbols/Spline.html +2 -2
  156. package/distrib/docs/symbols/Stepfunction.html +2 -2
  157. package/distrib/docs/symbols/Tangent.html +2 -2
  158. package/distrib/docs/symbols/Tapemeasure.html +2 -2
  159. package/distrib/docs/symbols/Text.html +4 -4
  160. package/distrib/docs/symbols/Ticks.html +2 -2
  161. package/distrib/docs/symbols/Tracecurve.html +2 -2
  162. package/distrib/docs/symbols/Transformation.html +2 -2
  163. package/distrib/docs/symbols/Turtle.html +2 -2
  164. package/distrib/docs/symbols/Vectorfield.html +2 -2
  165. package/distrib/docs/symbols/View3D.html +2 -2
  166. package/distrib/docs/symbols/_global_.html +2 -2
  167. package/distrib/docs/symbols/src/src_3d_view3d.js.html +29 -30
  168. package/distrib/docs/symbols/src/src_base_board.js.html +5020 -4930
  169. package/distrib/docs/symbols/src/src_base_constants.js.html +1 -1
  170. package/distrib/docs/symbols/src/src_base_coordselement.js.html +1829 -1789
  171. package/distrib/docs/symbols/src/src_base_curve.js.html +783 -778
  172. package/distrib/docs/symbols/src/src_base_text.js.html +345 -358
  173. package/distrib/docs/symbols/src/src_element_checkbox.js.html +30 -30
  174. package/distrib/docs/symbols/src/src_element_slider.js.html +391 -377
  175. package/distrib/docs/symbols/src/src_math_numerics.js.html +1226 -1190
  176. package/distrib/docs/symbols/src/src_math_qdt.js.html +318 -194
  177. package/distrib/docs/symbols/src/src_options.js.html +7137 -7034
  178. package/distrib/docs/symbols/src/src_renderer_abstract.js.html +1168 -1167
  179. package/distrib/docs/symbols/src/src_renderer_canvas.js.html +1 -1
  180. package/distrib/docs/symbols/src/src_renderer_svg.js.html +489 -494
  181. package/distrib/docs/symbols/src/src_utils_env.js.html +127 -90
  182. package/distrib/docs.zip +0 -0
  183. package/distrib/geogebra.min.js +1 -1
  184. package/distrib/geonext.min.js +1 -1
  185. package/distrib/intergeo.min.js +1 -1
  186. package/distrib/jsxgraph.css +24 -22
  187. package/distrib/jsxgraph.zip +0 -0
  188. package/distrib/jsxgraphcore.js +2 -2
  189. package/distrib/jsxgraphcore.mjs +2 -2
  190. package/distrib/jsxgraphcore.mjs.map +1 -1
  191. package/distrib/jsxgraphsrc.js +707 -276
  192. package/distrib/jsxgraphsrc.mjs +707 -276
  193. package/distrib/jsxgraphsrc.mjs.map +1 -1
  194. package/distrib/sketch.min.js +1 -1
  195. package/package.json +1 -1
  196. package/src/3d/view3d.js +0 -1
  197. package/src/base/board.js +140 -50
  198. package/src/base/constants.js +1 -1
  199. package/src/base/coordselement.js +54 -14
  200. package/src/base/curve.js +6 -1
  201. package/src/base/text.js +13 -26
  202. package/src/element/checkbox.js +17 -17
  203. package/src/element/slider.js +16 -2
  204. package/src/math/heap.js +34 -4
  205. package/src/math/numerics.js +112 -76
  206. package/src/math/qdt.js +141 -17
  207. package/src/options.js +115 -12
  208. package/src/renderer/abstract.js +15 -14
  209. package/src/renderer/canvas.js +1 -1
  210. package/src/renderer/svg.js +0 -5
  211. package/src/utils/env.js +75 -38
@@ -1834,511 +1834,506 @@
1834
1834
  <span class='line'>1827</span>
1835
1835
  <span class='line'>1828</span> </span><span class="WHIT"> </span><span class="COMM">// documented in AbstractRenderer</span><span class="WHIT">
1836
1836
  <span class='line'>1829</span> </span><span class="WHIT"> </span><span class="NAME">resize</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1837
- <span class='line'>1830</span> </span><span class="WHIT"> </span><span class="COMM">// this.svgRoot.style.width = parseFloat(w) + 'px';</span><span class="WHIT">
1838
- <span class='line'>1831</span> </span><span class="WHIT"> </span><span class="COMM">// this.svgRoot.style.height = parseFloat(h) + 'px';</span><span class="WHIT">
1839
- <span class='line'>1832</span>
1840
- <span class='line'>1833</span> </span><span class="WHIT"> </span><span class="NAME">this.svgRoot.setAttribute</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">w</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1841
- <span class='line'>1834</span> </span><span class="WHIT"> </span><span class="NAME">this.svgRoot.setAttribute</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1842
- <span class='line'>1835</span> </span><span class="WHIT"> </span><span class="COMM">// this.svgRoot.setAttribute('width', '100%');</span><span class="WHIT">
1843
- <span class='line'>1836</span> </span><span class="WHIT"> </span><span class="COMM">// this.svgRoot.setAttribute('height', '100%');</span><span class="WHIT">
1844
- <span class='line'>1837</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1845
- <span class='line'>1838</span>
1846
- <span class='line'>1839</span> </span><span class="WHIT"> </span><span class="COMM">// documented in JXG.AbstractRenderer</span><span class="WHIT">
1847
- <span class='line'>1840</span> </span><span class="WHIT"> </span><span class="NAME">createTouchpoints</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1848
- <span class='line'>1841</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">na1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">na2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
1849
- <span class='line'>1842</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1850
- <span class='line'>1843</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1851
- <span class='line'>1844</span> </span><span class="WHIT"> </span><span class="NAME">na1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"touchpoint1_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
1852
- <span class='line'>1845</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.createPrim</span><span class="PUNC">(</span><span class="STRN">"path"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">na1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1853
- <span class='line'>1846</span> </span><span class="WHIT"> </span><span class="NAME">this.appendChildPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">19</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1854
- <span class='line'>1847</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"d"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"M 0 0"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1855
- <span class='line'>1848</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints.push</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1856
- <span class='line'>1849</span>
1857
- <span class='line'>1850</span> </span><span class="WHIT"> </span><span class="NAME">this.setPropertyPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroked"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"true"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1858
- <span class='line'>1851</span> </span><span class="WHIT"> </span><span class="NAME">this.setPropertyPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke-width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"1px"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1859
- <span class='line'>1852</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#000000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1860
- <span class='line'>1853</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke-opacity"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1.0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1861
- <span class='line'>1854</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1862
- <span class='line'>1855</span>
1863
- <span class='line'>1856</span> </span><span class="WHIT"> </span><span class="NAME">na2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"touchpoint2_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
1864
- <span class='line'>1857</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.createPrim</span><span class="PUNC">(</span><span class="STRN">"ellipse"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">na2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1865
- <span class='line'>1858</span> </span><span class="WHIT"> </span><span class="NAME">this.appendChildPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">19</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1866
- <span class='line'>1859</span> </span><span class="WHIT"> </span><span class="NAME">this.updateEllipsePrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1867
- <span class='line'>1860</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints.push</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1868
- <span class='line'>1861</span>
1869
- <span class='line'>1862</span> </span><span class="WHIT"> </span><span class="NAME">this.setPropertyPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroked"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"true"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1870
- <span class='line'>1863</span> </span><span class="WHIT"> </span><span class="NAME">this.setPropertyPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke-width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"1px"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1871
- <span class='line'>1864</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#000000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1872
- <span class='line'>1865</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke-opacity"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1.0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1873
- <span class='line'>1866</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"fill"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#ffffff"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1874
- <span class='line'>1867</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"fill-opacity"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0.0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1875
- <span class='line'>1868</span>
1876
- <span class='line'>1869</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1877
- <span class='line'>1870</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1878
- <span class='line'>1871</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1879
- <span class='line'>1872</span>
1880
- <span class='line'>1873</span> </span><span class="WHIT"> </span><span class="COMM">// documented in JXG.AbstractRenderer</span><span class="WHIT">
1881
- <span class='line'>1874</span> </span><span class="WHIT"> </span><span class="NAME">showTouchpoint</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1882
- <span class='line'>1875</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.touchpoints</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.touchpoints.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1883
- <span class='line'>1876</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"inline"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1884
- <span class='line'>1877</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"inline"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1885
- <span class='line'>1878</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1886
- <span class='line'>1879</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1887
- <span class='line'>1880</span>
1888
- <span class='line'>1881</span> </span><span class="WHIT"> </span><span class="COMM">// documented in JXG.AbstractRenderer</span><span class="WHIT">
1889
- <span class='line'>1882</span> </span><span class="WHIT"> </span><span class="NAME">hideTouchpoint</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1890
- <span class='line'>1883</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.touchpoints</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.touchpoints.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1891
- <span class='line'>1884</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1892
- <span class='line'>1885</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1893
- <span class='line'>1886</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1894
- <span class='line'>1887</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1895
- <span class='line'>1888</span>
1896
- <span class='line'>1889</span> </span><span class="WHIT"> </span><span class="COMM">// documented in JXG.AbstractRenderer</span><span class="WHIT">
1897
- <span class='line'>1890</span> </span><span class="WHIT"> </span><span class="NAME">updateTouchpoint</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1898
- <span class='line'>1891</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT">
1899
- <span class='line'>1892</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT">
1900
- <span class='line'>1893</span> </span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">37</span><span class="PUNC">;</span><span class="WHIT">
1901
- <span class='line'>1894</span>
1902
- <span class='line'>1895</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.touchpoints</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.touchpoints.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1903
- <span class='line'>1896</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1904
- <span class='line'>1897</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1905
- <span class='line'>1898</span>
1906
- <span class='line'>1899</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="WHIT">
1907
- <span class='line'>1900</span> </span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
1908
- <span class='line'>1901</span> </span><span class="WHIT"> </span><span class="STRN">"d"</span><span class="PUNC">,</span><span class="WHIT">
1909
- <span class='line'>1902</span> </span><span class="WHIT"> </span><span class="STRN">"M "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1910
- <span class='line'>1903</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1837
+ <span class='line'>1830</span> </span><span class="WHIT"> </span><span class="NAME">this.svgRoot.setAttribute</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">w</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1838
+ <span class='line'>1831</span> </span><span class="WHIT"> </span><span class="NAME">this.svgRoot.setAttribute</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1839
+ <span class='line'>1832</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1840
+ <span class='line'>1833</span>
1841
+ <span class='line'>1834</span> </span><span class="WHIT"> </span><span class="COMM">// documented in JXG.AbstractRenderer</span><span class="WHIT">
1842
+ <span class='line'>1835</span> </span><span class="WHIT"> </span><span class="NAME">createTouchpoints</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">n</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1843
+ <span class='line'>1836</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">na1</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">na2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">;</span><span class="WHIT">
1844
+ <span class='line'>1837</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1845
+ <span class='line'>1838</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">n</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1846
+ <span class='line'>1839</span> </span><span class="WHIT"> </span><span class="NAME">na1</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"touchpoint1_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
1847
+ <span class='line'>1840</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.createPrim</span><span class="PUNC">(</span><span class="STRN">"path"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">na1</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1848
+ <span class='line'>1841</span> </span><span class="WHIT"> </span><span class="NAME">this.appendChildPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">19</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1849
+ <span class='line'>1842</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"d"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"M 0 0"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1850
+ <span class='line'>1843</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints.push</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1851
+ <span class='line'>1844</span>
1852
+ <span class='line'>1845</span> </span><span class="WHIT"> </span><span class="NAME">this.setPropertyPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroked"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"true"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1853
+ <span class='line'>1846</span> </span><span class="WHIT"> </span><span class="NAME">this.setPropertyPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke-width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"1px"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1854
+ <span class='line'>1847</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#000000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1855
+ <span class='line'>1848</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke-opacity"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1.0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1856
+ <span class='line'>1849</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1857
+ <span class='line'>1850</span>
1858
+ <span class='line'>1851</span> </span><span class="WHIT"> </span><span class="NAME">na2</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"touchpoint2_"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
1859
+ <span class='line'>1852</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.createPrim</span><span class="PUNC">(</span><span class="STRN">"ellipse"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">na2</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1860
+ <span class='line'>1853</span> </span><span class="WHIT"> </span><span class="NAME">this.appendChildPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">19</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1861
+ <span class='line'>1854</span> </span><span class="WHIT"> </span><span class="NAME">this.updateEllipsePrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1862
+ <span class='line'>1855</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints.push</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1863
+ <span class='line'>1856</span>
1864
+ <span class='line'>1857</span> </span><span class="WHIT"> </span><span class="NAME">this.setPropertyPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroked"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"true"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1865
+ <span class='line'>1858</span> </span><span class="WHIT"> </span><span class="NAME">this.setPropertyPrim</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke-width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"1px"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1866
+ <span class='line'>1859</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#000000"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1867
+ <span class='line'>1860</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"stroke-opacity"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">1.0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1868
+ <span class='line'>1861</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"fill"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"#ffffff"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1869
+ <span class='line'>1862</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"fill-opacity"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0.0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1870
+ <span class='line'>1863</span>
1871
+ <span class='line'>1864</span> </span><span class="WHIT"> </span><span class="NAME">node.setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1872
+ <span class='line'>1865</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1873
+ <span class='line'>1866</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1874
+ <span class='line'>1867</span>
1875
+ <span class='line'>1868</span> </span><span class="WHIT"> </span><span class="COMM">// documented in JXG.AbstractRenderer</span><span class="WHIT">
1876
+ <span class='line'>1869</span> </span><span class="WHIT"> </span><span class="NAME">showTouchpoint</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1877
+ <span class='line'>1870</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.touchpoints</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.touchpoints.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1878
+ <span class='line'>1871</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"inline"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1879
+ <span class='line'>1872</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"inline"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1880
+ <span class='line'>1873</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1881
+ <span class='line'>1874</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1882
+ <span class='line'>1875</span>
1883
+ <span class='line'>1876</span> </span><span class="WHIT"> </span><span class="COMM">// documented in JXG.AbstractRenderer</span><span class="WHIT">
1884
+ <span class='line'>1877</span> </span><span class="WHIT"> </span><span class="NAME">hideTouchpoint</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1885
+ <span class='line'>1878</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.touchpoints</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.touchpoints.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1886
+ <span class='line'>1879</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1887
+ <span class='line'>1880</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1888
+ <span class='line'>1881</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1889
+ <span class='line'>1882</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1890
+ <span class='line'>1883</span>
1891
+ <span class='line'>1884</span> </span><span class="WHIT"> </span><span class="COMM">// documented in JXG.AbstractRenderer</span><span class="WHIT">
1892
+ <span class='line'>1885</span> </span><span class="WHIT"> </span><span class="NAME">updateTouchpoint</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1893
+ <span class='line'>1886</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">x</span><span class="PUNC">,</span><span class="WHIT">
1894
+ <span class='line'>1887</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="PUNC">,</span><span class="WHIT">
1895
+ <span class='line'>1888</span> </span><span class="WHIT"> </span><span class="NAME">d</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">37</span><span class="PUNC">;</span><span class="WHIT">
1896
+ <span class='line'>1889</span>
1897
+ <span class='line'>1890</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.touchpoints</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">>=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">this.touchpoints.length</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1898
+ <span class='line'>1891</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1899
+ <span class='line'>1892</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1900
+ <span class='line'>1893</span>
1901
+ <span class='line'>1894</span> </span><span class="WHIT"> </span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttributeNS</span><span class="PUNC">(</span><span class="WHIT">
1902
+ <span class='line'>1895</span> </span><span class="WHIT"> </span><span class="KEYW">null</span><span class="PUNC">,</span><span class="WHIT">
1903
+ <span class='line'>1896</span> </span><span class="WHIT"> </span><span class="STRN">"d"</span><span class="PUNC">,</span><span class="WHIT">
1904
+ <span class='line'>1897</span> </span><span class="WHIT"> </span><span class="STRN">"M "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1905
+ <span class='line'>1898</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1906
+ <span class='line'>1899</span> </span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1907
+ <span class='line'>1900</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1908
+ <span class='line'>1901</span> </span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1909
+ <span class='line'>1902</span> </span><span class="WHIT"> </span><span class="STRN">"L "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1910
+ <span class='line'>1903</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1911
1911
  <span class='line'>1904</span> </span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1912
1912
  <span class='line'>1905</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1913
1913
  <span class='line'>1906</span> </span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1914
- <span class='line'>1907</span> </span><span class="WHIT"> </span><span class="STRN">"L "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1915
- <span class='line'>1908</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1914
+ <span class='line'>1907</span> </span><span class="WHIT"> </span><span class="STRN">"M "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1915
+ <span class='line'>1908</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1916
1916
  <span class='line'>1909</span> </span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1917
- <span class='line'>1910</span> </span><span class="WHIT"> </span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1917
+ <span class='line'>1910</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1918
1918
  <span class='line'>1911</span> </span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1919
- <span class='line'>1912</span> </span><span class="WHIT"> </span><span class="STRN">"M "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1919
+ <span class='line'>1912</span> </span><span class="WHIT"> </span><span class="STRN">"L "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1920
1920
  <span class='line'>1913</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1921
1921
  <span class='line'>1914</span> </span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1922
- <span class='line'>1915</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">-</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1923
- <span class='line'>1916</span> </span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1924
- <span class='line'>1917</span> </span><span class="WHIT"> </span><span class="STRN">"L "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1925
- <span class='line'>1918</span> </span><span class="WHIT"> </span><span class="NAME">x</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1926
- <span class='line'>1919</span> </span><span class="WHIT"> </span><span class="STRN">" "</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT">
1927
- <span class='line'>1920</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT">
1928
- <span class='line'>1921</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1929
- <span class='line'>1922</span> </span><span class="WHIT"> </span><span class="NAME">this.updateEllipsePrim</span><span class="PUNC">(</span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">25</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">25</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1930
- <span class='line'>1923</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1931
- <span class='line'>1924</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1932
- <span class='line'>1925</span>
1933
- <span class='line'>1926</span> </span><span class="WHIT"> </span><span class="COMM">/**
1934
- <span class='line'>1927</span> * Walk recursively through the DOM subtree of a node and collect all
1935
- <span class='line'>1928</span> * value attributes together with the id of that node.
1936
- <span class='line'>1929</span> * &lt;b>Attention:&lt;/b> Only values of nodes having a valid id are taken.
1937
- <span class='line'>1930</span> * @param {Node} node root node of DOM subtree that will be searched recursively.
1938
- <span class='line'>1931</span> * @return {Array} Array with entries of the form [id, value]
1939
- <span class='line'>1932</span> * @private
1940
- <span class='line'>1933</span> */</span><span class="WHIT">
1941
- <span class='line'>1934</span> </span><span class="WHIT"> </span><span class="NAME">_getValuesOfDOMElements</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1942
- <span class='line'>1935</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">values</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1943
- <span class='line'>1936</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.nodeType</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1944
- <span class='line'>1937</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.firstChild</span><span class="PUNC">;</span><span class="WHIT">
1945
- <span class='line'>1938</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1946
- <span class='line'>1939</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.id</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">node.value</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1947
- <span class='line'>1940</span> </span><span class="WHIT"> </span><span class="NAME">values.push</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">node.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node.value</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1948
- <span class='line'>1941</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1949
- <span class='line'>1942</span> </span><span class="WHIT"> </span><span class="NAME">values</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">values.concat</span><span class="PUNC">(</span><span class="NAME">this._getValuesOfDOMElements</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1950
- <span class='line'>1943</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.nextSibling</span><span class="PUNC">;</span><span class="WHIT">
1951
- <span class='line'>1944</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1952
- <span class='line'>1945</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1953
- <span class='line'>1946</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">values</span><span class="PUNC">;</span><span class="WHIT">
1954
- <span class='line'>1947</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1955
- <span class='line'>1948</span>
1956
- <span class='line'>1949</span> </span><span class="WHIT"> </span><span class="NAME">_getDataUri</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1957
- <span class='line'>1950</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1922
+ <span class='line'>1915</span> </span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">y</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">d</span><span class="PUNC">)</span><span class="WHIT">
1923
+ <span class='line'>1916</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1924
+ <span class='line'>1917</span> </span><span class="WHIT"> </span><span class="NAME">this.updateEllipsePrim</span><span class="PUNC">(</span><span class="NAME">this.touchpoints</span><span class="PUNC">[</span><span class="NUMB">2</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">pos</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">25</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">25</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1925
+ <span class='line'>1918</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1926
+ <span class='line'>1919</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1927
+ <span class='line'>1920</span>
1928
+ <span class='line'>1921</span> </span><span class="WHIT"> </span><span class="COMM">/**
1929
+ <span class='line'>1922</span> * Walk recursively through the DOM subtree of a node and collect all
1930
+ <span class='line'>1923</span> * value attributes together with the id of that node.
1931
+ <span class='line'>1924</span> * &lt;b>Attention:&lt;/b> Only values of nodes having a valid id are taken.
1932
+ <span class='line'>1925</span> * @param {Node} node root node of DOM subtree that will be searched recursively.
1933
+ <span class='line'>1926</span> * @return {Array} Array with entries of the form [id, value]
1934
+ <span class='line'>1927</span> * @private
1935
+ <span class='line'>1928</span> */</span><span class="WHIT">
1936
+ <span class='line'>1929</span> </span><span class="WHIT"> </span><span class="NAME">_getValuesOfDOMElements</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1937
+ <span class='line'>1930</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">values</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
1938
+ <span class='line'>1931</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.nodeType</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1939
+ <span class='line'>1932</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.firstChild</span><span class="PUNC">;</span><span class="WHIT">
1940
+ <span class='line'>1933</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1941
+ <span class='line'>1934</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">node.id</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">node.value</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1942
+ <span class='line'>1935</span> </span><span class="WHIT"> </span><span class="NAME">values.push</span><span class="PUNC">(</span><span class="PUNC">[</span><span class="NAME">node.id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">node.value</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1943
+ <span class='line'>1936</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1944
+ <span class='line'>1937</span> </span><span class="WHIT"> </span><span class="NAME">values</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">values.concat</span><span class="PUNC">(</span><span class="NAME">this._getValuesOfDOMElements</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1945
+ <span class='line'>1938</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">node.nextSibling</span><span class="PUNC">;</span><span class="WHIT">
1946
+ <span class='line'>1939</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1947
+ <span class='line'>1940</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1948
+ <span class='line'>1941</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="NAME">values</span><span class="PUNC">;</span><span class="WHIT">
1949
+ <span class='line'>1942</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1950
+ <span class='line'>1943</span>
1951
+ <span class='line'>1944</span> </span><span class="WHIT"> </span><span class="NAME">_getDataUri</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">url</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1952
+ <span class='line'>1945</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">image</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1953
+ <span class='line'>1946</span>
1954
+ <span class='line'>1947</span> </span><span class="WHIT"> </span><span class="NAME">image.onload</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1955
+ <span class='line'>1948</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1956
+ <span class='line'>1949</span> </span><span class="WHIT"> </span><span class="NAME">canvas.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.naturalWidth</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// or 'width' if you want a special/scaled size</span><span class="WHIT">
1957
+ <span class='line'>1950</span> </span><span class="WHIT"> </span><span class="NAME">canvas.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.naturalHeight</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// or 'height' if you want a special/scaled size</span><span class="WHIT">
1958
1958
  <span class='line'>1951</span>
1959
- <span class='line'>1952</span> </span><span class="WHIT"> </span><span class="NAME">image.onload</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1960
- <span class='line'>1953</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1961
- <span class='line'>1954</span> </span><span class="WHIT"> </span><span class="NAME">canvas.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.naturalWidth</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// or 'width' if you want a special/scaled size</span><span class="WHIT">
1962
- <span class='line'>1955</span> </span><span class="WHIT"> </span><span class="NAME">canvas.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.naturalHeight</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">// or 'height' if you want a special/scaled size</span><span class="WHIT">
1963
- <span class='line'>1956</span>
1964
- <span class='line'>1957</span> </span><span class="WHIT"> </span><span class="NAME">canvas.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">drawImage</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1965
- <span class='line'>1958</span>
1966
- <span class='line'>1959</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">canvas.toDataURL</span><span class="PUNC">(</span><span class="STRN">"image/png"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1967
- <span class='line'>1960</span> </span><span class="WHIT"> </span><span class="NAME">canvas.remove</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1968
- <span class='line'>1961</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1969
- <span class='line'>1962</span>
1970
- <span class='line'>1963</span> </span><span class="WHIT"> </span><span class="NAME">image.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">;</span><span class="WHIT">
1971
- <span class='line'>1964</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1972
- <span class='line'>1965</span>
1973
- <span class='line'>1966</span> </span><span class="WHIT"> </span><span class="NAME">_getImgDataURL</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">svgRoot</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1974
- <span class='line'>1967</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ctx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
1975
- <span class='line'>1968</span>
1976
- <span class='line'>1969</span> </span><span class="WHIT"> </span><span class="NAME">images</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svgRoot.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"image"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1977
- <span class='line'>1970</span> </span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">images.length</span><span class="PUNC">;</span><span class="WHIT">
1978
- <span class='line'>1971</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1979
- <span class='line'>1972</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1980
- <span class='line'>1973</span> </span><span class="WHIT"> </span><span class="COMM">//img = new Image();</span><span class="WHIT">
1981
- <span class='line'>1974</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1982
- <span class='line'>1975</span> </span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttribute</span><span class="PUNC">(</span><span class="STRN">"crossorigin"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"anonymous"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1983
- <span class='line'>1976</span> </span><span class="WHIT"> </span><span class="COMM">//img.src = images[i].href;</span><span class="WHIT">
1984
- <span class='line'>1977</span> </span><span class="WHIT"> </span><span class="COMM">//img.onload = function() {</span><span class="WHIT">
1985
- <span class='line'>1978</span> </span><span class="WHIT"> </span><span class="COMM">// img.crossOrigin = "anonymous";</span><span class="WHIT">
1986
- <span class='line'>1979</span> </span><span class="WHIT"> </span><span class="NAME">ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvas.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1987
- <span class='line'>1980</span> </span><span class="WHIT"> </span><span class="NAME">canvas.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getAttribute</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1988
- <span class='line'>1981</span> </span><span class="WHIT"> </span><span class="NAME">canvas.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getAttribute</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1989
- <span class='line'>1982</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1990
- <span class='line'>1983</span> </span><span class="WHIT"> </span><span class="NAME">ctx.drawImage</span><span class="PUNC">(</span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">canvas.width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">canvas.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1991
- <span class='line'>1984</span>
1992
- <span class='line'>1985</span> </span><span class="WHIT"> </span><span class="COMM">// If the image is not png, the format must be specified here</span><span class="WHIT">
1993
- <span class='line'>1986</span> </span><span class="WHIT"> </span><span class="NAME">ur</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvas.toDataURL</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1994
- <span class='line'>1987</span> </span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttribute</span><span class="PUNC">(</span><span class="STRN">"xlink:href"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ur</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1995
- <span class='line'>1988</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1996
- <span class='line'>1989</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"CORS problem! Image can not be used"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1997
- <span class='line'>1990</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1998
- <span class='line'>1991</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1999
- <span class='line'>1992</span> </span><span class="WHIT"> </span><span class="COMM">//canvas.remove();</span><span class="WHIT">
2000
- <span class='line'>1993</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2001
- <span class='line'>1994</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
2002
- <span class='line'>1995</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
2003
- <span class='line'>1996</span>
2004
- <span class='line'>1997</span> </span><span class="WHIT"> </span><span class="COMM">/**
2005
- <span class='line'>1998</span> * Return a data URI of the SVG code representing the construction.
2006
- <span class='line'>1999</span> * The SVG code of the construction is base64 encoded. The return string starts
2007
- <span class='line'>2000</span> * with "data:image/svg+xml;base64,...".
2008
- <span class='line'>2001</span> *
2009
- <span class='line'>2002</span> * @param {Boolean} ignoreTexts If true, the foreignObject tag is set to display=none.
2010
- <span class='line'>2003</span> * This is necessary for older versions of Safari. Default: false
2011
- <span class='line'>2004</span> * @returns {String} data URI string
2012
- <span class='line'>2005</span> *
2013
- <span class='line'>2006</span> * @example
2014
- <span class='line'>2007</span> * var A = board.create('point', [2, 2]);
2015
- <span class='line'>2008</span> *
2016
- <span class='line'>2009</span> * var txt = board.renderer.dumpToDataURI(false);
2017
- <span class='line'>2010</span> * // txt consists of a string of the form
2018
- <span class='line'>2011</span> * // data:image/svg+xml;base64,PHN2Zy. base64 encoded SVG..+PC9zdmc+
2019
- <span class='line'>2012</span> * // Behind the comma, there is the base64 encoded SVG code
2020
- <span class='line'>2013</span> * // which is decoded with atob().
2021
- <span class='line'>2014</span> * // The call of decodeURIComponent(escape(...)) is necessary
2022
- <span class='line'>2015</span> * // to handle unicode strings correctly.
2023
- <span class='line'>2016</span> * var ar = txt.split(',');
2024
- <span class='line'>2017</span> * document.getElementById('output').value = decodeURIComponent(escape(atob(ar[1])));
2025
- <span class='line'>2018</span> *
2026
- <span class='line'>2019</span> * &lt;/pre>&lt;div id="JXG1bad4bec-6d08-4ce0-9b7f-d817e8dd762d" class="jxgbox" style="width: 300px; height: 300px;">&lt;/div>
2027
- <span class='line'>2020</span> * &lt;textarea id="output2023" rows="5" cols="50">&lt;/textarea>
2028
- <span class='line'>2021</span> * &lt;script type="text/javascript">
2029
- <span class='line'>2022</span> * (function() {
2030
- <span class='line'>2023</span> * var board = JXG.JSXGraph.initBoard('JXG1bad4bec-6d08-4ce0-9b7f-d817e8dd762d',
2031
- <span class='line'>2024</span> * {boundingbox: [-8, 8, 8,-8], axis: true, showcopyright: false, shownavigation: false});
2032
- <span class='line'>2025</span> * var A = board.create('point', [2, 2]);
2033
- <span class='line'>2026</span> *
2034
- <span class='line'>2027</span> * var txt = board.renderer.dumpToDataURI(false);
2035
- <span class='line'>2028</span> * // txt consists of a string of the form
2036
- <span class='line'>2029</span> * // data:image/svg+xml;base64,PHN2Zy. base64 encoded SVG..+PC9zdmc+
2037
- <span class='line'>2030</span> * // Behind the comma, there is the base64 encoded SVG code
2038
- <span class='line'>2031</span> * // which is decoded with atob().
2039
- <span class='line'>2032</span> * // The call of decodeURIComponent(escape(...)) is necessary
2040
- <span class='line'>2033</span> * // to handle unicode strings correctly.
2041
- <span class='line'>2034</span> * var ar = txt.split(',');
2042
- <span class='line'>2035</span> * document.getElementById('output2023').value = decodeURIComponent(escape(atob(ar[1])));
2043
- <span class='line'>2036</span> *
2044
- <span class='line'>2037</span> * })();
2045
- <span class='line'>2038</span> *
2046
- <span class='line'>2039</span> * &lt;/script>&lt;pre>
2047
- <span class='line'>2040</span> *
2048
- <span class='line'>2041</span> */</span><span class="WHIT">
2049
- <span class='line'>2042</span> </span><span class="WHIT"> </span><span class="NAME">dumpToDataURI</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2050
- <span class='line'>2043</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svgRoot</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.svgRoot</span><span class="PUNC">,</span><span class="WHIT">
2051
- <span class='line'>2044</span> </span><span class="WHIT"> </span><span class="NAME">btoa</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window.btoa</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Base64.encode</span><span class="PUNC">,</span><span class="WHIT">
2052
- <span class='line'>2045</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">,</span><span class="WHIT">
2053
- <span class='line'>2046</span> </span><span class="WHIT"> </span><span class="NAME">values</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
2054
- <span class='line'>2047</span>
2055
- <span class='line'>2048</span> </span><span class="WHIT"> </span><span class="COMM">// Move all HTML tags (beside the SVG root) of the container</span><span class="WHIT">
2056
- <span class='line'>2049</span> </span><span class="WHIT"> </span><span class="COMM">// to the foreignObject element inside of the svgRoot node</span><span class="WHIT">
2057
- <span class='line'>2050</span> </span><span class="WHIT"> </span><span class="COMM">// Problem:</span><span class="WHIT">
2058
- <span class='line'>2051</span> </span><span class="WHIT"> </span><span class="COMM">// input values are not copied. This can be verified by looking at an innerHTML output</span><span class="WHIT">
2059
- <span class='line'>2052</span> </span><span class="WHIT"> </span><span class="COMM">// of an input element. Therefore, we do it "by hand".</span><span class="WHIT">
2060
- <span class='line'>2053</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.container.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">this.foreignObjLayer</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2061
- <span class='line'>2054</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2062
- <span class='line'>2055</span> </span><span class="WHIT"> </span><span class="NAME">this.foreignObjLayer.setAttribute</span><span class="PUNC">(</span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"inline"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2063
- <span class='line'>2056</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">svgRoot.nextSibling</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2064
- <span class='line'>2057</span> </span><span class="WHIT"> </span><span class="COMM">// Copy all value attributes</span><span class="WHIT">
2065
- <span class='line'>2058</span> </span><span class="WHIT"> </span><span class="NAME">values</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">values.concat</span><span class="PUNC">(</span><span class="NAME">this._getValuesOfDOMElements</span><span class="PUNC">(</span><span class="NAME">svgRoot.nextSibling</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2066
- <span class='line'>2059</span> </span><span class="WHIT"> </span><span class="NAME">this.foreignObjLayer.appendChild</span><span class="PUNC">(</span><span class="NAME">svgRoot.nextSibling</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2067
- <span class='line'>2060</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2068
- <span class='line'>2061</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2069
- <span class='line'>2062</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2070
- <span class='line'>2063</span>
2071
- <span class='line'>2064</span> </span><span class="WHIT"> </span><span class="NAME">this._getImgDataURL</span><span class="PUNC">(</span><span class="NAME">svgRoot</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2072
- <span class='line'>2065</span>
2073
- <span class='line'>2066</span> </span><span class="WHIT"> </span><span class="COMM">// Convert the SVG graphic into a string containing SVG code</span><span class="WHIT">
2074
- <span class='line'>2067</span> </span><span class="WHIT"> </span><span class="NAME">svgRoot.setAttribute</span><span class="PUNC">(</span><span class="STRN">"xmlns"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"http://www.w3.org/2000/svg"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2075
- <span class='line'>2068</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">XMLSerializer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">serializeToString</span><span class="PUNC">(</span><span class="NAME">svgRoot</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2076
- <span class='line'>2069</span>
2077
- <span class='line'>2070</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ignoreTexts</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2078
- <span class='line'>2071</span> </span><span class="WHIT"> </span><span class="COMM">// Handle SVG texts</span><span class="WHIT">
2079
- <span class='line'>2072</span> </span><span class="WHIT"> </span><span class="COMM">// Insert all value attributes back into the svg string</span><span class="WHIT">
2080
- <span class='line'>2073</span> </span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">values.length</span><span class="PUNC">;</span><span class="WHIT">
2081
- <span class='line'>2074</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2082
- <span class='line'>2075</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.replace</span><span class="PUNC">(</span><span class="WHIT">
2083
- <span class='line'>2076</span> </span><span class="WHIT"> </span><span class="STRN">'id="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">values</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'"'</span><span class="PUNC">,</span><span class="WHIT">
2084
- <span class='line'>2077</span> </span><span class="WHIT"> </span><span class="STRN">'id="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">values</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'" value="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">values</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'"'</span><span class="WHIT">
2085
- <span class='line'>2078</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2086
- <span class='line'>2079</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2087
- <span class='line'>2080</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1959
+ <span class='line'>1952</span> </span><span class="WHIT"> </span><span class="NAME">canvas.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">drawImage</span><span class="PUNC">(</span><span class="KEYW">this</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1960
+ <span class='line'>1953</span>
1961
+ <span class='line'>1954</span> </span><span class="WHIT"> </span><span class="NAME">callback</span><span class="PUNC">(</span><span class="NAME">canvas.toDataURL</span><span class="PUNC">(</span><span class="STRN">"image/png"</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1962
+ <span class='line'>1955</span> </span><span class="WHIT"> </span><span class="NAME">canvas.remove</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1963
+ <span class='line'>1956</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
1964
+ <span class='line'>1957</span>
1965
+ <span class='line'>1958</span> </span><span class="WHIT"> </span><span class="NAME">image.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">url</span><span class="PUNC">;</span><span class="WHIT">
1966
+ <span class='line'>1959</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1967
+ <span class='line'>1960</span>
1968
+ <span class='line'>1961</span> </span><span class="WHIT"> </span><span class="NAME">_getImgDataURL</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">svgRoot</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1969
+ <span class='line'>1962</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ctx</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ur</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">;</span><span class="WHIT">
1970
+ <span class='line'>1963</span>
1971
+ <span class='line'>1964</span> </span><span class="WHIT"> </span><span class="NAME">images</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svgRoot.getElementsByTagName</span><span class="PUNC">(</span><span class="STRN">"image"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1972
+ <span class='line'>1965</span> </span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">images.length</span><span class="PUNC">;</span><span class="WHIT">
1973
+ <span class='line'>1966</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1974
+ <span class='line'>1967</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">document.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1975
+ <span class='line'>1968</span> </span><span class="WHIT"> </span><span class="COMM">//img = new Image();</span><span class="WHIT">
1976
+ <span class='line'>1969</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1977
+ <span class='line'>1970</span> </span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttribute</span><span class="PUNC">(</span><span class="STRN">"crossorigin"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"anonymous"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1978
+ <span class='line'>1971</span> </span><span class="WHIT"> </span><span class="COMM">//img.src = images[i].href;</span><span class="WHIT">
1979
+ <span class='line'>1972</span> </span><span class="WHIT"> </span><span class="COMM">//img.onload = function() {</span><span class="WHIT">
1980
+ <span class='line'>1973</span> </span><span class="WHIT"> </span><span class="COMM">// img.crossOrigin = "anonymous";</span><span class="WHIT">
1981
+ <span class='line'>1974</span> </span><span class="WHIT"> </span><span class="NAME">ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvas.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1982
+ <span class='line'>1975</span> </span><span class="WHIT"> </span><span class="NAME">canvas.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getAttribute</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1983
+ <span class='line'>1976</span> </span><span class="WHIT"> </span><span class="NAME">canvas.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">getAttribute</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1984
+ <span class='line'>1977</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1985
+ <span class='line'>1978</span> </span><span class="WHIT"> </span><span class="NAME">ctx.drawImage</span><span class="PUNC">(</span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">canvas.width</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">canvas.height</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1986
+ <span class='line'>1979</span>
1987
+ <span class='line'>1980</span> </span><span class="WHIT"> </span><span class="COMM">// If the image is not png, the format must be specified here</span><span class="WHIT">
1988
+ <span class='line'>1981</span> </span><span class="WHIT"> </span><span class="NAME">ur</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvas.toDataURL</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1989
+ <span class='line'>1982</span> </span><span class="WHIT"> </span><span class="NAME">images</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">.</span><span class="NAME">setAttribute</span><span class="PUNC">(</span><span class="STRN">"xlink:href"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ur</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1990
+ <span class='line'>1983</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
1991
+ <span class='line'>1984</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"CORS problem! Image can not be used"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">err</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
1992
+ <span class='line'>1985</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1993
+ <span class='line'>1986</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1994
+ <span class='line'>1987</span> </span><span class="WHIT"> </span><span class="COMM">//canvas.remove();</span><span class="WHIT">
1995
+ <span class='line'>1988</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
1996
+ <span class='line'>1989</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
1997
+ <span class='line'>1990</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
1998
+ <span class='line'>1991</span>
1999
+ <span class='line'>1992</span> </span><span class="WHIT"> </span><span class="COMM">/**
2000
+ <span class='line'>1993</span> * Return a data URI of the SVG code representing the construction.
2001
+ <span class='line'>1994</span> * The SVG code of the construction is base64 encoded. The return string starts
2002
+ <span class='line'>1995</span> * with "data:image/svg+xml;base64,...".
2003
+ <span class='line'>1996</span> *
2004
+ <span class='line'>1997</span> * @param {Boolean} ignoreTexts If true, the foreignObject tag is set to display=none.
2005
+ <span class='line'>1998</span> * This is necessary for older versions of Safari. Default: false
2006
+ <span class='line'>1999</span> * @returns {String} data URI string
2007
+ <span class='line'>2000</span> *
2008
+ <span class='line'>2001</span> * @example
2009
+ <span class='line'>2002</span> * var A = board.create('point', [2, 2]);
2010
+ <span class='line'>2003</span> *
2011
+ <span class='line'>2004</span> * var txt = board.renderer.dumpToDataURI(false);
2012
+ <span class='line'>2005</span> * // txt consists of a string of the form
2013
+ <span class='line'>2006</span> * // data:image/svg+xml;base64,PHN2Zy. base64 encoded SVG..+PC9zdmc+
2014
+ <span class='line'>2007</span> * // Behind the comma, there is the base64 encoded SVG code
2015
+ <span class='line'>2008</span> * // which is decoded with atob().
2016
+ <span class='line'>2009</span> * // The call of decodeURIComponent(escape(...)) is necessary
2017
+ <span class='line'>2010</span> * // to handle unicode strings correctly.
2018
+ <span class='line'>2011</span> * var ar = txt.split(',');
2019
+ <span class='line'>2012</span> * document.getElementById('output').value = decodeURIComponent(escape(atob(ar[1])));
2020
+ <span class='line'>2013</span> *
2021
+ <span class='line'>2014</span> * &lt;/pre>&lt;div id="JXG1bad4bec-6d08-4ce0-9b7f-d817e8dd762d" class="jxgbox" style="width: 300px; height: 300px;">&lt;/div>
2022
+ <span class='line'>2015</span> * &lt;textarea id="output2023" rows="5" cols="50">&lt;/textarea>
2023
+ <span class='line'>2016</span> * &lt;script type="text/javascript">
2024
+ <span class='line'>2017</span> * (function() {
2025
+ <span class='line'>2018</span> * var board = JXG.JSXGraph.initBoard('JXG1bad4bec-6d08-4ce0-9b7f-d817e8dd762d',
2026
+ <span class='line'>2019</span> * {boundingbox: [-8, 8, 8,-8], axis: true, showcopyright: false, shownavigation: false});
2027
+ <span class='line'>2020</span> * var A = board.create('point', [2, 2]);
2028
+ <span class='line'>2021</span> *
2029
+ <span class='line'>2022</span> * var txt = board.renderer.dumpToDataURI(false);
2030
+ <span class='line'>2023</span> * // txt consists of a string of the form
2031
+ <span class='line'>2024</span> * // data:image/svg+xml;base64,PHN2Zy. base64 encoded SVG..+PC9zdmc+
2032
+ <span class='line'>2025</span> * // Behind the comma, there is the base64 encoded SVG code
2033
+ <span class='line'>2026</span> * // which is decoded with atob().
2034
+ <span class='line'>2027</span> * // The call of decodeURIComponent(escape(...)) is necessary
2035
+ <span class='line'>2028</span> * // to handle unicode strings correctly.
2036
+ <span class='line'>2029</span> * var ar = txt.split(',');
2037
+ <span class='line'>2030</span> * document.getElementById('output2023').value = decodeURIComponent(escape(atob(ar[1])));
2038
+ <span class='line'>2031</span> *
2039
+ <span class='line'>2032</span> * })();
2040
+ <span class='line'>2033</span> *
2041
+ <span class='line'>2034</span> * &lt;/script>&lt;pre>
2042
+ <span class='line'>2035</span> *
2043
+ <span class='line'>2036</span> */</span><span class="WHIT">
2044
+ <span class='line'>2037</span> </span><span class="WHIT"> </span><span class="NAME">dumpToDataURI</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2045
+ <span class='line'>2038</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svgRoot</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.svgRoot</span><span class="PUNC">,</span><span class="WHIT">
2046
+ <span class='line'>2039</span> </span><span class="WHIT"> </span><span class="NAME">btoa</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">window.btoa</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">Base64.encode</span><span class="PUNC">,</span><span class="WHIT">
2047
+ <span class='line'>2040</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">,</span><span class="WHIT">
2048
+ <span class='line'>2041</span> </span><span class="WHIT"> </span><span class="NAME">values</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">;</span><span class="WHIT">
2049
+ <span class='line'>2042</span>
2050
+ <span class='line'>2043</span> </span><span class="WHIT"> </span><span class="COMM">// Move all HTML tags (beside the SVG root) of the container</span><span class="WHIT">
2051
+ <span class='line'>2044</span> </span><span class="WHIT"> </span><span class="COMM">// to the foreignObject element inside of the svgRoot node</span><span class="WHIT">
2052
+ <span class='line'>2045</span> </span><span class="WHIT"> </span><span class="COMM">// Problem:</span><span class="WHIT">
2053
+ <span class='line'>2046</span> </span><span class="WHIT"> </span><span class="COMM">// input values are not copied. This can be verified by looking at an innerHTML output</span><span class="WHIT">
2054
+ <span class='line'>2047</span> </span><span class="WHIT"> </span><span class="COMM">// of an input element. Therefore, we do it "by hand".</span><span class="WHIT">
2055
+ <span class='line'>2048</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.container.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">this.foreignObjLayer</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2056
+ <span class='line'>2049</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2057
+ <span class='line'>2050</span> </span><span class="WHIT"> </span><span class="NAME">this.foreignObjLayer.setAttribute</span><span class="PUNC">(</span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"inline"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2058
+ <span class='line'>2051</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">svgRoot.nextSibling</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2059
+ <span class='line'>2052</span> </span><span class="WHIT"> </span><span class="COMM">// Copy all value attributes</span><span class="WHIT">
2060
+ <span class='line'>2053</span> </span><span class="WHIT"> </span><span class="NAME">values</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">values.concat</span><span class="PUNC">(</span><span class="NAME">this._getValuesOfDOMElements</span><span class="PUNC">(</span><span class="NAME">svgRoot.nextSibling</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2061
+ <span class='line'>2054</span> </span><span class="WHIT"> </span><span class="NAME">this.foreignObjLayer.appendChild</span><span class="PUNC">(</span><span class="NAME">svgRoot.nextSibling</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2062
+ <span class='line'>2055</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2063
+ <span class='line'>2056</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2064
+ <span class='line'>2057</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2065
+ <span class='line'>2058</span>
2066
+ <span class='line'>2059</span> </span><span class="WHIT"> </span><span class="NAME">this._getImgDataURL</span><span class="PUNC">(</span><span class="NAME">svgRoot</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2067
+ <span class='line'>2060</span>
2068
+ <span class='line'>2061</span> </span><span class="WHIT"> </span><span class="COMM">// Convert the SVG graphic into a string containing SVG code</span><span class="WHIT">
2069
+ <span class='line'>2062</span> </span><span class="WHIT"> </span><span class="NAME">svgRoot.setAttribute</span><span class="PUNC">(</span><span class="STRN">"xmlns"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"http://www.w3.org/2000/svg"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2070
+ <span class='line'>2063</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">XMLSerializer</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">serializeToString</span><span class="PUNC">(</span><span class="NAME">svgRoot</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2071
+ <span class='line'>2064</span>
2072
+ <span class='line'>2065</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">ignoreTexts</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2073
+ <span class='line'>2066</span> </span><span class="WHIT"> </span><span class="COMM">// Handle SVG texts</span><span class="WHIT">
2074
+ <span class='line'>2067</span> </span><span class="WHIT"> </span><span class="COMM">// Insert all value attributes back into the svg string</span><span class="WHIT">
2075
+ <span class='line'>2068</span> </span><span class="WHIT"> </span><span class="NAME">len</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">values.length</span><span class="PUNC">;</span><span class="WHIT">
2076
+ <span class='line'>2069</span> </span><span class="WHIT"> </span><span class="KEYW">for</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="WHIT"> </span><span class="PUNC">&lt;</span><span class="WHIT"> </span><span class="NAME">len</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="NAME">i</span><span class="PUNC">++</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2077
+ <span class='line'>2070</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.replace</span><span class="PUNC">(</span><span class="WHIT">
2078
+ <span class='line'>2071</span> </span><span class="WHIT"> </span><span class="STRN">'id="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">values</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'"'</span><span class="PUNC">,</span><span class="WHIT">
2079
+ <span class='line'>2072</span> </span><span class="WHIT"> </span><span class="STRN">'id="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">values</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NUMB">0</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'" value="'</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">values</span><span class="PUNC">[</span><span class="NAME">i</span><span class="PUNC">]</span><span class="PUNC">[</span><span class="NUMB">1</span><span class="PUNC">]</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">'"'</span><span class="WHIT">
2080
+ <span class='line'>2073</span> </span><span class="WHIT"> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2081
+ <span class='line'>2074</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2082
+ <span class='line'>2075</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2083
+ <span class='line'>2076</span>
2084
+ <span class='line'>2077</span> </span><span class="WHIT"> </span><span class="COMM">// if (false) {</span><span class="WHIT">
2085
+ <span class='line'>2078</span> </span><span class="WHIT"> </span><span class="COMM">// // Debug: use example svg image</span><span class="WHIT">
2086
+ <span class='line'>2079</span> </span><span class="WHIT"> </span><span class="COMM">// svg = '&lt;svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="220" height="220">&lt;rect width="66" height="30" x="21" y="32" stroke="#204a87" stroke-width="2" fill="none" />&lt;/svg>';</span><span class="WHIT">
2087
+ <span class='line'>2080</span> </span><span class="WHIT"> </span><span class="COMM">// }</span><span class="WHIT">
2088
2088
  <span class='line'>2081</span>
2089
- <span class='line'>2082</span> </span><span class="WHIT"> </span><span class="COMM">// if (false) {</span><span class="WHIT">
2090
- <span class='line'>2083</span> </span><span class="WHIT"> </span><span class="COMM">// // Debug: use example svg image</span><span class="WHIT">
2091
- <span class='line'>2084</span> </span><span class="WHIT"> </span><span class="COMM">// svg = '&lt;svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="220" height="220">&lt;rect width="66" height="30" x="21" y="32" stroke="#204a87" stroke-width="2" fill="none" />&lt;/svg>';</span><span class="WHIT">
2092
- <span class='line'>2085</span> </span><span class="WHIT"> </span><span class="COMM">// }</span><span class="WHIT">
2089
+ <span class='line'>2082</span> </span><span class="WHIT"> </span><span class="COMM">// In IE we have to remove the namespace again.</span><span class="WHIT">
2090
+ <span class='line'>2083</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">svg.match</span><span class="PUNC">(</span><span class="REGX">/xmlns="http:\/\/www.w3.org\/2000\/svg"/g</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2091
+ <span class='line'>2084</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.replace</span><span class="PUNC">(</span><span class="REGX">/xmlns="http:\/\/www.w3.org\/2000\/svg"/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2092
+ <span class='line'>2085</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2093
2093
  <span class='line'>2086</span>
2094
- <span class='line'>2087</span> </span><span class="WHIT"> </span><span class="COMM">// In IE we have to remove the namespace again.</span><span class="WHIT">
2095
- <span class='line'>2088</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">(</span><span class="NAME">svg.match</span><span class="PUNC">(</span><span class="REGX">/xmlns="http:\/\/www.w3.org\/2000\/svg"/g</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="PUNC">[</span><span class="PUNC">]</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">length</span><span class="WHIT"> </span><span class="PUNC">></span><span class="WHIT"> </span><span class="NUMB">1</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2096
- <span class='line'>2089</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.replace</span><span class="PUNC">(</span><span class="REGX">/xmlns="http:\/\/www.w3.org\/2000\/svg"/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2097
- <span class='line'>2090</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2094
+ <span class='line'>2087</span> </span><span class="WHIT"> </span><span class="COMM">// Safari fails if the svg string contains a "&nbsp;"</span><span class="WHIT">
2095
+ <span class='line'>2088</span> </span><span class="WHIT"> </span><span class="COMM">// Obsolete with Safari 12+</span><span class="WHIT">
2096
+ <span class='line'>2089</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.replace</span><span class="PUNC">(</span><span class="REGX">/&nbsp;/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2097
+ <span class='line'>2090</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.replace</span><span class="PUNC">(</span><span class="REGX">/url\(&quot;(.*)&quot;\)/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"url($1)"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2098
2098
  <span class='line'>2091</span>
2099
- <span class='line'>2092</span> </span><span class="WHIT"> </span><span class="COMM">// Safari fails if the svg string contains a "&nbsp;"</span><span class="WHIT">
2100
- <span class='line'>2093</span> </span><span class="WHIT"> </span><span class="COMM">// Obsolete with Safari 12+</span><span class="WHIT">
2101
- <span class='line'>2094</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.replace</span><span class="PUNC">(</span><span class="REGX">/&nbsp;/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">" "</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2102
- <span class='line'>2095</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg.replace</span><span class="PUNC">(</span><span class="REGX">/url\(&quot;(.*)&quot;\)/g</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"url($1)"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2103
- <span class='line'>2096</span>
2104
- <span class='line'>2097</span> </span><span class="WHIT"> </span><span class="COMM">// Move all HTML tags back from</span><span class="WHIT">
2105
- <span class='line'>2098</span> </span><span class="WHIT"> </span><span class="COMM">// the foreignObject element to the container</span><span class="WHIT">
2106
- <span class='line'>2099</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">this.foreignObjLayer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.foreignObjLayer.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2107
- <span class='line'>2100</span> </span><span class="WHIT"> </span><span class="COMM">// Restore all HTML elements</span><span class="WHIT">
2108
- <span class='line'>2101</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.foreignObjLayer.firstChild</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2109
- <span class='line'>2102</span> </span><span class="WHIT"> </span><span class="NAME">this.container.appendChild</span><span class="PUNC">(</span><span class="NAME">this.foreignObjLayer.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2110
- <span class='line'>2103</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2111
- <span class='line'>2104</span> </span><span class="WHIT"> </span><span class="NAME">this.foreignObjLayer.setAttribute</span><span class="PUNC">(</span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2112
- <span class='line'>2105</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2113
- <span class='line'>2106</span>
2114
- <span class='line'>2107</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"data:image/svg+xml;base64,"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">btoa</span><span class="PUNC">(</span><span class="NAME">unescape</span><span class="PUNC">(</span><span class="NAME">encodeURIComponent</span><span class="PUNC">(</span><span class="NAME">svg</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2115
- <span class='line'>2108</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
2116
- <span class='line'>2109</span>
2117
- <span class='line'>2110</span> </span><span class="WHIT"> </span><span class="COMM">/**
2118
- <span class='line'>2111</span> * Convert the SVG construction into an HTML canvas image.
2119
- <span class='line'>2112</span> * This works for all SVG supporting browsers. Implemented as Promise.
2120
- <span class='line'>2113</span> * &lt;p>
2121
- <span class='line'>2114</span> * Might fail if any text element or foreign object element contains SVG. This
2122
- <span class='line'>2115</span> * is the case e.g. for the default fullscreen symbol.
2123
- <span class='line'>2116</span> * &lt;p>
2124
- <span class='line'>2117</span> * For IE, it is realized as function.
2125
- <span class='line'>2118</span> * It works from version 9, with the exception that HTML texts
2126
- <span class='line'>2119</span> * are ignored on IE. The drawing is done with a delay of
2127
- <span class='line'>2120</span> * 200 ms. Otherwise there would be problems with IE.
2128
- <span class='line'>2121</span> *
2129
- <span class='line'>2122</span> * @param {String} canvasId Id of an HTML canvas element
2130
- <span class='line'>2123</span> * @param {Number} w Width in pixel of the dumped image, i.e. of the canvas tag.
2131
- <span class='line'>2124</span> * @param {Number} h Height in pixel of the dumped image, i.e. of the canvas tag.
2132
- <span class='line'>2125</span> * @param {Boolean} ignoreTexts If true, the foreignObject tag is taken out from the SVG root.
2133
- <span class='line'>2126</span> * This is necessary for older versions of Safari. Default: false
2134
- <span class='line'>2127</span> * @returns {Promise} Promise object
2135
- <span class='line'>2128</span> *
2136
- <span class='line'>2129</span> * @example
2137
- <span class='line'>2130</span> * board.renderer.dumpToCanvas('canvas').then(function() { console.log('done'); });
2138
- <span class='line'>2131</span> *
2139
- <span class='line'>2132</span> * @example
2140
- <span class='line'>2133</span> * // IE 11 example:
2141
- <span class='line'>2134</span> * board.renderer.dumpToCanvas('canvas');
2142
- <span class='line'>2135</span> * setTimeout(function() { console.log('done'); }, 400);
2143
- <span class='line'>2136</span> */</span><span class="WHIT">
2144
- <span class='line'>2137</span> </span><span class="WHIT"> </span><span class="NAME">dumpToCanvas</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">canvasId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2145
- <span class='line'>2138</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tmpImg</span><span class="PUNC">,</span><span class="WHIT">
2146
- <span class='line'>2139</span> </span><span class="WHIT"> </span><span class="NAME">cv</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ctx</span><span class="PUNC">,</span><span class="WHIT">
2147
- <span class='line'>2140</span> </span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.ownerDocument</span><span class="PUNC">;</span><span class="WHIT">
2148
- <span class='line'>2141</span>
2149
- <span class='line'>2142</span> </span><span class="WHIT"> </span><span class="COMM">// Prepare the canvas element</span><span class="WHIT">
2150
- <span class='line'>2143</span> </span><span class="WHIT"> </span><span class="NAME">cv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.getElementById</span><span class="PUNC">(</span><span class="NAME">canvasId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2099
+ <span class='line'>2092</span> </span><span class="WHIT"> </span><span class="COMM">// Move all HTML tags back from</span><span class="WHIT">
2100
+ <span class='line'>2093</span> </span><span class="WHIT"> </span><span class="COMM">// the foreignObject element to the container</span><span class="WHIT">
2101
+ <span class='line'>2094</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">this.foreignObjLayer</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">this.foreignObjLayer.hasChildNodes</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2102
+ <span class='line'>2095</span> </span><span class="WHIT"> </span><span class="COMM">// Restore all HTML elements</span><span class="WHIT">
2103
+ <span class='line'>2096</span> </span><span class="WHIT"> </span><span class="KEYW">while</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.foreignObjLayer.firstChild</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2104
+ <span class='line'>2097</span> </span><span class="WHIT"> </span><span class="NAME">this.container.appendChild</span><span class="PUNC">(</span><span class="NAME">this.foreignObjLayer.firstChild</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2105
+ <span class='line'>2098</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2106
+ <span class='line'>2099</span> </span><span class="WHIT"> </span><span class="NAME">this.foreignObjLayer.setAttribute</span><span class="PUNC">(</span><span class="STRN">"display"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2107
+ <span class='line'>2100</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2108
+ <span class='line'>2101</span>
2109
+ <span class='line'>2102</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="STRN">"data:image/svg+xml;base64,"</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NAME">btoa</span><span class="PUNC">(</span><span class="NAME">unescape</span><span class="PUNC">(</span><span class="NAME">encodeURIComponent</span><span class="PUNC">(</span><span class="NAME">svg</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2110
+ <span class='line'>2103</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
2111
+ <span class='line'>2104</span>
2112
+ <span class='line'>2105</span> </span><span class="WHIT"> </span><span class="COMM">/**
2113
+ <span class='line'>2106</span> * Convert the SVG construction into an HTML canvas image.
2114
+ <span class='line'>2107</span> * This works for all SVG supporting browsers. Implemented as Promise.
2115
+ <span class='line'>2108</span> * &lt;p>
2116
+ <span class='line'>2109</span> * Might fail if any text element or foreign object element contains SVG. This
2117
+ <span class='line'>2110</span> * is the case e.g. for the default fullscreen symbol.
2118
+ <span class='line'>2111</span> * &lt;p>
2119
+ <span class='line'>2112</span> * For IE, it is realized as function.
2120
+ <span class='line'>2113</span> * It works from version 9, with the exception that HTML texts
2121
+ <span class='line'>2114</span> * are ignored on IE. The drawing is done with a delay of
2122
+ <span class='line'>2115</span> * 200 ms. Otherwise there would be problems with IE.
2123
+ <span class='line'>2116</span> *
2124
+ <span class='line'>2117</span> * @param {String} canvasId Id of an HTML canvas element
2125
+ <span class='line'>2118</span> * @param {Number} w Width in pixel of the dumped image, i.e. of the canvas tag.
2126
+ <span class='line'>2119</span> * @param {Number} h Height in pixel of the dumped image, i.e. of the canvas tag.
2127
+ <span class='line'>2120</span> * @param {Boolean} ignoreTexts If true, the foreignObject tag is taken out from the SVG root.
2128
+ <span class='line'>2121</span> * This is necessary for older versions of Safari. Default: false
2129
+ <span class='line'>2122</span> * @returns {Promise} Promise object
2130
+ <span class='line'>2123</span> *
2131
+ <span class='line'>2124</span> * @example
2132
+ <span class='line'>2125</span> * board.renderer.dumpToCanvas('canvas').then(function() { console.log('done'); });
2133
+ <span class='line'>2126</span> *
2134
+ <span class='line'>2127</span> * @example
2135
+ <span class='line'>2128</span> * // IE 11 example:
2136
+ <span class='line'>2129</span> * board.renderer.dumpToCanvas('canvas');
2137
+ <span class='line'>2130</span> * setTimeout(function() { console.log('done'); }, 400);
2138
+ <span class='line'>2131</span> */</span><span class="WHIT">
2139
+ <span class='line'>2132</span> </span><span class="WHIT"> </span><span class="NAME">dumpToCanvas</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">canvasId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2140
+ <span class='line'>2133</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">svg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">tmpImg</span><span class="PUNC">,</span><span class="WHIT">
2141
+ <span class='line'>2134</span> </span><span class="WHIT"> </span><span class="NAME">cv</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ctx</span><span class="PUNC">,</span><span class="WHIT">
2142
+ <span class='line'>2135</span> </span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.ownerDocument</span><span class="PUNC">;</span><span class="WHIT">
2143
+ <span class='line'>2136</span>
2144
+ <span class='line'>2137</span> </span><span class="WHIT"> </span><span class="COMM">// Prepare the canvas element</span><span class="WHIT">
2145
+ <span class='line'>2138</span> </span><span class="WHIT"> </span><span class="NAME">cv</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.getElementById</span><span class="PUNC">(</span><span class="NAME">canvasId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2146
+ <span class='line'>2139</span>
2147
+ <span class='line'>2140</span> </span><span class="WHIT"> </span><span class="COMM">// Clear the canvas</span><span class="WHIT">
2148
+ <span class='line'>2141</span> </span><span class="WHIT"> </span><span class="COMM">/* eslint-disable no-self-assign */</span><span class="WHIT">
2149
+ <span class='line'>2142</span> </span><span class="WHIT"> </span><span class="NAME">cv.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cv.width</span><span class="PUNC">;</span><span class="WHIT">
2150
+ <span class='line'>2143</span> </span><span class="WHIT"> </span><span class="COMM">/* eslint-enable no-self-assign */</span><span class="WHIT">
2151
2151
  <span class='line'>2144</span>
2152
- <span class='line'>2145</span> </span><span class="WHIT"> </span><span class="COMM">// Clear the canvas</span><span class="WHIT">
2153
- <span class='line'>2146</span> </span><span class="WHIT"> </span><span class="COMM">/* eslint-disable no-self-assign */</span><span class="WHIT">
2154
- <span class='line'>2147</span> </span><span class="WHIT"> </span><span class="NAME">cv.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cv.width</span><span class="PUNC">;</span><span class="WHIT">
2155
- <span class='line'>2148</span> </span><span class="WHIT"> </span><span class="COMM">/* eslint-enable no-self-assign */</span><span class="WHIT">
2156
- <span class='line'>2149</span>
2157
- <span class='line'>2150</span> </span><span class="WHIT"> </span><span class="NAME">ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cv.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2158
- <span class='line'>2151</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2159
- <span class='line'>2152</span> </span><span class="WHIT"> </span><span class="NAME">cv.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">w</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2160
- <span class='line'>2153</span> </span><span class="WHIT"> </span><span class="NAME">cv.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2161
- <span class='line'>2154</span> </span><span class="WHIT"> </span><span class="COMM">// Scale twice the CSS size to make the image crisp</span><span class="WHIT">
2162
- <span class='line'>2155</span> </span><span class="WHIT"> </span><span class="COMM">// cv.setAttribute('width', 2 * parseFloat(wOrg));</span><span class="WHIT">
2163
- <span class='line'>2156</span> </span><span class="WHIT"> </span><span class="COMM">// cv.setAttribute('height', 2 * parseFloat(hOrg));</span><span class="WHIT">
2164
- <span class='line'>2157</span> </span><span class="WHIT"> </span><span class="COMM">// ctx.scale(2 * wOrg / w, 2 * hOrg / h);</span><span class="WHIT">
2165
- <span class='line'>2158</span> </span><span class="WHIT"> </span><span class="NAME">cv.setAttribute</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">w</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2166
- <span class='line'>2159</span> </span><span class="WHIT"> </span><span class="NAME">cv.setAttribute</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2167
- <span class='line'>2160</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2152
+ <span class='line'>2145</span> </span><span class="WHIT"> </span><span class="NAME">ctx</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">cv.getContext</span><span class="PUNC">(</span><span class="STRN">"2d"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2153
+ <span class='line'>2146</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">&&</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">!==</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2154
+ <span class='line'>2147</span> </span><span class="WHIT"> </span><span class="NAME">cv.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">w</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2155
+ <span class='line'>2148</span> </span><span class="WHIT"> </span><span class="NAME">cv.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2156
+ <span class='line'>2149</span> </span><span class="WHIT"> </span><span class="COMM">// Scale twice the CSS size to make the image crisp</span><span class="WHIT">
2157
+ <span class='line'>2150</span> </span><span class="WHIT"> </span><span class="COMM">// cv.setAttribute('width', 2 * parseFloat(wOrg));</span><span class="WHIT">
2158
+ <span class='line'>2151</span> </span><span class="WHIT"> </span><span class="COMM">// cv.setAttribute('height', 2 * parseFloat(hOrg));</span><span class="WHIT">
2159
+ <span class='line'>2152</span> </span><span class="WHIT"> </span><span class="COMM">// ctx.scale(2 * wOrg / w, 2 * hOrg / h);</span><span class="WHIT">
2160
+ <span class='line'>2153</span> </span><span class="WHIT"> </span><span class="NAME">cv.setAttribute</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">w</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2161
+ <span class='line'>2154</span> </span><span class="WHIT"> </span><span class="NAME">cv.setAttribute</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">parseFloat</span><span class="PUNC">(</span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2162
+ <span class='line'>2155</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2163
+ <span class='line'>2156</span>
2164
+ <span class='line'>2157</span> </span><span class="WHIT"> </span><span class="COMM">// Display the SVG string as data-uri in an HTML img.</span><span class="WHIT">
2165
+ <span class='line'>2158</span> </span><span class="WHIT"> </span><span class="NAME">tmpImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2166
+ <span class='line'>2159</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.dumpToDataURI</span><span class="PUNC">(</span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2167
+ <span class='line'>2160</span> </span><span class="WHIT"> </span><span class="NAME">tmpImg.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg</span><span class="PUNC">;</span><span class="WHIT">
2168
2168
  <span class='line'>2161</span>
2169
- <span class='line'>2162</span> </span><span class="WHIT"> </span><span class="COMM">// Display the SVG string as data-uri in an HTML img.</span><span class="WHIT">
2170
- <span class='line'>2163</span> </span><span class="WHIT"> </span><span class="NAME">tmpImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2171
- <span class='line'>2164</span> </span><span class="WHIT"> </span><span class="NAME">svg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.dumpToDataURI</span><span class="PUNC">(</span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2172
- <span class='line'>2165</span> </span><span class="WHIT"> </span><span class="NAME">tmpImg.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">svg</span><span class="PUNC">;</span><span class="WHIT">
2173
- <span class='line'>2166</span>
2174
- <span class='line'>2167</span> </span><span class="WHIT"> </span><span class="COMM">// Finally, draw the HTML img in the canvas.</span><span class="WHIT">
2175
- <span class='line'>2168</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="STRN">"Promise"</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">window</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2176
- <span class='line'>2169</span> </span><span class="WHIT"> </span><span class="NAME">tmpImg.onload</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2177
- <span class='line'>2170</span> </span><span class="WHIT"> </span><span class="COMM">// IE needs a pause...</span><span class="WHIT">
2178
- <span class='line'>2171</span> </span><span class="WHIT"> </span><span class="COMM">// Seems to be broken</span><span class="WHIT">
2179
- <span class='line'>2172</span> </span><span class="WHIT"> </span><span class="NAME">window.setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2180
- <span class='line'>2173</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2181
- <span class='line'>2174</span> </span><span class="WHIT"> </span><span class="NAME">ctx.drawImage</span><span class="PUNC">(</span><span class="NAME">tmpImg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2182
- <span class='line'>2175</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2183
- <span class='line'>2176</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"screenshots not longer supported on IE"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2184
- <span class='line'>2177</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2185
- <span class='line'>2178</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2186
- <span class='line'>2179</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2187
- <span class='line'>2180</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
2188
- <span class='line'>2181</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2189
- <span class='line'>2182</span>
2190
- <span class='line'>2183</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Promise</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">resolve</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">reject</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2191
- <span class='line'>2184</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2192
- <span class='line'>2185</span> </span><span class="WHIT"> </span><span class="NAME">tmpImg.onload</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2193
- <span class='line'>2186</span> </span><span class="WHIT"> </span><span class="NAME">ctx.drawImage</span><span class="PUNC">(</span><span class="NAME">tmpImg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2194
- <span class='line'>2187</span> </span><span class="WHIT"> </span><span class="NAME">resolve</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2195
- <span class='line'>2188</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2196
- <span class='line'>2189</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2197
- <span class='line'>2190</span> </span><span class="WHIT"> </span><span class="NAME">reject</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2198
- <span class='line'>2191</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2199
- <span class='line'>2192</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2200
- <span class='line'>2193</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
2201
- <span class='line'>2194</span>
2202
- <span class='line'>2195</span> </span><span class="WHIT"> </span><span class="COMM">/**
2203
- <span class='line'>2196</span> * Display SVG image in html img-tag which enables
2204
- <span class='line'>2197</span> * easy download for the user.
2205
- <span class='line'>2198</span> *
2206
- <span class='line'>2199</span> * Support:
2207
- <span class='line'>2200</span> * &lt;ul>
2208
- <span class='line'>2201</span> * &lt;li> IE: No
2209
- <span class='line'>2202</span> * &lt;li> Edge: full
2210
- <span class='line'>2203</span> * &lt;li> Firefox: full
2211
- <span class='line'>2204</span> * &lt;li> Chrome: full
2212
- <span class='line'>2205</span> * &lt;li> Safari: full (No text support in versions prior to 12).
2213
- <span class='line'>2206</span> * &lt;/ul>
2214
- <span class='line'>2207</span> *
2215
- <span class='line'>2208</span> * @param {JXG.Board} board Link to the board.
2216
- <span class='line'>2209</span> * @param {String} imgId Optional id of an img object. If given and different from the empty string,
2217
- <span class='line'>2210</span> * the screenshot is copied to this img object. The width and height will be set to the values of the
2218
- <span class='line'>2211</span> * JSXGraph container.
2219
- <span class='line'>2212</span> * @param {Boolean} ignoreTexts If set to true, the foreignObject is taken out of the
2220
- <span class='line'>2213</span> * SVGRoot and texts are not displayed. This is mandatory for Safari. Default: false
2221
- <span class='line'>2214</span> * @return {Object} the svg renderer object
2222
- <span class='line'>2215</span> */</span><span class="WHIT">
2223
- <span class='line'>2216</span> </span><span class="WHIT"> </span><span class="NAME">screenshot</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">board</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">imgId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2224
- <span class='line'>2217</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT">
2225
- <span class='line'>2218</span> </span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.ownerDocument</span><span class="PUNC">,</span><span class="WHIT">
2226
- <span class='line'>2219</span> </span><span class="WHIT"> </span><span class="NAME">parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.parentNode</span><span class="PUNC">,</span><span class="WHIT">
2227
- <span class='line'>2220</span> </span><span class="WHIT"> </span><span class="COMM">// cPos,</span><span class="WHIT">
2228
- <span class='line'>2221</span> </span><span class="WHIT"> </span><span class="COMM">// cssTxt,</span><span class="WHIT">
2229
- <span class='line'>2222</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">img</span><span class="PUNC">,</span><span class="WHIT">
2230
- <span class='line'>2223</span> </span><span class="WHIT"> </span><span class="NAME">button</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">buttonText</span><span class="PUNC">,</span><span class="WHIT">
2231
- <span class='line'>2224</span> </span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">,</span><span class="WHIT">
2232
- <span class='line'>2225</span> </span><span class="WHIT"> </span><span class="NAME">bas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">board.attr.screenshot</span><span class="PUNC">,</span><span class="WHIT">
2233
- <span class='line'>2226</span> </span><span class="WHIT"> </span><span class="NAME">navbar</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">navbarDisplay</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">insert</span><span class="PUNC">,</span><span class="WHIT">
2234
- <span class='line'>2227</span> </span><span class="WHIT"> </span><span class="NAME">newImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
2235
- <span class='line'>2228</span> </span><span class="WHIT"> </span><span class="NAME">_copyCanvasToImg</span><span class="PUNC">,</span><span class="WHIT">
2236
- <span class='line'>2229</span> </span><span class="WHIT"> </span><span class="NAME">isDebug</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2237
- <span class='line'>2230</span>
2238
- <span class='line'>2231</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"no"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2239
- <span class='line'>2232</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
2240
- <span class='line'>2233</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2241
- <span class='line'>2234</span>
2242
- <span class='line'>2235</span> </span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bas.scale</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">this.container.getBoundingClientRect</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">width</span><span class="PUNC">;</span><span class="WHIT">
2243
- <span class='line'>2236</span> </span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bas.scale</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">this.container.getBoundingClientRect</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">height</span><span class="PUNC">;</span><span class="WHIT">
2244
- <span class='line'>2237</span>
2245
- <span class='line'>2238</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">imgId</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">imgId</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2246
- <span class='line'>2239</span> </span><span class="WHIT"> </span><span class="NAME">newImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
2247
- <span class='line'>2240</span> </span><span class="WHIT"> </span><span class="NAME">img</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//doc.createElement('img');</span><span class="WHIT">
2248
- <span class='line'>2241</span> </span><span class="WHIT"> </span><span class="NAME">img.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2249
- <span class='line'>2242</span> </span><span class="WHIT"> </span><span class="NAME">img.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2250
- <span class='line'>2243</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2251
- <span class='line'>2244</span> </span><span class="WHIT"> </span><span class="NAME">newImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2252
- <span class='line'>2245</span> </span><span class="WHIT"> </span><span class="NAME">img</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.getElementById</span><span class="PUNC">(</span><span class="NAME">imgId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2253
- <span class='line'>2246</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2254
- <span class='line'>2247</span> </span><span class="WHIT"> </span><span class="COMM">// img.crossOrigin = 'anonymous';</span><span class="WHIT">
2255
- <span class='line'>2248</span>
2256
- <span class='line'>2249</span> </span><span class="WHIT"> </span><span class="COMM">// Create div which contains canvas element and close button</span><span class="WHIT">
2257
- <span class='line'>2250</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newImg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2258
- <span class='line'>2251</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">"div"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2259
- <span class='line'>2252</span> </span><span class="WHIT"> </span><span class="NAME">node.style.cssText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bas.css</span><span class="PUNC">;</span><span class="WHIT">
2260
- <span class='line'>2253</span> </span><span class="WHIT"> </span><span class="NAME">node.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2261
- <span class='line'>2254</span> </span><span class="WHIT"> </span><span class="NAME">node.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2262
- <span class='line'>2255</span> </span><span class="WHIT"> </span><span class="NAME">node.style.zIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.style.zIndex</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">120</span><span class="PUNC">;</span><span class="WHIT">
2263
- <span class='line'>2256</span>
2264
- <span class='line'>2257</span> </span><span class="WHIT"> </span><span class="COMM">// Try to position the div exactly over the JSXGraph board</span><span class="WHIT">
2265
- <span class='line'>2258</span> </span><span class="WHIT"> </span><span class="NAME">node.style.position</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"absolute"</span><span class="PUNC">;</span><span class="WHIT">
2266
- <span class='line'>2259</span> </span><span class="WHIT"> </span><span class="NAME">node.style.top</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.offsetTop</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2267
- <span class='line'>2260</span> </span><span class="WHIT"> </span><span class="NAME">node.style.left</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.offsetLeft</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2268
- <span class='line'>2261</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2269
- <span class='line'>2262</span>
2270
- <span class='line'>2263</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isDebug</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2271
- <span class='line'>2264</span> </span><span class="WHIT"> </span><span class="COMM">// Create canvas element and add it to the DOM</span><span class="WHIT">
2272
- <span class='line'>2265</span> </span><span class="WHIT"> </span><span class="COMM">// It will be removed after the image has been stored.</span><span class="WHIT">
2273
- <span class='line'>2266</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2274
- <span class='line'>2267</span> </span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NUMB">36</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2275
- <span class='line'>2268</span> </span><span class="WHIT"> </span><span class="NAME">canvas.setAttribute</span><span class="PUNC">(</span><span class="STRN">"id"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2276
- <span class='line'>2269</span> </span><span class="WHIT"> </span><span class="NAME">canvas.setAttribute</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2277
- <span class='line'>2270</span> </span><span class="WHIT"> </span><span class="NAME">canvas.setAttribute</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2278
- <span class='line'>2271</span> </span><span class="WHIT"> </span><span class="NAME">canvas.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2279
- <span class='line'>2272</span> </span><span class="WHIT"> </span><span class="NAME">canvas.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2280
- <span class='line'>2273</span> </span><span class="WHIT"> </span><span class="NAME">canvas.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
2281
- <span class='line'>2274</span> </span><span class="WHIT"> </span><span class="NAME">parent.appendChild</span><span class="PUNC">(</span><span class="NAME">canvas</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2282
- <span class='line'>2275</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2283
- <span class='line'>2276</span> </span><span class="WHIT"> </span><span class="COMM">// Debug: use canvas element 'jxgbox_canvas' from jsxdev/dump.html</span><span class="WHIT">
2284
- <span class='line'>2277</span> </span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"jxgbox_canvas"</span><span class="PUNC">;</span><span class="WHIT">
2285
- <span class='line'>2278</span> </span><span class="WHIT"> </span><span class="COMM">// canvas = document.getElementById(id);</span><span class="WHIT">
2286
- <span class='line'>2279</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.getElementById</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2287
- <span class='line'>2280</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2288
- <span class='line'>2281</span>
2289
- <span class='line'>2282</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newImg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2290
- <span class='line'>2283</span> </span><span class="WHIT"> </span><span class="COMM">// Create close button</span><span class="WHIT">
2291
- <span class='line'>2284</span> </span><span class="WHIT"> </span><span class="NAME">button</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">"span"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2292
- <span class='line'>2285</span> </span><span class="WHIT"> </span><span class="NAME">buttonText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="STRN">"\u2716"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2293
- <span class='line'>2286</span> </span><span class="WHIT"> </span><span class="NAME">button.style.cssText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bas.cssButton</span><span class="PUNC">;</span><span class="WHIT">
2294
- <span class='line'>2287</span> </span><span class="WHIT"> </span><span class="NAME">button.appendChild</span><span class="PUNC">(</span><span class="NAME">buttonText</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2295
- <span class='line'>2288</span> </span><span class="WHIT"> </span><span class="NAME">button.onclick</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2296
- <span class='line'>2289</span> </span><span class="WHIT"> </span><span class="NAME">node.parentNode.removeChild</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2297
- <span class='line'>2290</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2298
- <span class='line'>2291</span>
2299
- <span class='line'>2292</span> </span><span class="WHIT"> </span><span class="COMM">// Add all nodes</span><span class="WHIT">
2300
- <span class='line'>2293</span> </span><span class="WHIT"> </span><span class="NAME">node.appendChild</span><span class="PUNC">(</span><span class="NAME">img</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2301
- <span class='line'>2294</span> </span><span class="WHIT"> </span><span class="NAME">node.appendChild</span><span class="PUNC">(</span><span class="NAME">button</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2302
- <span class='line'>2295</span> </span><span class="WHIT"> </span><span class="NAME">parent.insertBefore</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.container.nextSibling</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2303
- <span class='line'>2296</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2304
- <span class='line'>2297</span>
2305
- <span class='line'>2298</span> </span><span class="WHIT"> </span><span class="COMM">// Hide navigation bar in board</span><span class="WHIT">
2306
- <span class='line'>2299</span> </span><span class="WHIT"> </span><span class="NAME">navbar</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.getElementById</span><span class="PUNC">(</span><span class="NAME">this.uniqName</span><span class="PUNC">(</span><span class="STRN">'navigationbar'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2307
- <span class='line'>2300</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">navbar</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2308
- <span class='line'>2301</span> </span><span class="WHIT"> </span><span class="NAME">navbarDisplay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">navbar.style.display</span><span class="PUNC">;</span><span class="WHIT">
2309
- <span class='line'>2302</span> </span><span class="WHIT"> </span><span class="NAME">navbar.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
2310
- <span class='line'>2303</span> </span><span class="WHIT"> </span><span class="NAME">insert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.removeToInsertLater</span><span class="PUNC">(</span><span class="NAME">navbar</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2311
- <span class='line'>2304</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2312
- <span class='line'>2305</span>
2313
- <span class='line'>2306</span> </span><span class="WHIT"> </span><span class="NAME">_copyCanvasToImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2314
- <span class='line'>2307</span> </span><span class="WHIT"> </span><span class="COMM">// Show image in img tag</span><span class="WHIT">
2315
- <span class='line'>2308</span> </span><span class="WHIT"> </span><span class="NAME">img.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvas.toDataURL</span><span class="PUNC">(</span><span class="STRN">"image/png"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2316
- <span class='line'>2309</span>
2317
- <span class='line'>2310</span> </span><span class="WHIT"> </span><span class="COMM">// Remove canvas node</span><span class="WHIT">
2318
- <span class='line'>2311</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isDebug</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2319
- <span class='line'>2312</span> </span><span class="WHIT"> </span><span class="NAME">parent.removeChild</span><span class="PUNC">(</span><span class="NAME">canvas</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2320
- <span class='line'>2313</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2321
- <span class='line'>2314</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2322
- <span class='line'>2315</span>
2323
- <span class='line'>2316</span> </span><span class="WHIT"> </span><span class="COMM">// Create screenshot in image element</span><span class="WHIT">
2324
- <span class='line'>2317</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"Promise"</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">window</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2325
- <span class='line'>2318</span> </span><span class="WHIT"> </span><span class="NAME">this.dumpToCanvas</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">then</span><span class="PUNC">(</span><span class="NAME">_copyCanvasToImg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2326
- <span class='line'>2319</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2327
- <span class='line'>2320</span> </span><span class="WHIT"> </span><span class="COMM">// IE</span><span class="WHIT">
2328
- <span class='line'>2321</span> </span><span class="WHIT"> </span><span class="NAME">this.dumpToCanvas</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2329
- <span class='line'>2322</span> </span><span class="WHIT"> </span><span class="NAME">window.setTimeout</span><span class="PUNC">(</span><span class="NAME">_copyCanvasToImg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2330
- <span class='line'>2323</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2331
- <span class='line'>2324</span>
2332
- <span class='line'>2325</span> </span><span class="WHIT"> </span><span class="COMM">// Reinsert navigation bar in board</span><span class="WHIT">
2333
- <span class='line'>2326</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">navbar</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2334
- <span class='line'>2327</span> </span><span class="WHIT"> </span><span class="NAME">navbar.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">navbarDisplay</span><span class="PUNC">;</span><span class="WHIT">
2335
- <span class='line'>2328</span> </span><span class="WHIT"> </span><span class="NAME">insert</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2336
- <span class='line'>2329</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2169
+ <span class='line'>2162</span> </span><span class="WHIT"> </span><span class="COMM">// Finally, draw the HTML img in the canvas.</span><span class="WHIT">
2170
+ <span class='line'>2163</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="PUNC">(</span><span class="STRN">"Promise"</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">window</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2171
+ <span class='line'>2164</span> </span><span class="WHIT"> </span><span class="NAME">tmpImg.onload</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2172
+ <span class='line'>2165</span> </span><span class="WHIT"> </span><span class="COMM">// IE needs a pause...</span><span class="WHIT">
2173
+ <span class='line'>2166</span> </span><span class="WHIT"> </span><span class="COMM">// Seems to be broken</span><span class="WHIT">
2174
+ <span class='line'>2167</span> </span><span class="WHIT"> </span><span class="NAME">window.setTimeout</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2175
+ <span class='line'>2168</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2176
+ <span class='line'>2169</span> </span><span class="WHIT"> </span><span class="NAME">ctx.drawImage</span><span class="PUNC">(</span><span class="NAME">tmpImg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2177
+ <span class='line'>2170</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">err</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2178
+ <span class='line'>2171</span> </span><span class="WHIT"> </span><span class="NAME">console.log</span><span class="PUNC">(</span><span class="STRN">"screenshots not longer supported on IE"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2179
+ <span class='line'>2172</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2180
+ <span class='line'>2173</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2181
+ <span class='line'>2174</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2182
+ <span class='line'>2175</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
2183
+ <span class='line'>2176</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2184
+ <span class='line'>2177</span>
2185
+ <span class='line'>2178</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Promise</span><span class="PUNC">(</span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">resolve</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">reject</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2186
+ <span class='line'>2179</span> </span><span class="WHIT"> </span><span class="KEYW">try</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2187
+ <span class='line'>2180</span> </span><span class="WHIT"> </span><span class="NAME">tmpImg.onload</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2188
+ <span class='line'>2181</span> </span><span class="WHIT"> </span><span class="NAME">ctx.drawImage</span><span class="PUNC">(</span><span class="NAME">tmpImg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">0</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2189
+ <span class='line'>2182</span> </span><span class="WHIT"> </span><span class="NAME">resolve</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2190
+ <span class='line'>2183</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2191
+ <span class='line'>2184</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">catch</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2192
+ <span class='line'>2185</span> </span><span class="WHIT"> </span><span class="NAME">reject</span><span class="PUNC">(</span><span class="NAME">e</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2193
+ <span class='line'>2186</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2194
+ <span class='line'>2187</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2195
+ <span class='line'>2188</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">,</span><span class="WHIT">
2196
+ <span class='line'>2189</span>
2197
+ <span class='line'>2190</span> </span><span class="WHIT"> </span><span class="COMM">/**
2198
+ <span class='line'>2191</span> * Display SVG image in html img-tag which enables
2199
+ <span class='line'>2192</span> * easy download for the user.
2200
+ <span class='line'>2193</span> *
2201
+ <span class='line'>2194</span> * Support:
2202
+ <span class='line'>2195</span> * &lt;ul>
2203
+ <span class='line'>2196</span> * &lt;li> IE: No
2204
+ <span class='line'>2197</span> * &lt;li> Edge: full
2205
+ <span class='line'>2198</span> * &lt;li> Firefox: full
2206
+ <span class='line'>2199</span> * &lt;li> Chrome: full
2207
+ <span class='line'>2200</span> * &lt;li> Safari: full (No text support in versions prior to 12).
2208
+ <span class='line'>2201</span> * &lt;/ul>
2209
+ <span class='line'>2202</span> *
2210
+ <span class='line'>2203</span> * @param {JXG.Board} board Link to the board.
2211
+ <span class='line'>2204</span> * @param {String} imgId Optional id of an img object. If given and different from the empty string,
2212
+ <span class='line'>2205</span> * the screenshot is copied to this img object. The width and height will be set to the values of the
2213
+ <span class='line'>2206</span> * JSXGraph container.
2214
+ <span class='line'>2207</span> * @param {Boolean} ignoreTexts If set to true, the foreignObject is taken out of the
2215
+ <span class='line'>2208</span> * SVGRoot and texts are not displayed. This is mandatory for Safari. Default: false
2216
+ <span class='line'>2209</span> * @return {Object} the svg renderer object
2217
+ <span class='line'>2210</span> */</span><span class="WHIT">
2218
+ <span class='line'>2211</span> </span><span class="WHIT"> </span><span class="NAME">screenshot</span><span class="PUNC">:</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">board</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">imgId</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2219
+ <span class='line'>2212</span> </span><span class="WHIT"> </span><span class="KEYW">var</span><span class="WHIT"> </span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT">
2220
+ <span class='line'>2213</span> </span><span class="WHIT"> </span><span class="NAME">doc</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.ownerDocument</span><span class="PUNC">,</span><span class="WHIT">
2221
+ <span class='line'>2214</span> </span><span class="WHIT"> </span><span class="NAME">parent</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.parentNode</span><span class="PUNC">,</span><span class="WHIT">
2222
+ <span class='line'>2215</span> </span><span class="WHIT"> </span><span class="COMM">// cPos,</span><span class="WHIT">
2223
+ <span class='line'>2216</span> </span><span class="WHIT"> </span><span class="COMM">// cssTxt,</span><span class="WHIT">
2224
+ <span class='line'>2217</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">img</span><span class="PUNC">,</span><span class="WHIT">
2225
+ <span class='line'>2218</span> </span><span class="WHIT"> </span><span class="NAME">button</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">buttonText</span><span class="PUNC">,</span><span class="WHIT">
2226
+ <span class='line'>2219</span> </span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">,</span><span class="WHIT">
2227
+ <span class='line'>2220</span> </span><span class="WHIT"> </span><span class="NAME">bas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">board.attr.screenshot</span><span class="PUNC">,</span><span class="WHIT">
2228
+ <span class='line'>2221</span> </span><span class="WHIT"> </span><span class="NAME">navbar</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">navbarDisplay</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">insert</span><span class="PUNC">,</span><span class="WHIT">
2229
+ <span class='line'>2222</span> </span><span class="WHIT"> </span><span class="NAME">newImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">,</span><span class="WHIT">
2230
+ <span class='line'>2223</span> </span><span class="WHIT"> </span><span class="NAME">_copyCanvasToImg</span><span class="PUNC">,</span><span class="WHIT">
2231
+ <span class='line'>2224</span> </span><span class="WHIT"> </span><span class="NAME">isDebug</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2232
+ <span class='line'>2225</span>
2233
+ <span class='line'>2226</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">this.type</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">"no"</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2234
+ <span class='line'>2227</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
2235
+ <span class='line'>2228</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2236
+ <span class='line'>2229</span>
2237
+ <span class='line'>2230</span> </span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bas.scale</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">this.container.getBoundingClientRect</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">width</span><span class="PUNC">;</span><span class="WHIT">
2238
+ <span class='line'>2231</span> </span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bas.scale</span><span class="WHIT"> </span><span class="PUNC">*</span><span class="WHIT"> </span><span class="NAME">this.container.getBoundingClientRect</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">height</span><span class="PUNC">;</span><span class="WHIT">
2239
+ <span class='line'>2232</span>
2240
+ <span class='line'>2233</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">imgId</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="NAME">undefined</span><span class="WHIT"> </span><span class="PUNC">||</span><span class="WHIT"> </span><span class="NAME">imgId</span><span class="WHIT"> </span><span class="PUNC">===</span><span class="WHIT"> </span><span class="STRN">""</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2241
+ <span class='line'>2234</span> </span><span class="WHIT"> </span><span class="NAME">newImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">true</span><span class="PUNC">;</span><span class="WHIT">
2242
+ <span class='line'>2235</span> </span><span class="WHIT"> </span><span class="NAME">img</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">new</span><span class="WHIT"> </span><span class="NAME">Image</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT"> </span><span class="COMM">//doc.createElement('img');</span><span class="WHIT">
2243
+ <span class='line'>2236</span> </span><span class="WHIT"> </span><span class="NAME">img.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2244
+ <span class='line'>2237</span> </span><span class="WHIT"> </span><span class="NAME">img.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2245
+ <span class='line'>2238</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2246
+ <span class='line'>2239</span> </span><span class="WHIT"> </span><span class="NAME">newImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">false</span><span class="PUNC">;</span><span class="WHIT">
2247
+ <span class='line'>2240</span> </span><span class="WHIT"> </span><span class="NAME">img</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.getElementById</span><span class="PUNC">(</span><span class="NAME">imgId</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2248
+ <span class='line'>2241</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2249
+ <span class='line'>2242</span> </span><span class="WHIT"> </span><span class="COMM">// img.crossOrigin = 'anonymous';</span><span class="WHIT">
2250
+ <span class='line'>2243</span>
2251
+ <span class='line'>2244</span> </span><span class="WHIT"> </span><span class="COMM">// Create div which contains canvas element and close button</span><span class="WHIT">
2252
+ <span class='line'>2245</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newImg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2253
+ <span class='line'>2246</span> </span><span class="WHIT"> </span><span class="NAME">node</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">"div"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2254
+ <span class='line'>2247</span> </span><span class="WHIT"> </span><span class="NAME">node.style.cssText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bas.css</span><span class="PUNC">;</span><span class="WHIT">
2255
+ <span class='line'>2248</span> </span><span class="WHIT"> </span><span class="NAME">node.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2256
+ <span class='line'>2249</span> </span><span class="WHIT"> </span><span class="NAME">node.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">h</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2257
+ <span class='line'>2250</span> </span><span class="WHIT"> </span><span class="NAME">node.style.zIndex</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.style.zIndex</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="NUMB">120</span><span class="PUNC">;</span><span class="WHIT">
2258
+ <span class='line'>2251</span>
2259
+ <span class='line'>2252</span> </span><span class="WHIT"> </span><span class="COMM">// Try to position the div exactly over the JSXGraph board</span><span class="WHIT">
2260
+ <span class='line'>2253</span> </span><span class="WHIT"> </span><span class="NAME">node.style.position</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"absolute"</span><span class="PUNC">;</span><span class="WHIT">
2261
+ <span class='line'>2254</span> </span><span class="WHIT"> </span><span class="NAME">node.style.top</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.offsetTop</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2262
+ <span class='line'>2255</span> </span><span class="WHIT"> </span><span class="NAME">node.style.left</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.container.offsetLeft</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2263
+ <span class='line'>2256</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2264
+ <span class='line'>2257</span>
2265
+ <span class='line'>2258</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isDebug</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2266
+ <span class='line'>2259</span> </span><span class="WHIT"> </span><span class="COMM">// Create canvas element and add it to the DOM</span><span class="WHIT">
2267
+ <span class='line'>2260</span> </span><span class="WHIT"> </span><span class="COMM">// It will be removed after the image has been stored.</span><span class="WHIT">
2268
+ <span class='line'>2261</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">"canvas"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2269
+ <span class='line'>2262</span> </span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">Math.random</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">toString</span><span class="PUNC">(</span><span class="NUMB">36</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">substr</span><span class="PUNC">(</span><span class="NUMB">2</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">5</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2270
+ <span class='line'>2263</span> </span><span class="WHIT"> </span><span class="NAME">canvas.setAttribute</span><span class="PUNC">(</span><span class="STRN">"id"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2271
+ <span class='line'>2264</span> </span><span class="WHIT"> </span><span class="NAME">canvas.setAttribute</span><span class="PUNC">(</span><span class="STRN">"width"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2272
+ <span class='line'>2265</span> </span><span class="WHIT"> </span><span class="NAME">canvas.setAttribute</span><span class="PUNC">(</span><span class="STRN">"height"</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2273
+ <span class='line'>2266</span> </span><span class="WHIT"> </span><span class="NAME">canvas.style.width</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2274
+ <span class='line'>2267</span> </span><span class="WHIT"> </span><span class="NAME">canvas.style.height</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">w</span><span class="WHIT"> </span><span class="PUNC">+</span><span class="WHIT"> </span><span class="STRN">"px"</span><span class="PUNC">;</span><span class="WHIT">
2275
+ <span class='line'>2268</span> </span><span class="WHIT"> </span><span class="NAME">canvas.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
2276
+ <span class='line'>2269</span> </span><span class="WHIT"> </span><span class="NAME">parent.appendChild</span><span class="PUNC">(</span><span class="NAME">canvas</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2277
+ <span class='line'>2270</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2278
+ <span class='line'>2271</span> </span><span class="WHIT"> </span><span class="COMM">// Debug: use canvas element 'jxgbox_canvas' from jsxdev/dump.html</span><span class="WHIT">
2279
+ <span class='line'>2272</span> </span><span class="WHIT"> </span><span class="NAME">id</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"jxgbox_canvas"</span><span class="PUNC">;</span><span class="WHIT">
2280
+ <span class='line'>2273</span> </span><span class="WHIT"> </span><span class="COMM">// canvas = document.getElementById(id);</span><span class="WHIT">
2281
+ <span class='line'>2274</span> </span><span class="WHIT"> </span><span class="NAME">canvas</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.getElementById</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2282
+ <span class='line'>2275</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2283
+ <span class='line'>2276</span>
2284
+ <span class='line'>2277</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">newImg</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2285
+ <span class='line'>2278</span> </span><span class="WHIT"> </span><span class="COMM">// Create close button</span><span class="WHIT">
2286
+ <span class='line'>2279</span> </span><span class="WHIT"> </span><span class="NAME">button</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createElement</span><span class="PUNC">(</span><span class="STRN">"span"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2287
+ <span class='line'>2280</span> </span><span class="WHIT"> </span><span class="NAME">buttonText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.createTextNode</span><span class="PUNC">(</span><span class="STRN">"\u2716"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2288
+ <span class='line'>2281</span> </span><span class="WHIT"> </span><span class="NAME">button.style.cssText</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">bas.cssButton</span><span class="PUNC">;</span><span class="WHIT">
2289
+ <span class='line'>2282</span> </span><span class="WHIT"> </span><span class="NAME">button.appendChild</span><span class="PUNC">(</span><span class="NAME">buttonText</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2290
+ <span class='line'>2283</span> </span><span class="WHIT"> </span><span class="NAME">button.onclick</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2291
+ <span class='line'>2284</span> </span><span class="WHIT"> </span><span class="NAME">node.parentNode.removeChild</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2292
+ <span class='line'>2285</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2293
+ <span class='line'>2286</span>
2294
+ <span class='line'>2287</span> </span><span class="WHIT"> </span><span class="COMM">// Add all nodes</span><span class="WHIT">
2295
+ <span class='line'>2288</span> </span><span class="WHIT"> </span><span class="NAME">node.appendChild</span><span class="PUNC">(</span><span class="NAME">img</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2296
+ <span class='line'>2289</span> </span><span class="WHIT"> </span><span class="NAME">node.appendChild</span><span class="PUNC">(</span><span class="NAME">button</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2297
+ <span class='line'>2290</span> </span><span class="WHIT"> </span><span class="NAME">parent.insertBefore</span><span class="PUNC">(</span><span class="NAME">node</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">this.container.nextSibling</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2298
+ <span class='line'>2291</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2299
+ <span class='line'>2292</span>
2300
+ <span class='line'>2293</span> </span><span class="WHIT"> </span><span class="COMM">// Hide navigation bar in board</span><span class="WHIT">
2301
+ <span class='line'>2294</span> </span><span class="WHIT"> </span><span class="NAME">navbar</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">doc.getElementById</span><span class="PUNC">(</span><span class="NAME">this.uniqName</span><span class="PUNC">(</span><span class="STRN">'navigationbar'</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2302
+ <span class='line'>2295</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">navbar</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2303
+ <span class='line'>2296</span> </span><span class="WHIT"> </span><span class="NAME">navbarDisplay</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">navbar.style.display</span><span class="PUNC">;</span><span class="WHIT">
2304
+ <span class='line'>2297</span> </span><span class="WHIT"> </span><span class="NAME">navbar.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="STRN">"none"</span><span class="PUNC">;</span><span class="WHIT">
2305
+ <span class='line'>2298</span> </span><span class="WHIT"> </span><span class="NAME">insert</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">this.removeToInsertLater</span><span class="PUNC">(</span><span class="NAME">navbar</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2306
+ <span class='line'>2299</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2307
+ <span class='line'>2300</span>
2308
+ <span class='line'>2301</span> </span><span class="WHIT"> </span><span class="NAME">_copyCanvasToImg</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="KEYW">function</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2309
+ <span class='line'>2302</span> </span><span class="WHIT"> </span><span class="COMM">// Show image in img tag</span><span class="WHIT">
2310
+ <span class='line'>2303</span> </span><span class="WHIT"> </span><span class="NAME">img.src</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">canvas.toDataURL</span><span class="PUNC">(</span><span class="STRN">"image/png"</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2311
+ <span class='line'>2304</span>
2312
+ <span class='line'>2305</span> </span><span class="WHIT"> </span><span class="COMM">// Remove canvas node</span><span class="WHIT">
2313
+ <span class='line'>2306</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="PUNC">!</span><span class="NAME">isDebug</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2314
+ <span class='line'>2307</span> </span><span class="WHIT"> </span><span class="NAME">parent.removeChild</span><span class="PUNC">(</span><span class="NAME">canvas</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2315
+ <span class='line'>2308</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2316
+ <span class='line'>2309</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="PUNC">;</span><span class="WHIT">
2317
+ <span class='line'>2310</span>
2318
+ <span class='line'>2311</span> </span><span class="WHIT"> </span><span class="COMM">// Create screenshot in image element</span><span class="WHIT">
2319
+ <span class='line'>2312</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="STRN">"Promise"</span><span class="WHIT"> </span><span class="KEYW">in</span><span class="WHIT"> </span><span class="NAME">window</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2320
+ <span class='line'>2313</span> </span><span class="WHIT"> </span><span class="NAME">this.dumpToCanvas</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="PUNC">.</span><span class="NAME">then</span><span class="PUNC">(</span><span class="NAME">_copyCanvasToImg</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2321
+ <span class='line'>2314</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT"> </span><span class="KEYW">else</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2322
+ <span class='line'>2315</span> </span><span class="WHIT"> </span><span class="COMM">// IE</span><span class="WHIT">
2323
+ <span class='line'>2316</span> </span><span class="WHIT"> </span><span class="NAME">this.dumpToCanvas</span><span class="PUNC">(</span><span class="NAME">id</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">w</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">h</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NAME">ignoreTexts</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2324
+ <span class='line'>2317</span> </span><span class="WHIT"> </span><span class="NAME">window.setTimeout</span><span class="PUNC">(</span><span class="NAME">_copyCanvasToImg</span><span class="PUNC">,</span><span class="WHIT"> </span><span class="NUMB">200</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2325
+ <span class='line'>2318</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2326
+ <span class='line'>2319</span>
2327
+ <span class='line'>2320</span> </span><span class="WHIT"> </span><span class="COMM">// Reinsert navigation bar in board</span><span class="WHIT">
2328
+ <span class='line'>2321</span> </span><span class="WHIT"> </span><span class="KEYW">if</span><span class="WHIT"> </span><span class="PUNC">(</span><span class="NAME">Type.exists</span><span class="PUNC">(</span><span class="NAME">navbar</span><span class="PUNC">)</span><span class="PUNC">)</span><span class="WHIT"> </span><span class="PUNC">{</span><span class="WHIT">
2329
+ <span class='line'>2322</span> </span><span class="WHIT"> </span><span class="NAME">navbar.style.display</span><span class="WHIT"> </span><span class="PUNC">=</span><span class="WHIT"> </span><span class="NAME">navbarDisplay</span><span class="PUNC">;</span><span class="WHIT">
2330
+ <span class='line'>2323</span> </span><span class="WHIT"> </span><span class="NAME">insert</span><span class="PUNC">(</span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2331
+ <span class='line'>2324</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2332
+ <span class='line'>2325</span>
2333
+ <span class='line'>2326</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
2334
+ <span class='line'>2327</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2335
+ <span class='line'>2328</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2336
+ <span class='line'>2329</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2337
2337
  <span class='line'>2330</span>
2338
- <span class='line'>2331</span> </span><span class="WHIT"> </span><span class="KEYW">return</span><span class="WHIT"> </span><span class="KEYW">this</span><span class="PUNC">;</span><span class="WHIT">
2339
- <span class='line'>2332</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2340
- <span class='line'>2333</span> </span><span class="WHIT"> </span><span class="PUNC">}</span><span class="WHIT">
2341
- <span class='line'>2334</span> </span><span class="PUNC">)</span><span class="PUNC">;</span><span class="WHIT">
2342
- <span class='line'>2335</span>
2343
- <span class='line'>2336</span> </span><span class="NAME">export</span><span class="WHIT"> </span><span class="KEYW">default</span><span class="WHIT"> </span><span class="NAME">JXG.SVGRenderer</span><span class="PUNC">;</span><span class="WHIT">
2344
- <span class='line'>2337</span> </span></pre></body></html>
2338
+ <span class='line'>2331</span> </span><span class="NAME">export</span><span class="WHIT"> </span><span class="KEYW">default</span><span class="WHIT"> </span><span class="NAME">JXG.SVGRenderer</span><span class="PUNC">;</span><span class="WHIT">
2339
+ <span class='line'>2332</span> </span></pre></body></html>