本文整理汇总了C++中wxRegion::GetRegion方法的典型用法代码示例。如果您正苦于以下问题:C++ wxRegion::GetRegion方法的具体用法?C++ wxRegion::GetRegion怎么用?C++ wxRegion::GetRegion使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类wxRegion
的用法示例。
在下文中一共展示了wxRegion::GetRegion方法的10个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CreateRects
void wxRegionIterator::CreateRects( const wxRegion& region )
{
wxDELETEA(m_rects);
m_numRects = 0;
#ifdef __WXGTK3__
cairo_region_t* cairoRegion = region.GetRegion();
if (cairoRegion == NULL)
return;
m_numRects = cairo_region_num_rectangles(cairoRegion);
if (m_numRects)
{
m_rects = new wxRect[m_numRects];
for (int i = 0; i < m_numRects; i++)
{
GdkRectangle gr;
cairo_region_get_rectangle(cairoRegion, i, &gr);
wxRect &wr = m_rects[i];
wr.x = gr.x;
wr.y = gr.y;
wr.width = gr.width;
wr.height = gr.height;
}
}
#else
GdkRegion *gdkregion = region.GetRegion();
if (!gdkregion)
return;
GdkRectangle* gdkrects;
gdk_region_get_rectangles(gdkregion, &gdkrects, &m_numRects);
if (m_numRects)
{
m_rects = new wxRect[m_numRects];
for (int i = 0; i < m_numRects; ++i)
{
GdkRectangle &gr = gdkrects[i];
wxRect &wr = m_rects[i];
wr.x = gr.x;
wr.y = gr.y;
wr.width = gr.width;
wr.height = gr.height;
}
}
g_free( gdkrects );
#endif
}
示例2: CreateRects
void wxRIRefData::CreateRects( const wxRegion& region )
{
delete [] m_rects;
Init();
GdkRegion *gdkregion = region.GetRegion();
if (!gdkregion)
return;
Region r = ((GdkRegionPrivate *)gdkregion)->xregion;
if (r)
{
m_numRects = r->numRects;
if (m_numRects)
{
m_rects = new wxRect[m_numRects];
for (size_t i=0; i < m_numRects; ++i)
{
_XBox &xr = r->rects[i];
wxRect &wr = m_rects[i];
wr.x = xr.x1;
wr.y = xr.y1;
wr.width = xr.x2-xr.x1;
wr.height = xr.y2-xr.y1;
}
}
}
}
示例3: DoXor
bool wxRegion::DoXor( const wxRegion& region )
{
wxCHECK_MSG( region.Ok(), false, _T("invalid region") );
if (!m_refData)
{
return false;
}
AllocExclusive();
gdk_region_xor( M_REGIONDATA->m_region, region.GetRegion() );
return true;
}
示例4: DoSubtract
bool wxRegion::DoSubtract( const wxRegion& region )
{
if (region.m_refData == NULL || m_refData == NULL)
return false;
AllocExclusive();
#ifdef __WXGTK3__
cairo_region_subtract(M_REGIONDATA->m_region, M_REGIONDATA_OF(region)->m_region);
#else
gdk_region_subtract( M_REGIONDATA->m_region, region.GetRegion() );
#endif
return true;
}
示例5: DoSubtract
bool wxRegion::DoSubtract( const wxRegion& region )
{
wxCHECK_MSG( region.Ok(), false, _T("invalid region") );
if (!m_refData)
{
// subtracting from an invalid region doesn't make sense
return false;
}
AllocExclusive();
gdk_region_subtract( M_REGIONDATA->m_region, region.GetRegion() );
return true;
}
示例6: do_shape_combine_region
// helper
static bool do_shape_combine_region(GdkWindow* window, const wxRegion& region)
{
if (window)
{
if (region.IsEmpty())
{
gdk_window_shape_combine_mask(window, NULL, 0, 0);
}
else
{
gdk_window_shape_combine_region(window, region.GetRegion(), 0, 0);
return true;
}
}
return false;
}
示例7: DoUnionWithRegion
bool wxRegion::DoUnionWithRegion( const wxRegion& region )
{
wxCHECK_MSG( region.Ok(), false, _T("invalid region") );
if (!m_refData)
{
m_refData = new wxRegionRefData();
M_REGIONDATA->m_region = gdk_region_new();
}
else
{
AllocExclusive();
}
gdk_region_union( M_REGIONDATA->m_region, region.GetRegion() );
return true;
}
示例8: DoIntersect
bool wxRegion::DoIntersect( const wxRegion& region )
{
wxCHECK_MSG( region.IsOk(), false, wxT("invalid region") );
if (!m_refData)
{
// intersecting with invalid region doesn't make sense
return FALSE;
}
AllocExclusive();
GdkRegion *reg = gdk_regions_intersect( M_REGIONDATA->m_region, region.GetRegion() );
gdk_region_destroy( M_REGIONDATA->m_region );
M_REGIONDATA->m_region = reg;
return TRUE;
}
示例9: DoUnionWithRegion
bool wxRegion::DoUnionWithRegion( const wxRegion& region )
{
if (region.m_refData == NULL)
{ }
else if (m_refData == NULL)
{
m_refData = new wxRegionRefData(*M_REGIONDATA_OF(region));
}
else
{
AllocExclusive();
#ifdef __WXGTK3__
cairo_region_union(M_REGIONDATA->m_region, M_REGIONDATA_OF(region)->m_region);
#else
gdk_region_union( M_REGIONDATA->m_region, region.GetRegion() );
#endif
}
return true;
}
示例10: DoXor
bool wxRegion::DoXor( const wxRegion& region )
{
if (region.m_refData == NULL)
{ }
else if (m_refData == NULL)
{
// XOR-ing with an invalid region is the same as XOR-ing with an empty
// one, i.e. it is simply a copy.
m_refData = new wxRegionRefData(*M_REGIONDATA_OF(region));
}
else
{
AllocExclusive();
#ifdef __WXGTK3__
cairo_region_xor(M_REGIONDATA->m_region, M_REGIONDATA_OF(region)->m_region);
#else
gdk_region_xor( M_REGIONDATA->m_region, region.GetRegion() );
#endif
}
return true;
}