Пример #1
0
bool WindowsScreenGrabber::fillPixelFormat(PixelFormat *pixelFormat, const BMI *bmi)
{
  memset(pixelFormat, 0, sizeof(PixelFormat));

  pixelFormat->bitsPerPixel = bmi->bmiHeader.biBitCount;

  if (bmi->bmiHeader.biCompression == BI_BITFIELDS) {
    pixelFormat->redShift   = findFirstBit(bmi->red);
    pixelFormat->greenShift = findFirstBit(bmi->green);
    pixelFormat->blueShift  = findFirstBit(bmi->blue);

    pixelFormat->redMax   = bmi->red    >> pixelFormat->redShift;
    pixelFormat->greenMax = bmi->green  >> pixelFormat->greenShift;
    pixelFormat->blueMax  = bmi->blue   >> pixelFormat->blueShift;

  } else {
Пример #2
0
void Screen::fillPixelFormat(const BMI *bmi)
{
  memset(&m_pixelFormat, 0, sizeof(PixelFormat));

  m_pixelFormat.initBigEndianByNative();

  m_pixelFormat.bitsPerPixel = bmi->bmiHeader.biBitCount;

  if (bmi->bmiHeader.biCompression == BI_BITFIELDS) {
    m_pixelFormat.redShift   = findFirstBit(bmi->red);
    m_pixelFormat.greenShift = findFirstBit(bmi->green);
    m_pixelFormat.blueShift  = findFirstBit(bmi->blue);

    m_pixelFormat.redMax   = bmi->red    >> m_pixelFormat.redShift;
    m_pixelFormat.greenMax = bmi->green  >> m_pixelFormat.greenShift;
    m_pixelFormat.blueMax  = bmi->blue   >> m_pixelFormat.blueShift;

  } else {