X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c109254cc6feef6934f2ba8eec3e2726c44dfa79..d728116a27b358e5b002337d96268fb51be128eb:/src/mgl/dc.cpp?ds=sidebyside diff --git a/src/mgl/dc.cpp b/src/mgl/dc.cpp index babad279d2..6d1111607d 100644 --- a/src/mgl/dc.cpp +++ b/src/mgl/dc.cpp @@ -322,7 +322,7 @@ void wxDC::Clear() SetBrush(m_backgroundBrush); SelectBrush(); GetSize(&w, &h); - m_MGLDC->fillRect(0, 0, w-1, h-1); + m_MGLDC->fillRect(0, 0, w, h); SetBrush(oldb); } } @@ -337,7 +337,7 @@ bool wxDC::DoGetPixel(wxCoord x, wxCoord y, wxColour *col) const wxCHECK_MSG( col, FALSE, _T("NULL colour parameter in wxDC::GetPixel")); uchar r, g, b; - m_MGLDC->unpackColorFast(m_MGLDC->getPixel(XLOG2DEV(x), XLOG2DEV(y)), + m_MGLDC->unpackColorFast(m_MGLDC->getPixel(XLOG2DEV(x), YLOG2DEV(y)), r, g, b); col->Set(r, g, b); return TRUE; @@ -373,8 +373,8 @@ void wxDC::DoDrawLine(wxCoord x1, wxCoord y1, wxCoord x2, wxCoord y2) m_MGLDC->makeCurrent(); // will go away with MGL6.0 if ( !m_penSelected ) SelectPen(); - m_MGLDC->lineExt(XLOG2DEV(x1) + m_penOfsX, XLOG2DEV(y1) + m_penOfsY, - XLOG2DEV(x2) + m_penOfsX, XLOG2DEV(y2) + m_penOfsY,FALSE); + m_MGLDC->lineExt(XLOG2DEV(x1) + m_penOfsX, YLOG2DEV(y1) + m_penOfsY, + XLOG2DEV(x2) + m_penOfsX, YLOG2DEV(y2) + m_penOfsY,FALSE); CalcBoundingBox(x1, y1); CalcBoundingBox(x2, y2); } @@ -744,25 +744,42 @@ void wxDC::DrawAnyText(const wxString& text, wxCoord x, wxCoord y) SelectMGLFont(); - m_MGLDC->setColor(m_MGLDC->packColorFast(m_textForegroundColour.Red(), - m_textForegroundColour.Green(), m_textForegroundColour.Blue())); - m_MGLDC->setBackColor(m_MGLDC->packColorFast(m_textBackgroundColour.Red(), - m_textBackgroundColour.Green(), m_textBackgroundColour.Blue())); - // Render the text: wxCoord xx = XLOG2DEV(x); wxCoord yy = YLOG2DEV(y); - + m_MGLDC->setLineStyle(MGL_LINE_STIPPLE); m_MGLDC->setLineStipple(0xFFFF); m_MGLDC->setPenSize(1, 1); m_MGLDC->setPenStyle(MGL_BITMAP_SOLID); - + #if wxUSE_UNICODE const wchar_t *c_text = text.c_str(); #else const char *c_text = text.c_str(); #endif + +#if 1 + // FIXME_MGL - this is a temporary hack in absence of proper + // implementation of solid text background in MGL. Once + // the bug in MGL is fixed, this code should be nuked + // immediately. Note that the code is not 100% correct; + // it only works with wxCOPY logical function + if ( m_backgroundMode == wxSOLID ) + { + int w = m_MGLDC->textWidth(c_text); + int h = m_MGLDC->textHeight(); + m_MGLDC->setColor(m_MGLDC->packColorFast(m_textBackgroundColour.Red(), + m_textBackgroundColour.Green(), m_textBackgroundColour.Blue())); + m_MGLDC->fillRect(xx, yy, xx+w, yy+h); + } +#endif + + m_MGLDC->setColor(m_MGLDC->packColorFast(m_textForegroundColour.Red(), + m_textForegroundColour.Green(), m_textForegroundColour.Blue())); + m_MGLDC->setBackColor(m_MGLDC->packColorFast(m_textBackgroundColour.Red(), + m_textBackgroundColour.Green(), m_textBackgroundColour.Blue())); + m_MGLDC->drawStr(xx, yy, c_text); // Render underline: