toxiclibs 0.9.2 → 2.1.0

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 +5 -5
  2. data/.mvn/extensions.xml +1 -1
  3. data/.travis.yml +3 -4
  4. data/CHANGELOG.md +10 -1
  5. data/README.md +3 -3
  6. data/Rakefile +1 -2
  7. data/examples/attract_repel/attractor.rb +1 -1
  8. data/examples/attract_repel/particle.rb +1 -1
  9. data/examples/boolean_shapes.rb +9 -5
  10. data/examples/force_directed/node.rb +1 -1
  11. data/examples/inflate_mesh.rb +1 -1
  12. data/examples/model_align.rb +1 -1
  13. data/examples/physics_type.rb +1 -1
  14. data/examples/povmesh/ftest.rb +3 -3
  15. data/examples/toxiclibs_color_theme.rb +91 -0
  16. data/lib/toxiclibs/version.rb +2 -1
  17. data/lib/toxiclibs.jar +0 -0
  18. data/lib/toxiclibs.rb +54 -37
  19. data/pom.rb +20 -28
  20. data/pom.xml +39 -65
  21. data/src/main/java/module-info.java +22 -0
  22. data/src/{toxi → main/java/toxi}/color/AccessCriteria.java +0 -0
  23. data/src/{toxi → main/java/toxi}/color/AlphaAccessor.java +0 -0
  24. data/src/{toxi → main/java/toxi}/color/CMYKAccessor.java +0 -0
  25. data/src/{toxi → main/java/toxi}/color/CMYKDistanceProxy.java +0 -0
  26. data/src/{toxi → main/java/toxi}/color/ColorGradient.java +0 -0
  27. data/src/{toxi → main/java/toxi}/color/ColorList.java +2 -4
  28. data/src/{toxi → main/java/toxi}/color/ColorRange.java +0 -0
  29. data/src/{toxi → main/java/toxi}/color/ColorTheme.java +0 -0
  30. data/src/{toxi → main/java/toxi}/color/DistanceProxy.java +0 -0
  31. data/src/{toxi → main/java/toxi}/color/HSVAccessor.java +0 -0
  32. data/src/{toxi → main/java/toxi}/color/HSVDistanceProxy.java +0 -0
  33. data/src/{toxi → main/java/toxi}/color/HistEntry.java +0 -0
  34. data/src/{toxi → main/java/toxi}/color/Histogram.java +0 -0
  35. data/src/{toxi → main/java/toxi}/color/Hue.java +0 -0
  36. data/src/{toxi → main/java/toxi}/color/LuminanceAccessor.java +0 -0
  37. data/src/{toxi → main/java/toxi}/color/NamedColor.java +0 -0
  38. data/src/{toxi → main/java/toxi}/color/ProximityComparator.java +0 -0
  39. data/src/{toxi → main/java/toxi}/color/RGBAccessor.java +0 -0
  40. data/src/{toxi → main/java/toxi}/color/RGBDistanceProxy.java +0 -0
  41. data/src/{toxi → main/java/toxi}/color/ReadonlyTColor.java +0 -0
  42. data/src/{toxi → main/java/toxi}/color/TColor.java +0 -0
  43. data/src/{toxi → main/java/toxi}/color/TColorAdapter.java +4 -4
  44. data/src/{toxi → main/java/toxi}/color/ToneMap.java +0 -0
  45. data/src/{toxi → main/java/toxi}/color/theory/AnalogousStrategy.java +0 -0
  46. data/src/{toxi → main/java/toxi}/color/theory/ColorTheoryRegistry.java +0 -0
  47. data/src/{toxi → main/java/toxi}/color/theory/ColorTheoryStrategy.java +0 -0
  48. data/src/{toxi → main/java/toxi}/color/theory/ComplementaryStrategy.java +0 -0
  49. data/src/{toxi → main/java/toxi}/color/theory/CompoundTheoryStrategy.java +0 -0
  50. data/src/{toxi → main/java/toxi}/color/theory/LeftSplitComplementaryStrategy.java +0 -0
  51. data/src/{toxi → main/java/toxi}/color/theory/MonochromeTheoryStrategy.java +0 -0
  52. data/src/{toxi → main/java/toxi}/color/theory/RightSplitComplementaryStrategy.java +0 -0
  53. data/src/{toxi → main/java/toxi}/color/theory/SingleComplementStrategy.java +0 -0
  54. data/src/{toxi → main/java/toxi}/color/theory/SplitComplementaryStrategy.java +0 -0
  55. data/src/{toxi → main/java/toxi}/color/theory/TetradTheoryStrategy.java +0 -0
  56. data/src/{toxi → main/java/toxi}/color/theory/TriadTheoryStrategy.java +0 -0
  57. data/src/{toxi → main/java/toxi}/data/csv/CSVAdapter.java +0 -0
  58. data/src/{toxi → main/java/toxi}/data/csv/CSVFieldMapper.java +0 -0
  59. data/src/{toxi → main/java/toxi}/data/csv/CSVListener.java +0 -0
  60. data/src/{toxi → main/java/toxi}/data/csv/CSVParser.java +0 -0
  61. data/src/{toxi → main/java/toxi}/data/feeds/AtomAuthor.java +2 -2
  62. data/src/{toxi → main/java/toxi}/data/feeds/AtomContent.java +3 -4
  63. data/src/{toxi → main/java/toxi}/data/feeds/AtomEntry.java +9 -13
  64. data/src/main/java/toxi/data/feeds/AtomFeed.java +91 -0
  65. data/src/{toxi → main/java/toxi}/data/feeds/AtomLink.java +3 -2
  66. data/src/{toxi → main/java/toxi}/data/feeds/RSSChannel.java +10 -11
  67. data/src/{toxi → main/java/toxi}/data/feeds/RSSEnclosure.java +3 -3
  68. data/src/{toxi → main/java/toxi}/data/feeds/RSSItem.java +11 -13
  69. data/src/{toxi → main/java/toxi}/data/feeds/util/EntityStripper.java +0 -0
  70. data/src/{toxi → main/java/toxi}/data/feeds/util/Iso8601DateAdapter.java +6 -7
  71. data/src/{toxi → main/java/toxi}/data/feeds/util/Rfc822DateAdapter.java +5 -6
  72. data/src/{toxi → main/java/toxi}/geom/AABB.java +8 -9
  73. data/src/{toxi → main/java/toxi}/geom/Axis3D.java +0 -0
  74. data/src/{toxi → main/java/toxi}/geom/AxisAlignedCylinder.java +0 -0
  75. data/src/{toxi → main/java/toxi}/geom/BernsteinPolynomial.java +0 -0
  76. data/src/{toxi → main/java/toxi}/geom/BezierCurve2D.java +0 -0
  77. data/src/{toxi → main/java/toxi}/geom/BezierCurve3D.java +0 -0
  78. data/src/{toxi → main/java/toxi}/geom/BooleanShapeBuilder.java +0 -0
  79. data/src/{toxi → main/java/toxi}/geom/BoxIntersector.java +0 -0
  80. data/src/{toxi → main/java/toxi}/geom/Circle.java +2 -2
  81. data/src/{toxi → main/java/toxi}/geom/CircleIntersector.java +0 -0
  82. data/src/{toxi → main/java/toxi}/geom/Cone.java +0 -0
  83. data/src/{toxi → main/java/toxi}/geom/ConvexPolygonClipper.java +0 -0
  84. data/src/{toxi → main/java/toxi}/geom/CoordinateExtractor.java +0 -0
  85. data/src/{toxi → main/java/toxi}/geom/Ellipse.java +0 -0
  86. data/src/{toxi → main/java/toxi}/geom/GMatrix.java +0 -0
  87. data/src/{toxi → main/java/toxi}/geom/GVector.java +0 -0
  88. data/src/{toxi → main/java/toxi}/geom/GlobalGridTesselator.java +0 -0
  89. data/src/{toxi → main/java/toxi}/geom/GridTesselator.java +0 -0
  90. data/src/{toxi → main/java/toxi}/geom/Intersector2D.java +0 -0
  91. data/src/{toxi → main/java/toxi}/geom/Intersector3D.java +0 -0
  92. data/src/{toxi → main/java/toxi}/geom/IsectData2D.java +0 -0
  93. data/src/{toxi → main/java/toxi}/geom/IsectData3D.java +0 -0
  94. data/src/{toxi → main/java/toxi}/geom/Line2D.java +1 -2
  95. data/src/{toxi → main/java/toxi}/geom/Line3D.java +1 -2
  96. data/src/{toxi → main/java/toxi}/geom/LineStrip2D.java +2 -2
  97. data/src/{toxi → main/java/toxi}/geom/LineStrip3D.java +2 -2
  98. data/src/{toxi → main/java/toxi}/geom/LocalGridTesselator.java +0 -0
  99. data/src/{toxi → main/java/toxi}/geom/Matrix3d.java +0 -0
  100. data/src/{toxi → main/java/toxi}/geom/Matrix4f.java +0 -0
  101. data/src/{toxi → main/java/toxi}/geom/Matrix4x4.java +0 -0
  102. data/src/{toxi → main/java/toxi}/geom/MatrixSizeException.java +0 -0
  103. data/src/{toxi → main/java/toxi}/geom/OctreeVisitor.java +0 -0
  104. data/src/{toxi → main/java/toxi}/geom/Origin3D.java +12 -6
  105. data/src/{toxi → main/java/toxi}/geom/Plane.java +3 -5
  106. data/src/{toxi → main/java/toxi}/geom/PlaneIntersector.java +0 -0
  107. data/src/{toxi → main/java/toxi}/geom/PointCloud3D.java +15 -12
  108. data/src/{toxi → main/java/toxi}/geom/PointOctree.java +0 -0
  109. data/src/{toxi → main/java/toxi}/geom/PointQuadtree.java +0 -0
  110. data/src/{toxi → main/java/toxi}/geom/Polygon2D.java +34 -45
  111. data/src/{toxi → main/java/toxi}/geom/PolygonClipper2D.java +0 -0
  112. data/src/{toxi → main/java/toxi}/geom/PolygonTesselator.java +0 -0
  113. data/src/{toxi → main/java/toxi}/geom/QuadtreeVisitor.java +0 -0
  114. data/src/{toxi → main/java/toxi}/geom/Quaternion.java +3 -5
  115. data/src/{toxi → main/java/toxi}/geom/Ray2D.java +4 -5
  116. data/src/{toxi → main/java/toxi}/geom/Ray3D.java +3 -5
  117. data/src/{toxi → main/java/toxi}/geom/Ray3DIntersector.java +0 -0
  118. data/src/{toxi → main/java/toxi}/geom/ReadonlyVec2D.java +0 -0
  119. data/src/{toxi → main/java/toxi}/geom/ReadonlyVec3D.java +0 -0
  120. data/src/{toxi → main/java/toxi}/geom/ReadonlyVec4D.java +0 -0
  121. data/src/{toxi → main/java/toxi}/geom/Rect.java +3 -5
  122. data/src/{toxi → main/java/toxi}/geom/Reflector3D.java +0 -0
  123. data/src/{toxi → main/java/toxi}/geom/Shape2D.java +0 -0
  124. data/src/{toxi → main/java/toxi}/geom/Shape3D.java +0 -0
  125. data/src/{toxi → main/java/toxi}/geom/SingularMatrixException.java +0 -0
  126. data/src/{toxi → main/java/toxi}/geom/SpatialBins.java +0 -0
  127. data/src/{toxi → main/java/toxi}/geom/SpatialIndex.java +0 -0
  128. data/src/{toxi → main/java/toxi}/geom/Sphere.java +3 -5
  129. data/src/{toxi → main/java/toxi}/geom/SphereIntersectorReflector.java +0 -0
  130. data/src/{toxi → main/java/toxi}/geom/Spline2D.java +12 -16
  131. data/src/{toxi → main/java/toxi}/geom/Spline3D.java +12 -16
  132. data/src/{toxi → main/java/toxi}/geom/SutherlandHodgemanClipper.java +0 -0
  133. data/src/{toxi → main/java/toxi}/geom/Triangle2D.java +4 -7
  134. data/src/{toxi → main/java/toxi}/geom/Triangle3D.java +5 -8
  135. data/src/{toxi → main/java/toxi}/geom/TriangleIntersector.java +0 -0
  136. data/src/{toxi → main/java/toxi}/geom/Vec2D.java +3 -3
  137. data/src/{toxi → main/java/toxi}/geom/Vec3D.java +4 -4
  138. data/src/{toxi → main/java/toxi}/geom/Vec4D.java +5 -5
  139. data/src/{toxi → main/java/toxi}/geom/VecMathUtil.java +0 -0
  140. data/src/{toxi → main/java/toxi}/geom/XAxisCylinder.java +0 -0
  141. data/src/{toxi → main/java/toxi}/geom/YAxisCylinder.java +0 -0
  142. data/src/{toxi → main/java/toxi}/geom/ZAxisCylinder.java +0 -0
  143. data/src/{toxi → main/java/toxi}/geom/mesh/BezierPatch.java +0 -0
  144. data/src/{toxi → main/java/toxi}/geom/mesh/BoxSelector.java +0 -0
  145. data/src/{toxi → main/java/toxi}/geom/mesh/DefaultSTLColorModel.java +0 -0
  146. data/src/{toxi → main/java/toxi}/geom/mesh/DefaultSelector.java +0 -0
  147. data/src/{toxi → main/java/toxi}/geom/mesh/Face.java +0 -0
  148. data/src/{toxi → main/java/toxi}/geom/mesh/LaplacianSmooth.java +0 -0
  149. data/src/{toxi → main/java/toxi}/geom/mesh/MaterialiseSTLColorModel.java +0 -0
  150. data/src/{toxi → main/java/toxi}/geom/mesh/Mesh3D.java +0 -0
  151. data/src/{toxi → main/java/toxi}/geom/mesh/MeshIntersector.java +0 -0
  152. data/src/{toxi → main/java/toxi}/geom/mesh/OBJWriter.java +0 -0
  153. data/src/{toxi → main/java/toxi}/geom/mesh/PLYWriter.java +0 -0
  154. data/src/{toxi → main/java/toxi}/geom/mesh/PlaneSelector.java +0 -0
  155. data/src/{toxi → main/java/toxi}/geom/mesh/STLColorModel.java +0 -0
  156. data/src/{toxi → main/java/toxi}/geom/mesh/STLReader.java +0 -0
  157. data/src/{toxi → main/java/toxi}/geom/mesh/STLWriter.java +0 -0
  158. data/src/{toxi → main/java/toxi}/geom/mesh/SphereFunction.java +0 -0
  159. data/src/{toxi → main/java/toxi}/geom/mesh/SphericalHarmonics.java +0 -0
  160. data/src/{toxi → main/java/toxi}/geom/mesh/SuperEllipsoid.java +0 -0
  161. data/src/{toxi → main/java/toxi}/geom/mesh/SurfaceFunction.java +0 -0
  162. data/src/{toxi → main/java/toxi}/geom/mesh/SurfaceMeshBuilder.java +0 -0
  163. data/src/{toxi → main/java/toxi}/geom/mesh/Terrain.java +0 -0
  164. data/src/{toxi → main/java/toxi}/geom/mesh/TriangleMesh.java +0 -0
  165. data/src/{toxi → main/java/toxi}/geom/mesh/Vertex.java +0 -0
  166. data/src/{toxi → main/java/toxi}/geom/mesh/VertexSelector.java +0 -0
  167. data/src/{toxi → main/java/toxi}/geom/mesh/WEFace.java +0 -0
  168. data/src/{toxi → main/java/toxi}/geom/mesh/WEMeshFilterStrategy.java +0 -0
  169. data/src/{toxi → main/java/toxi}/geom/mesh/WETriangleMesh.java +0 -0
  170. data/src/{toxi → main/java/toxi}/geom/mesh/WEVertex.java +0 -0
  171. data/src/{toxi → main/java/toxi}/geom/mesh/WingedEdge.java +2 -2
  172. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/CentroidSubdiv.java +0 -0
  173. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/DisplacementSubdivision.java +0 -0
  174. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/DualDisplacementSubdivision.java +0 -0
  175. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/DualSubdivision.java +0 -0
  176. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/EdgeLengthComparator.java +0 -0
  177. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/FaceCountComparator.java +0 -0
  178. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +0 -0
  179. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/MidpointSubdiv.java +0 -0
  180. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/MidpointSubdivision.java +0 -0
  181. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/NewSubdivStrategy.java +0 -0
  182. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/NormalDisplacementSubdivision.java +0 -0
  183. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/SubdivisionStrategy.java +0 -0
  184. data/src/{toxi → main/java/toxi}/geom/mesh/subdiv/TriSubdivision.java +0 -0
  185. data/src/{toxi → main/java/toxi}/geom/mesh2d/DelaunayTriangle.java +0 -0
  186. data/src/{toxi → main/java/toxi}/geom/mesh2d/DelaunayTriangulation.java +5 -7
  187. data/src/{toxi → main/java/toxi}/geom/mesh2d/DelaunayVertex.java +0 -0
  188. data/src/{toxi → main/java/toxi}/geom/mesh2d/Voronoi.java +0 -0
  189. data/src/{toxi → main/java/toxi}/geom/nurbs/BasicNurbsCurve.java +0 -0
  190. data/src/{toxi → main/java/toxi}/geom/nurbs/BasicNurbsSurface.java +0 -0
  191. data/src/{toxi → main/java/toxi}/geom/nurbs/ControlNet.java +0 -0
  192. data/src/{toxi → main/java/toxi}/geom/nurbs/CurveCreator.java +0 -0
  193. data/src/{toxi → main/java/toxi}/geom/nurbs/CurveUtils.java +0 -0
  194. data/src/{toxi → main/java/toxi}/geom/nurbs/InterpolationException.java +0 -0
  195. data/src/{toxi → main/java/toxi}/geom/nurbs/KnotVector.java +0 -0
  196. data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsCreator.java +2 -2
  197. data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsCurve.java +0 -0
  198. data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsMeshCreator.java +0 -0
  199. data/src/{toxi → main/java/toxi}/geom/nurbs/NurbsSurface.java +0 -0
  200. data/src/{toxi → main/java/toxi}/image/util/Filter8bit.java +0 -0
  201. data/src/{toxi → main/java/toxi}/image/util/TiledFrameExporter.java +0 -0
  202. data/src/{toxi → main/java/toxi}/math/BezierInterpolation.java +0 -0
  203. data/src/{toxi → main/java/toxi}/math/CircularInterpolation.java +0 -0
  204. data/src/{toxi → main/java/toxi}/math/CosineInterpolation.java +0 -0
  205. data/src/{toxi → main/java/toxi}/math/DecimatedInterpolation.java +0 -0
  206. data/src/{toxi → main/java/toxi}/math/ExponentialInterpolation.java +0 -0
  207. data/src/{toxi → main/java/toxi}/math/InterpolateStrategy.java +0 -0
  208. data/src/{toxi → main/java/toxi}/math/Interpolation2D.java +0 -0
  209. data/src/{toxi → main/java/toxi}/math/LinearInterpolation.java +0 -0
  210. data/src/{toxi → main/java/toxi}/math/MathUtils.java +0 -0
  211. data/src/{toxi → main/java/toxi}/math/NonLinearScaleMap.java +0 -0
  212. data/src/{toxi → main/java/toxi}/math/ScaleMap.java +0 -0
  213. data/src/{toxi → main/java/toxi}/math/SigmoidInterpolation.java +0 -0
  214. data/src/{toxi → main/java/toxi}/math/SinCosLUT.java +0 -0
  215. data/src/{toxi → main/java/toxi}/math/ThresholdInterpolation.java +0 -0
  216. data/src/{toxi → main/java/toxi}/math/ZoomLensInterpolation.java +0 -0
  217. data/src/{toxi → main/java/toxi}/math/conversion/UnitTranslator.java +0 -0
  218. data/src/{toxi → main/java/toxi}/math/noise/PerlinNoise.java +0 -0
  219. data/src/{toxi → main/java/toxi}/math/noise/SimplexNoise.java +0 -0
  220. data/src/{toxi → main/java/toxi}/math/waves/AMFMSineWave.java +0 -0
  221. data/src/{toxi → main/java/toxi}/math/waves/AbstractWave.java +0 -0
  222. data/src/{toxi → main/java/toxi}/math/waves/ConstantWave.java +0 -0
  223. data/src/{toxi → main/java/toxi}/math/waves/FMHarmonicSquareWave.java +0 -0
  224. data/src/{toxi → main/java/toxi}/math/waves/FMSawtoothWave.java +0 -0
  225. data/src/{toxi → main/java/toxi}/math/waves/FMSineWave.java +0 -0
  226. data/src/{toxi → main/java/toxi}/math/waves/FMSquareWave.java +0 -0
  227. data/src/{toxi → main/java/toxi}/math/waves/FMTriangleWave.java +0 -0
  228. data/src/{toxi → main/java/toxi}/math/waves/SineWave.java +2 -2
  229. data/src/{toxi → main/java/toxi}/math/waves/Wave2D.java +0 -0
  230. data/src/{toxi → main/java/toxi}/math/waves/WaveState.java +0 -0
  231. data/src/{toxi → main/java/toxi}/music/scale/AbstractScale.java +0 -0
  232. data/src/{toxi → main/java/toxi}/music/scale/GenericScale.java +0 -0
  233. data/src/{toxi → main/java/toxi}/music/scale/MajorScale.java +0 -0
  234. data/src/{toxi → main/java/toxi}/newmesh/AttributedEdge.java +0 -0
  235. data/src/{toxi → main/java/toxi}/newmesh/AttributedFace.java +0 -0
  236. data/src/{toxi → main/java/toxi}/newmesh/IndexedTriangleMesh.java +70 -69
  237. data/src/{toxi → main/java/toxi}/newmesh/MeshAttributeCompiler.java +0 -0
  238. data/src/{toxi → main/java/toxi}/newmesh/MeshFaceNormalCompiler.java +0 -0
  239. data/src/{toxi → main/java/toxi}/newmesh/MeshUVCompiler.java +0 -0
  240. data/src/{toxi → main/java/toxi}/newmesh/MeshVertexColorCompiler.java +0 -0
  241. data/src/{toxi → main/java/toxi}/newmesh/MeshVertexCompiler.java +0 -0
  242. data/src/{toxi → main/java/toxi}/newmesh/MeshVertexNormalCompiler.java +0 -0
  243. data/src/{toxi → main/java/toxi}/newmesh/SpatialIndex.java +0 -0
  244. data/src/{toxi → main/java/toxi}/physics2d/ParticlePath2D.java +4 -3
  245. data/src/{toxi → main/java/toxi}/physics2d/ParticleString2D.java +2 -2
  246. data/src/{toxi → main/java/toxi}/physics2d/PullBackSpring2D.java +0 -0
  247. data/src/{toxi → main/java/toxi}/physics2d/VerletConstrainedSpring2D.java +0 -0
  248. data/src/{toxi → main/java/toxi}/physics2d/VerletMinDistanceSpring2D.java +0 -0
  249. data/src/main/java/toxi/physics2d/VerletParticle2D.java +449 -0
  250. data/src/main/java/toxi/physics2d/VerletPhysics2D.java +440 -0
  251. data/src/{toxi → main/java/toxi}/physics2d/VerletSpring2D.java +0 -0
  252. data/src/main/java/toxi/physics2d/behaviors/AttractionBehavior2D.java +211 -0
  253. data/src/{toxi → main/java/toxi}/physics2d/behaviors/ConstantForceBehavior2D.java +0 -0
  254. data/src/{toxi → main/java/toxi}/physics2d/behaviors/GravityBehavior2D.java +0 -0
  255. data/src/{toxi → main/java/toxi}/physics2d/behaviors/ParticleBehavior2D.java +0 -0
  256. data/src/{toxi → main/java/toxi}/physics2d/constraints/AngularConstraint.java +0 -0
  257. data/src/{toxi → main/java/toxi}/physics2d/constraints/AxisConstraint.java +0 -0
  258. data/src/{toxi → main/java/toxi}/physics2d/constraints/CircularConstraint.java +0 -0
  259. data/src/{toxi → main/java/toxi}/physics2d/constraints/MaxConstraint.java +0 -0
  260. data/src/{toxi → main/java/toxi}/physics2d/constraints/MinConstraint.java +0 -0
  261. data/src/{toxi → main/java/toxi}/physics2d/constraints/ParticleConstraint2D.java +0 -0
  262. data/src/{toxi → main/java/toxi}/physics2d/constraints/PolygonConstraint.java +0 -0
  263. data/src/{toxi → main/java/toxi}/physics2d/constraints/RectConstraint.java +0 -0
  264. data/src/{toxi → main/java/toxi}/physics3d/ParticlePath3D.java +4 -3
  265. data/src/{toxi → main/java/toxi}/physics3d/ParticleString3D.java +2 -2
  266. data/src/{toxi → main/java/toxi}/physics3d/PullBackSpring3D.java +0 -0
  267. data/src/{toxi → main/java/toxi}/physics3d/VerletConstrainedSpring3D.java +0 -0
  268. data/src/{toxi → main/java/toxi}/physics3d/VerletMinDistanceSpring3D.java +0 -0
  269. data/src/main/java/toxi/physics3d/VerletParticle3D.java +377 -0
  270. data/src/{toxi → main/java/toxi}/physics3d/VerletPhysics3D.java +0 -0
  271. data/src/{toxi → main/java/toxi}/physics3d/VerletSpring3D.java +0 -0
  272. data/src/{toxi → main/java/toxi}/physics3d/behaviors/AttractionBehavior3D.java +0 -0
  273. data/src/{toxi → main/java/toxi}/physics3d/behaviors/ConstantForceBehavior3D.java +0 -0
  274. data/src/{toxi → main/java/toxi}/physics3d/behaviors/GravityBehavior3D.java +0 -0
  275. data/src/{toxi → main/java/toxi}/physics3d/behaviors/ParticleBehavior3D.java +0 -0
  276. data/src/{toxi → main/java/toxi}/physics3d/constraints/AxisConstraint.java +1 -0
  277. data/src/{toxi → main/java/toxi}/physics3d/constraints/BoxConstraint.java +0 -0
  278. data/src/{toxi → main/java/toxi}/physics3d/constraints/CylinderConstraint.java +1 -0
  279. data/src/{toxi → main/java/toxi}/physics3d/constraints/MaxConstraint.java +1 -0
  280. data/src/{toxi → main/java/toxi}/physics3d/constraints/MinConstraint.java +1 -0
  281. data/src/{toxi → main/java/toxi}/physics3d/constraints/ParticleConstraint3D.java +0 -0
  282. data/src/{toxi → main/java/toxi}/physics3d/constraints/PlaneConstraint.java +0 -0
  283. data/src/{toxi → main/java/toxi}/physics3d/constraints/SoftBoxConstraint.java +38 -38
  284. data/src/{toxi → main/java/toxi}/physics3d/constraints/SphereConstraint.java +1 -0
  285. data/src/{toxi → main/java/toxi}/processing/ArrowModifier.java +0 -0
  286. data/src/{toxi → main/java/toxi}/processing/DashedLineModifier.java +0 -0
  287. data/src/{toxi → main/java/toxi}/processing/DeltaOrientationMapper.java +0 -0
  288. data/src/{toxi → main/java/toxi}/processing/Line2DRenderModifier.java +0 -0
  289. data/src/{toxi → main/java/toxi}/processing/MeshToVBO.java +0 -0
  290. data/src/{toxi → main/java/toxi}/processing/NormalMapper.java +0 -0
  291. data/src/{toxi → main/java/toxi}/processing/POVInterface.java +0 -0
  292. data/src/{toxi → main/java/toxi}/processing/POVMesh.java +0 -0
  293. data/src/{toxi → main/java/toxi}/processing/POVWriter.java +0 -0
  294. data/src/{toxi → main/java/toxi}/processing/RCOpaque.java +0 -0
  295. data/src/{toxi → main/java/toxi}/processing/RCTransp.java +0 -0
  296. data/src/{toxi → main/java/toxi}/processing/TextureBuilder.java +0 -0
  297. data/src/{toxi → main/java/toxi}/processing/Textures.java +0 -0
  298. data/src/{toxi → main/java/toxi}/processing/ToxiclibsSupport.java +3 -3
  299. data/src/{toxi → main/java/toxi}/processing/Tracing.java +0 -0
  300. data/src/{toxi → main/java/toxi}/processing/XYZNormalMapper.java +0 -0
  301. data/src/{toxi → main/java/toxi}/sim/automata/CAMatrix.java +0 -0
  302. data/src/{toxi → main/java/toxi}/sim/automata/CARule.java +0 -0
  303. data/src/{toxi → main/java/toxi}/sim/automata/CARule2D.java +0 -0
  304. data/src/{toxi → main/java/toxi}/sim/automata/CAWolfram1D.java +0 -0
  305. data/src/{toxi → main/java/toxi}/sim/automata/EvolvableMatrix.java +0 -0
  306. data/src/{toxi → main/java/toxi}/sim/automata/MatrixEvolver.java +0 -0
  307. data/src/{toxi → main/java/toxi}/sim/dla/BottomUpOrder.java +0 -0
  308. data/src/{toxi → main/java/toxi}/sim/dla/DLA.java +0 -0
  309. data/src/{toxi → main/java/toxi}/sim/dla/DLAConfiguration.java +0 -0
  310. data/src/{toxi → main/java/toxi}/sim/dla/DLAEventAdapter.java +0 -0
  311. data/src/{toxi → main/java/toxi}/sim/dla/DLAEventListener.java +0 -0
  312. data/src/{toxi → main/java/toxi}/sim/dla/DLAGuideLines.java +0 -0
  313. data/src/{toxi → main/java/toxi}/sim/dla/DLAParticle.java +0 -0
  314. data/src/{toxi → main/java/toxi}/sim/dla/DLASegment.java +0 -0
  315. data/src/{toxi → main/java/toxi}/sim/dla/PipelineOrder.java +0 -0
  316. data/src/{toxi → main/java/toxi}/sim/dla/RadialDistanceOrder.java +0 -0
  317. data/src/{toxi → main/java/toxi}/sim/erosion/ErosionFunction.java +0 -0
  318. data/src/{toxi → main/java/toxi}/sim/erosion/TalusAngleErosion.java +0 -0
  319. data/src/{toxi → main/java/toxi}/sim/erosion/ThermalErosion.java +0 -0
  320. data/src/{toxi → main/java/toxi}/sim/fluids/FluidSolver2D.java +0 -0
  321. data/src/{toxi → main/java/toxi}/sim/fluids/FluidSolver3D.java +0 -0
  322. data/src/{toxi → main/java/toxi}/sim/grayscott/GrayScott.java +0 -0
  323. data/src/{toxi → main/java/toxi}/util/DateUtils.java +0 -0
  324. data/src/{toxi → main/java/toxi}/util/FileSequenceDescriptor.java +0 -0
  325. data/src/main/java/toxi/util/FileUtils.java +443 -0
  326. data/src/{toxi → main/java/toxi}/util/datatypes/ArraySet.java +0 -0
  327. data/src/{toxi → main/java/toxi}/util/datatypes/ArrayUtil.java +0 -0
  328. data/src/{toxi → main/java/toxi}/util/datatypes/BiasedDoubleRange.java +3 -3
  329. data/src/{toxi → main/java/toxi}/util/datatypes/BiasedFloatRange.java +2 -3
  330. data/src/{toxi → main/java/toxi}/util/datatypes/BiasedIntegerRange.java +3 -3
  331. data/src/{toxi → main/java/toxi}/util/datatypes/DoubleRange.java +3 -3
  332. data/src/{toxi → main/java/toxi}/util/datatypes/FloatRange.java +3 -3
  333. data/src/{toxi → main/java/toxi}/util/datatypes/GenericSet.java +0 -0
  334. data/src/{toxi → main/java/toxi}/util/datatypes/IntegerRange.java +3 -3
  335. data/src/{toxi → main/java/toxi}/util/datatypes/IntegerSet.java +0 -0
  336. data/src/{toxi → main/java/toxi}/util/datatypes/ItemIndex.java +0 -0
  337. data/src/{toxi → main/java/toxi}/util/datatypes/SingletonRegistry.java +0 -0
  338. data/src/{toxi → main/java/toxi}/util/datatypes/TypedProperties.java +0 -0
  339. data/src/{toxi → main/java/toxi}/util/datatypes/UndirectedGraph.java +0 -0
  340. data/src/{toxi → main/java/toxi}/util/datatypes/UniqueItemIndex.java +0 -0
  341. data/src/{toxi → main/java/toxi}/util/datatypes/WeightedRandomEntry.java +0 -0
  342. data/src/{toxi → main/java/toxi}/util/datatypes/WeightedRandomSet.java +0 -0
  343. data/src/{toxi → main/java/toxi}/util/events/EventDispatcher.java +0 -0
  344. data/src/{toxi → main/java/toxi}/volume/AdditiveBrush.java +0 -0
  345. data/src/{toxi → main/java/toxi}/volume/ArrayIsoSurface.java +0 -0
  346. data/src/{toxi → main/java/toxi}/volume/BoxBrush.java +0 -0
  347. data/src/{toxi → main/java/toxi}/volume/BrushMode.java +0 -0
  348. data/src/{toxi → main/java/toxi}/volume/HashIsoSurface.java +0 -0
  349. data/src/{toxi → main/java/toxi}/volume/IsoSurface.java +0 -0
  350. data/src/{toxi → main/java/toxi}/volume/MarchingCubesIndex.java +0 -0
  351. data/src/{toxi → main/java/toxi}/volume/MeshLatticeBuilder.java +0 -0
  352. data/src/{toxi → main/java/toxi}/volume/MeshVoxelizer.java +0 -0
  353. data/src/{toxi → main/java/toxi}/volume/MultiplyBrush.java +0 -0
  354. data/src/{toxi → main/java/toxi}/volume/PeakBrush.java +0 -0
  355. data/src/{toxi → main/java/toxi}/volume/ReplaceBrush.java +0 -0
  356. data/src/{toxi → main/java/toxi}/volume/RoundBrush.java +0 -0
  357. data/src/{toxi → main/java/toxi}/volume/VolumetricBrush.java +0 -0
  358. data/src/{toxi → main/java/toxi}/volume/VolumetricHashMap.java +0 -0
  359. data/src/{toxi → main/java/toxi}/volume/VolumetricSpace.java +0 -0
  360. data/src/{toxi → main/java/toxi}/volume/VolumetricSpaceArray.java +0 -0
  361. data/src/test/java/module-info.java +10 -0
  362. data/src/{BooleanShapes.java → test/java/toxi/BooleanShapes.java} +2 -2
  363. data/toxiclibs.gemspec +7 -8
  364. metadata +357 -368
  365. data/.mvn/wrapper/maven-wrapper.properties +0 -1
  366. data/lib/args4j-2.0.31.jar +0 -0
  367. data/src/com/toxi/net/ClientListener.java +0 -41
  368. data/src/com/toxi/net/ServerListener.java +0 -70
  369. data/src/com/toxi/net/ServerListenerAdapter.java +0 -47
  370. data/src/com/toxi/net/ServerState.java +0 -18
  371. data/src/com/toxi/net/UDPConnection.java +0 -66
  372. data/src/com/toxi/net/UDPSyncClient.java +0 -81
  373. data/src/com/toxi/net/UDPSyncServer.java +0 -450
  374. data/src/com/toxi/nio/UDPClient.java +0 -121
  375. data/src/com/toxi/nio/UDPClientState.java +0 -32
  376. data/src/com/toxi/nio/UDPServer.java +0 -129
  377. data/src/toxi/data/feeds/AtomFeed.java +0 -129
  378. data/src/toxi/data/feeds/RSSFeed.java +0 -99
  379. data/src/toxi/physics2d/VerletParticle2D.java +0 -457
  380. data/src/toxi/physics2d/VerletPhysics2D.java +0 -448
  381. data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +0 -212
  382. data/src/toxi/physics3d/VerletParticle3D.java +0 -385
  383. data/src/toxi/util/FileUtils.java +0 -467
