JOGL v2.6.0-rc-20250706
JOGL, High-Performance Graphics Binding for Java™ (public API).
GLCapabilitiesFilter.java
Go to the documentation of this file.
1/**
2 * Copyright 2019 JogAmp Community. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without modification, are
5 * permitted provided that the following conditions are met:
6 *
7 * 1. Redistributions of source code must retain the above copyright notice, this list of
8 * conditions and the following disclaimer.
9 *
10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list
11 * of conditions and the following disclaimer in the documentation and/or other materials
12 * provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
15 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
16 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
19 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
20 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
21 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
22 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23 *
24 * The views and conclusions contained in the software and documentation are those of the
25 * authors and should not be interpreted as representing official policies, either expressed
26 * or implied, of JogAmp Community.
27 */
28
29package com.jogamp.opengl;
30
31import java.util.ArrayList;
32
33import com.jogamp.nativewindow.CapabilitiesFilter;
34
35/**
36 * Diverse reusable {@link GLCapabilitiesImmutable} list filter
37 * @see {@link CapabilitiesFilter}
38 */
40 protected GLCapabilitiesFilter() {}
41
42 public static class TestLessDepthBits<C extends GLCapabilitiesImmutable> implements Test<C> {
43 final int minDepthBits;
44 public TestLessDepthBits(final int minDepthBits) {
45 this.minDepthBits = minDepthBits;
46 }
47 public final boolean match(final C cap) {
48 return cap.getDepthBits() < minDepthBits;
49 }
50 }
51 public static class TestMoreDepthBits<C extends GLCapabilitiesImmutable> implements Test<C> {
52 final int maxDepthBits;
53 public TestMoreDepthBits(final int maxDepthBits) {
54 this.maxDepthBits = maxDepthBits;
55 }
56 public final boolean match(final C cap) {
57 return cap.getDepthBits() > maxDepthBits;
58 }
59 }
60
61 /**
62 * Filter removing all {@link GLCapabilitiesImmutable} derived elements having depth bits < {@code minDepthBits}.
63 * @param availableCaps list of {@link GLCapabilitiesImmutable} derived elements to be filtered
64 * @param minDepthBits minimum tolerated depth bits
65 * @return the list of removed {@link GLCapabilitiesImmutable} derived elements, might be of size 0 if none were removed.
66 */
67 public static <C extends GLCapabilitiesImmutable> ArrayList<C> removeLessDepthBits(final ArrayList<C> availableCaps,
68 final int minDepthBits) {
69 final ArrayList<Test<C>> criteria = new ArrayList<Test<C>>();
70 criteria.add(new TestLessDepthBits<C>(minDepthBits));
71 return CapabilitiesFilter.removeMatching(availableCaps, criteria);
72 }
73}
Diverse reusable CapabilitiesImmutable list filter.
static< C extends CapabilitiesImmutable > ArrayList< C > removeMatching(final ArrayList< C > availableCaps, final List< Test< C > > criteria)
Removing all CapabilitiesImmutable derived elements matching the given criteria Test list.
Diverse reusable GLCapabilitiesImmutable list filter.
static< C extends GLCapabilitiesImmutable > ArrayList< C > removeLessDepthBits(final ArrayList< C > availableCaps, final int minDepthBits)
Filter removing all GLCapabilitiesImmutable derived elements having depth bits < minDepthBits.
Specifies an immutable set of OpenGL capabilities.