public void Copy(ByteImage byteImage) { byte * p = byteImage.Data(0, 0); ARGB32 *pOut = data; for (int i = 0; i < width * height; i++) { pOut->A = 255; pOut->R = pOut->G = pOut++->B = *p++; } }
public void Copy(ShortImage shortImage) { ushort *p = shortImage.Data(0, 0); ARGB32 *pOut = data; for (int i = 0; i < width * height; i++) { pOut->A = 255; pOut->R = (byte)*p; pOut->G = (byte)*p; pOut++->B = (byte)*p++; } }
public void InverseRGB() { ARGB32 *p = data; for (int i = 0; i < width * height; i++) { p->A = p->A; p->R = (byte)(255 - p->R); p->G = (byte)(255 - p->G); p->B = (byte)(255 - p->B); p++; } }
public void Copy(RGBImage rgbImage) { RGB24 * p = rgbImage.Data(0, 0); ARGB32 *pOut = data; for (int i = 0; i < width * height; i++) { pOut->A = 255; pOut->R = p->R; pOut->G = p->G; pOut++->B = p++->B; } }
public void DecimateAndReduce(ARGBImage a, int factor) { byte *output = data; for (int y = 0; y < height; y++) { ARGB32 *pa = a.Data(0, y * factor); for (int x = 0; x < width; x++) { *output++ = (*pa).R; pa += factor; } } }
public void XMirror(ARGBImage a) { ARGB32 *pOut = data; ARGB32 *pIn = a.data; for (int yy = 0; yy < height; yy++) { pIn = a.Data(width - 1, yy); for (int xx = 0; xx < width; xx++) { *pOut++ = *pIn--; } } }
public void YMirror(ARGBImage a) { ARGB32 *pOut = data; ARGB32 *pIn = a.data; for (int yy = 0; yy < height; yy++) { pIn = a.Data(0, height - yy - 1); for (int xx = 0; xx < width; xx++) { *pOut++ = *pIn++; } } }
//Converts a float depth frame into a 32-bit frame public void CopyFloatImageForGrayscaleDisplay(FloatImage floatImage, float maxVal) { float * pIn = floatImage.Data(0, 0); double multiplier = 255.0 / maxVal; ARGB32 *pOut = data; for (int i = 0; i < width * height; i++) { byte intensity = (byte)(multiplier * *pIn++);//(255 * *pIn++ / maxVal); pOut->A = 255; pOut->R = intensity; pOut->G = intensity; pOut++->B = intensity; } }
public void CopyRectangle(ARGBImage argbImage, int startX, int startY, int w, int h) { ARGB32 *pOrig = argbImage.Data(0, 0); ARGB32 *pOutOrig = data; ARGB32 *p; ARGB32 *pOut; for (int j = startY; j < h; j++) { for (int i = startX; i < w; i++) { p = pOrig + j * argbImage.Width + i; pOut = pOutOrig + j * width + i; *pOut = *p; } } }
public void CopyRectangle(ByteImage byteImage, int startX, int startY, int w, int h) { byte * pOrig = byteImage.Data(0, 0); ARGB32 *pOutOrig = data; byte * p; ARGB32 *pOut; for (int j = startY; j < h; j++) { for (int i = startX; i < w; i++) { p = pOrig + j * byteImage.Width + i; pOut = pOutOrig + j * width + i; pOut->A = 255; pOut->R = pOut->G = pOut->B = *p; } } }
public void CopyRectangle(RGBImage rgbImage, int startX, int startY, int w, int h) { RGB24 * pOrig = rgbImage.Data(0, 0); ARGB32 *pOutOrig = data; RGB24 * p; ARGB32 *pOut; for (int j = startY; j < h; j++) { for (int i = startX; i < w; i++) { p = pOrig + j * rgbImage.Width + i; pOut = pOutOrig + j * width + i; pOut->A = 255; pOut->R = p->R; pOut->G = p->G; pOut->B = p->B; } } }
public unsafe ARGBImage GenerateY(ARGBImage image, int i) { ARGB32 *p = image.Data(0, 0); for (int y = 0; y < height; y++) { // Gray code changes only one bit from one column/row to the next column/row int grayCode = y ^ (y >> 1); // pick out the bit for this image int bit = (grayCode & (1 << i)) >> i; for (int x = 0; x < width; x++) { p->R = (byte)(255 * bit); p->G = (byte)(255 * bit); p->B = (byte)(255 * bit); p->A = (byte)(255); p++; } } return(image); }
public ARGBImage(int width, int height, IntPtr dataIntPtr) : base(width, height, dataIntPtr, sizeof(ARGB32)) { data = (ARGB32 *)dataIntPtr.ToPointer(); }
public ARGBImage(int width, int height, IntPtr dataIntPtr) : base(width, height, dataIntPtr, sizeof(ARGB32)) { data = (ARGB32*)dataIntPtr.ToPointer(); }