@@ -0,0 +1,443 @@
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
+ package toxi.util;
28
+
29
+ import java.awt.FileDialog;
30
+ import java.awt.Frame;
31
+ import java.io.BufferedInputStream;
32
+ import java.io.BufferedReader;
33
+ import java.io.BufferedWriter;
34
+ import java.io.ByteArrayOutputStream;
35
+ import java.io.File;
36
+ import java.io.FileInputStream;
37
+ import java.io.FileOutputStream;
38
+ import java.io.FilenameFilter;
39
+ import java.io.IOException;
40
+ import java.io.InputStream;
41
+ import java.io.InputStreamReader;
42
+ import java.io.OutputStream;
43
+ import java.io.OutputStreamWriter;
44
+ import java.io.UnsupportedEncodingException;
45
+ import java.util.zip.GZIPInputStream;
46
+ import java.util.zip.GZIPOutputStream;
47
+
48
+ /**
49
+ * A collection of file handling utilities.
50
+ */
51
+ public class FileUtils {
52
+
53
+ /**
54
+ * {@link FileDialog} constant
55
+ */
56
+ public static final int LOAD = FileDialog.LOAD;
57
+
58
+ /**
59
+ * {@link FileDialog} constant
60
+ */
61
+ public static final int SAVE = FileDialog.SAVE;
62
+
63
+ /**
64
+ * Attempts to create the full path of directories as specified by the given
65
+ * target path. The path is assumed to be a directory, NOT a file in a
66
+ * directory. For the latter, use {@link #createDirectoriesForFile(File)}.
67
+ *
68
+ * @param path
69
+ * @return true, if the operation succeeded
70
+ */
71
+ static public boolean createDirectories(File path) {
72
+ try {
73
+ if (!path.exists()) {
74
+ path.mkdirs();
75
+ }
76
+ return true;
77
+ } catch (SecurityException se) {
78
+ System.err.println("No permissions to create "
79
+ + path.getAbsolutePath());
80
+ }
81
+ return false;
82
+ }
83
+
84
+ /**
85
+ * Attempts to create the full path of directories as specified by the given
86
+ * target file.
87
+ *
88
+ * @param file
89
+ * @return true, if the operation succeeded
90
+ */
91
+ static public boolean createDirectoriesForFile(File file) {
92
+ try {
93
+ String parentName = file.getParent();
94
+ if (parentName != null) {
95
+ File parent = new File(parentName);
96
+ if (!parent.exists()) {
97
+ parent.mkdirs();
98
+ }
99
+ }
100
+ return true;
101
+ } catch (SecurityException se) {
102
+ System.err.println("No permissions to create "
103
+ + file.getAbsolutePath());
104
+ }
105
+ return false;
106
+ }
107
+
108
+ /**
109
+ * Creates an {@link InputStream} for the given file. If the file extension
110
+ * ends with ".gz" the stream is automatically wrapped in a
111
+ * {@link GZIPInputStream} as well.
112
+ *
113
+ * @param file input file
114
+ * @return input stream
115
+ * @throws IOException
116
+ */
117
+ static public InputStream createInputStream(File file) throws IOException {
118
+ if (file == null) {
119
+ throw new IllegalArgumentException("file can't be null");
120
+ }
121
+ InputStream stream = new FileInputStream(file);
122
+ if (file.getName().toLowerCase().endsWith(".gz")) {
123
+ stream = new GZIPInputStream(stream);
124
+ }
125
+ return stream;
126
+ }
127
+
128
+ /**
129
+ * Creates an {@link OutputStream} for the given file. If the file extension
130
+ * ends with ".gz" the stream is automatically wrapped in a
131
+ * {@link GZIPOutputStream} as well. Also attempts to create any intermediate
132
+ * directories for the file using {@link #createDirectoriesForFile(File)}.
133
+ *
134
+ * @param file output file
135
+ * @return output stream
136
+ * @throws IOException
137
+ */
138
+ static public OutputStream createOutputStream(File file) throws IOException {
139
+ if (file == null) {
140
+ throw new IllegalArgumentException("file can't be null");
141
+ }
142
+ createDirectoriesForFile(file);
143
+ OutputStream stream = new FileOutputStream(file);
144
+ if (file.getName().toLowerCase().endsWith(".gz")) {
145
+ stream = new GZIPOutputStream(stream);
146
+ }
147
+ return stream;
148
+ }
149
+
150
+ /**
151
+ * Creates a {@link BufferedReader} for the given file using UTF-8 encoding.
152
+ *
153
+ * @param file
154
+ * @return reader instance
155
+ * @throws IOException
156
+ */
157
+ public static BufferedReader createReader(File file) throws IOException {
158
+ return createReader(createInputStream(file));
159
+ }
160
+
161
+ /**
162
+ * Creates a {@link BufferedReader} for the given {@link InputStream} using
163
+ * UTF-8 encoding.
164
+ *
165
+ * @param input stream
166
+ * @return reader instance
167
+ */
168
+ public static BufferedReader createReader(InputStream input) {
169
+ return createReader(input, "UTF-8");
170
+ }
171
+
172
+ /**
173
+ * Creates a {@link BufferedReader} for the given {@link InputStream} and
174
+ * using the specified encoding.
175
+ *
176
+ * @param input stream
177
+ * @param encoding text encoding to use
178
+ * @return reader instance
179
+ */
180
+ public static BufferedReader createReader(InputStream input, String encoding) {
181
+ InputStreamReader isr = null;
182
+ try {
183
+ isr = new InputStreamReader(input, encoding);
184
+ } catch (UnsupportedEncodingException e) {
185
+ }
186
+ return new BufferedReader(isr, 0x10000);
187
+ }
188
+
189
+ /**
190
+ * Creates a {@link BufferedWriter} for the given file using UTF-8 encoding.
191
+ *
192
+ * @param file
193
+ * @return writer instance
194
+ * @throws IOException
195
+ */
196
+ public static BufferedWriter createWriter(File file) throws IOException {
197
+ return createWriter(createOutputStream(file));
198
+ }
199
+
200
+ /**
201
+ * Creates a {@link BufferedWriter} for the given {@link OutputStream} using
202
+ * UTF-8 encoding.
203
+ *
204
+ * @param out
205
+ * @return writer instance
206
+ */
207
+ public static BufferedWriter createWriter(OutputStream out) {
208
+ return createWriter(out, "UTF-8");
209
+ }
210
+
211
+ /**
212
+ * Creates a {@link BufferedWriter} for the given {@link OutputStream} and
213
+ * using the specified encoding.
214
+ *
215
+ * @param out stream
216
+ * @param encoding text encoding to use
217
+ * @return writer instance
218
+ */
219
+ public static BufferedWriter createWriter(OutputStream out, String encoding) {
220
+ OutputStreamWriter w = null;
221
+ try {
222
+ w = new OutputStreamWriter(out, encoding);
223
+ } catch (UnsupportedEncodingException e) {
224
+ }
225
+ return new BufferedWriter(w, 0x10000);
226
+ }
227
+
228
+ /**
229
+ * <p>
230
+ * Analyses the given file path for a file sequence pattern and returns a
231
+ * {@link FileSequenceDescriptor} instance for further use to handle this
232
+ * sequence. The file pattern should be in one of these formats:
233
+ * </p>
234
+ * <ul>
235
+ * <li>base_path-00001.ext</li>
236
+ * <li>base_path001.ext</li>
237
+ * </ul>
238
+ * <p>
239
+ * The sequence index should be using leading zeros, but the number of digits
240
+ * will be identified automatically.
241
+ * </p>
242
+ *
243
+ * @param path file path of the first file in the sequence
244
+ * @return descriptor, or null, if the path could not be analysed
245
+ */
246
+ public static FileSequenceDescriptor getFileSequenceDescriptorFor(
247
+ String path) {
248
+ int dotIndex = path.lastIndexOf('.');
249
+ int zeroIndex = path.lastIndexOf('-') + 1;
250
+ if (zeroIndex == 0) {
251
+ zeroIndex = dotIndex - 1;
252
+ while (path.charAt(zeroIndex) >= '0'
253
+ && path.charAt(zeroIndex) <= '9') {
254
+ zeroIndex--;
255
+ }
256
+ zeroIndex++;
257
+ }
258
+ int numDigits = dotIndex - zeroIndex;
259
+ if (dotIndex != -1 && numDigits > 0) {
260
+ String base = path.substring(0, zeroIndex);
261
+ String extension = path.substring(dotIndex);
262
+ String filePattern = base + "%0" + numDigits + "d" + extension;
263
+ int start = Integer.parseInt(path.substring(zeroIndex, dotIndex));
264
+ return new FileSequenceDescriptor(filePattern, extension, dotIndex
265
+ - zeroIndex, start);
266
+ } else {
267
+ return null;
268
+ }
269
+ }
270
+
271
+ /**
272
+ * Loads the given {@link InputStream} into a byte array buffer.
273
+ *
274
+ * @param stream
275
+ * @return byte array
276
+ * @throws IOException
277
+ */
278
+ static public byte[] loadBytes(InputStream stream) throws IOException {
279
+ BufferedInputStream input = new BufferedInputStream(stream);
280
+ ByteArrayOutputStream buffer = new ByteArrayOutputStream();
281
+ int c;
282
+ while ((c = input.read()) != -1) {
283
+ buffer.write(c);
284
+ }
285
+ return buffer.toByteArray();
286
+ }
287
+
288
+ /**
289
+ * Loads the given {@link BufferedReader} as text, line by line into a
290
+ * {@link String}.
291
+ *
292
+ * @param reader
293
+ * @return reader contents as string
294
+ * @throws IOException
295
+ */
296
+ public static String loadText(BufferedReader reader) throws IOException {
297
+ StringBuilder result = new StringBuilder();
298
+ String line;
299
+ while ((line = reader.readLine()) != null) {
300
+ result.append(line).append("\n");
301
+ }
302
+ return result.toString();
303
+ }
304
+
305
+ /**
306
+ * Loads the given {@link InputStream} as text, line by line into a
307
+ * {@link String} using UTF-8 encoding.
308
+ *
309
+ * @param input stream
310
+ * @return stream contents as string
311
+ * @throws IOException
312
+ */
313
+ public static String loadText(InputStream input) throws IOException {
314
+ return loadText(input, "UTF-8");
315
+ }
316
+
317
+ /**
318
+ * Loads the given {@link InputStream} as text, line by line into a
319
+ * {@link String} using the specified encoding.
320
+ *
321
+ * @param input stream
322
+ * @param encoding
323
+ * @return stream contents as single string
324
+ * @throws IOException
325
+ */
326
+ public static String loadText(InputStream input, String encoding)
327
+ throws IOException {
328
+ byte[] raw = loadBytes(input);
329
+ return new String(raw, encoding);
330
+ }
331
+
332
+ /**
333
+ * Saves the given text to the specified {@link BufferedWriter} instance, then
334
+ * closes the writer afterwards.
335
+ *
336
+ * @param writer
337
+ * @param string
338
+ * @throws IOException
339
+ */
340
+ static public void saveText(BufferedWriter writer, String string)
341
+ throws IOException {
342
+ try (writer) {
343
+ writer.write(string);
344
+ writer.flush();
345
+ }
346
+ }
347
+
348
+ /**
349
+ * Saves the given text to the specified {@link OutputStream} instance, then
350
+ * closes the underlying writer afterwards.
351
+ *
352
+ * @param output
353
+ * @param string
354
+ * @throws IOException
355
+ */
356
+ static public void saveText(OutputStream output, String string)
357
+ throws IOException {
358
+ saveText(createWriter(output), string);
359
+ }
360
+
361
+ /**
362
+ * Displays a standard AWT file dialog for choosing a folder (no files!).
363
+ *
364
+ * @param frame parent frame
365
+ * @param title dialog title
366
+ * @param path base directory (or null)
367
+ * @return path to chosen directory or null, if user has canceled
368
+ */
369
+ public static String showDirectoryChooser(final Frame frame,
370
+ final String title, String path) {
371
+ System.setProperty("apple.awt.fileDialogForDirectories", "true");
372
+ String result = showFileDialog(frame, title, path, (File dir, String name) -> new File(dir + "/" + name).isDirectory(), LOAD);
373
+ System.setProperty("apple.awt.fileDialogForDirectories", "false");
374
+ return result;
375
+ }
376
+
377
+ /**
378
+ * Displays a standard AWT file dialog for choosing a file for loading or
379
+ * saving.
380
+ *
381
+ * @param frame parent frame
382
+ * @param title dialog title
383
+ * @param path base directory (or null)
384
+ * @param filter a FilenameFilter implementation (or null)
385
+ * @param mode either FileUtils.LOAD or FileUtils.SAVE
386
+ * @return path to chosen file or null, if user has canceled
387
+ */
388
+ public static String showFileDialog(final Frame frame, final String title,
389
+ String path, FilenameFilter filter, final int mode) {
390
+ String fileID = null;
391
+ FileDialog fd = new FileDialog(frame, title, mode);
392
+ if (path != null) {
393
+ fd.setDirectory(path);
394
+ }
395
+ if (filter != null) {
396
+ fd.setFilenameFilter(filter);
397
+ }
398
+ fd.setVisible(true);
399
+ if (fd.getFile() != null) {
400
+ fileID = fd.getFile();
401
+ fileID = fd.getDirectory() + fileID;
402
+ }
403
+ return fileID;
404
+ }
405
+
406
+ /**
407
+ * Displays a standard AWT file dialog for choosing a file for loading or
408
+ * saving.
409
+ *
410
+ * @param frame parent frame
411
+ * @param title dialog title
412
+ * @param path base directory (or null)
413
+ * @param formats an array of allowed file extensions (or null to allow all)
414
+ * @param mode either FileUtils.LOAD or FileUtils.SAVE
415
+ * @return path to chosen file or null, if user has canceled
416
+ */
417
+ public static String showFileDialog(final Frame frame, final String title,
418
+ String path, final String[] formats, final int mode) {
419
+ String fileID = null;
420
+ FileDialog fd = new FileDialog(frame, title, mode);
421
+ if (path != null) {
422
+ fd.setDirectory(path);
423
+ }
424
+ if (formats != null) {
425
+ fd.setFilenameFilter((File dir, String name) -> {
426
+ boolean isAccepted = false;
427
+ for (String ext : formats) {
428
+ if (name.contains(ext)) {
429
+ isAccepted = true;
430
+ break;
431
+ }
432
+ }
433
+ return isAccepted;
434
+ });
435
+ }
436
+ fd.setVisible(true);
437
+ if (fd.getFile() != null) {
438
+ fileID = fd.getFile();
439
+ fileID = fd.getDirectory() + fileID;
440
+ }
441
+ return fileID;
442
+ }
443
+ }
@@ -27,7 +27,7 @@
27
27
 
