本文整理汇总了C++中CG32bitImage::NextRow方法的典型用法代码示例。如果您正苦于以下问题:C++ CG32bitImage::NextRow方法的具体用法?C++ CG32bitImage::NextRow怎么用?C++ CG32bitImage::NextRow使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CG32bitImage
的用法示例。
在下文中一共展示了CG32bitImage::NextRow方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//.........这里部分代码省略.........
*pDest++ = CG32bitPixel(byRedResult, byGreenResult, byBlueResult);
}
}
break;
}
case typeByteArray:
{
BYTE *pSrcAlpha = pSrcRow->GetByteArray() + xOffset;
BYTE *pSrcAlphaEnd = pSrcAlpha + cxTileLeft;
BYTE byColorAlpha = rgbColor.GetAlpha();
if (byColorAlpha == 0xff)
{
while (pSrcAlpha < pSrcAlphaEnd)
{
if (*pSrcAlpha == 0x00)
{}
else if (*pSrcAlpha == 0xff)
*pDest = rgbColor;
else
{
BYTE *pAlpha = CG32bitPixel::AlphaTable(*pSrcAlpha);
BYTE *pAlphaInv = CG32bitPixel::AlphaTable(*pSrcAlpha ^ 0xff);
BYTE byRedResult = pAlphaInv[pDest->GetRed()] + pAlpha[rgbColor.GetRed()];
BYTE byGreenResult = pAlphaInv[pDest->GetGreen()] + pAlpha[rgbColor.GetGreen()];
BYTE byBlueResult = pAlphaInv[pDest->GetBlue()] + pAlpha[rgbColor.GetBlue()];
*pDest = CG32bitPixel(byRedResult, byGreenResult, byBlueResult);
}
pSrcAlpha++;
pDest++;
}
}
else
{
BYTE *pAlphaFFInv = CG32bitPixel::AlphaTable(byColorAlpha ^ 0xff);
while (pSrcAlpha < pSrcAlphaEnd)
{
if (*pSrcAlpha == 0x00)
{}
else if (*pSrcAlpha == 0xff)
{
BYTE byRedResult = pAlphaFFInv[pDest->GetRed()] + rgbPreMultColor.GetRed();
BYTE byGreenResult = pAlphaFFInv[pDest->GetGreen()] + rgbPreMultColor.GetGreen();
BYTE byBlueResult = pAlphaFFInv[pDest->GetBlue()] + rgbPreMultColor.GetBlue();
*pDest = CG32bitPixel(byRedResult, byGreenResult, byBlueResult);
}
else
{
BYTE byFillAlpha = CG32bitPixel::BlendAlpha(*pSrcAlpha, byColorAlpha);
BYTE *pAlpha = CG32bitPixel::AlphaTable(byFillAlpha);
BYTE *pAlphaInv = CG32bitPixel::AlphaTable(byFillAlpha ^ 0xff);
BYTE byRedResult = pAlphaInv[pDest->GetRed()] + pAlpha[rgbColor.GetRed()];
BYTE byGreenResult = pAlphaInv[pDest->GetGreen()] + pAlpha[rgbColor.GetGreen()];
BYTE byBlueResult = pAlphaInv[pDest->GetBlue()] + pAlpha[rgbColor.GetBlue()];
*pDest = CG32bitPixel(byRedResult, byGreenResult, byBlueResult);
}
pSrcAlpha++;
pDest++;
}
}
break;
}
}
pSrcRow++;
pDestRow = Dest.NextRow(pDestRow);
}
break;
}
}
}
// Move to the next tile
xTile++;
xOffset = 0;
xPos += cxTileLeft;
xDestPos += cxTileLeft;
}
}
// Next tile row
yTile++;
yOffset = 0;
yPos += cyTileLeft;
yDestPos += cyTileLeft;
}
}