+++ /dev/null
-/* Copyright (C) 2000 Free Software Foundation
-
- This file is part of libgcj.
-
-This software is copyrighted work licensed under the terms of the
-Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
-details. */
-
-package gnu.gcj.xlib;
-
-import gnu.gcj.RawData;
-
-/**
- * A visual determines how a color is encoded into a pixel/bitfield
- * value. It does not determine how the pixel/bitfield value is
- * encoded into the image data.
- *
- * <p>This class encapsulates all three Xlib representations of a
- * visual.
- *
- * <ul>
- *
- * <li>int: visual id.
- *
- * <li>Visual: opaque data structure used by a lot of Xlib functions.
- *
- * <li>VisualInfo: transparent data structure that binds the visual to
- * a certain screen and depth.
- *
- * </ul>
- *
- * <p>Implementation note: This class does not examine nor manipulate
- * the Visual structure, since the X manual says the structure is
- * opaque, and that XVisualInfo should be used instead.</p>
- *
- * @author Rolf W. Rasmussen <rolfwr@ii.uib.no>
- */
-public final class Visual
-{
- public static final int VC_STATIC_GRAY = 0,
- VC_GRAY_SCALE = 1,
- VC_STATIC_COLOR = 2,
- VC_PSEUDO_COLOR = 3,
- VC_TRUE_COLOR = 4,
- VC_DIRECT_COLOR = 5;
-
- protected static final int MASK_ID = 1 << 0,
- MASK_SCREEN = 1 << 1,
- MASK_DEPTH = 1 << 2,
- MASK_CLASS = 1 << 3,
- MASK_RED = 1 << 4,
- MASK_GREEN = 1 << 5,
- MASK_BLUE = 1 << 6,
- MASK_COLORMAP_SIZE = 1 << 7,
- MASK_BITS_PER_RGB = 1 << 8;
-
- protected static final int MASK_ALL = MASK_ID
- | MASK_SCREEN
- | MASK_DEPTH
- | MASK_CLASS
- | MASK_RED
- | MASK_GREEN
- | MASK_BLUE
- | MASK_COLORMAP_SIZE
- | MASK_BITS_PER_RGB;
-
- private static final int MASK_VISUAL_STRUCTURE = 1 << 31;
-
- Display display;
- RawData xVisualInfo;
- int infoMask;
- Screen screen;
-
- Visual(RawData structure, Screen screen, int depth )
- {
- this.display = screen.getDisplay();
- this.screen = screen;
- init(structure, depth);
- }
-
- Visual(Display display, RawData structure, int depth )
- {
- this.display = display;
- init(structure, depth);
- }
-
- protected native void init(RawData structure, int depth);
-
- protected native void finalize();
-
- /**
- *
- * Returns the a reference to the visual structure. This method has
- * package accessibility since the data visual structure is only
- * useful for direct Xlib calls.
- *
- * @return a pointer to the visual structure.
- */
- native RawData getVisualStructure();
-
-
- // These methods only make sense if the visual is decomposed:
-
- public native int getRedMask();
- public native int getGreenMask();
- public native int getBlueMask();
-
- public native int getScreenNumber();
- public native int getDepth();
-
- public Screen getScreen()
- {
- if (screen == null)
- screen = new Screen(display, getScreenNumber());
- return screen;
- }
-
- public native int getVisualClass();
-
- public boolean hasRGBSubfields()
- {
- switch (getVisualClass())
- {
- case VC_TRUE_COLOR:
- case VC_DIRECT_COLOR:
- return true;
- default:
- return false;
- }
- }
-
- protected native void ensureXVisualInfo(int requiredMask);
-
-
- public String toString()
- {
- int missingInfo = ~infoMask;
- boolean hasSubfieldInfo =
- (missingInfo & (MASK_CLASS|MASK_RED|MASK_GREEN|MASK_BLUE)) == 0;
-
- boolean hasDepth = (missingInfo & MASK_DEPTH) == 0;
-
- return getClass().getName() + "[" +
- (hasDepth ? "depth=" + getDepth() : "") +
- (hasRGBSubfields() ?
- (", redMask=" + Integer.toHexString(getRedMask()) +
- ", greenMask=" + Integer.toHexString(getGreenMask()) +
- ", blueMask=" + Integer.toHexString(getBlueMask())) :
- ", no-subfields") + ", class=" + getVisualClass() +
- "]";
- }
-}