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.
- checksums.yaml +4 -4
- data/.gitignore +16 -0
- data/CHANGELOG.md +4 -0
- data/LICENSE +675 -0
- data/README.md +12 -5
- data/Rakefile +25 -82
- 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/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 +75 -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 +44 -0
- data/examples/povmesh/ftest.rb +46 -0
- data/examples/povmesh/tentacle.rb +73 -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/lib/toxiclibs.jar +0 -0
- data/lib/toxiclibs.rb +91 -32
- data/lib/toxiclibs/version.rb +1 -1
- data/pom.xml +122 -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/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 +94 -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 +34 -0
- metadata +424 -27
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Some classes in this package have been partly inspired by & bits ported from
|
|
3
|
+
* Python code written by Tom De Smedt & Frederik De Bleser for the "colors" library
|
|
4
|
+
* of Nodebox.net.
|
|
5
|
+
*
|
|
6
|
+
* http://nodebox.net/code/index.php/Colors
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2006-2011 Karsten Schmidt
|
|
9
|
+
*
|
|
10
|
+
* This library is free software; you can redistribute it and/or
|
|
11
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
12
|
+
* License as published by the Free Software Foundation; either
|
|
13
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
14
|
+
*
|
|
15
|
+
* http://creativecommons.org/licenses/LGPL/2.1/
|
|
16
|
+
*
|
|
17
|
+
* This library is distributed in the hope that it will be useful,
|
|
18
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
20
|
+
* Lesser General Public License for more details.
|
|
21
|
+
*
|
|
22
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
23
|
+
* License along with this library; if not, write to the Free Software
|
|
24
|
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
package toxi.color.theory;
|
|
28
|
+
|
|
29
|
+
import toxi.color.ColorList;
|
|
30
|
+
import toxi.color.ReadonlyTColor;
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* A simple interface for implementing rules used to create color palettes. The
|
|
34
|
+
* library currently comes with 10 default implementations realising different
|
|
35
|
+
* color theory approaches.
|
|
36
|
+
*/
|
|
37
|
+
public interface ColorTheoryStrategy {
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Creates a new {@link ColorList} of colors for the supplied source color
|
|
41
|
+
* based on the strategy. The number of colors returned is unspecified and
|
|
42
|
+
* depends on the strategy.
|
|
43
|
+
*
|
|
44
|
+
* @param src
|
|
45
|
+
* source color
|
|
46
|
+
* @return list of matching colors created by the strategy.
|
|
47
|
+
*/
|
|
48
|
+
ColorList createListFromColor(ReadonlyTColor src);
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Returns the unique name of the strategy.
|
|
52
|
+
*
|
|
53
|
+
* @return name
|
|
54
|
+
*/
|
|
55
|
+
String getName();
|
|
56
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Some classes in this package have been partly inspired by & bits ported from
|
|
3
|
+
* Python code written by Tom De Smedt & Frederik De Bleser for the "colors" library
|
|
4
|
+
* of Nodebox.net.
|
|
5
|
+
*
|
|
6
|
+
* http://nodebox.net/code/index.php/Colors
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2006-2011 Karsten Schmidt
|
|
9
|
+
*
|
|
10
|
+
* This library is free software; you can redistribute it and/or
|
|
11
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
12
|
+
* License as published by the Free Software Foundation; either
|
|
13
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
14
|
+
*
|
|
15
|
+
* http://creativecommons.org/licenses/LGPL/2.1/
|
|
16
|
+
*
|
|
17
|
+
* This library is distributed in the hope that it will be useful,
|
|
18
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
20
|
+
* Lesser General Public License for more details.
|
|
21
|
+
*
|
|
22
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
23
|
+
* License along with this library; if not, write to the Free Software
|
|
24
|
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
package toxi.color.theory;
|
|
28
|
+
|
|
29
|
+
import toxi.color.ColorList;
|
|
30
|
+
import toxi.color.ReadonlyTColor;
|
|
31
|
+
import toxi.color.TColor;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Creates 5 additional colors in relation to the given base color:
|
|
35
|
+
* <ul>
|
|
36
|
+
* <li>a contrasting color: much darker or lighter than the original.</li>
|
|
37
|
+
* <li>a soft supporting color: lighter and less saturated.</li>
|
|
38
|
+
* <li>a contrasting complement: very dark or very light.</li>
|
|
39
|
+
* <li>the complement and</li>
|
|
40
|
+
* <li>a light supporting variant.</li>
|
|
41
|
+
* </ul>
|
|
42
|
+
*/
|
|
43
|
+
public class ComplementaryStrategy implements ColorTheoryStrategy {
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
*
|
|
47
|
+
*/
|
|
48
|
+
public static final String NAME = "complementary";
|
|
49
|
+
|
|
50
|
+
/*
|
|
51
|
+
* (non-Javadoc)
|
|
52
|
+
*
|
|
53
|
+
* @see
|
|
54
|
+
* toxi.color.ColorTheoryStrategy#createListFromcolor(toxi.color.TColor)
|
|
55
|
+
*/
|
|
56
|
+
@Override
|
|
57
|
+
public ColorList createListFromColor(ReadonlyTColor src) {
|
|
58
|
+
ColorList colors = new ColorList(src);
|
|
59
|
+
// # A contrasting color: much darker or lighter than the original.
|
|
60
|
+
TColor c = src.copy();
|
|
61
|
+
if (c.brightness() > 0.4) {
|
|
62
|
+
c.setBrightness(0.1f + c.brightness() * 0.25f);
|
|
63
|
+
} else {
|
|
64
|
+
c.setBrightness(1.0f - c.brightness() * 0.25f);
|
|
65
|
+
}
|
|
66
|
+
colors.add(c);
|
|
67
|
+
|
|
68
|
+
// A soft supporting color: lighter and less saturated.
|
|
69
|
+
c = src.copy();
|
|
70
|
+
c.lighten(0.3f);
|
|
71
|
+
c.setSaturation(0.1f + c.saturation() * 0.3f);
|
|
72
|
+
colors.add(c);
|
|
73
|
+
|
|
74
|
+
// A contrasting complement: very dark or very light.
|
|
75
|
+
c = src.getComplement();
|
|
76
|
+
if (c.brightness() > 0.3) {
|
|
77
|
+
c.setBrightness(0.1f + c.brightness() * 0.25f);
|
|
78
|
+
} else {
|
|
79
|
+
c.setBrightness(1.0f - c.brightness() * 0.25f);
|
|
80
|
+
}
|
|
81
|
+
colors.add(c);
|
|
82
|
+
|
|
83
|
+
// The complement and a light supporting variant.
|
|
84
|
+
colors.add(src.getComplement());
|
|
85
|
+
|
|
86
|
+
c = src.getComplement();
|
|
87
|
+
c.lighten(0.3f);
|
|
88
|
+
c.setSaturation(0.1f + c.saturation() * 0.25f);
|
|
89
|
+
colors.add(c);
|
|
90
|
+
return colors;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
/*
|
|
94
|
+
* (non-Javadoc)
|
|
95
|
+
*
|
|
96
|
+
* @see toxi.color.ColorTheoryStrategy#getName()
|
|
97
|
+
*/
|
|
98
|
+
@Override
|
|
99
|
+
public String getName() {
|
|
100
|
+
return NAME;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
*
|
|
105
|
+
* @return
|
|
106
|
+
*/
|
|
107
|
+
@Override
|
|
108
|
+
public String toString() {
|
|
109
|
+
return NAME;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Some classes in this package have been partly inspired by & bits ported from
|
|
3
|
+
* Python code written by Tom De Smedt & Frederik De Bleser for the "colors" library
|
|
4
|
+
* of Nodebox.net.
|
|
5
|
+
*
|
|
6
|
+
* http://nodebox.net/code/index.php/Colors
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2006-2011 Karsten Schmidt
|
|
9
|
+
*
|
|
10
|
+
* This library is free software; you can redistribute it and/or
|
|
11
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
12
|
+
* License as published by the Free Software Foundation; either
|
|
13
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
14
|
+
*
|
|
15
|
+
* http://creativecommons.org/licenses/LGPL/2.1/
|
|
16
|
+
*
|
|
17
|
+
* This library is distributed in the hope that it will be useful,
|
|
18
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
20
|
+
* Lesser General Public License for more details.
|
|
21
|
+
*
|
|
22
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
23
|
+
* License along with this library; if not, write to the Free Software
|
|
24
|
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
package toxi.color.theory;
|
|
28
|
+
|
|
29
|
+
import toxi.color.ColorList;
|
|
30
|
+
import toxi.color.ReadonlyTColor;
|
|
31
|
+
import toxi.color.TColor;
|
|
32
|
+
import toxi.math.MathUtils;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
*
|
|
36
|
+
* @author tux
|
|
37
|
+
*/
|
|
38
|
+
public class CompoundTheoryStrategy implements ColorTheoryStrategy {
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
public static final String NAME = "compound";
|
|
44
|
+
|
|
45
|
+
private static float wrap(float x, float min, float threshold,
|
|
46
|
+
float plus) {
|
|
47
|
+
if (x - min < threshold) {
|
|
48
|
+
return x + plus;
|
|
49
|
+
} else {
|
|
50
|
+
return x - min;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
private boolean isFlipped = false;
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
*
|
|
58
|
+
*/
|
|
59
|
+
public CompoundTheoryStrategy() {
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
*
|
|
65
|
+
* @param flipped
|
|
66
|
+
*/
|
|
67
|
+
public CompoundTheoryStrategy(boolean flipped) {
|
|
68
|
+
isFlipped = flipped;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/*
|
|
72
|
+
* (non-Javadoc)
|
|
73
|
+
*
|
|
74
|
+
* @see
|
|
75
|
+
* toxi.color.ColorTheoryStrategy#createListFromcolor(toxi.color.TColor)
|
|
76
|
+
*/
|
|
77
|
+
@Override
|
|
78
|
+
public ColorList createListFromColor(ReadonlyTColor src) {
|
|
79
|
+
ColorList colors = new ColorList(src);
|
|
80
|
+
int direction = isFlipped ? -1 : 1;
|
|
81
|
+
|
|
82
|
+
TColor c = src.getRotatedRYB(30 * direction);
|
|
83
|
+
c.setBrightness(wrap(c.brightness(), 0.25f, 0.6f, 0.25f));
|
|
84
|
+
colors.add(c);
|
|
85
|
+
|
|
86
|
+
c = src.getRotatedRYB(30 * direction);
|
|
87
|
+
c.setSaturation(wrap(c.saturation(), 0.4f, 0.1f, 0.4f));
|
|
88
|
+
c.setBrightness(wrap(c.brightness(), 0.4f, 0.2f, 0.4f));
|
|
89
|
+
colors.add(c);
|
|
90
|
+
|
|
91
|
+
c = src.getRotatedRYB(160 * direction);
|
|
92
|
+
c.setSaturation(wrap(c.saturation(), 0.25f, 0.1f, 0.25f));
|
|
93
|
+
c.setBrightness(MathUtils.max(0.2f, c.brightness()));
|
|
94
|
+
colors.add(c);
|
|
95
|
+
|
|
96
|
+
c = src.getRotatedRYB(150 * direction);
|
|
97
|
+
c.setSaturation(wrap(c.saturation(), 0.1f, 0.8f, 0.1f));
|
|
98
|
+
c.setBrightness(wrap(c.brightness(), 0.3f, 0.6f, 0.3f));
|
|
99
|
+
colors.add(c);
|
|
100
|
+
|
|
101
|
+
c = src.getRotatedRYB(150 * direction);
|
|
102
|
+
c.setSaturation(wrap(c.saturation(), 0.1f, 0.8f, 0.1f));
|
|
103
|
+
c.setBrightness(wrap(c.brightness(), 0.4f, 0.2f, 0.4f));
|
|
104
|
+
// colors.add(c);
|
|
105
|
+
|
|
106
|
+
return colors;
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/*
|
|
110
|
+
* (non-Javadoc)
|
|
111
|
+
*
|
|
112
|
+
* @see toxi.color.ColorTheoryStrategy#getName()
|
|
113
|
+
*/
|
|
114
|
+
@Override
|
|
115
|
+
public String getName() {
|
|
116
|
+
return NAME;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
*
|
|
121
|
+
* @return
|
|
122
|
+
*/
|
|
123
|
+
public boolean isFlipped() {
|
|
124
|
+
return isFlipped;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
*
|
|
129
|
+
* @param state
|
|
130
|
+
*/
|
|
131
|
+
public void setFlipped(boolean state) {
|
|
132
|
+
isFlipped = state;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
*
|
|
137
|
+
* @return
|
|
138
|
+
*/
|
|
139
|
+
@Override
|
|
140
|
+
public String toString() {
|
|
141
|
+
return NAME + (isFlipped ? "_flipped" : "");
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Some classes in this package have been partly inspired by & bits ported from
|
|
3
|
+
* Python code written by Tom De Smedt & Frederik De Bleser for the "colors" library
|
|
4
|
+
* of Nodebox.net.
|
|
5
|
+
*
|
|
6
|
+
* http://nodebox.net/code/index.php/Colors
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2006-2011 Karsten Schmidt
|
|
9
|
+
*
|
|
10
|
+
* This library is free software; you can redistribute it and/or
|
|
11
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
12
|
+
* License as published by the Free Software Foundation; either
|
|
13
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
14
|
+
*
|
|
15
|
+
* http://creativecommons.org/licenses/LGPL/2.1/
|
|
16
|
+
*
|
|
17
|
+
* This library is distributed in the hope that it will be useful,
|
|
18
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
20
|
+
* Lesser General Public License for more details.
|
|
21
|
+
*
|
|
22
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
23
|
+
* License along with this library; if not, write to the Free Software
|
|
24
|
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
package toxi.color.theory;
|
|
28
|
+
|
|
29
|
+
import toxi.color.ColorList;
|
|
30
|
+
import toxi.color.ReadonlyTColor;
|
|
31
|
+
import toxi.color.TColor;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
*
|
|
35
|
+
* @author tux
|
|
36
|
+
*/
|
|
37
|
+
public class LeftSplitComplementaryStrategy implements ColorTheoryStrategy {
|
|
38
|
+
|
|
39
|
+
/*
|
|
40
|
+
* (non-Javadoc)
|
|
41
|
+
*
|
|
42
|
+
* @see
|
|
43
|
+
* toxi.color.ColorTheoryStrategy#createListFromcolor(toxi.color.TColor)
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
public static final String NAME = "leftSplitComplementary";
|
|
51
|
+
|
|
52
|
+
@Override
|
|
53
|
+
public ColorList createListFromColor(ReadonlyTColor src) {
|
|
54
|
+
ReadonlyTColor left = src.getComplement().rotateRYB(-30).lighten(0.1f);
|
|
55
|
+
ColorList colors = ColorTheoryRegistry.COMPLEMENTARY
|
|
56
|
+
.createListFromColor(src);
|
|
57
|
+
for (int i = 3; i < 6; i++) {
|
|
58
|
+
TColor c = colors.get(i);
|
|
59
|
+
c.setHue(left.hue());
|
|
60
|
+
}
|
|
61
|
+
return colors;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
/*
|
|
65
|
+
* (non-Javadoc)
|
|
66
|
+
*
|
|
67
|
+
* @see toxi.color.ColorTheoryStrategy#getName()
|
|
68
|
+
*/
|
|
69
|
+
@Override
|
|
70
|
+
public String getName() {
|
|
71
|
+
return NAME;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
*
|
|
76
|
+
* @return
|
|
77
|
+
*/
|
|
78
|
+
@Override
|
|
79
|
+
public String toString() {
|
|
80
|
+
return NAME;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* Some classes in this package have been partly inspired by & bits ported from
|
|
3
|
+
* Python code written by Tom De Smedt & Frederik De Bleser for the "colors" library
|
|
4
|
+
* of Nodebox.net.
|
|
5
|
+
*
|
|
6
|
+
* http://nodebox.net/code/index.php/Colors
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2006-2011 Karsten Schmidt
|
|
9
|
+
*
|
|
10
|
+
* This library is free software; you can redistribute it and/or
|
|
11
|
+
* modify it under the terms of the GNU Lesser General Public
|
|
12
|
+
* License as published by the Free Software Foundation; either
|
|
13
|
+
* version 2.1 of the License, or (at your option) any later version.
|
|
14
|
+
*
|
|
15
|
+
* http://creativecommons.org/licenses/LGPL/2.1/
|
|
16
|
+
*
|
|
17
|
+
* This library is distributed in the hope that it will be useful,
|
|
18
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
19
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
20
|
+
* Lesser General Public License for more details.
|
|
21
|
+
*
|
|
22
|
+
* You should have received a copy of the GNU Lesser General Public
|
|
23
|
+
* License along with this library; if not, write to the Free Software
|
|
24
|
+
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
package toxi.color.theory;
|
|
28
|
+
|
|
29
|
+
import toxi.color.ColorList;
|
|
30
|
+
import toxi.color.ReadonlyTColor;
|
|
31
|
+
import toxi.color.TColor;
|
|
32
|
+
import toxi.math.MathUtils;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Creates 4 additional shades of the given color, thus creating a monochrome
|
|
36
|
+
* palette.
|
|
37
|
+
*/
|
|
38
|
+
public class MonochromeTheoryStrategy implements ColorTheoryStrategy {
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
public static final String NAME = "monochrome";
|
|
44
|
+
|
|
45
|
+
private static float wrap(float x, float min, float threshold,
|
|
46
|
+
float plus) {
|
|
47
|
+
if (x - min < threshold) {
|
|
48
|
+
return x + plus;
|
|
49
|
+
} else {
|
|
50
|
+
return x - min;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/*
|
|
55
|
+
* (non-Javadoc)
|
|
56
|
+
*
|
|
57
|
+
* @see
|
|
58
|
+
* toxi.color.ColorTheoryStrategy#createListFromcolor(toxi.color.TColor)
|
|
59
|
+
*/
|
|
60
|
+
@Override
|
|
61
|
+
public ColorList createListFromColor(ReadonlyTColor src) {
|
|
62
|
+
ColorList colors = new ColorList(src);
|
|
63
|
+
TColor c = src.copy();
|
|
64
|
+
c.setBrightness(wrap(c.brightness(), 0.5f, 0.2f, 0.3f));
|
|
65
|
+
c.setSaturation(wrap(c.saturation(), 0.3f, 0.1f, 0.3f));
|
|
66
|
+
colors.add(c);
|
|
67
|
+
|
|
68
|
+
c = src.copy();
|
|
69
|
+
c.setBrightness(wrap(c.brightness(), 0.2f, 0.2f, 0.6f));
|
|
70
|
+
colors.add(c);
|
|
71
|
+
|
|
72
|
+
c = src.copy();
|
|
73
|
+
c.setBrightness(MathUtils.max(0.2f,
|
|
74
|
+
c.brightness() + (1 - c.brightness()) * 0.2f));
|
|
75
|
+
c.setSaturation(wrap(c.saturation(), 0.3f, 0.1f, 0.3f));
|
|
76
|
+
colors.add(c);
|
|
77
|
+
|
|
78
|
+
c = src.copy();
|
|
79
|
+
c.setBrightness(wrap(c.brightness(), 0.5f, 0.2f, 0.3f));
|
|
80
|
+
colors.add(c);
|
|
81
|
+
|
|
82
|
+
return colors;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/*
|
|
86
|
+
* (non-Javadoc)
|
|
87
|
+
*
|
|
88
|
+
* @see toxi.color.ColorTheoryStrategy#getName()
|
|
89
|
+
*/
|
|
90
|
+
@Override
|
|
91
|
+
public String getName() {
|
|
92
|
+
return NAME;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
*
|
|
97
|
+
* @return
|
|
98
|
+
*/
|
|
99
|
+
@Override
|
|
100
|
+
public String toString() {
|
|
101
|
+
return NAME;
|
|
102
|
+
}
|
|
103
|
+
}
|