jsxgraph 1.3.0 → 1.4.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 (90) hide show
  1. package/README.md +2 -2
  2. package/distrib/README.md +2 -2
  3. package/distrib/geogebra.min.js +3 -3
  4. package/distrib/geonext.min.js +3 -3
  5. package/distrib/index.d.ts +651 -448
  6. package/distrib/intergeo.min.js +3 -3
  7. package/distrib/jsxgraph.css +4 -13
  8. package/distrib/jsxgraphcore.js +9 -25
  9. package/distrib/jsxgraphsrc.js +28203 -25234
  10. package/distrib/sketch.min.js +3 -3
  11. package/package.json +11 -22
  12. package/src/base/board.js +674 -469
  13. package/src/base/chart.js +1 -1
  14. package/src/base/circle.js +23 -1
  15. package/src/base/composition.js +1 -1
  16. package/src/base/constants.js +32 -11
  17. package/src/base/coords.js +4 -4
  18. package/src/base/coordselement.js +51 -24
  19. package/src/base/curve.js +308 -117
  20. package/src/base/element.js +79 -50
  21. package/src/base/foreignobject.js +463 -0
  22. package/src/base/group.js +2 -2
  23. package/src/base/image.js +12 -15
  24. package/src/base/line.js +108 -21
  25. package/src/base/point.js +24 -28
  26. package/src/base/polygon.js +75 -18
  27. package/src/base/text.js +116 -63
  28. package/src/base/ticks.js +29 -11
  29. package/src/base/transformation.js +1 -1
  30. package/src/base/turtle.js +1 -1
  31. package/src/element/arc.js +1 -1
  32. package/src/element/button.js +29 -2
  33. package/src/element/checkbox.js +31 -1
  34. package/src/element/comb.js +5 -2
  35. package/src/element/composition.js +127 -19
  36. package/src/element/conic.js +46 -5
  37. package/src/element/input.js +32 -1
  38. package/src/element/locus.js +2 -2
  39. package/src/element/measure.js +9 -4
  40. package/src/element/sector.js +46 -12
  41. package/src/element/slider.js +17 -12
  42. package/src/element/slopetriangle.js +1 -1
  43. package/src/jsxgraph.js +28 -9
  44. package/src/jxg.js +4 -3
  45. package/src/loadjsxgraph.js +3 -2
  46. package/src/math/bst.js +1 -1
  47. package/src/math/clip.js +550 -345
  48. package/src/math/complex.js +1 -1
  49. package/src/math/extrapolate.js +1 -1
  50. package/src/math/geometry.js +155 -126
  51. package/src/math/ia.js +290 -21
  52. package/src/math/math.js +30 -1
  53. package/src/math/metapost.js +1 -1
  54. package/src/math/nlp.js +25 -5
  55. package/src/math/numerics.js +183 -4
  56. package/src/math/plot.js +4 -4
  57. package/src/math/poly.js +1 -1
  58. package/src/math/probfuncs.js +2 -1
  59. package/src/math/qdt.js +68 -62
  60. package/src/math/statistics.js +58 -7
  61. package/src/math/symbolic.js +1 -1
  62. package/src/options.js +377 -114
  63. package/src/parser/ca.js +1297 -1291
  64. package/src/parser/datasource.js +1 -1
  65. package/src/parser/geonext.js +6 -6
  66. package/src/parser/jessiecode.js +275 -79
  67. package/src/parser/jessiescript.js +1 -1
  68. package/src/reader/cinderella.js +1 -1
  69. package/src/reader/file.js +1 -1
  70. package/src/reader/geogebra.js +1 -1
  71. package/src/reader/geonext.js +1 -1
  72. package/src/reader/graph.js +1 -1
  73. package/src/reader/intergeo.js +1 -1
  74. package/src/reader/sketch.js +21 -13
  75. package/src/renderer/abstract.js +21 -6
  76. package/src/renderer/canvas.js +22 -15
  77. package/src/renderer/no.js +11 -4
  78. package/src/renderer/svg.js +76 -53
  79. package/src/renderer/vml.js +36 -32
  80. package/src/server/server.js +1 -1
  81. package/src/utils/base64.js +2 -2
  82. package/src/utils/color.js +148 -3
  83. package/src/utils/dump.js +21 -15
  84. package/src/utils/env.js +63 -104
  85. package/src/utils/event.js +1 -1
  86. package/src/utils/expect.js +1 -1
  87. package/src/utils/type.js +30 -19
  88. package/src/utils/xml.js +1 -1
  89. package/src/utils/zip.js +1 -1
  90. package/CHANGELOG.md +0 -1281
@@ -1,7 +1,7 @@
1
1
  /*
2
- JSXGraph 1.3.0
2
+ JSXGraph 1.4.1
3
3
 
4
- Copyright 2008-2021
4
+ Copyright 2008-2022
5
5
  Matthias Ehmann,
6
6
  Michael Gerhaeuser,
7
7
  Carsten Miller,
@@ -58,4 +58,4 @@
58
58
  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
59
59
  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
60
60
  */
