toxiclibs 0.9.1 → 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d1af28673c5330c233c143a8825eaedeec5993fc
4
- data.tar.gz: aa5198bc7f98bea0f00398adff8bf4f85e90685a
3
+ metadata.gz: d3766bf61befbcc60a27816721ef8528c930f0a5
4
+ data.tar.gz: cea30dbee7899c25c4183b78b0ab13f894f71a1d
5
5
  SHA512:
6
- metadata.gz: 200337d7250d6d0059e0860384e0ab07889d0021484cf70e5b771b3bd8daccf1328600238f41506dd3b73097196ef1732452d48da46d8f33e54b124f2f76502a
7
- data.tar.gz: cde9e87efd021494b928cb5d11027b4d1232477da608ab39987ed6393a0f2eb187fef106a50a34b54284bee5509e3b30b15ee81f2165bb619dc04b3d01c941b4
6
+ metadata.gz: 76c77948c8763555278cb9f32eb784f875ffac5388a7d337201d978c514cfbe666811efa3f600823ce2a237f665670772e64c3b380f29b4e0abf9db08d272ab2
7
+ data.tar.gz: 5e6f35deccaf8e35809cf02495b8377b606c57929b5579ef0615085c90a804f78c34f4cd1b4823ecb41058e1b2c6e1706b55fd7fab91e697ae60d094973f77b8
@@ -1,10 +1,10 @@
1
- sudo: false
2
-
3
1
  language: ruby
2
+ sudo: false
4
3
 
5
4
  rvm:
6
- - jruby-9.1.1.0
7
-
5
+ - jruby-9.1.6.0
8
6
  jdk:
9
7
  - oraclejdk8
8
+ os:
9
+ - linux
10
10
 
@@ -1,4 +1,6 @@
1
1
 
2
+ **v0.9.2** Bump processing version, removed audio, refactored color, including export to ruby string.
3
+
2
4
  **v0.9.1** Make it easier to load PerlinNoise and SimplexNoise
3
5
 
4
6
  **v0.9.0** Updated maven artifacts, somewhat arbitarily require JRubyArt-1.2+
data/README.md CHANGED
@@ -1,15 +1,17 @@
1
1
  ## Toxiclibs for JRubyArt
2
2
 
