toxiclibs 0.4.0 → 0.8.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.
- checksums.yaml +4 -4
- data/.gitignore +16 -0
- data/.mvn/extensions.xml +8 -0
- data/.mvn/wrapper/maven-wrapper.properties +1 -0
- data/.travis.yml +23 -0
- data/CHANGELOG.md +7 -0
- data/COPYING.md +14 -0
- data/Gemfile +10 -0
- data/LICENSE +675 -0
- data/README.md +9 -7
- data/Rakefile +25 -81
- data/examples/README.md +5 -0
- data/examples/attract_repel/attract_repel.rb +30 -0
- data/examples/attract_repel/attractor.rb +23 -0
- data/examples/attract_repel/particle.rb +27 -0
- data/examples/data/ReplicaBold.ttf +0 -0
- data/examples/data/ti_yong.png +0 -0
- data/examples/force_directed/cluster.rb +76 -0
- data/examples/force_directed/force_directed_graph.rb +92 -0
- data/examples/force_directed/node.rb +26 -0
- data/examples/gray_scott_image.rb +74 -0
- data/examples/gray_scott_tone_map.rb +77 -0
- data/examples/implicit.rb +139 -0
- data/examples/inflate_mesh.rb +89 -0
- data/examples/model_align.rb +43 -0
- data/examples/physics_type.rb +77 -0
- data/examples/povmesh/data/mask.jpg +0 -0
- data/examples/povmesh/ftest.rb +59 -0
- data/examples/povmesh/mesh_align.rb +47 -0
- data/examples/povmesh/tentacle.rb +71 -0
- data/examples/simple_cluster/cluster.rb +47 -0
- data/examples/simple_cluster/node.rb +27 -0
- data/examples/simple_cluster/simple_cluster.rb +60 -0
- data/examples/soft_body/blanket.rb +45 -0
- data/examples/soft_body/connection.rb +16 -0
- data/examples/soft_body/particle.rb +22 -0
- data/examples/soft_body/soft_body_square_adapted.rb +55 -0
- data/examples/spherical_harmonics_mesh.rb +50 -0
- data/examples/test_rect.rb +32 -0
- data/lib/toxiclibs.jar +0 -0
- data/lib/toxiclibs.rb +72 -22
- data/lib/toxiclibs/version.rb +1 -1
- data/pom.rb +63 -0
- data/pom.xml +124 -0
- data/src/com/toxi/net/ClientListener.java +41 -0
- data/src/com/toxi/net/ServerListener.java +70 -0
- data/src/com/toxi/net/ServerListenerAdapter.java +47 -0
- data/src/com/toxi/net/ServerState.java +18 -0
- data/src/com/toxi/net/UDPConnection.java +66 -0
- data/src/com/toxi/net/UDPSyncClient.java +81 -0
- data/src/com/toxi/net/UDPSyncServer.java +450 -0
- data/src/com/toxi/nio/UDPClient.java +121 -0
- data/src/com/toxi/nio/UDPClientState.java +32 -0
- data/src/com/toxi/nio/UDPServer.java +129 -0
- data/src/toxi/audio/AudioBuffer.java +229 -0
- data/src/toxi/audio/AudioSource.java +288 -0
- data/src/toxi/audio/DecompressInputStream.java +159 -0
- data/src/toxi/audio/IIRFilter.java +197 -0
- data/src/toxi/audio/JOALUtil.java +388 -0
- data/src/toxi/audio/MultiTimbralManager.java +162 -0
- data/src/toxi/audio/SoundListener.java +154 -0
- data/src/toxi/audio/SynthUtil.java +109 -0
- data/src/toxi/color/AccessCriteria.java +114 -0
- data/src/toxi/color/AlphaAccessor.java +67 -0
- data/src/toxi/color/CMYKAccessor.java +122 -0
- data/src/toxi/color/CMYKDistanceProxy.java +40 -0
- data/src/toxi/color/ColorGradient.java +260 -0
- data/src/toxi/color/ColorList.java +699 -0
- data/src/toxi/color/ColorRange.java +671 -0
- data/src/toxi/color/ColorTheme.java +163 -0
- data/src/toxi/color/DistanceProxy.java +44 -0
- data/src/toxi/color/HSVAccessor.java +113 -0
- data/src/toxi/color/HSVDistanceProxy.java +40 -0
- data/src/toxi/color/HistEntry.java +85 -0
- data/src/toxi/color/Histogram.java +185 -0
- data/src/toxi/color/Hue.java +249 -0
- data/src/toxi/color/LuminanceAccessor.java +78 -0
- data/src/toxi/color/NamedColor.java +935 -0
- data/src/toxi/color/ProximityComparator.java +70 -0
- data/src/toxi/color/RGBAccessor.java +113 -0
- data/src/toxi/color/RGBDistanceProxy.java +41 -0
- data/src/toxi/color/ReadonlyTColor.java +296 -0
- data/src/toxi/color/TColor.java +1677 -0
- data/src/toxi/color/TColorAdapter.java +68 -0
- data/src/toxi/color/ToneMap.java +218 -0
- data/src/toxi/color/theory/AnalogousStrategy.java +140 -0
- data/src/toxi/color/theory/ColorTheoryRegistry.java +139 -0
- data/src/toxi/color/theory/ColorTheoryStrategy.java +56 -0
- data/src/toxi/color/theory/ComplementaryStrategy.java +111 -0
- data/src/toxi/color/theory/CompoundTheoryStrategy.java +143 -0
- data/src/toxi/color/theory/LeftSplitComplementaryStrategy.java +82 -0
- data/src/toxi/color/theory/MonochromeTheoryStrategy.java +103 -0
- data/src/toxi/color/theory/RightSplitComplementaryStrategy.java +82 -0
- data/src/toxi/color/theory/SingleComplementStrategy.java +76 -0
- data/src/toxi/color/theory/SplitComplementaryStrategy.java +77 -0
- data/src/toxi/color/theory/TetradTheoryStrategy.java +114 -0
- data/src/toxi/color/theory/TriadTheoryStrategy.java +77 -0
- data/src/toxi/data/csv/CSVAdapter.java +74 -0
- data/src/toxi/data/csv/CSVFieldMapper.java +212 -0
- data/src/toxi/data/csv/CSVListener.java +61 -0
- data/src/toxi/data/csv/CSVParser.java +202 -0
- data/src/toxi/data/feeds/AtomAuthor.java +49 -0
- data/src/toxi/data/feeds/AtomContent.java +50 -0
- data/src/toxi/data/feeds/AtomEntry.java +111 -0
- data/src/toxi/data/feeds/AtomFeed.java +129 -0
- data/src/toxi/data/feeds/AtomLink.java +62 -0
- data/src/toxi/data/feeds/RSSChannel.java +88 -0
- data/src/toxi/data/feeds/RSSEnclosure.java +60 -0
- data/src/toxi/data/feeds/RSSFeed.java +99 -0
- data/src/toxi/data/feeds/RSSItem.java +104 -0
- data/src/toxi/data/feeds/util/EntityStripper.java +2480 -0
- data/src/toxi/data/feeds/util/Iso8601DateAdapter.java +101 -0
- data/src/toxi/data/feeds/util/Rfc822DateAdapter.java +93 -0
- data/src/toxi/geom/AABB.java +658 -0
- data/src/toxi/geom/Axis3D.java +116 -0
- data/src/toxi/geom/AxisAlignedCylinder.java +163 -0
- data/src/toxi/geom/BernsteinPolynomial.java +94 -0
- data/src/toxi/geom/BezierCurve2D.java +159 -0
- data/src/toxi/geom/BezierCurve3D.java +148 -0
- data/src/toxi/geom/BooleanShapeBuilder.java +185 -0
- data/src/toxi/geom/BoxIntersector.java +52 -0
- data/src/toxi/geom/Circle.java +230 -0
- data/src/toxi/geom/CircleIntersector.java +85 -0
- data/src/toxi/geom/Cone.java +150 -0
- data/src/toxi/geom/ConvexPolygonClipper.java +136 -0
- data/src/toxi/geom/CoordinateExtractor.java +16 -0
- data/src/toxi/geom/Ellipse.java +250 -0
- data/src/toxi/geom/GMatrix.java +2599 -0
- data/src/toxi/geom/GVector.java +833 -0
- data/src/toxi/geom/GlobalGridTesselator.java +54 -0
- data/src/toxi/geom/GridTesselator.java +108 -0
- data/src/toxi/geom/Intersector2D.java +49 -0
- data/src/toxi/geom/Intersector3D.java +51 -0
- data/src/toxi/geom/IsectData2D.java +103 -0
- data/src/toxi/geom/IsectData3D.java +103 -0
- data/src/toxi/geom/Line2D.java +534 -0
- data/src/toxi/geom/Line3D.java +471 -0
- data/src/toxi/geom/LineStrip2D.java +430 -0
- data/src/toxi/geom/LineStrip3D.java +230 -0
- data/src/toxi/geom/LocalGridTesselator.java +57 -0
- data/src/toxi/geom/Matrix3d.java +3048 -0
- data/src/toxi/geom/Matrix4f.java +3446 -0
- data/src/toxi/geom/Matrix4x4.java +1076 -0
- data/src/toxi/geom/MatrixSizeException.java +58 -0
- data/src/toxi/geom/OctreeVisitor.java +44 -0
- data/src/toxi/geom/Origin3D.java +148 -0
- data/src/toxi/geom/Plane.java +293 -0
- data/src/toxi/geom/PlaneIntersector.java +57 -0
- data/src/toxi/geom/PointCloud3D.java +253 -0
- data/src/toxi/geom/PointOctree.java +502 -0
- data/src/toxi/geom/PointQuadtree.java +375 -0
- data/src/toxi/geom/Polygon2D.java +1038 -0
- data/src/toxi/geom/PolygonClipper2D.java +45 -0
- data/src/toxi/geom/PolygonTesselator.java +20 -0
- data/src/toxi/geom/QuadtreeVisitor.java +44 -0
- data/src/toxi/geom/Quaternion.java +641 -0
- data/src/toxi/geom/Ray2D.java +146 -0
- data/src/toxi/geom/Ray3D.java +150 -0
- data/src/toxi/geom/Ray3DIntersector.java +75 -0
- data/src/toxi/geom/ReadonlyVec2D.java +575 -0
- data/src/toxi/geom/ReadonlyVec3D.java +628 -0
- data/src/toxi/geom/ReadonlyVec4D.java +431 -0
- data/src/toxi/geom/Rect.java +720 -0
- data/src/toxi/geom/Reflector3D.java +58 -0
- data/src/toxi/geom/Shape2D.java +94 -0
- data/src/toxi/geom/Shape3D.java +42 -0
- data/src/toxi/geom/SingularMatrixException.java +57 -0
- data/src/toxi/geom/SpatialBins.java +182 -0
- data/src/toxi/geom/SpatialIndex.java +61 -0
- data/src/toxi/geom/Sphere.java +224 -0
- data/src/toxi/geom/SphereIntersectorReflector.java +196 -0
- data/src/toxi/geom/Spline2D.java +349 -0
- data/src/toxi/geom/Spline3D.java +351 -0
- data/src/toxi/geom/SutherlandHodgemanClipper.java +151 -0
- data/src/toxi/geom/Triangle2D.java +422 -0
- data/src/toxi/geom/Triangle3D.java +456 -0
- data/src/toxi/geom/TriangleIntersector.java +105 -0
- data/src/toxi/geom/Vec2D.java +1328 -0
- data/src/toxi/geom/Vec3D.java +1832 -0
- data/src/toxi/geom/Vec4D.java +985 -0
- data/src/toxi/geom/VecMathUtil.java +100 -0
- data/src/toxi/geom/XAxisCylinder.java +64 -0
- data/src/toxi/geom/YAxisCylinder.java +65 -0
- data/src/toxi/geom/ZAxisCylinder.java +64 -0
- data/src/toxi/geom/mesh/BezierPatch.java +200 -0
- data/src/toxi/geom/mesh/BoxSelector.java +62 -0
- data/src/toxi/geom/mesh/DefaultSTLColorModel.java +67 -0
- data/src/toxi/geom/mesh/DefaultSelector.java +50 -0
- data/src/toxi/geom/mesh/Face.java +176 -0
- data/src/toxi/geom/mesh/LaplacianSmooth.java +80 -0
- data/src/toxi/geom/mesh/MaterialiseSTLColorModel.java +150 -0
- data/src/toxi/geom/mesh/Mesh3D.java +224 -0
- data/src/toxi/geom/mesh/MeshIntersector.java +91 -0
- data/src/toxi/geom/mesh/OBJWriter.java +194 -0
- data/src/toxi/geom/mesh/PLYWriter.java +167 -0
- data/src/toxi/geom/mesh/PlaneSelector.java +90 -0
- data/src/toxi/geom/mesh/STLColorModel.java +54 -0
- data/src/toxi/geom/mesh/STLReader.java +185 -0
- data/src/toxi/geom/mesh/STLWriter.java +323 -0
- data/src/toxi/geom/mesh/SphereFunction.java +156 -0
- data/src/toxi/geom/mesh/SphericalHarmonics.java +110 -0
- data/src/toxi/geom/mesh/SuperEllipsoid.java +110 -0
- data/src/toxi/geom/mesh/SurfaceFunction.java +75 -0
- data/src/toxi/geom/mesh/SurfaceMeshBuilder.java +149 -0
- data/src/toxi/geom/mesh/Terrain.java +451 -0
- data/src/toxi/geom/mesh/TriangleMesh.java +1201 -0
- data/src/toxi/geom/mesh/Vertex.java +78 -0
- data/src/toxi/geom/mesh/VertexSelector.java +193 -0
- data/src/toxi/geom/mesh/WEFace.java +100 -0
- data/src/toxi/geom/mesh/WEMeshFilterStrategy.java +51 -0
- data/src/toxi/geom/mesh/WETriangleMesh.java +761 -0
- data/src/toxi/geom/mesh/WEVertex.java +134 -0
- data/src/toxi/geom/mesh/WingedEdge.java +115 -0
- data/src/toxi/geom/mesh/subdiv/CentroidSubdiv.java +37 -0
- data/src/toxi/geom/mesh/subdiv/DisplacementSubdivision.java +85 -0
- data/src/toxi/geom/mesh/subdiv/DualDisplacementSubdivision.java +94 -0
- data/src/toxi/geom/mesh/subdiv/DualSubdivision.java +49 -0
- data/src/toxi/geom/mesh/subdiv/EdgeLengthComparator.java +50 -0
- data/src/toxi/geom/mesh/subdiv/FaceCountComparator.java +51 -0
- data/src/toxi/geom/mesh/subdiv/MidpointDisplacementSubdivision.java +80 -0
- data/src/toxi/geom/mesh/subdiv/MidpointSubdiv.java +42 -0
- data/src/toxi/geom/mesh/subdiv/MidpointSubdivision.java +48 -0
- data/src/toxi/geom/mesh/subdiv/NewSubdivStrategy.java +23 -0
- data/src/toxi/geom/mesh/subdiv/NormalDisplacementSubdivision.java +74 -0
- data/src/toxi/geom/mesh/subdiv/SubdivisionStrategy.java +83 -0
- data/src/toxi/geom/mesh/subdiv/TriSubdivision.java +51 -0
- data/src/toxi/geom/mesh2d/DelaunayTriangle.java +222 -0
- data/src/toxi/geom/mesh2d/DelaunayTriangulation.java +327 -0
- data/src/toxi/geom/mesh2d/DelaunayVertex.java +560 -0
- data/src/toxi/geom/mesh2d/Voronoi.java +149 -0
- data/src/toxi/geom/nurbs/BasicNurbsCurve.java +210 -0
- data/src/toxi/geom/nurbs/BasicNurbsSurface.java +233 -0
- data/src/toxi/geom/nurbs/ControlNet.java +148 -0
- data/src/toxi/geom/nurbs/CurveCreator.java +112 -0
- data/src/toxi/geom/nurbs/CurveUtils.java +259 -0
- data/src/toxi/geom/nurbs/InterpolationException.java +65 -0
- data/src/toxi/geom/nurbs/KnotVector.java +333 -0
- data/src/toxi/geom/nurbs/NurbsCreator.java +815 -0
- data/src/toxi/geom/nurbs/NurbsCurve.java +120 -0
- data/src/toxi/geom/nurbs/NurbsMeshCreator.java +145 -0
- data/src/toxi/geom/nurbs/NurbsSurface.java +147 -0
- data/src/toxi/image/util/Filter8bit.java +331 -0
- data/src/toxi/image/util/TiledFrameExporter.java +162 -0
- data/src/toxi/math/BezierInterpolation.java +102 -0
- data/src/toxi/math/CircularInterpolation.java +88 -0
- data/src/toxi/math/CosineInterpolation.java +51 -0
- data/src/toxi/math/DecimatedInterpolation.java +77 -0
- data/src/toxi/math/ExponentialInterpolation.java +68 -0
- data/src/toxi/math/InterpolateStrategy.java +60 -0
- data/src/toxi/math/Interpolation2D.java +93 -0
- data/src/toxi/math/LinearInterpolation.java +46 -0
- data/src/toxi/math/MathUtils.java +990 -0
- data/src/toxi/math/NonLinearScaleMap.java +101 -0
- data/src/toxi/math/ScaleMap.java +183 -0
- data/src/toxi/math/SigmoidInterpolation.java +78 -0
- data/src/toxi/math/SinCosLUT.java +141 -0
- data/src/toxi/math/ThresholdInterpolation.java +58 -0
- data/src/toxi/math/ZoomLensInterpolation.java +126 -0
- data/src/toxi/math/conversion/UnitTranslator.java +161 -0
- data/src/toxi/math/noise/PerlinNoise.java +281 -0
- data/src/toxi/math/noise/SimplexNoise.java +542 -0
- data/src/toxi/math/waves/AMFMSineWave.java +143 -0
- data/src/toxi/math/waves/AbstractWave.java +248 -0
- data/src/toxi/math/waves/ConstantWave.java +48 -0
- data/src/toxi/math/waves/FMHarmonicSquareWave.java +155 -0
- data/src/toxi/math/waves/FMSawtoothWave.java +144 -0
- data/src/toxi/math/waves/FMSineWave.java +142 -0
- data/src/toxi/math/waves/FMSquareWave.java +143 -0
- data/src/toxi/math/waves/FMTriangleWave.java +126 -0
- data/src/toxi/math/waves/SineWave.java +81 -0
- data/src/toxi/math/waves/Wave2D.java +68 -0
- data/src/toxi/math/waves/WaveState.java +69 -0
- data/src/toxi/music/scale/AbstractScale.java +117 -0
- data/src/toxi/music/scale/GenericScale.java +66 -0
- data/src/toxi/music/scale/MajorScale.java +41 -0
- data/src/toxi/newmesh/AttributedEdge.java +106 -0
- data/src/toxi/newmesh/AttributedFace.java +63 -0
- data/src/toxi/newmesh/IndexedTriangleMesh.java +809 -0
- data/src/toxi/newmesh/MeshAttributeCompiler.java +45 -0
- data/src/toxi/newmesh/MeshFaceNormalCompiler.java +52 -0
- data/src/toxi/newmesh/MeshUVCompiler.java +52 -0
- data/src/toxi/newmesh/MeshVertexColorCompiler.java +49 -0
- data/src/toxi/newmesh/MeshVertexCompiler.java +54 -0
- data/src/toxi/newmesh/MeshVertexNormalCompiler.java +55 -0
- data/src/toxi/newmesh/SpatialIndex.java +78 -0
- data/src/toxi/physics2d/ParticlePath2D.java +100 -0
- data/src/toxi/physics2d/ParticleString2D.java +184 -0
- data/src/toxi/physics2d/PullBackSpring2D.java +51 -0
- data/src/toxi/physics2d/VerletConstrainedSpring2D.java +89 -0
- data/src/toxi/physics2d/VerletMinDistanceSpring2D.java +57 -0
- data/src/toxi/physics2d/VerletParticle2D.java +457 -0
- data/src/toxi/physics2d/VerletPhysics2D.java +448 -0
- data/src/toxi/physics2d/VerletSpring2D.java +181 -0
- data/src/toxi/physics2d/behaviors/AttractionBehavior2D.java +212 -0
- data/src/toxi/physics2d/behaviors/ConstantForceBehavior2D.java +112 -0
- data/src/toxi/physics2d/behaviors/GravityBehavior2D.java +61 -0
- data/src/toxi/physics2d/behaviors/ParticleBehavior2D.java +66 -0
- data/src/toxi/physics2d/constraints/AngularConstraint.java +83 -0
- data/src/toxi/physics2d/constraints/AxisConstraint.java +71 -0
- data/src/toxi/physics2d/constraints/CircularConstraint.java +69 -0
- data/src/toxi/physics2d/constraints/MaxConstraint.java +66 -0
- data/src/toxi/physics2d/constraints/MinConstraint.java +66 -0
- data/src/toxi/physics2d/constraints/ParticleConstraint2D.java +47 -0
- data/src/toxi/physics2d/constraints/PolygonConstraint.java +93 -0
- data/src/toxi/physics2d/constraints/RectConstraint.java +114 -0
- data/src/toxi/physics3d/ParticlePath3D.java +100 -0
- data/src/toxi/physics3d/ParticleString3D.java +184 -0
- data/src/toxi/physics3d/PullBackSpring3D.java +50 -0
- data/src/toxi/physics3d/VerletConstrainedSpring3D.java +88 -0
- data/src/toxi/physics3d/VerletMinDistanceSpring3D.java +56 -0
- data/src/toxi/physics3d/VerletParticle3D.java +385 -0
- data/src/toxi/physics3d/VerletPhysics3D.java +417 -0
- data/src/toxi/physics3d/VerletSpring3D.java +180 -0
- data/src/toxi/physics3d/behaviors/AttractionBehavior3D.java +182 -0
- data/src/toxi/physics3d/behaviors/ConstantForceBehavior3D.java +92 -0
- data/src/toxi/physics3d/behaviors/GravityBehavior3D.java +61 -0
- data/src/toxi/physics3d/behaviors/ParticleBehavior3D.java +52 -0
- data/src/toxi/physics3d/constraints/AxisConstraint.java +68 -0
- data/src/toxi/physics3d/constraints/BoxConstraint.java +121 -0
- data/src/toxi/physics3d/constraints/CylinderConstraint.java +87 -0
- data/src/toxi/physics3d/constraints/MaxConstraint.java +65 -0
- data/src/toxi/physics3d/constraints/MinConstraint.java +65 -0
- data/src/toxi/physics3d/constraints/ParticleConstraint3D.java +49 -0
- data/src/toxi/physics3d/constraints/PlaneConstraint.java +78 -0
- data/src/toxi/physics3d/constraints/SoftBoxConstraint.java +87 -0
- data/src/toxi/physics3d/constraints/SphereConstraint.java +108 -0
- data/src/toxi/processing/ArrowModifier.java +116 -0
- data/src/toxi/processing/DashedLineModifier.java +48 -0
- data/src/toxi/processing/DeltaOrientationMapper.java +57 -0
- data/src/toxi/processing/Line2DRenderModifier.java +18 -0
- data/src/toxi/processing/MeshToVBO.java +127 -0
- data/src/toxi/processing/NormalMapper.java +18 -0
- data/src/toxi/processing/POVInterface.java +121 -0
- data/src/toxi/processing/POVMesh.java +219 -0
- data/src/toxi/processing/POVWriter.java +460 -0
- data/src/toxi/processing/RCOpaque.java +77 -0
- data/src/toxi/processing/RCTransp.java +78 -0
- data/src/toxi/processing/TextureBuilder.java +232 -0
- data/src/toxi/processing/Textures.java +110 -0
- data/src/toxi/processing/ToxiclibsSupport.java +1239 -0
- data/src/toxi/processing/Tracing.java +25 -0
- data/src/toxi/processing/XYZNormalMapper.java +30 -0
- data/src/toxi/sim/automata/CAMatrix.java +297 -0
- data/src/toxi/sim/automata/CARule.java +76 -0
- data/src/toxi/sim/automata/CARule2D.java +354 -0
- data/src/toxi/sim/automata/CAWolfram1D.java +309 -0
- data/src/toxi/sim/automata/EvolvableMatrix.java +61 -0
- data/src/toxi/sim/automata/MatrixEvolver.java +42 -0
- data/src/toxi/sim/dla/BottomUpOrder.java +76 -0
- data/src/toxi/sim/dla/DLA.java +497 -0
- data/src/toxi/sim/dla/DLAConfiguration.java +364 -0
- data/src/toxi/sim/dla/DLAEventAdapter.java +64 -0
- data/src/toxi/sim/dla/DLAEventListener.java +57 -0
- data/src/toxi/sim/dla/DLAGuideLines.java +219 -0
- data/src/toxi/sim/dla/DLAParticle.java +102 -0
- data/src/toxi/sim/dla/DLASegment.java +88 -0
- data/src/toxi/sim/dla/PipelineOrder.java +50 -0
- data/src/toxi/sim/dla/RadialDistanceOrder.java +92 -0
- data/src/toxi/sim/erosion/ErosionFunction.java +122 -0
- data/src/toxi/sim/erosion/TalusAngleErosion.java +145 -0
- data/src/toxi/sim/erosion/ThermalErosion.java +75 -0
- data/src/toxi/sim/fluids/FluidSolver2D.java +762 -0
- data/src/toxi/sim/fluids/FluidSolver3D.java +326 -0
- data/src/toxi/sim/grayscott/GrayScott.java +469 -0
- data/src/toxi/util/DateUtils.java +141 -0
- data/src/toxi/util/FileSequenceDescriptor.java +181 -0
- data/src/toxi/util/FileUtils.java +467 -0
- data/src/toxi/util/datatypes/ArraySet.java +128 -0
- data/src/toxi/util/datatypes/ArrayUtil.java +404 -0
- data/src/toxi/util/datatypes/BiasedDoubleRange.java +141 -0
- data/src/toxi/util/datatypes/BiasedFloatRange.java +141 -0
- data/src/toxi/util/datatypes/BiasedIntegerRange.java +141 -0
- data/src/toxi/util/datatypes/DoubleRange.java +251 -0
- data/src/toxi/util/datatypes/FloatRange.java +251 -0
- data/src/toxi/util/datatypes/GenericSet.java +215 -0
- data/src/toxi/util/datatypes/IntegerRange.java +247 -0
- data/src/toxi/util/datatypes/IntegerSet.java +149 -0
- data/src/toxi/util/datatypes/ItemIndex.java +72 -0
- data/src/toxi/util/datatypes/SingletonRegistry.java +91 -0
- data/src/toxi/util/datatypes/TypedProperties.java +291 -0
- data/src/toxi/util/datatypes/UndirectedGraph.java +134 -0
- data/src/toxi/util/datatypes/UniqueItemIndex.java +223 -0
- data/src/toxi/util/datatypes/WeightedRandomEntry.java +76 -0
- data/src/toxi/util/datatypes/WeightedRandomSet.java +125 -0
- data/src/toxi/util/events/EventDispatcher.java +86 -0
- data/src/toxi/volume/AdditiveBrush.java +19 -0
- data/src/toxi/volume/ArrayIsoSurface.java +297 -0
- data/src/toxi/volume/BoxBrush.java +100 -0
- data/src/toxi/volume/BrushMode.java +16 -0
- data/src/toxi/volume/HashIsoSurface.java +354 -0
- data/src/toxi/volume/IsoSurface.java +59 -0
- data/src/toxi/volume/MarchingCubesIndex.java +312 -0
- data/src/toxi/volume/MeshLatticeBuilder.java +358 -0
- data/src/toxi/volume/MeshVoxelizer.java +216 -0
- data/src/toxi/volume/MultiplyBrush.java +20 -0
- data/src/toxi/volume/PeakBrush.java +21 -0
- data/src/toxi/volume/ReplaceBrush.java +19 -0
- data/src/toxi/volume/RoundBrush.java +113 -0
- data/src/toxi/volume/VolumetricBrush.java +160 -0
- data/src/toxi/volume/VolumetricHashMap.java +179 -0
- data/src/toxi/volume/VolumetricSpace.java +195 -0
- data/src/toxi/volume/VolumetricSpaceArray.java +214 -0
- data/toxiclibs.gemspec +28 -0
- metadata +442 -31
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
package com.toxi.nio;
|
|
2
|
+
|
|
3
|
+
import java.net.*;
|
|
4
|
+
import java.io.*;
|
|
5
|
+
import java.nio.*;
|
|
6
|
+
import java.nio.channels.*;
|
|
7
|
+
import java.nio.channels.spi.SelectorProvider;
|
|
8
|
+
import java.util.*;
|
|
9
|
+
import java.util.logging.Level;
|
|
10
|
+
import java.util.logging.Logger;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @author tux
|
|
15
|
+
*/
|
|
16
|
+
public class UDPClient {
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
*
|
|
20
|
+
*/
|
|
21
|
+
public final static int DEFAULT_PORT = 9876;
|
|
22
|
+
|
|
23
|
+
int port = DEFAULT_PORT;
|
|
24
|
+
SocketAddress remote;
|
|
25
|
+
DatagramChannel channel;
|
|
26
|
+
Selector selector;
|
|
27
|
+
ByteBuffer buffer1;
|
|
28
|
+
ByteBuffer buffer2;
|
|
29
|
+
|
|
30
|
+
int clientID;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
*
|
|
34
|
+
* @param clientID
|
|
35
|
+
*/
|
|
36
|
+
public UDPClient(int clientID) {
|
|
37
|
+
this.clientID = clientID;
|
|
38
|
+
System.out.println("new client ID: " + clientID);
|
|
39
|
+
try {
|
|
40
|
+
remote = new InetSocketAddress("192.168.1.64", port);
|
|
41
|
+
channel = DatagramChannel.open();
|
|
42
|
+
channel.configureBlocking(false);
|
|
43
|
+
channel.connect(remote);
|
|
44
|
+
selector = SelectorProvider.provider().openSelector();
|
|
45
|
+
channel.register(selector, SelectionKey.OP_READ
|
|
46
|
+
| SelectionKey.OP_WRITE);
|
|
47
|
+
buffer1 = ByteBuffer.allocate(4);
|
|
48
|
+
buffer2 = ByteBuffer.allocate(4);
|
|
49
|
+
} catch (IOException ex) {
|
|
50
|
+
System.err.println(ex);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
*
|
|
56
|
+
* @param command
|
|
57
|
+
*/
|
|
58
|
+
public void send(int command) {
|
|
59
|
+
try {
|
|
60
|
+
selector.select(clientID);
|
|
61
|
+
Set readyKeys = selector.selectedKeys();
|
|
62
|
+
Iterator iterator = readyKeys.iterator();
|
|
63
|
+
if (iterator.hasNext()) {
|
|
64
|
+
SelectionKey key = (SelectionKey) iterator.next();
|
|
65
|
+
iterator.remove();
|
|
66
|
+
if (key.isWritable()) {
|
|
67
|
+
buffer1.clear();
|
|
68
|
+
buffer1.putInt(command);
|
|
69
|
+
buffer1.flip();
|
|
70
|
+
channel.write(buffer1);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
} catch (IOException ex) {
|
|
74
|
+
System.err.println(ex);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
*
|
|
80
|
+
* @return
|
|
81
|
+
*/
|
|
82
|
+
public int receive() {
|
|
83
|
+
int r = 0;
|
|
84
|
+
try {
|
|
85
|
+
selector.select(clientID);
|
|
86
|
+
Set readyKeys2 = selector.selectedKeys();
|
|
87
|
+
Iterator iterator2 = readyKeys2.iterator();
|
|
88
|
+
if (iterator2.hasNext()) {
|
|
89
|
+
SelectionKey key2 = (SelectionKey) iterator2.next();
|
|
90
|
+
iterator2.remove();
|
|
91
|
+
if (key2.isReadable()) {
|
|
92
|
+
buffer2.clear();
|
|
93
|
+
channel.read(buffer2);
|
|
94
|
+
buffer2.flip();
|
|
95
|
+
int command = buffer2.getInt();
|
|
96
|
+
r = command;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
} catch (IOException ex) {
|
|
100
|
+
System.err.println(ex);
|
|
101
|
+
}
|
|
102
|
+
return r;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
*
|
|
107
|
+
* @param args
|
|
108
|
+
*/
|
|
109
|
+
public static void main(String[] args) {
|
|
110
|
+
UDPClient client = new UDPClient(Integer.parseInt(args[0]));
|
|
111
|
+
client.send(1);
|
|
112
|
+
while (true) {
|
|
113
|
+
System.out.println(client.receive());
|
|
114
|
+
try {
|
|
115
|
+
Thread.sleep(33);
|
|
116
|
+
} catch (InterruptedException ex) {
|
|
117
|
+
Logger.getLogger(UDPClient.class.getName()).log(Level.SEVERE, null, ex);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
package com.toxi.nio;
|
|
2
|
+
|
|
3
|
+
import java.net.SocketAddress;
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @author tux
|
|
8
|
+
*/
|
|
9
|
+
public class UDPClientState {
|
|
10
|
+
SocketAddress addr;
|
|
11
|
+
boolean isReady;
|
|
12
|
+
long lastUpdate;
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
*
|
|
16
|
+
* @param a
|
|
17
|
+
*/
|
|
18
|
+
public UDPClientState(SocketAddress a) {
|
|
19
|
+
addr = a;
|
|
20
|
+
isReady = true;
|
|
21
|
+
lastUpdate = System.currentTimeMillis();
|
|
22
|
+
System.out.println("new client: " + addr);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
*
|
|
27
|
+
* @return
|
|
28
|
+
*/
|
|
29
|
+
public SocketAddress getAddress() {
|
|
30
|
+
return addr;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
package com.toxi.nio;
|
|
2
|
+
|
|
3
|
+
import java.net.*;
|
|
4
|
+
import java.io.*;
|
|
5
|
+
import java.nio.*;
|
|
6
|
+
import java.nio.channels.*;
|
|
7
|
+
import java.util.ArrayList;
|
|
8
|
+
import java.util.Iterator;
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
*
|
|
12
|
+
* @author tux
|
|
13
|
+
*/
|
|
14
|
+
public class UDPServer extends Thread {
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
public final static int DEFAULT_PORT = 9876;
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
*
|
|
23
|
+
*/
|
|
24
|
+
public final static int MAX_PACKET_SIZE = 32;
|
|
25
|
+
|
|
26
|
+
private int port;
|
|
27
|
+
private int packetSize;
|
|
28
|
+
private int numClients;
|
|
29
|
+
|
|
30
|
+
ArrayList<UDPClientState> clients;
|
|
31
|
+
private int frameCount = 0;
|
|
32
|
+
private int frameDuration;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
*
|
|
36
|
+
* @param args
|
|
37
|
+
*/
|
|
38
|
+
public static void main(String[] args) {
|
|
39
|
+
new UDPServer(1, 25).start();
|
|
40
|
+
try {
|
|
41
|
+
while (true) {
|
|
42
|
+
Thread.sleep(1000);
|
|
43
|
+
// System.out.println("running.");
|
|
44
|
+
}
|
|
45
|
+
} catch (InterruptedException e) {
|
|
46
|
+
e.printStackTrace();
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
*
|
|
52
|
+
* @param numClients
|
|
53
|
+
* @param fps
|
|
54
|
+
*/
|
|
55
|
+
public UDPServer(int numClients, int fps) {
|
|
56
|
+
this(DEFAULT_PORT, numClients, MAX_PACKET_SIZE, fps);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
*
|
|
61
|
+
* @param port
|
|
62
|
+
* @param numClients
|
|
63
|
+
* @param maxPacketSize
|
|
64
|
+
* @param fps
|
|
65
|
+
*/
|
|
66
|
+
public UDPServer(int port, int numClients, int maxPacketSize, int fps) {
|
|
67
|
+
this.port = port;
|
|
68
|
+
this.numClients = numClients;
|
|
69
|
+
this.packetSize = maxPacketSize;
|
|
70
|
+
frameDuration = 1000 / fps;
|
|
71
|
+
clients = new ArrayList<UDPClientState>();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
*/
|
|
77
|
+
public void run() {
|
|
78
|
+
DatagramChannel channel = null;
|
|
79
|
+
DatagramSocket socket = null;
|
|
80
|
+
ByteBuffer buffer = null;
|
|
81
|
+
try {
|
|
82
|
+
channel = DatagramChannel.open();
|
|
83
|
+
socket = channel.socket();
|
|
84
|
+
SocketAddress address = new InetSocketAddress(
|
|
85
|
+
InetAddress.getLocalHost(), port);
|
|
86
|
+
socket.bind(address);
|
|
87
|
+
buffer = ByteBuffer.allocateDirect(packetSize);
|
|
88
|
+
System.out.println("Server running: " + address);
|
|
89
|
+
System.out.println("Heartbeat interval: " + frameDuration);
|
|
90
|
+
System.out.println("waiting for clients...");
|
|
91
|
+
|
|
92
|
+
// get the addresses-initialisation phase
|
|
93
|
+
while (clients.size() < numClients) {
|
|
94
|
+
clients.add(new UDPClientState(channel.receive(buffer)));
|
|
95
|
+
buffer.flip();
|
|
96
|
+
buffer.clear();
|
|
97
|
+
}
|
|
98
|
+
// server now knows the clients
|
|
99
|
+
|
|
100
|
+
// MAIN LOOP-server is working for the clients
|
|
101
|
+
while (true) {
|
|
102
|
+
long beginSynch = System.currentTimeMillis();
|
|
103
|
+
buffer.clear();
|
|
104
|
+
buffer.putInt(frameCount++);
|
|
105
|
+
buffer.flip();
|
|
106
|
+
Iterator<UDPClientState> iter = clients.iterator();
|
|
107
|
+
while (iter.hasNext()) {
|
|
108
|
+
channel.send(buffer, iter.next().getAddress());
|
|
109
|
+
}
|
|
110
|
+
long endSynch = System.currentTimeMillis();
|
|
111
|
+
if (endSynch - beginSynch < frameDuration) {
|
|
112
|
+
int sleep = frameDuration - (int) (endSynch - beginSynch);
|
|
113
|
+
// System.out.println("sleeping: " + sleep);
|
|
114
|
+
Thread.sleep(sleep);
|
|
115
|
+
} else {
|
|
116
|
+
Thread.sleep(2);
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
} catch (Exception ex) {
|
|
120
|
+
System.err.println(ex);
|
|
121
|
+
} finally {
|
|
122
|
+
if (socket != null)
|
|
123
|
+
socket.close();
|
|
124
|
+
if (buffer != null)
|
|
125
|
+
buffer = null;
|
|
126
|
+
System.out.println("server shutdown.");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
@@ -0,0 +1,229 @@
|
|
|
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
|
+
* Modified and updated by Martin Prout December 2015
|
|
27
|
+
*/
|
|
28
|
+
|
|
29
|
+
package toxi.audio;
|
|
30
|
+
|
|
31
|
+
import java.io.ByteArrayInputStream;
|
|
32
|
+
import java.io.IOException;
|
|
33
|
+
import java.nio.ByteBuffer;
|
|
34
|
+
import com.jogamp.openal.AL;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* A wrapper for the actual sample data byte buffer in memory. The buffer can be
|
|
38
|
+
* queried to find out more information about the underlying audio data.
|
|
39
|
+
*/
|
|
40
|
+
public class AudioBuffer {
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Format descriptor
|
|
44
|
+
*/
|
|
45
|
+
public enum Format {
|
|
46
|
+
MONO8(AL.AL_FORMAT_MONO8, 8, 1), MONO16(AL.AL_FORMAT_MONO16, 16, 1), STEREO8(
|
|
47
|
+
AL.AL_FORMAT_STEREO8, 8, 2), STEREO16(AL.AL_FORMAT_STEREO16,
|
|
48
|
+
16, 2);
|
|
49
|
+
|
|
50
|
+
public static Format getForID(int id) {
|
|
51
|
+
Format format = null;
|
|
52
|
+
for (Format f : values()) {
|
|
53
|
+
if (f.id == id) {
|
|
54
|
+
format = f;
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return format;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
private final int id;
|
|
62
|
+
private final int numBits;
|
|
63
|
+
private final int numChannels;
|
|
64
|
+
|
|
65
|
+
private Format(int id, int bits, int channels) {
|
|
66
|
+
this.id = id;
|
|
67
|
+
this.numBits = bits;
|
|
68
|
+
this.numChannels = channels;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
public int getID() {
|
|
72
|
+
return id;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* @return the numBits
|
|
77
|
+
*/
|
|
78
|
+
public int getNumBits() {
|
|
79
|
+
return numBits;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* @return the numChannels
|
|
84
|
+
*/
|
|
85
|
+
public int getNumChannels() {
|
|
86
|
+
return numChannels;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
protected final AL al;
|
|
91
|
+
protected ByteBuffer data;
|
|
92
|
+
|
|
93
|
+
protected final int id;
|
|
94
|
+
|
|
95
|
+
protected final int[] alResult = new int[1];
|
|
96
|
+
protected Format format;
|
|
97
|
+
|
|
98
|
+
public AudioBuffer(AL al, int bufferID) {
|
|
99
|
+
this.id = bufferID;
|
|
100
|
+
this.al = al;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
public AudioBuffer configure(ByteBuffer data, Format format, int freq) {
|
|
104
|
+
return configure(data, format.getID(), freq);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
/**
|
|
108
|
+
* Configure the audio buffer
|
|
109
|
+
*
|
|
110
|
+
* @param data
|
|
111
|
+
* the raw audio data
|
|
112
|
+
* @param format
|
|
113
|
+
* the internal format ID of the audio data
|
|
114
|
+
* @param freq
|
|
115
|
+
* the frequency of the data
|
|
116
|
+
* @return
|
|
117
|
+
*/
|
|
118
|
+
public AudioBuffer configure(ByteBuffer data, int format, int freq) {
|
|
119
|
+
this.data = data;
|
|
120
|
+
this.format = Format.getForID(format);
|
|
121
|
+
al.alBufferData(id, format, data, data.capacity(), freq);
|
|
122
|
+
return this;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
public boolean convertUlawToPCM(boolean isAlaw) {
|
|
126
|
+
byte[] ulaw = new byte[getByteSize()];
|
|
127
|
+
data.rewind();
|
|
128
|
+
data.get(ulaw);
|
|
129
|
+
byte[] pcm = new byte[ulaw.length * 2];
|
|
130
|
+
ByteArrayInputStream bin = new ByteArrayInputStream(ulaw);
|
|
131
|
+
try {
|
|
132
|
+
new DecompressInputStream(bin, isAlaw).read(pcm);
|
|
133
|
+
configure(ByteBuffer.wrap(pcm), Format.MONO16, getFrequency());
|
|
134
|
+
return true;
|
|
135
|
+
} catch (IOException e) {
|
|
136
|
+
}
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Deletes this buffer, and frees its resources.
|
|
142
|
+
*
|
|
143
|
+
* @return true, if removed successfully
|
|
144
|
+
*/
|
|
145
|
+
public boolean delete() {
|
|
146
|
+
data = null;
|
|
147
|
+
al.alDeleteBuffers(1, new int[] { id }, 0);
|
|
148
|
+
return al.alGetError() == AL.AL_NO_ERROR;
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Get the bit-depth of the data, (8 or 16)
|
|
153
|
+
*
|
|
154
|
+
* @return the bit-depth of the data
|
|
155
|
+
*/
|
|
156
|
+
public final int getBitDepth() {
|
|
157
|
+
// al.alGetBufferi(id, AL.AL_BITS, alResult, 0);
|
|
158
|
+
// return alResult[0];
|
|
159
|
+
return format.getNumBits();
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Gets the size (in bytes) of the raw data contained in this buffer.
|
|
164
|
+
*
|
|
165
|
+
* @return the size of the data.
|
|
166
|
+
*/
|
|
167
|
+
public final int getByteSize() {
|
|
168
|
+
// al.alGetBufferi(id, AL.AL_SIZE, alResult, 0);
|
|
169
|
+
// return alResult[0];
|
|
170
|
+
return data.capacity();
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
/**
|
|
174
|
+
* Gets the raw data contained in this buffer.
|
|
175
|
+
*
|
|
176
|
+
* @return the raw buffer data.
|
|
177
|
+
*/
|
|
178
|
+
public final ByteBuffer getData() {
|
|
179
|
+
return data;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Gets the audio frequency of the data contained in this buffer.
|
|
184
|
+
*
|
|
185
|
+
* @return the frequency of the data
|
|
186
|
+
*/
|
|
187
|
+
public final int getFrequency() {
|
|
188
|
+
al.alGetBufferi(id, AL.AL_FREQUENCY, alResult, 0);
|
|
189
|
+
return alResult[0];
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
/**
|
|
193
|
+
* Returns the OpenAL reference ID for this buffer.
|
|
194
|
+
*
|
|
195
|
+
* @return buffer id
|
|
196
|
+
*/
|
|
197
|
+
public final int getID() {
|
|
198
|
+
return id;
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* Get the number of channels of the data (1-Mono, 2-Stereo)
|
|
203
|
+
*
|
|
204
|
+
* @return the number of audio channels.
|
|
205
|
+
*/
|
|
206
|
+
public final int getNumChannels() {
|
|
207
|
+
// al.alGetBufferi(id, AL.AL_CHANNELS, alResult, 0);
|
|
208
|
+
// return alResult[0];
|
|
209
|
+
return format.getNumChannels();
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* Gets the size (in samples) of the raw data contained in this buffer.
|
|
214
|
+
*
|
|
215
|
+
* @return sample size.
|
|
216
|
+
*/
|
|
217
|
+
public final int getSampleSize() {
|
|
218
|
+
return getByteSize() * 8 / getBitDepth() / getNumChannels();
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
/**
|
|
222
|
+
*
|
|
223
|
+
* @return
|
|
224
|
+
*/
|
|
225
|
+
@Override
|
|
226
|
+
public String toString() {
|
|
227
|
+
return "AudioBuffer: id=" + id + " format=" + format;
|
|
228
|
+
}
|
|
229
|
+
}
|