All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jogamp.nativewindow.VisualIDHolder Maven / Gradle / Ivy

The newest version!
/**
 * Copyright 2012 JogAmp Community. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without modification, are
 * permitted provided that the following conditions are met:
 *
 *    1. Redistributions of source code must retain the above copyright notice, this list of
 *       conditions and the following disclaimer.
 *
 *    2. Redistributions in binary form must reproduce the above copyright notice, this list
 *       of conditions and the following disclaimer in the documentation and/or other materials
 *       provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY JogAmp Community ``AS IS'' AND ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL JogAmp Community OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * The views and conclusions contained in the software and documentation are those of the
 * authors and should not be interpreted as representing official policies, either expressed
 * or implied, of JogAmp Community.
 */

package com.jogamp.nativewindow;

import java.util.Comparator;

/**
 * Visual ID holder interface.
 * 

* Allows queries of different types of native visual IDs, * see {@link #getVisualID(int)}. *

*/ public interface VisualIDHolder { public enum VIDType { // Generic Values INTRINSIC(0), NATIVE(1), // EGL Values EGL_CONFIG(10), // X11 Values X11_XVISUAL(20), X11_FBCONFIG(21), // Windows Values WIN32_PFD(30); public final int id; VIDType(final int id){ this.id = id; } } /** * Returns the native visual ID of the given type * if supported, or {@link #VID_UNDEFINED} if not supported. *

* Depending on the native windowing system, type is handled as follows: *

    *
  • X11 throws NativeWindowException on EGL_CONFIG, WIN32_PFD *
      *
    • INTRINSIC: X11 XVisual ID
    • *
    • NATIVE: X11 XVisual ID
    • *
    • X11_XVISUAL: X11 XVisual ID
    • *
    • X11_FBCONFIG: VID_UNDEFINED
    • *
  • *
  • X11/GL throws NativeWindowException on EGL_CONFIG, WIN32_PFD *
      *
    • INTRINSIC: X11 XVisual ID
    • *
    • NATIVE: X11 XVisual ID
    • *
    • X11_XVISUAL: X11 XVisual ID
    • *
    • X11_FBCONFIG: X11 FBConfig ID or VID_UNDEFINED
    • *
  • *
  • Windows/GL throws NativeWindowException on EGL_CONFIG, X11_XVISUAL, X11_FBCONFIG *
      *
    • INTRINSIC: Win32 PIXELFORMATDESCRIPTOR ID
    • *
    • NATIVE: Win32 PIXELFORMATDESCRIPTOR ID
    • *
    • WIN32_PFD: Win32 PIXELFORMATDESCRIPTOR ID
    • *
  • *
  • EGL/GL throws NativeWindowException on X11_XVISUAL, X11_FBCONFIG, WIN32_PFD *
      *
    • INTRINSIC: EGL Config ID
    • *
    • NATIVE: EGL NativeVisual ID (X11 XVisual ID, Win32 PIXELFORMATDESCRIPTOR ID, ...)
    • *
    • EGL_CONFIG: EGL Config ID
    • *
  • *
*

* Note: INTRINSIC and NATIVE are always handled, * but may result in {@link #VID_UNDEFINED}. The latter is true if * the native value are actually undefined or the corresponding object is not * mapped to a native visual object. * * @throws NativeWindowException if type is neither * INTRINSIC nor NATIVE * and does not match the native implementation. */ int getVisualID(VIDType type) throws NativeWindowException ; /** * {@link #getVisualID(VIDType)} result indicating an undefined value, * which could be cause by an unsupported query. *

* We assume the const value 0 doesn't reflect a valid native visual ID * and is interpreted as no value on all platforms. * This is currently true for Android, X11 and Windows. *

*/ static final int VID_UNDEFINED = 0; /** Comparing {@link VIDType#NATIVE} */ public static class VIDComparator implements Comparator { private final VIDType type; public VIDComparator(final VIDType type) { this.type = type; } @Override public int compare(final VisualIDHolder vid1, final VisualIDHolder vid2) { final int id1 = vid1.getVisualID(type); final int id2 = vid2.getVisualID(type); if(id1 > id2) { return 1; } else if(id1 < id2) { return -1; } return 0; } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy