Mono bitmap processing updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
5941c5de92
commit
29172908bf
@ -23,26 +23,6 @@ public:
|
||||
virtual void SelectObject(const wxBitmap& rBitmap);
|
||||
protected:
|
||||
// override some base class virtuals
|
||||
virtual void DoDrawRectangle( wxCoord vX
|
||||
,wxCoord vY
|
||||
,wxCoord vWidth
|
||||
,wxCoord vHeight
|
||||
);
|
||||
virtual void DoDrawRoundedRectangle( wxCoord vX
|
||||
,wxCoord vY
|
||||
,wxCoord vWidth
|
||||
,wxCoord vHeight
|
||||
,double dRadius
|
||||
);
|
||||
virtual void DoDrawText( const wxString& rsText
|
||||
,wxCoord vX
|
||||
,wxCoord vY
|
||||
);
|
||||
virtual void DoDrawLine( wxCoord vX1
|
||||
,wxCoord vY1
|
||||
,wxCoord vX2
|
||||
,wxCoord vY2
|
||||
);
|
||||
virtual void DoGetSize( int* pWidth
|
||||
,int* pHeight
|
||||
) const;
|
||||
|
@ -939,14 +939,14 @@ wxImage wxBitmap::ConvertToImage() const
|
||||
,&vSizlPage
|
||||
,PU_PELS | GPIA_ASSOC
|
||||
);
|
||||
if ((hOldBitmap = ::GpiSetBitmap(hPSMem, hBitmap)) == HBM_ERROR)
|
||||
{
|
||||
ERRORID vError;
|
||||
wxString sError;
|
||||
}
|
||||
if ((hOldBitmap = ::GpiSetBitmap(hPSMem, hBitmap)) == HBM_ERROR)
|
||||
{
|
||||
ERRORID vError;
|
||||
wxString sError;
|
||||
|
||||
vError = ::WinGetLastError(vHabmain);
|
||||
sError = wxPMErrorToStr(vError);
|
||||
}
|
||||
vError = ::WinGetLastError(vHabmain);
|
||||
sError = wxPMErrorToStr(vError);
|
||||
}
|
||||
|
||||
//
|
||||
|
@ -1543,20 +1543,20 @@ void wxDC::DoDrawBitmap(
|
||||
(cBmpGreen == cOldGreenFore) &&
|
||||
(cBmpBlue == cOldBlueFore))
|
||||
{
|
||||
*pucData = cRedFore;
|
||||
*pucData = cBlueFore;
|
||||
pucData++;
|
||||
*pucData = cGreenFore;
|
||||
pucData++;
|
||||
*pucData = cBlueFore;
|
||||
*pucData = cRedFore;
|
||||
pucData++;
|
||||
}
|
||||
else
|
||||
{
|
||||
*pucData = cRedBack;
|
||||
*pucData = cBlueBack;
|
||||
pucData++;
|
||||
*pucData = cGreenBack;
|
||||
pucData++;
|
||||
*pucData = cBlueBack;
|
||||
*pucData = cRedBack;
|
||||
pucData++;
|
||||
}
|
||||
}
|
||||
@ -1879,6 +1879,7 @@ void wxDC::SetPen(
|
||||
if (!m_hOldPen)
|
||||
m_hOldPen = m_pen.GetPS();
|
||||
}
|
||||
::GpiSetColor(m_hPS, m_pen.GetColour().GetPixel());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,12 +24,6 @@
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC, wxDC)
|
||||
|
||||
extern void wxLoadBitmapWithData( HPS hPS
|
||||
,HBITMAP hBitmap
|
||||
,int nWidth
|
||||
,int nHeight
|
||||
);
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Memory DC
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
@ -157,20 +151,18 @@ void wxMemoryDC::SelectObject(
|
||||
WXHBITMAP hBmp = rBitmap.GetHBITMAP();
|
||||
|
||||
if (!hBmp)
|
||||
{
|
||||
m_hOldBitmap = (WXHBITMAP)::GpiSetBitmap(m_hPS, NULLHANDLE);
|
||||
return;
|
||||
|
||||
}
|
||||
m_vSelectedBitmap.SetSelectedInto(this);
|
||||
hBmp = (WXHBITMAP)::GpiSetBitmap(m_hPS, (HBITMAP)hBmp);
|
||||
m_hOldBitmap = (WXHBITMAP)::GpiSetBitmap(m_hPS, (HBITMAP)hBmp);
|
||||
|
||||
if (hBmp == HBM_ERROR)
|
||||
if (m_hOldBitmap == HBM_ERROR)
|
||||
{
|
||||
wxLogLastError(wxT("SelectObject(memDC, bitmap)"));
|
||||
wxFAIL_MSG(wxT("Couldn't select a bitmap into wxMemoryDC"));
|
||||
}
|
||||
else if (!m_hOldBitmap)
|
||||
{
|
||||
m_hOldBitmap = hBmp;
|
||||
}
|
||||
} // end of wxMemoryDC::SelectObject
|
||||
|
||||
void wxMemoryDC::DoGetSize(
|
||||
@ -188,121 +180,3 @@ void wxMemoryDC::DoGetSize(
|
||||
*pHeight = m_vSelectedBitmap.GetHeight();
|
||||
} // end of wxMemoryDC::DoGetSize
|
||||
|
||||
void wxMemoryDC::DoDrawRectangle(
|
||||
wxCoord vX
|
||||
, wxCoord vY
|
||||
, wxCoord vWidth
|
||||
, wxCoord vHeight
|
||||
)
|
||||
{
|
||||
wxDC::DoDrawRectangle(vX, vY, vWidth, vHeight);
|
||||
|
||||
wxLoadBitmapWithData( m_hPS
|
||||
,(HBITMAP)m_vSelectedBitmap.GetHBITMAP()
|
||||
,m_vSelectedBitmap.GetWidth()
|
||||
,m_vSelectedBitmap.GetHeight()
|
||||
);
|
||||
} // end of wxMemoryDC::DoDrawRectangle
|
||||
|
||||
void wxMemoryDC::DoDrawRoundedRectangle(
|
||||
wxCoord vX
|
||||
, wxCoord vY
|
||||
, wxCoord vWidth
|
||||
, wxCoord vHeight
|
||||
, double dRadius
|
||||
)
|
||||
{
|
||||
wxDC::DoDrawRoundedRectangle(vX, vY, vWidth, vHeight, dRadius);
|
||||
|
||||
wxLoadBitmapWithData( m_hPS
|
||||
,(HBITMAP)m_vSelectedBitmap.GetHBITMAP()
|
||||
,m_vSelectedBitmap.GetWidth()
|
||||
,m_vSelectedBitmap.GetHeight()
|
||||
);
|
||||
} // end of wxMemoryDC::DoDrawRoundedRectangle
|
||||
|
||||
void wxMemoryDC::DoDrawText(
|
||||
const wxString& rsText
|
||||
, wxCoord vX
|
||||
, wxCoord vY
|
||||
)
|
||||
{
|
||||
wxDC::DoDrawText(rsText, vX, vY);
|
||||
|
||||
wxLoadBitmapWithData( m_hPS
|
||||
,(HBITMAP)m_vSelectedBitmap.GetHBITMAP()
|
||||
,m_vSelectedBitmap.GetWidth()
|
||||
,m_vSelectedBitmap.GetHeight()
|
||||
);
|
||||
} // end of wxMemoryDC::DoDrawRectangle
|
||||
|
||||
void wxMemoryDC::DoDrawLine(
|
||||
wxCoord vX1
|
||||
, wxCoord vY1
|
||||
, wxCoord vX2
|
||||
, wxCoord vY2
|
||||
)
|
||||
{
|
||||
wxDC::DoDrawLine(vX1, vY1, vX2, vY2);
|
||||
|
||||
wxLoadBitmapWithData( m_hPS
|
||||
,(HBITMAP)m_vSelectedBitmap.GetHBITMAP()
|
||||
,m_vSelectedBitmap.GetWidth()
|
||||
,m_vSelectedBitmap.GetHeight()
|
||||
);
|
||||
} // end of wxMemoryDC::DoDrawRoundedRectangle
|
||||
|
||||
void wxLoadBitmapWithData(
|
||||
HPS hPS
|
||||
, HBITMAP hBitmap
|
||||
, int nWidth
|
||||
, int nHeight
|
||||
)
|
||||
{
|
||||
BITMAPINFOHEADER2 vHeader;
|
||||
BITMAPINFO2 vInfo;
|
||||
|
||||
vHeader.cbFix = 16L;
|
||||
if (::GpiQueryBitmapInfoHeader(hBitmap, &vHeader))
|
||||
{
|
||||
unsigned char* pucData = NULL;
|
||||
unsigned char* pucBits;
|
||||
int nBytesPerLine = nWidth * 3;
|
||||
LONG lScans = 0L;
|
||||
POINTL vPoint;
|
||||
LONG lColor;
|
||||
|
||||
vInfo.cbFix = 16;
|
||||
vInfo.cx = vHeader.cx;
|
||||
vInfo.cy = vHeader.cy;
|
||||
vInfo.cPlanes = vHeader.cPlanes;
|
||||
vInfo.cBitCount = 24;
|
||||
pucData = (unsigned char*)malloc(nBytesPerLine * nHeight);
|
||||
pucBits = pucData;
|
||||
for (int i = 0; i < nHeight; i++)
|
||||
{
|
||||
for (int j = 0; j < nWidth; j++)
|
||||
{
|
||||
vPoint.x = j; vPoint.y = i;
|
||||
lColor = ::GpiQueryPel(hPS, &vPoint);
|
||||
*(pucBits++) = (unsigned char)lColor;
|
||||
*(pucBits++) = (unsigned char)(lColor >> 8);
|
||||
*(pucBits++) = (unsigned char)(lColor >> 16);
|
||||
}
|
||||
}
|
||||
if ((lScans = ::GpiSetBitmapBits( hPS
|
||||
,0
|
||||
,(LONG)nHeight
|
||||
,(PBYTE)pucData
|
||||
,&vInfo
|
||||
)) == GPI_ALTERROR)
|
||||
{
|
||||
ERRORID vError;
|
||||
wxString sError;
|
||||
|
||||
vError = ::WinGetLastError(vHabmain);
|
||||
sError = wxPMErrorToStr(vError);
|
||||
}
|
||||
free(pucData);
|
||||
}
|
||||
}
|
||||
|
@ -50,6 +50,7 @@ void wxIconRefData::Free()
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
wxIcon::wxIcon()
|
||||
: m_bIsXpm(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
@ -58,6 +59,7 @@ wxIcon::wxIcon(
|
||||
, int WXUNUSED(nWidth)
|
||||
, int WXUNUSED(nHeight)
|
||||
)
|
||||
: m_bIsXpm(FALSE)
|
||||
{
|
||||
}
|
||||
|
||||
@ -67,6 +69,7 @@ wxIcon::wxIcon(
|
||||
, int nDesiredWidth
|
||||
, int nDesiredHeight
|
||||
)
|
||||
: m_bIsXpm(FALSE)
|
||||
{
|
||||
//
|
||||
// A very poor hack, but we have to have separate icon files from windows
|
||||
@ -94,6 +97,11 @@ void wxIcon::CreateIconFromXpm(
|
||||
wxBitmap vBmp(ppData);
|
||||
|
||||
CopyFromBitmap(vBmp);
|
||||
if (GetHICON())
|
||||
{
|
||||
m_bIsXpm = TRUE;
|
||||
m_vXpmSrc = vBmp;
|
||||
}
|
||||
} // end of wxIcon::CreateIconFromXpm
|
||||
|
||||
void wxIcon::CopyFromBitmap(
|
||||
@ -129,7 +137,7 @@ void wxIcon::CopyFromBitmap(
|
||||
POINTL vPoint[4] = { 0, 0, rBmp.GetWidth(), rBmp.GetHeight(),
|
||||
0, 0, rBmp.GetWidth(), rBmp.GetHeight()
|
||||
};
|
||||
POINTL vPointMask[4] = { 0, 0, rBmp.GetWidth(), rBmp.GetHeight(),
|
||||
POINTL vPointMask[4] = { 0, 0, rBmp.GetWidth(), rBmp.GetHeight() * 2,
|
||||
0, 0, rBmp.GetWidth(), rBmp.GetHeight()
|
||||
};
|
||||
|
||||
@ -185,7 +193,7 @@ void wxIcon::CopyFromBitmap(
|
||||
}
|
||||
vIconInfo.hbmColor = hBmp;
|
||||
|
||||
vHeader.cy = (ULONG)rBmp.GetHeight();
|
||||
vHeader.cy = (ULONG)rBmp.GetHeight() * 2;
|
||||
hBmpMask = ::GpiCreateBitmap( hPSDst
|
||||
,&vHeader
|
||||
,0L
|
||||
|
@ -4,7 +4,7 @@ DATA MULTIPLE NONSHARED READWRITE LOADONCALL
|
||||
CODE LOADONCALL
|
||||
|
||||
EXPORTS
|
||||
;From library: H:\DEV\WX2\WXWINDOWS\LIB\wx.lib
|
||||
;From library: F:\DEV\WX2\WXWINDOWS\LIB\wx.lib
|
||||
;From object file: dummy.cpp
|
||||
;PUBDEFs (Symbols available from object file):
|
||||
wxDummyChar
|
||||
@ -1925,7 +1925,7 @@ EXPORTS
|
||||
wxEVT_NC_LEFT_DCLICK
|
||||
wxEVT_INIT_DIALOG
|
||||
wxEVT_COMMAND_SET_FOCUS
|
||||
;From object file: H:\DEV\WX2\WXWINDOWS\src\common\extended.c
|
||||
;From object file: F:\DEV\WX2\WXWINDOWS\src\common\extended.c
|
||||
;PUBDEFs (Symbols available from object file):
|
||||
ConvertToIeeeExtended
|
||||
ConvertFromIeeeExtended
|
||||
@ -6068,7 +6068,7 @@ EXPORTS
|
||||
Read32__17wxTextInputStreamFv
|
||||
;wxTextInputStream::SkipIfEndOfLine(char)
|
||||
SkipIfEndOfLine__17wxTextInputStreamFc
|
||||
;From object file: H:\DEV\WX2\WXWINDOWS\src\common\unzip.c
|
||||
;From object file: F:\DEV\WX2\WXWINDOWS\src\common\unzip.c
|
||||
;PUBDEFs (Symbols available from object file):
|
||||
unzReadCurrentFile
|
||||
unzGetCurrentFileInfo
|
||||
@ -12348,25 +12348,15 @@ EXPORTS
|
||||
__ct__10wxWindowDCFP8wxWindow
|
||||
;From object file: ..\os2\dcmemory.cpp
|
||||
;PUBDEFs (Symbols available from object file):
|
||||
;wxMemoryDC::DoDrawRoundedRectangle(int,int,int,int,double)
|
||||
DoDrawRoundedRectangle__10wxMemoryDCFiN31d
|
||||
;wxMemoryDC::DoDrawText(const wxString&,int,int)
|
||||
DoDrawText__10wxMemoryDCFRC8wxStringiT2
|
||||
;wxMemoryDC::SelectObject(const wxBitmap&)
|
||||
SelectObject__10wxMemoryDCFRC8wxBitmap
|
||||
__vft10wxMemoryDC8wxObject
|
||||
;wxMemoryDC::DoDrawLine(int,int,int,int)
|
||||
DoDrawLine__10wxMemoryDCFiN31
|
||||
;wxMemoryDC::Init()
|
||||
Init__10wxMemoryDCFv
|
||||
;wxLoadBitmapWithData(unsigned long,unsigned long,int,int)
|
||||
wxLoadBitmapWithData__FUlT1iT3
|
||||
;wxMemoryDC::DoGetSize(int*,int*) const
|
||||
DoGetSize__10wxMemoryDCCFPiT1
|
||||
;wxMemoryDC::wxMemoryDC(wxDC*)
|
||||
__ct__10wxMemoryDCFP4wxDC
|
||||
;wxMemoryDC::DoDrawRectangle(int,int,int,int)
|
||||
DoDrawRectangle__10wxMemoryDCFiN31
|
||||
;wxMemoryDC::wxMemoryDC()
|
||||
__ct__10wxMemoryDCFv
|
||||
;wxMemoryDC::sm_classwxMemoryDC
|
||||
|
Loading…
Reference in New Issue
Block a user