本文整理汇总了C++中BRegion::FrameInt方法的典型用法代码示例。如果您正苦于以下问题:C++ BRegion::FrameInt方法的具体用法?C++ BRegion::FrameInt怎么用?C++ BRegion::FrameInt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BRegion
的用法示例。
在下文中一共展示了BRegion::FrameInt方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1:
void
BGLView::DirectConnected(direct_buffer_info *info)
{
if (!fClipInfo/* && m_direct_connection_disabled*/) {
fClipInfo = new glview_direct_info();
}
glview_direct_info *glviewDirectInfo = (glview_direct_info *)fClipInfo;
direct_buffer_info *localInfo = glviewDirectInfo->direct_info;
switch(info->buffer_state & B_DIRECT_MODE_MASK) {
case B_DIRECT_START:
glviewDirectInfo->direct_connected = true;
_UnlockDraw();
case B_DIRECT_MODIFY:
{
_LockDraw();
localInfo->buffer_state = info->buffer_state;
localInfo->driver_state = info->driver_state;
localInfo->bits = info->bits;
localInfo->pci_bits = info->pci_bits;
localInfo->bytes_per_row = info->bytes_per_row;
localInfo->bits_per_pixel = info->bits_per_pixel;
localInfo->pixel_format = info->pixel_format;
localInfo->layout = info->layout;
localInfo->orientation = info->orientation;
//memcpy(&localInfo->_reserved, info->_reserved, sizeof(info->_reserved));
//localInfo->_dd_type_ = info->_dd_type_;
//localInfo->_dd_token_ = info->_dd_token_;
// Collect the rects into a BRegion, then clip to the view's bounds
BRegion region;
for (uint32 c = 0; c < info->clip_list_count; c++)
region.Include(info->clip_list[c]);
BRegion boundsRegion = fBounds.OffsetByCopy(info->window_bounds.left, info->window_bounds.top);
localInfo->window_bounds = boundsRegion.RectAtInt(0); // window_bounds are now view bounds
region.IntersectWith(&boundsRegion);
localInfo->clip_list_count = region.CountRects();
localInfo->clip_bounds = region.FrameInt();
for (uint32 c = 0; c < localInfo->clip_list_count; c++)
localInfo->clip_list[c] = region.RectAtInt(c);
_UnlockDraw();
break;
}
case B_DIRECT_STOP:
glviewDirectInfo->direct_connected = false;
_LockDraw();
break;
}
if (fRenderer)
fRenderer->DirectConnected(localInfo);
}
示例2: _SyncronizeWithClient
status_t
DirectWindowInfo::SetState(direct_buffer_state bufferState,
direct_driver_state driverState, RenderingBuffer* buffer,
const BRect& windowFrame, const BRegion& clipRegion)
{
if ((fBufferInfo->buffer_state & B_DIRECT_MODE_MASK) == B_DIRECT_STOP
&& (bufferState & B_DIRECT_MODE_MASK) != B_DIRECT_START)
return B_OK;
fBufferInfo->buffer_state = bufferState;
if (driverState != -1)
fBufferInfo->driver_state = driverState;
if ((bufferState & B_DIRECT_MODE_MASK) != B_DIRECT_STOP) {
fBufferInfo->bits = buffer->Bits();
fBufferInfo->pci_bits = NULL; // TODO
fBufferInfo->bytes_per_row = buffer->BytesPerRow();
switch (buffer->ColorSpace()) {
case B_RGB32:
case B_RGBA32:
case B_RGB32_BIG:
case B_RGBA32_BIG:
fBufferInfo->bits_per_pixel = 32;
break;
case B_RGB24:
case B_RGB24_BIG:
fBufferInfo->bits_per_pixel = 24;
break;
case B_RGB16:
case B_RGB16_BIG:
case B_RGB15:
case B_RGB15_BIG:
fBufferInfo->bits_per_pixel = 16;
break;
case B_CMAP8:
case B_GRAY8:
fBufferInfo->bits_per_pixel = 8;
break;
default:
syslog(LOG_ERR,
"unknown colorspace in DirectWindowInfo::SetState()!\n");
fBufferInfo->bits_per_pixel = 0;
break;
}
fBufferInfo->pixel_format = buffer->ColorSpace();
fBufferInfo->layout = B_BUFFER_NONINTERLEAVED;
fBufferInfo->orientation = B_BUFFER_TOP_TO_BOTTOM;
// TODO
fBufferInfo->window_bounds = to_clipping_rect(windowFrame);
const int32 kMaxClipRectsCount = (DIRECT_BUFFER_INFO_AREA_SIZE
- sizeof(direct_buffer_info)) / sizeof(clipping_rect);
fBufferInfo->clip_list_count = min_c(clipRegion.CountRects(),
kMaxClipRectsCount);
fBufferInfo->clip_bounds = clipRegion.FrameInt();
for (uint32 i = 0; i < fBufferInfo->clip_list_count; i++)
fBufferInfo->clip_list[i] = clipRegion.RectAtInt(i);
}
return _SyncronizeWithClient();
}