56 public XRColor(Color color) { 57 setColorValues(color); 58 } 59 60 public void setColorValues(Color color) { 61 alpha = byteToXRColorValue(color.getAlpha()); 62 63 red = byteToXRColorValue( 64 (int)(color.getRed() * color.getAlpha() / 255.0)); 65 green = byteToXRColorValue( 66 (int)(color.getGreen() * color.getAlpha() / 255.0)); 67 blue = byteToXRColorValue( 68 (int)(color.getBlue() * color.getAlpha() / 255.0)); 69 } 70 71 public static int[] ARGBPrePixelToXRColors(int[] pixels) { 72 int[] colorValues = new int[pixels.length * 4]; 73 XRColor c = new XRColor(); 74 75 for (int i = 0; i < pixels.length; i++) { 76 c.setColorValues(pixels[i], true); 77 colorValues[i * 4 + 0] = c.alpha; 78 colorValues[i * 4 + 1] = c.red; 79 colorValues[i * 4 + 2] = c.green; 80 colorValues[i * 4 + 3] = c.blue; 81 } 82 83 return colorValues; 84 } 85 86 public void setColorValues(int pixel, boolean pre) { 87 long pix = XRUtils.intToULong(pixel); 88 alpha = (int) (((pix & 0xFF000000) >> 16) + 255); 89 red = (int) (((pix & 0x00FF0000) >> 8) + 255); 90 green = (int) (((pix & 0x0000FF00) >> 0) + 255); 91 blue = (int) (((pix & 0x000000FF) << 8) + 255); 92 93 if (alpha == 255) { 94 alpha = 0; 95 } 96 97 if (!pre) { 98 double alphaMult = XRUtils.XFixedToDouble(alpha); 99 this.red = (int) (red * alphaMult); 100 this.green = (int) (green * alphaMult); 101 this.blue = (int) (blue * alphaMult); 102 } 103 } 104 105 public static int byteToXRColorValue(int byteValue) { 106 int xrValue = 0; 107 108 if (byteValue != 0) { 109 if (byteValue == 255) { 110 xrValue = 0xffff; 111 } else { 112 xrValue = ((byteValue << 8) + 255); 113 } 114 } 115 116 return xrValue; 117 } 118 119 public String toString(){ 120 return "A:"+alpha+" R:"+red+" G:"+green+" B:"+blue; 121 } | 56 public XRColor(Color color) { 57 setColorValues(color); 58 } 59 60 public void setColorValues(Color color) { 61 alpha = byteToXRColorValue(color.getAlpha()); 62 63 red = byteToXRColorValue( 64 (int)(color.getRed() * color.getAlpha() / 255.0)); 65 green = byteToXRColorValue( 66 (int)(color.getGreen() * color.getAlpha() / 255.0)); 67 blue = byteToXRColorValue( 68 (int)(color.getBlue() * color.getAlpha() / 255.0)); 69 } 70 71 public static int[] ARGBPrePixelToXRColors(int[] pixels) { 72 int[] colorValues = new int[pixels.length * 4]; 73 XRColor c = new XRColor(); 74 75 for (int i = 0; i < pixels.length; i++) { 76 c.setColorValues(pixels[i]); 77 colorValues[i * 4 + 0] = c.alpha; 78 colorValues[i * 4 + 1] = c.red; 79 colorValues[i * 4 + 2] = c.green; 80 colorValues[i * 4 + 3] = c.blue; 81 } 82 83 return colorValues; 84 } 85 86 public void setColorValues(int pixel) { 87 long pix = XRUtils.intToULong(pixel); 88 alpha = (int) (((pix & 0xFF000000) >> 16) + 255); 89 red = (int) (((pix & 0x00FF0000) >> 8) + 255); 90 green = (int) (((pix & 0x0000FF00) >> 0) + 255); 91 blue = (int) (((pix & 0x000000FF) << 8) + 255); 92 93 if (alpha == 255) { 94 alpha = 0; 95 } 96 } 97 98 public static int byteToXRColorValue(int byteValue) { 99 int xrValue = 0; 100 101 if (byteValue != 0) { 102 if (byteValue == 255) { 103 xrValue = 0xffff; 104 } else { 105 xrValue = ((byteValue << 8) + 255); 106 } 107 } 108 109 return xrValue; 110 } 111 112 public String toString(){ 113 return "A:"+alpha+" R:"+red+" G:"+green+" B:"+blue; 114 } |