public int NextPixel(ref JBIG2BitmapPtr ptr) { int pix; if (ptr.p == null) { pix = 0; } else if (ptr.x < 0) { ++ptr.x; pix = 0; } else { pix = (ptr.p[ptr.index] >> ptr.shift) & 1; if (++ptr.x == m_w) { ptr.p = null; } else if (ptr.shift == 0) { ++ptr.index; ptr.shift = 7; } else { --ptr.shift; } } return(pix); }
public void GetPixelPtr(int x, int y, ref JBIG2BitmapPtr ptr) { if (y < 0 || y >= m_h || x >= m_w) { ptr.p = null; } else if (x < 0) { ptr.p = m_data; ptr.index = y * m_line; ptr.shift = 7; ptr.x = x; } else { ptr.p = m_data; ptr.index = y * m_line + (x >> 3); ptr.shift = 7 - (x & 7); ptr.x = x; } }