本文整理汇总了C++中TBitmap::GetDataPtr方法的典型用法代码示例。如果您正苦于以下问题:C++ TBitmap::GetDataPtr方法的具体用法?C++ TBitmap::GetDataPtr怎么用?C++ TBitmap::GetDataPtr使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TBitmap
的用法示例。
在下文中一共展示了TBitmap::GetDataPtr方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: initWithString
bool CCImage::initWithString(
const char * pText,
int nWidth/* = 0*/,
int nHeight/* = 0*/,
ETextAlign eAlignMask/* = kAlignCenter*/,
const char * pFontName/* = nil*/,
int nSize/* = 0*/)
{
bool bRet = false;
TUChar* pWText = NULL;
do
{
CC_BREAK_IF(! pText);
int nLen = strlen(pText) + 1;
CC_BREAK_IF(! (pWText = new TUChar[nLen]));
TUString::StrGBToUnicode(pWText, (Char*)pText);
BitmapDC& dc = sharedBitmapDC();
dc.setFont(pFontName, nSize);
TSize size(nWidth, nHeight);
dc.getTextExtentPoint(pWText, nLen, size);
CC_BREAK_IF(! size.Width() || ! size.Height());
// set style
UInt32 styles = GUI_API_STYLE_SPECIFY_FORE_COLOR | GUI_API_STYLE_ROP_MODE_TRANSPARENT |
GUI_API_STYLE_CLIP_WORDWRAP | GUI_API_STYLE_SPECIFY_BACK_COLOR | GUI_API_STYLE_SPECIFY_FONT;
switch (eAlignMask)
{
case kAlignCenter:
styles |= GUI_API_STYLE_ALIGNMENT_CENTER | GUI_API_STYLE_ALIGNMENT_MIDDLE;
break;
case kAlignTop:
styles |= GUI_API_STYLE_ALIGNMENT_CENTER | GUI_API_STYLE_ALIGNMENT_TOP;
break;
case kAlignTopRight:
styles |= GUI_API_STYLE_ALIGNMENT_RIGHT | GUI_API_STYLE_ALIGNMENT_TOP;
break;
case kAlignRight:
styles |= GUI_API_STYLE_ALIGNMENT_RIGHT | GUI_API_STYLE_ALIGNMENT_MIDDLE;
break;
case kAlignBottomRight:
styles |= GUI_API_STYLE_ALIGNMENT_RIGHT | GUI_API_STYLE_ALIGNMENT_BOTTOM;
break;
case kAlignBottom:
styles |= GUI_API_STYLE_ALIGNMENT_CENTER | GUI_API_STYLE_ALIGNMENT_BOTTOM;
break;
case kAlignBottomLeft:
styles |= GUI_API_STYLE_ALIGNMENT_LEFT | GUI_API_STYLE_ALIGNMENT_BOTTOM;
break;
case kAlignLeft:
styles |= GUI_API_STYLE_ALIGNMENT_LEFT | GUI_API_STYLE_ALIGNMENT_MIDDLE;
break;
case kAlignTopLeft:
styles |= GUI_API_STYLE_ALIGNMENT_LEFT | GUI_API_STYLE_ALIGNMENT_TOP;
}
CC_BREAK_IF(! dc.drawText(pWText, nLen, size, styles));
// init image information
TBitmap * pBitmap = dc.getBitmap();
CC_BREAK_IF(! pBitmap);
INT32 nWidth = pBitmap->GetWidth();
INT32 nHeight = pBitmap->GetHeight();
CC_BREAK_IF(nWidth <= 0 || nHeight <= 0);
INT32 nDataLen = pBitmap->GetRowBytes() * nHeight;
m_pData.reset(new ccxByte[nDataLen]);
CC_BREAK_IF(! m_pData.get());
memcpy((void*) m_pData.get(), pBitmap->GetDataPtr(), nDataLen);
m_nWidth = (ccxInt16)nWidth;
m_nHeight = (ccxInt16)nHeight;
m_bHasAlpha = true;
m_bPreMulti = true;
m_nBitsPerComponent = pBitmap->GetDepth() / 4;
bRet = true;
} while (0);
if (pWText)
{
delete [] pWText;
pWText = NULL;
}
return bRet;
}