For wxMSW, split XPM handler into separate file (please add handler explicitly in app);

doc changes espec. wxBitmap overview


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@1416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Julian Smart
1999-01-16 22:17:13 +00:00
parent a4abc0fc8d
commit 2fd284a4a0
28 changed files with 1643 additions and 497 deletions

View File

@@ -115,8 +115,8 @@ samples/typetest/TypetestVC.dsw
samples/validate/ValidateVC.dsp samples/validate/ValidateVC.dsp
samples/validate/ValidateVC.dsw samples/validate/ValidateVC.dsw
samples/wxsocket/SocketVC.dsp samples/wxsocket/ClientVC.dsp
samples/wxsocket/SocketVC.dsw samples/wxsocket/ServerVC.dsw
samples/wxpoem/PoemVC.dsp samples/wxpoem/PoemVC.dsp
samples/wxpoem/PoemVC.dsw samples/wxpoem/PoemVC.dsw
@@ -129,12 +129,17 @@ utils/wxprop/src/PropSampleVC.dsw
utils/dialoged/src/DialogEdVC.dsp utils/dialoged/src/DialogEdVC.dsp
utils/dialoged/src/DialogEdVC.dsw utils/dialoged/src/DialogEdVC.dsw
utils/tex2rtf/src/Tex2RTFVC.dsp
utils/tex2rtf/src/Tex2RTFVC.dsw
utils/glcanvas/win/GlcanvasVC.dsp utils/glcanvas/win/GlcanvasVC.dsp
utils/glcanvas/win/GlcanvasVC.dsw utils/glcanvas/win/GlcanvasVC.dsw
utils/glcanvas/samples/cube/CubeVC.dsp utils/glcanvas/samples/cube/CubeVC.dsp
utils/glcanvas/samples/cube/CubeVC.dsw utils/glcanvas/samples/cube/CubeVC.dsw
utils/glcanvas/samples/isosurf/IsosurfVC.dsp utils/glcanvas/samples/isosurf/IsosurfVC.dsp
utils/glcanvas/samples/isosurf/IsosurfVC.dsw utils/glcanvas/samples/isosurf/IsosurfVC.dsw
utils/glcanvas/samples/penguin/PenguinVC.dsp
utils/glcanvas/samples/penguin/PenguinVC.dsw
utils/ogl/src/OglVC.dsp utils/ogl/src/OglVC.dsp
utils/ogl/src/OglVC.dsw utils/ogl/src/OglVC.dsw

View File

@@ -30,15 +30,13 @@ a reference to your application object) to be visible to other files.
\membersection{wxApp::wxApp} \membersection{wxApp::wxApp}
\func{void}{wxApp}{\param{int}{ language = wxLANGUAGE\_ENGLISH}} \func{void}{wxApp}{\void}
Constructor. Called implicitly with a definition of a wxApp object. Constructor. Called implicitly with a definition of a wxApp object.
The argument is a language identifier; this is an experimental The argument is a language identifier; this is an experimental
feature and will be expanded and documented in future versions. feature and will be expanded and documented in future versions.
TODO: completely rewrite the language stuff.
\membersection{wxApp::\destruct{wxApp}} \membersection{wxApp::\destruct{wxApp}}
\func{void}{\destruct{wxApp}}{\void} \func{void}{\destruct{wxApp}}{\void}

View File

@@ -12,7 +12,11 @@ either monochrome or colour.
\wxheading{See also} \wxheading{See also}
\helpref{wxBitmap overview}{wxbitmapoverview}, \helpref{wxDC::Blit}{wxdcblit}, \helpref{wxIcon}{wxicon}, \helpref{wxCursor}{wxcursor}, \helpref{wxMemoryDC}{wxmemorydc} \helpref{wxBitmap overview}{wxbitmapoverview},
\helpref{supported bitmap file formats}{supportedbitmapformats},
\helpref{wxDC::Blit}{wxdcblit},
\helpref{wxIcon}{wxicon}, \helpref{wxCursor}{wxcursor}, \helpref{wxBitmap}{wxbitmap},
\helpref{wxMemoryDC}{wxmemorydc}
\latexignore{\rtfignore{\wxheading{Members}}} \latexignore{\rtfignore{\wxheading{Members}}}
@@ -74,8 +78,9 @@ Its meaning is determined by the {\it type} parameter.}
\end{twocollist} \end{twocollist}
The validity of these flags depends on the platform and wxWindows configuration. The validity of these flags depends on the platform and wxWindows configuration.
If all possible wxWindows settings are used, the Windows platform supports BMP, BMP\_RESOURCE, If all possible wxWindows settings are used, the Windows platform supports BMP file, BMP resource,
XPM\_DATA, and XPM. Under X, the available formats are BMP, GIF, XBM, and XPM.} XPM data, and XPM. Under wxGTK, the available formats are BMP file, XPM data, XPM file, and PNG file.
Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM file.}
\wxheading{Remarks} \wxheading{Remarks}
@@ -113,7 +118,7 @@ The eighth form constructs a bitmap from a file or resource. {\it name} can refe
to a resource name under MS Windows, or a filename under MS Windows and X. to a resource name under MS Windows, or a filename under MS Windows and X.
Under Windows, {\it type} defaults to wxBITMAP\_TYPE\_BMP\_RESOURCE. Under Windows, {\it type} defaults to wxBITMAP\_TYPE\_BMP\_RESOURCE.
Under X, {\it type} defaults to wxBITMAP\_TYPE\_XBM. Under X, {\it type} defaults to wxBITMAP\_TYPE\_XPM.
\wxheading{See also} \wxheading{See also}

View File

@@ -1,41 +1,32 @@
\section{\class{wxIcon}}\label{wxicon} \section{\class{wxIcon}}\label{wxicon}
An icon is a small rectangular bitmap usually used for denoting a An icon is a small rectangular bitmap usually used for denoting a
minimized application. minimized application. It differs from a wxBitmap in always
having a mask associated with it for transparent drawing. On some platforms,
icons and bitmaps are implemented identically, since there is no real distinction between
a wxBitmap with a mask and an icon; and there is no specific icon format on
some platforms (X-based applications usually standardize on XPMs for small bitmaps
and icons). However, some platforms (such as Windows) make the distinction, so
a separate class is provided.
\wxheading{Remarks} \wxheading{Remarks}
It is optional (but desirable) to associate a It is usually desirable to associate a pertinent icon with a frame. Icons
pertinent icon with a frame. Obviously icons in X and MS Windows are can also be used for other purposes, for example with \helpref{wxTreeCtrl}{wxtreectrl}
created in a different manner, and colour icons in X are difficult and \helpref{wxListCtrl}{wxlistctrl}.
to arrange. Therefore, separate icons will be created for the different
Icons have different formats on different platforms.
Therefore, separate icons will usually be created for the different
environments. Platform-specific methods for creating a {\bf wxIcon}\rtfsp environments. Platform-specific methods for creating a {\bf wxIcon}\rtfsp
structure are catered for, and this is an occasion where conditional structure are catered for, and this is an occasion where conditional
compilation will probably be required. compilation will probably be required.
Note that a new icon must be created for every time the icon is to be Note that a new icon must be created for every time the icon is to be
used for a new window. In X, this will ensure that fresh X resources used for a new window. In Windows, the icon will not be
are allocated for this frame. In MS Windows, the icon will not be
reloaded if it has already been used. An icon allocated to a frame will reloaded if it has already been used. An icon allocated to a frame will
be deleted when the frame is deleted. be deleted when the frame is deleted.
The following shows the conditional compilation required to define an For more information please see \helpref{Bitmap and icon overview}{wxbitmapoverview}.
icon in X and in MS Windows. The alternative is to use the string
version of the icon constructor, which loads a file under X and a
resource under MS Windows, but has the disadvantage of requiring the
X icon file to be available at run-time.
\begin{verbatim}
#ifdef wx_x
#include "aiai.xbm"
#endif
#ifdef wx_msw
wxIcon *icon = new wxIcon("aiai");
#endif
#ifdef wx_x
wxIcon *icon = new wxIcon(aiai_bits, aiai_width, aiai_height);
#endif
\end{verbatim}
\wxheading{Derived from} \wxheading{Derived from}
@@ -45,7 +36,8 @@ X icon file to be available at run-time.
\wxheading{See also} \wxheading{See also}
\helpref{wxIcon overview}{wxiconoverview}, \helpref{wxDC::DrawIcon}{wxdcdrawicon}, \helpref{wxCursor}{wxcursor} \helpref{Bitmap and icon overview}{wxbitmapoverview}, \helpref{supported bitmap file formats}{supportedbitmapformats},
\helpref{wxDC::DrawIcon}{wxdcdrawicon}, \helpref{wxCursor}{wxcursor}
\latexignore{\rtfignore{\wxheading{Members}}} \latexignore{\rtfignore{\wxheading{Members}}}
@@ -116,8 +108,9 @@ Its meaning is determined by the {\it flags} parameter.}
\end{twocollist} \end{twocollist}
The validity of these flags depends on the platform and wxWindows configuration. The validity of these flags depends on the platform and wxWindows configuration.
If all possible wxWindows settings are used, the Windows platform supports ICO, ICO\_RESOURCE, If all possible wxWindows settings are used, the Windows platform supports ICO file, ICO resource,
XPM\_DATA, and XPM. Under X, the available formats are BMP, GIF, XBM, and XPM.} XPM data, and XPM file. Under wxGTK, the available formats are BMP file, XPM data, XPM file, and PNG file.
Under wxMotif, the available formats are XBM data, XBM file, XPM data, XPM file.}
\wxheading{Remarks} \wxheading{Remarks}
@@ -151,11 +144,28 @@ of character pointers called mybitmap:
wxIcon *icon = new wxIcon(mybitmap); wxIcon *icon = new wxIcon(mybitmap);
\end{verbatim} \end{verbatim}
A macro, wxICON, is available which creates an icon using an XPM
on the appropriate platform, or an icon resource on Windows.
\begin{verbatim}
wxIcon icon(wxICON(mondrian));
// Equivalent to:
#if defined(__WXGTK__) || defined(__WXMOTIF__)
wxIcon icon(mondrian_xpm);
#endif
#if defined(__WXMSW__)
wxIcon icon("mondrian");
#endif
\end{verbatim}
The eighth form constructs an icon from a file or resource. {\it name} can refer The eighth form constructs an icon from a file or resource. {\it name} can refer
to a resource name under MS Windows, or a filename under MS Windows and X. to a resource name under MS Windows, or a filename under MS Windows and X.
Under Windows, {\it type} defaults to wxBITMAP\_TYPE\_ICO\_RESOURCE. Under Windows, {\it type} defaults to wxBITMAP\_TYPE\_ICO\_RESOURCE.
Under X, {\it type} defaults to wxBITMAP\_TYPE\_XBM. Under X, {\it type} defaults to wxBITMAP\_TYPE\_XPM.
\wxheading{See also} \wxheading{See also}
@@ -175,46 +185,6 @@ destroyed automatically by wxWindows when the application exits.
Do not delete an icon that is selected into a memory device context. Do not delete an icon that is selected into a memory device context.
\begin{comment}
\membersection{wxIcon::Create}\label{wxiconcreate}
\func{virtual bool}{Create}{\param{int}{ width}, \param{int}{ height}, \param{int}{ depth = -1}}
Creates a fresh icon. If the final argument is omitted, the display depth of
the screen is used.
\func{virtual bool}{Create}{\param{void*}{ data}, \param{int}{ type}, \param{int}{ width}, \param{int}{ height}, \param{int}{ depth = -1}}
Creates an icon from the given data, which can be of arbitrary type.
\wxheading{Parameters}
\docparam{width}{The width of the icon in pixels.}
\docparam{height}{The height of the icon in pixels.}
\docparam{depth}{The depth of the icon in pixels. If this is -1, the screen depth is used.}
\docparam{data}{Data whose type depends on the value of {\it type}.}
\docparam{type}{An icon type identifier - see \helpref{wxIcon::wxIcon}{wxiconconstr} for a list
of possible values.}
\wxheading{Return value}
TRUE if the call succeeded, FALSE otherwise.
\wxheading{Remarks}
The first form works on all platforms. The portability of the second form depends on the
type of data.
\wxheading{See also}
\helpref{wxIcon::wxIcon}{wxiconconstr}
\end{comment}
\membersection{wxIcon::GetDepth} \membersection{wxIcon::GetDepth}
\constfunc{int}{GetDepth}{\void} \constfunc{int}{GetDepth}{\void}