61
- (function(){"use strict";JXG.IntergeoReader=function(board,str){var xmlStr;this.board=board;xmlStr=this.prepareString(str);this.tree=JXG.XML.parse(xmlStr)};JXG.extend(JXG.IntergeoReader.prototype,{objects:{},read:function(){this.board.origin={};this.board.origin.usrCoords=[1,0,0];this.board.origin.scrCoords=[1,400,300];this.board.unitX=30;this.board.unitY=30;this.readElements(this.tree.getElementsByTagName("elements"));this.readConstraints(this.tree.getElementsByTagName("constraints"));this.cleanUp();this.board.fullUpdate();this.readDisplay(this.tree.getElementsByTagName("display"));this.board.fullUpdate()},readElement:function(tree,s){var node;node=tree[0].childNodes[s];if(node.nodeType>1){return}if(node.nodeName==="point"){this.storePoint(node)}else if(node.nodeName==="line"||node.nodeName==="line_segment"||node.nodeName==="ray"||node.nodeName==="vector"){this.storeLine(node)}else if(node.nodeName==="circle"){this.storeConic(node)}else if(node.nodeName==="conic"){this.storeConic(node)}else{JXG.debug("Not implemented: "+node.nodeName+" "+node.getAttribute("id"))}},readElements:function(tree){var s;for(s=0;s<tree[0].childNodes.length;s++){this.readElement(tree,s)}},storePoint:function(node){var i=0,j=0,l=0,p=node.childNodes[i],c=[],parents=[];while(p.nodeType>1){i+=1;p=node.childNodes[i]}if(p.nodeName==="homogeneous_coordinates"){for(j=0;j<p.childNodes.length;j++){if(p.childNodes[j].nodeType===1){if(p.childNodes[j].nodeName==="double"){c.push(p.childNodes[j].firstChild.data)}else if(p.childNodes[j].nodeName==="complex"){for(l=0;l<p.childNodes[j].childNodes.length;l++){if(p.childNodes[j].childNodes[l].nodeName==="double"){c.push(p.childNodes[j].childNodes[l].firstChild.data)}}}else{JXG.debug("Not implemented: "+p.childNodes[j].nodeName);return}}}for(j=0;j<c.length;j++){c[j]=parseFloat(c[j])}if(c.length===3){parents=[c[2],c[0],c[1]]}else if(c.length===6&&Math.abs(c[1])<1e-10&&Math.abs(c[3])<1e-10&&Math.abs(c[5])<1e-10){parents=[c[4],c[0],c[2]]}else{JXG.debug("type not supported, yet");return}}else if(p.nodeName==="euclidean_coordinates"||p.nodeName==="euclidian_coordinates"){for(j=0;j<p.childNodes.length;j++){if(p.childNodes[j].nodeType===1){c.push(p.childNodes[j].firstChild.data)}}for(j=0;j<c.length;j++){c[j]=parseFloat(c[j])}parents=[c[0],c[1]]}else if(p.nodeName==="polar_coordinates"){for(j=0;j<p.childNodes.length;j++){if(p.childNodes[j].nodeType===1){c.push(p.childNodes[j].firstChild.data)}}for(j=0;j<c.length;j++){c[j]=parseFloat(c[j])}parents=[c[0]*Math.cos(c[1]),c[0]*Math.sin(c[1])]}else{JXG.debug("This coordinate type is not yet implemented: "+p.nodeName);return}this.objects[node.getAttribute("id")]={id:node.getAttribute("id"),coords:null};this.objects[node.getAttribute("id")].coords=parents;this.objects[node.getAttribute("id")].id=node.getAttribute("id");this.objects[node.getAttribute("id")].exists=false;this.objects[node.getAttribute("id")].i2geoType="point"},storeLine:function(node){var i,p,c,j;this.objects[node.getAttribute("id")]={id:node.getAttribute("id"),coords:null};i=0;p=node.childNodes[i];while(p.nodeType>1){i+=1;p=node.childNodes[i]}if(p.nodeName==="homogeneous_coordinates"){c=[];for(j=0;j<p.childNodes.length;j++){if(p.childNodes[j].nodeType===1){if(p.childNodes[j].nodeName==="double"){c.push(parseFloat(p.childNodes[j].firstChild.data))}}}this.objects[node.getAttribute("id")].coords=c;this.objects[node.getAttribute("id")].id=node.getAttribute("id");this.objects[node.getAttribute("id")].exists=false;this.objects[node.getAttribute("id")].i2geoType="line"}},storeConic:function(node){var i,j,p,c;this.objects[node.getAttribute("id")]={id:node.getAttribute("id"),coords:null};i=0;p=node.childNodes[i];while(p.nodeType>1){i+=1;p=node.childNodes[i]}if(p.nodeName==="matrix"){c=[];for(j=0;j<p.childNodes.length;j++){if(p.childNodes[j].nodeType===1){if(p.childNodes[j].nodeName==="double"){c.push(parseFloat(p.childNodes[j].firstChild.data))}}}this.objects[node.getAttribute("id")].coords=c;this.objects[node.getAttribute("id")].id=node.getAttribute("id");this.objects[node.getAttribute("id")].exists=false;this.objects[node.getAttribute("id")].i2geoType="conic"}},readConstraint:function(tree,s){var param,node;node=tree[0].childNodes[s];if(node.nodeType>1){return}if(node.nodeName==="line_through_two_points"){this.addLineThroughTwoPoints(node,false)}else if(node.nodeName==="ray_from_point_through_point"){this.addLineThroughTwoPoints(node,true)}else if(node.nodeName==="line_through_point"){this.addLineThroughPoint(node)}else if(node.nodeName==="line_parallel_to_line_through_point"){this.addLineParallelToLineThroughPoint(node,false)}else if(node.nodeName==="ray_from_point_and_vector"){this.addLineParallelToLineThroughPoint(node,true)}else if(node.nodeName==="line_perpendicular_to_line_through_point"){this.addLinePerpendicularToLineThroughPoint(node)}else if(node.nodeName==="line_segment_by_points"){this.addLineSegmentByTwoPoints(node)}else if(node.nodeName==="vector_from_point_to_point"){this.addVectorFromPointToPoint(node)}else if(node.nodeName==="endpoints_of_line_segment"){this.addEndpointsOfLineSegment(node)}else if(node.nodeName==="free_line"){this.addFreeLine(node)}else if(node.nodeName==="point_on_line"){this.addPointOnLine(node)}else if(node.nodeName==="point_on_line_segment"){this.addPointOnLine(node)}else if(node.nodeName==="point_on_circle"){this.addPointOnCircle(node)}else if(node.nodeName==="angular_bisector_of_three_points"){this.addAngularBisectorOfThreePoints(node,false)}else if(node.nodeName==="angular_bisectors_of_two_lines"){this.addAngularBisectorsOfTwoLines(node)}else if(node.nodeName==="line_angular_bisector_of_three_points"){this.addAngularBisectorOfThreePoints(node,true)}else if(node.nodeName==="line_angular_bisectors_of_two_lines"){this.addAngularBisectorsOfTwoLines(node)}else if(node.nodeName==="midpoint_of_two_points"){this.addMidpointOfTwoPoints(node)}else if(node.nodeName==="midpoint"){this.addMidpointOfTwoPoints(node)}else if(node.nodeName==="midpoint_of_line_segment"||node.nodeName==="midpoint_line_segment"){this.addMidpointOfLineSegment(node)}else if(node.nodeName==="point_intersection_of_two_lines"){this.addPointIntersectionOfTwoLines(node)}else if(node.nodeName==="locus_defined_by_point"){this.addLocusDefinedByPoint(node)}else if(node.nodeName==="locus_defined_by_point_on_line"){this.addLocusDefinedByPointOnLine(node)}else if(node.nodeName==="locus_defined_by_point_on_line_segment"){this.addLocusDefinedByPointOnLine(node)}else if(node.nodeName==="locus_defined_by_line_through_point"){this.addLocusDefinedByLineThroughPoint(node)}else if(node.nodeName==="locus_defined_by_point_on_circle"){this.addLocusDefinedByPointOnCircle(node)}else if(node.nodeName==="circle_by_three_points"){this.addCircleByThreePoints(node)}else if(node.nodeName==="circle_by_center_and_point"){this.addCircleByCenterAndPoint(node)}else if(node.nodeName==="center_of_circle"){this.addCenterOfCircle(node)}else if(node.nodeName==="intersection_points_of_two_circles"){this.addIntersectionPointsOfTwoCircles(node)}else if(node.nodeName==="intersection_points_of_circle_and_line"){this.addIntersectionPointsOfCircleAndLine(node)}else if(node.nodeName==="other_intersection_point_of_two_circles"){this.addOtherIntersectionPointOfTwoCircles(node)}else if(node.nodeName==="other_intersection_point_of_circle_and_line"){this.addOtherIntersectionPointOfCircleAndLine(node)}else if(node.nodeName==="circle_tangent_lines_by_point"){this.addCircleTangentLinesByPoint(node)}else if(node.nodeName==="polygon_by_vertices"){this.addPolygonByVertices(node)}else{param=this.readParams(node);JXG.debug("readConstraints: not implemented: "+node.nodeName+": "+param[0])}},readConstraints:function(tree){var s;this.board.options.point.strokeColor="blue";this.board.options.point.fillColor="blue";for(s=0;s<tree[0].childNodes.length;s++){this.readConstraint(tree,s)}},setAttributes:function(o){o.setAttribute({strokecolor:this.board.options.point.strokeColor,fillColor:this.board.options.point.fillColor})},readParams:function(node){var j,param=[];for(j=0;j<node.childNodes.length;j++){if(node.childNodes[j].nodeType===1){param.push(node.childNodes[j].firstChild.data)}}return param},addPoint:function(p){if(!p.exists){p.exists=true;p=this.board.create("point",p.coords,{name:p.id});p.setAttribute({strokecolor:"red",fillColor:"red"})}return p},addLine:function(id){var j,c=this.objects[id].coords,el;for(j=0;j<c.length;j++){c[j]=parseFloat(c[j])}el=this.board.create("line",[c[2],c[0],c[1]],{name:id,strokeColor:"black",withLabel:true});this.objects[id]=el},addConic:function(p){var c;if(!p.exists){c=p.coords;p=this.board.create("conic",[c[0],c[4],c[8],c[1],c[5],c[2]],{name:p.id});p.exists=true}return p},cleanUp:function(){var p;for(p in this.objects){if(this.objects.hasOwnProperty(p)){if(this.objects[p].exists===false){if(this.objects[p].i2geoType==="point"){this.addPoint(this.objects[p])}else if(this.objects[p].i2geoType==="line"){this.addLine(this.objects[p])}else if(this.objects[p].i2geoType==="conic"){this.addConic(this.objects[p])}else{JXG.debug("forgotten: "+this.objects[p].id+" of type "+this.objects[p].i2geoType)}}}}},addLineThroughTwoPoints:function(node,isRay){var el1,el2,el,param=this.readParams(node);el1=this.addPoint(this.objects[param[1]]);el2=this.addPoint(this.objects[param[2]]);el=this.board.create("line",[el1.id,el2.id],{name:param[0],withLabel:true,straightFirst:!isRay,straightLast:true});this.objects[param[0]]=el;this.objects[param[0]].exists=true},addLineThroughPoint:function(node){var param=this.readParams(node),j,c=this.objects[param[0]].coords,p=this.addPoint(this.objects[param[1]]),el;for(j=0;j<c.length;j++){c[j]=parseFloat(c[j])}el=this.board.create("line",[function(){return c[2]-c[0]*p.X()-c[1]*p.Y()-c[2]*p.Z()},c[0],c[1]],{name:param[0],strokeColor:"black",withLabel:true});this.objects[param[0]]=el;this.objects[param[0]].exists=true},addLineParallelToLineThroughPoint:function(node,isRay){var el1,el2,el,param=this.readParams(node);el1=this.addPoint(this.objects[param[1]]);el2=this.addPoint(this.objects[param[2]]);el=this.board.create("parallel",[el1.id,el2.id],{name:param[0],withLabel:true,straightFirst:!isRay,straightLast:true});this.objects[param[0]]=el;this.objects[param[0]].exists=true},addLinePerpendicularToLineThroughPoint:function(node){var el1,el2,el,param=this.readParams(node);el1=this.addPoint(this.objects[param[1]]);el2=this.addPoint(this.objects[param[2]]);el=this.board.create("perpendicular",[el1.id,el2.id],{name:param[0],id:param[0],straightFirst:true,straightLast:true,point:{name:param[0]+"foot",id:param[0]+"foot"},withLabel:true});this.objects[param[0]]=el;this.objects[param[0]].exists=true},addLineSegmentByTwoPoints:function(node){var el1,el2,el,param=this.readParams(node);el1=this.addPoint(this.objects[param[1]]);el2=this.addPoint(this.objects[param[2]]);el=this.board.create("line",[el1.id,el2.id],{name:param[0],straightFirst:false,straightLast:false,strokeColor:"black",withLabel:true});this.objects[param[0]]=el;this.objects[param[0]].exists=true},addPointIntersectionOfTwoLines:function(node){var param=this.readParams(node),l1=this.objects[param[1]],l2=this.objects[param[2]];this.objects[param[0]]=this.board.create("intersection",[l1,l2,0],{name:param[0],id:param[0],withLabel:true});this.setAttributes(this.objects[param[0]]);this.objects[param[0]].exists=true},addFreeLine:function(node){var param=this.readParams(node),a=this.objects[param[0]].coords[0],b=this.objects[param[0]].coords[1],c=this.objects[param[0]].coords[2];this.objects[param[0]]=this.board.create("line",[c,a,b],{name:param[0],id:param[0],withLabel:true});this.objects[param[0]].exists=true},addPointOnLine:function(node){var param=this.readParams(node),l=this.board.select(param[1]);this.board.create("glider",[0,0,l],{name:param[0],id:param[0],withLabel:true});this.objects[param[0]].exists=true},addPointOnCircle:function(node){var param=this.readParams(node),c=this.board.select(param[1]);c.update();this.board.create("glider",[this.objects[param[0]].coords[1],this.objects[param[0]].coords[2],c],{name:param[0],id:param[0],withLabel:true});this.objects[param[0]].exists=true},addEndpointsOfLineSegment:function(node){var param=this.readParams(node),line=this.objects[param[2]],p=this.addPoint(this.objects[param[0]]),q=this.addPoint(this.objects[param[1]]);p.addConstraint([function(){return line.point1.Z()},function(){return line.point1.X()},function(){return line.point1.Y()}]);q.addConstraint([function(){return line.point2.Z()},function(){return line.point2.X()},function(){return line.point2.Y()}]);this.setAttributes(p);this.setAttributes(q)},addAngularBisectorOfThreePoints:function(node,isLine){var el1,el2,el3,el,param=this.readParams(node);el1=this.addPoint(this.objects[param[1]]);el2=this.addPoint(this.objects[param[2]]);el3=this.addPoint(this.objects[param[3]]);el=this.board.create("bisector",[el1.id,el2.id,el3.id],{name:param[0],id:param[0],withLabel:true,straightFirst:isLine,straightLast:true,strokeColor:"#000000"});this.objects[param[0]]=el;this.objects[param[0]].exists=true},addMidpointOfTwoPoints:function(node){var el1,el2,el,param=this.readParams(node);el1=this.addPoint(this.objects[param[1]]);el2=this.addPoint(this.objects[param[2]]);el=this.board.create("midpoint",[el1.id,el2.id],{name:param[0]});this.setAttributes(el);this.objects[param[0]].exists=true},addMidpointOfLineSegment:function(node){var param=this.readParams(node),l=this.board.select(param[1]),el=this.board.create("midpoint",[l.point1,l.point2],{name:param[0]});this.setAttributes(el);this.objects[param[0]].exists=true},addCircleByThreePoints:function(node){var i,param=this.readParams(node),p=[];for(i=0;i<3;i++){p[i]=this.addPoint(this.objects[param[i+1]])}this.board.create("circumcircle",p,{name:param[0],id:param[0],point:{name:param[0]+"c",id:param[0]+"c"},withLabel:true});this.objects[param[0]].exists=true},addCenterOfCircle:function(node){var param=this.readParams(node),c=this.board.select(param[1]),el=this.board.create("point",[function(){return c.center.X()},function(){return c.center.Y()}],{name:param[0],id:param[0],withLabel:true});this.setAttributes(el);this.objects[param[0]].exists=true},addCircleTangentLinesByPoint:function(node){var polar,i1,i2,t1,t2,param=this.readParams(node),c=this.board.select(param[2]),p=this.addPoint(this.objects[param[3]]);polar=this.board.create("line",[function(){return JXG.Math.matVecMult(c.quadraticform,p.coords.usrCoords)[0]},function(){return JXG.Math.matVecMult(c.quadraticform,p.coords.usrCoords)[1]},function(){return JXG.Math.matVecMult(c.quadraticform,p.coords.usrCoords)[2]}],{visible:false});i1=this.board.create("intersection",[c,polar,0],{visible:false});i2=this.board.create("intersection",[c,polar,1],{visible:false});t1=this.board.create("tangent",[i1,c]);t2=this.board.create("tangent",[i2,c]);this.objects[param[0]]=t1;this.objects[param[1]]=t2;this.objects[param[0]].exists=true;this.objects[param[1]].exists=true},addIntersectionPointsOfTwoCircles:function(node){var p1,p2,param=this.readParams(node),c1=this.board.select(param[2]),c2=this.board.select(param[3]);p1=this.board.create("intersection",[c1,c2,0],{name:param[0],id:param[0],withLabel:true});p2=this.board.create("intersection",[c1,c2,1],{name:param[1],id:param[1],withLabel:true});this.setAttributes(p1);this.setAttributes(p2);this.objects[param[0]].exists=true;this.objects[param[1]].exists=true},addIntersectionPointsOfCircleAndLine:function(node){var p1,p2,param=this.readParams(node),c1=this.board.select(param[2]),c2=this.board.select(param[3]);p1=this.board.create("intersection",[c1,c2,0],{name:param[0],id:param[0],withLabel:true});p2=this.board.create("intersection",[c1,c2,1],{name:param[1],id:param[1],withLabel:true});this.setAttributes(p1);this.setAttributes(p2);this.objects[param[0]].exists=true;this.objects[param[1]].exists=true},addCircleByCenterAndPoint:function(node){var param=this.readParams(node),el1=this.addPoint(this.objects[param[1]]),el2=this.addPoint(this.objects[param[2]]);this.board.create("circle",[el1.id,el2.id],{name:param[0],id:param[0],withLabel:true});this.objects[param[0]].exists=true},addOtherIntersectionPointOfTwoCircles:function(node){var param=this.readParams(node),c1=this.board.select(param[2]),c2=this.board.select(param[3]),p1=this.board.select(param[1]),p2;p2=this.board.create("otherintersection",[c1,c2,p1],{name:param[0],id:param[0],withLabel:true});this.setAttributes(p2);this.objects[param[0]].exists=true},addOtherIntersectionPointOfCircleAndLine:function(node){this.addOtherIntersectionPointOfTwoCircles(node)},addAngularBisectorsOfTwoLines:function(node){var param=this.readParams(node),l1=this.objects[param[2]],l2=this.objects[param[3]];this.board.create("bisectorlines",[l1,l2],{line1:{name:param[0],id:param[0],straightFirst:true,straightLast:true},line2:{name:param[1],id:param[1],straightFirst:true,straightLast:true},withLabel:true});this.objects[param[0]].exists=true;this.objects[param[1]].exists=true},addPolygonByVertices:function(node){var j,n,param2=[],p=[],param=this.readParams(node);for(j=0;j<node.childNodes.length;j++){if(node.childNodes[j].nodeType===1){if(node.childNodes[j].nodeName==="list_of_vertices"){n=node.childNodes[j];param2=this.readParams(n);break}}}for(j=0;j<param2.length;j++){p.push(this.addPoint(this.objects[param2[j]]))}this.board.create("polygon",p,{name:param[0],id:param[0],withLabel:true});this.objects[param[0]].exists=true},addVectorFromPointToPoint:function(node){var el,el1,el2,param=this.readParams(node);el1=this.addPoint(this.objects[param[1]]);el2=this.addPoint(this.objects[param[2]]);el=this.board.create("arrow",[el1.id,el2.id],{name:param[0]});this.setAttributes(el);this.objects[param[0]].exists=true},addLocusDefinedByPoint:function(node){var param=this.readParams(node),el=this.board.select(param[1]);el.setAttribute({trace:true});this.objects[param[1]]=el;this.setAttributes(el)},addLocusDefinedByPointOnLine:function(node){var param=this.readParams(node),el=this.board.select(param[1]);el.setAttribute({trace:true});this.objects[param[1]]=el;this.setAttributes(el)},addLocusDefinedByLineThroughPoint:function(node){var param=this.readParams(node),el=this.board.select(param[1]);el.setAttribute({trace:true});this.objects[param[1]]=el;this.setAttributes(el)},addLocusDefinedByPointOnCircle:function(node){var param=this.readParams(node),el=this.board.select(param[1]);el.setAttribute({trace:true});this.objects[param[1]]=el;this.setAttributes(el)},prepareString:function(fileStr){var i,bA=[],isZip=false;if(fileStr.slice(0,2)==="PK"||JXG.Util.UTF8.asciiCharCodeAt(fileStr.slice(0,1),0)===31){isZip=true}if(!isZip&&fileStr.indexOf("<")!==0){fileStr=JXG.Util.Base64.decode(fileStr)}if(fileStr.indexOf("<")!==0){for(i=0;i<fileStr.length;i++){bA[i]=JXG.Util.UTF8.asciiCharCodeAt(fileStr,i)}fileStr=new JXG.Util.Unzip(bA).unzipFile("construction/intergeo.xml")}return fileStr},readDisplayProperty:function(tree,s){var j,node,el,prop={},key,val;node=tree[0].childNodes[s];if(node.nodeType>1){return}if(node.nodeName==="background-color"){this.board.containerObj.style.backgroundColor=node.firstChild.data}else if(node.nodeName==="style"){el=this.board.select(node.getAttribute("ref"));for(j=0;j<node.childNodes.length;j++){if(node.childNodes[j].nodeType===1){key=node.childNodes[j].nodeName;val=node.childNodes[j].firstChild.data;if(key==="stroke"){key="strokeColor"}else if(key==="stroke-width"||key==="border-width"){key="strokeWidth"}else if(key==="fill"){key="fillColor"}else if(key==="fill-opacity"){key="fillOpacity"}else if(key==="border-opacity"){key="strokeOpacity"}else if(key==="point-size"){key="size"}else if(key==="label"){key="name"}else if(key==="point-style"){key="face";if(val==="circle"){val="o"}else if(val==="cross"){val="+"}else if(val==="x-mark"){val="x"}else if(val==="square"){val="[]"}else if(val==="triangle"){val="triangleup"}else if(val==="point"){val="o"}else{JXG.debug("Display: not implemented"+node.nodeName)}}prop[key]=val}}el.setAttribute(prop)}else{JXG.debug("Display: not implemented"+node.nodeName)}},readDisplay:function(tree){var s;if(!JXG.exists(tree)||!JXG.isArray(tree)){return}for(s=0;s<tree[0].childNodes.length;s++){this.readDisplayProperty(tree,s)}}});JXG.registerReader(JXG.IntergeoReader,["i2g","xml","intergeo"])})();
61
+ !function(){"use strict";JXG.IntergeoReader=function(t,e){var i;this.board=t,i=this.prepareString(e),this.tree=JXG.XML.parse(i)},JXG.extend(JXG.IntergeoReader.prototype,{objects:{},read:function(){this.board.origin={},this.board.origin.usrCoords=[1,0,0],this.board.origin.scrCoords=[1,400,300],this.board.unitX=30,this.board.unitY=30,this.readElements(this.tree.getElementsByTagName("elements")),this.readConstraints(this.tree.getElementsByTagName("constraints")),this.cleanUp(),this.board.fullUpdate(),this.readDisplay(this.tree.getElementsByTagName("display")),this.board.fullUpdate()},readElement:function(t,e){var i;(i=t[0].childNodes[e]).nodeType>1||("point"===i.nodeName?this.storePoint(i):"line"===i.nodeName||"line_segment"===i.nodeName||"ray"===i.nodeName||"vector"===i.nodeName?this.storeLine(i):"circle"===i.nodeName||"conic"===i.nodeName?this.storeConic(i):JXG.debug("Not implemented: "+i.nodeName+" "+i.getAttribute("id")))},readElements:function(t){var e;for(e=0;e<t[0].childNodes.length;e++)this.readElement(t,e)},storePoint:function(t){for(var e=0,i=0,s=0,o=t.childNodes[e],n=[],d=[];o.nodeType>1;)e+=1,o=t.childNodes[e];if("homogeneous_coordinates"===o.nodeName){for(i=0;i<o.childNodes.length;i++)if(1===o.childNodes[i].nodeType)if("double"===o.childNodes[i].nodeName)n.push(o.childNodes[i].firstChild.data);else{if("complex"!==o.childNodes[i].nodeName)return void JXG.debug("Not implemented: "+o.childNodes[i].nodeName);for(s=0;s<o.childNodes[i].childNodes.length;s++)"double"===o.childNodes[i].childNodes[s].nodeName&&n.push(o.childNodes[i].childNodes[s].firstChild.data)}for(i=0;i<n.length;i++)n[i]=parseFloat(n[i]);if(3===n.length)d=[n[2],n[0],n[1]];else{if(!(6===n.length&&Math.abs(n[1])<1e-10&&Math.abs(n[3])<1e-10&&Math.abs(n[5])<1e-10))return void JXG.debug("type not supported, yet");d=[n[4],n[0],n[2]]}}else if("euclidean_coordinates"===o.nodeName||"euclidian_coordinates"===o.nodeName){for(i=0;i<o.childNodes.length;i++)1===o.childNodes[i].nodeType&&n.push(o.childNodes[i].firstChild.data);for(i=0;i<n.length;i++)n[i]=parseFloat(n[i]);d=[n[0],n[1]]}else{if("polar_coordinates"!==o.nodeName)return void JXG.debug("This coordinate type is not yet implemented: "+o.nodeName);for(i=0;i<o.childNodes.length;i++)1===o.childNodes[i].nodeType&&n.push(o.childNodes[i].firstChild.data);for(i=0;i<n.length;i++)n[i]=parseFloat(n[i]);d=[n[0]*Math.cos(n[1]),n[0]*Math.sin(n[1])]}this.objects[t.getAttribute("id")]={id:t.getAttribute("id"),coords:null},this.objects[t.getAttribute("id")].coords=d,this.objects[t.getAttribute("id")].id=t.getAttribute("id"),this.objects[t.getAttribute("id")].exists=!1,this.objects[t.getAttribute("id")].i2geoType="point"},storeLine:function(t){var e,i,s,o;for(this.objects[t.getAttribute("id")]={id:t.getAttribute("id"),coords:null},e=0,i=t.childNodes[e];i.nodeType>1;)e+=1,i=t.childNodes[e];if("homogeneous_coordinates"===i.nodeName){for(s=[],o=0;o<i.childNodes.length;o++)1===i.childNodes[o].nodeType&&"double"===i.childNodes[o].nodeName&&s.push(parseFloat(i.childNodes[o].firstChild.data));this.objects[t.getAttribute("id")].coords=s,this.objects[t.getAttribute("id")].id=t.getAttribute("id"),this.objects[t.getAttribute("id")].exists=!1,this.objects[t.getAttribute("id")].i2geoType="line"}},storeConic:function(t){var e,i,s,o;for(this.objects[t.getAttribute("id")]={id:t.getAttribute("id"),coords:null},e=0,s=t.childNodes[e];s.nodeType>1;)e+=1,s=t.childNodes[e];if("matrix"===s.nodeName){for(o=[],i=0;i<s.childNodes.length;i++)1===s.childNodes[i].nodeType&&"double"===s.childNodes[i].nodeName&&o.push(parseFloat(s.childNodes[i].firstChild.data));this.objects[t.getAttribute("id")].coords=o,this.objects[t.getAttribute("id")].id=t.getAttribute("id"),this.objects[t.getAttribute("id")].exists=!1,this.objects[t.getAttribute("id")].i2geoType="conic"}},readConstraint:function(t,e){var i,s;(s=t[0].childNodes[e]).nodeType>1||("line_through_two_points"===s.nodeName?this.addLineThroughTwoPoints(s,!1):"ray_from_point_through_point"===s.nodeName?this.addLineThroughTwoPoints(s,!0):"line_through_point"===s.nodeName?this.addLineThroughPoint(s):"line_parallel_to_line_through_point"===s.nodeName?this.addLineParallelToLineThroughPoint(s,!1):"ray_from_point_and_vector"===s.nodeName?this.addLineParallelToLineThroughPoint(s,!0):"line_perpendicular_to_line_through_point"===s.nodeName?this.addLinePerpendicularToLineThroughPoint(s):"line_segment_by_points"===s.nodeName?this.addLineSegmentByTwoPoints(s):"vector_from_point_to_point"===s.nodeName?this.addVectorFromPointToPoint(s):"endpoints_of_line_segment"===s.nodeName?this.addEndpointsOfLineSegment(s):"free_line"===s.nodeName?this.addFreeLine(s):"point_on_line"===s.nodeName||"point_on_line_segment"===s.nodeName?this.addPointOnLine(s):"point_on_circle"===s.nodeName?this.addPointOnCircle(s):"angular_bisector_of_three_points"===s.nodeName?this.addAngularBisectorOfThreePoints(s,!1):"angular_bisectors_of_two_lines"===s.nodeName?this.addAngularBisectorsOfTwoLines(s):"line_angular_bisector_of_three_points"===s.nodeName?this.addAngularBisectorOfThreePoints(s,!0):"line_angular_bisectors_of_two_lines"===s.nodeName?this.addAngularBisectorsOfTwoLines(s):"midpoint_of_two_points"===s.nodeName||"midpoint"===s.nodeName?this.addMidpointOfTwoPoints(s):"midpoint_of_line_segment"===s.nodeName||"midpoint_line_segment"===s.nodeName?this.addMidpointOfLineSegment(s):"point_intersection_of_two_lines"===s.nodeName?this.addPointIntersectionOfTwoLines(s):"locus_defined_by_point"===s.nodeName?this.addLocusDefinedByPoint(s):"locus_defined_by_point_on_line"===s.nodeName||"locus_defined_by_point_on_line_segment"===s.nodeName?this.addLocusDefinedByPointOnLine(s):"locus_defined_by_line_through_point"===s.nodeName?this.addLocusDefinedByLineThroughPoint(s):"locus_defined_by_point_on_circle"===s.nodeName?this.addLocusDefinedByPointOnCircle(s):"circle_by_three_points"===s.nodeName?this.addCircleByThreePoints(s):"circle_by_center_and_point"===s.nodeName?this.addCircleByCenterAndPoint(s):"center_of_circle"===s.nodeName?this.addCenterOfCircle(s):"intersection_points_of_two_circles"===s.nodeName?this.addIntersectionPointsOfTwoCircles(s):"intersection_points_of_circle_and_line"===s.nodeName?this.addIntersectionPointsOfCircleAndLine(s):"other_intersection_point_of_two_circles"===s.nodeName?this.addOtherIntersectionPointOfTwoCircles(s):"other_intersection_point_of_circle_and_line"===s.nodeName?this.addOtherIntersectionPointOfCircleAndLine(s):"circle_tangent_lines_by_point"===s.nodeName?this.addCircleTangentLinesByPoint(s):"polygon_by_vertices"===s.nodeName?this.addPolygonByVertices(s):(i=this.readParams(s),JXG.debug("readConstraints: not implemented: "+s.nodeName+": "+i[0])))},readConstraints:function(t){var e;for(this.board.options.point.strokeColor="blue",this.board.options.point.fillColor="blue",e=0;e<t[0].childNodes.length;e++)this.readConstraint(t,e)},setAttributes:function(t){t.setAttribute({strokecolor:this.board.options.point.strokeColor,fillColor:this.board.options.point.fillColor})},readParams:function(t){var e,i=[];for(e=0;e<t.childNodes.length;e++)1===t.childNodes[e].nodeType&&i.push(t.childNodes[e].firstChild.data);return i},addPoint:function(t){return t.exists||(t.exists=!0,(t=this.board.create("point",t.coords,{name:t.id})).setAttribute({strokecolor:"red",fillColor:"red"})),t},addLine:function(t){var e,i,s=this.objects[t].coords;for(e=0;e<s.length;e++)s[e]=parseFloat(s[e]);i=this.board.create("line",[s[2],s[0],s[1]],{name:t,strokeColor:"black",withLabel:!0}),this.objects[t]=i},addConic:function(t){var e;return t.exists||(e=t.coords,(t=this.board.create("conic",[e[0],e[4],e[8],e[1],e[5],e[2]],{name:t.id})).exists=!0),t},cleanUp:function(){var t;for(t in this.objects)this.objects.hasOwnProperty(t)&&!1===this.objects[t].exists&&("point"===this.objects[t].i2geoType?this.addPoint(this.objects[t]):"line"===this.objects[t].i2geoType?this.addLine(this.objects[t]):"conic"===this.objects[t].i2geoType?this.addConic(this.objects[t]):JXG.debug("forgotten: "+this.objects[t].id+" of type "+this.objects[t].i2geoType))},addLineThroughTwoPoints:function(t,e){var i,s,o,n=this.readParams(t);i=this.addPoint(this.objects[n[1]]),s=this.addPoint(this.objects[n[2]]),o=this.board.create("line",[i.id,s.id],{name:n[0],withLabel:!0,straightFirst:!e,straightLast:!0}),this.objects[n[0]]=o,this.objects[n[0]].exists=!0},addLineThroughPoint:function(t){var e,i,s=this.readParams(t),o=this.objects[s[0]].coords,n=this.addPoint(this.objects[s[1]]);for(e=0;e<o.length;e++)o[e]=parseFloat(o[e]);i=this.board.create("line",[function(){return o[2]-o[0]*n.X()-o[1]*n.Y()-o[2]*n.Z()},o[0],o[1]],{name:s[0],strokeColor:"black",withLabel:!0}),this.objects[s[0]]=i,this.objects[s[0]].exists=!0},addLineParallelToLineThroughPoint:function(t,e){var i,s,o,n=this.readParams(t);i=this.addPoint(this.objects[n[1]]),s=this.addPoint(this.objects[n[2]]),o=this.board.create("parallel",[i.id,s.id],{name:n[0],withLabel:!0,straightFirst:!e,straightLast:!0}),this.objects[n[0]]=o,this.objects[n[0]].exists=!0},addLinePerpendicularToLineThroughPoint:function(t){var e,i,s,o=this.readParams(t);e=this.addPoint(this.objects[o[1]]),i=this.addPoint(this.objects[o[2]]),s=this.board.create("perpendicular",[e.id,i.id],{name:o[0],id:o[0],straightFirst:!0,straightLast:!0,point:{name:o[0]+"foot",id:o[0]+"foot"},withLabel:!0}),this.objects[o[0]]=s,this.objects[o[0]].exists=!0},addLineSegmentByTwoPoints:function(t){var e,i,s,o=this.readParams(t);e=this.addPoint(this.objects[o[1]]),i=this.addPoint(this.objects[o[2]]),s=this.board.create("line",[e.id,i.id],{name:o[0],straightFirst:!1,straightLast:!1,strokeColor:"black",withLabel:!0}),this.objects[o[0]]=s,this.objects[o[0]].exists=!0},addPointIntersectionOfTwoLines:function(t){var e=this.readParams(t),i=this.objects[e[1]],s=this.objects[e[2]];this.objects[e[0]]=this.board.create("intersection",[i,s,0],{name:e[0],id:e[0],withLabel:!0}),this.setAttributes(this.objects[e[0]]),this.objects[e[0]].exists=!0},addFreeLine:function(t){var e=this.readParams(t),i=this.objects[e[0]].coords[0],s=this.objects[e[0]].coords[1],o=this.objects[e[0]].coords[2];this.objects[e[0]]=this.board.create("line",[o,i,s],{name:e[0],id:e[0],withLabel:!0}),this.objects[e[0]].exists=!0},addPointOnLine:function(t){var e=this.readParams(t),i=this.board.select(e[1]);this.board.create("glider",[0,0,i],{name:e[0],id:e[0],withLabel:!0}),this.objects[e[0]].exists=!0},addPointOnCircle:function(t){var e=this.readParams(t),i=this.board.select(e[1]);i.update(),this.board.create("glider",[this.objects[e[0]].coords[1],this.objects[e[0]].coords[2],i],{name:e[0],id:e[0],withLabel:!0}),this.objects[e[0]].exists=!0},addEndpointsOfLineSegment:function(t){var e=this.readParams(t),i=this.objects[e[2]],s=this.addPoint(this.objects[e[0]]),o=this.addPoint(this.objects[e[1]]);s.addConstraint([function(){return i.point1.Z()},function(){return i.point1.X()},function(){return i.point1.Y()}]),o.addConstraint([function(){return i.point2.Z()},function(){return i.point2.X()},function(){return i.point2.Y()}]),this.setAttributes(s),this.setAttributes(o)},addAngularBisectorOfThreePoints:function(t,e){var i,s,o,n,d=this.readParams(t);i=this.addPoint(this.objects[d[1]]),s=this.addPoint(this.objects[d[2]]),o=this.addPoint(this.objects[d[3]]),n=this.board.create("bisector",[i.id,s.id,o.id],{name:d[0],id:d[0],withLabel:!0,straightFirst:e,straightLast:!0,strokeColor:"#000000"}),this.objects[d[0]]=n,this.objects[d[0]].exists=!0},addMidpointOfTwoPoints:function(t){var e,i,s,o=this.readParams(t);e=this.addPoint(this.objects[o[1]]),i=this.addPoint(this.objects[o[2]]),s=this.board.create("midpoint",[e.id,i.id],{name:o[0]}),this.setAttributes(s),this.objects[o[0]].exists=!0},addMidpointOfLineSegment:function(t){var e=this.readParams(t),i=this.board.select(e[1]),s=this.board.create("midpoint",[i.point1,i.point2],{name:e[0]});this.setAttributes(s),this.objects[e[0]].exists=!0},addCircleByThreePoints:function(t){var e,i=this.readParams(t),s=[];for(e=0;e<3;e++)s[e]=this.addPoint(this.objects[i[e+1]]);this.board.create("circumcircle",s,{name:i[0],id:i[0],point:{name:i[0]+"c",id:i[0]+"c"},withLabel:!0}),this.objects[i[0]].exists=!0},addCenterOfCircle:function(t){var e=this.readParams(t),i=this.board.select(e[1]),s=this.board.create("point",[function(){return i.center.X()},function(){return i.center.Y()}],{name:e[0],id:e[0],withLabel:!0});this.setAttributes(s),this.objects[e[0]].exists=!0},addCircleTangentLinesByPoint:function(t){var e,i,s,o,n,d=this.readParams(t),r=this.board.select(d[2]),a=this.addPoint(this.objects[d[3]]);e=this.board.create("line",[function(){return JXG.Math.matVecMult(r.quadraticform,a.coords.usrCoords)[0]},function(){return JXG.Math.matVecMult(r.quadraticform,a.coords.usrCoords)[1]},function(){return JXG.Math.matVecMult(r.quadraticform,a.coords.usrCoords)[2]}],{visible:!1}),i=this.board.create("intersection",[r,e,0],{visible:!1}),s=this.board.create("intersection",[r,e,1],{visible:!1}),o=this.board.create("tangent",[i,r]),n=this.board.create("tangent",[s,r]),this.objects[d[0]]=o,this.objects[d[1]]=n,this.objects[d[0]].exists=!0,this.objects[d[1]].exists=!0},addIntersectionPointsOfTwoCircles:function(t){var e,i,s=this.readParams(t),o=this.board.select(s[2]),n=this.board.select(s[3]);e=this.board.create("intersection",[o,n,0],{name:s[0],id:s[0],withLabel:!0}),i=this.board.create("intersection",[o,n,1],{name:s[1],id:s[1],withLabel:!0}),this.setAttributes(e),this.setAttributes(i),this.objects[s[0]].exists=!0,this.objects[s[1]].exists=!0},addIntersectionPointsOfCircleAndLine:function(t){var e,i,s=this.readParams(t),o=this.board.select(s[2]),n=this.board.select(s[3]);e=this.board.create("intersection",[o,n,0],{name:s[0],id:s[0],withLabel:!0}),i=this.board.create("intersection",[o,n,1],{name:s[1],id:s[1],withLabel:!0}),this.setAttributes(e),this.setAttributes(i),this.objects[s[0]].exists=!0,this.objects[s[1]].exists=!0},addCircleByCenterAndPoint:function(t){var e=this.readParams(t),i=this.addPoint(this.objects[e[1]]),s=this.addPoint(this.objects[e[2]]);this.board.create("circle",[i.id,s.id],{name:e[0],id:e[0],withLabel:!0}),this.objects[e[0]].exists=!0},addOtherIntersectionPointOfTwoCircles:function(t){var e,i=this.readParams(t),s=this.board.select(i[2]),o=this.board.select(i[3]),n=this.board.select(i[1]);e=this.board.create("otherintersection",[s,o,n],{name:i[0],id:i[0],withLabel:!0}),this.setAttributes(e),this.objects[i[0]].exists=!0},addOtherIntersectionPointOfCircleAndLine:function(t){this.addOtherIntersectionPointOfTwoCircles(t)},addAngularBisectorsOfTwoLines:function(t){var e=this.readParams(t),i=this.objects[e[2]],s=this.objects[e[3]];this.board.create("bisectorlines",[i,s],{line1:{name:e[0],id:e[0],straightFirst:!0,straightLast:!0},line2:{name:e[1],id:e[1],straightFirst:!0,straightLast:!0},withLabel:!0}),this.objects[e[0]].exists=!0,this.objects[e[1]].exists=!0},addPolygonByVertices:function(t){var e,i,s=[],o=[],n=this.readParams(t);for(e=0;e<t.childNodes.length;e++)if(1===t.childNodes[e].nodeType&&"list_of_vertices"===t.childNodes[e].nodeName){i=t.childNodes[e],s=this.readParams(i);break}for(e=0;e<s.length;e++)o.push(this.addPoint(this.objects[s[e]]));this.board.create("polygon",o,{name:n[0],id:n[0],withLabel:!0}),this.objects[n[0]].exists=!0},addVectorFromPointToPoint:function(t){var e,i,s,o=this.readParams(t);i=this.addPoint(this.objects[o[1]]),s=this.addPoint(this.objects[o[2]]),e=this.board.create("arrow",[i.id,s.id],{name:o[0]}),this.setAttributes(e),this.objects[o[0]].exists=!0},addLocusDefinedByPoint:function(t){var e=this.readParams(t),i=this.board.select(e[1]);i.setAttribute({trace:!0}),this.objects[e[1]]=i,this.setAttributes(i)},addLocusDefinedByPointOnLine:function(t){var e=this.readParams(t),i=this.board.select(e[1]);i.setAttribute({trace:!0}),this.objects[e[1]]=i,this.setAttributes(i)},addLocusDefinedByLineThroughPoint:function(t){var e=this.readParams(t),i=this.board.select(e[1]);i.setAttribute({trace:!0}),this.objects[e[1]]=i,this.setAttributes(i)},addLocusDefinedByPointOnCircle:function(t){var e=this.readParams(t),i=this.board.select(e[1]);i.setAttribute({trace:!0}),this.objects[e[1]]=i,this.setAttributes(i)},prepareString:function(t){var e,i=[],s=!1;if("PK"!==t.slice(0,2)&&31!==JXG.Util.UTF8.asciiCharCodeAt(t.slice(0,1),0)||(s=!0),s||0===t.indexOf("<")||(t=JXG.Util.Base64.decode(t)),0!==t.indexOf("<")){for(e=0;e<t.length;e++)i[e]=JXG.Util.UTF8.asciiCharCodeAt(t,e);t=new JXG.Util.Unzip(i).unzipFile("construction/intergeo.xml")}return t},readDisplayProperty:function(t,e){var i,s,o,n,d,r={};if(!((s=t[0].childNodes[e]).nodeType>1))if("background-color"===s.nodeName)this.board.containerObj.style.backgroundColor=s.firstChild.data;else if("style"===s.nodeName){for(o=this.board.select(s.getAttribute("ref")),i=0;i<s.childNodes.length;i++)1===s.childNodes[i].nodeType&&(n=s.childNodes[i].nodeName,d=s.childNodes[i].firstChild.data,"stroke"===n?n="strokeColor":"stroke-width"===n||"border-width"===n?n="strokeWidth":"fill"===n?n="fillColor":"fill-opacity"===n?n="fillOpacity":"border-opacity"===n?n="strokeOpacity":"point-size"===n?n="size":"label"===n?n="name":"point-style"===n&&(n="face","circle"===d?d="o":"cross"===d?d="+":"x-mark"===d?d="x":"square"===d?d="[]":"triangle"===d?d="triangleup":"point"===d?d="o":JXG.debug("Display: not implemented"+s.nodeName)),r[n]=d);o.setAttribute(r)}else JXG.debug("Display: not implemented"+s.nodeName)},readDisplay:function(t){var e;if(JXG.exists(t)&&JXG.isArray(t))for(e=0;e<t[0].childNodes.length;e++)this.readDisplayProperty(t,e)}}),JXG.registerReader(JXG.IntergeoReader,["i2g","xml","intergeo"])}();
@@ -39,9 +39,10 @@
39
39
  border-width: 1px;
