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

gov.nasa.worldwind.formats.dds.BlockDXT1 Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (C) 2012 United States Government as represented by the Administrator of the
 * National Aeronautics and Space Administration.
 * All Rights Reserved.
 */
package gov.nasa.worldwind.formats.dds;

/**
 * BlockDXT1 is a data structure representing the compressed color values in a single 64 bit DXT1 block.
 * The DXT1 block contains two explicit 16 bit colors (quantized as RGB 565), which define one or two additional
 * implicit colors. If the first color is greater than the second, then two additional colors are defined for a total
 * of four. The two colors are defined as color2=(2*color0 + 1*color1)/3, and color3=(1*color0 + 2*color1)/3. If the
 * first color is less than the second color, then one additional color is defined for a total of three colors, and the
 * fourth color is interpreted as transparent black. Finally, the block contains 4x4 2 bit indices into the array of
 * four colors (one of which may be transparent black).
 * 

* From http://msdn.microsoft.com/en-us/library/bb204843(VS.85).aspx: * If 64-bit blocks - that is, format DXT1 - are used for the texture, it is possible to mix the opaque and 1-bit alpha * formats on a per-block basis within the same texture. In other words, the comparison of the unsigned integer * magnitude of color_0 and color_1 is performed uniquely for each block of 16 texels. * * @author dcollins * @version $Id: BlockDXT1.java 1171 2013-02-11 21:45:02Z dcollins $ */ public class BlockDXT1 { /** * The first color stored as a 16 bit 565 RGB color. */ public int color0; /** * The second color stored as a 16 bit 565 RGB color. */ public int color1; /** * The 4x4 block of 2 bit indices stored as a 64 bit long number. */ public long colorIndexMask; /** * Creates a new DXT1 color block with colors and indices set to 0. */ public BlockDXT1() { } public BlockDXT1(int color0, int color1, long colorIndexMask) { this.color0 = color0; this.color1 = color1; this.colorIndexMask = colorIndexMask; } /** * Returns the first color as a 16 bit 565 RGB color. * * @return 16 bit 565 RGB color. */ public int getColor0() { return this.color0; } /** * Sets the first color as a 16 bit 565 RGB color. * * @param color0 16 bit 565 RGB color. */ public void setColor0(int color0) { this.color0 = color0; } /** * Returns the second color as a 16 bit 565 RGB color. * * @return 16 bit 565 RGB color. */ public int getColor1() { return this.color1; } /** * Sets the second color as a 16 bit 565 RGB color. * * @param color1 16 bit 565 RGB color. */ public void setColor1(int color1) { this.color1 = color1; } /** * Returns the 4x4 block of 2 bit indices as a 64 bit number. * * @return 4x4 block of 2 bit indices. */ public long getColorIndexMask() { return this.colorIndexMask; } /** * Sets the 4x4 block of 2 bit indices as a 64 bit number. * * @param indexMask 4x4 block of 2 bit indices. */ public void setColorIndexMask(long indexMask) { this.colorIndexMask = indexMask; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy