toxiclibs 0.4.0 → 0.8.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (404) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +16 -0
  3. data/.mvn/extensions.xml +8 -0
  4. data/.mvn/wrapper/maven-wrapper.properties +1 -0
  5. data/.travis.yml +23 -0
  6. data/CHANGELOG.md +7 -0
  7. data/COPYING.md +14 -0
  8. data/Gemfile +10 -0
  9. data/LICENSE +675 -0
  10. data/README.md +9 -7
  11. data/Rakefile +25 -81
  12. data/examples/README.md +5 -0
  13. data/examples/attract_repel/attract_repel.rb +30 -0
  14. data/examples/attract_repel/attractor.rb +23 -0
  15. data/examples/attract_repel/particle.rb +27 -0
  16. data/examples/data/ReplicaBold.ttf +0 -0
  17. data/examples/data/ti_yong.png +0 -0
  18. data/examples/force_directed/cluster.rb +76 -0
  19. data/examples/force_directed/force_directed_graph.rb +92 -0
  20. data/examples/force_directed/node.rb +26 -0
  21. data/examples/gray_scott_image.rb +74 -0
  22. data/examples/gray_scott_tone_map.rb +77 -0
  23. data/examples/implicit.rb +139 -0
  24. data/examples/inflate_mesh.rb +89 -0
  25. data/examples/model_align.rb +43 -0
  26. data/examples/physics_type.rb +77 -0
  27. data/examples/povmesh/data/mask.jpg +0 -0
  28. data/examples/povmesh/ftest.rb +59 -0
  29. data/examples/povmesh/mesh_align.rb +47 -0
  30. data/examples/povmesh/tentacle.rb +71 -0
  31. data/examples/simple_cluster/cluster.rb +47 -0
  32. data/examples/simple_cluster/node.rb +27 -0
  33. data/examples/simple_cluster/simple_cluster.rb +60 -0
  34. data/examples/soft_body/blanket.rb +45 -0
  35. data/examples/soft_body/connection.rb +16 -0
  36. data/examples/soft_body/particle.rb +22 -0
  37. data/examples/soft_body/soft_body_square_adapted.rb +55 -0
  38. data/examples/spherical_harmonics_mesh.rb +50 -0
  39. data/examples/test_rect.rb +32 -0
  40. data/lib/toxiclibs.jar +0 -0
  41. data/lib/toxiclibs.rb +72 -22
  42. data/lib/toxiclibs/version.rb +1 -1
  43. data/pom.rb +63 -0
  44. data/pom.xml +124 -0
  45. data/src/com/toxi/net/ClientListener.java +41 -0
  46. data/src/com/toxi/net/ServerListener.java +70 -0
  47. data/src/com/toxi/net/ServerListenerAdapter.java +47 -0
  48. data/src/com/toxi/net/ServerState.java +18 -0
  49. data/src/com/toxi/net/UDPConnection.java +66 -0
  50. data/src/com/toxi/net/UDPSyncClient.java +81 -0
  51. data/src/com/toxi/net/UDPSyncServer.java +450 -0
  52. data/src/com/toxi/nio/UDPClient.java +121 -0
  53. data/src/com/toxi/nio/UDPClientState.java +32 -0
  54. data/src/com/toxi/nio/UDPServer.java +129 -0
  55. data/src/toxi/audio/AudioBuffer.java +229 -0
  56. data/src/toxi/audio/AudioSource.java +288 -0
  57. data/src/toxi/audio/DecompressInputStream.java +159 -0
  58. data/src/toxi/audio/IIRFilter.java +197 -0
  59. data/src/toxi/audio/JOALUtil.java +388 -0
  60. data/src/toxi/audio/MultiTimbralManager.java +162 -0
  61. data/src/toxi/audio/SoundListener.java +154 -0
  62. data/src/toxi/audio/SynthUtil.java +109 -0
  63. data/src/toxi/color/AccessCriteria.java +114 -0
  64. data/src/toxi/color/AlphaAccessor.java +67 -0
  65. data/src/toxi/color/CMYKAccessor.java +122 -0
  66. data/src/toxi/color/CMYKDistanceProxy.java +40 -0
  67. data/src/toxi/color/ColorGradient.java +260 -0
  68. data/src/toxi/color/ColorList.java +699 -0
  69. data/src/toxi/color/ColorRange.java +671 -0
  70. data/src/toxi/color/ColorTheme.java +163 -0
  71. data/src/toxi/color/DistanceProxy.java +44 -0
  72. data/src/toxi/color/HSVAccessor.java +113 -0
  73. data/src/toxi/color/HSVDistanceProxy.java +40 -0
  74. data/src/toxi/color/HistEntry.java +85 -0
  75. data/src/toxi/color/Histogram.java +185 -0
  76. data/src/toxi/color/Hue.java +249 -0
  77. data/src/toxi/color/LuminanceAccessor.java +78 -0
  78. data/src/toxi/color/NamedColor.java +935 -0
  79. data/src/toxi/color/ProximityComparator.java +70 -0
  80. data/src/toxi/color/RGBAccessor.java +113 -0
  81. data/src/toxi/color/RGBDistanceProxy.java +41 -0
  82. data/src/toxi/color/ReadonlyTColor.java +296 -0
  83. data/src/toxi/color/TColor.java +1677 -0
  84. data/src/toxi/color/TColorAdapter.java +68 -0
  85. data/src/toxi/color/ToneMap.java +218 -0
  86. data/src/toxi/color/theory/AnalogousStrategy.java +140 -0
  87. data/src/toxi/color/theory/ColorTheoryRegistry.java +139 -0
  88. data/src/toxi/color/theory/ColorTheoryStrategy.java +56 -0
  89. data/src/toxi/color/theory/ComplementaryStrategy.java +111 -0
  90. data/src/toxi/color/theory/CompoundTheoryStrategy.java +143 -0
  91. data/src/toxi/color/theory/LeftSplitComplementaryStrategy.java +82 -0
  92. data/src/toxi/color/theory/MonochromeTheoryStrategy.java +103 -0
  93. data/src/toxi/color/theory/RightSplitComplementaryStrategy.java +82 -0
  94. data/src/toxi/color/theory/SingleComplementStrategy.java +76 -0
  95. data/src/toxi/color/theory/SplitComplementaryStrategy.java +77 -0
  96. data/src/toxi/color/theory/TetradTheoryStrategy.java +114 -0
  97. data/src/toxi/color/theory/TriadTheoryStrategy.java +77 -0
  98. data/src/toxi/data/csv/CSVAdapter.java +74 -0
  99. data/src/toxi/data/csv/CSVFieldMapper.java +212 -0
  100. data/src/toxi/data/csv/CSVListener.java +61 -0
  101. data/src/toxi/data/csv/CSVParser.java +202 -0
  102. data/src/toxi/data/feeds/AtomAuthor.java +49 -0
  103. data/src/toxi/data/feeds/AtomContent.java +50 -0
  104. data/src/toxi/data/feeds/AtomEntry.java +111 -0
  105. data/src/toxi/data/feeds/AtomFeed.java +129 -0
  106. data/src/toxi/data/feeds/AtomLink.java +62 -0
  107. data/src/toxi/data/feeds/RSSChannel.java +88 -0
  108. data/src/toxi/data/feeds/RSSEnclosure.java +60 -0
  109. data/src/toxi/data/feeds/RSSFeed.java +99 -0
  110. data/src/toxi/data/feeds/RSSItem.java +104 -0
  111. data/src/toxi/data/feeds/util/EntityStripper.java +2480 -0
  112. data/src/toxi/data/feeds/util/Iso8601DateAdapter.java +101 -0
  113. data/src/toxi/data/feeds/util/Rfc822DateAdapter.java +93 -0
  114. data/src/toxi/geom/AABB.java +658 -0
  115. data/src/toxi/geom/Axis3D.java +116 -0
  116. data/src/toxi/geom/AxisAlignedCylinder.java +163 -0
  117. data/src/toxi/geom/BernsteinPolynomial.java +94 -0
  118. data/src/toxi/geom/BezierCurve2D.java +159 -0
  119. data/src/toxi/geom/BezierCurve3D.java +148 -0
  120. data/src/toxi/geom/BooleanShapeBuilder.java +185 -0
  121. data/src/toxi/geom/BoxIntersector.java +52 -0
  122. data/src/toxi/geom/Circle.java +230 -0
  123. data/src/toxi/geom/CircleIntersector.java +85 -0
  124. data/src/toxi/geom/Cone.java +150 -0
  125. data/src/toxi/geom/ConvexPolygonClipper.java +136 -0
  126. data/src/toxi/geom/CoordinateExtractor.java +16 -0
  127. data/src/toxi/geom/Ellipse.java +250 -0
  128. data/src/toxi/geom/GMatrix.java +2599 -0
  129. data/src/toxi/geom/GVector.java +833 -0
  130. data/src/toxi/geom/GlobalGridTesselator.java +54 -0
  131. data/src/toxi/geom/GridTesselator.java +108 -0
  132. data/src/toxi/geom/Intersector2D.java +49 -0
  133. data/src/toxi/geom/Intersector3D.java +51 -0
  134. data/src/toxi/geom/IsectData2D.java +103 -0
  135. data/src/toxi/geom/IsectData3D.java +103 -0
  136. data/src/toxi/geom/Line2D.java +534 -0
  137. data/src/toxi/geom/Line3D.java +471 -0
  138. data/src/toxi/geom/LineStrip2D.java +430 -0
  139. data/src/toxi/geom/LineStrip3D.java +230 -0
  140. data/src/toxi/geom/LocalGridTesselator.java +57 -0
  141. data/src/toxi/geom/Matrix3d.java +3048 -0
  142. data/src/toxi/geom/Matrix4f.java +3446 -0
  143. data/src/toxi/geom/Matrix4x4.java +1076 -0
  144. data/src/toxi/geom/MatrixSizeException.java +58 -0
  145. data/src/toxi/geom/OctreeVisitor.java +44 -0
  146. data/src/toxi/geom/Origin3D.java +148 -0
  147. data/src/toxi/geom/Plane.java +293 -0
  148. data/src/toxi/geom/PlaneIntersector.java +57 -0
  149. data/src/toxi/geom/PointCloud3D.java +253 -0
  150. data/src/toxi/geom/PointOctree.java +502 -0
  151. data/src/toxi/geom/PointQuadtree.java +375 -0
  152. data/src/toxi/geom/Polygon2D.java +1038 -0
  153. data/src/toxi/geom/PolygonClipper2D.java +45 -0
  154. data/src/toxi/geom/PolygonTesselator.java +20 -0
  155. data/src/toxi/geom/QuadtreeVisitor.java +44 -0
  156. data/src/toxi/geom/Quaternion.java +641 -0
  157. data/src/toxi/geom/Ray2D.java +146 -0
  158. data/src/toxi/geom/Ray3D.java +150 -0
  159. data/src/toxi/geom/Ray3DIntersector.java +75 -0
  160. data/src/toxi/geom/ReadonlyVec2D.java +575 -0
  161. data/src/toxi/geom/ReadonlyVec3D.java +628 -0
  162. data/src/toxi/geom/ReadonlyVec4D.java +431 -0
  163. data/src/toxi/geom/Rect.java +720 -0
  164. data/src/toxi/geom/Reflector3D.java +58 -0
  165. data/src/toxi/geom/Shape2D.java +94 -0
  166. data/src/toxi/geom/Shape3D.java +42 -0
  167. data/src/toxi/geom/SingularMatrixException.java +57 -0
  168. data/src/toxi/geom/SpatialBins.java +182 -0
  169. data/src/toxi/geom/SpatialIndex.java +61 -0
  170. data/src/toxi/geom/Sphere.java +224 -0
  171. data/src/toxi/geom/SphereIntersectorReflector.java +196 -0
  172. data/src/toxi/geom/Spline2D.java +349 -0
  173. data/src/toxi/geom/Spline3D.java +351 -0
  174. data/src/toxi/geom/SutherlandHodgemanClipper.java +151 -0
  175. data/src/toxi/geom/Triangle2D.java +422 -0
  176. data/src/toxi/geom/Triangle3D.java +456 -0
  177. data/src/toxi/geom/TriangleIntersector.java +105 -0
  178. data/src/toxi/geom/Vec2D.java +1328 -0
  179. data/src/toxi/geom/Vec3D.java +1832 -0
  180. data/src/toxi/geom/Vec4D.java +985 -0
  181. data/src/toxi/geom/VecMathUtil.java +100 -0
  182. data/src/toxi/geom/XAxisCylinder.java +64 -0
  183. data/src/toxi/geom/YAxisCylinder.java +65 -0
  184. data/src/toxi/geom/ZAxisCylinder.java +64 -0
  185. data/src/toxi/geom/mesh/BezierPatch.java +200 -0
  186. data/src/toxi/geom/mesh/BoxSelector.java +62 -0
  187. data/src/toxi/geom/mesh/DefaultSTLColorModel.java +67 -0
  188. data/src/toxi/geom/mesh/DefaultSelector.java +50 -0
  189. data/src/toxi/geom/mesh/Face.java +176 -0
  190. data/src/toxi/geom/mesh/LaplacianSmooth.java +80 -0
  191. data/src/toxi/geom/mesh/MaterialiseSTLColorModel.java +150 -0
  192. data/src/toxi/geom/mesh/Mesh3D.java +224 -0
  193. data/src/toxi/geom/mesh/MeshIntersector.java +91 -0
  194. data/src/toxi/geom/mesh/OBJWriter.java +194 -0
  195. data/src/toxi/geom/mesh/PLYWriter.java +167 -0
  196. data/src/toxi/geom/mesh/PlaneSelector.java +90 -0
  197. data/src/toxi/geom/mesh/STLColorModel.java +54 -0
  198. data/src/toxi/geom/mesh/STLReader.java +185 -0
  199. data/src/toxi/geom/mesh/STLWriter.java +323 -0
  200. data/src/toxi/geom/mesh/SphereFunction.java +156 -0
  201. data/src/toxi/geom/mesh/SphericalHarmonics.java +110 -0
  202. data/src/toxi/geom/mesh/SuperEllipsoid.java +110 -0
  203. data/src/toxi/geom/mesh/SurfaceFunction.java +75 -0
  204. data/src/toxi/geom/mesh/SurfaceMeshBuilder.java +149 -0
  205. data/src/toxi/geom/mesh/Terrain.java +451 -0
  206. data/src/toxi/geom/mesh/TriangleMesh.java +1201 -0
  207. data/src/toxi/geom/mesh/Vertex.java +78 -0
  208. data/src/toxi/geom/mesh/VertexSelector.java +193 -0
  209. data/src/toxi/geom/mesh/WEFace.java +100 -0
  210. data/src/toxi/geom/mesh/WEMeshFilterStrategy.java +51 -0
  211. data/src/toxi/geom/mesh/WETriangleMesh.java +761 -0
  212. data/src/toxi/geom/mesh/WEVertex.java +134 -0
  213. data/src/toxi/geom/mesh/WingedEdge.java +115 -0
  214. data/src/toxi/geom/mesh/subdiv/CentroidSubdiv.java +37 -0
  215. data/src/toxi/geom/mesh/subdiv/DisplacementSubdivision.java +85 -0
  216. data/src/toxi/geom/mesh/subdiv/DualDisplacementSubdivision.java +94 -0
  217. data/src/toxi/geom/mesh/subdiv/DualSubdivision.java +49 -0
  218. data/src/toxi/geom/mesh/subdiv/EdgeLengthComparator.java +50 -0
  219. data/src/toxi/geom/mesh/subdiv/FaceCountComparator.java +51 -0
  220. data/src/toxi/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +80 -0
  221. data/src/toxi/geom/mesh/subdiv/MidpointSubdiv.java +42 -0
  222. data/src/toxi/geom/mesh/subdiv/MidpointSubdivision.java +48 -0
  223. data/src/toxi/geom/mesh/subdiv/NewSubdivStrategy.java +23 -0
  224. data/src/toxi/geom/mesh/subdiv/NormalDisplacementSubdivision.java +74 -0
  225. data/src/toxi/geom/mesh/subdiv/SubdivisionStrategy.java +83 -0
  226. data/src/toxi/geom/mesh/subdiv/TriSubdivision.java +51 -0
  227. data/src/toxi/geom/mesh2d/DelaunayTriangle.java +222 -0
  228. data/src/toxi/geom/mesh2d/DelaunayTriangulation.java +327 -0
  229. data/src/toxi/geom/mesh2d/DelaunayVertex.java +560 -0
  230. data/src/toxi/geom/mesh2d/Voronoi.java +149 -0
  231. data/src/toxi/geom/nurbs/BasicNurbsCurve.java +210 -0
  232. data/src/toxi/geom/nurbs/BasicNurbsSurface.java +233 -0
  233. data/src/toxi/geom/nurbs/ControlNet.java +148 -0
  234. data/src/toxi/geom/nurbs/CurveCreator.java +112 -0
  235. data/src/toxi/geom/nurbs/CurveUtils.java +259 -0
  236. data/src/toxi/geom/nurbs/InterpolationException.java +65 -0
  237. data/src/toxi/geom/nurbs/KnotVector.java +333 -0
  238. data/src/toxi/geom/nurbs/NurbsCreator.java +815 -0
  239. data/src/toxi/geom/nurbs/NurbsCurve.java +120 -0
  240. data/src/toxi/geom/nurbs/NurbsMeshCreator.java +145 -0
  241. data/src/toxi/geom/nurbs/NurbsSurface.java +147 -0
  242. data/src/toxi/image/util/Filter8bit.java +331 -0
  243. data/src/toxi/image/util/TiledFrameExporter.java +162 -0
  244. data/src/toxi/math/BezierInterpolation.java +102 -0
  245. data/src/toxi/math/CircularInterpolation.java +88 -0
  246. data/src/toxi/math/CosineInterpolation.java +51 -0
  247. data/src/toxi/math/DecimatedInterpolation.java +77 -0
  248. data/src/toxi/math/ExponentialInterpolation.java +68 -0
  249. data/src/toxi/math/InterpolateStrategy.java +60 -0
  250. data/src/toxi/math/Interpolation2D.java +93 -0
  251. data/src/toxi/math/LinearInterpolation.java +46 -0
  252. data/src/toxi/math/MathUtils.java +990 -0
  253. data/src/toxi/math/NonLinearScaleMap.java +101 -0
  254. data/src/toxi/math/ScaleMap.java +183 -0
  255. data/src/toxi/math/SigmoidInterpolation.java +78 -0
  256. data/src/toxi/math/SinCosLUT.java +141 -0
  257. data/src/toxi/math/ThresholdInterpolation.java +58 -0
  258. data/src/toxi/math/ZoomLensInterpolation.java +126 -0
  259. data/src/toxi/math/conversion/UnitTranslator.java +161 -0
  260. data/src/toxi/math/noise/PerlinNoise.java +281 -0
  261. data/src/toxi/math/noise/SimplexNoise.java +542 -0
  262. data/src/toxi/math/waves/AMFMSineWave.java +143 -0
  263. data/src/toxi/math/waves/AbstractWave.java +248 -0
  264. data/src/toxi/math/waves/ConstantWave.java +48 -0
  265. data/src/toxi/math/waves/FMHarmonicSquareWave.java +155 -0
  266. data/src/toxi/math/waves/FMSawtoothWave.java +144 -0
  267. data/src/toxi/math/waves/FMSineWave.java +142 -0
  268. data/src/toxi/math/waves/FMSquareWave.java +143 -0
  269. data/src/toxi/math/waves/FMTriangleWave.java +126 -0
  270. data/src/toxi/math/waves/SineWave.java +81 -0
  271. data/src/toxi/math/waves/Wave2D.java +68 -0
  272. data/src/toxi/math/waves/WaveState.java +69 -0
  273. data/src/toxi/music/scale/AbstractScale.java +117 -0
  274. data/src/toxi/music/scale/GenericScale.java +66 -0
  275. data/src/toxi/music/scale/MajorScale.java +41 -0
  276. data/src/toxi/newmesh/AttributedEdge.java +106 -0
  277. data/src/toxi/newmesh/AttributedFace.java +63 -0
  278. data/src/toxi/newmesh/IndexedTriangleMesh.java +809 -0
  279. data/src/toxi/newmesh/MeshAttributeCompiler.java +45 -0
  280. data/src/toxi/newmesh/MeshFaceNormalCompiler.java +52 -0
  281. data/src/toxi/newmesh/MeshUVCompiler.java +52 -0
  282. data/src/toxi/newmesh/MeshVertexColorCompiler.java +49 -0
  283. data/src/toxi/newmesh/MeshVertexCompiler.java +54 -0
  284. data/src/toxi/newmesh/MeshVertexNormalCompiler.java +55 -0
  285. data/src/toxi/newmesh/SpatialIndex.java +78 -0
  286. data/src/toxi/physics2d/ParticlePath2D.java +100 -0
  287. data/src/toxi/physics2d/ParticleString2D.java +184 -0
  288. data/src/toxi/physics2d/PullBackSpring2D.java +51 -0
  289. data/src/toxi/physics2d/VerletConstrainedSpring2D.java +89 -0
  290. data/src/toxi/physics2d/VerletMinDistanceSpring2D.java +57 -0
  291. data/src/toxi/physics2d/VerletParticle2D.java +457 -0
  292. data/src/toxi/physics2d/VerletPhysics2D.java +448 -0
  293. data/src/toxi/physics2d/VerletSpring2D.java +181 -0
  294. data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +212 -0
  295. data/src/toxi/physics2d/behaviors/ConstantForceBehavior2D.java +112 -0
  296. data/src/toxi/physics2d/behaviors/GravityBehavior2D.java +61 -0
  297. data/src/toxi/physics2d/behaviors/ParticleBehavior2D.java +66 -0
  298. data/src/toxi/physics2d/constraints/AngularConstraint.java +83 -0
  299. data/src/toxi/physics2d/constraints/AxisConstraint.java +71 -0
  300. data/src/toxi/physics2d/constraints/CircularConstraint.java +69 -0
  301. data/src/toxi/physics2d/constraints/MaxConstraint.java +66 -0
  302. data/src/toxi/physics2d/constraints/MinConstraint.java +66 -0
  303. data/src/toxi/physics2d/constraints/ParticleConstraint2D.java +47 -0
  304. data/src/toxi/physics2d/constraints/PolygonConstraint.java +93 -0
  305. data/src/toxi/physics2d/constraints/RectConstraint.java +114 -0
  306. data/src/toxi/physics3d/ParticlePath3D.java +100 -0
  307. data/src/toxi/physics3d/ParticleString3D.java +184 -0
  308. data/src/toxi/physics3d/PullBackSpring3D.java +50 -0
  309. data/src/toxi/physics3d/VerletConstrainedSpring3D.java +88 -0
  310. data/src/toxi/physics3d/VerletMinDistanceSpring3D.java +56 -0
  311. data/src/toxi/physics3d/VerletParticle3D.java +385 -0
  312. data/src/toxi/physics3d/VerletPhysics3D.java +417 -0
  313. data/src/toxi/physics3d/VerletSpring3D.java +180 -0
  314. data/src/toxi/physics3d/behaviors/AttractionBehavior3D.java +182 -0
  315. data/src/toxi/physics3d/behaviors/ConstantForceBehavior3D.java +92 -0
  316. data/src/toxi/physics3d/behaviors/GravityBehavior3D.java +61 -0
  317. data/src/toxi/physics3d/behaviors/ParticleBehavior3D.java +52 -0
  318. data/src/toxi/physics3d/constraints/AxisConstraint.java +68 -0
  319. data/src/toxi/physics3d/constraints/BoxConstraint.java +121 -0
  320. data/src/toxi/physics3d/constraints/CylinderConstraint.java +87 -0
  321. data/src/toxi/physics3d/constraints/MaxConstraint.java +65 -0
  322. data/src/toxi/physics3d/constraints/MinConstraint.java +65 -0
  323. data/src/toxi/physics3d/constraints/ParticleConstraint3D.java +49 -0
  324. data/src/toxi/physics3d/constraints/PlaneConstraint.java +78 -0
  325. data/src/toxi/physics3d/constraints/SoftBoxConstraint.java +87 -0
  326. data/src/toxi/physics3d/constraints/SphereConstraint.java +108 -0
  327. data/src/toxi/processing/ArrowModifier.java +116 -0
  328. data/src/toxi/processing/DashedLineModifier.java +48 -0
  329. data/src/toxi/processing/DeltaOrientationMapper.java +57 -0
  330. data/src/toxi/processing/Line2DRenderModifier.java +18 -0
  331. data/src/toxi/processing/MeshToVBO.java +127 -0
  332. data/src/toxi/processing/NormalMapper.java +18 -0
  333. data/src/toxi/processing/POVInterface.java +121 -0
  334. data/src/toxi/processing/POVMesh.java +219 -0
  335. data/src/toxi/processing/POVWriter.java +460 -0
  336. data/src/toxi/processing/RCOpaque.java +77 -0
  337. data/src/toxi/processing/RCTransp.java +78 -0
  338. data/src/toxi/processing/TextureBuilder.java +232 -0
  339. data/src/toxi/processing/Textures.java +110 -0
  340. data/src/toxi/processing/ToxiclibsSupport.java +1239 -0
  341. data/src/toxi/processing/Tracing.java +25 -0
  342. data/src/toxi/processing/XYZNormalMapper.java +30 -0
  343. data/src/toxi/sim/automata/CAMatrix.java +297 -0
  344. data/src/toxi/sim/automata/CARule.java +76 -0
  345. data/src/toxi/sim/automata/CARule2D.java +354 -0
  346. data/src/toxi/sim/automata/CAWolfram1D.java +309 -0
  347. data/src/toxi/sim/automata/EvolvableMatrix.java +61 -0
  348. data/src/toxi/sim/automata/MatrixEvolver.java +42 -0
  349. data/src/toxi/sim/dla/BottomUpOrder.java +76 -0
  350. data/src/toxi/sim/dla/DLA.java +497 -0
  351. data/src/toxi/sim/dla/DLAConfiguration.java +364 -0
  352. data/src/toxi/sim/dla/DLAEventAdapter.java +64 -0
  353. data/src/toxi/sim/dla/DLAEventListener.java +57 -0
  354. data/src/toxi/sim/dla/DLAGuideLines.java +219 -0
  355. data/src/toxi/sim/dla/DLAParticle.java +102 -0
  356. data/src/toxi/sim/dla/DLASegment.java +88 -0
  357. data/src/toxi/sim/dla/PipelineOrder.java +50 -0
  358. data/src/toxi/sim/dla/RadialDistanceOrder.java +92 -0
  359. data/src/toxi/sim/erosion/ErosionFunction.java +122 -0
  360. data/src/toxi/sim/erosion/TalusAngleErosion.java +145 -0
  361. data/src/toxi/sim/erosion/ThermalErosion.java +75 -0
  362. data/src/toxi/sim/fluids/FluidSolver2D.java +762 -0
  363. data/src/toxi/sim/fluids/FluidSolver3D.java +326 -0
  364. data/src/toxi/sim/grayscott/GrayScott.java +469 -0
  365. data/src/toxi/util/DateUtils.java +141 -0
  366. data/src/toxi/util/FileSequenceDescriptor.java +181 -0
  367. data/src/toxi/util/FileUtils.java +467 -0
  368. data/src/toxi/util/datatypes/ArraySet.java +128 -0
  369. data/src/toxi/util/datatypes/ArrayUtil.java +404 -0
  370. data/src/toxi/util/datatypes/BiasedDoubleRange.java +141 -0
  371. data/src/toxi/util/datatypes/BiasedFloatRange.java +141 -0
  372. data/src/toxi/util/datatypes/BiasedIntegerRange.java +141 -0
  373. data/src/toxi/util/datatypes/DoubleRange.java +251 -0
  374. data/src/toxi/util/datatypes/FloatRange.java +251 -0
  375. data/src/toxi/util/datatypes/GenericSet.java +215 -0
  376. data/src/toxi/util/datatypes/IntegerRange.java +247 -0
  377. data/src/toxi/util/datatypes/IntegerSet.java +149 -0
  378. data/src/toxi/util/datatypes/ItemIndex.java +72 -0
  379. data/src/toxi/util/datatypes/SingletonRegistry.java +91 -0
  380. data/src/toxi/util/datatypes/TypedProperties.java +291 -0
  381. data/src/toxi/util/datatypes/UndirectedGraph.java +134 -0
  382. data/src/toxi/util/datatypes/UniqueItemIndex.java +223 -0
  383. data/src/toxi/util/datatypes/WeightedRandomEntry.java +76 -0
  384. data/src/toxi/util/datatypes/WeightedRandomSet.java +125 -0
  385. data/src/toxi/util/events/EventDispatcher.java +86 -0
  386. data/src/toxi/volume/AdditiveBrush.java +19 -0
  387. data/src/toxi/volume/ArrayIsoSurface.java +297 -0
  388. data/src/toxi/volume/BoxBrush.java +100 -0
  389. data/src/toxi/volume/BrushMode.java +16 -0
  390. data/src/toxi/volume/HashIsoSurface.java +354 -0
  391. data/src/toxi/volume/IsoSurface.java +59 -0
  392. data/src/toxi/volume/MarchingCubesIndex.java +312 -0
  393. data/src/toxi/volume/MeshLatticeBuilder.java +358 -0
  394. data/src/toxi/volume/MeshVoxelizer.java +216 -0
  395. data/src/toxi/volume/MultiplyBrush.java +20 -0
  396. data/src/toxi/volume/PeakBrush.java +21 -0
  397. data/src/toxi/volume/ReplaceBrush.java +19 -0
  398. data/src/toxi/volume/RoundBrush.java +113 -0
  399. data/src/toxi/volume/VolumetricBrush.java +160 -0
  400. data/src/toxi/volume/VolumetricHashMap.java +179 -0
  401. data/src/toxi/volume/VolumetricSpace.java +195 -0
  402. data/src/toxi/volume/VolumetricSpaceArray.java +214 -0
  403. data/toxiclibs.gemspec +28 -0
  404. metadata +442 -31