40
40
  border-color: #356aa0;
41
41
  border-radius: 10px;
42
+ margin: 0;
42
43
  -webkit-border-radius: 10px;
43
44
  -ms-touch-action: none;
44
- /* touch-action: none; */ /* Set with JavaScript */
45
+ /* "touch-action: none;" is set with JavaScript. */
45
46
  }
46
47
 
47
48
  .jxgbox svg text {
@@ -54,23 +55,20 @@
54
55
 
55
56
  .JXGtext {
56
57
  font-family: Courier, monospace;
57
- /**
58
+ /*
58
59
  * The default font family is now set in
59
60
  * JXG.Options.text.cssdefaultstyle = 'font-family: Arial, Helvetica, Geneva, sans-serif;'
60
61
  */
61
62
 
62
- /* font-family: Arial, Helvetica, Geneva, sans-serif; */
63
63
  /* "background-color: transparent;" may produce artefacts in IE. Solution: setting a color explicitly. */
64
-
65
64
  background-color: transparent;
66
- /*background-color: rgba(255, 255, 255, 0.6);*/ /* From 1.2.4 */
67
65
  padding: 0;
68
66
  margin: 0;
69
67
  }
70
68
 
71
69
  .JXGinfobox {
72
70
  border-style: none;
73
- border-width: 1px;
71
+ border-width: 0;
74
72
  border-color: black;
75
73
  }
76
74
 
@@ -78,7 +76,6 @@
78
76
  .JXGimage {
79
77
  /* opacity: 1.0; */
80
78
  }
81
-
82
79
  .JXGimageHighlight {
83
80
  /* opacity: 0.6; */
84
81
  }
@@ -96,11 +93,6 @@
96
93
  padding: 2px;
97
94
  font-size: 14px;
98
95
  cursor: pointer;
99
-
100
- }
101
-
102
- .JXG_navigation:hover {
103
-
104
96
  }
105
97
 
106
98
  .JXG_navigation_button {
@@ -109,7 +101,6 @@
109
101
 
110
102
  .JXG_navigation_button:hover {
111
103
  border-radius: 2px;
112
- background-color: #c0c0c0;
113
104
  background: rgba(184, 184, 184, 0.5);
114
105
  }
115
106