// macros
// ----------------------------------------------------------------------------
-#if !USE_SHARED_LIBRARY
IMPLEMENT_DYNAMIC_CLASS(wxClientDC, wxWindowDC)
IMPLEMENT_DYNAMIC_CLASS(wxPaintDC, wxWindowDC)
IMPLEMENT_DYNAMIC_CLASS(wxWindowDC, wxDC)
-#endif
// ----------------------------------------------------------------------------
// prototypes
m_currentPenWidth = 1;
m_currentPenJoin = -1;
m_currentPenDashCount = -1;
- m_currentPenDash = (char*) NULL;
+ m_currentPenDash = (wxMOTIFDash*) NULL;
m_currentStyle = -1;
m_currentFill = -1;
// m_currentBkMode = wxTRANSPARENT;
m_currentPenWidth = 1;
m_currentPenJoin = -1;
m_currentPenDashCount = -1;
- m_currentPenDash = (char*) NULL;
+ m_currentPenDash = (wxMOTIFDash*) NULL;
m_currentStyle = -1;
m_currentFill = -1;
// m_currentBkMode = wxTRANSPARENT;
gcvalues.foreground = BlackPixel (display, DefaultScreen (display));
gcvalues.background = WhitePixel (display, DefaultScreen (display));
gcvalues.graphics_exposures = False;
+ gcvalues.subwindow_mode = IncludeInferiors;
gcvalues.line_width = 1;
m_gc = (WXGC) XCreateGC (display, RootWindow (display, DefaultScreen (display)),
- GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth,
+ GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth | GCSubwindowMode,
&gcvalues);
if (m_window->GetBackingPixmap())
{
m_gcBacking = (WXGC) XCreateGC (display, RootWindow (display,
DefaultScreen (display)),
- GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth,
+ GCForeground | GCBackground | GCGraphicsExposures | GCLineWidth | GCSubwindowMode,
&gcvalues);
}
wxFAIL_MSG("not implemented");
}
-bool wxWindowDC::DoGetPixel( wxCoord WXUNUSED(x1), wxCoord WXUNUSED(y1), wxColour *WXUNUSED(col) ) const
+bool wxWindowDC::DoGetPixel( wxCoord x1, wxCoord y1, wxColour *col ) const
{
- wxFAIL_MSG("not implemented");
-
- return FALSE;
+ // Generic (and therefore rather inefficient) method.
+ // Could be improved.
+ wxMemoryDC memdc;
+ wxBitmap bitmap(1, 1);
+ memdc.SelectObject(bitmap);
+ memdc.Blit(0, 0, 1, 1, (wxDC*) this, x1, y1);
+ memdc.SelectObject(wxNullBitmap);
+ wxImage image(bitmap);
+ col->Set(image.GetRed(0, 0), image.GetGreen(0, 0), image.GetBlue(0, 0));
+ return TRUE;
}
void wxWindowDC::DoDrawLine( wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2 )
wxCoord dx = xx1 - xxc;
wxCoord dy = yy1 - yyc;
- double radius = sqrt (dx * dx + dy * dy);
+ double radius = sqrt ((double)(dx * dx + dy * dy));
wxCoord r = (wxCoord) radius;
double radius1, radius2;
// draw black pixels, ignore white ones (i.e. transparent b/g)
if (image.GetRed(sx, sy) == 0)
{
- {
- DrawPoint(x1 + maxx - rx, cy + y1 - ry);
+ DrawPoint((wxCoord) (x1 + maxx - rx), (wxCoord) (cy + y1 - ry));
}
else
{
int old_pen_join = m_currentPenJoin;
int old_pen_cap = m_currentPenCap;
int old_pen_nb_dash = m_currentPenDashCount;
- char *old_pen_dash = m_currentPenDash;
+ wxMOTIFDash *old_pen_dash = m_currentPenDash;
wxColour oldPenColour = m_currentColour;
m_currentColour = m_pen.GetColour ();
m_currentPenJoin = m_pen.GetJoin ();
m_currentPenCap = m_pen.GetCap ();
m_currentPenDashCount = m_pen.GetDashCount();
- m_currentPenDash = m_pen.GetDash();
+ m_currentPenDash = (wxMOTIFDash*)m_pen.GetDash();
if (m_currentStyle == wxSTIPPLE)
m_currentStipple = * m_pen.GetStipple ();
int style;
int join;
int cap;
- static const char dotted[] = {2, 5};
- static const char short_dashed[] = {4, 4};
- static const char long_dashed[] = {4, 8};
- static const char dotted_dashed[] = {6, 6, 2, 6};
+ static const wxMOTIFDash dotted[] = {2, 5};
+ static const wxMOTIFDash short_dashed[] = {4, 4};
+ static const wxMOTIFDash long_dashed[] = {4, 8};
+ static const wxMOTIFDash dotted_dashed[] = {6, 6, 2, 6};
// We express dash pattern in pen width unit, so we are
// independent of zoom factor and so on...
int req_nb_dash;
- const char *req_dash;
+ const wxMOTIFDash *req_dash;
switch (m_pen.GetStyle ())
{
case wxTRANSPARENT:
default:
style = LineSolid;
- req_dash = NULL;
+ req_dash = (wxMOTIFDash*)NULL;
req_nb_dash = 0;
}
if (req_dash && req_nb_dash)
{
- char *real_req_dash = new char[req_nb_dash];
+ wxMOTIFDash *real_req_dash = new wxMOTIFDash[req_nb_dash];
if (real_req_dash)
{
int factor = scaled_width == 0 ? 1 : scaled_width;