/////////////////////////////////////////////////////////////////////////////
-// Name: gtk/region.cpp
+// Name: src/gtk1/region.cpp
// Purpose:
// Author: Robert Roebling
// Modified: VZ at 05.10.00: use AllocExclusive(), comparison fixed
// declarations
// ============================================================================
-#if defined(__GNUG__) && !defined(NO_GCC_PRAGMA)
- #pragma implementation "region.h"
-#endif
-
// ----------------------------------------------------------------------------
// headers
// ----------------------------------------------------------------------------
// For compilers that support precompilation, includes "wx.h".
#include "wx/wxprec.h"
-#include "wx/log.h"
-
#include "wx/region.h"
-#include "wx/gtk/private.h"
+#ifndef WX_PRECOMP
+ #include "wx/log.h"
+#endif
+
+#include "wx/gtk1/private.h"
-#ifndef __WXGTK20__
// ----------------------------------------------------------------------------
// wxGdkRegion: creates a new region in ctor and destroys in dtor
GdkRegion *m_region;
};
-#endif // __WXGTK20__
// ----------------------------------------------------------------------------
// wxRegionRefData: private class containing the information about the region
wxRegionRefData(const wxRegionRefData& refData)
: wxObjectRefData()
{
-#ifdef __WXGTK20__
- m_region = gdk_region_copy(refData.m_region);
-#else
m_region = gdk_regions_union(wxGdkRegion(), refData.m_region);
-#endif
}
~wxRegionRefData()
m_refData = new wxRegionRefData();
-#ifdef __WXGTK20__
- M_REGIONDATA->m_region = gdk_region_rectangle( &rect );
-#else
M_REGIONDATA->m_region = gdk_region_union_with_rect( wxGdkRegion(), &rect );
-#endif
}
wxRegion::wxRegion( GdkRegion *region )
{
m_refData = new wxRegionRefData();
-#ifdef __WXGTK20__
- M_REGIONDATA->m_region = gdk_region_copy( region );
-#else
M_REGIONDATA->m_region = gdk_regions_union(wxGdkRegion(), region);
-#endif
}
wxRegion::wxRegion( size_t n, const wxPoint *points, int fillStyle )
// wxRegion comparison
// ----------------------------------------------------------------------------
-bool wxRegion::operator==( const wxRegion& region )
+bool wxRegion::operator==( const wxRegion& region ) const
{
if (m_refData == region.m_refData) return TRUE;
rect.width = width;
rect.height = height;
-#ifdef __WXGTK20__
- gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
-#else
GdkRegion *reg = gdk_region_union_with_rect( M_REGIONDATA->m_region, &rect );
gdk_region_destroy( M_REGIONDATA->m_region );
M_REGIONDATA->m_region = reg;
-#endif
}
return TRUE;
AllocExclusive();
}
-#ifdef __WXGTK20__
- gdk_region_union( M_REGIONDATA->m_region, region.GetRegion() );
-#else
GdkRegion *reg = gdk_regions_union( M_REGIONDATA->m_region, region.GetRegion() );
gdk_region_destroy( M_REGIONDATA->m_region );
M_REGIONDATA->m_region = reg;
-#endif
return TRUE;
}
AllocExclusive();
-#ifdef __WXGTK20__
- gdk_region_intersect( M_REGIONDATA->m_region, region.GetRegion() );
-#else
GdkRegion *reg = gdk_regions_intersect( M_REGIONDATA->m_region, region.GetRegion() );
gdk_region_destroy( M_REGIONDATA->m_region );
M_REGIONDATA->m_region = reg;
-#endif
return TRUE;
}
AllocExclusive();
-#ifdef __WXGTK20__
- gdk_region_subtract( M_REGIONDATA->m_region, region.GetRegion() );
-#else
GdkRegion *reg = gdk_regions_subtract( M_REGIONDATA->m_region, region.GetRegion() );
gdk_region_destroy( M_REGIONDATA->m_region );
M_REGIONDATA->m_region = reg;
-#endif
return TRUE;
}
AllocExclusive();
-#ifdef __WXGTK20__
- gdk_region_xor( M_REGIONDATA->m_region, region.GetRegion() );
-#else
GdkRegion *reg = gdk_regions_xor( M_REGIONDATA->m_region, region.GetRegion() );
gdk_region_destroy( M_REGIONDATA->m_region );
M_REGIONDATA->m_region = reg;
-#endif
return TRUE;
}
// wxRegionIterator
// ----------------------------------------------------------------------------
-#ifndef __WXGTK20__
-
// the following structures must match the private structures
// in X11 region code ( xc/lib/X11/region.h )
_XBox *rects, extents;
};
-#endif // GTK+ 1.x
class wxRIRefData: public wxObjectRefData
{
if (!gdkregion)
return;
-#ifdef __WXGTK20__
- GdkRectangle *gdkrects = NULL;
- gint numRects = 0;
- gdk_region_get_rectangles( gdkregion, &gdkrects, &numRects );
-
- m_numRects = numRects;
- if (numRects)
- {
- m_rects = new wxRect[m_numRects];
- for (size_t 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 );
-#else // GTK+ 1.x
Region r = ((GdkRegionPrivate *)gdkregion)->xregion;
if (r)
{
}
}
}
-#endif // GTK+ 2.0/1.x
}
wxRegionIterator::wxRegionIterator()
return r;
}
-