wxOS2 no longer relies on xpmlib
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14295 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
parent
98edf62696
commit
1c344e89c6
@ -33,6 +33,7 @@
|
||||
|
||||
//#include "wx/msw/dib.h"
|
||||
#include "wx/image.h"
|
||||
#include "wx/xpmdecod.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
// macros
|
||||
@ -211,37 +212,6 @@ wxBitmap::wxBitmap(
|
||||
SetHBITMAP((WXHBITMAP)hBmp);
|
||||
} // end of wxBitmap::wxBitmap
|
||||
|
||||
//
|
||||
// Create from XPM data
|
||||
//
|
||||
wxBitmap::wxBitmap(
|
||||
char** ppData
|
||||
)
|
||||
{
|
||||
Init();
|
||||
|
||||
(void)Create( (void *)ppData
|
||||
,wxBITMAP_TYPE_XPM_DATA
|
||||
,0
|
||||
,0
|
||||
,0
|
||||
);
|
||||
} // end of wxBitmap::wxBitmap
|
||||
|
||||
wxBitmap::wxBitmap(
|
||||
const char** ppData
|
||||
)
|
||||
{
|
||||
Init();
|
||||
|
||||
(void)Create( (void *)ppData
|
||||
,wxBITMAP_TYPE_XPM_DATA
|
||||
,0
|
||||
,0
|
||||
,0
|
||||
);
|
||||
} // end of wxBitmap::wxBitmap
|
||||
|
||||
wxBitmap::wxBitmap(
|
||||
int nW
|
||||
, int nH
|
||||
@ -361,6 +331,27 @@ bool wxBitmap::Create(
|
||||
return Ok();
|
||||
} // end of wxBitmap::Create
|
||||
|
||||
bool wxBitmap::CreateFromXpm(
|
||||
const char** ppData
|
||||
)
|
||||
{
|
||||
#if wxUSE_IMAGE && wxUSE_XPM
|
||||
Init();
|
||||
|
||||
wxCHECK_MSG(ppData != NULL, FALSE, wxT("invalid bitmap data"))
|
||||
|
||||
wxXPMDecoder vDecoder;
|
||||
wxImage vImg = vDecoder.ReadData(ppData);
|
||||
|
||||
wxCHECK_MSG(vImg.Ok(), FALSE, wxT("invalid bitmap data"))
|
||||
|
||||
*this = wxBitmap(vImg);
|
||||
return TRUE;
|
||||
#else
|
||||
return FALSE;
|
||||
#endif
|
||||
} // end of wxBitmap::CreateFromXpm
|
||||
|
||||
bool wxBitmap::LoadFile(
|
||||
const wxString& rFilename
|
||||
, long lType
|
||||
|
@ -31,7 +31,6 @@
|
||||
|
||||
#include "wx/os2/private.h"
|
||||
#include "wx/app.h"
|
||||
#include "wx/xpmhand.h"
|
||||
#include "wx/os2/gdiimage.h"
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
@ -345,12 +344,6 @@ void wxGDIImage::InitStandardHandlers()
|
||||
{
|
||||
AddHandler(new wxBMPResourceHandler);
|
||||
AddHandler(new wxBMPFileHandler);
|
||||
|
||||
#if wxUSE_XPM_IN_OS2
|
||||
AddHandler(new wxXPMFileHandler);
|
||||
AddHandler(new wxXPMDataHandler);
|
||||
#endif
|
||||
|
||||
AddHandler(new wxICOResourceHandler);
|
||||
AddHandler(new wxICOFileHandler);
|
||||
}
|
||||
|
@ -533,8 +533,7 @@ OS2OBJS = \
|
||||
..\os2\$D\utils.obj \
|
||||
..\os2\$D\utilsexc.obj \
|
||||
..\os2\$D\wave.obj \
|
||||
..\os2\$D\window.obj \
|
||||
..\os2\$D\xpmhand.obj
|
||||
..\os2\$D\window.obj
|
||||
|
||||
OS2LIBOBJS1 = \
|
||||
accel.obj \
|
||||
@ -617,8 +616,7 @@ OS2LIBOBJS2 = \
|
||||
utils.obj \
|
||||
utilsexc.obj \
|
||||
wave.obj \
|
||||
window.obj \
|
||||
xpmhand.obj
|
||||
window.obj
|
||||
|
||||
HTMLOBJS = \
|
||||
..\html\$D\helpctrl.obj \
|
||||
@ -670,7 +668,7 @@ HTMLLIBOBJS = \
|
||||
OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(HTMLOBJS) $(NONESSENTIALOBJS) $(OS2OBJS)
|
||||
|
||||
# Normal, static library
|
||||
all: $(WXDIR)\include\wx\setup.h $(DUMMYOBJ) $(OBJECTS) $(PERIPH_TARGET) zlib png jpeg xpm tiff $(LIBTARGET)
|
||||
all: $(WXDIR)\include\wx\setup.h $(DUMMYOBJ) $(OBJECTS) $(PERIPH_TARGET) zlib png jpeg tiff $(LIBTARGET)
|
||||
|
||||
dirs: $(OS2DIR)\$D $(COMMDIR)\$D $(GENDIR)\$D $(HTMLDIR)\$D
|
||||
|
||||
@ -971,7 +969,6 @@ $(OS2LIBOBJS2):
|
||||
copy ..\os2\$D\utilsexc.obj
|
||||
copy ..\os2\$D\wave.obj
|
||||
copy ..\os2\$D\window.obj
|
||||
copy ..\os2\$D\xpmhand.obj
|
||||
|
||||
# wxWindows library as DLL
|
||||
dll:
|
||||
@ -1158,16 +1155,6 @@ clean_jpeg:
|
||||
nmake -f makefile.va clean
|
||||
cd $(WXDIR)\src\os2
|
||||
|
||||
xpm:
|
||||
cd $(WXDIR)\src\xpm
|
||||
nmake -f makefile.va FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL)
|
||||
cd $(WXDIR)\src\os2
|
||||
|
||||
clean_xpm:
|
||||
cd $(WXDIR)\src\xpm
|
||||
nmake -f makefile.va clean
|
||||
cd $(WXDIR)\src\os2
|
||||
|
||||
tiff:
|
||||
cd $(WXDIR)\src\tiff
|
||||
nmake -f makefile.va FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL)
|
||||
|
@ -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
|
||||
@ -1777,7 +1777,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
|
||||
@ -5810,7 +5810,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
|
||||
@ -9743,6 +9743,8 @@ EXPORTS
|
||||
OnSetCursor__16wxSplitterWindowFR16wxSetCursorEvent
|
||||
;wxSplitterWindow::DoSplit(wxSplitMode,wxWindow*,wxWindow*,int)
|
||||
DoSplit__16wxSplitterWindowF11wxSplitModeP8wxWindowT2i
|
||||
;wxSplitterWindow::SetMinimumPaneSize(int)
|
||||
SetMinimumPaneSize__16wxSplitterWindowFi
|
||||
;wxSplitterWindow::DrawSashTracker(int,int)
|
||||
DrawSashTracker__16wxSplitterWindowFiT1
|
||||
;wxConstructorForwxSplitterWindow()
|
||||
@ -9771,6 +9773,8 @@ EXPORTS
|
||||
OnIdle__16wxSplitterWindowFR11wxIdleEvent
|
||||
;wxSplitterWindow::OnDoubleClick(wxSplitterEvent&)
|
||||
OnDoubleClick__16wxSplitterWindowFR15wxSplitterEvent
|
||||
;wxSplitterWindow::DoSetSashPosition(int)
|
||||
DoSetSashPosition__16wxSplitterWindowFi
|
||||
;wxSplitterWindow::Init()
|
||||
Init__16wxSplitterWindowFv
|
||||
;wxSplitterWindow::GetEventTable() const
|
||||
@ -11257,8 +11261,6 @@ EXPORTS
|
||||
wxInvertMask__FUliT2
|
||||
;wxMask::wxMask()
|
||||
__ct__6wxMaskFv
|
||||
;wxBitmap::wxBitmap(const char**)
|
||||
__ct__8wxBitmapFPPCc
|
||||
;wxMask::sm_classwxMask
|
||||
sm_classwxMask__6wxMask
|
||||
__vft8wxBitmap8wxObject
|
||||
@ -11301,8 +11303,8 @@ EXPORTS
|
||||
wxConstructorForwxBitmap__Fv
|
||||
;wxConstructorForwxMask()
|
||||
wxConstructorForwxMask__Fv
|
||||
;wxBitmap::wxBitmap(char**)
|
||||
__ct__8wxBitmapFPPc
|
||||
;wxBitmap::CreateFromXpm(const char**)
|
||||
CreateFromXpm__8wxBitmapFPPCc
|
||||
;wxBitmap::SetMask(wxMask*)
|
||||
SetMask__8wxBitmapFP6wxMask
|
||||
;From object file: ..\os2\bmpbuttn.cpp
|
||||
@ -14763,21 +14765,3 @@ EXPORTS
|
||||
SetTitle__8wxWindowFRC8wxString
|
||||
;wxWindow::sm_eventTableEntries
|
||||
sm_eventTableEntries__8wxWindow
|
||||
;From object file: ..\os2\xpmhand.cpp
|
||||
;PUBDEFs (Symbols available from object file):
|
||||
;wxXPMDataHandler::Create(wxBitmap*,void*,long,int,int,int)
|
||||
Create__16wxXPMDataHandlerFP8wxBitmapPvliN24
|
||||
__vft16wxXPMDataHandler8wxObject
|
||||
;wxConstructorForwxXPMFileHandler()
|
||||
wxConstructorForwxXPMFileHandler__Fv
|
||||
__vft16wxXPMFileHandler8wxObject
|
||||
;wxConstructorForwxXPMDataHandler()
|
||||
wxConstructorForwxXPMDataHandler__Fv
|
||||
;wxXPMFileHandler::LoadFile(wxBitmap*,const wxString&,long,int,int)
|
||||
LoadFile__16wxXPMFileHandlerFP8wxBitmapRC8wxStringliT4
|
||||
;wxXPMFileHandler::SaveFile(wxBitmap*,const wxString&,int,const wxPalette*)
|
||||
SaveFile__16wxXPMFileHandlerFP8wxBitmapRC8wxStringiPC9wxPalette
|
||||
;wxXPMDataHandler::sm_classwxXPMDataHandler
|
||||
sm_classwxXPMDataHandler__16wxXPMDataHandler
|
||||
;wxXPMFileHandler::sm_classwxXPMFileHandler
|
||||
sm_classwxXPMFileHandler__16wxXPMFileHandler
|
||||
|
@ -1,241 +0,0 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// Name: os2/xpmhand.cpp
|
||||
// Purpose: wxBitmap: XPM handler and constructors
|
||||
// Author: Julian Smart
|
||||
// Modified for OS/2 by: Evgeny Kotsuba
|
||||
// Created: 04/01/98
|
||||
// RCS-ID: $Id$
|
||||
// Copyright: (c) Julian Smart
|
||||
// Licence: wxWindows licence
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifdef __GNUG__
|
||||
#pragma implementation "xpmhand.h"
|
||||
#endif
|
||||
|
||||
// For compilers that support precompilation, includes "wx.h".
|
||||
//#include "wx/wxprec.h"
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#pragma hdrstop
|
||||
#endif
|
||||
|
||||
#ifndef WX_PRECOMP
|
||||
#include "wx/list.h"
|
||||
#include "wx/utils.h"
|
||||
#include "wx/app.h"
|
||||
#include "wx/palette.h"
|
||||
#include "wx/dcmemory.h"
|
||||
#include "wx/bitmap.h"
|
||||
#include "wx/icon.h"
|
||||
#endif
|
||||
|
||||
#include "wx/os2/private.h"
|
||||
#include "wx/log.h"
|
||||
|
||||
|
||||
#if wxUSE_XPM_IN_OS2
|
||||
#define FOR_MSW 1
|
||||
#include "xpm.h"
|
||||
#endif
|
||||
|
||||
#include "wx/xpmhand.h"
|
||||
|
||||
#if wxUSE_XPM_IN_OS2
|
||||
|
||||
static void XpmToBitmap(
|
||||
wxBitmap* pBitmap
|
||||
, const XImage* pXimage
|
||||
, const XImage* pXmask
|
||||
, const XpmAttributes& rXpmAttr
|
||||
)
|
||||
{
|
||||
wxBitmapRefData* pRefData = pBitmap->GetBitmapData();
|
||||
pRefData->m_hBitmap = (WXHBITMAP)pXimage->bitmap;
|
||||
|
||||
//
|
||||
// First set the bitmap width, height, depth...
|
||||
//
|
||||
BITMAPINFOHEADER vBm;
|
||||
|
||||
if (!::GpiQueryBitmapParameters( GetHbitmapOf(*pBitmap)
|
||||
,&vBm
|
||||
))
|
||||
{
|
||||
wxLogLastError(wxT("GetObject(pBitmap)"));
|
||||
}
|
||||
|
||||
pRefData->m_nWidth = vBm.cx;
|
||||
pRefData->m_nHeight = vBm.cy;
|
||||
pRefData->m_nDepth = vBm.cPlanes * vBm.cBitCount;
|
||||
pRefData->m_nNumColors = rXpmAttr.npixels;
|
||||
|
||||
if (pXmask)
|
||||
{
|
||||
wxMask* pMask = new wxMask();
|
||||
|
||||
pMask->SetMaskBitmap((WXHBITMAP) wxInvertMask( pXmask->bitmap
|
||||
,vBm.cx
|
||||
,vBm.cy
|
||||
));
|
||||
pBitmap->SetMask(pMask);
|
||||
}
|
||||
} // end of XpmToBitmap
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxXPMFileHandler, wxBitmapHandler)
|
||||
|
||||
bool wxXPMFileHandler::LoadFile(
|
||||
wxBitmap* pBitmap
|
||||
, const wxString& rName
|
||||
, long lFlags
|
||||
, int lDesiredWidth
|
||||
, int lDesiredHeight
|
||||
)
|
||||
{
|
||||
XImage* pXimage = NULL;
|
||||
XImage* pXmask = NULL;
|
||||
XpmAttributes vXpmAttr;
|
||||
HDC hDC;
|
||||
HPS hPS;
|
||||
DEVOPENSTRUC dOP = {0L, "DISPLAY", NULL, 0L, 0L, 0L, 0L, 0L, 0L};
|
||||
SIZEL vSizl;
|
||||
|
||||
hDC = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&dOP, NULLHANDLE);
|
||||
hPS = ::GpiCreatePS(vHabmain, hDC, &vSizl, PU_PELS | GPIT_MICRO | GPIA_ASSOC);
|
||||
if (hPS)
|
||||
{
|
||||
vXpmAttr.valuemask = XpmReturnPixels | XpmColorTable;
|
||||
|
||||
int nErrorStatus = XpmReadFileToImage( &hPS
|
||||
,wxMBSTRINGCAST rName.fn_str()
|
||||
,&pXimage
|
||||
,&pXmask
|
||||
,&vXpmAttr
|
||||
);
|
||||
::GpiDestroyPS(hPS);
|
||||
::DevCloseDC(hDC);
|
||||
if (nErrorStatus == XpmSuccess)
|
||||
{
|
||||
XpmToBitmap( pBitmap
|
||||
,pXimage
|
||||
,pXmask
|
||||
,vXpmAttr
|
||||
);
|
||||
XpmFree(vXpmAttr.pixels);
|
||||
XpmFreeAttributes(&vXpmAttr);
|
||||
XImageFree(pXimage);
|
||||
if (pXmask)
|
||||
XDestroyImage(pXmask);
|
||||
}
|
||||
return pBitmap->Ok();
|
||||
}
|
||||
return FALSE;
|
||||
} // end of wxXPMFileHandler::LoadFile
|
||||
|
||||
bool wxXPMFileHandler::SaveFile(
|
||||
wxBitmap* pBitmap
|
||||
, const wxString& rName
|
||||
, int lType
|
||||
, const wxPalette* pPalette
|
||||
)
|
||||
{
|
||||
XImage vXimage;
|
||||
XImage vXmask;
|
||||
bool bHasmask = FALSE;
|
||||
HDC hDC;
|
||||
HPS hPS;
|
||||
DEVOPENSTRUC dOP = {0L, "DISPLAY", NULL, 0L, 0L, 0L, 0L, 0L, 0L};
|
||||
SIZEL vSizl;
|
||||
|
||||
hDC = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&dOP, NULLHANDLE);
|
||||
hPS = ::GpiCreatePS(vHabmain, hDC, &vSizl, PU_PELS | GPIT_MICRO | GPIA_ASSOC);
|
||||
if (hPS)
|
||||
{
|
||||
// fill the XImage struct 'by hand'
|
||||
wxBitmapRefData* pRefData = pBitmap->GetBitmapData();
|
||||
|
||||
vXimage.width = pRefData->m_nWidth;
|
||||
vXimage.height = pRefData->m_nHeight;
|
||||
vXimage.depth = pRefData->m_nDepth;
|
||||
vXimage.bitmap = (HBITMAP)pRefData->m_hBitmap;
|
||||
|
||||
bHasmask = (pRefData->m_pBitmapMask != NULL);
|
||||
if (bHasmask)
|
||||
{
|
||||
//
|
||||
// Strangely enough, the MSW version of xpmlib is not
|
||||
// coherent with itself regarding masks; we have to invert
|
||||
// the mask we get when loading, but we still must pass it
|
||||
// 'as is' when saving...
|
||||
//
|
||||
vXmask.bitmap = (HBITMAP)pRefData->m_pBitmapMask->GetMaskBitmap();
|
||||
vXmask.width = pRefData->m_nWidth;
|
||||
vXmask.height = pRefData->m_nHeight;
|
||||
vXmask.depth = 1;
|
||||
}
|
||||
|
||||
int nErrorStatus = XpmWriteFileFromImage( &hPS
|
||||
,wxMBSTRINGCAST rName.fn_str()
|
||||
,&vXimage
|
||||
,(bHasmask? &vXmask : (XImage *)NULL)
|
||||
,(XpmAttributes *) NULL
|
||||
);
|
||||
::GpiDestroyPS(hPS);
|
||||
::DevCloseDC(hDC);
|
||||
return (nErrorStatus == XpmSuccess);
|
||||
}
|
||||
return FALSE;
|
||||
} // end of wxXPMFileHandler::SaveFile
|
||||
|
||||
IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler)
|
||||
|
||||
bool wxXPMDataHandler::Create(
|
||||
wxBitmap* pBitmap
|
||||
, void* pData
|
||||
, long lFlags
|
||||
, int nWidth
|
||||
, int nHeight
|
||||
, int nDepth
|
||||
)
|
||||
{
|
||||
XImage* pXimage = NULL;
|
||||
XImage* pXmask = NULL;
|
||||
XpmAttributes vXpmAttr;
|
||||
HDC hDC;
|
||||
HPS hPS;
|
||||
DEVOPENSTRUC dOP = {0L, "DISPLAY", NULL, 0L, 0L, 0L, 0L, 0L, 0L};
|
||||
SIZEL vSizl;
|
||||
|
||||
hDC = ::DevOpenDC(vHabmain, OD_MEMORY, "*", 5L, (PDEVOPENDATA)&dOP, NULLHANDLE);
|
||||
hPS = ::GpiCreatePS(vHabmain, hDC, &vSizl, PU_PELS | GPIT_MICRO | GPIA_ASSOC);
|
||||
if (hPS)
|
||||
{
|
||||
vXpmAttr.valuemask = XpmReturnInfos | XpmColorTable;
|
||||
|
||||
int nErrorStatus = XpmCreateImageFromData( &hPS
|
||||
,(char **)pData
|
||||
,&pXimage
|
||||
,&pXmask
|
||||
,&vXpmAttr
|
||||
);
|
||||
::GpiDestroyPS(hPS);
|
||||
::DevCloseDC(hDC);
|
||||
if (nErrorStatus == XpmSuccess)
|
||||
{
|
||||
XpmToBitmap( pBitmap
|
||||
,pXimage
|
||||
,pXmask
|
||||
,vXpmAttr
|
||||
);
|
||||
XpmFree(vXpmAttr.pixels);
|
||||
XpmFreeAttributes(&vXpmAttr);
|
||||
XImageFree(pXimage); // releases the malloc, but does not destroy bitmap
|
||||
if (pXmask)
|
||||
XDestroyImage(pXmask);
|
||||
}
|
||||
return pBitmap->Ok();
|
||||
}
|
||||
return FALSE;
|
||||
} // end of wxXPMDataHandler::Create
|
||||
|
||||
#endif // wxUSE_XPM_IN_OS2
|
Loading…
Reference in New Issue
Block a user