home *** CD-ROM | disk | FTP | other *** search
- package java.awt.image;
-
- public class DirectColorModel extends ColorModel {
- private int red_mask;
- private int green_mask;
- private int blue_mask;
- private int alpha_mask;
- private int red_offset;
- private int green_offset;
- private int blue_offset;
- private int alpha_offset;
- private int red_scale;
- private int green_scale;
- private int blue_scale;
- private int alpha_scale;
- private int accum_mask;
-
- public DirectColorModel(int var1, int var2, int var3, int var4) {
- this(var1, var2, var3, var4, 0);
- }
-
- public DirectColorModel(int var1, int var2, int var3, int var4, int var5) {
- super(var1);
- this.red_mask = var2;
- this.green_mask = var3;
- this.blue_mask = var4;
- this.alpha_mask = var5;
- this.CalculateOffsets();
- }
-
- public final int getRedMask() {
- return this.red_mask;
- }
-
- public final int getGreenMask() {
- return this.green_mask;
- }
-
- public final int getBlueMask() {
- return this.blue_mask;
- }
-
- public final int getAlphaMask() {
- return this.alpha_mask;
- }
-
- private void DecomposeMask(int var1, String var2, int[] var3) {
- if ((var1 & this.accum_mask) != 0) {
- throw new IllegalArgumentException(var2 + " mask bits not unique");
- } else {
- int var4 = 0;
- int var5 = 0;
- if (var1 != 0) {
- while((var1 & 1) == 0) {
- var1 >>>= 1;
- ++var4;
- }
-
- while((var1 & 1) == 1) {
- var1 >>>= 1;
- ++var5;
- }
- }
-
- if (var1 != 0) {
- throw new IllegalArgumentException(var2 + " mask bits not contiguous");
- } else if (var4 + var5 > super.pixel_bits) {
- throw new IllegalArgumentException(var2 + " mask overflows pixel");
- } else {
- int var6;
- if (var5 < 8) {
- var6 = (1 << var5) - 1;
- } else {
- var6 = 0;
- if (var5 > 8) {
- var4 += var5 - 8;
- }
- }
-
- var3[0] = var4;
- var3[1] = var6;
- }
- }
- }
-
- private void CalculateOffsets() {
- int[] var1 = new int[2];
- this.DecomposeMask(this.red_mask, "red", var1);
- this.red_offset = var1[0];
- this.red_scale = var1[1];
- this.DecomposeMask(this.green_mask, "green", var1);
- this.green_offset = var1[0];
- this.green_scale = var1[1];
- this.DecomposeMask(this.blue_mask, "blue", var1);
- this.blue_offset = var1[0];
- this.blue_scale = var1[1];
- this.DecomposeMask(this.alpha_mask, "alpha", var1);
- this.alpha_offset = var1[0];
- this.alpha_scale = var1[1];
- }
-
- public final int getRed(int var1) {
- int var2 = (var1 & this.red_mask) >>> this.red_offset;
- if (this.red_scale != 0) {
- var2 = var2 * 255 / this.red_scale;
- }
-
- return var2;
- }
-
- public final int getGreen(int var1) {
- int var2 = (var1 & this.green_mask) >>> this.green_offset;
- if (this.green_scale != 0) {
- var2 = var2 * 255 / this.green_scale;
- }
-
- return var2;
- }
-
- public final int getBlue(int var1) {
- int var2 = (var1 & this.blue_mask) >>> this.blue_offset;
- if (this.blue_scale != 0) {
- var2 = var2 * 255 / this.blue_scale;
- }
-
- return var2;
- }
-
- public final int getAlpha(int var1) {
- if (this.alpha_mask == 0) {
- return 255;
- } else {
- int var2 = (var1 & this.alpha_mask) >>> this.alpha_offset;
- if (this.alpha_scale != 0) {
- var2 = var2 * 255 / this.alpha_scale;
- }
-
- return var2;
- }
- }
-
- public final int getRGB(int var1) {
- return this.getAlpha(var1) << 24 | this.getRed(var1) << 16 | this.getGreen(var1) << 8 | this.getBlue(var1);
- }
- }
-