View File

@@ -1,4 +1,4 @@
\section{Bitmaps overview}\label{wxbitmapoverview} \section{Bitmaps and icons overview}\label{wxbitmapoverview}
Classes: \helpref{wxBitmap}{wxbitmap}, \helpref{wxBitmapHandler}{wxbitmaphandler}, \helpref{wxIcon}{wxicon}, \helpref{wxCursor}{wxcursor}. Classes: \helpref{wxBitmap}{wxbitmap}, \helpref{wxBitmapHandler}{wxbitmaphandler}, \helpref{wxIcon}{wxicon}, \helpref{wxCursor}{wxcursor}.
@@ -19,40 +19,120 @@ version of the graphic which appears on the main window.
See \helpref{wxMemoryDC}{wxmemorydc} for an example of drawing onto a bitmap. See \helpref{wxMemoryDC}{wxmemorydc} for an example of drawing onto a bitmap.
The following shows the conditional compilation required to load a The following shows the conditional compilation required to load a
bitmap in X and in Windows 3. The alternative is to use the string bitmap under Unix and in Windows. The alternative is to use the string
version of the bitmap constructor, which loads a file under X and a version of the bitmap constructor, which loads a file under Unix and a
resource under Windows 3, but has the disadvantage of requiring the resource or file under Windows, but has the disadvantage of requiring the
X icon file to be available at run-time. XPM icon file to be available at run-time.
\begin{verbatim} \begin{verbatim}
#ifdef wx_x #if defined(__WXGTK__) || defined(__WXMOTIF__)
#include "aiai.xbm" #include "mondrian.xpm"
#endif
#ifdef wx_msw
wxIcon *icon = new wxBitmap("aiai");
#endif
#ifdef wx_x
wxIcon *icon = new wxBitmap(aiai_bits, aiai_width, aiai_height);
#endif #endif
\end{verbatim} \end{verbatim}
\subsection{Loading bitmaps: further information} A macro, wxICON, is available which creates an icon using an XPM
on the appropriate platform, or an icon resource on Windows.
There is provision for a number of bitmap \begin{verbatim}
formats via the standard wxBitmap class. These facilities can wxIcon icon(wxICON(mondrian));
be enabled or disabled using settings in wx\_setup.h.
XPM colour pixmaps may be loaded and saved under Windows and X, with // Equivalent to:
some restrictions imposed by the lack of colourmap facility when
using XPM files. The user may elect to use XPM files as a cross-platform
stabdard, or translate between XPM and BMP files using a suitable
utility.
Also, under Windows, DIBs (device independent bitmaps with extension BMP) #if defined(__WXGTK__) || defined(__WXMOTIF__)
may be dynamically loaded and saved. Under X, GIF and BMP files may be wxIcon icon(mondrian_xpm);
loaded but not saved. #endif
\subsection{Bitmap format handlers} #if defined(__WXMSW__)
wxIcon icon("mondrian");
#endif
\end{verbatim}
\subsection{Supported bitmap file formats}\label{supportedbitmapformats}
The following lists the formats handled on different platforms. Note
that missing or partially-implemented formats can be supplemented
by using \helpref{wxImage}{wximage} to load the data, and then converting
it to wxBitmap form.
\wxheading{wxBitmap}
Under Windows, wxBitmap may load the following formats:
\begin{itemize}\itemsep=0pt
\item Windows bitmap resource (wxBITMAP\_TYPE\_BMP\_RESOURCE)
\item Windows bitmap file (wxBITMAP\_TYPE\_BMP)
\item PNG file (wxBITMAP\_TYPE\_PNG). Currently 4-bit (16-colour) PNG files do not load properly.
\item XPM data and file (wxBITMAP\_TYPE\_XPM)
\end{itemize}
Under wxGTK, wxBitmap may load the following formats:
\begin{itemize}\itemsep=0pt
\item Windows bitmap file (wxBITMAP\_TYPE\_BMP)
\item PNG (wxBITMAP\_TYPE\_PNG).
\item XPM data and file (wxBITMAP\_TYPE\_XPM)
\end{itemize}
Under wxMotif, wxBitmap may load the following formats:
\begin{itemize}\itemsep=0pt
%\item Windows bitmap file (wxBITMAP\_TYPE\_BMP)
%\item PNG (wxBITMAP\_TYPE\_PNG).
\item XBM data and file (wxBITMAP\_TYPE\_XBM)
\item XPM data and file (wxBITMAP\_TYPE\_XPM)
\end{itemize}
\wxheading{wxIcon}
Under Windows, wxIcon may load the following formats:
\begin{itemize}\itemsep=0pt
\item Windows icon resource (wxBITMAP\_TYPE\_ICO\_RESOURCE)
\item Windows icon file (wxBITMAP\_TYPE\_ICO)
\item XPM data and file (wxBITMAP\_TYPE\_XPM)
\end{itemize}
Under wxGTK, wxIcon may load the following formats:
\begin{itemize}\itemsep=0pt
\item PNG (wxBITMAP\_TYPE\_PNG).
\item XPM data and file (wxBITMAP\_TYPE\_XPM)
\end{itemize}
Under wxMotif, wxIcon may load the following formats:
\begin{itemize}\itemsep=0pt
%\item Windows bitmap file (wxBITMAP\_TYPE\_BMP)
%\item PNG (wxBITMAP\_TYPE\_PNG).
\item XBM data and file (wxBITMAP\_TYPE\_XBM)
\item XPM data and file (wxBITMAP\_TYPE\_XPM)
\end{itemize}
\wxheading{wxCursor}
Under Windows, wxCursor may load the following formats:
\begin{itemize}\itemsep=0pt
\item Windows cursor resource (wxBITMAP\_TYPE\_CUR\_RESOURCE)
\item Windows cursor file (wxBITMAP\_TYPE\_CUR)
\item Windows icon file (wxBITMAP\_TYPE\_ICO)
\item Windows bitmap file (wxBITMAP\_TYPE\_BMP)
\end{itemize}
Under wxGTK, wxCursor may load the following formats (in additional
to stock cursors):
\begin{itemize}\itemsep=0pt
\item None (stock cursors only).
\end{itemize}
Under wxMotif, wxCursor may load the following formats:
\begin{itemize}\itemsep=0pt
\item XBM data and file (wxBITMAP\_TYPE\_XBM)
\end{itemize}
\subsection{Bitmap format handlers}\label{bitmaphandlers}
To provide extensibility, the functionality for loading and saving bitmap formats To provide extensibility, the functionality for loading and saving bitmap formats
is not implemented in the wxBitmap class, but in a number of handler classes, is not implemented in the wxBitmap class, but in a number of handler classes,
@@ -66,20 +146,21 @@ then call the static function \helpref{wxBitmap::AddHandler}{wxbitmapaddhandler}
{\small {\small
\begin{verbatim} \begin{verbatim}
#include "JPEGBitmapHandler.h" #include <wx/pnghand.h>
#include <wx/xpmhand.h>
... ...
// Initialisation // Initialisation
wxBitmap::AddHandler(new wxJPEGBitmapHandler); wxBitmap::AddHandler(new wxPNGFileHandler);
wxBitmap::AddHandler(new wxXPMFileHandler);
wxBitmap::AddHandler(new wxXPMDataHandler);
... ...
\end{verbatim} \end{verbatim}
} }
Assuming wxJPEGBitmapHandler has been written correctly, you should now be able to load and save JPEG files Assuming the handlers have been written correctly, you should now be able to load and save PNG files
using the usual wxBitmap API. and XPM files using the usual wxBitmap API.
To see how bitmap handlers are implemented, please look at the files {\tt bitmap.h} and {\tt bitmap.cpp}. {\bf Note:} bitmap handlers are not implemented on all platforms. Currently, the above is only necessary on
Windows, to save the extra overhead of formats that may not be necessary (if you don't use them, they
\subsection{wxIcon overview}\label{wxiconoverview} are not linked into the executable). Unix platforms have PNG and XPM capability built-in (where supported).
TODO.

View File

@@ -110,9 +110,8 @@ dialog, using the EVT\_CLOSE macro. The event handler function might look like t
\wxheading{How do I exit the application gracefully?} \wxheading{How do I exit the application gracefully?}
A wxWindows application automatically exits when the top frame (returned A wxWindows application automatically exits when the designated top window, or the
from \helpref{wxApp::OnInit}{wxapponinit}) is destroyed. This may be modified last frame or dialog, is destroyed.
in later versions to exit only when the {\it last} top-level frame is destroyed.
\wxheading{Do child windows get deleted automatically?} \wxheading{Do child windows get deleted automatically?}

View File

@@ -41,6 +41,8 @@ High Priority
- Get wxGLCanvas from 1.68 working. - Get wxGLCanvas from 1.68 working.
- Use wxImage to load other formats into wxBitmaps, such as PNG, BMP.
Low Priority Low Priority
------------ ------------

View File

@@ -129,11 +129,9 @@ public:
// Initialize with raw data // Initialize with raw data
wxBitmap(const char bits[], int width, int height, int depth = 1); wxBitmap(const char bits[], int width, int height, int depth = 1);
#if wxUSE_XPM_IN_MSW class WXDLLEXPORT wxItem;
class wxItem;
// Initialize with XPM data // Initialize with XPM data
wxBitmap(char **data, wxItem *anItem = NULL); wxBitmap(char **data, wxItem *anItem = NULL);
#endif
// Load a file or resource // Load a file or resource
wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE); wxBitmap(const wxString& name, long type = wxBITMAP_TYPE_BMP_RESOURCE);

View File

@@ -13,6 +13,9 @@
#pragma interface "pnghand.h" #pragma interface "pnghand.h"
#endif #endif
#ifndef _WX_PNGHAND_H_
#define _WX_PNGHAND_H_
class WXDLLEXPORT wxPNGFileHandler: public wxBitmapHandler class WXDLLEXPORT wxPNGFileHandler: public wxBitmapHandler
{ {
DECLARE_DYNAMIC_CLASS(wxPNGFileHandler) DECLARE_DYNAMIC_CLASS(wxPNGFileHandler)
@@ -29,3 +32,6 @@ public:
virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL); virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
}; };
#endif
// _WX_PNGHAND_H_