@@ -0,0 +1,60 @@
1
+ /*
2
+ * __ .__ .__ ._____.
3
+ * _/ |_ _______ __|__| ____ | | |__\_ |__ ______
4
+ * \ __\/ _ \ \/ / |/ ___\| | | || __ \ / ___/
5
+ * | | ( <_> > <| \ \___| |_| || \_\ \\___ \
6
+ * |__| \____/__/\_ \__|\___ >____/__||___ /____ >
7
+ * \/ \/ \/ \/
8
+ *
9
+ * Copyright (c) 2006-2011 Karsten Schmidt
10
+ *
11
+ * This library is free software; you can redistribute it and/or
12
+ * modify it under the terms of the GNU Lesser General Public
13
+ * License as published by the Free Software Foundation; either
14
+ * version 2.1 of the License, or (at your option) any later version.
15
+ *
16
+ * http://creativecommons.org/licenses/LGPL/2.1/
17
+ *
18
+ * This library is distributed in the hope that it will be useful,
19
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ * Lesser General Public License for more details.
22
+ *
23
+ * You should have received a copy of the GNU Lesser General Public
24
+ * License along with this library; if not, write to the Free Software
25
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26
+ */
27
+
28
+ package toxi.data.feeds;
29
+
30
+ import javax.xml.bind.annotation.XmlAttribute;
31
+
32
+ /**
33
+ *
34
+ * @author tux
35
+ */
36
+ public class RSSEnclosure {
37
+
38
+ @XmlAttribute
39
+ public String url,
40
+
41
+ /**
42
+ *
43
+ */
44
+ type;
45
+
46
+ /**
47
+ *
48
+ */
49
+ @XmlAttribute
50
+ public int length;
51
+
52
+ /**
53
+ *
54
+ * @return
55
+ */
56
+ public String toString() {
57
+ return url + " (" + type + ")";
58
+ }
59
+
60
+ }
@@ -0,0 +1,99 @@
1
+ /*
2
+ * __ .__ .__ ._____.
3
+ * _/ |_ _______ __|__| ____ | | |__\_ |__ ______
4
+ * \ __\/ _ \ \/ / |/ ___\| | | || __ \ / ___/
5
+ * | | ( <_> > <| \ \___| |_| || \_\ \\___ \
6
+ * |__| \____/__/\_ \__|\___ >____/__||___ /____ >
7
+ * \/ \/ \/ \/
8
+ *
9
+ * Copyright (c) 2006-2011 Karsten Schmidt
10
+ *
11
+ * This library is free software; you can redistribute it and/or
12
+ * modify it under the terms of the GNU Lesser General Public
13
+ * License as published by the Free Software Foundation; either
14
+ * version 2.1 of the License, or (at your option) any later version.
15
+ *
16
+ * http://creativecommons.org/licenses/LGPL/2.1/
17
+ *
18
+ * This library is distributed in the hope that it will be useful,
19
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ * Lesser General Public License for more details.
22
+ *
23
+ * You should have received a copy of the GNU Lesser General Public
24
+ * License along with this library; if not, write to the Free Software
25
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26
+ */
27
+
28
+ package toxi.data.feeds;
29
+
30
+ import java.io.IOException;
31
+ import java.io.InputStream;
32
+ import java.net.MalformedURLException;
33
+ import java.net.URL;
34
+ import java.util.Iterator;
35
+
36
+ import javax.xml.bind.JAXBContext;
37
+ import javax.xml.bind.JAXBException;
38
+ import javax.xml.bind.annotation.XmlAttribute;
39
+ import javax.xml.bind.annotation.XmlRootElement;
40
+
41
+ /**
42
+ *
43
+ * @author tux
44
+ */
45
+ @XmlRootElement(name = "rss")
46
+ public class RSSFeed implements Iterable<RSSItem> {
47
+
48
+ /**
49
+ *
50
+ * @param stream
51
+ * @return
52
+ */
53
+ public static RSSFeed newFromStream(InputStream stream) {
54
+ RSSFeed feed = null;
55
+ try {
56
+ JAXBContext context = JAXBContext.newInstance(RSSFeed.class);
57
+ feed = (RSSFeed) context.createUnmarshaller().unmarshal(stream);
58
+ } catch (JAXBException e) {
59
+ e.printStackTrace();
60
+ }
61
+ return feed;
62
+ }
63
+
64
+ /**
65
+ *
66
+ * @param url
67
+ * @return
68
+ */
69
+ public static RSSFeed newFromURL(String url) {
70
+ RSSFeed feed = null;
71
+ try {
72
+ feed = newFromStream(new URL(url).openStream());
73
+ } catch (MalformedURLException e) {
74
+ e.printStackTrace();
75
+ } catch (IOException e) {
76
+ e.printStackTrace();
77
+ }
78
+ return feed;
79
+ }
80
+
81
+ /**
82
+ *
83
+ */
84
+ @XmlAttribute(name = "version")
85
+ public float version;
86
+
87
+ /**
88
+ *
89
+ */
90
+ public RSSChannel channel;
91
+
92
+ /**
93
+ *
94
+ * @return
95
+ */
96
+ public Iterator<RSSItem> iterator() {
97
+ return channel.items.iterator();
98
+ }
99
+ }
@@ -0,0 +1,104 @@
1
+ /*
2
+ * __ .__ .__ ._____.
3
+ * _/ |_ _______ __|__| ____ | | |__\_ |__ ______
4
+ * \ __\/ _ \ \/ / |/ ___\| | | || __ \ / ___/
5
+ * | | ( <_> > <| \ \___| |_| || \_\ \\___ \
6
+ * |__| \____/__/\_ \__|\___ >____/__||___ /____ >
7
+ * \/ \/ \/ \/
8
+ *
9
+ * Copyright (c) 2006-2011 Karsten Schmidt
10
+ *
11
+ * This library is free software; you can redistribute it and/or
12
+ * modify it under the terms of the GNU Lesser General Public
13
+ * License as published by the Free Software Foundation; either
14
+ * version 2.1 of the License, or (at your option) any later version.
15
+ *
16
+ * http://creativecommons.org/licenses/LGPL/2.1/
17
+ *
18
+ * This library is distributed in the hope that it will be useful,
19
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
20
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
21
+ * Lesser General Public License for more details.
22
+ *
23
+ * You should have received a copy of the GNU Lesser General Public
24
+ * License along with this library; if not, write to the Free Software
25
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
26
+ */
27
+
28
+ package toxi.data.feeds;
29
+
30
+ import java.util.ArrayList;
31
+ import java.util.List;
32
+
33
+ import javax.xml.bind.annotation.XmlElement;
34
+ import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;
35
+ import javax.xml.datatype.XMLGregorianCalendar;
36
+
37
+ import toxi.data.feeds.util.EntityStripper;
38
+ import toxi.data.feeds.util.Rfc822DateAdapter;
39
+
40
+ /**
41
+ *
42
+ * @author tux
43
+ */
44
+ public class RSSItem {
45
+
46
+ /**
47
+ *
48
+ */
49
+ @XmlElement
50
+ public String title;
51
+
52
+ /**
53
+ *
54
+ */
55
+ @XmlElement
56
+ public String description;
57
+
58
+ /**
59
+ *
60
+ */
61
+ @XmlElement(required = true)
62
+ @XmlJavaTypeAdapter(Rfc822DateAdapter.class)
63
+ public XMLGregorianCalendar pubDate;
64
+
65
+ /**
66
+ *
67
+ */
68
+ @XmlElement
69
+ public String guid;
70
+
71
+ /**
72
+ *
73
+ */
74
+ @XmlElement
75
+ public String link;
76
+
77
+ /**
78
+ *
79
+ */
80
+ @XmlElement(name = "category")
81
+ public List<String> categories = new ArrayList<String>();
82
+
83
+ /**
84
+ *
85
+ */
86
+ @XmlElement(name = "enclosure")
87
+ public List<RSSEnclosure> enclosures = new ArrayList<RSSEnclosure>();
88
+
89
+ /**
90
+ *
91
+ * @return
92
+ */
93
+ public String getDescriptionPlain() {
94
+ return EntityStripper.flattenXML(description);
95
+ }
96
+
97
+ /**
98
+ *
99
+ * @return
100
+ */
101
+ public String getTitlePlain() {
102
+ return EntityStripper.flattenXML(title);
103
+ }
104
+ }
@@ -0,0 +1,2480 @@
1
+ /*
2
+ * @(#)StripEntities.java
3
+ *
4
+ * Summary: Strips HTML entities such as &quot; from a string, replacing them by their Unicode equivalents.
5
+ *
6
+ * Copyright: (c) 2002-2009 Roedy Green, Canadian Mind Products, http://mindprod.com
7
+ *
8
+ * Licence: This software may be copied and used freely for any purpose but military.
9
+ * http://mindprod.com/contact/nonmil.html
10
+ *
11
+ * Requires: JDK 1.5+
12
+ *
13
+ * Created with: IntelliJ IDEA IDE.
14
+ *
15
+ * Version History:
16
+ * 2.6 2009-04-05 - StripEntities now leaves a space behind when it removes a <br><p><td> etc tag.
17
+ */
18
+ package toxi.data.feeds.util;
19
+
20
+ import java.util.HashMap;
21
+
22
+ /**
23
+ * Strips HTML entities such as &quot; from a string, replacing them by their
24
+ * Unicode equivalents.
25
+ *
26
+ * @author Roedy Green, Canadian Mind Products
27
+ * @version 2.6 2009-04-05 - StripEntities now leaves a space behind when it
28
+ * removes a <br>
29
+ * <p>
30
+ * <td>etc tag.
31
+ * @since 2002-07-14
32
+ */
33
+ public class EntityStripper {
34
+
35
+ // ------------------------------ CONSTANTS ------------------------------
36
+
37
+ /**
38
+ * true to enable the testing code.
39
+ */
40
+ private static final boolean DEBUGGING = true;
41
+
42
+ /**
43
+ * unicode nbsp control char, 160, 0x0a.
44
+ */
45
+ @SuppressWarnings({ "WeakerAccess" })
46
+ public static final char UNICODE_NBSP_160_0x0a = 160;
47
+
48
+ /**
49
+ * Longest an entity can be {@value #LONGEST_ENTITY}, at least in our
50
+ * tables, including the lead & and trail ;.
51
+ *
52
+ */
53
+ public static final int LONGEST_ENTITY = 10;/* &thetasym; */
54
+
55
+ /**
56
+ * The shortest an entity can be {@value #SHORTEST_ENTITY}, at least in our
57
+ * tables, including the lead & and trailing ;.
58
+ *
59
+ */
60
+ public static final int SHORTEST_ENTITY = 4;/* &#1; &lt; */
61
+
62
+ // ------------------------------ FIELDS ------------------------------
63
+
64
+ /**
65
+ * allows lookup by entity name, to get the corresponding char. Loaded from
66
+ * two hard-coded generated arrays burning into this class.
67
+ */
68
+ private static final HashMap<String, Character> entityToChar;
69
+
70
+ /**
71
+ * tags, that when removed should leave a space behind.
72
+ */
73
+ private static String[] spacingTags = { "tr", "td", "th", "p", "br", "dl",
74
+ "dt", "li" };
75
+
76
+ // -------------------------- PUBLIC STATIC METHODS
77
+ // --------------------------
78
+
79
+ static {
80
+ // build HashMap to look up entity name to get corresponding Unicode
81
+ // char number. Following code generated by Entities.
82
+ String[] entityKeys = {
83
+ // W A R N I N G ! _ M A N U A L L Y _ I N S E R T E D _
84
+ // G E N E
85
+ // R A T E D _ C O D E
86
+ // generated by Entities. Insert from
87
+ // com\mindprod\entities\entitiesjustkeys.javafrag
88
+ "quot"/* 34 : &#x22; quotation mark */, "amp"/*
89
+ * 38 : &#x26;
90
+ * ampersand
91
+ */, "lt"/*
92
+ * 60 :
93
+ * &#x3c;
94
+ * less
95
+ * -than
96
+ * sign
97
+ */,
98
+ "gt"/* 62 : &#x3e; greater-than sign */, "nbsp"/*
99
+ * 160 : &#xa0;
100
+ * non-breaking
101
+ * space
102
+ */, "iexcl"/*
103
+ * 161
104
+ * :
105
+ * &
106
+ * #xa1
107
+ * ;
108
+ * inverted
109
+ * exclamation
110
+ * mark
111
+ */,
112
+ "cent"/* 162 : &#xa2; cent sign */, "pound"/*
113
+ * 163 : &#xa3; pound
114
+ * sign
115
+ */, "curren"/*
116
+ * 164 :
117
+ * &
118
+ * #xa4;
119
+ * currency
120
+ * sign
121
+ */,
122
+ "yen"/* 165 : &#xa5; yen sign */, "brvbar"/*
123
+ * 166 : &#xa6; broken
124
+ * bar
125
+ */, "sect"/*
126
+ * 167 :
127
+ * &#xa7;
128
+ * section
129
+ * sign
130
+ */,
131
+ "uml"/* 168 : &#xa8; diaeresis */, "copy"/*
132
+ * 169 : &#xa9;
133
+ * copyright sign
134
+ */, "ordf"/*
135
+ * 170 :
136
+ * &#xaa;
137
+ * feminine
138
+ * ordinal
139
+ * indicator
140
+ */,
141
+ "laquo"/* 171 : &#xab; left guillemot */, "not"/*
142
+ * 172 : &#xac;
143
+ * not sign
144
+ */, "shy"/*
145
+ * 173
146
+ * :
147
+ * &#xad
148
+ * ;
149
+ * soft
150
+ * hyphen
151
+ */,
152
+ "reg"/* 174 : &#xae; registered sign */, "macr"/*
153
+ * 175 : &#xaf;
154
+ * macron
155
+ */, "deg"/*
156
+ * 176
157
+ * :
158
+ * &#xb0
159
+ * ;
160
+ * degree
161
+ * sign
162
+ */,
163
+ "plusmn"/* 177 : &#xb1; plus-minus sign */, "sup2"/*
164
+ * 178 :
165
+ * &#xb2;
166
+ * superscript
167
+ * two
168
+ */,
169
+ "sup3"/* 179 : &#xb3; superscript three */, "acute"/*
170
+ * 180 :
171
+ * &#xb4;
172
+ * acute
173
+ * accent
174
+ */,
175
+ "micro"/* 181 : &#xb5; micro sign */, "para"/*
176
+ * 182 : &#xb6;
177
+ * pilcrow sign
178
+ */, "middot"/*
179
+ * 183
180
+ * :
181
+ * &#xb7
182
+ * ;
183
+ * middle
184
+ * dot
185
+ */,
186
+ "cedil"/* 184 : &#xb8; cedilla */, "sup1"/*
187
+ * 185 : &#xb9;
188
+ * superscript one
189
+ */, "ordm"/*
190
+ * 186 :
191
+ * &#xba;
192
+ * masculine
193
+ * ordinal
194
+ * indicator
195
+ */,
196
+ "raquo"/* 187 : &#xbb; right guillemot */, "frac14"/*
197
+ * 188 :
198
+ * &#xbc;
199
+ * vulgar
200
+ * fraction
201
+ * 1/4
202
+ */,
203
+ "frac12"/* 189 : &#xbd; vulgar fraction 1/2 */, "frac34"/*
204
+ * 190 :
205
+ * &
206
+ * #xbe;
207
+ * vulgar
208
+ * fraction
209
+ * 3/4
210
+ */,
211
+ "iquest"/* 191 : &#xbf; inverted question mark */, "Agrave"/*
212
+ * 192
213
+ * :
214
+ * &
215
+ * #xc0
216
+ * ;
217
+ * Latin
218
+ * capital
219
+ * letter
220
+ * A
221
+ * with
222
+ * grave
223
+ */,
224
+ "Aacute"/*
225
+ * 193 : &#xc1; Latin capital letter A with acute
226
+ */, "Acirc"/*
227
+ * 194 : &#xc2; Latin capital letter A with
228
+ * circumflex
229
+ */, "Atilde"/*
230
+ * 195 : &#xc3; Latin capital
231
+ * letter A with tilde
232
+ */, "Auml"/*
233
+ * 196 : &#xc4;
234
+ * Latin capital
235
+ * letter A with
236
+ * diaeresis
237
+ */, "Aring"/*
238
+ * 197 :
239
+ * &
240
+ * #xc5;
241
+ * Latin
242
+ * capital
243
+ * letter
244
+ * A
245
+ * with
246
+ * ring
247
+ * above
248
+ */,
249
+ "AElig"/* 198 : &#xc6; Latin capital letter AE */, "Ccedil"/*
250
+ * 199
251
+ * :
252
+ * &
253
+ * #xc7
254
+ * ;
255
+ * Latin
256
+ * capital
257
+ * letter
258
+ * C
259
+ * with
260
+ * cedilla
261
+ */,
262
+ "Egrave"/*
263
+ * 200 : &#xc8; Latin capital letter E with grave
264
+ */, "Eacute"/*
265
+ * 201 : &#xc9; Latin capital letter E with
266
+ * acute
267
+ */, "Ecirc"/*
268
+ * 202 : &#xca; Latin capital
269
+ * letter E with circumflex
270
+ */, "Euml"/*
271
+ * 203 : &#xcb;
272
+ * Latin capital
273
+ * letter E with
274
+ * diaeresis
275
+ */, "Igrave"/*
276
+ * 204
277
+ * :
278
+ * &#xcc
279
+ * ;
280
+ * Latin
281
+ * capital
282
+ * letter
283
+ * I
284
+ * with
285
+ * grave
286
+ */,
287
+ "Iacute"/*
288
+ * 205 : &#xcd; Latin capital letter I with acute
289
+ */, "Icirc"/*
290
+ * 206 : &#xce; Latin capital letter I with
291
+ * circumflex
292
+ */, "Iuml"/*
293
+ * 207 : &#xcf; Latin capital
294
+ * letter I with diaeresis
295
+ */, "ETH"/*
296
+ * 208 : &#xd0; Latin
297
+ * capital letter eth
298
+ */, "Ntilde"/*
299
+ * 209 :
300
+ * &#xd1;
301
+ * Latin
302
+ * capital
303
+ * letter
304
+ * N with
305
+ * tilde
306
+ */,
307
+ "Ograve"/*
308
+ * 210 : &#xd2; Latin capital letter O with grave
309
+ */, "Oacute"/*
310
+ * 211 : &#xd3; Latin capital letter O with
311
+ * acute
312
+ */, "Ocirc"/*
313
+ * 212 : &#xd4; Latin capital
314
+ * letter O with circumflex
315
+ */, "Otilde"/*
316
+ * 213 : &#xd5;
317
+ * Latin capital
318
+ * letter O with
319
+ * tilde
320
+ */, "Ouml"/*
321
+ * 214
322
+ * :
323
+ * &#xd6
324
+ * ;
325
+ * Latin
326
+ * capital
327
+ * letter
328
+ * O
329
+ * with
330
+ * diaeresis
331
+ */,
332
+ "times"/* 215 : &#xd7; multiplication sign */, "Oslash"/*
333
+ * 216 :
334
+ * &#xd8;
335
+ * Latin
336
+ * capital
337
+ * letter
338
+ * O with
339
+ * stroke
340
+ */,
341
+ "Ugrave"/*
342
+ * 217 : &#xd9; Latin capital letter U with grave
343
+ */, "Uacute"/*
344
+ * 218 : &#xda; Latin capital letter U with
345
+ * acute
346
+ */, "Ucirc"/*
347
+ * 219 : &#xdb; Latin capital
348
+ * letter U with circumflex
349
+ */, "Uuml"/*
350
+ * 220 : &#xdc;
351
+ * Latin capital
352
+ * letter U with
353
+ * diaeresis
354
+ */, "Yacute"/*
355
+ * 221
356
+ * :
357
+ * &#xdd
358
+ * ;
359
+ * Latin
360
+ * capital
361
+ * letter
362
+ * Y
363
+ * with
364
+ * acute
365
+ */,
366
+ "THORN"/* 222 : &#xde; Latin capital letter Thorn */,
367
+ "szlig"/* 223 : &#xdf; Latin small letter sharp s */,
368
+ "agrave"/* 224 : &#xe0; Latin small letter a with grave */,
369
+ "aacute"/* 225 : &#xe1; Latin small letter a with acute */,
370
+ "acirc"/*
371
+ * 226 : &#xe2; Latin small letter a with circumflex
372
+ */, "atilde"/*
373
+ * 227 : &#xe3; Latin small letter a with
374
+ * tilde
375
+ */, "auml"/*
376
+ * 228 : &#xe4; Latin small
377
+ * letter a with diaeresis
378
+ */, "aring"/*
379
+ * 229 : &#xe5; Latin
380
+ * small letter a
381
+ * with ring above
382
+ */, "aelig"/*
383
+ * 230 :
384
+ * &#xe6;
385
+ * Latin
386
+ * lowercase
387
+ * ligature
388
+ * ae
389
+ */,
390
+ "ccedil"/*
391
+ * 231 : &#xe7; Latin small letter c with cedilla
392
+ */, "egrave"/*
393
+ * 232 : &#xe8; Latin small letter e with
394
+ * grave
395
+ */, "eacute"/*
396
+ * 233 : &#xe9; Latin small
397
+ * letter e with acute
398
+ */, "ecirc"/*
399
+ * 234 : &#xea;
400
+ * Latin small
401
+ * letter e with
402
+ * circumflex
403
+ */, "euml"/*
404
+ * 235
405
+ * :
406
+ * &#xeb
407
+ * ;
408
+ * Latin
409
+ * small
410
+ * letter
411
+ * e
412
+ * with
413
+ * diaeresis
414
+ */,
415
+ "igrave"/* 236 : &#xec; Latin small letter i with grave */,
416
+ "iacute"/* 237 : &#xed; Latin small letter i with acute */,
417
+ "icirc"/*
418
+ * 238 : &#xee; Latin small letter i with circumflex
419
+ */, "iuml"/*
420
+ * 239 : &#xef; Latin small letter i with
421
+ * diaeresis
422
+ */, "eth"/*
423
+ * 240 : &#xf0; Latin small letter
424
+ * eth
425
+ */, "ntilde"/*
426
+ * 241 : &#xf1; Latin
427
+ * small letter n with
428
+ * tilde
429
+ */, "ograve"/*
430
+ * 242 :
431
+ * &#xf2;
432
+ * Latin
433
+ * small
434
+ * letter
435
+ * o with
436
+ * grave
437
+ */,
438
+ "oacute"/* 243 : &#xf3; Latin small letter o with acute */,
439
+ "ocirc"/*
440
+ * 244 : &#xf4; Latin small letter o with circumflex
441
+ */, "otilde"/*
442
+ * 245 : &#xf5; Latin small letter o with
443
+ * tilde
444
+ */, "ouml"/*
445
+ * 246 : &#xf6; Latin small
446
+ * letter o with diaeresis
447
+ */, "divide"/*
448
+ * 247 : &#xf7;
449
+ * division sign
450
+ */, "oslash"/*
451
+ * 248
452
+ * :
453
+ * &#xf8
454
+ * ;
455
+ * Latin
456
+ * small
457
+ * letter
458
+ * o
459
+ * with
460
+ * stroke
461
+ */,
462
+ "ugrave"/* 249 : &#xf9; Latin small letter u with grave */,
463
+ "uacute"/* 250 : &#xfa; Latin small letter u with acute */,
464
+ "ucirc"/*
465
+ * 251 : &#xfb; Latin small letter u with circumflex
466
+ */, "uuml"/*
467
+ * 252 : &#xfc; Latin small letter u with
468
+ * diaeresis
469
+ */, "yacute"/*
470
+ * 253 : &#xfd; Latin small
471
+ * letter y with acute
472
+ */, "thorn"/*
473
+ * 254 : &#xfe; Latin
474
+ * small letter thorn
475
+ */, "yuml"/*
476
+ * 255 :
477
+ * &#xff;
478
+ * Latin
479
+ * small
480
+ * letter
481
+ * y with
482
+ * diaeresis
483
+ */,
484
+ "OElig"/* 338 : &#x152; Latin capital ligature oe */,
485
+ "oelig"/* 339 : &#x153; Latin small ligature oe */,
486
+ "Scaron"/*
487
+ * 352 : &#x160; Latin capital letter S with caron
488
+ */, "scaron"/*
489
+ * 353 : &#x161; Latin small letter s with
490
+ * caron
491
+ */, "Yuml"/*
492
+ * 376 : &#x178; Latin capital
493
+ * letter Y with diaeresis
494
+ */, "fnof"/*
495
+ * 402 : &#x192;
496
+ * Latin small letter
497
+ * f with hook
498
+ */, "circ"/*
499
+ * 710 :
500
+ * &#x2c6;
501
+ * modifier
502
+ * letter
503
+ * circumflex
504
+ * accent
505
+ */,
506
+ "tilde"/* 732 : &#x2dc; small tilde */, "Alpha"/*
507
+ * 913 : &#x391;
508
+ * Greek capital
509
+ * letter Alpha
510
+ */, "Beta"/*
511
+ * 914
512
+ * :
513
+ * &#
514
+ * x392
515
+ * ;
516
+ * Greek
517
+ * capital
518
+ * letter
519
+ * Beta
520
+ */,
521
+ "Gamma"/*
522
+ * 915 : & #x393 ; Greek capital letter Gamma
523
+ */,
524
+ "Delta"/* 916 : &#x394; Greek capital letter Delta */,
525
+ "Epsilon"/* 917 : &#x395; Greek capital letter Epsilon */,
526
+ "Zeta"/* 918 : &#x396; Greek capital letter Zeta */, "Eta"/*
527
+ * 919
528
+ * : &
529
+ * #
530
+ * x397
531
+ * ;
532
+ * Greek
533
+ * capital
534
+ * letter
535
+ * Eta
536
+ */,
537
+ "Theta"/* 920 : &#x398; Greek capital letter Theta */,
538
+ "Iota"/* 921 : &#x399; Greek capital letter Iota */,
539
+ "Kappa"/*
540
+ * 922 : & #x39a ; Greek capital letter Kappa
541
+ */,
542
+ "Lambda"/* 923 : &#x39b; Greek capital letter Lambda */,
543
+ "Mu"/* 924 : &#x39c; Greek capital letter Mu */, "Nu"/*
544
+ * 925 :
545
+ * &#x39d;
546
+ * Greek
547
+ * capital
548
+ * letter
549
+ * Nu
550
+ */,
551
+ "Xi"/* 926 : &#x39e; Greek capital letter Xi */, "Omicron"/*
552
+ * 927
553
+ * : &
554
+ * #
555
+ * x39f
556
+ * ;
557
+ * Greek
558
+ * capital
559
+ * letter
560
+ * Omicron
561
+ */,
562
+ "Pi"/* 928 : &#x3a0; Greek capital letter Pi */, "Rho"/*
563
+ * 929 :
564
+ * &#x3a1;
565
+ * Greek
566
+ * capital
567
+ * letter
568
+ * Rho
569
+ */,
570
+ "Sigma"/* 931 : &#x3a3; Greek capital letter Sigma */,
571
+ "Tau"/* 932 : &#x3a4; Greek capital letter Tau */,
572
+ "Upsilon"/* 933 : &#x3a5; Greek capital letter Upsilon */,
573
+ "Phi"/* 934 : &#x3a6; Greek capital letter Phi */, "Chi"/*
574
+ * 935 :
575
+ * &
576
+ * #x3a7
577
+ * ;
578
+ * Greek
579
+ * capital
580
+ * letter
581
+ * Chi
582
+ */,
583
+ "Psi"/* 936 : &#x3a8; Greek capital letter Psi */, "Omega"/*
584
+ * 937
585
+ * : &
586
+ * #
587
+ * x3a9
588
+ * ;
589
+ * Greek
590
+ * capital
591
+ * letter
592
+ * Omega
593
+ */,
594
+ "alpha"/* 945 : &#x3b1; Greek small letter alpha */, "beta"/*
595
+ * 946
596
+ * :
597
+ * &
598
+ * #x3b2
599
+ * ;
600
+ * Greek
601
+ * small
602
+ * letter
603
+ * beta
604
+ */,
605
+ "gamma"/*
606
+ * 947 : & #x3b3 ; Greek small letter gamma
607
+ */,
608
+ "delta"/* 948 : &#x3b4; Greek small letter delta */,
609
+ "epsilon"/* 949 : &#x3b5; Greek small letter epsilon */,
610
+ "zeta"/* 950 : &#x3b6; Greek small letter zeta */, "eta"/*
611
+ * 951 :
612
+ * &
613
+ * #x3b7
614
+ * ;
615
+ * Greek
616
+ * small
617
+ * letter
618
+ * eta
619
+ */,
620
+ "theta"/* 952 : &#x3b8; Greek small letter theta */, "iota"/*
621
+ * 953
622
+ * :
623
+ * &
624
+ * #x3b9
625
+ * ;
626
+ * Greek
627
+ * small
628
+ * letter
629
+ * iota
630
+ */,
631
+ "kappa"/*
632
+ * 954 : & #x3ba ; Greek small letter kappa
633
+ */,
634
+ "lambda"/* 955 : &#x3bb; Greek small letter lambda */, "mu"/*
635
+ * 956
636
+ * :
637
+ * &
638
+ * #x3bc
639
+ * ;
640
+ * Greek
641
+ * small
642
+ * letter
643
+ * mu
644
+ */,
645
+ "nu"/*
646
+ * 957 : &#x3bd; Greek small letter nu
647
+ */, "xi"/* 958 : &#x3be; Greek small letter xi */,
648
+ "omicron"/*
649
+ * 959 : & #x3bf ; Greek small letter omicron
650
+ */, "pi"/* 960 : &#x3c0; Greek small letter pi */,
651
+ "rho"/*
652
+ * 961 : &#x3c1; Greek small letter rho
653
+ */, "sigmaf"/*
654
+ * 962 : &#x3c2; Greek small letter final
655
+ * sigma
656
+ */, "sigma"/*
657
+ * 963 : &#x3c3; Greek small
658
+ * letter sigma
659
+ */, "tau"/*
660
+ * 964 : &#x3c4; Greek
661
+ * small letter tau
662
+ */, "upsilon"/*
663
+ * 965 : &
664
+ * #x3c5 ;
665
+ * Greek
666
+ * small
667
+ * letter
668
+ * upsilon
669
+ */,
670
+ "phi"/* 966 : &#x3c6; Greek small letter phi */, "chi"/*
671
+ * 967 :
672
+ * &#x3c7;
673
+ * Greek
674
+ * small
675
+ * letter
676
+ * chi
677
+ */,
678
+ "psi"/* 968 : &#x3c8; Greek small letter psi */, "omega"/*
679
+ * 969 :
680
+ * &
681
+ * #x3c9
682
+ * ;
683
+ * Greek
684
+ * small
685
+ * letter
686
+ * omega
687
+ */,
688
+ "thetasym"/* 977 : &#x3d1; Greek theta symbol */, "upsih"/*
689
+ * 978
690
+ * : &
691
+ * #
692
+ * x3d2
693
+ * ;
694
+ * Greek
695
+ * upsilon
696
+ * with
697
+ * hook
698
+ * symbol
699
+ */,
700
+ "piv"/* 982 : &#x3d6; Greek pi symbol */, "ensp"/*
701
+ * 8194 :
702
+ * &#x2002; en
703
+ * space
704
+ */, "emsp"/*
705
+ * 8195
706
+ * :
707
+ * &
708
+ * #x2003
709
+ * ;
710
+ * em
711
+ * space
712
+ */,
713
+ "thinsp"/*
714
+ * 8201 : &#x2009; thin space
715
+ */, "zwnj"/*
716
+ * 8204 : &#x200c ; zero width non -joiner
717
+ */, "zwj"/*
718
+ * 8205 : &#x200d; zero width
719
+ * joiner
720
+ */, "lrm"/*
721
+ * 8206 : &#x200e;
722
+ * left-to-right mark
723
+ */, "rlm"/*
724
+ * 8207 :
725
+ * &#x200f ;
726
+ * right -
727
+ * to-left mark
728
+ */,
729
+ "ndash"/* 8211 : &#x2013; en dash */, "mdash"/*
730
+ * 8212 : &#x2014;
731
+ * em dash
732
+ */, "lsquo"/*
733
+ * 8216
734
+ * :
735
+ * &#x2018
736
+ * ;
737
+ * left
738
+ * single
739
+ * -6
740
+ * quotation
741
+ * mark
742
+ */,
743
+ "rsquo"/* 8217 : &#x2019; right single-9 quotation mark */,
744
+ "sbquo"/* 8218 : &#x201a; single low-9 quotation mark */,
745
+ "ldquo"/* 8220 : &#x201c; left double-66 quotation mark */,
746
+ "rdquo"/* 8221 : &#x201d; right double-99 quotation mark */,
747
+ "bdquo"/* 8222 : &#x201e; double low-99 quotation mark */,
748
+ "dagger"/* 8224 : &#x2020; dagger */, "Dagger"/*
749
+ * 8225 : &#x2021;
750
+ * double dagger
751
+ */, "bull"/*
752
+ * 8226
753
+ * :
754
+ * &#x2022
755
+ * ;
756
+ * bullet
757
+ */,
758
+ "hellip"/* 8230 : &#x2026; horizontal ellipsis */, "permil"/*
759
+ * 8240
760
+ * :
761
+ * &
762
+ * #x2030
763
+ * ;
764
+ * per
765
+ * mille
766
+ * sign
767
+ */,
768
+ "prime"/*
769
+ * 8242 : &#x2032; prime
770
+ */, "Prime"/* 8243 : &#x2033; double prime */,
771
+ "lsaquo"/*
772
+ * 8249 : &#x2039; single left -pointing angle quotation
773
+ * mark
774
+ */, "rsaquo"/*
775
+ * 8250 : &#x203a; single right-pointing
776
+ * angle quotation mark
777
+ */,
778
+ "oline"/* 8254 : &#x203e; overline */, "frasl"/*
779
+ * 8260 : &#x2044;
780
+ * fraction slash
781
+ */, "euro"/*
782
+ * 8364
783
+ * :
784
+ * &#x20ac
785
+ * ;
786
+ * Euro
787
+ * currency
788
+ * sign
789
+ */,
790
+ "image"/* 8465 : &#x2111; black-letter capital i */,
791
+ "weierp"/* 8472 : &#x2118; script capital p */, "real"/*
792
+ * 8476 :
793
+ * &
794
+ * #x211c;
795
+ * black
796
+ * -letter
797
+ * capital
798
+ * r
799
+ */,
800
+ "trade"/* 8482 : &#x2122; trademark sign */, "alefsym"/*
801
+ * 8501 :
802
+ * &#x2135
803
+ * ; alef
804
+ * symbol
805
+ */,
806
+ "larr"/* 8592 : &#x2190; leftwards arrow */, "uarr"/*
807
+ * 8593 :
808
+ * &#x2191;
809
+ * upwards
810
+ * arrow
811
+ */,
812
+ "rarr"/* 8594 : &#x2192; rightwards arrow */, "darr"/*
813
+ * 8595 :
814
+ * &#x2193;
815
+ * downwards
816
+ * arrow
817
+ */,
818
+ "harr"/* 8596 : &#x2194; left right arrow */, "crarr"/*
819
+ * 8629 :
820
+ * &#x21b5;
821
+ * downwards
822
+ * arrow
823
+ * with
824
+ * corner
825
+ * leftwards
826
+ */,
827
+ "lArr"/* 8656 : &#x21d0; leftwards double arrow */, "uArr"/*
828
+ * 8657
829
+ * :
830
+ * &#
831
+ * x21d1
832
+ * ;
833
+ * upwards
834
+ * double
835
+ * arrow
836
+ */,
837
+ "rArr"/* 8658 : &#x21d2; rightwards double arrow */, "dArr"/*
838
+ * 8659
839
+ * :
840
+ * &
841
+ * #x21d3
842
+ * ;
843
+ * downwards
844
+ * double
845
+ * arrow
846
+ */,
847
+ "hArr"/* 8660 : &#x21d4; left right double arrow */,
848
+ "forall"/* 8704 : &#x2200; for all */, "part"/*
849
+ * 8706 : &#x2202;
850
+ * partial
851
+ * differential
852
+ */, "exist"/*
853
+ * 8707
854
+ * :
855
+ * &#x2203
856
+ * ;
857
+ * there
858
+ * exists
859
+ */,
860
+ "empty"/* 8709 : &#x2205; empty set */, "nabla"/*
861
+ * 8711 :
862
+ * &#x2207; nabla
863
+ */, "isin"/*
864
+ * 8712
865
+ * :
866
+ * &#
867
+ * x2208
868
+ * ;
869
+ * element
870
+ * of
871
+ */,
872
+ "notin"/*
873
+ * 8713 : &#x2209; not an element of
874
+ */, "ni"/*
875
+ * 8715 : &#x220b; contains as member
876
+ */, "prod"/* 8719 : &#x220f; n-ary product */,
877
+ "sum"/*
878
+ * 8721 : &#x2211; n-ary summation
879
+ */, "minus"/*
880
+ * 8722 : &#x2212 ; minus sign
881
+ */, "lowast"/*
882
+ * 8727 : &#x2217; asterisk
883
+ * operator
884
+ */, "radic"/*
885
+ * 8730 : &#x221a ;
886
+ * square root
887
+ */, "prop"/*
888
+ * 8733 :
889
+ * &#x221d;
890
+ * proportional
891
+ * to
892
+ */,
893
+ "infin"/*
894
+ * 8734 : &#x221e; infinity
895
+ */, "ang"/*
896
+ * 8736 : &#x2220 ; angle
897
+ */, "and"/* 8743 : &#x2227; logical and */,
898
+ "or"/*
899
+ * 8744 : &#x2228; logical or
900
+ */, "cap"/*
901
+ * 8745 : &#x2229; intersection
902
+ */, "cup"/* 8746 : &#x222a; union */, "int"/*
903
+ * 8747
904
+ * :
905
+ * &#
906
+ * x222b
907
+ * ;
908
+ * integral
909
+ */,
910
+ "there4"/*
911
+ * 8756 : &#x2234; therefore
912
+ */, "sim"/*
913
+ * 8764 : &#x223c; tilde operator
914
+ */,
915
+ "cong"/* 8773 : &#x2245; congruent to */, "asymp"/*
916
+ * 8776 :
917
+ * &#x2248;
918
+ * asymptotic
919
+ * to
920
+ */, "ne"/*
921
+ * 8800
922
+ * :
923
+ * &#
924
+ * x2260
925
+ * ;
926
+ * not
927
+ * equal
928
+ * to
929
+ */,
930
+ "equiv"/* 8801 : &#x2261; identical to */, "le"/*
931
+ * 8804 :
932
+ * &#x2264;
933
+ * less-than or
934
+ * equal to
935
+ */, "ge"/*
936
+ * 8805
937
+ * :
938
+ * &#x2265
939
+ * ;
940
+ * greater
941
+ * -than
942
+ * or
943
+ * equal
944
+ * to
945
+ */,
946
+ "sub"/* 8834 : &#x2282; subset of */, "sup"/*
947
+ * 8835 : &#x2283;
948
+ * superset of
949
+ */, "nsub"/*
950
+ * 8836 :
951
+ * &
952
+ * #x2284;
953
+ * not a
954
+ * subset
955
+ * of
956
+ */,
957
+ "sube"/* 8838 : &#x2286; subset of or equal to */, "supe"/*
958
+ * 8839
959
+ * :
960
+ * &#x2287
961
+ * ;
962
+ * superset
963
+ * of
964
+ * or
965
+ * equal
966
+ * to
967
+ */,
968
+ "oplus"/* 8853 : &#x2295; circled plus */, "otimes"/*
969
+ * 8855 :
970
+ * &#x2297;
971
+ * circled
972
+ * times
973
+ */,
974
+ "perp"/* 8869 : &#x22a5; up tack */, "sdot"/*
975
+ * 8901 : &#x22c5;
976
+ * dot operator
977
+ */, "lceil"/*
978
+ * 8968 :
979
+ * &
980
+ * #x2308
981
+ * ; left
982
+ * ceiling
983
+ */,
984
+ "rceil"/* 8969 : &#x2309; right ceiling */, "lfloor"/*
985
+ * 8970 :
986
+ * &#x230a;
987
+ * left
988
+ * floor
989
+ */,
990
+ "rfloor"/* 8971 : &#x230b; right floor */, "lang"/*
991
+ * 9001 :
992
+ * &#x2329;
993
+ * left
994
+ * -pointing
995
+ * angle
996
+ * bracket
997
+ */,
998
+ "rang"/* 9002 : &#x232a; right-pointing angle bracket */,
999
+ "loz"/* 9674 : &#x25ca; lozenge */, "spades"/*
1000
+ * 9824 : &#x2660;
1001
+ * black spade suit
1002
+ */, "clubs"/*
1003
+ * 9827
1004
+ * :
1005
+ * &#x2663
1006
+ * ;
1007
+ * black
1008
+ * club
1009
+ * suit
1010
+ */,
1011
+ "hearts"/* 9829 : &#x2665; black heart suit */, "diams"/*
1012
+ * 9830 :
1013
+ * &
1014
+ * #x2666
1015
+ * ;
1016
+ * black
1017
+ * diamond
1018
+ * suit
1019
+ */, };
1020
+ char[] entityValues = {
1021
+ // W A R N I N G ! _ M A N U A L L Y _ I N S E R T E D _
1022
+ // G E N E
1023
+ // R A T E D _ C O D E
1024
+ // generated by Entities. Insert from
1025
+ // com\mindprod\entities\entitiesjustkeys.javafrag
1026
+ 34/* &quot; : &#x22; quotation mark */, 38/*
1027
+ * &amp; : &#x26;
1028
+ * ampersand
1029
+ */, 60/*
1030
+ * &lt; :
1031
+ * &#x3c;
1032
+ * less-than
1033
+ * sign
1034
+ */, 62/*
1035
+ * &gt;
1036
+ * :
1037
+ * &#x3e
1038
+ * ;
1039
+ * greater
1040
+ * -than
1041
+ * sign
1042
+ */,
1043
+ 160/* &nbsp; : &#xa0; non-breaking space */, 161/*
1044
+ * &iexcl; :
1045
+ * &#xa1;
1046
+ * inverted
1047
+ * exclamation
1048
+ * mark
1049
+ */, 162/*
1050
+ * &cent;
1051
+ * :
1052
+ * &#xa2
1053
+ * ;
1054
+ * cent
1055
+ * sign
1056
+ */,
1057
+ 163/* &pound; : &#xa3; pound sign */, 164/*
1058
+ * &curren; : &#xa4;
1059
+ * currency sign
1060
+ */, 165/*
1061
+ * &yen; :
1062
+ * &#xa5; yen
1063
+ * sign
1064
+ */, 166/*
1065
+ * &brvbar
1066
+ * ; :
1067
+ * &
1068
+ * #xa6
1069
+ * ;
1070
+ * broken
1071
+ * bar
1072
+ */,
1073
+ 167/* &sect; : &#xa7; section sign */, 168/*
1074
+ * &uml; : &#xa8;
1075
+ * diaeresis
1076
+ */, 169/*
1077
+ * &copy; :
1078
+ * &#xa9;
1079
+ * copyright
1080
+ * sign
1081
+ */, 170/*
1082
+ * &ordf
1083
+ * ; :
1084
+ * &
1085
+ * #xaa
1086
+ * ;
1087
+ * feminine
1088
+ * ordinal
1089
+ * indicator
1090
+ */,
1091
+ 171/* &laquo; : &#xab; left guillemot */, 172/*
1092
+ * &not; : &#xac;
1093
+ * not sign
1094
+ */, 173/*
1095
+ * &shy; :
1096
+ * &#xad;
1097
+ * soft
1098
+ * hyphen
1099
+ */,
1100
+ 174/* &reg; : &#xae; registered sign */, 175/*
1101
+ * &macr; : &#xaf;
1102
+ * macron
1103
+ */, 176/*
1104
+ * &deg; :
1105
+ * &#xb0;
1106
+ * degree
1107
+ * sign
1108
+ */,
1109
+ 177/* &plusmn; : &#xb1; plus-minus sign */, 178/*
1110
+ * &sup2; :
1111
+ * &#xb2;
1112
+ * superscript
1113
+ * two
1114
+ */, 179/*
1115
+ * &sup3;
1116
+ * :
1117
+ * &#xb3;
1118
+ * superscript
1119
+ * three
1120
+ */,
1121
+ 180/* &acute; : &#xb4; acute accent */, 181/*
1122
+ * &micro; : &#xb5;
1123
+ * micro sign
1124
+ */, 182/*
1125
+ * &para; :
1126
+ * &#xb6;
1127
+ * pilcrow
1128
+ * sign
1129
+ */, 183/*
1130
+ * &
1131
+ * middot
1132
+ * ;
1133
+ * :
1134
+ * &
1135
+ * #xb7
1136
+ * ;
1137
+ * middle
1138
+ * dot
1139
+ */,
1140
+ 184/* &cedil; : &#xb8; cedilla */, 185/*
1141
+ * &sup1; : &#xb9;
1142
+ * superscript one
1143
+ */, 186/*
1144
+ * &ordm; : &#xba;
1145
+ * masculine
1146
+ * ordinal
1147
+ * indicator
1148
+ */, 187/*
1149
+ * &raquo;
1150
+ * :
1151
+ * &#xbb;
1152
+ * right
1153
+ * guillemot
1154
+ */,
1155
+ 188/* &frac14; : &#xbc; vulgar fraction 1/4 */, 189/*
1156
+ * &frac12; :
1157
+ * &#xbd;
1158
+ * vulgar
1159
+ * fraction
1160
+ * 1/2
1161
+ */, 190/*
1162
+ * &
1163
+ * frac34
1164
+ * ;
1165
+ * :
1166
+ * &
1167
+ * #xbe
1168
+ * ;
1169
+ * vulgar
1170
+ * fraction
1171
+ * 3
1172
+ * /4
1173
+ */,
1174
+ 191/* &iquest; : &#xbf; inverted question mark */, 192/*
1175
+ * &Agrave;
1176
+ * :
1177
+ * &#xc0;
1178
+ * Latin
1179
+ * capital
1180
+ * letter
1181
+ * A with
1182
+ * grave
1183
+ */,
1184
+ 193/*
1185
+ * &Aacute; : &#xc1; Latin capital letter A with acute
1186
+ */, 194/*
1187
+ * &Acirc; : &#xc2; Latin capital letter A with
1188
+ * circumflex
1189
+ */, 195/*
1190
+ * &Atilde; : &#xc3; Latin capital letter A
1191
+ * with tilde
1192
+ */, 196/*
1193
+ * &Auml; : &#xc4; Latin capital
1194
+ * letter A with diaeresis
1195
+ */, 197/*
1196
+ * &Aring; : &#xc5; Latin
1197
+ * capital letter A with ring
1198
+ * above
1199
+ */, 198/*
1200
+ * &AElig; : &#xc6;
1201
+ * Latin capital
1202
+ * letter AE
1203
+ */, 199/*
1204
+ * &Ccedil; :
1205
+ * &#xc7;
1206
+ * Latin
1207
+ * capital
1208
+ * letter C
1209
+ * with
1210
+ * cedilla
1211
+ */, 200/*
1212
+ * &
1213
+ * Egrave
1214
+ * ;
1215
+ * :
1216
+ * &
1217
+ * #xc8
1218
+ * ;
1219
+ * Latin
1220
+ * capital
1221
+ * letter
1222
+ * E
1223
+ * with
1224
+ * grave
1225
+ */,
1226
+ 201/*
1227
+ * &Eacute; : &#xc9; Latin capital letter E with acute
1228
+ */, 202/*
1229
+ * &Ecirc; : &#xca; Latin capital letter E with
1230
+ * circumflex
1231
+ */, 203/*
1232
+ * &Euml; : &#xcb; Latin capital letter E
1233
+ * with diaeresis
1234
+ */, 204/*
1235
+ * &Igrave; : &#xcc; Latin capital
1236
+ * letter I with grave
1237
+ */, 205/*
1238
+ * &Iacute; : &#xcd; Latin
1239
+ * capital letter I with
1240
+ * acute
1241
+ */, 206/*
1242
+ * &Icirc; : &#xce;
1243
+ * Latin capital
1244
+ * letter I with
1245
+ * circumflex
1246
+ */, 207/*
1247
+ * &Iuml; :
1248
+ * &#xcf;
1249
+ * Latin
1250
+ * capital
1251
+ * letter I
1252
+ * with
1253
+ * diaeresis
1254
+ */, 208/*
1255
+ * &ETH
1256
+ * ;
1257
+ * :
1258
+ * &
1259
+ * #xd0
1260
+ * ;
1261
+ * Latin
1262
+ * capital
1263
+ * letter
1264
+ * eth
1265
+ */,
1266
+ 209/*
1267
+ * &Ntilde; : &#xd1; Latin capital letter N with tilde
1268
+ */, 210/*
1269
+ * &Ograve; : &#xd2; Latin capital letter O with
1270
+ * grave
1271
+ */, 211/*
1272
+ * &Oacute; : &#xd3; Latin capital letter O
1273
+ * with acute
1274
+ */, 212/*
1275
+ * &Ocirc; : &#xd4; Latin capital
1276
+ * letter O with circumflex
1277
+ */, 213/*
1278
+ * &Otilde; : &#xd5; Latin
1279
+ * capital letter O with
1280
+ * tilde
1281
+ */, 214/*
1282
+ * &Ouml; : &#xd6;
1283
+ * Latin capital
1284
+ * letter O with
1285
+ * diaeresis
1286
+ */, 215/*
1287
+ * &times; :
1288
+ * &#xd7;
1289
+ * multiplication
1290
+ * sign
1291
+ */, 216/*
1292
+ * &
1293
+ * Oslash
1294
+ * ;
1295
+ * :
1296
+ * &
1297
+ * #xd8
1298
+ * ;
1299
+ * Latin
1300
+ * capital
1301
+ * letter
1302
+ * O
1303
+ * with
1304
+ * stroke
1305
+ */,
1306
+ 217/*
1307
+ * &Ugrave; : &#xd9; Latin capital letter U with grave
1308
+ */, 218/*
1309
+ * &Uacute; : &#xda; Latin capital letter U with
1310
+ * acute
1311
+ */, 219/*
1312
+ * &Ucirc; : &#xdb; Latin capital letter U
1313
+ * with circumflex
1314
+ */, 220/*
1315
+ * &Uuml; : &#xdc; Latin capital
1316
+ * letter U with diaeresis
1317
+ */, 221/*
1318
+ * &Yacute; : &#xdd; Latin
1319
+ * capital letter Y with
1320
+ * acute
1321
+ */, 222/*
1322
+ * &THORN; : &#xde;
1323
+ * Latin capital
1324
+ * letter Thorn
1325
+ */, 223/*
1326
+ * &szlig; :
1327
+ * &#xdf;
1328
+ * Latin
1329
+ * small
1330
+ * letter
1331
+ * sharp s
1332
+ */, 224/*
1333
+ * &
1334
+ * agrave
1335
+ * ;
1336
+ * :
1337
+ * &
1338
+ * #xe0
1339
+ * ;
1340
+ * Latin
1341
+ * small
1342
+ * letter
1343
+ * a
1344
+ * with
1345
+ * grave
1346
+ */,
1347
+ 225/* &aacute; : &#xe1; Latin small letter a with acute */,
1348
+ 226/*
1349
+ * &acirc; : &#xe2; Latin small letter a with circumflex
1350
+ */,
1351
+ 227/* &atilde; : &#xe3; Latin small letter a with tilde */,
1352
+ 228/*
1353
+ * &auml; : &#xe4; Latin small letter a with diaeresis
1354
+ */, 229/*
1355
+ * &aring; : &#xe5; Latin small letter a with ring
1356
+ * above
1357
+ */, 230/*
1358
+ * &aelig; : &#xe6; Latin lowercase ligature
1359
+ * ae
1360
+ */, 231/*
1361
+ * &ccedil; : &#xe7; Latin small
1362
+ * letter c with cedilla
1363
+ */, 232/*
1364
+ * &egrave; : &#xe8; Latin
1365
+ * small letter e with grave
1366
+ */, 233/*
1367
+ * &eacute; : &#xe9;
1368
+ * Latin small letter
1369
+ * e with acute
1370
+ */, 234/*
1371
+ * &ecirc; :
1372
+ * &#xea;
1373
+ * Latin
1374
+ * small
1375
+ * letter e
1376
+ * with
1377
+ * circumflex
1378
+ */, 235/*
1379
+ * &euml
1380
+ * ;
1381
+ * :
1382
+ * &
1383
+ * #xeb
1384
+ * ;
1385
+ * Latin
1386
+ * small
1387
+ * letter
1388
+ * e
1389
+ * with
1390
+ * diaeresis
1391
+ */,
1392
+ 236/* &igrave; : &#xec; Latin small letter i with grave */,
1393
+ 237/* &iacute; : &#xed; Latin small letter i with acute */,
1394
+ 238/*
1395
+ * &icirc; : &#xee; Latin small letter i with circumflex
1396
+ */, 239/*
1397
+ * &iuml; : &#xef; Latin small letter i with
1398
+ * diaeresis
1399
+ */, 240/* &eth; : &#xf0; Latin small letter eth */,
1400
+ 241/* &ntilde; : &#xf1; Latin small letter n with tilde */,
1401
+ 242/* &ograve; : &#xf2; Latin small letter o with grave */,
1402
+ 243/* &oacute; : &#xf3; Latin small letter o with acute */,
1403
+ 244/*
1404
+ * &ocirc; : &#xf4; Latin small letter o with circumflex
1405
+ */, 245/*
1406
+ * &otilde; : &#xf5; Latin small letter o with tilde
1407
+ */, 246/*
1408
+ * &ouml; : &#xf6; Latin small letter o with
1409
+ * diaeresis
1410
+ */, 247/*
1411
+ * &divide; : &#xf7; division sign
1412
+ */, 248/*
1413
+ * &oslash; : &#xf8; Latin
1414
+ * small letter o with stroke
1415
+ */, 249/*
1416
+ * &ugrave; : &#xf9;
1417
+ * Latin small letter
1418
+ * u with grave
1419
+ */, 250/*
1420
+ * &uacute ;
1421
+ * : & #xfa ;
1422
+ * Latin
1423
+ * small
1424
+ * letter u
1425
+ * with acute
1426
+ */, 251/*
1427
+ * &ucirc
1428
+ * ;
1429
+ * :
1430
+ * &
1431
+ * #xfb
1432
+ * ;
1433
+ * Latin
1434
+ * small
1435
+ * letter
1436
+ * u
1437
+ * with
1438
+ * circumflex
1439
+ */,
1440
+ 252/*
1441
+ * &uuml; : &#xfc; Latin small letter u with diaeresis
1442
+ */, 253/*
1443
+ * &yacute; : &#xfd; Latin small letter y with acute
1444
+ */, 254/*
1445
+ * &thorn; : &#xfe; Latin small letter thorn
1446
+ */, 255/*
1447
+ * &yuml; : &#xff; Latin small letter
1448
+ * y with diaeresis
1449
+ */, 338/*
1450
+ * &OElig; : &#x152; Latin
1451
+ * capital ligature oe
1452
+ */, 339/*
1453
+ * &oelig ; : & #x153
1454
+ * ; Latin small
1455
+ * ligature oe
1456
+ */, 352/*
1457
+ * &Scaron; :
1458
+ * &#x160;
1459
+ * Latin
1460
+ * capital
1461
+ * letter S
1462
+ * with caron
1463
+ */, 353/*
1464
+ * &
1465
+ * scaron
1466
+ * ;
1467
+ * :
1468
+ * &
1469
+ * #x161
1470
+ * ;
1471
+ * Latin
1472
+ * small
1473
+ * letter
1474
+ * s
1475
+ * with
1476
+ * caron
1477
+ */,
1478
+ 376/*
1479
+ * &Yuml; : &#x178; Latin capital letter Y with diaeresis
1480
+ */, 402/*
1481
+ * &fnof; : &#x192; Latin small letter f with hook
1482
+ */, 710/*
1483
+ * &circ; : &#x2c6; modifier letter
1484
+ * circumflex accent
1485
+ */, 732/*
1486
+ * &tilde; : &#x2dc; small tilde
1487
+ */, 913/*
1488
+ * &Alpha ; : & #x391 ; Greek
1489
+ * capital letter Alpha
1490
+ */, 914/*
1491
+ * &Beta; : &#x392;
1492
+ * Greek capital
1493
+ * letter Beta
1494
+ */, 915/*
1495
+ * &Gamma; :
1496
+ * &#x393;
1497
+ * Greek
1498
+ * capital
1499
+ * letter
1500
+ * Gamma
1501
+ */, 916/*
1502
+ * &Delta
1503
+ * ;
1504
+ * :
1505
+ * &
1506
+ * #x394
1507
+ * ;
1508
+ * Greek
1509
+ * capital
1510
+ * letter
1511
+ * Delta
1512
+ */,
1513
+ 917/*
1514
+ * &Epsilon; : &#x395; Greek capital letter Epsilon
1515
+ */, 918/*
1516
+ * &Zeta; : &#x396; Greek capital letter Zeta
1517
+ */, 919/*
1518
+ * &Eta; : &#x397 ; Greek capital letter Eta
1519
+ */, 920/*
1520
+ * &Theta ; : & #x398 ; Greek capital
1521
+ * letter Theta
1522
+ */, 921/*
1523
+ * &Iota; : &#x399; Greek
1524
+ * capital letter Iota
1525
+ */, 922/*
1526
+ * &Kappa ; : &#
1527
+ * x39a; Greek
1528
+ * capital letter
1529
+ * Kappa
1530
+ */, 923/*
1531
+ * &Lambda; :
1532
+ * &#x39b;
1533
+ * Greek
1534
+ * capital
1535
+ * letter
1536
+ * Lambda
1537
+ */, 924/*
1538
+ * &Mu
1539
+ * ;
1540
+ * :
1541
+ * &
1542
+ * #x39c
1543
+ * ;
1544
+ * Greek
1545
+ * capital
1546
+ * letter
1547
+ * Mu
1548
+ */,
1549
+ 925/*
1550
+ * &Nu; : &#x39d; Greek capital letter Nu
1551
+ */, 926/*
1552
+ * &Xi; : &#x39e; Greek capital letter Xi
1553
+ */, 927/*
1554
+ * &Omicron; : &#x39f; Greek capital letter
1555
+ * Omicron
1556
+ */, 928/*
1557
+ * &Pi ; : & #x3a0 ; Greek capital
1558
+ * letter Pi
1559
+ */, 929/*
1560
+ * &Rho; : &#x3a1; Greek
1561
+ * capital letter Rho
1562
+ */, 931/*
1563
+ * &Sigma; : &#x3a3;
1564
+ * Greek capital
1565
+ * letter Sigma
1566
+ */, 932/*
1567
+ * &Tau; :
1568
+ * &#x3a4;
1569
+ * Greek
1570
+ * capital
1571
+ * letter Tau
1572
+ */, 933/*
1573
+ * &
1574
+ * Upsilon
1575
+ * ;
1576
+ * :
1577
+ * &#
1578
+ * x3a5
1579
+ * ;
1580
+ * Greek
1581
+ * capital
1582
+ * letter
1583
+ * Upsilon
1584
+ */,
1585
+ 934/*
1586
+ * &Phi; : &#x3a6; Greek capital letter Phi
1587
+ */, 935/*
1588
+ * &Chi; : &#x3a7 ; Greek capital letter Chi
1589
+ */, 936/*
1590
+ * &Psi ; : & #x3a8 ; Greek capital letter
1591
+ * Psi
1592
+ */, 937/*
1593
+ * &Omega ; : &# x3a9; Greek capital
1594
+ * letter Omega
1595
+ */, 945/*
1596
+ * &alpha; : &#x3b1; Greek
1597
+ * small letter alpha
1598
+ */, 946/*
1599
+ * &beta; : &#x3b2 ;
1600
+ * Greek small letter
1601
+ * beta
1602
+ */, 947/*
1603
+ * &gamma; :
1604
+ * &#x3b3;
1605
+ * Greek
1606
+ * small
1607
+ * letter
1608
+ * gamma
1609
+ */, 948/*
1610
+ * &delta
1611
+ * ;
1612
+ * :
1613
+ * &#
1614
+ * x3b4
1615
+ * ;
1616
+ * Greek
1617
+ * small
1618
+ * letter
1619
+ * delta
1620
+ */,
1621
+ 949/*
1622
+ * &epsilon; : &#x3b5; Greek small letter epsilon
1623
+ */, 950/*
1624
+ * &zeta; : &#x3b6; Greek small letter zeta
1625
+ */, 951/*
1626
+ * &eta; : &#x3b7 ; Greek small letter eta
1627
+ */, 952/*
1628
+ * &theta; : &#x3b8; Greek small
1629
+ * letter theta
1630
+ */, 953/*
1631
+ * &iota; : &#x3b9 ; Greek
1632
+ * small letter iota
1633
+ */, 954/*
1634
+ * &kappa ; : & #x3ba
1635
+ * ; Greek small
1636
+ * letter kappa
1637
+ */, 955/*
1638
+ * &lambda ;
1639
+ * : &# x3bb;
1640
+ * Greek
1641
+ * small
1642
+ * letter
1643
+ * lambda
1644
+ */, 956/*
1645
+ * &mu
1646
+ * ;
1647
+ * :
1648
+ * &
1649
+ * #x3bc
1650
+ * ;
1651
+ * Greek
1652
+ * small
1653
+ * letter
1654
+ * mu
1655
+ */,
1656
+ 957/*
1657
+ * &nu; : &#x3bd; Greek small letter nu
1658
+ */, 958/* &xi; : &#x3be; Greek small letter xi */, 959/*
1659
+ * &
1660
+ * omicron
1661
+ * ; :
1662
+ * &
1663
+ * #x3bf
1664
+ * ;
1665
+ * Greek
1666
+ * small
1667
+ * letter
1668
+ * omicron
1669
+ */,
1670
+ 960/* &pi; : &#x3c0; Greek small letter pi */, 961/*
1671
+ * &rho; :
1672
+ * &#x3c1;
1673
+ * Greek small
1674
+ * letter rho
1675
+ */, 962/*
1676
+ * &sigmaf
1677
+ * ; :
1678
+ * &
1679
+ * #x3c2
1680
+ * ;
1681
+ * Greek
1682
+ * small
1683
+ * letter
1684
+ * final
1685
+ * sigma
1686
+ */,
1687
+ 963/*
1688
+ * &sigma; : &#x3c3; Greek small letter sigma
1689
+ */, 964/*
1690
+ * &tau; : &#x3c4 ; Greek small letter tau
1691
+ */, 965/*
1692
+ * &upsilon; : &#x3c5; Greek small letter
1693
+ * upsilon
1694
+ */, 966/*
1695
+ * &phi; : &#x3c6; Greek small letter
1696
+ * phi
1697
+ */, 967/*
1698
+ * &chi ; : & #x3c7 ; Greek
1699
+ * small letter chi
1700
+ */, 968/*
1701
+ * &psi; : &#x3c8;
1702
+ * Greek small letter
1703
+ * psi
1704
+ */, 969/*
1705
+ * &omega; :
1706
+ * &#x3c9;
1707
+ * Greek
1708
+ * small
1709
+ * letter
1710
+ * omega
1711
+ */, 977/*
1712
+ * &
1713
+ * thetasym
1714
+ * ;
1715
+ * :
1716
+ * &
1717
+ * #x3d1
1718
+ * ;
1719
+ * Greek
1720
+ * theta
1721
+ * symbol
1722
+ */,
1723
+ 978/*
1724
+ * &upsih; : &#x3d2; Greek upsilon with hook symbol
1725
+ */, 982/* &piv; : &#x3d6; Greek pi symbol */, 8194/*
1726
+ * &ensp;
1727
+ * :
1728
+ * &#x2002
1729
+ * ; en
1730
+ * space
1731
+ */,
1732
+ 8195/*
1733
+ * &emsp; : &#x2003 ; em space
1734
+ */, 8201/* &thinsp; : &#x2009; thin space */, 8204/*
1735
+ * &zwnj;
1736
+ * :
1737
+ * &#x200c
1738
+ * ; zero
1739
+ * width
1740
+ * non
1741
+ * -joiner
1742
+ */,
1743
+ 8205/*
1744
+ * &zwj; : &#x200d; zero width joiner
1745
+ */, 8206/* &lrm; : &#x200e; left-to-right mark */,
1746
+ 8207/*
1747
+ * &rlm; : &#x200f; right -to-left mark
1748
+ */, 8211/* &ndash; : &#x2013; en dash */, 8212/*
1749
+ * &mdash ; :
1750
+ * & #x2014 ;
1751
+ * em dash
1752
+ */,
1753
+ 8216/*
1754
+ * &lsquo; : &#x2018; left single-6 quotation mark
1755
+ */, 8217/*
1756
+ * &rsquo ; : &# x2019 ; right single -9 quotation
1757
+ * mark
1758
+ */, 8218/*
1759
+ * &sbquo; : &#x201a; single low-9
1760
+ * quotation mark
1761
+ */, 8220/*
1762
+ * &ldquo; : &#x201c; left
1763
+ * double-66 quotation mark
1764
+ */, 8221/*
1765
+ * &rdquo; : &#x201d;
1766
+ * right double-99
1767
+ * quotation mark
1768
+ */, 8222/*
1769
+ * &bdquo ; : &
1770
+ * #x201e ;
1771
+ * double low
1772
+ * -99
1773
+ * quotation
1774
+ * mark
1775
+ */, 8224/*
1776
+ * &dagger
1777
+ * ; :
1778
+ * &
1779
+ * #x2020
1780
+ * ;
1781
+ * dagger
1782
+ */,
1783
+ 8225/*
1784
+ * &Dagger; : &#x2021; double dagger
1785
+ */, 8226/*
1786
+ * &bull ; : & #x2022 ; bullet
1787
+ */, 8230/*
1788
+ * &hellip ; : &# x2026 ; horizontal
1789
+ * ellipsis
1790
+ */, 8240/*
1791
+ * &permil; : &#x2030; per mille
1792
+ * sign
1793
+ */, 8242/*
1794
+ * &prime; : &#x2032;
1795
+ * prime
1796
+ */, 8243/*
1797
+ * &Prime ; :
1798
+ * &# x2033 ;
1799
+ * double prime
1800
+ */, 8249/*
1801
+ * &lsaquo
1802
+ * ; :
1803
+ * &
1804
+ * #x2039
1805
+ * ;
1806
+ * single
1807
+ * left
1808
+ * -
1809
+ * pointing
1810
+ * angle
1811
+ * quotation
1812
+ * mark
1813
+ */,
1814
+ 8250/*
1815
+ * &rsaquo; : &#x203a; single right-pointing angle quotation
1816
+ * mark
1817
+ */, 8254/*
1818
+ * &oline; : &#x203e; overline
1819
+ */, 8260/*
1820
+ * &frasl ; : & #x2044 ; fraction slash
1821
+ */, 8364/*
1822
+ * &euro; : &#x20ac; Euro
1823
+ * currency sign
1824
+ */, 8465/*
1825
+ * &image ; : &# x2111 ;
1826
+ * black - letter
1827
+ * capital i
1828
+ */, 8472/*
1829
+ * &weierp; :
1830
+ * &#x2118;
1831
+ * script
1832
+ * capital p
1833
+ */, 8476/*
1834
+ * &real
1835
+ * ; :
1836
+ * &
1837
+ * #x211c
1838
+ * ;
1839
+ * black
1840
+ * -
1841
+ * letter
1842
+ * capital
1843
+ * r
1844
+ */,
1845
+ 8482/*
1846
+ * &trade; : &#x2122; trademark sign
1847
+ */, 8501/*
1848
+ * &alefsym ; : & #x2135 ; alef symbol
1849
+ */, 8592/*
1850
+ * &larr; : &#x2190 ; leftwards arrow
1851
+ */, 8593/*
1852
+ * &uarr; : &#x2191; upwards
1853
+ * arrow
1854
+ */, 8594/*
1855
+ * &rarr; : &#x2192;
1856
+ * rightwards arrow
1857
+ */, 8595/*
1858
+ * &darr; :
1859
+ * &#x2193 ;
1860
+ * downwards
1861
+ * arrow
1862
+ */, 8596/*
1863
+ * &harr
1864
+ * ; :
1865
+ * &
1866
+ * #x2194
1867
+ * ;
1868
+ * left
1869
+ * right
1870
+ * arrow
1871
+ */,
1872
+ 8629/*
1873
+ * &crarr; : &#x21b5; downwards arrow with corner leftwards
1874
+ */, 8656/*
1875
+ * &lArr; : &#x21d0 ; leftwards double arrow
1876
+ */, 8657/*
1877
+ * &uArr ; : & #x21d1 ; upwards double
1878
+ * arrow
1879
+ */, 8658/*
1880
+ * &rArr; : &#x21d2; rightwards
1881
+ * double arrow
1882
+ */, 8659/*
1883
+ * &dArr; : &#x21d3;
1884
+ * downwards double
1885
+ * arrow
1886
+ */, 8660/*
1887
+ * &hArr; :
1888
+ * &#x21d4 ;
1889
+ * left right
1890
+ * double arrow
1891
+ */, 8704/*
1892
+ * &forall
1893
+ * ; :
1894
+ * &
1895
+ * #x2200
1896
+ * ;
1897
+ * for
1898
+ * all
1899
+ */,
1900
+ 8706/*
1901
+ * &part; : &#x2202; partial differential
1902
+ */, 8707/*
1903
+ * &exist; : &#x2203; there exists
1904
+ */, 8709/* &empty; : &#x2205; empty set */,
1905
+ 8711/*
1906
+ * &nabla; : &#x2207; nabla
1907
+ */, 8712/*
1908
+ * &isin; : &#x2208; element of
1909
+ */,
1910
+ 8713/* &notin; : &#x2209; not an element of */, 8715/*
1911
+ * &ni; :
1912
+ * &#x220b;
1913
+ * contains
1914
+ * as member
1915
+ */,
1916
+ 8719/* &prod; : &#x220f; n-ary product */, 8721/*
1917
+ * &sum; :
1918
+ * &#x2211; n-ary
1919
+ * summation
1920
+ */, 8722/*
1921
+ * &minus
1922
+ * ; :
1923
+ * &#
1924
+ * x2212
1925
+ * ;
1926
+ * minus
1927
+ * sign
1928
+ */,
1929
+ 8727/*
1930
+ * &lowast; : &#x2217; asterisk operator
1931
+ */, 8730/*
1932
+ * &radic; : &#x221a; square root
1933
+ */, 8733/*
1934
+ * &prop; : &#x221d; proportional to
1935
+ */, 8734/*
1936
+ * &infin ; : & #x221e ; infinity
1937
+ */, 8736/*
1938
+ * &ang; : &#x2220 ;
1939
+ * angle
1940
+ */, 8743/*
1941
+ * &and; :
1942
+ * &#x2227;
1943
+ * logical and
1944
+ */, 8744/*
1945
+ * &or;
1946
+ * :
1947
+ * &#
1948
+ * x2228
1949
+ * ;
1950
+ * logical
1951
+ * or
1952
+ */,
1953
+ 8745/*
1954
+ * &cap; : &#x2229; intersection
1955
+ */, 8746/* &cup; : &#x222a; union */, 8747/*
1956
+ * &int; :
1957
+ * &#x222b;
1958
+ * integral
1959
+ */, 8756/*
1960
+ * &there4
1961
+ * ; :
1962
+ * &#
1963
+ * x2234
1964
+ * ;
1965
+ * therefore
1966
+ */,
1967
+ 8764/*
1968
+ * &sim ; : & #x223c ; tilde operator
1969
+ */, 8773/*
1970
+ * &cong; : &#x2245 ; congruent to
1971
+ */, 8776/* &asymp; : &#x2248; asymptotic to */,
1972
+ 8800/*
1973
+ * &ne; : &#x2260; not equal to
1974
+ */, 8801/*
1975
+ * &equiv ; : &# x2261 ; identical to
1976
+ */, 8804/*
1977
+ * &le; : &#x2264; less-than or equal to
1978
+ */, 8805/*
1979
+ * &ge; : &#x2265; greater -than
1980
+ * or equal to
1981
+ */, 8834/*
1982
+ * &sub; : &#x2282;
1983
+ * subset of
1984
+ */, 8835/*
1985
+ * &sup; :
1986
+ * &#x2283 ;
1987
+ * superset of
1988
+ */, 8836/*
1989
+ * &nsub
1990
+ * ; :
1991
+ * &
1992
+ * #x2284
1993
+ * ;
1994
+ * not
1995
+ * a
1996
+ * subset
1997
+ * of
1998
+ */,
1999
+ 8838/*
2000
+ * &sube; : &#x2286 ; subset of or equal to
2001
+ */, 8839/*
2002
+ * &supe; : &#x2287; superset of or equal to
2003
+ */, 8853/*
2004
+ * &oplus ; : &# x2295 ; circled plus
2005
+ */, 8855/*
2006
+ * &otimes; : &#x2297; circled
2007
+ * times
2008
+ */, 8869/*
2009
+ * &perp ; : & #x22a5 ;
2010
+ * up tack
2011
+ */, 8901/*
2012
+ * &sdot; :
2013
+ * &#x22c5 ;
2014
+ * dot operator
2015
+ */, 8968/*
2016
+ * &lceil
2017
+ * ; :
2018
+ * &
2019
+ * #x2308
2020
+ * ;
2021
+ * left
2022
+ * ceiling
2023
+ */,
2024
+ 8969/*
2025
+ * &rceil; : &#x2309; right ceiling
2026
+ */, 8970/*
2027
+ * &lfloor ; : &# x230a ; left floor
2028
+ */, 8971/* &rfloor; : &#x230b; right floor */,
2029
+ 9001/*
2030
+ * &lang; : &#x2329 ; left- pointing angle bracket
2031
+ */, 9002/*
2032
+ * &rang; : &#x232a ; right - pointing angle
2033
+ * bracket
2034
+ */, 9674/* &loz; : &#x25ca; lozenge */, 9824/*
2035
+ * &spades
2036
+ * ; :
2037
+ * &
2038
+ * #x2660
2039
+ * ;
2040
+ * black
2041
+ * spade
2042
+ * suit
2043
+ */,
2044
+ 9827/*
2045
+ * &clubs; : &#x2663; black club suit
2046
+ */, 9829/*
2047
+ * &hearts ; : &# x2665 ; black heart suit
2048
+ */, 9830/*
2049
+ * &diams; : &#x2666; black diamond suit
2050
+ */, };
2051
+ // allow 50% extra space for faster lookup.
2052
+ entityToChar = new HashMap<String, Character>(
2053
+ entityKeys.length * 150 / 100);
2054
+ for (int i = 0; i < entityKeys.length; i++) {
2055
+ // leave out nbsp so it can be specially handled if entity not
2056
+ // found.
2057
+ if (!entityKeys[i].equals("nbsp")) {
2058
+ entityToChar.put(entityKeys[i], entityValues[i]);
2059
+ }
2060
+ // add also &apos; for strip but not insert. optional for XML, not
2061
+ // used in HTML.
2062
+ entityToChar.put("apos", (char) 39);
2063
+ }
2064
+ }// end static
2065
+
2066
+ /**
2067
+ * convert an entity to a single char.
2068
+ *
2069
+ * @param bareEntity
2070
+ * String entity to convert convert. must have lead & and trail ;
2071
+ * stripped; may have form: #x12ff or #123 or lt or nbsp style
2072
+ * entity. Works faster if entity in lower case.
2073
+ * @param howToTranslateNbsp
2074
+ * char you would like &nbsp translated to, usually ' ' or (char)
2075
+ * 160
2076
+ *
2077
+ * @return equivalent character. 0 if not recognised.
2078
+ */
2079
+ public static char bareHTMLEntityToChar(String bareEntity,
2080
+ char howToTranslateNbsp) {
2081
+ // first check for alpha entity
2082
+ Character code = entityToChar.get(bareEntity);
2083
+ if (code != null) {
2084
+ return code;
2085
+ }
2086
+ code = entityToChar.get(bareEntity.toLowerCase());
2087
+ if (code != null) {
2088
+ return code;
2089
+ }
2090
+ // nbsp is not in hashMap. We test for it specially.
2091
+ if (bareEntity.length() == 4 && bareEntity.equals("nbsp")
2092
+ || bareEntity.equals("NBSP")) {
2093
+ return howToTranslateNbsp;
2094
+ }
2095
+ // check at least have &_#1_; (no & or ; at this point )
2096
+ if (bareEntity.length() < 2) {
2097
+ return 0;
2098
+ }
2099
+ try {
2100
+ if (bareEntity.charAt(0) == '#') {
2101
+ final char secondChar = bareEntity.charAt(1);
2102
+ if (secondChar == 'x' || secondChar == 'X') {
2103
+ // handle hex entities of form &_#x12ff_;
2104
+ // ensure at least have &_#xf_;
2105
+ if (bareEntity.length() < 3) {
2106
+ return 0;
2107
+ }
2108
+ // had &_#x123D_;
2109
+ return (char) Integer.parseInt(bareEntity.substring(2),
2110
+ /* hex */
2111
+ 16);
2112
+ } else {
2113
+ // handle decimal entities
2114
+ // had &_#123_;
2115
+ return (char) Integer.parseInt(bareEntity.substring(1));
2116
+ }
2117
+ } else {
2118
+ // some unrecognized/malformed bareEntity
2119
+ return 0;
2120
+ }
2121
+ } catch (NumberFormatException e) {
2122
+ return 0;
2123
+ }
2124
+ }// end entityToChar
2125
+
2126
+ /**
2127
+ * strips tags and entities from HTML. Leaves \n \r unchanged.
2128
+ *
2129
+ * @param text
2130
+ * to flatten
2131
+ * @param translateNbspTo
2132
+ * char you would like &nbsp; translated to, usually ' ' or
2133
+ * (char) 160 .
2134
+ *
2135
+ * @return flattened text
2136
+ */
2137
+ public static String flattenHTML(String text, char translateNbspTo) {
2138
+ return stripHTMLEntities(stripHTMLTags(text), translateNbspTo);
2139
+ }
2140
+
2141
+ /**
2142
+ * strips tags and entities from XML..
2143
+ *
2144
+ * @param text
2145
+ * to flatten
2146
+ *
2147
+ * @return flattened text
2148
+ */
2149
+ public static String flattenXML(String text) {
2150
+ return stripXMLEntities(stripXMLTags(text));
2151
+ }
2152
+
2153
+ /**
2154
+ * Checks a number of gauntlet conditions to ensure this is a valid entity.
2155
+ * Converts Entity to corresponding char.
2156
+ *
2157
+ * @param possBareEntityWithSemicolon
2158
+ * string that may hold an entity. Lead & must be stripped, but
2159
+ * may optionally contain text past the ;
2160
+ * @param translateNbspTo
2161
+ * char you would like nbsp translated to, usually ' ' or (char)
2162
+ * 160 .
2163
+ *
2164
+ * @return corresponding unicode character, or 0 if the entity is invalid.
2165
+ */
2166
+ protected static char possBareHTMLEntityWithSemicolonToChar(
2167
+ String possBareEntityWithSemicolon, char translateNbspTo) {
2168
+ if (possBareEntityWithSemicolon.length() < SHORTEST_ENTITY - 1) {
2169
+ return 0;
2170
+ }
2171
+
2172
+ // find the trailing ;
2173
+ int whereSemi = possBareEntityWithSemicolon.indexOf(';',
2174
+ SHORTEST_ENTITY - 2/* where start looking */);
2175
+ if (whereSemi < SHORTEST_ENTITY - 2) {
2176
+ return 0;
2177
+ }
2178
+
2179
+ return bareHTMLEntityToChar(
2180
+ possBareEntityWithSemicolon.substring(0, whereSemi),
2181
+ translateNbspTo);
2182
+ }
2183
+
2184
+ /**
2185
+ * Checks a number of gauntlet conditions to ensure this is a valid entity.
2186
+ * Converts Entity to corresponding char.
2187
+ *
2188
+ * @param possBareEntityWithSemicolon
2189
+ * string that may hold an entity. Lead & must be stripped, but
2190
+ * may optionally contain text past the ;
2191
+ *
2192
+ * @return corresponding unicode character, or 0 if the entity is invalid.
2193
+ * nbsp -> (char) 160
2194
+ */
2195
+ public static char possEntityToChar(String possBareEntityWithSemicolon) {
2196
+ return possBareHTMLEntityWithSemicolonToChar(
2197
+ possBareEntityWithSemicolon, UNICODE_NBSP_160_0x0a);
2198
+ }
2199
+
2200
+ /**
2201
+ * Prepares tags for removal, to ensure they are replaced by a space
2202
+ * <tr>
2203
+ * <td>
2204
+ * <th><br>
2205
+ * <p>
2206
+ * </tr>
2207
+ * </td></th></br></p> --> _
2208
+ * <tr
2209
+ * _
2210
+ * </tr
2211
+ * etc.
2212
+ *
2213
+ * @param html
2214
+ * input HTML or XML
2215
+ *
2216
+ * @return raw text, with spacing tags fluffed up with a space so they will
2217
+ * later be removed with a space.
2218
+ */
2219
+ private static String preStripIndividualTags(String html) {
2220
+ StringBuilder sb = new StringBuilder(html.length() * 110 / 100);
2221
+ char prevChar = 0;
2222
+ for (int i = 0; i < html.length(); i++) {
2223
+ final char c = html.charAt(i);
2224
+ if (c == '<') {
2225
+ // startsWith index need not be inside the String.
2226
+ int look = (html.startsWith("/", i + 1)) ? i + 2 : i + 1;
2227
+
2228
+ // handle <tr </tr etc.
2229
+ for (String tag : spacingTags) {
2230
+ if (html.startsWith(tag, look)) {
2231
+ // no need to add space if one there already.
2232
+ if (prevChar > ' ') {
2233
+ // insert space before <
2234
+ sb.append(' ');
2235
+ }
2236
+ break;
2237
+ }
2238
+ }
2239
+ }
2240
+ sb.append(c);
2241
+ prevChar = c;
2242
+ }
2243
+ return sb.toString();
2244
+ }
2245
+
2246
+ /**
2247
+ * Converts HTML to text converting entities such as &quot; back to " and
2248
+ * &lt; back to &lt; Ordinary text passes unchanged. Also strips decimal and
2249
+ * hex entities and stray HTML entities.
2250
+ *
2251
+ * @param text
2252
+ * raw text to be processed. Must not be null.
2253
+ * @param translateNbspTo
2254
+ * char you would like &nbsp; translated to, usually ' ' or
2255
+ * (char) 160 .
2256
+ *
2257
+ * @return translated text. It also handles HTML 4.0 entities such as
2258
+ * &hearts; &#123; and &#xffff; &nbsp; -> 160. null input returns
2259
+ * null.
2260
+ */
2261
+ public static String stripHTMLEntities(String text, char translateNbspTo) {
2262
+ if (text == null) {
2263
+ return null;
2264
+ }
2265
+ if (text.indexOf('&') < 0) {
2266
+ // are no entities, nothing to do
2267
+ return text;
2268
+ }
2269
+ int originalTextLength = text.length();
2270
+ StringBuilder sb = new StringBuilder(originalTextLength);
2271
+ for (int i = 0; i < originalTextLength; i++) {
2272
+ int whereAmp = text.indexOf('&', i);
2273
+ if (whereAmp < 0) {
2274
+ // no more &s, we are done
2275
+ // append all remaining text
2276
+ sb.append(text.substring(i));
2277
+ break;
2278
+ } else {
2279
+ // append all text to left of next &
2280
+ sb.append(text.substring(i, whereAmp));
2281
+ // avoid reprocessing those chars
2282
+ i = whereAmp;
2283
+ // text.charAt(i) is an &
2284
+ // possEntity has lead & stripped.
2285
+ String possEntity = text.substring(i + 1,
2286
+ Math.min(i + LONGEST_ENTITY, text.length()));
2287
+ char t = possBareHTMLEntityWithSemicolonToChar(possEntity,
2288
+ translateNbspTo);
2289
+ if (t != 0) {
2290
+ // was a good entity, keep its equivalent char.
2291
+ sb.append(t);
2292
+ // avoid reprocessing chars forming the entity
2293
+ int whereSemi = possEntity
2294
+ .indexOf(";", SHORTEST_ENTITY - 2);
2295
+ i += whereSemi + 1;
2296
+ } else {
2297
+ // treat & just as ordinary character
2298
+ sb.append('&');
2299
+ }
2300
+ }// end else
2301
+ }// end for
2302
+ // if result is not shorter, we did not do anything. Saves RAM.
2303
+ return (sb.length() == originalTextLength) ? text : sb.toString();
2304
+ }// end stripEntities
2305
+
2306
+ // -------------------------- STATIC METHODS --------------------------
2307
+
2308
+ /**
2309
+ * remove all text between &lt;applet.. &lt;/applet&gt;, &lt;style...
2310
+ * &lt;/style&gt; &lt;script... &lt;/script&gt;
2311
+ *
2312
+ * @param s
2313
+ * HTML string to strip tag pairs out of.
2314
+ *
2315
+ * @return string with tag pairs stripped out.
2316
+ */
2317
+ private static String stripHTMLTagPairs(String s) {
2318
+ String[] tags = { "applet", "APPLET", "style", "STYLE", "script",
2319
+ "SCRIPT" };
2320
+ for (final String tag : tags) {
2321
+ final String beginTag = "<" + tag;
2322
+ final String endTag = "</" + tag + ">";
2323
+ int begin = 0;
2324
+ while (begin < s.length()
2325
+ && (begin = s.indexOf(beginTag, begin)) >= 0) {
2326
+ final int end;
2327
+ if ((end = s.indexOf(endTag, begin + beginTag.length())) > 0) {
2328
+ // chop out the <applet ... </applet>
2329
+
2330
+ s = s.substring(0, begin)
2331
+ + s.substring(end + endTag.length());
2332
+ } else {
2333
+ // no matching end tag, chop off entire end
2334
+ s = s.substring(0, begin);
2335
+ }
2336
+ }
2337
+ }
2338
+ return s;
2339
+ }
2340
+
2341
+ /**
2342
+ * Removes tags from HTML leaving just the raw text. Leaves entities as is,
2343
+ * e.g. does not convert &amp; back to &. similar to code in Quoter. Also
2344
+ * removes &lt;!-- --&gt; comments. Presumes perfectly formed HTML, no &gt;
2345
+ * in comments, all &lt;...&gt; balanced. Also removes text between applet,
2346
+ * style and script tag pairs. Leaves &nbsp; and other entities as is.
2347
+ *
2348
+ * @param html
2349
+ * input HTML
2350
+ *
2351
+ * @return raw text, with whitespaces collapsed to a single space, trimmed.
2352
+ */
2353
+ public static String stripHTMLTags(String html) {
2354
+ html = stripHTMLTagPairs(html);
2355
+ return stripIndividualTags(html);
2356
+ }
2357
+
2358
+ /**
2359
+ * Removes tags from HTML leaving just the raw text. Leaves entities as is,
2360
+ * e.g. Presumes perfectly formed HTML. <b> </b> <i> </i>
2361
+ * <tr xxx>
2362
+ * etc removed leaving nothing behind.
2363
+ *
2364
+ * @param html
2365
+ * input HTML or XML
2366
+ *
2367
+ * @return raw text, with whitespaces collapsed to a single space, trimmed.
2368
+ */
2369
+ private static String stripIndividualTags(String html) {
2370
+ html = html.trim();
2371
+ if (html.indexOf('<') < 0) {
2372
+ return html;
2373
+ }
2374
+ // condition String so that some tags will always turn into space.
2375
+ html = preStripIndividualTags(html);
2376
+ int numChars = html.length();
2377
+ // will only shrink.
2378
+ StringBuilder result = new StringBuilder(numChars);
2379
+
2380
+ /**
2381
+ * are we inside a tag, eg. inside <td xxxx>
2382
+ */
2383
+ boolean inside = false;
2384
+
2385
+ /**
2386
+ * Have we cleaned any White Space?
2387
+ */
2388
+ boolean cleanedAnyWhitespace = false;
2389
+
2390
+ /**
2391
+ * Was the last char we saw a space? We use this to collapse spaces.
2392
+ */
2393
+ boolean lastCharSpace = false;
2394
+ for (int i = 0; i < numChars; i++) {
2395
+ char c = html.charAt(i);
2396
+ switch (c) {
2397
+ default:
2398
+ if (c < ' ') {
2399
+ // handle stray whitespace
2400
+ if (!inside) {
2401
+ lastCharSpace = true;
2402
+ cleanedAnyWhitespace = true;
2403
+ }
2404
+ } else {
2405
+ // ordinary character, ignored inside a tag
2406
+ if (!inside) {
2407
+ if (lastCharSpace) {
2408
+ // deal with pending whitespace
2409
+ result.append(' ');
2410
+ lastCharSpace = false;
2411
+ }
2412
+ result.append(c);
2413
+ }
2414
+ }
2415
+ break;
2416
+
2417
+ case '<':
2418
+ inside = true;
2419
+ // ignore
2420
+ break;
2421
+
2422
+ case '>':
2423
+ inside = false;
2424
+ // ignore
2425
+ break;
2426
+
2427
+ case ' ':
2428
+ if (!inside) {
2429
+ lastCharSpace = true;
2430
+ }
2431
+ break;
2432
+
2433
+ // whitespace
2434
+ case '\r':
2435
+ case '\t':
2436
+ case '\n':
2437
+ case 127:
2438
+ case UNICODE_NBSP_160_0x0a:
2439
+
2440
+ if (!inside) {
2441
+ lastCharSpace = true;
2442
+ cleanedAnyWhitespace = true;
2443
+ }
2444
+ break;
2445
+ }
2446
+ }// end for
2447
+ // return original string trimmed if we did not really change anything
2448
+ return (cleanedAnyWhitespace || result.length() != numChars) ? result
2449
+ .toString().trim() : html;
2450
+ }
2451
+
2452
+ /**
2453
+ * Converts XML to text converting entities such as &quot; back to " and
2454
+ * &lt; back to &lt; Ordinary text passes unchanged. Also strips decimal and
2455
+ * hex entities and stray HTML entities.
2456
+ *
2457
+ * @param text
2458
+ * raw XML text to be processed. Must not be null.
2459
+ *
2460
+ * @return translated text. null input returns null.
2461
+ */
2462
+ public static String stripXMLEntities(String text) {
2463
+ return stripHTMLEntities(text, ' ');
2464
+ }
2465
+
2466
+ /**
2467
+ * Removes tags from XML leaving just the raw text. Leaves entities as is,
2468
+ * e.g. does not convert &amp; back to &. similar to code in Quoter. Also
2469
+ * removes &lt;!-- --&gt; comments. Presumes perfectly formed XML, no &gt;
2470
+ * in comments, all &lt;...&gt; balanced. Leaves entities as is.
2471
+ *
2472
+ * @param xml
2473
+ * input XML
2474
+ *
2475
+ * @return raw text, with whitespaces collapsed to a single space, trimmed.
2476
+ */
2477
+ public static String stripXMLTags(String xml) {
2478
+ return stripIndividualTags(xml);
2479
+ }
2480
+ }