toxiclibs 0.2-java → 0.5.0-java

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 (383) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +16 -0
  3. data/CHANGELOG.md +4 -0
  4. data/LICENSE +675 -0
  5. data/README.md +12 -5
  6. data/Rakefile +25 -82
  7. data/examples/attract_repel/attract_repel.rb +30 -0
  8. data/examples/attract_repel/attractor.rb +23 -0
  9. data/examples/attract_repel/particle.rb +27 -0
  10. data/examples/data/ti_yong.png +0 -0
  11. data/examples/force_directed/cluster.rb +76 -0
  12. data/examples/force_directed/force_directed_graph.rb +92 -0
  13. data/examples/force_directed/node.rb +26 -0
  14. data/examples/gray_scott_image.rb +75 -0
  15. data/examples/gray_scott_tone_map.rb +77 -0
  16. data/examples/implicit.rb +139 -0
  17. data/examples/inflate_mesh.rb +89 -0
  18. data/examples/model_align.rb +44 -0
  19. data/examples/povmesh/ftest.rb +46 -0
  20. data/examples/povmesh/tentacle.rb +73 -0
  21. data/examples/simple_cluster/cluster.rb +47 -0
  22. data/examples/simple_cluster/node.rb +27 -0
  23. data/examples/simple_cluster/simple_cluster.rb +60 -0
  24. data/examples/soft_body/blanket.rb +45 -0
  25. data/examples/soft_body/connection.rb +16 -0
  26. data/examples/soft_body/particle.rb +22 -0
  27. data/examples/soft_body/soft_body_square_adapted.rb +55 -0
  28. data/lib/toxiclibs.jar +0 -0
  29. data/lib/toxiclibs.rb +91 -32
  30. data/lib/toxiclibs/version.rb +1 -1
  31. data/pom.xml +122 -0
  32. data/src/com/toxi/net/ClientListener.java +41 -0
  33. data/src/com/toxi/net/ServerListener.java +70 -0
  34. data/src/com/toxi/net/ServerListenerAdapter.java +47 -0
  35. data/src/com/toxi/net/ServerState.java +18 -0
  36. data/src/com/toxi/net/UDPConnection.java +66 -0
  37. data/src/com/toxi/net/UDPSyncClient.java +81 -0
  38. data/src/com/toxi/net/UDPSyncServer.java +450 -0
  39. data/src/com/toxi/nio/UDPClient.java +121 -0
  40. data/src/com/toxi/nio/UDPClientState.java +32 -0
  41. data/src/com/toxi/nio/UDPServer.java +129 -0
  42. data/src/toxi/color/AccessCriteria.java +114 -0
  43. data/src/toxi/color/AlphaAccessor.java +67 -0
  44. data/src/toxi/color/CMYKAccessor.java +122 -0
  45. data/src/toxi/color/CMYKDistanceProxy.java +40 -0
  46. data/src/toxi/color/ColorGradient.java +260 -0
  47. data/src/toxi/color/ColorList.java +699 -0
  48. data/src/toxi/color/ColorRange.java +671 -0
  49. data/src/toxi/color/ColorTheme.java +163 -0
  50. data/src/toxi/color/DistanceProxy.java +44 -0
  51. data/src/toxi/color/HSVAccessor.java +113 -0
  52. data/src/toxi/color/HSVDistanceProxy.java +40 -0
  53. data/src/toxi/color/HistEntry.java +85 -0
  54. data/src/toxi/color/Histogram.java +185 -0
  55. data/src/toxi/color/Hue.java +249 -0
  56. data/src/toxi/color/LuminanceAccessor.java +78 -0
  57. data/src/toxi/color/NamedColor.java +935 -0
  58. data/src/toxi/color/ProximityComparator.java +70 -0
  59. data/src/toxi/color/RGBAccessor.java +113 -0
  60. data/src/toxi/color/RGBDistanceProxy.java +41 -0
  61. data/src/toxi/color/ReadonlyTColor.java +296 -0
  62. data/src/toxi/color/TColor.java +1677 -0
  63. data/src/toxi/color/TColorAdapter.java +68 -0
  64. data/src/toxi/color/ToneMap.java +218 -0
  65. data/src/toxi/color/theory/AnalogousStrategy.java +140 -0
  66. data/src/toxi/color/theory/ColorTheoryRegistry.java +139 -0
  67. data/src/toxi/color/theory/ColorTheoryStrategy.java +56 -0
  68. data/src/toxi/color/theory/ComplementaryStrategy.java +111 -0
  69. data/src/toxi/color/theory/CompoundTheoryStrategy.java +143 -0
  70. data/src/toxi/color/theory/LeftSplitComplementaryStrategy.java +82 -0
  71. data/src/toxi/color/theory/MonochromeTheoryStrategy.java +103 -0
  72. data/src/toxi/color/theory/RightSplitComplementaryStrategy.java +82 -0
  73. data/src/toxi/color/theory/SingleComplementStrategy.java +76 -0
  74. data/src/toxi/color/theory/SplitComplementaryStrategy.java +77 -0
  75. data/src/toxi/color/theory/TetradTheoryStrategy.java +114 -0
  76. data/src/toxi/color/theory/TriadTheoryStrategy.java +77 -0
  77. data/src/toxi/data/csv/CSVAdapter.java +74 -0
  78. data/src/toxi/data/csv/CSVFieldMapper.java +212 -0
  79. data/src/toxi/data/csv/CSVListener.java +61 -0
  80. data/src/toxi/data/csv/CSVParser.java +202 -0
  81. data/src/toxi/data/feeds/AtomAuthor.java +49 -0
  82. data/src/toxi/data/feeds/AtomContent.java +50 -0
  83. data/src/toxi/data/feeds/AtomEntry.java +111 -0
  84. data/src/toxi/data/feeds/AtomFeed.java +129 -0
  85. data/src/toxi/data/feeds/AtomLink.java +62 -0
  86. data/src/toxi/data/feeds/RSSChannel.java +88 -0
  87. data/src/toxi/data/feeds/RSSEnclosure.java +60 -0
  88. data/src/toxi/data/feeds/RSSFeed.java +99 -0
  89. data/src/toxi/data/feeds/RSSItem.java +104 -0
  90. data/src/toxi/data/feeds/util/EntityStripper.java +2480 -0
  91. data/src/toxi/data/feeds/util/Iso8601DateAdapter.java +101 -0
  92. data/src/toxi/data/feeds/util/Rfc822DateAdapter.java +93 -0
  93. data/src/toxi/geom/AABB.java +658 -0
  94. data/src/toxi/geom/Axis3D.java +116 -0
  95. data/src/toxi/geom/AxisAlignedCylinder.java +163 -0
  96. data/src/toxi/geom/BernsteinPolynomial.java +94 -0
  97. data/src/toxi/geom/BezierCurve2D.java +159 -0
  98. data/src/toxi/geom/BezierCurve3D.java +148 -0
  99. data/src/toxi/geom/BooleanShapeBuilder.java +185 -0
  100. data/src/toxi/geom/BoxIntersector.java +52 -0
  101. data/src/toxi/geom/Circle.java +230 -0
  102. data/src/toxi/geom/CircleIntersector.java +85 -0
  103. data/src/toxi/geom/Cone.java +150 -0
  104. data/src/toxi/geom/ConvexPolygonClipper.java +136 -0
  105. data/src/toxi/geom/CoordinateExtractor.java +16 -0
  106. data/src/toxi/geom/Ellipse.java +250 -0
  107. data/src/toxi/geom/GMatrix.java +2599 -0
  108. data/src/toxi/geom/GVector.java +833 -0
  109. data/src/toxi/geom/GlobalGridTesselator.java +54 -0
  110. data/src/toxi/geom/GridTesselator.java +108 -0
  111. data/src/toxi/geom/Intersector2D.java +49 -0
  112. data/src/toxi/geom/Intersector3D.java +51 -0
  113. data/src/toxi/geom/IsectData2D.java +103 -0
  114. data/src/toxi/geom/IsectData3D.java +103 -0
  115. data/src/toxi/geom/Line2D.java +534 -0
  116. data/src/toxi/geom/Line3D.java +471 -0
  117. data/src/toxi/geom/LineStrip2D.java +430 -0
  118. data/src/toxi/geom/LineStrip3D.java +230 -0
  119. data/src/toxi/geom/LocalGridTesselator.java +57 -0
  120. data/src/toxi/geom/Matrix3d.java +3048 -0
  121. data/src/toxi/geom/Matrix4f.java +3446 -0
  122. data/src/toxi/geom/Matrix4x4.java +1076 -0
  123. data/src/toxi/geom/MatrixSizeException.java +58 -0
  124. data/src/toxi/geom/OctreeVisitor.java +44 -0
  125. data/src/toxi/geom/Origin3D.java +148 -0
  126. data/src/toxi/geom/Plane.java +293 -0
  127. data/src/toxi/geom/PlaneIntersector.java +57 -0
  128. data/src/toxi/geom/PointCloud3D.java +253 -0
  129. data/src/toxi/geom/PointOctree.java +502 -0
  130. data/src/toxi/geom/PointQuadtree.java +375 -0
  131. data/src/toxi/geom/Polygon2D.java +1038 -0
  132. data/src/toxi/geom/PolygonClipper2D.java +45 -0
  133. data/src/toxi/geom/PolygonTesselator.java +20 -0
  134. data/src/toxi/geom/QuadtreeVisitor.java +44 -0
  135. data/src/toxi/geom/Quaternion.java +641 -0
  136. data/src/toxi/geom/Ray2D.java +146 -0
  137. data/src/toxi/geom/Ray3D.java +150 -0
  138. data/src/toxi/geom/Ray3DIntersector.java +75 -0
  139. data/src/toxi/geom/ReadonlyVec2D.java +575 -0
  140. data/src/toxi/geom/ReadonlyVec3D.java +628 -0
  141. data/src/toxi/geom/ReadonlyVec4D.java +431 -0
  142. data/src/toxi/geom/Rect.java +720 -0
  143. data/src/toxi/geom/Reflector3D.java +58 -0
  144. data/src/toxi/geom/Shape2D.java +94 -0
  145. data/src/toxi/geom/Shape3D.java +42 -0
  146. data/src/toxi/geom/SingularMatrixException.java +57 -0
  147. data/src/toxi/geom/SpatialBins.java +182 -0
  148. data/src/toxi/geom/SpatialIndex.java +61 -0
  149. data/src/toxi/geom/Sphere.java +224 -0
  150. data/src/toxi/geom/SphereIntersectorReflector.java +196 -0
  151. data/src/toxi/geom/Spline2D.java +349 -0
  152. data/src/toxi/geom/Spline3D.java +351 -0
  153. data/src/toxi/geom/SutherlandHodgemanClipper.java +151 -0
  154. data/src/toxi/geom/Triangle2D.java +422 -0
  155. data/src/toxi/geom/Triangle3D.java +456 -0
  156. data/src/toxi/geom/TriangleIntersector.java +105 -0
  157. data/src/toxi/geom/Vec2D.java +1328 -0
  158. data/src/toxi/geom/Vec3D.java +1832 -0
  159. data/src/toxi/geom/Vec4D.java +985 -0
  160. data/src/toxi/geom/VecMathUtil.java +100 -0
  161. data/src/toxi/geom/XAxisCylinder.java +64 -0
  162. data/src/toxi/geom/YAxisCylinder.java +65 -0
  163. data/src/toxi/geom/ZAxisCylinder.java +64 -0
  164. data/src/toxi/geom/mesh/BezierPatch.java +200 -0
  165. data/src/toxi/geom/mesh/BoxSelector.java +62 -0
  166. data/src/toxi/geom/mesh/DefaultSTLColorModel.java +67 -0
  167. data/src/toxi/geom/mesh/DefaultSelector.java +50 -0
  168. data/src/toxi/geom/mesh/Face.java +176 -0
  169. data/src/toxi/geom/mesh/LaplacianSmooth.java +80 -0
  170. data/src/toxi/geom/mesh/MaterialiseSTLColorModel.java +150 -0
  171. data/src/toxi/geom/mesh/Mesh3D.java +224 -0
  172. data/src/toxi/geom/mesh/MeshIntersector.java +91 -0
  173. data/src/toxi/geom/mesh/OBJWriter.java +194 -0
  174. data/src/toxi/geom/mesh/PLYWriter.java +167 -0
  175. data/src/toxi/geom/mesh/PlaneSelector.java +90 -0
  176. data/src/toxi/geom/mesh/STLColorModel.java +54 -0
  177. data/src/toxi/geom/mesh/STLReader.java +185 -0
  178. data/src/toxi/geom/mesh/STLWriter.java +323 -0
  179. data/src/toxi/geom/mesh/SphereFunction.java +156 -0
  180. data/src/toxi/geom/mesh/SphericalHarmonics.java +110 -0
  181. data/src/toxi/geom/mesh/SuperEllipsoid.java +110 -0
  182. data/src/toxi/geom/mesh/SurfaceFunction.java +75 -0
  183. data/src/toxi/geom/mesh/SurfaceMeshBuilder.java +149 -0
  184. data/src/toxi/geom/mesh/Terrain.java +451 -0
  185. data/src/toxi/geom/mesh/TriangleMesh.java +1201 -0
  186. data/src/toxi/geom/mesh/Vertex.java +78 -0
  187. data/src/toxi/geom/mesh/VertexSelector.java +193 -0
  188. data/src/toxi/geom/mesh/WEFace.java +100 -0
  189. data/src/toxi/geom/mesh/WEMeshFilterStrategy.java +51 -0
  190. data/src/toxi/geom/mesh/WETriangleMesh.java +761 -0
  191. data/src/toxi/geom/mesh/WEVertex.java +134 -0
  192. data/src/toxi/geom/mesh/WingedEdge.java +115 -0
  193. data/src/toxi/geom/mesh/subdiv/CentroidSubdiv.java +37 -0
  194. data/src/toxi/geom/mesh/subdiv/DisplacementSubdivision.java +85 -0
  195. data/src/toxi/geom/mesh/subdiv/DualDisplacementSubdivision.java +94 -0
  196. data/src/toxi/geom/mesh/subdiv/DualSubdivision.java +49 -0
  197. data/src/toxi/geom/mesh/subdiv/EdgeLengthComparator.java +50 -0
  198. data/src/toxi/geom/mesh/subdiv/FaceCountComparator.java +51 -0
  199. data/src/toxi/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +80 -0
  200. data/src/toxi/geom/mesh/subdiv/MidpointSubdiv.java +42 -0
  201. data/src/toxi/geom/mesh/subdiv/MidpointSubdivision.java +48 -0
  202. data/src/toxi/geom/mesh/subdiv/NewSubdivStrategy.java +23 -0
  203. data/src/toxi/geom/mesh/subdiv/NormalDisplacementSubdivision.java +74 -0
  204. data/src/toxi/geom/mesh/subdiv/SubdivisionStrategy.java +83 -0
  205. data/src/toxi/geom/mesh/subdiv/TriSubdivision.java +51 -0
  206. data/src/toxi/geom/mesh2d/DelaunayTriangle.java +222 -0
  207. data/src/toxi/geom/mesh2d/DelaunayTriangulation.java +327 -0
  208. data/src/toxi/geom/mesh2d/DelaunayVertex.java +560 -0
  209. data/src/toxi/geom/mesh2d/Voronoi.java +149 -0
  210. data/src/toxi/geom/nurbs/BasicNurbsCurve.java +210 -0
  211. data/src/toxi/geom/nurbs/BasicNurbsSurface.java +233 -0
  212. data/src/toxi/geom/nurbs/ControlNet.java +148 -0
  213. data/src/toxi/geom/nurbs/CurveCreator.java +112 -0
  214. data/src/toxi/geom/nurbs/CurveUtils.java +259 -0
  215. data/src/toxi/geom/nurbs/InterpolationException.java +65 -0
  216. data/src/toxi/geom/nurbs/KnotVector.java +333 -0
  217. data/src/toxi/geom/nurbs/NurbsCreator.java +815 -0
  218. data/src/toxi/geom/nurbs/NurbsCurve.java +120 -0
  219. data/src/toxi/geom/nurbs/NurbsMeshCreator.java +145 -0
  220. data/src/toxi/geom/nurbs/NurbsSurface.java +147 -0
  221. data/src/toxi/image/util/Filter8bit.java +331 -0
  222. data/src/toxi/image/util/TiledFrameExporter.java +162 -0
  223. data/src/toxi/math/BezierInterpolation.java +102 -0
  224. data/src/toxi/math/CircularInterpolation.java +88 -0
  225. data/src/toxi/math/CosineInterpolation.java +51 -0
  226. data/src/toxi/math/DecimatedInterpolation.java +77 -0
  227. data/src/toxi/math/ExponentialInterpolation.java +68 -0
  228. data/src/toxi/math/InterpolateStrategy.java +60 -0
  229. data/src/toxi/math/Interpolation2D.java +93 -0
  230. data/src/toxi/math/LinearInterpolation.java +46 -0
  231. data/src/toxi/math/MathUtils.java +990 -0
  232. data/src/toxi/math/NonLinearScaleMap.java +101 -0
  233. data/src/toxi/math/ScaleMap.java +183 -0
  234. data/src/toxi/math/SigmoidInterpolation.java +78 -0
  235. data/src/toxi/math/SinCosLUT.java +141 -0
  236. data/src/toxi/math/ThresholdInterpolation.java +58 -0
  237. data/src/toxi/math/ZoomLensInterpolation.java +126 -0
  238. data/src/toxi/math/conversion/UnitTranslator.java +161 -0
  239. data/src/toxi/math/noise/PerlinNoise.java +281 -0
  240. data/src/toxi/math/noise/SimplexNoise.java +542 -0
  241. data/src/toxi/math/waves/AMFMSineWave.java +143 -0
  242. data/src/toxi/math/waves/AbstractWave.java +248 -0
  243. data/src/toxi/math/waves/ConstantWave.java +48 -0
  244. data/src/toxi/math/waves/FMHarmonicSquareWave.java +155 -0
  245. data/src/toxi/math/waves/FMSawtoothWave.java +144 -0
  246. data/src/toxi/math/waves/FMSineWave.java +142 -0
  247. data/src/toxi/math/waves/FMSquareWave.java +143 -0
  248. data/src/toxi/math/waves/FMTriangleWave.java +126 -0
  249. data/src/toxi/math/waves/SineWave.java +81 -0
  250. data/src/toxi/math/waves/Wave2D.java +68 -0
  251. data/src/toxi/math/waves/WaveState.java +69 -0
  252. data/src/toxi/music/scale/AbstractScale.java +117 -0
  253. data/src/toxi/music/scale/GenericScale.java +66 -0
  254. data/src/toxi/music/scale/MajorScale.java +41 -0
  255. data/src/toxi/newmesh/AttributedEdge.java +106 -0
  256. data/src/toxi/newmesh/AttributedFace.java +63 -0
  257. data/src/toxi/newmesh/IndexedTriangleMesh.java +809 -0
  258. data/src/toxi/newmesh/MeshAttributeCompiler.java +45 -0
  259. data/src/toxi/newmesh/MeshFaceNormalCompiler.java +52 -0
  260. data/src/toxi/newmesh/MeshUVCompiler.java +52 -0
  261. data/src/toxi/newmesh/MeshVertexColorCompiler.java +49 -0
  262. data/src/toxi/newmesh/MeshVertexCompiler.java +54 -0
  263. data/src/toxi/newmesh/MeshVertexNormalCompiler.java +55 -0
  264. data/src/toxi/newmesh/SpatialIndex.java +78 -0
  265. data/src/toxi/physics2d/ParticlePath2D.java +100 -0
  266. data/src/toxi/physics2d/ParticleString2D.java +184 -0
  267. data/src/toxi/physics2d/PullBackSpring2D.java +51 -0
  268. data/src/toxi/physics2d/VerletConstrainedSpring2D.java +89 -0
  269. data/src/toxi/physics2d/VerletMinDistanceSpring2D.java +57 -0
  270. data/src/toxi/physics2d/VerletParticle2D.java +457 -0
  271. data/src/toxi/physics2d/VerletPhysics2D.java +448 -0
  272. data/src/toxi/physics2d/VerletSpring2D.java +181 -0
  273. data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +212 -0
  274. data/src/toxi/physics2d/behaviors/ConstantForceBehavior2D.java +112 -0
  275. data/src/toxi/physics2d/behaviors/GravityBehavior2D.java +61 -0
  276. data/src/toxi/physics2d/behaviors/ParticleBehavior2D.java +66 -0
  277. data/src/toxi/physics2d/constraints/AngularConstraint.java +83 -0
  278. data/src/toxi/physics2d/constraints/AxisConstraint.java +71 -0
  279. data/src/toxi/physics2d/constraints/CircularConstraint.java +69 -0
  280. data/src/toxi/physics2d/constraints/MaxConstraint.java +66 -0
  281. data/src/toxi/physics2d/constraints/MinConstraint.java +66 -0
  282. data/src/toxi/physics2d/constraints/ParticleConstraint2D.java +47 -0
  283. data/src/toxi/physics2d/constraints/PolygonConstraint.java +93 -0
  284. data/src/toxi/physics2d/constraints/RectConstraint.java +114 -0
  285. data/src/toxi/physics3d/ParticlePath3D.java +100 -0
  286. data/src/toxi/physics3d/ParticleString3D.java +184 -0
  287. data/src/toxi/physics3d/PullBackSpring3D.java +50 -0
  288. data/src/toxi/physics3d/VerletConstrainedSpring3D.java +88 -0
  289. data/src/toxi/physics3d/VerletMinDistanceSpring3D.java +56 -0
  290. data/src/toxi/physics3d/VerletParticle3D.java +385 -0
  291. data/src/toxi/physics3d/VerletPhysics3D.java +417 -0
  292. data/src/toxi/physics3d/VerletSpring3D.java +180 -0
  293. data/src/toxi/physics3d/behaviors/AttractionBehavior3D.java +182 -0
  294. data/src/toxi/physics3d/behaviors/ConstantForceBehavior3D.java +92 -0
  295. data/src/toxi/physics3d/behaviors/GravityBehavior3D.java +61 -0
  296. data/src/toxi/physics3d/behaviors/ParticleBehavior3D.java +52 -0
  297. data/src/toxi/physics3d/constraints/AxisConstraint.java +68 -0
  298. data/src/toxi/physics3d/constraints/BoxConstraint.java +121 -0
  299. data/src/toxi/physics3d/constraints/CylinderConstraint.java +87 -0
  300. data/src/toxi/physics3d/constraints/MaxConstraint.java +65 -0
  301. data/src/toxi/physics3d/constraints/MinConstraint.java +65 -0
  302. data/src/toxi/physics3d/constraints/ParticleConstraint3D.java +49 -0
  303. data/src/toxi/physics3d/constraints/PlaneConstraint.java +78 -0
  304. data/src/toxi/physics3d/constraints/SoftBoxConstraint.java +87 -0
  305. data/src/toxi/physics3d/constraints/SphereConstraint.java +108 -0
  306. data/src/toxi/processing/ArrowModifier.java +116 -0
  307. data/src/toxi/processing/DashedLineModifier.java +48 -0
  308. data/src/toxi/processing/DeltaOrientationMapper.java +57 -0
  309. data/src/toxi/processing/Line2DRenderModifier.java +18 -0
  310. data/src/toxi/processing/MeshToVBO.java +94 -0
  311. data/src/toxi/processing/NormalMapper.java +18 -0
  312. data/src/toxi/processing/POVInterface.java +121 -0
  313. data/src/toxi/processing/POVMesh.java +219 -0
  314. data/src/toxi/processing/POVWriter.java +460 -0
  315. data/src/toxi/processing/RCOpaque.java +77 -0
  316. data/src/toxi/processing/RCTransp.java +78 -0
  317. data/src/toxi/processing/TextureBuilder.java +232 -0
  318. data/src/toxi/processing/Textures.java +110 -0
  319. data/src/toxi/processing/ToxiclibsSupport.java +1239 -0
  320. data/src/toxi/processing/Tracing.java +25 -0
  321. data/src/toxi/processing/XYZNormalMapper.java +30 -0
  322. data/src/toxi/sim/automata/CAMatrix.java +297 -0
  323. data/src/toxi/sim/automata/CARule.java +76 -0
  324. data/src/toxi/sim/automata/CARule2D.java +354 -0
  325. data/src/toxi/sim/automata/CAWolfram1D.java +309 -0
  326. data/src/toxi/sim/automata/EvolvableMatrix.java +61 -0
  327. data/src/toxi/sim/automata/MatrixEvolver.java +42 -0
  328. data/src/toxi/sim/dla/BottomUpOrder.java +76 -0
  329. data/src/toxi/sim/dla/DLA.java +497 -0
  330. data/src/toxi/sim/dla/DLAConfiguration.java +364 -0
  331. data/src/toxi/sim/dla/DLAEventAdapter.java +64 -0
  332. data/src/toxi/sim/dla/DLAEventListener.java +57 -0
  333. data/src/toxi/sim/dla/DLAGuideLines.java +219 -0
  334. data/src/toxi/sim/dla/DLAParticle.java +102 -0
  335. data/src/toxi/sim/dla/DLASegment.java +88 -0
  336. data/src/toxi/sim/dla/PipelineOrder.java +50 -0
  337. data/src/toxi/sim/dla/RadialDistanceOrder.java +92 -0
  338. data/src/toxi/sim/erosion/ErosionFunction.java +122 -0
  339. data/src/toxi/sim/erosion/TalusAngleErosion.java +145 -0
  340. data/src/toxi/sim/erosion/ThermalErosion.java +75 -0
  341. data/src/toxi/sim/fluids/FluidSolver2D.java +762 -0
  342. data/src/toxi/sim/fluids/FluidSolver3D.java +326 -0
  343. data/src/toxi/sim/grayscott/GrayScott.java +469 -0
  344. data/src/toxi/util/DateUtils.java +141 -0
  345. data/src/toxi/util/FileSequenceDescriptor.java +181 -0
  346. data/src/toxi/util/FileUtils.java +467 -0
  347. data/src/toxi/util/datatypes/ArraySet.java +128 -0
  348. data/src/toxi/util/datatypes/ArrayUtil.java +404 -0
  349. data/src/toxi/util/datatypes/BiasedDoubleRange.java +141 -0
  350. data/src/toxi/util/datatypes/BiasedFloatRange.java +141 -0
  351. data/src/toxi/util/datatypes/BiasedIntegerRange.java +141 -0
  352. data/src/toxi/util/datatypes/DoubleRange.java +251 -0
  353. data/src/toxi/util/datatypes/FloatRange.java +251 -0
  354. data/src/toxi/util/datatypes/GenericSet.java +215 -0
  355. data/src/toxi/util/datatypes/IntegerRange.java +247 -0
  356. data/src/toxi/util/datatypes/IntegerSet.java +149 -0
  357. data/src/toxi/util/datatypes/ItemIndex.java +72 -0
  358. data/src/toxi/util/datatypes/SingletonRegistry.java +91 -0
  359. data/src/toxi/util/datatypes/TypedProperties.java +291 -0
  360. data/src/toxi/util/datatypes/UndirectedGraph.java +134 -0
  361. data/src/toxi/util/datatypes/UniqueItemIndex.java +223 -0
  362. data/src/toxi/util/datatypes/WeightedRandomEntry.java +76 -0
  363. data/src/toxi/util/datatypes/WeightedRandomSet.java +125 -0
  364. data/src/toxi/util/events/EventDispatcher.java +86 -0
  365. data/src/toxi/volume/AdditiveBrush.java +19 -0
  366. data/src/toxi/volume/ArrayIsoSurface.java +297 -0
  367. data/src/toxi/volume/BoxBrush.java +100 -0
  368. data/src/toxi/volume/BrushMode.java +16 -0
  369. data/src/toxi/volume/HashIsoSurface.java +354 -0
  370. data/src/toxi/volume/IsoSurface.java +59 -0
  371. data/src/toxi/volume/MarchingCubesIndex.java +312 -0
  372. data/src/toxi/volume/MeshLatticeBuilder.java +358 -0
  373. data/src/toxi/volume/MeshVoxelizer.java +216 -0
  374. data/src/toxi/volume/MultiplyBrush.java +20 -0
  375. data/src/toxi/volume/PeakBrush.java +21 -0
  376. data/src/toxi/volume/ReplaceBrush.java +19 -0
  377. data/src/toxi/volume/RoundBrush.java +113 -0
  378. data/src/toxi/volume/VolumetricBrush.java +160 -0
  379. data/src/toxi/volume/VolumetricHashMap.java +179 -0
  380. data/src/toxi/volume/VolumetricSpace.java +195 -0
  381. data/src/toxi/volume/VolumetricSpaceArray.java +214 -0
  382. data/toxiclibs.gemspec +34 -0
  383. metadata +424 -27
@@ -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
+ }