View File

@@ -79,7 +79,7 @@
#define wxUSE_SCROLLBAR 1 #define wxUSE_SCROLLBAR 1
// Define 1 to compile contributed wxScrollBar class // Define 1 to compile contributed wxScrollBar class
#define wxUSE_XPM_IN_MSW 0 #define wxUSE_XPM_IN_MSW 1
// Define 1 to support the XPM package in wxBitmap. // Define 1 to support the XPM package in wxBitmap.
#define wxUSE_IMAGE_LOADING_IN_MSW 1 #define wxUSE_IMAGE_LOADING_IN_MSW 1
// Use dynamic DIB loading/saving code in utils/dib under MSW. // Use dynamic DIB loading/saving code in utils/dib under MSW.

51
include/wx/msw/xpmhand.h Normal file
View File

@@ -0,0 +1,51 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xpmhand.h
// Purpose: XPM bitmap handler
// Author: Julian Smart
// Modified by:
// Created: 04/01/98
// RCS-ID: $Id$
// Copyright: (c) Julian Smart
// Licence: wxWindows licence
/////////////////////////////////////////////////////////////////////////////
#ifdef __GNUG__
#pragma interface "xpmhand.h"
#endif
#ifndef _WX_XPMHAND_H_
#define _WX_XPMHAND_H_
class WXDLLEXPORT wxXPMFileHandler: public wxBitmapHandler
{
DECLARE_DYNAMIC_CLASS(wxXPMFileHandler)
public:
inline wxXPMFileHandler(void)
{
m_name = "XPM bitmap file";
m_extension = "xpm";
m_type = wxBITMAP_TYPE_XPM;
};
virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
int desiredWidth = -1, int desiredHeight = -1);
virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
};
class WXDLLEXPORT wxXPMDataHandler: public wxBitmapHandler
{
DECLARE_DYNAMIC_CLASS(wxXPMDataHandler)
public:
inline wxXPMDataHandler(void)
{
m_name = "XPM bitmap data";
m_extension = "xpm";
m_type = wxBITMAP_TYPE_XPM_DATA;
};
virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1);
};
#endif
// _WX_XPMHAND_H_

11
include/wx/xpmhand.h Normal file
View File

@@ -0,0 +1,11 @@
#ifndef _WX_XPMHAND_H_BASE_
#define _WX_XPMHAND_H_BASE_
// Only wxMSW currently defines a separate XPM handler, since
// mostly Windows apps won't need XPMs.
#if defined(__WXMSW__)
#include "wx/msw/xpmhand.h"
#endif
#endif
// _WX_XPMHAND_H_BASE_

View File

@@ -23,69 +23,73 @@ LINK_DEBUG_FLAGS="/RELEASE"
all: all:
cd $(WXDIR)\samples\splitter cd $(WXDIR)\samples\splitter
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\resource cd $(WXDIR)\samples\resource
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\controls cd $(WXDIR)\samples\controls
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\listctrl cd $(WXDIR)\samples\listctrl
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\treectrl cd $(WXDIR)\samples\treectrl
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\validate cd $(WXDIR)\samples\validate
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\mdi cd $(WXDIR)\samples\mdi
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\minimal cd $(WXDIR)\samples\minimal
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\layout cd $(WXDIR)\samples\layout
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\printing cd $(WXDIR)\samples\printing
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\toolbar cd $(WXDIR)\samples\toolbar
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\dialogs cd $(WXDIR)\samples\dialogs
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\docview cd $(WXDIR)\samples\docview
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\docvwmdi cd $(WXDIR)\samples\docvwmdi
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\controls cd $(WXDIR)\samples\controls
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\nativdlg cd $(WXDIR)\samples\nativdlg
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\grid cd $(WXDIR)\samples\grid
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\internat cd $(WXDIR)\samples\internat
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\dnd cd $(WXDIR)\samples\dnd
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\joytest cd $(WXDIR)\samples\joytest
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\taskbar cd $(WXDIR)\samples\taskbar
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\sashtest cd $(WXDIR)\samples\sashtest
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
!if "$(FINAL)" == "0"
cd $(WXDIR)\samples\memcheck cd $(WXDIR)\samples\memcheck
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) !endif
nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\ownerdrw cd $(WXDIR)\samples\ownerdrw
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\checklst cd $(WXDIR)\samples\checklst
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\minifram cd $(WXDIR)\samples\minifram
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\bombs cd $(WXDIR)\samples\bombs
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\fractal cd $(WXDIR)\samples\fractal
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\wxpoem cd $(WXDIR)\samples\wxpoem
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\types cd $(WXDIR)\samples\typetest
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\proplist cd $(WXDIR)\samples\proplist
nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\samples\image
nmake -f makefile.nt FINAL=$(FINAL)
# cd $(WXDIR)\samples\regtest # cd $(WXDIR)\samples\regtest
# nmake -f makefile.nt DEBUG_FLAGS=$(DEBUG_FLAGS) LINK_DEBUG_FLAGS=$(LINK_DEBUG_FLAGS) # nmake -f makefile.nt FINAL=$(FINAL)
clean: clean:
cd $(WXDIR)\samples\splitter cd $(WXDIR)\samples\splitter
@@ -146,8 +150,10 @@ clean:
nmake -f makefile.nt clean nmake -f makefile.nt clean
cd $(WXDIR)\samples\wxpoem cd $(WXDIR)\samples\wxpoem
nmake -f makefile.nt clean nmake -f makefile.nt clean
cd $(WXDIR)\samples\types cd $(WXDIR)\samples\typetest
nmake -f makefile.nt clean nmake -f makefile.nt clean
cd $(WXDIR)\samples\proplist cd $(WXDIR)\samples\proplist
nmake -f makefile.nt clean nmake -f makefile.nt clean
cd $(WXDIR)\samples\image
nmake -f makefile.nt clean

View File

