Frames | No Frames |
1: /* Copyright (C) 2000 Free Software Foundation 2: 3: This file is part of libgcj. 4: 5: This software is copyrighted work licensed under the terms of the 6: Libgcj License. Please consult the file "LIBGCJ_LICENSE" for 7: details. */ 8: 9: package gnu.gcj.xlib; 10: 11: import gnu.gcj.RawData; 12: 13: /** 14: * An X11 color map resource. 15: * 16: * @author Rolf W. Rasmussen <rolfwr@ii.uib.no> 17: */ 18: public final class Colormap extends XID 19: { 20: Screen screen; 21: 22: public static final byte FLAG_SHARED = 1; 23: public static final byte FLAG_NOT_SHARED = 2; 24: 25: public Colormap(Screen screen, int xid) 26: { 27: super(screen.getDisplay(), xid); 28: this.screen = screen; 29: } 30: 31: /** 32: * Allocate color pixel. 33: * 34: * @param color The color to be allocated. If allocation is 35: * successful, this object will be modified to reflect the actual 36: * color that was allocated. 37: * 38: * @return the pixel value of the allocated color. 39: */ 40: public native long allocateColorPixel(XColor color); 41: 42: /** 43: * Allocate a color consisting of the given RGB-triplet. 44: * 45: * @return a color object describing the allocated color. 46: */ 47: public XColor allocateColor(int r, int g, int b) 48: { 49: XColor color = new XColor(r, g, b); 50: allocateColorPixel(color); 51: 52: return color; 53: } 54: 55: /** 56: * Get an array of all colors that currently resides in shared (read 57: * only) color-cells in this color map. 58: */ 59: public native XColor[] getSharedColors(); 60: 61: 62: /** 63: * Get all colors currently residing in this color map. Colors that 64: * are shared (read only) are marked as such by the color flags. 65: * The indexes of the returned array will correspond to the 66: * colorcells of the color map. Given a color <code>XColor 67: * color</code> from a given color-cell, the expression 68: * <code>color.getFlags() == Colormap.FLAG_SHARED</code> will check 69: * whether the color-cell is shared. 70: */ 71: public native XColor[] getXColors(); 72: 73: /** 74: * Convenience method used by native code to create fully 75: * initialized arrays of XColor objects. 76: */ 77: private XColor[] newXColorArray(int n) 78: { 79: XColor[] array = new XColor[n]; 80: for (int i=0; i<n; i++) 81: array[i] = new XColor(); 82: return array; 83: } 84: }