28
28
  package toxi.util.datatypes;
29
29
 
30
- import javax.xml.bind.annotation.XmlAttribute;
30
+
31
31
 
32
32
  import toxi.math.MathUtils;
33
33
 
@@ -40,13 +40,13 @@ public class BiasedDoubleRange extends DoubleRange {
40
40
  /**
41
41
  *
42
42
  */
43
- @XmlAttribute
43
+
44
44
  protected double bias = 0.5;
45
45
 
46
46
  /**
47
47
  *
48
48
  */
49
- @XmlAttribute
49
+
50
50
  protected double standardDeviation = bias * 0.5;
51
51
 
52
52
  /**
@@ -27,7 +27,6 @@
27
27
 
28
28
  package toxi.util.datatypes;
29
29
 
30
- import javax.xml.bind.annotation.XmlAttribute;
31
30
 
32
31
  import toxi.math.MathUtils;
33
32
 
@@ -40,13 +39,13 @@ public class BiasedFloatRange extends FloatRange {
40
39
  /**
41
40
  *
42
41
  */
43
- @XmlAttribute
42
+
44
43
  protected float bias = 0.5f;
45
44
 
46
45
  /**
47
46
  *
48
47
  */
49
- @XmlAttribute
48
+
50
49
  protected float standardDeviation = bias * 0.5f;
51
50
 
52
51
  /**
@@ -27,7 +27,7 @@
27
27
 
28
28
  package toxi.util.datatypes;
29
29
 
30
- import javax.xml.bind.annotation.XmlAttribute;
30
+
31
31
 
32
32
  import toxi.math.MathUtils;
33
33
 
@@ -40,13 +40,13 @@ public class BiasedIntegerRange extends IntegerRange {
40
40
  /**
41
41
  *
42
42
  */
43
- @XmlAttribute
43
+
44
44
  public int bias;
45
45
 
46
46
  /**
47
47
  *
48
48
  */
49
- @XmlAttribute
49
+
50
50
  public float standardDeviation;
51
51
 
52
52
  /**
@@ -31,7 +31,7 @@ import java.util.LinkedList;
31
31
  import java.util.List;
32
32
  import java.util.Random;
33
33
 
34
- import javax.xml.bind.annotation.XmlAttribute;
34
+
35
35
 
36
36
  import toxi.math.MathUtils;
37
37
 
@@ -71,7 +71,7 @@ public class DoubleRange {
71
71
  return new DoubleRange(min, max);
72
72
  }
73
73
 
74
- @XmlAttribute
74
+
75
75
  public double min,
76
76
 
77
77
  /**
@@ -86,7 +86,7 @@ public class DoubleRange {
86
86
  /**
87
87
  *
88
88
  */
89
- @XmlAttribute(name = "default")
89
+
90
90
  public double currValue;
91
91
 
92
92
  /**
@@ -31,7 +31,7 @@ import java.util.LinkedList;
31
31
  import java.util.List;
32
32
  import java.util.Random;
33
33
 
34
- import javax.xml.bind.annotation.XmlAttribute;
34
+
35
35
 
36
36
  import toxi.math.MathUtils;
37
37
 
@@ -71,7 +71,7 @@ public class FloatRange {
71
71
  return new FloatRange(min, max);
72
72
  }
73
73
 
74
- @XmlAttribute
74
+
75
75
  public float min,
76
76
 
77
77
  /**
@@ -86,7 +86,7 @@ public class FloatRange {
86
86
  /**
87
87
  *
88
88
  */
89
- @XmlAttribute(name = "default")
89
+
90
90
  public float currValue;
91
91
 
92
92
  /**
@@ -30,7 +30,7 @@ package toxi.util.datatypes;
30
30
  import java.util.List;
31
31
  import java.util.Random;
32
32
 
33
- import javax.xml.bind.annotation.XmlAttribute;
33
+
34
34
 
35
35
  import toxi.math.MathUtils;
36
36
 
@@ -70,7 +70,7 @@ public class IntegerRange {
70
70
  return new IntegerRange(min, max);
71
71
  }
72
72
 
73
- @XmlAttribute
73
+
74
74
  public int min,
75
75
 
76
76
  /**
@@ -85,7 +85,7 @@ public class IntegerRange {
85
85
  /**
86
86
  *
87
87
  */
88
- @XmlAttribute(name = "default")
88
+
89
89
  public int currValue;
90
90
 
91
91
  /**
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,10 @@
1
+ /*
2
+ * To change this license header, choose License Headers in Project Properties.
3
+ * To change this template file, choose Tools | Templates
4
+ * and open the template in the editor.
5
+ */
6
+
7
+ module ToxiclibsTest {
8
+ requires org.processing.core;
9
+ requires toxiclibs;
10
+ }