@@ -22,6 +22,7 @@
#ifdef __WXMSW__ #ifdef __WXMSW__
#include <wx/pnghand.h> #include <wx/pnghand.h>
// #include <wx/xpmhand.h>
#endif #endif
#include "pngdemo.h" #include "pngdemo.h"
@@ -39,6 +40,8 @@ bool MyApp::OnInit(void)
{ {
#ifdef __WXMSW__ #ifdef __WXMSW__
wxBitmap::AddHandler(new wxPNGFileHandler); wxBitmap::AddHandler(new wxPNGFileHandler);
// wxBitmap::AddHandler(new wxXPMFileHandler);
// wxBitmap::AddHandler(new wxXPMDataHandler);
#endif #endif
// Create the main frame window // Create the main frame window

View File

@@ -37,11 +37,6 @@
#include "assert.h" #include "assert.h"
#if wxUSE_XPM_IN_MSW
#define FOR_MSW 1
#include "../src/xpm/xpm34.h"
#endif
#include "wx/msw/dib.h" #include "wx/msw/dib.h"
#if !USE_SHARED_LIBRARIES #if !USE_SHARED_LIBRARIES
@@ -146,6 +141,12 @@ wxBitmap::wxBitmap(const char bits[], int the_width, int the_height, int no_bits
wxTheBitmapList->AddBitmap(this); wxTheBitmapList->AddBitmap(this);
} }
// Create from XPM data
wxBitmap::wxBitmap(char **data, wxItem *WXUNUSED(anItem))
{
(void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
}
wxBitmap::wxBitmap(int w, int h, int d) wxBitmap::wxBitmap(int w, int h, int d)
{ {
(void)Create(w, h, d); (void)Create(w, h, d);
@@ -170,14 +171,6 @@ wxBitmap::wxBitmap(const wxString& filename, long type)
wxTheBitmapList->AddBitmap(this); wxTheBitmapList->AddBitmap(this);
} }
#if wxUSE_XPM_IN_MSW
// Create from data
wxBitmap::wxBitmap(char **data, wxItem *WXUNUSED(anItem))
{
(void) Create((void *)data, wxBITMAP_TYPE_XPM_DATA, 0, 0, 0);
}
#endif
bool wxBitmap::Create(int w, int h, int d) bool wxBitmap::Create(int w, int h, int d)
{ {
UnRef(); UnRef();
@@ -696,169 +689,6 @@ bool wxBMPFileHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type
#endif #endif
} }
class WXDLLEXPORT wxXPMFileHandler: public wxBitmapHandler
{
DECLARE_DYNAMIC_CLASS(wxXPMFileHandler)
public:
inline wxXPMFileHandler(void)
{
m_name = "XPM bitmap file";
m_extension = "xpm";
m_type = wxBITMAP_TYPE_XPM;
};
virtual bool LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
int desiredWidth = -1, int desiredHeight = -1);
virtual bool SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette = NULL);
};
IMPLEMENT_DYNAMIC_CLASS(wxXPMFileHandler, wxBitmapHandler)
bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
int desiredWidth, int desiredHeight)
{
#if wxUSE_XPM_IN_MSW
XImage *ximage;
XpmAttributes xpmAttr;
HDC dc;
M_BITMAPHANDLERDATA->m_ok = FALSE;
dc = CreateCompatibleDC(NULL);
if (dc)
{
xpmAttr.valuemask = XpmReturnPixels;
int errorStatus = XpmReadFileToImage(&dc, WXSTRINGCAST name, &ximage, (XImage **) NULL, &xpmAttr);
DeleteDC(dc);
if (errorStatus == XpmSuccess)
{
M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ximage->bitmap;
BITMAP bm;
GetObject((HBITMAP)M_BITMAPHANDLERDATA->m_hBitmap, sizeof(bm), (LPSTR) & bm);
M_BITMAPHANDLERDATA->m_width = (bm.bmWidth);
M_BITMAPHANDLERDATA->m_height = (bm.bmHeight);
M_BITMAPHANDLERDATA->m_depth = (bm.bmPlanes * bm.bmBitsPixel);
M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
XpmFreeAttributes(&xpmAttr);
XImageFree(ximage);
M_BITMAPHANDLERDATA->m_ok = TRUE;
return TRUE;
}
else
{
M_BITMAPHANDLERDATA->m_ok = FALSE;
return FALSE;
}
}
#endif
return FALSE;
}
bool wxXPMFileHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette)
{
#if wxUSE_XPM_IN_MSW
HDC dc = NULL;
XImage ximage;
dc = CreateCompatibleDC(NULL);
if (dc)
{
if (SelectObject(dc, (HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap))
{
/* for following SetPixel */
/* fill the XImage struct 'by hand' */
ximage.width = M_BITMAPHANDLERDATA->m_width;
ximage.height = M_BITMAPHANDLERDATA->m_height;
ximage.depth = M_BITMAPHANDLERDATA->m_depth;
ximage.bitmap = (HBITMAP)M_BITMAPHANDLERDATA->m_hBitmap;
int errorStatus = XpmWriteFileFromImage(&dc, WXSTRINGCAST name,
&ximage, (XImage *) NULL, (XpmAttributes *) NULL);
if (dc)
DeleteDC(dc);
if (errorStatus == XpmSuccess)
return TRUE; /* no error */
else
return FALSE;
} else return FALSE;
} else return FALSE;
#else
return FALSE;
#endif
}
class WXDLLEXPORT wxXPMDataHandler: public wxBitmapHandler
{
DECLARE_DYNAMIC_CLASS(wxXPMDataHandler)
public:
inline wxXPMDataHandler(void)
{
m_name = "XPM bitmap data";
m_extension = "xpm";
m_type = wxBITMAP_TYPE_XPM_DATA;
};
virtual bool Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth = 1);
};
IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler)
bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth)
{
#if wxUSE_XPM_IN_MSW
XImage *ximage;
int ErrorStatus;
XpmAttributes xpmAttr;
HDC dc;
M_BITMAPHANDLERDATA->m_ok = FALSE;
M_BITMAPHANDLERDATA->m_numColors = 0;
dc = CreateCompatibleDC(NULL); /* memory DC */
if (dc)
{
xpmAttr.valuemask = XpmReturnInfos; /* get infos back */
ErrorStatus = XpmCreateImageFromData(&dc, (char **)data,
&ximage, (XImage **) NULL, &xpmAttr);
if (ErrorStatus == XpmSuccess)
{
/* ximage is malloced and contains bitmap and attributes */
M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ximage->bitmap;
BITMAP bm;
GetObject((HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap, sizeof(bm), (LPSTR) & bm);
M_BITMAPHANDLERDATA->m_width = (bm.bmWidth);
M_BITMAPHANDLERDATA->m_height = (bm.bmHeight);
M_BITMAPHANDLERDATA->m_depth = (bm.bmPlanes * bm.bmBitsPixel);
M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
XpmFreeAttributes(&xpmAttr);
XImageFree(ximage); // releases the malloc, but does not detroy
// the bitmap
M_BITMAPHANDLERDATA->m_ok = TRUE;
DeleteDC(dc);
return TRUE;
}
else
{
M_BITMAPHANDLERDATA->m_ok = FALSE;
// XpmDebugError(ErrorStatus, NULL);
DeleteDC(dc);
return FALSE;
}
}
#endif
return FALSE;
}
void wxBitmap::CleanUpHandlers(void) void wxBitmap::CleanUpHandlers(void)
{ {
wxNode *node = sm_handlers.First(); wxNode *node = sm_handlers.First();
@@ -876,8 +706,12 @@ void wxBitmap::InitStandardHandlers(void)
{ {
AddHandler(new wxBMPResourceHandler); AddHandler(new wxBMPResourceHandler);
AddHandler(new wxBMPFileHandler); AddHandler(new wxBMPFileHandler);
AddHandler(new wxXPMFileHandler);
AddHandler(new wxXPMDataHandler); // Not added by default: include xpmhand.h in your app
// and call these in your wxApp::OnInit.
// AddHandler(new wxXPMFileHandler);
// AddHandler(new wxXPMDataHandler);
AddHandler(new wxICOResourceHandler); AddHandler(new wxICOResourceHandler);
AddHandler(new wxICOFileHandler); AddHandler(new wxICOFileHandler);
} }

View File

@@ -34,11 +34,6 @@
#include "assert.h" #include "assert.h"
#if wxUSE_XPM_IN_MSW
#define FOR_MSW 1
#include "../src/xpm/xpm34.h"
#endif
#if wxUSE_RESOURCE_LOADING_IN_MSW #if wxUSE_RESOURCE_LOADING_IN_MSW
#include "wx/msw/curico.h" #include "wx/msw/curico.h"
#include "wx/msw/curicop.h" #include "wx/msw/curicop.h"

View File

@@ -32,11 +32,6 @@
#include "wx/msw/private.h" #include "wx/msw/private.h"
#include "assert.h" #include "assert.h"
#if wxUSE_XPM_IN_MSW
#define FOR_MSW 1
#include "../src/xpm/xpm34.h"
#endif
#if wxUSE_RESOURCE_LOADING_IN_MSW #if wxUSE_RESOURCE_LOADING_IN_MSW
#include "wx/msw/curico.h" #include "wx/msw/curico.h"
#include "wx/msw/curicop.h" #include "wx/msw/curicop.h"

View File

@@ -243,6 +243,7 @@ MSWOBJS = \
$(MSWDIR)\utilsexc.obj \ $(MSWDIR)\utilsexc.obj \
$(MSWDIR)\wave.obj \ $(MSWDIR)\wave.obj \
$(MSWDIR)\window.obj \ $(MSWDIR)\window.obj \
$(MSWDIR)\xpmhand.obj \
$(MSWDIR)\droptgt.obj \ $(MSWDIR)\droptgt.obj \
$(MSWDIR)\dropsrc.obj \ $(MSWDIR)\dropsrc.obj \
$(MSWDIR)\oleutils.obj \ $(MSWDIR)\oleutils.obj \

View File

@@ -233,6 +233,7 @@ MSWOBJS = \
$(MSWDIR)\utilsexc.obj \ $(MSWDIR)\utilsexc.obj \
$(MSWDIR)\wave.obj \ $(MSWDIR)\wave.obj \
$(MSWDIR)\window.obj \ $(MSWDIR)\window.obj \
$(MSWDIR)\xpmhand.obj
# Unfortunately this causes a crash when the oleauto sample starts. # Unfortunately this causes a crash when the oleauto sample starts.
# $(MSWDIR)\automtn.obj # $(MSWDIR)\automtn.obj

View File

@@ -210,6 +210,10 @@ MSWOBJS = \
# $(OLEDIR)\oleutils.obj \ # $(OLEDIR)\oleutils.obj \
# $(OLEDIR)\uuid.obj # $(OLEDIR)\uuid.obj
# TODO: Implement XPM and PNG targets in this makefile!
# $(OLEDIR)\xpmhand \
# $(OLEDIR)\pnghand \
# Not appropriate for 16-bit Windows # Not appropriate for 16-bit Windows
# $(MSWDIR)\registry.obj \ # $(MSWDIR)\registry.obj \
# $(MSWDIR)\dirdlg.obj \ # $(MSWDIR)\dirdlg.obj \

View File

@@ -224,7 +224,8 @@ MSWOBJS = \
utils.$(OBJSUFF) \ utils.$(OBJSUFF) \
utilsexc.$(OBJSUFF) \ utilsexc.$(OBJSUFF) \
wave.$(OBJSUFF) \ wave.$(OBJSUFF) \
window.$(OBJSUFF) window.$(OBJSUFF) \
xpmhand.$(OBJSUFF)
# Native wxDirDlg can't be compiled due to GnuWin32/OLE limitations # Native wxDirDlg can't be compiled due to GnuWin32/OLE limitations
# dirdlg.$(OBJSUFF) \ # dirdlg.$(OBJSUFF) \

View File

@@ -180,7 +180,9 @@ MSWOBJS = \
$(MSWDIR)\icon.obj \ $(MSWDIR)\icon.obj \
$(MSWDIR)\iniconf.obj \ $(MSWDIR)\iniconf.obj \
$(MSWDIR)\joystick.obj \ $(MSWDIR)\joystick.obj \
$(MSWDIR)\imaglist.obj \
$(MSWDIR)\listbox.obj \ $(MSWDIR)\listbox.obj \
$(MSWDIR)\listctrl.obj \
$(MSWDIR)\main.obj \ $(MSWDIR)\main.obj \
$(MSWDIR)\mdi.obj \ $(MSWDIR)\mdi.obj \
$(MSWDIR)\menu.obj \ $(MSWDIR)\menu.obj \
@@ -189,6 +191,7 @@ MSWOBJS = \
$(MSWDIR)\minifram.obj \ $(MSWDIR)\minifram.obj \
$(MSWDIR)\msgdlg.obj \ $(MSWDIR)\msgdlg.obj \
$(MSWDIR)\nativdlg.obj \ $(MSWDIR)\nativdlg.obj \
$(MSWDIR)\notebook.obj \
$(MSWDIR)\ownerdrw.obj \ $(MSWDIR)\ownerdrw.obj \
$(MSWDIR)\palette.obj \ $(MSWDIR)\palette.obj \
$(MSWDIR)\pen.obj \ $(MSWDIR)\pen.obj \
@@ -217,38 +220,24 @@ MSWOBJS = \
$(MSWDIR)\textctrl.obj \ $(MSWDIR)\textctrl.obj \
$(MSWDIR)\thread.obj \ $(MSWDIR)\thread.obj \
$(MSWDIR)\timer.obj \ $(MSWDIR)\timer.obj \
$(MSWDIR)\treectrl.obj \
$(MSWDIR)\utils.obj \ $(MSWDIR)\utils.obj \
$(MSWDIR)\utilsexc.obj \ $(MSWDIR)\utilsexc.obj \
$(OLEDIR)\uuid.obj \
$(MSWDIR)\wave.obj \ $(MSWDIR)\wave.obj \
$(MSWDIR)\window.obj \ $(MSWDIR)\window.obj \
$(MSWDIR)\notebook.obj \ $(MSWDIR)\xpmhand.obj \
$(MSWDIR)\listctrl.obj \ $(OLEDIR)\dataobj.obj \
$(MSWDIR)\imaglist.obj \ $(OLEDIR)\automtn.obj \
$(MSWDIR)\treectrl.obj \
$(OLEDIR)\droptgt.obj \ $(OLEDIR)\droptgt.obj \
$(OLEDIR)\dropsrc.obj \ $(OLEDIR)\dropsrc.obj \
$(OLEDIR)\dataobj.obj \ $(OLEDIR)\oleutils.obj
$(OLEDIR)\oleutils.obj \
$(OLEDIR)\uuid.obj \
$(OLEDIR)\automtn.obj
XPMOBJECTS = $(XPMDIR)\crbuffri.obj\
$(XPMDIR)\crdatfri.obj\
$(XPMDIR)\create.obj $(XPMDIR)\crifrbuf.obj\
$(XPMDIR)\crifrdat.obj\
$(XPMDIR)\data.obj\
$(XPMDIR)\hashtab.obj $(XPMDIR)\misc.obj\
$(XPMDIR)\parse.obj $(XPMDIR)\rdftodat.obj\
$(XPMDIR)\rdftoi.obj\
$(XPMDIR)\rgb.obj $(XPMDIR)\scan.obj\
$(XPMDIR)\simx.obj $(XPMDIR)\wrffrdat.obj\
$(XPMDIR)\wrffrp.obj $(XPMDIR)\wrffri.obj
# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc. # Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc.
OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) # $(XPMOBJECTS) OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS)
# Normal, static library # Normal, static library
all: $(DUMMYOBJ) $(OBJECTS) $(PERIPH_TARGET) png zlib $(LIBTARGET) all: $(DUMMYOBJ) $(OBJECTS) $(PERIPH_TARGET) png zlib xpm $(LIBTARGET)
# wxWindows library as DLL # wxWindows library as DLL
dll: dll:
@@ -578,6 +567,11 @@ $(MSWDIR)/pnghand.obj: $*.$(SRCSUFF)
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ $(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
<< <<
$(MSWDIR)/xpmhand.obj: $*.$(SRCSUFF)
cl @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
<<
$(MSWDIR)/printdlg.obj: $*.$(SRCSUFF) $(MSWDIR)/printdlg.obj: $*.$(SRCSUFF)
cl @<< cl @<<
$(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@ $(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
@@ -1201,121 +1195,11 @@ $(CPPFLAGS) /c /Tp $*.$(SRCSUFF) /Fo$@
$(OBJECTS): $(WXDIR)/include/wx/setup.h $(OBJECTS): $(WXDIR)/include/wx/setup.h
$(XPMDIR)\crbuffri.obj: $(XPMDIR)\crbuffri.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crbuffrp.obj: $(XPMDIR)\crbuffrp.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crdatfri.obj: $(XPMDIR)\crdatfri.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crdatfrp.obj: $(XPMDIR)\crdatfrp.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\create.obj: $(XPMDIR)\create.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crifrbuf.obj: $(XPMDIR)\crifrbuf.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crifrdat.obj: $(XPMDIR)\crifrdat.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crpfrbuf.obj: $(XPMDIR)\crpfrbuf.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crpfrdat.obj: $(XPMDIR)\crpfrdat.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\data.obj: $(XPMDIR)\data.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\hashtab.obj: $(XPMDIR)\hashtab.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\misc.obj: $(XPMDIR)\misc.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\parse.obj: $(XPMDIR)\parse.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\rdftodat.obj: $(XPMDIR)\rdftodat.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\rdftoi.obj: $(XPMDIR)\rdftoi.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\rdftop.obj: $(XPMDIR)\rdftop.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\rgb.obj: $(XPMDIR)\rgb.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\scan.obj: $(XPMDIR)\scan.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\simx.obj: $(XPMDIR)\simx.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\wrffrdat.obj: $(XPMDIR)\wrffrdat.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\wrffri.obj: $(XPMDIR)\wrffri.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\wrffrp.obj: $(XPMDIR)\wrffrp.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
# Peripheral components # Peripheral components
png: png:
cd $(WXDIR)\src\png cd $(WXDIR)\src\png
nmake -f makefile.nt FINAL=$(FINAL) nmake -f makefile.nt FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL)
cd $(WXDIR)\src\msw cd $(WXDIR)\src\msw
clean_png: clean_png:
@@ -1325,7 +1209,7 @@ clean_png:
zlib: zlib:
cd $(WXDIR)\src\zlib cd $(WXDIR)\src\zlib
nmake -f makefile.nt FINAL=$(FINAL) nmake -f makefile.nt FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL)
cd $(WXDIR)\src\msw cd $(WXDIR)\src\msw
clean_zlib: clean_zlib:
@@ -1334,12 +1218,12 @@ clean_zlib:
cd $(WXDIR)\src\msw cd $(WXDIR)\src\msw
xpm: xpm:
cd $(WXDIR)\src\wxxpm cd $(WXDIR)\src\xpm
nmake -f makefile.nt FINAL=$(FINAL) nmake -f makefile.nt FINAL=$(FINAL) DLL=$(DLL) WXMAKINGDLL=$(WXMAKINGDLL)
cd $(WXDIR)\src\msw cd $(WXDIR)\src\msw
clean_xpm: clean_xpm:
cd $(WXDIR)\src\wxxpm cd $(WXDIR)\src\xpm
nmake -f makefile.nt clean nmake -f makefile.nt clean
cd $(WXDIR)\src\msw cd $(WXDIR)\src\msw
@@ -1348,22 +1232,7 @@ rcparser:
nmake -f makefile.nt FINAL=$(FINAL) nmake -f makefile.nt FINAL=$(FINAL)
cd $(WXDIR)\src\msw cd $(WXDIR)\src\msw
wxstring: clean: $(PERIPH_CLEAN_TARGET) clean_png clean_zlib clean_xpm
cd $(WXDIR)\contrib\wxstring
nmake -f makefile.nt OPTIONS="$(OPTIONS)" DEBUG="$(DEBUG)" FINAL=$(FINAL)
cd $(WXDIR)\src\msw
clean_wxstring:
cd $(WXDIR)\contrib\wxstring
nmake -f makefile.nt clean
cd $(WXDIR)\src\msw
clean_rcp:
cd $(WXDIR)\utils\rcparser\src
nmake -f makefile.nt clean
cd $(WXDIR)\src\msw
clean: $(PERIPH_CLEAN_TARGET) clean_png clean_zlib
-erase *.obj -erase *.obj
-erase $(LIBTARGET) -erase $(LIBTARGET)
-erase $(WXDIR)\lib\*.pdb -erase $(WXDIR)\lib\*.pdb

View File

@@ -196,7 +196,8 @@ MSWOBJS = \
$(MSWDIR)\utils.obj \ $(MSWDIR)\utils.obj \
$(MSWDIR)\utilsexc.obj \ $(MSWDIR)\utilsexc.obj \
$(MSWDIR)\wave.obj \ $(MSWDIR)\wave.obj \
$(MSWDIR)\window.obj $(MSWDIR)\window.obj \
$(MSWDIR)\xpmhand.obj
# Need Win95 support for these # Need Win95 support for these
# $(MSWDIR)\notebook.obj \ # $(MSWDIR)\notebook.obj \

954
src/msw/makefile.sl Normal file
View File

@@ -0,0 +1,954 @@
#
# File: makefile.wat
# Author: Julian Smart
# Created: 1998
#
# Makefile : Builds wxWindows library for Salford C++, WIN32
# include $(WXDIR)\src\makesl.env
FINAL=0
SALFORDDIR=i:\salfordc
.SUFFIXES:
.SUFFIXES: .exe .obj .c .cc .cpp .res .rc .def .lib
#WXDIR = d:\wx2\wxwind~1
WXDIR = $(WXWIN)
WXINC = $(WXDIR)\include
# Suffixes
OBJSUFF=obj
SRCSUFF=cpp
DEBUGFLAGS = /DEFINE __WXDEBUG__
RC = src
CCC = scc
CC = scc
MODEL =
# If you use win95, assumptions will be made about Win95 icon format etc.
# so nt_win is probably better for simultaneous Win32s/Win95/NT operation.
LINKOPTION = nt_win # win95
BINDCOMMAND = wrc
WATLIBDIR = $(WATCOMDIR)\lib386\nt
MINDATA =
MAXDATA =
STACK =
# EXTRALIBS = $(WXDIR)\lib\zlib.lib $(WXDIR)\lib\png.lib $(WXDIR)\lib\xpm.lib &
# $(WATLIBDIR)\odbc32.lib $(WATLIBDIR)\comctl32.lib $(WATLIBDIR)\comdlg32.lib &
# $(WATLIBDIR)\ole32.lib $(WATLIBDIR)\oleaut32.lib $(WATLIBDIR)\uuid.lib
IFLAGS = /INCLUDE $(WXINC) /INCLUDE $(SALFORDDIR)\include
#RESFLAGS1 = -r -bt=nt /i$(WXDIR)\include
#RESFLAGS2 = -R $(name) /i$(WXDIR)\include
OPTFLAGS=
# /d1 for line numbers only: anything else produces an enormous wx32.lib
CPPFLAGS = /WINDOWS /ERROR_NUMBERS /DELETE_OBJ_ON_ERROR /DEFINE WIN32 /DEFINE __WIN32__ /DEFINE __WIN95__ /DEFINE __WINDOWS__ /DEFINE __WXMSW__ /DEFINE __SALFORDC__ $(OPTFLAGS) $(DEBUGFLAGS) $(EXTRACPPFLAGS)
#.cpp.obj:
# echo Compiling!
# $(CCC) $(CPPFLAGS) $(IFLAGS) $@ $*.cpp
#.c.obj: # $< # .AUTODEPEND
# $(CC) $(CPPFLAGS) $(IFLAGS) $@ $*.cpp
WXLIB = $(WXDIR)\lib
LIBTARGET = $(WXLIB)\wx.lib
DUMMY=dummydll
# ODBCLIB = ..\..\contrib\odbc\odbc32.lib
EXTRATARGETS = xpm png zlib
EXTRATARGETSCLEAN = clean_xpm clean_png clean_zlib
GENDIR=$(WXDIR)\src\generic
COMMDIR=$(WXDIR)\src\common
XPMDIR=$(WXDIR)\src\xpm
OLEDIR=ole
MSWDIR=$(WXDIR)\src\msw
DOCDIR = $(WXDIR)\docs
GENERICOBJS= choicdgg.obj \
gridg.obj \
laywin.obj \
panelg.obj \
prop.obj \
propform.obj \
proplist.obj \
sashwin.obj \
scrolwin.obj \
splitter.obj \
statusbr.obj \
tabg.obj \
textdlgg.obj
# These are generic things that don't need to be compiled on MSW,
# but sometimes it's useful to do so for testing purposes.
NONESSENTIALOBJS= printps.obj \
prntdlgg.obj \
msgdlgg.obj \
helpxlp.obj \
colrdlgg.obj \
fontdlgg.obj \
postscrp.obj
COMMONOBJS = cmndata.obj \
config.obj \
docview.obj \
docmdi.obj \
dynarray.obj \
dynlib.obj \
event.obj \
file.obj \
filefn.obj \
fileconf.obj \
framecmn.obj \
gdicmn.obj \
image.obj \
intl.obj \
ipcbase.obj \
helpbase.obj \
layout.obj \
log.obj \
memory.obj \
mimetype.obj \
module.obj \
object.obj \
prntbase.obj \
resource.obj \
tbarbase.obj \
tbarsmpl.obj \
textfile.obj \
timercmn.obj \
utilscmn.obj \
validate.obj \
valtext.obj \
date.obj \
hash.obj \
list.obj \
string.obj \
socket.obj \
sckaddr.obj \
sckfile.obj \
sckipc.obj \
sckstrm.obj \
url.obj \
http.obj \
protocol.obj \
time.obj \
tokenzr.obj \
wxexpr.obj \
y_tab.obj \
extended.obj \
process.obj \
wfstream.obj \
mstream.obj \
zstream.obj \
stream.obj \
datstrm.obj \
objstrm.obj \
variant.obj \
wincmn.obj
# Can't compile these yet under Salford C++
# odbc.obj \
# db.obj \
# dbtable.obj \
MSWOBJS = \
accel.obj \
app.obj \
bitmap.obj \
bmpbuttn.obj \
brush.obj \
button.obj \
checkbox.obj \
checklst.obj \
choice.obj \
clipbrd.obj \
colordlg.obj \
colour.obj \
combobox.obj \
control.obj \
curico.obj \
cursor.obj \
data.obj \
dc.obj \
dcmemory.obj \
dcclient.obj \
dcprint.obj \
dcscreen.obj \
dde.obj \
dialog.obj \
dib.obj \
dibutils.obj \
dirdlg.obj \
filedlg.obj \
font.obj \
fontdlg.obj \
frame.obj \
gauge95.obj \
gaugemsw.obj \
gdiobj.obj \
helpwin.obj \
icon.obj \
imaglist.obj \
iniconf.obj \
joystick.obj \
listbox.obj \
listctrl.obj \
main.obj \
mdi.obj \
menu.obj \
menuitem.obj \
metafile.obj \
minifram.obj \
msgdlg.obj \
nativdlg.obj \
notebook.obj \
ownerdrw.obj \
palette.obj \
pen.obj \
penwin.obj \
printdlg.obj \
printwin.obj \
radiobox.obj \
radiobut.obj \
region.obj \
registry.obj \
regconf.obj \
scrolbar.obj \
settings.obj \
slidrmsw.obj \
slider95.obj \
spinbutt.obj \
statbmp.obj \
statbox.obj \
statbr95.obj \
stattext.obj \
tabctrl.obj \
taskbar.obj \
tbar95.obj \
tbarmsw.obj \
textctrl.obj \
thread.obj \
timer.obj \
treectrl.obj \
utils.obj \
utilsexc.obj \
wave.obj \
window.obj \
xpmhand.obj
# pnghand.obj \
OLEOBJS = \
droptgt.obj \
dropsrc.obj \
dataobj.obj \
oleutils.obj \
uuid.obj \
automtn.obj
# Add $(NONESSENTIALOBJS) if wanting generic dialogs, PostScript etc.
OBJECTS = $(COMMONOBJS) $(GENERICOBJS) $(MSWOBJS) $(OLEOBJS)
all: $(OBJECTS) $(LIBTARGET) $(EXTRATARGETS)
$(LIBTARGET) : $(OBJECTS)
%create tmp.lnk
@%append tmp.lnk archive $(LIBTARGET)
@for %i in ( $(OBJECTS) ) do @%append tmp.lnk addobj %i
@%append file
slink @tmp.lnk
clean: $(EXTRATARGETSCLEAN)
-erase *.obj
-erase $(LIBTARGET)
-erase *.pch
-erase *.err
-erase *.lnk
cleanall: clean
test: test.obj
test.obj: test.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) test.cpp
accel.obj: $(MSWDIR)\accel.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\accel.cpp /BINARY accel.obj
app.obj: $(MSWDIR)\app.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\app.cpp /BINARY app.obj
bitmap.obj: $(MSWDIR)\bitmap.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\bitmap.cpp /BINARY bitmap.obj
bmpbuttn.obj: $(MSWDIR)\bmpbuttn.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\bmpbuttn.cpp /BINARY bmpbuttn.obj
brush.obj: $(MSWDIR)\brush.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\brush.cpp /BINARY brush.obj
button.obj: $(MSWDIR)\button.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\button.cpp /BINARY button.obj
choice.obj: $(MSWDIR)\choice.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\choice.cpp /BINARY choice.obj
checkbox.obj: $(MSWDIR)\checkbox.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\checkbox.cpp /BINARY checkbox.obj
checklst.obj: $(MSWDIR)\checklst.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\checklst.cpp /BINARY checklst.obj
clipbrd.obj: $(MSWDIR)\clipbrd.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\clipbrd.cpp /BINARY clipbrd.obj
colordlg.obj: $(MSWDIR)\colordlg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\colordlg.cpp /BINARY colordlg.obj
colour.obj: $(MSWDIR)\colour.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\colour.cpp /BINARY colour.obj
combobox.obj: $(MSWDIR)\combobox.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\combobox.cpp /BINARY combobox.obj
control.obj: $(MSWDIR)\control.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\control.cpp /BINARY control.obj
curico.obj: $(MSWDIR)\curico.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\curico.cpp /BINARY curico.obj
cursor.obj: $(MSWDIR)\cursor.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\cursor.cpp /BINARY cursor.obj
data.obj: $(MSWDIR)\data.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\data.cpp /BINARY data.obj
dde.obj: $(MSWDIR)\dde.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dde.cpp /BINARY dde.obj
dc.obj: $(MSWDIR)\dc.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dc.cpp /BINARY dc.obj
dcmemory.obj: $(MSWDIR)\dcmemory.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcmemory.cpp /BINARY dcmemory.obj
dcclient.obj: $(MSWDIR)\dcclient.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcclient.cpp /BINARY dcclient.obj
dcprint.obj: $(MSWDIR)\dcprint.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcprint.cpp /BINARY dcprint.obj
dcscreen.obj: $(MSWDIR)\dcscreen.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dcscreen.cpp /BINARY dcscreen.obj
dialog.obj: $(MSWDIR)\dialog.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dialog.cpp /BINARY dialog.obj
dib.obj: $(MSWDIR)\dib.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dib.cpp /BINARY dib.obj
dibutils.obj: $(MSWDIR)\dibutils.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dibutils.cpp /BINARY dibutils.obj
dirdlg.obj: $(MSWDIR)\dirdlg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\dirdlg.cpp /BINARY dirdlg.obj
filedlg.obj: $(MSWDIR)\filedlg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\filedlg.cpp /BINARY filedlg.obj
font.obj: $(MSWDIR)\font.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\font.cpp /BINARY font.obj
fontdlg.obj: $(MSWDIR)\fontdlg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\fontdlg.cpp /BINARY fontdlg.obj
frame.obj: $(MSWDIR)\frame.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\frame.cpp /BINARY frame.obj
gauge95.obj: $(MSWDIR)\gauge95.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gauge95.cpp /BINARY gauge95.obj
gaugemsw.obj: $(MSWDIR)\gaugemsw.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gaugemsw.cpp /BINARY gaugemsw.obj
gdiobj.obj: $(MSWDIR)\gdiobj.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\gdiobj.cpp /BINARY gdiobj.obj
icon.obj: $(MSWDIR)\icon.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\icon.cpp /BINARY icon.obj
imaglist.obj: $(MSWDIR)\imaglist.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\imaglist.cpp /BINARY imaglist.obj
joystick.obj: $(MSWDIR)\joystick.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\joystick.cpp /BINARY joystick.obj
listbox.obj: $(MSWDIR)\listbox.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\listbox.cpp /BINARY listbox.obj
listctrl.obj: $(MSWDIR)\listctrl.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\listctrl.cpp /BINARY listctrl.obj
main.obj: $(MSWDIR)\main.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\main.cpp /BINARY main.obj
mdi.obj: $(MSWDIR)\mdi.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\mdi.cpp /BINARY mdi.obj
menu.obj: $(MSWDIR)\menu.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\menu.cpp /BINARY menu.obj
menuitem.obj: $(MSWDIR)\menuitem.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\menuitem.cpp /BINARY menuitem.obj
metafile.obj: $(MSWDIR)\metafile.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\metafile.cpp /BINARY metafile.obj
minifram.obj: $(MSWDIR)\minifram.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\minifram.cpp /BINARY minifram.obj
msgdlg.obj: $(MSWDIR)\msgdlg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\msgdlg.cpp /BINARY mdgdlg.obj
nativdlg.obj: $(MSWDIR)\nativdlg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\nativdlg.cpp /BINARY nativdlg.obj
notebook.obj: $(MSWDIR)\notebook.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\notebook.cpp /BINARY notebook.obj
ownerdrw.obj: $(MSWDIR)\ownerdrw.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\ownerdrw.cpp /BINARY ownerdrw.obj
palette.obj: $(MSWDIR)\palette.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\palette.cpp /BINARY palette.obj
pen.obj: $(MSWDIR)\pen.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\pen.cpp /BINARY pen.obj
penwin.obj: $(MSWDIR)\penwin.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\penwin.cpp /BINARY penwin.obj
pnghand.obj: $(MSWDIR)\pnghand.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\pnghand.cpp /BINARY pnghand.obj
printdlg.obj: $(MSWDIR)\printdlg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\printdlg.cpp /BINARY printdlg.obj
printwin.obj: $(MSWDIR)\printwin.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\printwin.cpp /BINARY printwin.obj
radiobox.obj: $(MSWDIR)\radiobox.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\radiobox.cpp /BINARY radiobox.obj
radiobut.obj: $(MSWDIR)\radiobut.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\radiobut.cpp /BINARY radiobut.obj
region.obj: $(MSWDIR)\region.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\region.cpp /BINARY region.obj
registry.obj: $(MSWDIR)\registry.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\registry.cpp /BINARY registry.obj
regconf.obj: $(MSWDIR)\regconf.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\regconf.cpp /BINARY regconf.obj
scrolbar.obj: $(MSWDIR)\scrolbar.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\scrolbar.cpp /BINARY scrolbar.obj
settings.obj: $(MSWDIR)\settings.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\settings.cpp /BINARY settings.obj
slidrmsw.obj: $(MSWDIR)\slidrmsw.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\slidrmsw.cpp /BINARY slidrmsw.obj
slider95.obj: $(MSWDIR)\slider95.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\slider95.cpp /BINARY slider.obj
spinbutt.obj: $(MSWDIR)\spinbutt.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\spinbutt.cpp /BINARY spinbutt.obj
statbmp.obj: $(MSWDIR)\statbmp.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbmp.cpp /BINARY statbmp.obj
statbox.obj: $(MSWDIR)\statbox.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbox.cpp /BINARY statbox.obj
statbr95.obj: $(MSWDIR)\statbr95.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\statbr95.cpp /BINARY statbr95.obj
stattext.obj: $(MSWDIR)\stattext.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\stattext.cpp /BINARY stattext.obj
tabctrl.obj: $(MSWDIR)\tabctrl.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tabctrl.cpp /BINARY tabctrl.obj
taskbar.obj: $(MSWDIR)\taskbar.cpp
cl @<<
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\taskbar.cpp /BINARY taskbar.obj
tbar95.obj: $(MSWDIR)\tbar95.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tbar95.cpp /BINARY tbar95.obj
tbarmsw.obj: $(MSWDIR)\tbarmsw.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\tbarmsw.cpp /BINARY tbarmsw.obj
textctrl.obj: $(MSWDIR)\textctrl.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\textctrl.cpp /BINARY textctrl.obj
thread.obj: $(MSWDIR)\thread.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\thread.cpp /BINARY thread.obj
timer.obj: $(MSWDIR)\timer.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\timer.cpp /BINARY timer.obj
treectrl.obj: $(MSWDIR)\treectrl.cpp
cl @<<
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\treectrl.cpp /BINARY treectrl.obj
utils.obj: $(MSWDIR)\utils.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\utils.cpp /BINARY utils.obj
utilsexc.obj: $(MSWDIR)\utilsexc.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\utilsexc.cpp /BINARY utilsexc.obj
wave.obj: $(MSWDIR)\wave.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\wave.cpp /BINARY wave.obj
window.obj: $(MSWDIR)\window.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\window.cpp /BINARY window.obj
xpmhand.obj: $(MSWDIR)\xpmhand.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(MSWDIR)\xpmhand.cpp /BINARY xpmhand.obj
droptgt.obj: $(OLEDIR)\droptgt.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\droptgt.cpp /BINARY droptgt.obj
dropsrc.obj: $(OLEDIR)\dropsrc.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\dropsrc.cpp /BINARY dropsrc.obj
dataobj.obj: $(OLEDIR)\dataobj.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\dataobj.cpp /BINARY dataobj.obj
oleutils.obj: $(OLEDIR)\oleutils.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\oleutils.cpp /BINARY oleutils.obj
uuid.obj: $(OLEDIR)\uuid.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\uuid.cpp /BINARY uuid.obj
automtn.obj: $(OLEDIR)\automtn.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(OLEDIR)\automtn.cpp /BINARY automtn.obj
########################################################
# Common objects (always compiled)
cmndata.obj: $(COMMDIR)\cmndata.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\cmndata.cpp /BINARY cmndata.obj
config.obj: $(COMMDIR)\config.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\config.cpp /BINARY config.obj
db.obj: $(COMMDIR)\db.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\db.cpp /BINARY db.obj
dbtable.obj: $(COMMDIR)\dbtable.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dbtable.cpp /BINARY dbtable.obj
docview.obj: $(COMMDIR)\docview.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\docview.cpp /BINARY docview.obj
docmdi.obj: $(COMMDIR)\docmdi.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\docmdi.cpp /BINARY docmdi.obj
dynarray.obj: $(COMMDIR)\dynarray.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dynarray.cpp /BINARY dynarray.obj
dynlib.obj: $(COMMDIR)\dynlib.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\dynlib.cpp /BINARY dynlib.obj
event.obj: $(COMMDIR)\event.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\event.cpp /BINARY event.obj
file.obj: $(COMMDIR)\file.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\file.cpp /BINARY file.obj
fileconf.obj: $(COMMDIR)\fileconf.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\fileconf.cpp /BINARY fileconf.obj
filefn.obj: $(COMMDIR)\filefn.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\filefn.cpp /BINARY filefn.obj
framecmn.obj: $(COMMDIR)\framecmn.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\framecmn.cpp /BINARY framecmn.obj
gdicmn.obj: $(COMMDIR)\gdicmn.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\gdicmn.cpp /BINARY gdicmn.obj
image.obj: $(COMMDIR)\image.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\image.cpp /BINARY image.obj
intl.obj: $(COMMDIR)\intl.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\intl.cpp /BINARY intl.obj
ipcbase.obj: $(COMMDIR)\ipcbase.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\ipcbase.cpp /BINARY ipcbase.obj
helpbase.obj: $(COMMDIR)\helpbase.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\helpbase.cpp /BINARY helpbase.obj
layout.obj: $(COMMDIR)\layout.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\layout.cpp /BINARY layout.obj
log.obj: $(COMMDIR)\log.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\log.cpp /BINARY log.obj
memory.obj: $(COMMDIR)\memory.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\memory.cpp /BINARY memory.obj
mimetype.obj: $(COMMDIR)\mimetype.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\mimetype.cpp /BINARY mimetype.obj
module.obj: $(COMMDIR)\module.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\module.cpp /BINARY module.obj
object.obj: $(COMMDIR)\object.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\object.cpp /BINARY object.obj
odbc.obj: $(COMMDIR)\odbc.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\odbc.cpp /BINARY odbc.obj
postscrp.obj: $(COMMDIR)\postcrp.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\postcrp.cpp /BINARY postscrp.obj
prntbase.obj: $(COMMDIR)\prntbase.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\prntbase.cpp /BINARY prntbase.obj
resource.obj: $(COMMDIR)\resource.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\resource.cpp /BINARY resource.obj
tbarbase.obj: $(COMMDIR)\tbarbase.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tbarbase.cpp /BINARY tbarbase.obj
tbarsmpl.obj: $(COMMDIR)\tbarsmpl.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tbarsmpl.cpp /BINARY tbarsmpl.obj
textfile.obj: $(COMMDIR)\textfile.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\textfile.cpp /BINARY textfile.obj
timercmn.obj: $(COMMDIR)\timercmn.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\timercmn.cpp /BINARY timercmn.obj
utilscmn.obj: $(COMMDIR)\utilscmn.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\utilscmn.cpp /BINARY utilscmn.obj
validate.obj: $(COMMDIR)\validate.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\validate.cpp /BINARY validate.obj
valtext.obj: $(COMMDIR)\valtext.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\valtext.cpp /BINARY valtext.obj
date.obj: $(COMMDIR)\date.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\date.cpp /BINARY date.obj
wxexpr.obj: $(COMMDIR)\wxexpr.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wxexpr.cpp /BINARY wxexpr.obj
hash.obj: $(COMMDIR)\hash.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\hash.cpp /BINARY hash.obj
list.obj: $(COMMDIR)\list.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\list.cpp /BINARY list.obj
string.obj: $(COMMDIR)\string.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\string.cpp /BINARY string.obj
socket.obj: $(COMMDIR)\socket.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\socket.cpp /BINARY socket.obj
sckaddr.obj: $(COMMDIR)\sckaddr.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckaddr.cpp /BINARY sckaddr.obj
sckfile.obj: $(COMMDIR)\sckfile.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckfile.cpp /BINARY sckfile.obj
sckipc.obj: $(COMMDIR)\sckipc.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckipc.cpp /BINARY sckipc.obj
sckstrm.obj: $(COMMDIR)\sckstrm.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\sckstrm.cpp /BINARY sockstrm.obj
url.obj: $(COMMDIR)\url.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\url.cpp /BINARY url.obj
http.obj: $(COMMDIR)\http.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\http.cpp /BINARY http.obj
protocol.obj: $(COMMDIR)\protocol.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\protocol.cpp /BINARY protocol.obj
tokenzr.obj: $(COMMDIR)\tokenzr.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\tokenzr.cpp /BINARY tokenzr.obj
matrix.obj: $(COMMDIR)\matrix.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\matrix.cpp /BINARY matrix.obj
time.obj: $(COMMDIR)\time.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\time.cpp /BINARY timer.obj
stream.obj: $(COMMDIR)\stream.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\stream.cpp /BINARY stream.obj
wfstream.obj: $(COMMDIR)\wfstream.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wfstream.cpp /BINARY wfstream.obj
mstream.obj: $(COMMDIR)\mstream.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\mstream.cpp /BINARY mstream.obj
zstream.obj: $(COMMDIR)\zstream.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\zstream.cpp /BINARY zstream.obj
datstrm.obj: $(COMMDIR)\datstrm.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\datstrm.cpp /BINARY datstrm.obj
objstrm.obj: $(COMMDIR)\objstrm.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\objstrm.cpp /BINARY objstrm.obj
extended.obj: $(COMMDIR)\extended.c
$(CC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\extended.c /BINARY extended.obj
process.obj: $(COMMDIR)\process.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\process.cpp /BINARY process.obj
variant.obj: $(COMMDIR)\variant.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\variant.cpp /BINARY variant.obj
wincmn.obj: $(COMMDIR)\wincmn.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(COMMDIR)\wincmn.cpp /BINARY wincmn.obj
########################################################
# Generic objects (not always compiled, depending on
# whether platforms have native implementations)
choicdgg.obj: $(GENDIR)\choicdgg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\choicdgg.cpp /BINARY choicdgg.obj
colrdlgg.obj: $(GENDIR)\colrdgg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\colrdgg.cpp /BINARY colordgg.obj
fontdlgg.obj: $(GENDIR)\fontdlgg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\fontdlgg.cpp /BINARY fontdlgg.obj
gridg.obj: $(GENDIR)\gridg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\gridg.cpp /BINARY gridg.obj
helpxlp.obj: $(GENDIR)\helpxlp.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\helpxlp.cpp /BINARY helpxlp.obj
laywin.obj: $(GENDIR)\laywin.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\laywin.cpp /BINARY laywin.obj
msgdlgg.obj: $(GENDIR)\msgdlgg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\msgdlgg.cpp /BINARY msgdlgg.obj
panelg.obj: $(GENDIR)\panelg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\panelg.cpp /BINARY panelg.obj
printps.obj: $(GENDIR)\printps.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\printps.cpp /BINARY printps.obj
prop.obj: $(GENDIR)\prop.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\prop.cpp /BINARY prop.obj
propform.obj: $(GENDIR)\propform.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\propform.cpp /BINARY propform.obj
proplist.obj: $(GENDIR)\proplist.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\proplist.cpp /BINARY proplist.obj
prntdlgg.obj: $(GENDIR)\prntdlgg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\prntdlgg.cpp /BINARY prntdlgg.obj
sashwin.obj: $(GENDIR)\sashwin.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\sashwin.cpp /BINARY sashwin.obj
scrolwin.obj: $(GENDIR)\scrolwin.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\scrolwin.cpp /BINARY scrolwin.obj
splitter.obj: $(GENDIR)\splitter.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\splitter.cpp /BINARY splitter.obj
statusbr.obj: $(GENDIR)\statusbr.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\statusbr.cpp /BINARY statusbr.obj
tabg.obj: $(GENDIR)\tabg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\tabg.cpp /BINARY tabg.obj
textdlgg.obj: $(GENDIR)\textdlgg.cpp
$(CCC) $(CPPFLAGS) $(IFLAGS) $(GENDIR)\textdlgg.cpp /BINARY textdlgg.obj
crbuffri.obj: $(XPMDIR)\crbuffri.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crbuffri.c
crbuffrp.obj: $(XPMDIR)\crbuffrp.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crbuffrp.c
crdatfri.obj: $(XPMDIR)\crdatfri.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crdatfri.c
crdatfrp.obj: $(XPMDIR)\crdatfrp.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crdatfrp.c
create.obj: $(XPMDIR)\create.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\create.c
crifrbuf.obj: $(XPMDIR)\crifrbuf.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crifrbuf.c
crifrdat.obj: $(XPMDIR)\crifrdat.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crifrdat.c
crpfrbuf.obj: $(XPMDIR)\crpfrbuf.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crpfrbuf.c
crpfrdat.obj: $(XPMDIR)\crpfrdat.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\crpfrdat.c
dataxpm.obj: $(XPMDIR)\data.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\data.c /BINARY dataxpm.obj
hashtab.obj: $(XPMDIR)\hashtab.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\hashtab.c
misc.obj: $(XPMDIR)\misc.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\misc.c
parse.obj: $(XPMDIR)\parse.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\parse.c
rdftodat.obj: $(XPMDIR)\rdftodat.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftodat.c
rdftoi.obj: $(XPMDIR)\rdftoi.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftoi.c
rdftop.obj: $(XPMDIR)\rdftop.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rdftop.c
rgb.obj: $(XPMDIR)\rgb.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\rgb.c
scan.obj: $(XPMDIR)\scan.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\scan.c
simx.obj: $(XPMDIR)\simx.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\simx.c
wrffrdat.obj: $(XPMDIR)\wrffrdat.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffrdat.c
wrffri.obj: $(XPMDIR)\wrffri.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffri.c
wrffrp.obj: $(XPMDIR)\wrffrp.c
*$(CC) $(CPPFLAGS) $(IFLAGS) $(XPMDIR)\wrffrp.c
OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \
trees$(O)
OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
infutil$(O) inffast$(O)
adler32.obj: adler32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
compress.obj: compress.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
crc32.obj: crc32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
gzio.obj: gzio.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
infcodes.h infutil.h
$(CC) -c $(CFLAGS) $*.c
infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
infcodes.h inffast.h
$(CC) -c $(CFLAGS) $*.c
inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
$(CC) -c $(CFLAGS) $*.c
inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
$(CC) -c $(CFLAGS) $*.c
infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
$(CC) -c $(CFLAGS) $*.c
inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
$(CC) -c $(CFLAGS) $*.c
trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
uncompr.obj: uncompr.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
zutil.obj: zutil.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
y_tab.obj: $(COMMDIR)\y_tab.c $(COMMDIR)\lex_yy.c
$(CC) $(CPPFLAGS) $(IFLAGS) -DUSE_DEFINE $(COMMDIR)\y_tab.c
# *$(CC) $(CPPFLAGS) $(IFLAGS) -DUSE_DEFINE -DYY_USE_PROTOS $(COMMDIR)\y_tab.c
$(COMMDIR)\y_tab.c: $(COMMDIR)\dosyacc.c
copy $(COMMDIR)\dosyacc.c $(COMMDIR)\y_tab.c
$(COMMDIR)\lex_yy.c: $(COMMDIR)\doslex.c
copy $(COMMDIR)\doslex.c $(COMMDIR)\lex_yy.c
xpm: .SYMBOLIC
cd $(WXDIR)\src\xpm
wmake -f makefile.wat all
cd $(WXDIR)\src\msw
clean_xpm: .SYMBOLIC
cd $(WXDIR)\src\xpm
wmake -f makefile.wat clean
cd $(WXDIR)\src\msw
png: .SYMBOLIC
cd $(WXDIR)\src\png
wmake -f makefile.wat all
cd $(WXDIR)\src\msw
clean_png: .SYMBOLIC
cd $(WXDIR)\src\png
wmake -f makefile.wat clean
cd $(WXDIR)\src\msw
zlib: .SYMBOLIC
cd $(WXDIR)\src\zlib
wmake -f makefile.wat all
cd $(WXDIR)\src\msw
clean_zlib: .SYMBOLIC
cd $(WXDIR)\src\zlib
wmake -f makefile.wat clean
cd $(WXDIR)\src\msw

View File

@@ -196,6 +196,7 @@ MSWOBJS = &
utilsexc.obj & utilsexc.obj &
wave.obj & wave.obj &
window.obj & window.obj &
xpmhand.obj
# pnghand.obj & # pnghand.obj &
@@ -477,6 +478,9 @@ wave.obj: $(MSWDIR)\wave.cpp
window.obj: $(MSWDIR)\window.cpp window.obj: $(MSWDIR)\window.cpp
*$(CCC) $(CPPFLAGS) $(IFLAGS) $< *$(CCC) $(CPPFLAGS) $(IFLAGS) $<
xpmhand.obj: $(MSWDIR)\xpmhand.cpp
*$(CCC) $(CPPFLAGS) $(IFLAGS) $<
droptgt.obj: $(OLEDIR)\droptgt.cpp droptgt.obj: $(OLEDIR)\droptgt.cpp
*$(CCC) $(CPPFLAGS) $(IFLAGS) $< *$(CCC) $(CPPFLAGS) $(IFLAGS) $<

182
src/msw/xpmhand.cpp Normal file
View File

@@ -0,0 +1,182 @@
/////////////////////////////////////////////////////////////////////////////
// Name: xpmhand.cpp
// Purpose: wxBitmap: XPM handler and constructors
// Author: Julian Smart
// Modified by:
// 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 <stdio.h>
#include "wx/setup.h"
#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/msw/private.h"
#include "wx/log.h"
#include "assert.h"
#if wxUSE_XPM_IN_MSW
#define FOR_MSW 1
#include "../src/xpm/xpm34.h"
#endif
#include "wx/xpmhand.h"
#include "wx/msw/dib.h"
IMPLEMENT_DYNAMIC_CLASS(wxXPMFileHandler, wxBitmapHandler)
bool wxXPMFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags,
int desiredWidth, int desiredHeight)
{
#if wxUSE_XPM_IN_MSW
XImage *ximage;
XpmAttributes xpmAttr;
HDC dc;
M_BITMAPHANDLERDATA->m_ok = FALSE;
dc = CreateCompatibleDC(NULL);
if (dc)
{
xpmAttr.valuemask = XpmReturnPixels;
int errorStatus = XpmReadFileToImage(&dc, WXSTRINGCAST name, &ximage, (XImage **) NULL, &xpmAttr);
DeleteDC(dc);
if (errorStatus == XpmSuccess)
{
M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ximage->bitmap;
BITMAP bm;
GetObject((HBITMAP)M_BITMAPHANDLERDATA->m_hBitmap, sizeof(bm), (LPSTR) & bm);
M_BITMAPHANDLERDATA->m_width = (bm.bmWidth);
M_BITMAPHANDLERDATA->m_height = (bm.bmHeight);
M_BITMAPHANDLERDATA->m_depth = (bm.bmPlanes * bm.bmBitsPixel);
M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
XpmFreeAttributes(&xpmAttr);
XImageFree(ximage);
M_BITMAPHANDLERDATA->m_ok = TRUE;
return TRUE;
}
else
{
M_BITMAPHANDLERDATA->m_ok = FALSE;
return FALSE;
}
}
#endif
return FALSE;
}
bool wxXPMFileHandler::SaveFile(wxBitmap *bitmap, const wxString& name, int type, const wxPalette *palette)
{
#if wxUSE_XPM_IN_MSW
HDC dc = NULL;
XImage ximage;
dc = CreateCompatibleDC(NULL);
if (dc)
{
if (SelectObject(dc, (HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap))
{
/* for following SetPixel */
/* fill the XImage struct 'by hand' */
ximage.width = M_BITMAPHANDLERDATA->m_width;
ximage.height = M_BITMAPHANDLERDATA->m_height;
ximage.depth = M_BITMAPHANDLERDATA->m_depth;
ximage.bitmap = (HBITMAP)M_BITMAPHANDLERDATA->m_hBitmap;
int errorStatus = XpmWriteFileFromImage(&dc, WXSTRINGCAST name,
&ximage, (XImage *) NULL, (XpmAttributes *) NULL);
if (dc)
DeleteDC(dc);
if (errorStatus == XpmSuccess)
return TRUE; /* no error */
else
return FALSE;
} else return FALSE;
} else return FALSE;
#else
return FALSE;
#endif
}
IMPLEMENT_DYNAMIC_CLASS(wxXPMDataHandler, wxBitmapHandler)
bool wxXPMDataHandler::Create(wxBitmap *bitmap, void *data, long flags, int width, int height, int depth)
{
#if wxUSE_XPM_IN_MSW
XImage *ximage;
int ErrorStatus;
XpmAttributes xpmAttr;
HDC dc;
M_BITMAPHANDLERDATA->m_ok = FALSE;
M_BITMAPHANDLERDATA->m_numColors = 0;
dc = CreateCompatibleDC(NULL); /* memory DC */
if (dc)
{
xpmAttr.valuemask = XpmReturnInfos; /* get infos back */
ErrorStatus = XpmCreateImageFromData(&dc, (char **)data,
&ximage, (XImage **) NULL, &xpmAttr);
if (ErrorStatus == XpmSuccess)
{
/* ximage is malloced and contains bitmap and attributes */
M_BITMAPHANDLERDATA->m_hBitmap = (WXHBITMAP) ximage->bitmap;
BITMAP bm;
GetObject((HBITMAP) M_BITMAPHANDLERDATA->m_hBitmap, sizeof(bm), (LPSTR) & bm);
M_BITMAPHANDLERDATA->m_width = (bm.bmWidth);
M_BITMAPHANDLERDATA->m_height = (bm.bmHeight);
M_BITMAPHANDLERDATA->m_depth = (bm.bmPlanes * bm.bmBitsPixel);
M_BITMAPHANDLERDATA->m_numColors = xpmAttr.npixels;
XpmFreeAttributes(&xpmAttr);
XImageFree(ximage); // releases the malloc, but does not detroy
// the bitmap
M_BITMAPHANDLERDATA->m_ok = TRUE;
DeleteDC(dc);
return TRUE;
}
else
{
M_BITMAPHANDLERDATA->m_ok = FALSE;
// XpmDebugError(ErrorStatus, NULL);
DeleteDC(dc);
return FALSE;
}
}
#endif
return FALSE;
}

View File

@@ -100,7 +100,7 @@ EXTRADLLFLAGS=$(EXTRADLLFLAGS) /DNOMAIN
!endif !endif
INC=-I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(EXTRAINC) INC=-I$(WXINC) -I$(WXDIR)/src/png -I$(WXDIR)/src/zlib $(EXTRAINC)
LIBS = $(EXTRALIBS) $(WXLIB) $(WINLIBS) $(WXDIR)\lib\winpng.lib $(WXDIR)\lib\zlib.lib LIBS = $(EXTRALIBS) $(WXLIB) $(WINLIBS) $(WXDIR)\lib\winpng.lib $(WXDIR)\lib\zlib.lib $(WXDIR)\lib\xpm.lib
!ifndef FINAL !ifndef FINAL
FINAL=0 FINAL=0

170
src/xpm/makefile.nt Normal file
View File

@@ -0,0 +1,170 @@
#
# File: makefile.nt
# Author: Julian Smart
# Created: 1997
# Updated:
# Copyright: (c) 1997, Julian Smart
#
# "%W% %G%"
#
# Makefile : Builds xpm.lib for VC++ (32-bit)
#
!include <..\ntwxwin.mak>
THISDIR=$(WXWIN)\src\xpm
LIBTARGET=$(WXDIR)\lib\xpm.lib
# Please set these according to the settings in wx_setup.h, so we can include
# the appropriate libraries in wx.lib
# This one overrides the others, to be consistent with the settings in wx_setup.h
MINIMAL_WXWINDOWS_SETUP=0
PERIPH_LIBS=
PERIPH_TARGET=
PERIPH_CLEAN_TARGET=
XPMDIR=$(WXDIR)\src\xpm
OBJECTS = $(XPMDIR)\crbuffri.obj\
$(XPMDIR)\crdatfri.obj\
$(XPMDIR)\create.obj $(XPMDIR)\crifrbuf.obj\
$(XPMDIR)\crifrdat.obj\
$(XPMDIR)\data.obj\
$(XPMDIR)\hashtab.obj $(XPMDIR)\misc.obj\
$(XPMDIR)\parse.obj $(XPMDIR)\rdftodat.obj\
$(XPMDIR)\rdftoi.obj\
$(XPMDIR)\rgb.obj $(XPMDIR)\scan.obj\
$(XPMDIR)\simx.obj $(XPMDIR)\wrffrdat.obj\
$(XPMDIR)\wrffrp.obj $(XPMDIR)\wrffri.obj
all: $(LIBTARGET)
$(LIBTARGET): $(OBJECTS)
-erase $(LIBTARGET)
$(implib) @<<
-out:$@
-machine:$(CPU)
$(OBJECTS) $(PERIPH_LIBS)
<<
$(XPMDIR)\crbuffri.obj: $(XPMDIR)\crbuffri.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crbuffrp.obj: $(XPMDIR)\crbuffrp.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crdatfri.obj: $(XPMDIR)\crdatfri.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crdatfrp.obj: $(XPMDIR)\crdatfrp.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\create.obj: $(XPMDIR)\create.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crifrbuf.obj: $(XPMDIR)\crifrbuf.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crifrdat.obj: $(XPMDIR)\crifrdat.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crpfrbuf.obj: $(XPMDIR)\crpfrbuf.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\crpfrdat.obj: $(XPMDIR)\crpfrdat.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\data.obj: $(XPMDIR)\data.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\hashtab.obj: $(XPMDIR)\hashtab.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\misc.obj: $(XPMDIR)\misc.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\parse.obj: $(XPMDIR)\parse.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\rdftodat.obj: $(XPMDIR)\rdftodat.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\rdftoi.obj: $(XPMDIR)\rdftoi.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\rdftop.obj: $(XPMDIR)\rdftop.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\rgb.obj: $(XPMDIR)\rgb.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\scan.obj: $(XPMDIR)\scan.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\simx.obj: $(XPMDIR)\simx.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\wrffrdat.obj: $(XPMDIR)\wrffrdat.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\wrffri.obj: $(XPMDIR)\wrffri.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
$(XPMDIR)\wrffrp.obj: $(XPMDIR)\wrffrp.c
cl @<<
$(CPPFLAGS2) /c $*.c /Fo$@
<<
clean:
-erase *.obj
-erase $(LIBTARGET)
-erase *.pdb
-erase *.sbr
-erase *.pch
cleanall: clean