X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/e30285abc6cb45d7e2cd66ddfe3eb460821f57ae..aa99e0cd2242db04fe1f9bb7d91aea545def2422:/src/os2/dc.cpp diff --git a/src/os2/dc.cpp b/src/os2/dc.cpp index 9715d7754c..696c32f4a1 100644 --- a/src/os2/dc.cpp +++ b/src/os2/dc.cpp @@ -23,12 +23,12 @@ #include "wx/log.h" #include "wx/icon.h" #include "wx/msgdlg.h" - #include "wx/module.h" #if wxUSE_STATUSBAR #include "wx/statusbr.h" #endif #endif +#include "wx/module.h" #include "wx/dcprint.h" #include @@ -39,22 +39,22 @@ IMPLEMENT_ABSTRACT_CLASS(wxDC, wxObject) // -// wxWindows uses the Microsoft convention that the origin is the UPPER left. +// wxWidgets uses the Microsoft convention that the origin is the UPPER left. // Native OS/2 however in the GPI and PM define the origin as the LOWER left. -// In order to map OS/2 GPI/PM y coordinates to wxWindows coordinates we must +// In order to map OS/2 GPI/PM y coordinates to wxWidgets coordinates we must // perform the following transformation: // // Parent object height: POBJHEIGHT // Desried origin: WXORIGINY // Object to place's height: OBJHEIGHT // -// To get the OS2 position from the wxWindows one: +// To get the OS2 position from the wxWidgets one: // // OS2Y = POBJHEIGHT - (WXORIGINY + OBJHEIGHT) // // For OS/2 wxDC's we will always determine m_vRclPaint as the size of the // OS/2 Presentation Space associated with the device context. y is the -// desired application's y coordinate of the origin in wxWindows space. +// desired application's y coordinate of the origin in wxWidgets space. // objy is the height of the object we are going to draw. // #define OS2Y(y, objy) ((m_vRclPaint.yTop - m_vRclPaint.yBottom) - (y + objy)) @@ -316,19 +316,19 @@ void wxDC::AddToDCCache( void wxDC::ClearCache() { - m_svBitmapCache.DeleteContents(TRUE); + m_svBitmapCache.DeleteContents(true); m_svBitmapCache.Clear(); - m_svBitmapCache.DeleteContents(FALSE); - m_svDCCache.DeleteContents(TRUE); + m_svBitmapCache.DeleteContents(false); + m_svDCCache.DeleteContents(true); m_svDCCache.Clear(); - m_svDCCache.DeleteContents(FALSE); + m_svDCCache.DeleteContents(false); } // end of wxDC::ClearCache // Clean up cache at app exit class wxDCModule : public wxModule { public: - virtual bool OnInit() { return TRUE; } + virtual bool OnInit() { return true; } virtual void OnExit() { wxDC::ClearCache(); } private: @@ -345,8 +345,6 @@ IMPLEMENT_DYNAMIC_CLASS(wxDCModule, wxModule) wxDC::wxDC(void) { - wxColour vColor; - m_pCanvas = NULL; m_hOldBitmap = 0; @@ -355,16 +353,18 @@ wxDC::wxDC(void) m_hOldFont = 0; m_hOldPalette = 0; - m_bOwnsDC = FALSE; + m_bOwnsDC = false; m_hDC = 0; m_hOldPS = NULL; m_hPS = NULL; - m_bIsPaintTime = FALSE; // True at Paint Time + m_bIsPaintTime = false; // True at Paint Time - vColor.InitFromName("BLACK"); + wxColour vColor( wxT("BLACK") ); m_pen.SetColour(vColor); - vColor.Set("WHITE"); + + vColor.Set( wxT("WHITE") ); m_brush.SetColour(vColor); + } // end of wxDC::wxDC wxDC::~wxDC(void) @@ -459,7 +459,7 @@ void wxDC::DoSetClippingRegion( RECTL vRect; vY = OS2Y(vY,vHeight); - m_clipping = TRUE; + m_clipping = true; vRect.xLeft = vX; vRect.yTop = vY + vHeight; vRect.xRight = vX + vWidth; @@ -475,7 +475,7 @@ void wxDC::DoSetClippingRegionAsRegion( wxCHECK_RET(rRegion.GetHRGN(), wxT("invalid clipping region")); HRGN hRgnOld; - m_clipping = TRUE; + m_clipping = true; ::GpiSetClipRegion( m_hPS ,(HRGN)rRegion.GetHRGN() ,&hRgnOld @@ -503,7 +503,7 @@ void wxDC::DestroyClippingRegion(void) ::GpiSetClipRegion(m_hPS, hRgn, &hRgnOld); } - m_clipping = FALSE; + ResetClipping(); } // end of wxDC::DestroyClippingRegion // --------------------------------------------------------------------------- @@ -512,7 +512,7 @@ void wxDC::DestroyClippingRegion(void) bool wxDC::CanDrawBitmap() const { - return TRUE; + return true; } bool wxDC::CanGetTextExtent() const @@ -526,7 +526,7 @@ bool wxDC::CanGetTextExtent() const int wxDC::GetDepth() const { LONG lArray[CAPS_COLOR_BITCOUNT]; - int nBitsPerPixel; + int nBitsPerPixel = 0; if(::DevQueryCaps( GetHDC() ,CAPS_FAMILY @@ -571,7 +571,7 @@ bool wxDC::DoFloodFill( LONG lColor; LONG lOptions; LONG lHits; - bool bSuccess = FALSE; + bool bSuccess = false; vPtlPos.x = vX; // Loads x-coordinate vPtlPos.y = OS2Y(vY,0); // Loads y-coordinate @@ -582,8 +582,9 @@ bool wxDC::DoFloodFill( lOptions = FF_SURFACE; if ((lHits = ::GpiFloodFill(m_hPS, lOptions, lColor)) != GPI_ERROR) - bSuccess = TRUE; - return TRUE; + bSuccess = true; + + return true; } // end of wxDC::DoFloodFill bool wxDC::DoGetPixel( @@ -717,8 +718,6 @@ void wxDC::DoDrawArc( { POINTL vPtlPos; POINTL vPtlArc[2]; // Structure for current position - int nDx; - int nDy; double dRadius; double dAngl1; double dAngl2; @@ -755,8 +754,8 @@ void wxDC::DoDrawArc( // Medium point // dAnglmid = (dAngl1 + dAngl2)/2. + M_PI; - vXm = vXc + dRadius * cos(dAnglmid); - vYm = vYc + dRadius * sin(dAnglmid); + vXm = (wxCoord)(vXc + dRadius * cos(dAnglmid)); + vYm = (wxCoord)(vYc + dRadius * sin(dAnglmid)); DoDrawArc( vX1, vY1 ,vXm, vYm ,vXc, vYc @@ -772,8 +771,8 @@ void wxDC::DoDrawArc( // Medium point // dAnglmid = (dAngl1 + dAngl2)/2.; - vXm = vXc + dRadius * cos(dAnglmid); - vYm = vYc + dRadius * sin(dAnglmid); + vXm = (wxCoord)(vXc + dRadius * cos(dAnglmid)); + vYm = (wxCoord)(vYc + dRadius * sin(dAnglmid)); // // Ellipse main axis (r,q), (p,s) with center at (0,0) */ @@ -792,11 +791,11 @@ void wxDC::DoDrawArc( vPtlArc[1].x = vX2; vPtlArc[1].y = vY2; ::GpiPointArc(m_hPS, vPtlArc); // Draws the arc - CalcBoundingBox( (vXc - dRadius) - ,(vYc - dRadius) + CalcBoundingBox( (wxCoord)(vXc - dRadius) + ,(wxCoord)(vYc - dRadius) ); - CalcBoundingBox( (vXc + dRadius) - ,(vYc + dRadius) + CalcBoundingBox( (wxCoord)(vXc + dRadius) + ,(wxCoord)(vYc + dRadius) ); } // end of wxDC::DoDrawArc @@ -973,8 +972,8 @@ void wxDC::DoDrawLines( { int i; - CalcBoundingBox( vPoints[i].x - ,vPoints[i].y + CalcBoundingBox( vPoints[0].x + ,vPoints[0].y ); vPoint.x = vPoints[0].x; vPoint.y = OS2Y(vPoints[0].y,0); @@ -1233,7 +1232,6 @@ void wxDC::DoDrawEllipticArc( FIXED vFSweepa; // Start angle, sweep angle double dIntPart; double dFractPart; - double dRadius; vY = OS2Y(vY,vHeight); @@ -1250,8 +1248,8 @@ void wxDC::DoDrawEllipticArc( vArcp.lP = vWidth/2; vArcp.lS = 0; ::GpiSetArcParams(m_hPS, &vArcp); // Sets parameters to default - vPtlPos.x = vX + vWidth/2 * (1. + cos(DegToRad(dSa))); // Loads x-coordinate - vPtlPos.y = vY + vHeight/2 * (1. + sin(DegToRad(dSa))); // Loads y-coordinate + vPtlPos.x = (wxCoord)(vX + vWidth/2 * (1. + cos(DegToRad(dSa)))); // Loads x-coordinate + vPtlPos.y = (wxCoord)(vY + vHeight/2 * (1. + sin(DegToRad(dSa)))); // Loads y-coordinate ::GpiMove(m_hPS, &vPtlPos); // Sets current position // @@ -1290,13 +1288,13 @@ void wxDC::DoDrawIcon( // if (rIcon.IsXpm()) { - DoDrawBitmap(rIcon.GetXpmSrc(), vX, vY, TRUE); + DoDrawBitmap(rIcon.GetXpmSrc(), vX, vY, true); } else { wxBitmap vBitmap(rIcon); - DoDrawBitmap(vBitmap, vX, vY, FALSE); + DoDrawBitmap(vBitmap, vX, vY, false); } CalcBoundingBox(vX, vY); CalcBoundingBox(vX + rIcon.GetWidth(), vY + rIcon.GetHeight()); @@ -1399,7 +1397,7 @@ void wxDC::DoDrawBitmap( lColor = pWindowDC->m_pCanvas->GetBackgroundColour().GetPixel(); } - else if (GetBrush() != wxNullBrush) + else if (GetBrush().Ok()) lColor = GetBrush().GetColour().GetPixel(); else lColor = m_textBackgroundColour.GetPixel(); @@ -1563,8 +1561,8 @@ void wxDC::DoDrawBitmap( } else { - LONG lOldForeGround = ::GpiQueryColor((HPS)GetHPS()); - LONG lOldBackGround = ::GpiQueryBackColor((HPS)GetHPS()); + ULONG lOldForeGround = ::GpiQueryColor((HPS)GetHPS()); + ULONG lOldBackGround = ::GpiQueryBackColor((HPS)GetHPS()); if (m_textForegroundColour.Ok()) { @@ -1636,10 +1634,6 @@ void wxDC::DoDrawBitmap( unsigned char cOldGreenFore = (unsigned char)(lOldForeGround >> 8); unsigned char cOldBlueFore = (unsigned char)lOldForeGround; - unsigned char cOldRedBack = (unsigned char)(lOldBackGround >> 16); - unsigned char cOldGreenBack = (unsigned char)(lOldBackGround >> 8); - unsigned char cOldBlueBack = (unsigned char)lOldBackGround; - unsigned char cRedFore = (unsigned char)(lForeGround >> 16); unsigned char cGreenFore = (unsigned char)(lForeGround >> 8); unsigned char cBlueFore = (unsigned char)lForeGround; @@ -1779,7 +1773,7 @@ void wxDC::DrawAnyText( if (m_pCanvas && m_pCanvas->IsKindOf(CLASSINFO(wxStatusBar))) vPtlStart.y = OS2Y(vY,vTextY); else - vPtlStart.y = OS2Y(vY,vTextY/1.5); // Full extent is a bit much + vPtlStart.y = (wxCoord)(OS2Y(vY,vTextY/1.5)); // Full extent is a bit much } else { @@ -1790,7 +1784,7 @@ void wxDC::DrawAnyText( if (m_pCanvas && m_pCanvas->IsKindOf(CLASSINFO(wxStatusBar))) vPtlStart.y = OS2Y(vY,vTextY); else - vPtlStart.y = OS2Y(vY,vTextY/1.5); + vPtlStart.y = (LONG)(OS2Y(vY,vTextY/1.5)); } else vPtlStart.y = vY; @@ -2074,7 +2068,7 @@ void wxDC::SetBackground( return; if (m_pCanvas) { - bool bCustomColours = TRUE; + bool bCustomColours = true; // // If we haven't specified wxUSER_COLOURS, don't allow the panel/dialog box to @@ -2082,12 +2076,12 @@ void wxDC::SetBackground( // if (m_pCanvas->IsKindOf(CLASSINFO(wxWindow)) && ((m_pCanvas->GetWindowStyleFlag() & wxUSER_COLOURS) != wxUSER_COLOURS)) - bCustomColours = FALSE; + bCustomColours = false; if (bCustomColours) { if (m_backgroundBrush.GetStyle()==wxTRANSPARENT) { - m_pCanvas->SetTransparent(TRUE); + m_pCanvas->SetTransparent(true); } else { @@ -2101,7 +2095,7 @@ void wxDC::SetBackground( // parent? // m_canvas->SetBackgroundColour(m_backgroundBrush.GetColour()); // - m_pCanvas->SetTransparent(FALSE); + m_pCanvas->SetTransparent(false); } } } @@ -2192,8 +2186,8 @@ bool wxDC::StartDoc( const wxString& rsMessage ) { - // We might be previewing, so return TRUE to let it continue. - return TRUE; + // We might be previewing, so return true to let it continue. + return true; } // end of wxDC::StartDoc void wxDC::EndDoc() @@ -2276,8 +2270,8 @@ void wxDC::DoGetTextExtent( vErrorCode = ::WinGetLastError(wxGetInstance()); sError = wxPMErrorToStr(vErrorCode); // DEBUG - sprintf(zMsg, "GpiQueryTextBox for %s: failed with Error: %x - %s", pStr, vErrorCode, sError.c_str()); - (void)wxMessageBox( "wxWindows Menu sample" + sprintf(zMsg, "GpiQueryTextBox for %s: failed with Error: %lx - %s", pStr, vErrorCode, sError.c_str()); + (void)wxMessageBox( "wxWidgets Menu sample" ,zMsg ,wxICON_INFORMATION ); @@ -2471,7 +2465,7 @@ wxCoord wxDCBase::DeviceToLogicalX(wxCoord x) const wxCoord wxDCBase::DeviceToLogicalXRel(wxCoord x) const { - // axis orientation is not taken into account for conversion of a distance + // axis orientation is not taken into account for conversion of a distance return (wxCoord) ((x)/(m_logicalScaleX*m_userScaleX*m_scaleX)); } @@ -2482,7 +2476,7 @@ wxCoord wxDCBase::DeviceToLogicalY(wxCoord y) const wxCoord wxDCBase::DeviceToLogicalYRel(wxCoord y) const { - // axis orientation is not taken into account for conversion of a distance + // axis orientation is not taken into account for conversion of a distance return (wxCoord) ((y)/(m_logicalScaleY*m_userScaleY*m_scaleY)); } @@ -2493,7 +2487,7 @@ wxCoord wxDCBase::LogicalToDeviceX(wxCoord x) const wxCoord wxDCBase::LogicalToDeviceXRel(wxCoord x) const { - // axis orientation is not taken into account for conversion of a distance + // axis orientation is not taken into account for conversion of a distance return (wxCoord) (x*m_logicalScaleX*m_userScaleX*m_scaleX); } @@ -2504,7 +2498,7 @@ wxCoord wxDCBase::LogicalToDeviceY(wxCoord y) const wxCoord wxDCBase::LogicalToDeviceYRel(wxCoord y) const { - // axis orientation is not taken into account for conversion of a distance + // axis orientation is not taken into account for conversion of a distance return (wxCoord) (y*m_logicalScaleY*m_userScaleY*m_scaleY); } @@ -2538,7 +2532,7 @@ bool wxDC::DoBlit( pMask = rBmp.GetMask(); if (!(rBmp.Ok() && pMask && pMask->GetMaskBitmap())) { - bUseMask = FALSE; + bUseMask = false; } } @@ -2586,7 +2580,7 @@ bool wxDC::DoBlit( case wxNOR: lRop = ROP_NOTSRCCOPY; break; default: wxFAIL_MSG( wxT("unsupported logical function") ); - return FALSE; + return false; } bool bSuccess; @@ -2618,7 +2612,7 @@ bool wxDC::DoBlit( vBmpHdr.cBitCount = 24; #if wxUSE_DC_CACHEING - if (TRUE) + if (true) { // // create a temp buffer bitmap and DCs to access it and the mask @@ -2648,25 +2642,25 @@ bool wxDC::DoBlit( hBufBitmap = ::GpiCreateBitmap(GetHPS(), &vBmpHdr, 0L, NULL, NULL); } - POINTL aPoint1[4] = { 0, 0 - ,vWidth, vHeight - ,vXdest, vYdest - ,vXdest + vWidth, vYdest + vHeight + POINTL aPoint1[4] = { {0, 0} + ,{vWidth, vHeight} + ,{vXdest, vYdest} + ,{vXdest + vWidth, vYdest + vHeight} }; - POINTL aPoint2[4] = { 0, 0 - ,vWidth, vHeight - ,vXsrc, vYsrc - ,vXsrc + vWidth, vYsrc + vHeight + POINTL aPoint2[4] = { {0, 0} + ,{vWidth, vHeight} + ,{vXsrc, vYsrc} + ,{vXsrc + vWidth, vYsrc + vHeight} }; - POINTL aPoint3[4] = { vXdest, vYdest - ,vXdest + vWidth, vYdest + vHeight - ,vXsrc, vYsrc - ,vXsrc + vWidth, vYsrc + vHeight + POINTL aPoint3[4] = { {vXdest, vYdest} + ,{vXdest + vWidth, vYdest + vHeight} + ,{vXsrc, vYsrc} + ,{vXsrc + vWidth, vYsrc + vHeight} }; - POINTL aPoint4[4] = { vXdest, vYdest - ,vXdest + vWidth, vYdest + vHeight - ,0, 0 - ,vWidth, vHeight + POINTL aPoint4[4] = { {vXdest, vYdest} + ,{vXdest + vWidth, vYdest + vHeight} + ,{0, 0} + ,{vWidth, vHeight} }; ::GpiSetBitmap(hPSMask, (HBITMAP) pMask->GetMaskBitmap()); ::GpiSetBitmap(hPSBuffer, (HBITMAP) hBufBitmap); @@ -2757,7 +2751,7 @@ bool wxDC::DoBlit( ); if (rc == GPI_ERROR) { - bSuccess = FALSE; + bSuccess = false; wxLogLastError(wxT("BitBlt")); } @@ -2773,14 +2767,14 @@ bool wxDC::DoBlit( ::DevCloseDC(hDCBuffer); ::GpiDeleteBitmap(hBufBitmap); #endif - bSuccess = TRUE; + bSuccess = true; } else // no mask, just BitBlt() it { - POINTL aPoint[4] = { vXdest, vYdest - ,vXdest + vWidth, vYdest + vHeight - ,vXsrc, vYsrc - ,vXsrc + vWidth, vYsrc + vHeight + POINTL aPoint[4] = { {vXdest, vYdest} + ,{vXdest + vWidth, vYdest + vHeight} + ,{vXsrc, vYsrc} + ,{vXsrc + vWidth, vYsrc + vHeight} }; bSuccess = (::GpiBitBlt( m_hPS @@ -2872,8 +2866,8 @@ wxSize wxDC::GetPPI() const nPelHeight = lArray[CAPS_HEIGHT]; nHorzRes = lArray[CAPS_HORIZONTAL_RESOLUTION]; // returns pel/meter nVertRes = lArray[CAPS_VERTICAL_RESOLUTION]; // returns pel/meter - nWidth = (nHorzRes/39.3) * nPelWidth; - nHeight = (nVertRes/39.3) * nPelHeight; + nWidth = (int)((nHorzRes/39.3) * nPelWidth); + nHeight = (int)((nVertRes/39.3) * nPelHeight); } return (wxSize(nWidth,nHeight)); } // end of wxDC::GetPPI