3
3
  ![travis build](https://travis-ci.org/ruby-processing/toxicgem.svg)
4
+ [![Gem Version](https://badge.fury.io/rb/toxiclibs.svg)](https://badge.fury.io/rb/toxiclibs)
4
5
 
5
6
  ### Installing
6
7
  ```bash
7
8
  gem install toxiclibs
8
9
  ```
9
10
 
10
- ### NB: Use version 0.4 for ruby-processing, and 0.8 prior to JRubyArt-1.2.0
11
+ ### NB: Use version 0.4 for ruby-processing, and 0.9.2 for propane and JRubyArt
11
12
 
12
- This gem provides Karsten Schmidts (aka toxi, @postspectacular) toxiclibs jars for JRubyArt. To compile the gem follow the instructions for [JRubyArt][]. Most parts of toxiclibs API is exposed in the latest version, (but only a few examples are included) in principle it should be possible to make all available!!! For this demonstration I have used up to date source code for version 21, since [toxis final release][] may never materialise (he's probably got more interesting things to do). There are reported to be number of outstanding bugs with toxiclibs, if they affect you report it [here][] (or better fix them yourself and submit a pull request). Version 0.9.0+ features java code updated to use java lambda (jdk8) and was compiled against processing-3.1.1 core.jar.
13
+ NB: Build is only failing because current version of processing is not available at maven central.
14
+ This gem provides Karsten Schmidts (aka toxi, @postspectacular) toxiclibs jars for JRubyArt. To compile the gem follow the instructions for [JRubyArt][]. Most parts of toxiclibs API is exposed in the latest version, (but only a few examples are included) in principle it should be possible to make all available!!! For this demonstration I have used up to date source code for version 21, since [toxis final release][] has not yet been released (although [Dan Shiffman][] has released a version for processing-3.0+). There are reported to be number of outstanding bugs with toxiclibs, if they affect you report it [here][] (or better fix them yourself and submit a pull request). Version 0.9.2 features java code updated to use java lambda (jdk8) and was compiled against processing-3.3 core.jar. The audio library was not working and has been dropped since version 0.9.2.
13
15
 
14
16
  ![grayscott image](http://4.bp.blogspot.com/-d4MiL4_0Njk/VFJMv6VUicI/AAAAAAAAEgY/fFAfrXDxNXM/s400/grayscott.png)
15
17
 
@@ -26,7 +28,7 @@ This gem provides Karsten Schmidts (aka toxi, @postspectacular) toxiclibs jars f
26
28
  ### Licensing
27
29
 
28
30
  I should be clear that the original toxiclibs is the work of Karsten Schmidt see [Copyright][]
29
-
31
+
30
32
  This demo & library is free software you can redistribute it and/or
31
33
  modify it under the terms of the GNU Lesser General Public
32
34
  License as published by the Free Software Foundation either
@@ -40,4 +42,4 @@ version 2.1 of the License, or (at your option) any later version.
40
42
  [Example Usage]:https://github.com/ruby-processing/toxicgem/tree/master/examples
41
43
  [here]:https://github.com/ruby-processing/toxiclibs/issues
42
44
  [Copyright]:https://github.com/ruby-processing/toxiclibs/COPYING.md
43
-
45
+ [Dan Shiffman]:https://github.com/shiffman/toxiclibs/tree/p3-update
@@ -0,0 +1,46 @@
1
+ require 'toxiclibs'
2
+ load_library :control_panel
3
+ attr_reader :gfx, :bool, :panel, :type, :hide, :polies
4
+ include Toxi
5
+
6
+ TYPE = [BooleanShapeBuilder::Type::UNION, BooleanShapeBuilder::Type::XOR]
7
+ KEY = %w(union xor).freeze
8
+
9
+ def setup
10
+ sketch_title 'Boolean Shapes'
11
+ @gfx = Gfx::ToxiclibsSupport.new(self)
12
+ @bool = KEY.zip(TYPE).to_h
13
+ control_panel do |c|
14
+ c.title = 'Control Panel'
15
+ c.menu :type, KEY, 'union'
16
+ @panel = c
17
+ end
18
+ @hide = false
19
+ end
20
+
21
+ def draw
22
+ unless hide
23
+ @hide = true
24
+ panel.set_visible(hide)
25
+ end
26
+ background(160)
27
+ builder = BooleanShapeBuilder.new(bool[type])
28
+ phi = frame_count * 0.01
29
+ builder.add_shape(Circle.new(mouse_x, mouse_y, 50))
30
+ builder.add_shape(Ellipse.new(150, 130 + sin(phi) * 50, 120, 60))
31
+ builder.add_shape(Rect.new(200 + sin(phi * 13 / 8) * 50, 180, 100, 100))
32
+ builder.add_shape(Triangle2D.create_equilateral_from(
33
+ TVec2D.new(50 + sin(phi * 15 / 13) * 50, 200), TVec2D.new(300, 200))
34
+ )
35
+ builder.add_shape(
36
+ Circle.new(100, 300, 50 + 30 * sin(phi * 21 / 15)).toPolygon2D(6)
37
+ )
38
+ fill(125)
39
+ stroke(255, 0, 0)
40
+ @polies = builder.compute_shapes
41
+ polies.each { |p| gfx.polygon2D(p) }
42
+ end
43
+
44
+ def settings
45
+ size(400, 400)
46
+ end
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Toxiclibs
3
- VERSION = '0.9.1'.freeze
3
+ VERSION = '0.9.2'.freeze
4
4
  end
data/pom.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  project 'toxiclibs' do
2
2
 
3
3
  model_version '4.0.0'
4
- id 'ruby-processing:toxiclibs:0.9.1'
4
+ id 'ruby-processing:toxiclibs:0.9.2'
5
5
  packaging 'jar'
6
6
 
7
7
  description 'toxiclibs-library for JRubyArt'
@@ -28,9 +28,8 @@ project 'toxiclibs' do
28
28
  'polyglot.dump.pom' => 'pom.xml'
29
29
  )
30
30
 
31
- jar 'org.jogamp.joal:joal-main:2.3.1'
32
31
  jar 'args4j:args4j:2.0.31'
33
- jar 'org.processing:core:3.2.1'
32
+ jar 'org.processing:core:3.3.0'
34
33
 
35
34
  plugin( :compiler, '3.5.1',
36
35
  'source' => '1.8',
@@ -46,11 +45,6 @@ project 'toxiclibs' do
46
45
  'artifactId' => 'args4j',
47
46
  'version' => '2.0.31',
48
47
  'type' => 'jar',
49
- 'outputDirectory' => 'lib' },
50
- { 'groupId' => 'org.jogamp.joal',
51
- 'artifactId' => 'joal',
52
- 'version' => '2.3.1',
53
- 'type' => 'jar',
54
48
  'outputDirectory' => 'lib' } ] )
55
49
  end
56
50
 
data/pom.xml CHANGED
@@ -11,7 +11,7 @@ DO NOT MODIFIY - GENERATED CODE
11
11
  <modelVersion>4.0.0</modelVersion>
12
12
  <groupId>ruby-processing</groupId>
13
13
  <artifactId>toxiclibs</artifactId>
14
- <version>0.9.1</version>
14
+ <version>0.9.2</version>
15
15
  <name>toxiclibs</name>
16
16
  <description>toxiclibs-library for JRubyArt</description>
17
17
  <organization>
@@ -50,11 +50,6 @@ DO NOT MODIFIY - GENERATED CODE
50
50
  <maven.compiler.target>1.8</maven.compiler.target>
51
51
  </properties>
52
52
  <dependencies>
53
- <dependency>
54
- <groupId>org.jogamp.joal</groupId>
55
- <artifactId>joal-main</artifactId>
56
- <version>2.3.1</version>
57
- </dependency>
58
53
  <dependency>
59
54
  <groupId>args4j</groupId>
60
55
  <artifactId>args4j</artifactId>
@@ -63,7 +58,7 @@ DO NOT MODIFIY - GENERATED CODE
63
58
  <dependency>
64
59
  <groupId>org.processing</groupId>
65
60
  <artifactId>core</artifactId>
66
- <version>3.2.1</version>
61
+ <version>3.3.0</version>
67
62
  </dependency>
68
63
  </dependencies>
69
64
  <build>
@@ -107,13 +102,6 @@ DO NOT MODIFIY - GENERATED CODE
107
102
  <type>jar</type>
108
103
  <outputDirectory>lib</outputDirectory>
109
104
  </artifactItem>
110
- <artifactItem>
111
- <groupId>org.jogamp.joal</groupId>
112
- <artifactId>joal</artifactId>
113
- <version>2.3.1</version>
114
- <type>jar</type>
115
- <outputDirectory>lib</outputDirectory>
116
- </artifactItem>
117
105
  </artifactItems>
118
106
  </configuration>
119
107
  </execution>
@@ -0,0 +1,66 @@
1
+
2
+ import processing.core.*;
3
+
4
+ import toxi.geom.*;
5
+ import toxi.processing.*;
6
+ import toxi.color.*;
7
+ import java.util.List;
8
+
9
+ public class BooleanShapes extends PApplet {
10
+
11
+ ToxiclibsSupport gfx;
12
+
13
+ @Override
14
+ public void setup() {
15
+
16
+ gfx = new ToxiclibsSupport(this);
17
+ }
18
+
19
+ @Override
20
+ public void draw() {
21
+ background(160);
22
+ BooleanShapeBuilder builder = new BooleanShapeBuilder(
23
+ BooleanShapeBuilder.Type.XOR);
24
+ float phi = frameCount * 0.01f;
25
+ builder.addShape(new Circle(mouseX, mouseY, 50));
26
+ builder.addShape(new Ellipse(150, 130 + sin(phi) * 50, 120, 60));
27
+ builder.addShape(new Rect(200 + sin(phi * 13 / 8) * 50, 180, 100, 100));
28
+ builder.addShape(Triangle2D.createEquilateralFrom(new Vec2D(
29
+ 50 + sin(phi * 15 / 13) * 50, 200), new Vec2D(300, 200)));
30
+ builder.addShape(new Circle(100, 300, 50 + 30 * sin(phi * 21 / 15))
31
+ .toPolygon2D(6));
32
+ noFill();
33
+ stroke(255, 0, 0);
34
+ List<Polygon2D> polies = builder.computeShapes();
35
+ polies.forEach((p) -> {
36
+ gfx.polygon2D(p);
37
+ });
38
+ noStroke();
39
+ Vec2D p = new Vec2D();
40
+ for (int y = 10; y < height; y += 20) {
41
+ for (int x = 10; x < height; x += 20) {
42
+ gfx.fill(pointInShapes(p.set(x, y), polies) ? TColor.GREEN
43
+ : TColor.BLUE);
44
+ gfx.circle(p, 3);
45
+ }
46
+ }
47
+ }
48
+
49
+ public boolean pointInShapes(Vec2D p, List<Polygon2D> polies) {
50
+ return polies.stream().anyMatch((poly) -> (poly.containsPoint(p)));
51
+ }
52
+
53
+ @Override
54
+ public void settings() {
55
+ size(400, 400);
56
+ }
57
+
58
+ static public void main(String[] passedArgs) {
59
+ String[] appletArgs = new String[]{"BooleanShapes"};
60
+ if (passedArgs != null) {
61
+ PApplet.main(concat(appletArgs, passedArgs));
62
+ } else {
63
+ PApplet.main(appletArgs);
64
+ }
65
+ }
66
+ }
@@ -2,23 +2,23 @@
2
2
  * Some classes in this package have been partly inspired by & bits ported from
3
3
  * Python code written by Tom De Smedt & Frederik De Bleser for the "colors" library
4
4
  * of Nodebox.net.
5
- *
5
+ *
6
6
  * http://nodebox.net/code/index.php/Colors
7
7
  *
8
8
  * Copyright (c) 2006-2011 Karsten Schmidt
9
- *
9
+ *
10
10
  * This library is free software; you can redistribute it and/or
11
11
  * modify it under the terms of the GNU Lesser General Public
12
12
  * License as published by the Free Software Foundation; either
13
13
  * version 2.1 of the License, or (at your option) any later version.
14
- *
14
+ *
15
15
  * http://creativecommons.org/licenses/LGPL/2.1/
16
- *
16
+ *
17
17
  * This library is distributed in the hope that it will be useful,
18
18
  * but WITHOUT ANY WARRANTY; without even the implied warranty of
19
19
  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
20
20
  * Lesser General Public License for more details.
21
- *
21
+ *
22
22
  * You should have received a copy of the GNU Lesser General Public
23
23
  * License along with this library; if not, write to the Free Software
24
24
  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
@@ -45,7 +45,7 @@ import toxi.math.MathUtils;
45
45
  * are also created when working with {@link ColorRange}s. The class has various
46
46
  * methods to manipulate all colors in the list in parallel, as well as sort
47
47
  * them by various criteria.
48
- *
48
+ *
49
49
  * @see ColorRange
50
50
  * @see AccessCriteria
51
51
  */
@@ -56,7 +56,7 @@ public class ColorList implements Iterable<TColor> {
56
56
  * ARGB image array. If the number of samples equals or exceeds the number
57
57
  * of pixels in the image and no unique colors are required, the function
58
58
  * will simply return the same as {@link #ColorList(int[])}.
59
- *
59
+ *
60
60
  * @param pixels
61
61
  * int array of ARGB pixels
62
62
  * @param num
@@ -78,7 +78,7 @@ public class ColorList implements Iterable<TColor> {
78
78
  * the number of pixels in the source image and no unique colors are
79
79
  * required, the function will simply return the same as
80
80
  * {@link #ColorList(int[])}.
81
- *
81
+ *
82
82
  * @param pixels
83
83
  * int array of ARGB pixels
84
84
  * @param num
@@ -127,7 +127,7 @@ public class ColorList implements Iterable<TColor> {
127
127
  * Factory method. Creates a new ColorList based on the given
128
128
  * {@link ColorTheoryStrategy} instance and the given source color. The
129
129
  * number of colors returned will vary with the strategy chosen.
130
- *
130
+ *
131
131
  * @param strategy
132
132
  * @param c
133
133
  * @return new list
@@ -140,7 +140,7 @@ public class ColorList implements Iterable<TColor> {
140
140
  /**
141
141
  * Factory method. Creates a ColorList based on the name of a
142
142
  * {@link ColorTheoryStrategy} and the given source color.
143
- *
143
+ *
144
144
  * @param name
145
145
  * strategy name
146
146
  * @param c
@@ -174,7 +174,7 @@ public class ColorList implements Iterable<TColor> {
174
174
  /**
175
175
  * Creates a ColorList by wrapping the given ArrayList of colors. No copies
176
176
  * of the given colors are created (shallow copy only).
177
- *
177
+ *
178
178
  * @param colors
179
179
  */
180
180
  public ColorList(Collection<TColor> colors) {
@@ -185,7 +185,7 @@ public class ColorList implements Iterable<TColor> {
185
185
  /**
186
186
  * Creates a deep copy of the given ColorList. Manipulating the new list or
187
187
  * its color entries does NOT change the colors of the original.
188
- *
188
+ *
189
189
  * @param list
190
190
  * source list to copy
191
191
  */
@@ -199,7 +199,7 @@ public class ColorList implements Iterable<TColor> {
199
199
  /**
200
200
  * Creates a new color list from the array of ARGB int values. In most cases
201
201
  * this will be the pixel buffer of an image.
202
- *
202
+ *
203
203
  * @param argbArray
204
204
  */
205
205
  public ColorList(int[] argbArray) {
@@ -213,18 +213,18 @@ public class ColorList implements Iterable<TColor> {
213
213
  * Creates new ColorList from the given colors. Copies of the given colors
214
214
  * are created. This is a varargs constructor allowing these two parameter
215
215
  * formats:
216
- *
216
+ *
217
217
  * <pre>
218
218
  * // individual parameters
219
219
  * ColorList cols=new ColorList(TColor.BLACK,TColor.WHITE,TColor.newRGB(1,0,0));
220
- *
220
+ *
221
221
  * // or array of colors
222
222
  * ReadonlyTColor[] colArray=new ReadonlyTColor[] {
223
223
  * TColor.BLACK,TColor.WHITE,TColor.newRGB(1,0,0);
224
224
  * };
225
225
  * ColorList cols=new ColorList(colArray);
226
226
  * </pre>
227
- *
227
+ *
228
228
  * @param colorArray
229
229
  */
230
230
  public ColorList(ReadonlyTColor... colorArray) {
@@ -236,7 +236,7 @@ public class ColorList implements Iterable<TColor> {
236
236
 
237
237
  /**
238
238
  * Adds a copy of the given color to the list
239
- *
239
+ *
240
240
  * @param c
241
241
  * @return itself
242
242
  */
@@ -248,7 +248,7 @@ public class ColorList implements Iterable<TColor> {
248
248
  /**
249
249
  * Adds all entries of the TColor collection to the list (shallow copy only,
250
250
  * manipulating the new list will modify the original colors).
251
- *
251
+ *
252
252
  * @param collection
253
253
  * @return itself
254
254
  */
@@ -259,36 +259,36 @@ public class ColorList implements Iterable<TColor> {
259
259
 
260
260
  /**
261
261
  * Adjusts the brightness component of all list colors by the given amount.
262
- *
262
+ *
263
263
  * @param step
264
264
  * adjustment value
265
265
  * @return itself
266
266
  */
267
267
  public ColorList adjustBrightness(float step) {
268
- for (TColor c : colors) {
268
+ colors.forEach((c) -> {
269
269
  c.lighten(step);
270
- }
270
+ });
271
271
  return this;
272
272
  }
273
273
 
274
274
  /**
275
275
  * Adjusts the saturation component of all list colors by the given amount.
276
- *
276
+ *
277
277
  * @param step
278
278
  * adjustment value
279
279
  * @return itself
280
280
  */
281
281
  public ColorList adjustSaturation(float step) {
282
- for (TColor c : colors) {
282
+ colors.forEach((c) -> {
283
283
  c.saturate(step);
284
- }
284
+ });
285
285
  return this;
286
286
  }
287
287
 
288
288
  /**
289
289
  * Sorts the list based on two criteria to create clusters/segments within
290
290
  * the list.
291
- *
291
+ *
292
292
  * @param clusterCriteria
293
293
  * main sort criteria
294
294
  * @param subClusterCriteria
@@ -334,30 +334,25 @@ public class ColorList implements Iterable<TColor> {
334
334
 
335
335
  /**
336
336
  * Switches all list colors to their complementary color.
337
- *
337
+ *
338
338
  * @return itself
339
339
  */
340
340
  public ColorList complement() {
341
- for (TColor c : colors) {
341
+ colors.forEach((c) -> {
342
342
  c.complement();
343
- }
343
+ });
344
344
  return this;
345
345
  }
346
346
 
347
347
  /**
348
348
  * Checks if the given color is part of the list. Check is done by value,
349
349
  * not instance.
350
- *
350
+ *
351
351
  * @param color
352
352
  * @return true, if the color is present.
353
353
  */
354
354
  public boolean contains(ReadonlyTColor color) {
355
- for (ReadonlyTColor c : colors) {
356
- if (c.equals(color)) {
357
- return true;
358
- }
359
- }
360
- return false;
355
+ return colors.stream().anyMatch((c) -> (c.equals(color)));
361
356
  }
362
357
 
363
358
  /**
@@ -365,7 +360,7 @@ public class ColorList implements Iterable<TColor> {
365
360
  * convention, in that if the index is negative, it is considered relative
366
361
  * to the list end. Therefore the color at index -1 is the last color in the
367
362
  * list.
368
- *
363
+ *
369
364
  * @param i
370
365
  * index
371
366
  * @return color
@@ -379,7 +374,7 @@ public class ColorList implements Iterable<TColor> {
379
374
 
380
375
  /**
381
376
  * Calculates and returns the average color of the list.
382
- *
377
+ *
383
378
  * @return average color or null, if there're no entries yet.
384
379
  */
385
380
  public ReadonlyTColor getAverage() {
@@ -404,7 +399,7 @@ public class ColorList implements Iterable<TColor> {
404
399
  /**
405
400
  * Creates a new ColorList by blending all colors in the list with each
406
401
  * other (successive indices only)
407
- *
402
+ *
408
403
  * @param amount
409
404
  * blend amount
410
405
  * @return new color list
@@ -420,7 +415,7 @@ public class ColorList implements Iterable<TColor> {
420
415
 
421
416
  /**
422
417
  * Finds and returns the darkest color of the list.
423
- *
418
+ *
424
419
  * @return darkest color or null if there're no entries yet.
425
420
  */
426
421
  public TColor getDarkest() {
@@ -438,7 +433,7 @@ public class ColorList implements Iterable<TColor> {
438
433
 
439
434
  /**
440
435
  * Finds and returns the lightest (luminance) color of the list.
441
- *
436
+ *
442
437
  * @return lightest color or null, if there're no entries yet.
443
438
  */
444
439
  public ReadonlyTColor getLightest() {
@@ -464,7 +459,7 @@ public class ColorList implements Iterable<TColor> {
464
459
 
465
460
  /**
466
461
  * Returns a reversed copy of the current list.
467
- *
462
+ *
468
463
  * @return reversed copy of the list
469
464
  */
470
465
  public ColorList getReverse() {
@@ -473,20 +468,35 @@ public class ColorList implements Iterable<TColor> {
473
468
 
474
469
  /**
475
470
  * Inverts all colors in the list.
476
- *
471
+ *
477
472
  * @return itself
478
473
  */
479
474
  public ColorList invert() {
480
- for (TColor c : colors) {
475
+ colors.forEach((c) -> {
481
476
  c.invert();
482
- }
477
+ });
483
478
  return this;
484
479
  }
485
480
 
481
+
482
+ public String toRubyString() {
483
+ StringBuilder ruby = new StringBuilder("%w(");
484
+ colors.stream().map((c) -> {
485
+ ruby.append('#');
486
+ ruby.append(c.toHex());
487
+ return c;
488
+ }).forEachOrdered((_item) -> {
489
+ ruby.append(' ');
490
+ });
491
+ ruby.deleteCharAt(ruby.length() - 1);
492
+ ruby.append(")\n");
493
+ return ruby.toString();
494
+ }
495
+
486
496
  /**
487
497
  * Returns an iterator over the internal list. This means the list can be
488
498
  * accessed via standard Iterator loops.
489
- *
499
+ *
490
500
  * @return list iterator
491
501
  */
492
502
  @Override
@@ -496,7 +506,7 @@ public class ColorList implements Iterable<TColor> {
496
506
 
497
507
  /**
498
508
  * Reverses the current order of the list.
499
- *
509
+ *
500
510
  * @return itself
501
511
  */
502
512
  public ColorList reverse() {
@@ -506,7 +516,7 @@ public class ColorList implements Iterable<TColor> {
506
516
 
507
517
  /**
508
518
  * Rotates the hues of all colors in the list by the given amount.
509
- *
519
+ *
510
520
  * @param theta
511
521
  * rotation angle in radians
512
522
  * @return itself
@@ -518,7 +528,7 @@ public class ColorList implements Iterable<TColor> {
518
528
 
519
529
  /**
520
530
  * Rotates the hues of all colors in the list by the given amount.
521
- *
531
+ *
522
532
  * @param angle
523
533
  * rotation angle in degrees
524
534
  * @return itself
@@ -527,17 +537,17 @@ public class ColorList implements Iterable<TColor> {
527
537
  rotateImplementation(angle);
528
538
  return this;
529
539
  }
530
-
540
+
531
541
  /**
532
542
  * Rotates the hues of all colors in the list by the given amount.
533
- *
543
+ *
534
544
  * @param angle
535
545
  * rotation angle in degrees
536
546
  */
537
547
  private void rotateImplementation(float angle) {
538
- for (TColor c : colors) {
548
+ colors.forEach((c) -> {
539
549
  c.rotateRYB(angle);
540
- }
550
+ });
541
551
  }
542
552
 
543
553
  /**
@@ -549,7 +559,7 @@ public class ColorList implements Iterable<TColor> {
549
559
 
550
560
  /**
551
561
  * Convenience method. Sorts the list by hue.
552
- *
562
+ *
553
563
  * @return itself
554
564
  */
555
565
  public ColorList sort() {
@@ -558,7 +568,7 @@ public class ColorList implements Iterable<TColor> {
558
568
 
559
569
  /**
560
570
  * Sorts the list using the given comparator.
561
- *
571
+ *
562
572
  * @param comp
563
573
  * comparator
564
574
  * @param isReversed
@@ -576,7 +586,7 @@ public class ColorList implements Iterable<TColor> {
576
586
 
577
587
  /**
578
588
  * Sorts the list using the given {@link AccessCriteria}.
579
- *
589
+ *
580
590
  * @param criteria
581
591
  * sort criteria
582
592
  * @param isReversed
@@ -590,7 +600,7 @@ public class ColorList implements Iterable<TColor> {
590
600
  /**
591
601
  * Sorts the list by relative distance to each predecessor, starting with
592
602
  * the darkest color in the list.
593
- *
603
+ *
594
604
  * @param isReversed
595
605
  * true, if list is to be sorted in reverse.
596
606
  * @return itself
@@ -602,7 +612,7 @@ public class ColorList implements Iterable<TColor> {
602
612
  /**
603
613
  * Sorts the list by relative distance to each predecessor, starting with
604
614
  * the darkest color in the list.
605
- *
615
+ *
606
616
  * @param proxy
607
617
  * @param isReversed
608
618
  * true, if list is to be sorted in reverse.
@@ -653,7 +663,7 @@ public class ColorList implements Iterable<TColor> {
653
663
  /**
654
664
  * Sorts the list by proximity to the given target color (using RGB distance
655
665
  * metrics).
656
- *
666
+ *
657
667
  * @see #sortByProximityTo(ReadonlyTColor, DistanceProxy, boolean)
658
668
  * @param target
659
669
  * color
@@ -668,7 +678,7 @@ public class ColorList implements Iterable<TColor> {
668
678
  /**
669
679
  * Sorts the list by proximity to the given target color using the given
670
680
  * {@link DistanceProxy} implementation.
671
- *
681
+ *
672
682
  * @param target
673
683
  * color
674
684
  * @param proxy
@@ -685,7 +695,7 @@ public class ColorList implements Iterable<TColor> {
685
695
 
686
696
  /**
687
697
  * Creates an ARGB integer array of the list items.
688
- *
698
+ *
689
699
  * @return all list colors as ARGB values
690
700
  */
691
701
  public int[] toARGBArray() {