Compare commits
1 Commits
wxPy_LAST_
...
v2.3.2
Author | SHA1 | Date | |
---|---|---|---|
|
0d8a8bf477 |
57
.cvsignore
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
system.list
|
||||||
|
bin
|
||||||
|
.gdb_history
|
||||||
|
Test
|
||||||
|
config.cache
|
||||||
|
configarg.cache
|
||||||
|
config.status
|
||||||
|
system.list
|
||||||
|
linux.system.cache
|
||||||
|
wx-config
|
||||||
|
config.log
|
||||||
|
linux-gnu.system.cache
|
||||||
|
*.dsp
|
||||||
|
*.dsw
|
||||||
|
*.plg
|
||||||
|
*.opt
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.pro
|
||||||
|
*.opt
|
||||||
|
*.d
|
||||||
|
*.swp
|
||||||
|
*.swo
|
||||||
|
Release
|
||||||
|
Debug
|
||||||
|
ReleaseDLL
|
||||||
|
DebugDLL
|
||||||
|
UnivRelease
|
||||||
|
UnivDebug
|
||||||
|
BaseRelease
|
||||||
|
BaseDebug
|
||||||
|
robert
|
||||||
|
stamp-h.in
|
||||||
|
Makefile
|
||||||
|
configure
|
||||||
|
setup.h
|
||||||
|
stamp-h
|
||||||
|
libtool
|
||||||
|
aclocal.m4
|
||||||
|
base
|
||||||
|
gtk
|
||||||
|
motif
|
||||||
|
win32
|
||||||
|
univ
|
||||||
|
univ-debug
|
||||||
|
univ-release
|
||||||
|
base-debug
|
||||||
|
gtk-debug
|
||||||
|
motif-debug
|
||||||
|
win32-debug
|
||||||
|
base-release
|
||||||
|
gtk-release
|
||||||
|
motif-release
|
||||||
|
win32-release
|
||||||
|
*tags
|
||||||
|
log
|
||||||
|
univtags.cmd
|
255
BuildCVS.txt
Normal file
@@ -0,0 +1,255 @@
|
|||||||
|
------------------------------------------------------------------------
|
||||||
|
How to build the sources from CVS
|
||||||
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Please use the install.txt files in docs/gtk, docs/msw, docs/motif, docs/mac
|
||||||
|
etc. alongside these instructions.
|
||||||
|
|
||||||
|
I) Windows using plain makefiles
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
a) If using Microsoft Visual C++ 5.0 or 6.0
|
||||||
|
|
||||||
|
Ensure that the command-line compiler and tools (including
|
||||||
|
nmake) are installed and ready to run. Depending on your
|
||||||
|
installation there may be a batch file (named something like
|
||||||
|
VCVARS32.BAT) that needs to be run to set correct environment
|
||||||
|
varaibles and PATH entries.
|
||||||
|
|
||||||
|
Continue with item c) below.
|
||||||
|
|
||||||
|
|
||||||
|
b) If using the GNU Mingw32 or GNU Cygwin32 compilers
|
||||||
|
|
||||||
|
You can get Mingw32 from http://www.mingw.org
|
||||||
|
|
||||||
|
Cygwin32 is available at http://www.cygwin.com
|
||||||
|
|
||||||
|
The makefile might have small problems with Cygwin's tools
|
||||||
|
so it is recommended to use Mingw32 and its toolchain instead
|
||||||
|
if possible.
|
||||||
|
|
||||||
|
-> Set your path so that it includes the directory
|
||||||
|
where your compiler and tools reside
|
||||||
|
|
||||||
|
-> If your are using an old Mingw32 version (gcc-2.95 or older),
|
||||||
|
you might need to fix some headers with the patches contained
|
||||||
|
in the wxWin\Mingw32-gcc295.patches file. PLEASE APPLY THESE
|
||||||
|
PATCHES BY HAND! There are apparently a few different versions
|
||||||
|
of the headers floating around. Note that these patches are
|
||||||
|
not needed if you are using Mingw32 gcc-2.95.2 or newer.
|
||||||
|
|
||||||
|
-> Edit wx/src/makeg95.env and set the MINGW32 variable at the top of
|
||||||
|
the file to either 1 (you have Mingw32) or 0 (you have Cygwin32).
|
||||||
|
If using MINGW32, also set the MINGW32VERSION variable
|
||||||
|
appropiately.
|
||||||
|
|
||||||
|
|
||||||
|
c) Build instructions
|
||||||
|
|
||||||
|
-> Assumming that you installed the wxWindows sources
|
||||||
|
into c:\wxWin
|
||||||
|
-> Copy c:\wxWin\include\wx\msw\setup0.h
|
||||||
|
to c:\wxWin\include\wx\msw\setup.h
|
||||||
|
-> Edit c:\wxWin\include\wx\msw\setup.h so that
|
||||||
|
most features are enabled (i.e. defined to 1), for example:
|
||||||
|
#define wxUSE_ODBC 0
|
||||||
|
#define wxUSE_SOCKETS 1
|
||||||
|
#define wxUSE_HTML 1
|
||||||
|
#define wxUSE_THREADS 1
|
||||||
|
#define wxUSE_FS_INET 0
|
||||||
|
#define wxUSE_FS_ZIP 1
|
||||||
|
#define wxUSE_BUSYINFO 1
|
||||||
|
#define wxUSE_DYNLIB_CLASS 1
|
||||||
|
#define wxUSE_ZIPSTREAM 1
|
||||||
|
#define wxUSE_LIBJPEG 1
|
||||||
|
#define wxUSE_LIBPNG 1
|
||||||
|
|
||||||
|
and std iostreams are disabled with
|
||||||
|
#define wxUSE_STD_IOSTREAM 0
|
||||||
|
|
||||||
|
-> type: cd c:\wxWin\src\msw
|
||||||
|
-> type: make -f makefile.g95 (if using GNU tools)
|
||||||
|
or type: nmake -f makefile.vc (if using MS VC++)
|
||||||
|
|
||||||
|
|
||||||
|
II) Unix ports
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Building wxGTK or wxMotif completely without configure
|
||||||
|
won't ever work, but there is now a new makefile system
|
||||||
|
that works without libtool and automake, using only
|
||||||
|
configure to create what is needed.
|
||||||
|
|
||||||
|
In order to create configure, you need to have the
|
||||||
|
GNU autoconf package (version 2.13 or 2.14) installed
|
||||||
|
on your system and type run "autoconf" in the base
|
||||||
|
directory (or run the autogen.sh script in the same
|
||||||
|
directory, which just calls autoconf).
|
||||||
|
|
||||||
|
Set WXWIN environment variable to the base directory such
|
||||||
|
as ~/wxWindows (this is actually not really needed).
|
||||||
|
|
||||||
|
-> type: export WXWIN=~/wxWindows
|
||||||
|
-> type: md mybuild
|
||||||
|
-> type: cd mybuild
|
||||||
|
-> type: ../configure --with-motif
|
||||||
|
or type: ../configure --with-gtk
|
||||||
|
-> type: make
|
||||||
|
-> type: su <type root password>
|
||||||
|
-> type: make install
|
||||||
|
-> type: ldconfig
|
||||||
|
-> type: exit
|
||||||
|
|
||||||
|
Call configure with --disable-shared to create a static
|
||||||
|
library. Calling "make uninstall" will remove the installed
|
||||||
|
library and "make dist" will create a distribution (not
|
||||||
|
yet complete).
|
||||||
|
|
||||||
|
III) Windows using configure
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Take a look at Unix->Windows cross compiling. With minor
|
||||||
|
modifications, this should work in Windows if you've got the cygnus
|
||||||
|
utilities (bash, GNU make, etc) and either mingw32 or cygwin32 installed.
|
||||||
|
See http://www.cygnus.com for these programs, or go straight to their
|
||||||
|
ftp server at ftp://sourceware.cygnus.com/pub/cygwin/.
|
||||||
|
|
||||||
|
Of course, you can also build the library using plain makefiles (see
|
||||||
|
section I).
|
||||||
|
|
||||||
|
IV) Classic MacOS using CodeWarrior (eg MacOS 8.x/9.x)
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Refer to the readme.txt and install.txt files in docs/mac to build
|
||||||
|
wxWindows under Classic Mac OS using CodeWarrior.
|
||||||
|
|
||||||
|
If you are checking out the CVS sources using cvs under Mac OS X and
|
||||||
|
compiling under Classic Mac OS:
|
||||||
|
|
||||||
|
- make sure that all text files have a Mac OS type of 'TEXT' otherwise
|
||||||
|
CodeWarrior may ignore them. Checking out the CVS sources using cvs
|
||||||
|
under Mac OS X creates untyped files which can lead to compilation
|
||||||
|
errors under CodeWarrior which are hard to track down.
|
||||||
|
|
||||||
|
- convert the xml files to CodeWarrior binary projects using the supplied
|
||||||
|
AppleScript in docs/mac (M5xml2mcp.applescript for CodeWarrior 5.3)
|
||||||
|
|
||||||
|
V) MacOS X using configure and the Developer Tools
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
You need to have the Developer Tools installed. If this is not the case,
|
||||||
|
you will need to register at the Apple Developer web site (this is a free
|
||||||
|
registration) in order to download the Developer Tools installer.
|
||||||
|
|
||||||
|
In order to create configure, you need to have the
|
||||||
|
GNU autoconf package (version 2.13 or 2.14) installed
|
||||||
|
on your system and type run "autoconf" in the base
|
||||||
|
directory (or run the autogen.sh script in the same
|
||||||
|
directory, which just calls autoconf).
|
||||||
|
|
||||||
|
-> type: mkdir macbuild
|
||||||
|
-> type: cd macbuild
|
||||||
|
-> type: ../configure --with-mac
|
||||||
|
or type: ../configure
|
||||||
|
-> type: make
|
||||||
|
|
||||||
|
VI) OS/2
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
VII) Unix->Windows cross-compiling using configure
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
First you'll need a cross-compiler; linux glibc binaries of mingw32 and
|
||||||
|
cygwin32 (both based on egcs) can be found at
|
||||||
|
ftp://ftp.objsw.com/pub/crossgcc/linux-x-win32. Alternative binaries,
|
||||||
|
based on the latest MinGW release can be found at
|
||||||
|
http://members.telering.at/jessich/mingw/mingwcross/mingw_cross.html
|
||||||
|
Otherwise you can compile one yourself.
|
||||||
|
|
||||||
|
[ A Note about cygwin32 and mingw32: the main difference is that cygwin32
|
||||||
|
binaries are always linked against cygwin.dll. This dll encapsulates most
|
||||||
|
standard Unix C extensions, which is very handy if you're porting unix
|
||||||
|
software to windows. However, wxMSW doesn't need this, so mingw32 is
|
||||||
|
preferable if you write portable C(++). ]
|
||||||
|
|
||||||
|
You might want to build both Unix and Windows binaries in the same source
|
||||||
|
tree; to do this make subdirs for each e.g. unix and win32. If you've
|
||||||
|
already build wxWindows in the main dir, do a 'make distclean' there,
|
||||||
|
otherwise configure will get confused. (In any case, read the section 'Unix
|
||||||
|
using configure' and make sure you're able to build a native wxWindows
|
||||||
|
library; cross-compiling errors can be pretty obscure and you'll want to be
|
||||||
|
sure that your configure setup is basically sound.)
|
||||||
|
|
||||||
|
To cross compile the windows library, do
|
||||||
|
-> cd win32
|
||||||
|
(or whatever you called it)
|
||||||
|
Now run configure. There are two ways to do this
|
||||||
|
-> ../configure --host=i586-mingw32 --build=i586-linux --with-mingw
|
||||||
|
where --build= should read whatever platform you're building on. Configure
|
||||||
|
will notice that build and host platforms differ, and automatically prepend
|
||||||
|
i586-mingw32- to gcc, ar, ld, etc (make sure they're in the PATH!).
|
||||||
|
The other way to run configure is by specifying the names of the binaries
|
||||||
|
yourself:
|
||||||
|
-> CC=i586-mingw32-gcc CXX=i586-mingw32-g++ RANLIB=i586-mingw32-ranlib \
|
||||||
|
DLLTOOL=i586-mingw32-dlltool LD=i586-mingw32-ld NM=i586-mingw32-nm \
|
||||||
|
../configure --host=i586-mingw32 --with-mingw
|
||||||
|
|
||||||
|
(all assuming you're using mingw32)
|
||||||
|
By default this will compile a DLL, if you want a static library,
|
||||||
|
specify --disable-shared.
|
||||||
|
|
||||||
|
Type
|
||||||
|
-> make
|
||||||
|
and wait, wait, wait. Don't leave the room, because the minute you do there
|
||||||
|
will be a compile error :-)
|
||||||
|
|
||||||
|
NB: if you are using a very old compiler you risk to get quite a few warnings
|
||||||
|
about "ANSI C++ forbids implicit conversion from 'void *'" in all places
|
||||||
|
where va_arg macro is used. This is due to a bug in (some versions of)
|
||||||
|
mingw32 headers which may be corrected by upgrading your compier,
|
||||||
|
otherwise you might edit the file
|
||||||
|
|
||||||
|
${install_prefix}/lib/gcc-lib/i586-mingw32/egcs-2.91.57/include/stdarg.h
|
||||||
|
|
||||||
|
(instead of egcs-2.91.57 you may have something different), searching for
|
||||||
|
the lines
|
||||||
|
|
||||||
|
/* Define __gnuc_va_list. */
|
||||||
|
|
||||||
|
#ifndef __GNUC_VA_LIST
|
||||||
|
#define __GNUC_VA_LIST
|
||||||
|
#if defined(__svr4__) || defined(_AIX) || defined(_M_UNIX) || defined(__NetBSD__)
|
||||||
|
typedef char *__gnuc_va_list;
|
||||||
|
#else
|
||||||
|
typedef void *__gnuc_va_list;
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
and adding "|| defined(_WIN32)" to the list of platforms on which
|
||||||
|
__gnuc_va_list is char *.
|
||||||
|
|
||||||
|
If this is successful, you end up with a wx23_2.dll/libwx23_2.a in win32/lib
|
||||||
|
( or just libwx_msw.a if you opted for a static build ).
|
||||||
|
Now try building the minimal sample:
|
||||||
|
|
||||||
|
-> cd samples/minimal
|
||||||
|
-> make
|
||||||
|
|
||||||
|
and run it with wine, for example (or copy to a Windows box)
|
||||||
|
-> wine minimal.exe
|
||||||
|
|
||||||
|
If all is well, do an install; from win32
|
||||||
|
-> make install
|
||||||
|
|
||||||
|
Native and cross-compiled installations can co-exist peacefully
|
||||||
|
(as long as their widget sets differ), except for wx-config. You might
|
||||||
|
want to rename the cross-compiled one to i586-mingw32-wx-config, or something.
|
||||||
|
|
||||||
|
Cross-compiling TODO:
|
||||||
|
---------------------
|
||||||
|
- resource compiling must be done manually for now (should/can we link the
|
||||||
|
default wx resources into libwx_msw.a?) [ No we can't; the linker won't
|
||||||
|
link it in... you have to supply an object file ]
|
||||||
|
- static executables are HUGE -- there must be room for improvement.
|
||||||
|
|
1467
Makefile.in
Normal file
169
Mingw32-gcc295.patches
Normal file
@@ -0,0 +1,169 @@
|
|||||||
|
*** \gcc-inc\basetyps.h Sat Jul 31 16:48:36 1999
|
||||||
|
--- basetyps.h Fri Aug 06 11:14:36 1999
|
||||||
|
***************
|
||||||
|
*** 74,91 ****
|
||||||
|
--- 74,97 ----
|
||||||
|
STDMETHOD(Clone)(IENUM_THIS_(I) I**) PURE; \
|
||||||
|
}
|
||||||
|
#define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T)
|
||||||
|
|
||||||
|
+ #ifndef GUID_DEFINED
|
||||||
|
+ #define GUID_DEFINED
|
||||||
|
typedef struct _GUID
|
||||||
|
{
|
||||||
|
unsigned long Data1;
|
||||||
|
unsigned short Data2;
|
||||||
|
unsigned short Data3;
|
||||||
|
unsigned char Data4[8];
|
||||||
|
} GUID;
|
||||||
|
+ #endif /* GUID_DEFINED */
|
||||||
|
typedef GUID *REFGUID;
|
||||||
|
typedef GUID *LPGUID;
|
||||||
|
+ #ifndef UUID_DEFINED
|
||||||
|
+ #define UUID_DEFINED
|
||||||
|
typedef GUID UUID;
|
||||||
|
+ #endif /* UUID_DEFINED */
|
||||||
|
typedef GUID IID;
|
||||||
|
typedef GUID CLSID;
|
||||||
|
typedef CLSID *LPCLSID;
|
||||||
|
typedef IID *LPIID;
|
||||||
|
|
||||||
|
|
||||||
|
*** \gcc-inc\oaidl.h Sat Jul 31 16:48:42 1999
|
||||||
|
--- oaidl.h Fri Aug 06 13:18:48 1999
|
||||||
|
***************
|
||||||
|
*** 39,44 ****
|
||||||
|
--- 39,53 ----
|
||||||
|
#define IMPLTYPEFLAG_FRESTRICTED 4
|
||||||
|
#define IMPLTYPEFLAG_FDEFAULTVTABLE 8
|
||||||
|
|
||||||
|
+ #define DISPID_UNKNOWN ( -1 )
|
||||||
|
+ #define DISPID_VALUE ( 0 )
|
||||||
|
+ #define DISPID_PROPERTYPUT ( -3 )
|
||||||
|
+ #define DISPID_NEWENUM ( -4 )
|
||||||
|
+ #define DISPID_EVALUATE ( -5 )
|
||||||
|
+ #define DISPID_CONSTRUCTOR ( -6 )
|
||||||
|
+ #define DISPID_DESTRUCTOR ( -7 )
|
||||||
|
+ #define DISPID_COLLECT ( -8 )
|
||||||
|
+
|
||||||
|
typedef interface ITypeLib *LPTYPELIB;
|
||||||
|
typedef interface ICreateTypeInfo *LPCREATETYPEINFO;
|
||||||
|
typedef interface ICreateTypeInfo2 *LPCREATETYPEINFO2;
|
||||||
|
***************
|
||||||
|
*** 49,54 ****
|
||||||
|
--- 58,73 ----
|
||||||
|
typedef interface IDispatch *LPDISPATCH;
|
||||||
|
typedef interface ICreateErrorInfo *LPCREATEERRORINFO;
|
||||||
|
|
||||||
|
+ extern "C" const IID IID_ITypeLib;
|
||||||
|
+ extern "C" const IID IID_ICreateTypeInfo;
|
||||||
|
+ extern "C" const IID IID_ICreateTypeInfo2;
|
||||||
|
+ extern "C" const IID IID_ICreateTypeLib;
|
||||||
|
+ extern "C" const IID IID_ICreateTypeLib2;
|
||||||
|
+ extern "C" const IID IID_ITypeInfo;
|
||||||
|
+ extern "C" const IID IID_IErrorInfo;
|
||||||
|
+ extern "C" const IID IID_IDispatch;
|
||||||
|
+ extern "C" const IID IID_ICreateErrorInfo;
|
||||||
|
+
|
||||||
|
typedef enum tagSYSKIND {
|
||||||
|
SYS_WIN16,SYS_WIN32,SYS_MAC
|
||||||
|
} SYSKIND;
|
||||||
|
***************
|
||||||
|
*** 375,382 ****
|
||||||
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||||
|
STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
|
||||||
|
STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
|
||||||
|
! STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID)
|
||||||
|
PURE;
|
||||||
|
! STDMETHOD(Invoked)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
--- 394,401 ----
|
||||||
|
STDMETHOD_(ULONG,Release)(THIS) PURE;
|
||||||
|
STDMETHOD(GetTypeInfoCount)(THIS_ UINT*) PURE;
|
||||||
|
STDMETHOD(GetTypeInfo)(THIS_ UINT,LCID,LPTYPEINFO*) PURE;
|
||||||
|
! STDMETHOD(GetIDsOfNames)(THIS_ REFIID,LPOLESTR*,UINT,LCID,DISPID*)
|
||||||
|
PURE;
|
||||||
|
! STDMETHOD(Invoke)(THIS_ DISPID,REFIID,LCID,WORD,DISPPARAMS*,VARIANT*,EXCEPINFO*,UINT*) PURE;
|
||||||
|
};
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
|
||||||
|
|
||||||
|
*** \gcc-inc\objidl.h Sat Jul 31 16:48:42 1999
|
||||||
|
--- objidl.h Fri Aug 06 11:00:19 1999
|
||||||
|
***************
|
||||||
|
*** 627,633 ****
|
||||||
|
STDMETHOD(QueryGetData)(THIS_ FORMATETC*) PURE;
|
||||||
|
STDMETHOD(GetCanonicalFormatEtc)(THIS_ FORMATETC*,FORMATETC*) PURE;
|
||||||
|
STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE;
|
||||||
|
! STDMETHOD(EnumFormatEtc)(THIS_ DWORD,IEnumFORMATETC*) PURE;
|
||||||
|
STDMETHOD(DAdvise)(THIS_ FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE;
|
||||||
|
STDMETHOD(DUnadvise)(THIS_ DWORD) PURE;
|
||||||
|
STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**);
|
||||||
|
--- 627,633 ----
|
||||||
|
STDMETHOD(QueryGetData)(THIS_ FORMATETC*) PURE;
|
||||||
|
STDMETHOD(GetCanonicalFormatEtc)(THIS_ FORMATETC*,FORMATETC*) PURE;
|
||||||
|
STDMETHOD(SetData)(THIS_ FORMATETC*,STGMEDIUM*,BOOL) PURE;
|
||||||
|
! STDMETHOD(EnumFormatEtc)(THIS_ DWORD,IEnumFORMATETC**) PURE;
|
||||||
|
STDMETHOD(DAdvise)(THIS_ FORMATETC*,DWORD,IAdviseSink*,PDWORD) PURE;
|
||||||
|
STDMETHOD(DUnadvise)(THIS_ DWORD) PURE;
|
||||||
|
STDMETHOD(EnumDAdvise)(THIS_ IEnumSTATDATA**);
|
||||||
|
|
||||||
|
|
||||||
|
--- i386-mingw32\include\stdio.h Sun Aug 1 06:18:20 1999
|
||||||
|
+++ stdio.h Sun Nov 7 03:41:40 1999
|
||||||
|
@@ -203,9 +203,12 @@
|
||||||
|
int fprintf (FILE* filePrintTo, const char* szFormat, ...);
|
||||||
|
int printf (const char* szFormat, ...);
|
||||||
|
int sprintf (char* caBuffer, const char* szFormat, ...);
|
||||||
|
+int _snprintf (char* caBuffer, size_t n, const char* szFormat, ...);
|
||||||
|
int vfprintf (FILE* filePrintTo, const char* szFormat, va_list varg);
|
||||||
|
int vprintf (const char* szFormat, va_list varg);
|
||||||
|
int vsprintf (char* caBuffer, const char* szFormat, va_list varg);
|
||||||
|
+int _vsnprintf (char* caBuffer, size_t n, const char* szFormat,
|
||||||
|
+ va_list varg);
|
||||||
|
|
||||||
|
/* Wide character versions */
|
||||||
|
int fwprintf (FILE* filePrintTo, const wchar_t* wsFormat, ...);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--- i386-mingw32\include\winbase.h Sat Jul 31 17:48:48 1999
|
||||||
|
+++ winbase.h Fri Feb 25 01:49:08 2000
|
||||||
|
@@ -989,7 +989,7 @@
|
||||||
|
BOOL WINAPI CopyFileExW(LPCWSTR,LPCWSTR,LPPROGRESS_ROUTINE,LPVOID,LPBOOL,DWORD);
|
||||||
|
#define RtlMoveMemory memmove
|
||||||
|
#define RtlCopyMemory memcpy
|
||||||
|
-#define RtlFillMemory memset
|
||||||
|
+#define RtlFillMemory(d,l,f) memset ((d),(f),(l))
|
||||||
|
#define RtlZeroMemory(d,l) memset((d),0,(l))
|
||||||
|
#define MoveMemory RtlMoveMemory
|
||||||
|
#define CopyMemory RtlCopyMemory
|
||||||
|
|
||||||
|
--- i386-mingw32\include\winsock.h Sat Jul 31 17:48:50 1999
|
||||||
|
+++ winsock.h Mon Mar 20 13:47:12 2000
|
||||||
|
@@ -13,6 +13,10 @@
|
||||||
|
#define _GNU_H_WINDOWS32_SOCKETS
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
+extern "C" {
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#ifndef _SYS_TYPES_H
|
||||||
|
typedef unsigned char u_char;
|
||||||
|
typedef unsigned short u_short;
|
||||||
|
@@ -495,4 +499,9 @@
|
||||||
|
typedef struct timeval TIMEVAL;
|
||||||
|
typedef struct timeval *PTIMEVAL;
|
||||||
|
typedef struct timeval *LPTIMEVAL;
|
||||||
|
+
|
||||||
|
+#ifdef __cplusplus
|
||||||
|
+}
|
||||||
|
#endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
|
||||||
|
|
289
aclocal.m4
vendored
Normal file
@@ -0,0 +1,289 @@
|
|||||||
|
dnl aclocal.m4 generated automatically by aclocal 1.4
|
||||||
|
|
||||||
|
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||||
|
dnl This file is free software; the Free Software Foundation
|
||||||
|
dnl gives unlimited permission to copy and/or distribute it,
|
||||||
|
dnl with or without modifications, as long as this notice is preserved.
|
||||||
|
|
||||||
|
dnl This program is distributed in the hope that it will be useful,
|
||||||
|
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||||
|
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||||
|
dnl PARTICULAR PURPOSE.
|
||||||
|
|
||||||
|
# Configure paths for GTK+
|
||||||
|
# Owen Taylor 97-11-3
|
||||||
|
|
||||||
|
dnl AM_PATH_GTK([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND]]])
|
||||||
|
dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS. Uses variables
|
||||||
|
dnl gtk_config_prefix and/or gtk_config_exec_prefix if defined.
|
||||||
|
AC_DEFUN(AM_PATH_GTK,
|
||||||
|
[
|
||||||
|
if test x$gtk_config_exec_prefix != x ; then
|
||||||
|
gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
|
||||||
|
if test x${GTK_CONFIG+set} != xset ; then
|
||||||
|
GTK_CONFIG=$gtk_config_exec_prefix/bin/gtk-config
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test x$gtk_config_prefix != x ; then
|
||||||
|
gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
|
||||||
|
if test x${GTK_CONFIG+set} != xset ; then
|
||||||
|
GTK_CONFIG=$gtk_config_prefix/bin/gtk-config
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_PATH_PROG(GTK_CONFIG, gtk-config, no)
|
||||||
|
min_gtk_version=ifelse([$1], ,0.99.7,$1)
|
||||||
|
AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
|
||||||
|
no_gtk=""
|
||||||
|
if test "$GTK_CONFIG" != "no" ; then
|
||||||
|
GTK_CFLAGS=`$GTK_CONFIG --cflags`
|
||||||
|
GTK_LIBS=`$GTK_CONFIG --libs gthread`
|
||||||
|
ac_save_CFLAGS="$CFLAGS"
|
||||||
|
ac_save_LIBS="$LIBS"
|
||||||
|
CFLAGS="$CFLAGS $GTK_CFLAGS"
|
||||||
|
LIBS="$LIBS $GTK_LIBS"
|
||||||
|
dnl
|
||||||
|
dnl Now check if the installed GTK is sufficiently new. (Also sanity
|
||||||
|
dnl checks the results of gtk-config to some extent)
|
||||||
|
dnl
|
||||||
|
AC_TRY_RUN([
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <gtk/gtkfeatures.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
int major, minor, micro;
|
||||||
|
|
||||||
|
if (sscanf("$min_gtk_version", "%d.%d.%d", &major, &minor, µ) != 3) {
|
||||||
|
printf("%s, bad version string\n", "$min_gtk_version");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((GTK_MAJOR_VERSION != gtk_major_version) ||
|
||||||
|
(GTK_MINOR_VERSION != gtk_minor_version) ||
|
||||||
|
(GTK_MICRO_VERSION != gtk_micro_version)) {
|
||||||
|
printf("Headers vs. library version mismatch!\n");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (gtk_minor_version == 1) return FALSE;
|
||||||
|
|
||||||
|
return !((gtk_major_version > major) ||
|
||||||
|
((gtk_major_version == major) && (gtk_minor_version > minor)) ||
|
||||||
|
((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)));
|
||||||
|
}
|
||||||
|
],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
|
||||||
|
CFLAGS="$ac_save_CFLAGS"
|
||||||
|
LIBS="$ac_save_LIBS"
|
||||||
|
else
|
||||||
|
no_gtk=yes
|
||||||
|
fi
|
||||||
|
if test "x$no_gtk" = x ; then
|
||||||
|
AC_MSG_RESULT(yes)
|
||||||
|
ifelse([$2], , :, [$2])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
GTK_CFLAGS=""
|
||||||
|
GTK_LIBS=""
|
||||||
|
ifelse([$3], , :, [$3])
|
||||||
|
fi
|
||||||
|
AC_SUBST(GTK_CFLAGS)
|
||||||
|
AC_SUBST(GTK_LIBS)
|
||||||
|
])
|
||||||
|
|
||||||
|
dnl AM_PATH_GTK_2_0([MINIMUM-VERSION, [ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND [, MODULES]]]])
|
||||||
|
dnl Test for GTK, and define GTK_CFLAGS and GTK_LIBS
|
||||||
|
dnl
|
||||||
|
AC_DEFUN(AM_PATH_GTK_2_0,
|
||||||
|
[dnl
|
||||||
|
dnl Get the cflags and libraries from the gtk-config-2.0 script
|
||||||
|
dnl
|
||||||
|
AC_ARG_WITH(gtk-prefix,[ --with-gtk-prefix=PFX Prefix where GTK is installed (optional)],
|
||||||
|
gtk_config_prefix="$withval", gtk_config_prefix="")
|
||||||
|
AC_ARG_WITH(gtk-exec-prefix,[ --with-gtk-exec-prefix=PFX Exec prefix where GTK is installed (optional)],
|
||||||
|
gtk_config_exec_prefix="$withval", gtk_config_exec_prefix="")
|
||||||
|
AC_ARG_ENABLE(gtktest, [ --disable-gtktest Do not try to compile and run a test GTK program],
|
||||||
|
, enable_gtktest=yes)
|
||||||
|
|
||||||
|
for module in . $4
|
||||||
|
do
|
||||||
|
case "$module" in
|
||||||
|
gthread)
|
||||||
|
gtk_config_args="$gtk_config_args gthread"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
if test x$gtk_config_exec_prefix != x ; then
|
||||||
|
gtk_config_args="$gtk_config_args --exec-prefix=$gtk_config_exec_prefix"
|
||||||
|
if test x${GTK_CONFIG_2_0+set} != xset ; then
|
||||||
|
GTK_CONFIG_2_0=$gtk_config_exec_prefix/bin/gtk-config-2.0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test x$gtk_config_prefix != x ; then
|
||||||
|
gtk_config_args="$gtk_config_args --prefix=$gtk_config_prefix"
|
||||||
|
if test x${GTK_CONFIG_2_0+set} != xset ; then
|
||||||
|
GTK_CONFIG_2_0=$gtk_config_prefix/bin/gtk-config-2.0
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
AC_PATH_PROG(GTK_CONFIG_2_0, gtk-config-2.0, no)
|
||||||
|
min_gtk_version=ifelse([$1], ,1.3.1,$1)
|
||||||
|
AC_MSG_CHECKING(for GTK - version >= $min_gtk_version)
|
||||||
|
no_gtk=""
|
||||||
|
if test "$GTK_CONFIG_2_0" = "no" ; then
|
||||||
|
no_gtk=yes
|
||||||
|
else
|
||||||
|
GTK_CFLAGS=`$GTK_CONFIG_2_0 $gtk_config_args --cflags`
|
||||||
|
GTK_LIBS=`$GTK_CONFIG_2_0 $gtk_config_args --libs`
|
||||||
|
gtk_config_major_version=`$GTK_CONFIG_2_0 $gtk_config_args --version | \
|
||||||
|
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\1/'`
|
||||||
|
gtk_config_minor_version=`$GTK_CONFIG_2_0 $gtk_config_args --version | \
|
||||||
|
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\2/'`
|
||||||
|
gtk_config_micro_version=`$GTK_CONFIG_2_0 $gtk_config_args --version | \
|
||||||
|
sed 's/\([[0-9]]*\).\([[0-9]]*\).\([[0-9]]*\)/\3/'`
|
||||||
|
if test "x$enable_gtktest" = "xyes" ; then
|
||||||
|
ac_save_CFLAGS="$CFLAGS"
|
||||||
|
ac_save_LIBS="$LIBS"
|
||||||
|
CFLAGS="$CFLAGS $GTK_CFLAGS"
|
||||||
|
LIBS="$GTK_LIBS $LIBS"
|
||||||
|
dnl
|
||||||
|
dnl Now check if the installed GTK is sufficiently new. (Also sanity
|
||||||
|
dnl checks the results of gtk-config-2.0 to some extent
|
||||||
|
dnl
|
||||||
|
rm -f conf.gtktest
|
||||||
|
AC_TRY_RUN([
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int
|
||||||
|
main ()
|
||||||
|
{
|
||||||
|
int major, minor, micro;
|
||||||
|
char *tmp_version;
|
||||||
|
|
||||||
|
system ("touch conf.gtktest");
|
||||||
|
|
||||||
|
/* HP/UX 9 (%@#!) writes to sscanf strings */
|
||||||
|
tmp_version = g_strdup("$min_gtk_version");
|
||||||
|
if (sscanf(tmp_version, "%d.%d.%d", &major, &minor, µ) != 3) {
|
||||||
|
printf("%s, bad version string\n", "$min_gtk_version");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if ((gtk_major_version != $gtk_config_major_version) ||
|
||||||
|
(gtk_minor_version != $gtk_config_minor_version) ||
|
||||||
|
(gtk_micro_version != $gtk_config_micro_version))
|
||||||
|
{
|
||||||
|
printf("\n*** 'gtk-config-2.0 --version' returned %d.%d.%d, but GTK+ (%d.%d.%d)\n",
|
||||||
|
$gtk_config_major_version, $gtk_config_minor_version, $gtk_config_micro_version,
|
||||||
|
gtk_major_version, gtk_minor_version, gtk_micro_version);
|
||||||
|
printf ("*** was found! If gtk-config-2.0 was correct, then it is best\n");
|
||||||
|
printf ("*** to remove the old version of GTK+. You may also be able to fix the error\n");
|
||||||
|
printf("*** by modifying your LD_LIBRARY_PATH enviroment variable, or by editing\n");
|
||||||
|
printf("*** /etc/ld.so.conf. Make sure you have run ldconfig if that is\n");
|
||||||
|
printf("*** required on your system.\n");
|
||||||
|
printf("*** If gtk-config-2.0 was wrong, set the environment variable GTK_CONFIG_2_0\n");
|
||||||
|
printf("*** to point to the correct copy of gtk-config-2.0, and remove the file config.cache\n");
|
||||||
|
printf("*** before re-running configure\n");
|
||||||
|
}
|
||||||
|
#if defined (GTK_MAJOR_VERSION) && defined (GTK_MINOR_VERSION) && defined (GTK_MICRO_VERSION)
|
||||||
|
else if ((gtk_major_version != GTK_MAJOR_VERSION) ||
|
||||||
|
(gtk_minor_version != GTK_MINOR_VERSION) ||
|
||||||
|
(gtk_micro_version != GTK_MICRO_VERSION))
|
||||||
|
{
|
||||||
|
printf("*** GTK+ header files (version %d.%d.%d) do not match\n",
|
||||||
|
GTK_MAJOR_VERSION, GTK_MINOR_VERSION, GTK_MICRO_VERSION);
|
||||||
|
printf("*** library (version %d.%d.%d)\n",
|
||||||
|
gtk_major_version, gtk_minor_version, gtk_micro_version);
|
||||||
|
}
|
||||||
|
#endif /* defined (GTK_MAJOR_VERSION) ... */
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if ((gtk_major_version > major) ||
|
||||||
|
((gtk_major_version == major) && (gtk_minor_version > minor)) ||
|
||||||
|
((gtk_major_version == major) && (gtk_minor_version == minor) && (gtk_micro_version >= micro)))
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("\n*** An old version of GTK+ (%d.%d.%d) was found.\n",
|
||||||
|
gtk_major_version, gtk_minor_version, gtk_micro_version);
|
||||||
|
printf("*** You need a version of GTK+ newer than %d.%d.%d. The latest version of\n",
|
||||||
|
major, minor, micro);
|
||||||
|
printf("*** GTK+ is always available from ftp://ftp.gtk.org.\n");
|
||||||
|
printf("***\n");
|
||||||
|
printf("*** If you have already installed a sufficiently new version, this error\n");
|
||||||
|
printf("*** probably means that the wrong copy of the gtk-config-2.0 shell script is\n");
|
||||||
|
printf("*** being found. The easiest way to fix this is to remove the old version\n");
|
||||||
|
printf("*** of GTK+, but you can also set the GTK_CONFIG_2_0 environment to point to the\n");
|
||||||
|
printf("*** correct copy of gtk-config-2.0. (In this case, you will have to\n");
|
||||||
|
printf("*** modify your LD_LIBRARY_PATH enviroment variable, or edit /etc/ld.so.conf\n");
|
||||||
|
printf("*** so that the correct libraries are found at run-time))\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
],, no_gtk=yes,[echo $ac_n "cross compiling; assumed OK... $ac_c"])
|
||||||
|
CFLAGS="$ac_save_CFLAGS"
|
||||||
|
LIBS="$ac_save_LIBS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if test "x$no_gtk" = x ; then
|
||||||
|
AC_MSG_RESULT(yes (version $gtk_config_major_version.$gtk_config_minor_version.$gtk_config_micro_version))
|
||||||
|
ifelse([$2], , :, [$2])
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT(no)
|
||||||
|
if test "$GTK_CONFIG_2_0" = "no" ; then
|
||||||
|
echo "*** The gtk-config-2.0 script installed by GTK could not be found"
|
||||||
|
echo "*** If GTK was installed in PREFIX, make sure PREFIX/bin is in"
|
||||||
|
echo "*** your path, or set the GTK_CONFIG_2_0 environment variable to the"
|
||||||
|
echo "*** full path to gtk-config-2.0."
|
||||||
|
else
|
||||||
|
if test -f conf.gtktest ; then
|
||||||
|
:
|
||||||
|
else
|
||||||
|
echo "*** Could not run GTK test program, checking why..."
|
||||||
|
CFLAGS="$CFLAGS $GTK_CFLAGS"
|
||||||
|
LIBS="$LIBS $GTK_LIBS"
|
||||||
|
AC_TRY_LINK([
|
||||||
|
#include <gtk/gtk.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
], [ return ((gtk_major_version) || (gtk_minor_version) || (gtk_micro_version)); ],
|
||||||
|
[ echo "*** The test program compiled, but did not run. This usually means"
|
||||||
|
echo "*** that the run-time linker is not finding GTK or finding the wrong"
|
||||||
|
echo "*** version of GTK. If it is not finding GTK, you'll need to set your"
|
||||||
|
echo "*** LD_LIBRARY_PATH environment variable, or edit /etc/ld.so.conf to point"
|
||||||
|
echo "*** to the installed location Also, make sure you have run ldconfig if that"
|
||||||
|
echo "*** is required on your system"
|
||||||
|
echo "***"
|
||||||
|
echo "*** If you have an old version installed, it is best to remove it, although"
|
||||||
|
echo "*** you may also be able to get things to work by modifying LD_LIBRARY_PATH"
|
||||||
|
echo "***"
|
||||||
|
echo "*** If you have a RedHat 5.0 system, you should remove the GTK package that"
|
||||||
|
echo "*** came with the system with the command"
|
||||||
|
echo "***"
|
||||||
|
echo "*** rpm --erase --nodeps gtk gtk-devel" ],
|
||||||
|
[ echo "*** The test program failed to compile or link. See the file config.log for the"
|
||||||
|
echo "*** exact error that occured. This usually means GTK was incorrectly installed"
|
||||||
|
echo "*** or that you have moved GTK since it was installed. In the latter case, you"
|
||||||
|
echo "*** may want to edit the gtk-config-2.0 script: $GTK_CONFIG_2_0" ])
|
||||||
|
CFLAGS="$ac_save_CFLAGS"
|
||||||
|
LIBS="$ac_save_LIBS"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
GTK_CFLAGS=""
|
||||||
|
GTK_LIBS=""
|
||||||
|
ifelse([$3], , :, [$3])
|
||||||
|
fi
|
||||||
|
AC_SUBST(GTK_CFLAGS)
|
||||||
|
AC_SUBST(GTK_LIBS)
|
||||||
|
rm -f conf.gtktest
|
||||||
|
])
|
||||||
|
|
||||||
|
|
2
autogen.sh
Executable file
@@ -0,0 +1,2 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
autoconf
|
1317
config.guess
vendored
Executable file
1411
config.sub
vendored
Executable file
4958
configure.in
Normal file
15
contrib/Makefile.in
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
#
|
||||||
|
# Makefile : Builds wxWindows utils for Unix.
|
||||||
|
#
|
||||||
|
|
||||||
|
all:
|
||||||
|
cd src; $(MAKE)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
cd src; $(MAKE) clean
|
||||||
|
cd samples; $(MAKE) clean
|
||||||
|
cd utils; $(MAKE) clean
|
||||||
|
|
||||||
|
|
||||||
|
samples:
|
||||||
|
cd samples; $(MAKE)
|
1036
contrib/configure
vendored
Executable file
79
contrib/configure.in
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
dnl Process this file with autoconf to produce a configure script.
|
||||||
|
AC_REVISION($Id$)dnl
|
||||||
|
|
||||||
|
AC_INIT(Makefile.in)
|
||||||
|
|
||||||
|
dnl ---------------
|
||||||
|
dnl MMedia specific
|
||||||
|
dnl ---------------
|
||||||
|
|
||||||
|
dnl Check for ESD
|
||||||
|
|
||||||
|
ESD_LINK=
|
||||||
|
AC_CHECK_HEADER(esd.h, [
|
||||||
|
AC_CHECK_LIB(esd, esd_close, [
|
||||||
|
ESD_LINK="-lesd"
|
||||||
|
])
|
||||||
|
])
|
||||||
|
|
||||||
|
if test "$ESD_LINK" != "" ; then
|
||||||
|
echo "ESound detected"
|
||||||
|
fi
|
||||||
|
|
||||||
|
dnl -----------
|
||||||
|
dnl Final subst
|
||||||
|
|
||||||
|
PATH_IFS=$wx_cv_path_ifs
|
||||||
|
WX_TARGET_LIBRARY=$wx_cv_target_library
|
||||||
|
WX_TARGET_LIBRARY_TYPE=$wx_cv_target_libtype
|
||||||
|
|
||||||
|
AC_SUBST(PATH_IFS)
|
||||||
|
AC_SUBST(ESD_LINK)
|
||||||
|
AC_SUBST(WX_TARGET_LIBRARY)
|
||||||
|
AC_SUBST(WX_TARGET_LIBRARY_TYPE)
|
||||||
|
|
||||||
|
dnl -----------
|
||||||
|
dnl File output
|
||||||
|
|
||||||
|
|
||||||
|
AC_OUTPUT([
|
||||||
|
src/Makefile
|
||||||
|
src/ogl/Makefile
|
||||||
|
src/mmedia/Makefile
|
||||||
|
src/stc/Makefile
|
||||||
|
src/xrc/Makefile
|
||||||
|
src/canvas/Makefile
|
||||||
|
src/gizmos/Makefile
|
||||||
|
src/plot/Makefile
|
||||||
|
src/applet/Makefile
|
||||||
|
src/fl/Makefile
|
||||||
|
src/net/Makefile
|
||||||
|
samples/Makefile
|
||||||
|
samples/mmedia/Makefile
|
||||||
|
samples/ogl/Makefile
|
||||||
|
samples/ogl/ogledit/Makefile
|
||||||
|
samples/ogl/studio/Makefile
|
||||||
|
samples/stc/Makefile
|
||||||
|
samples/canvas/Makefile
|
||||||
|
samples/canvas/test/Makefile
|
||||||
|
samples/canvas/simple/Makefile
|
||||||
|
samples/gizmos/Makefile
|
||||||
|
samples/gizmos/multicell/Makefile
|
||||||
|
samples/gizmos/splittree/Makefile
|
||||||
|
samples/gizmos/editlbox/Makefile
|
||||||
|
samples/gizmos/dynsash/Makefile
|
||||||
|
samples/gizmos/dynsash_switch/Makefile
|
||||||
|
samples/xrc/Makefile
|
||||||
|
samples/plot/Makefile
|
||||||
|
samples/applet/Makefile
|
||||||
|
samples/fl/Makefile
|
||||||
|
samples/fl/fl_demo1/Makefile
|
||||||
|
samples/fl/fl_demo2/Makefile
|
||||||
|
samples/fl/fl_sample1/Makefile
|
||||||
|
samples/fl/fl_sample2/Makefile
|
||||||
|
samples/fl/fl_sample3/Makefile
|
||||||
|
utils/Makefile
|
||||||
|
utils/wxrc/Makefile
|
||||||
|
utils/wxrcedit/Makefile
|
||||||
|
utils/convertrc/Makefile
|
||||||
|
])
|
BIN
contrib/docs/latex/mmedia/back.gif
Normal file
After Width: | Height: | Size: 225 B |
BIN
contrib/docs/latex/mmedia/books.bmp
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
contrib/docs/latex/mmedia/books.gif
Normal file
After Width: | Height: | Size: 440 B |
9
contrib/docs/latex/mmedia/bugs.tex
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
\chapter{Bugs}\label{bugs}%
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
These are the known bugs.
|
||||||
|
|
||||||
|
\begin{itemize}\itemsep=0pt
|
||||||
|
\item No bugs
|
||||||
|
\end{itemize}
|
BIN
contrib/docs/latex/mmedia/bullet.bmp
Normal file
After Width: | Height: | Size: 138 B |
24
contrib/docs/latex/mmedia/cdaudio.tex
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/cdbase.h at 26/Feb/00 14:52:12
|
||||||
|
%
|
||||||
|
|
||||||
|
\section{\class{wxCDAudio}}\label{wxcdaudio}
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
wxObject
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
{\small
|
||||||
|
\begin{verbatim}
|
||||||
|
typedef struct wxCDtime {
|
||||||
|
wxUint8 track
|
||||||
|
};
|
||||||
|
\end{verbatim}
|
||||||
|
}
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef enum { PLAYING, PAUSED, STOPPED } CDstatus
|
||||||
|
\end{verbatim}}
|
||||||
|
|
66
contrib/docs/latex/mmedia/cdaudlnx.tex
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/cdunix.h at 26/Feb/00 14:52:10
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxCDAudioLinux}}\label{wxcdaudiolinux}
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxCDAudio}{wxcdaudio}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::wxCDAudioLinux}\label{wxcdaudiolinuxwxcdaudiolinux}
|
||||||
|
|
||||||
|
\func{}{wxCDAudioLinux}{\void}
|
||||||
|
|
||||||
|
\func{}{wxCDAudioLinux}{\param{const char* }{dev\_name}}
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::\destruct{wxCDAudioLinux}}\label{wxcdaudiolinuxdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxCDAudioLinux}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::Play}\label{wxcdaudiolinuxplay}
|
||||||
|
|
||||||
|
\func{bool}{Play}{\param{const wxCDtime\& }{beg\_time}, \param{const wxCDtime\& }{end\_time}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::Pause}\label{wxcdaudiolinuxpause}
|
||||||
|
|
||||||
|
\func{bool}{Pause}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::Resume}\label{wxcdaudiolinuxresume}
|
||||||
|
|
||||||
|
\func{bool}{Resume}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::GetStatus}\label{wxcdaudiolinuxgetstatus}
|
||||||
|
|
||||||
|
\func{CDstatus}{GetStatus}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::GetTime}\label{wxcdaudiolinuxgettime}
|
||||||
|
|
||||||
|
\func{wxCDtime}{GetTime}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::GetToc}\label{wxcdaudiolinuxgettoc}
|
||||||
|
|
||||||
|
\func{CDtoc\&}{GetToc}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::Ok}\label{wxcdaudiolinuxok}
|
||||||
|
|
||||||
|
\constfunc{bool}{Ok}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioLinux::OpenDevice}\label{wxcdaudiolinuxopendevice}
|
||||||
|
|
||||||
|
\func{void}{OpenDevice}{\param{const char* }{dev\_name}}
|
||||||
|
|
78
contrib/docs/latex/mmedia/cdaudwin.tex
Normal file
@@ -0,0 +1,78 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/cdwin.h at 26/Feb/00 14:52:15
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxCDAudioWin}}\label{wxcdaudiowin}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxCDAudio}{wxcdaudio}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
{\small
|
||||||
|
\begin{verbatim}
|
||||||
|
typedef struct CDAW\_Internal {
|
||||||
|
MCIDEVICEID dev\_id
|
||||||
|
};
|
||||||
|
\end{verbatim}
|
||||||
|
}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::wxCDAudioWin}\label{wxcdaudiowinwxcdaudiowin}
|
||||||
|
|
||||||
|
\func{}{wxCDAudioWin}{\void}
|
||||||
|
|
||||||
|
\func{}{wxCDAudioWin}{\param{const char* }{dev\_name}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::\destruct{wxCDAudioWin}}\label{wxcdaudiowindtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxCDAudioWin}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::Play}\label{wxcdaudiowinplay}
|
||||||
|
|
||||||
|
\func{bool}{Play}{\param{const wxCDtime\& }{beg\_time}, \param{const wxCDtime\& }{end\_time}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::Pause}\label{wxcdaudiowinpause}
|
||||||
|
|
||||||
|
\func{bool}{Pause}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::Resume}\label{wxcdaudiowinresume}
|
||||||
|
|
||||||
|
\func{bool}{Resume}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::GetStatus}\label{wxcdaudiowingetstatus}
|
||||||
|
|
||||||
|
\func{CDstatus}{GetStatus}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::GetTime}\label{wxcdaudiowingettime}
|
||||||
|
|
||||||
|
\func{wxCDtime}{GetTime}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::GetToc}\label{wxcdaudiowingettoc}
|
||||||
|
|
||||||
|
\func{const CDtoc\&}{GetToc}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::Ok}\label{wxcdaudiowinok}
|
||||||
|
|
||||||
|
\constfunc{bool}{Ok}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudioWin::PrepareToc}\label{wxcdaudiowinpreparetoc}
|
||||||
|
|
||||||
|
\func{void}{PrepareToc}{\void}
|
||||||
|
|
111
contrib/docs/latex/mmedia/cdtoc.tex
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/cdbase.h at 26/Feb/00 14:52:12
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{CDtoc}}\label{cdtoc}
|
||||||
|
|
||||||
|
|
||||||
|
Table of contents manager
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
No base class
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
\membersection{CDtoc::CDtoc}\label{cdtoccdtoc}
|
||||||
|
|
||||||
|
\func{}{CDtoc}{\param{wxCDtime\& }{tot\_tm}, \param{wxCDtime* }{trks\_tm}, \param{wxCDtime* }{trks\_pos}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{CDtoc::GetTrackTime}\label{cdtocgettracktime}
|
||||||
|
|
||||||
|
\constfunc{wxCDtime}{GetTrackTime}{\param{wxUint8 }{track}}
|
||||||
|
|
||||||
|
Returns the length of the specified track
|
||||||
|
track: track to get length
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{CDtoc::GetTrackPos}\label{cdtocgettrackpos}
|
||||||
|
|
||||||
|
\constfunc{wxCDtime}{GetTrackPos}{\param{wxUint8 }{track}}
|
||||||
|
|
||||||
|
Returns the position of the specified track
|
||||||
|
track: track to get position
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{CDtoc::GetTotalTime}\label{cdtocgettotaltime}
|
||||||
|
|
||||||
|
\constfunc{wxCDtime}{GetTotalTime}{\void}
|
||||||
|
|
||||||
|
Returns the total time
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudio::wxCDAudio}\label{wxcdaudiowxcdaudio}
|
||||||
|
|
||||||
|
\func{}{wxCDAudio}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudio::\destruct{wxCDAudio}}\label{wxcdaudiodtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxCDAudio}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudio::Play}\label{wxcdaudioplay}
|
||||||
|
|
||||||
|
\func{bool}{Play}{\param{const wxCDtime\& }{beg\_play}, \param{const wxCDtime\& }{end\_play}}
|
||||||
|
|
||||||
|
Play audio at the specified position
|
||||||
|
|
||||||
|
\func{bool}{Play}{\param{const wxCDtime\& }{beg\_play}}
|
||||||
|
|
||||||
|
Play audio from the specified to the end of the CD audio
|
||||||
|
|
||||||
|
\func{bool}{Play}{\param{wxUint8 }{beg\_track}, \param{wxUint8 }{end\_track = 0}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudio::Pause}\label{wxcdaudiopause}
|
||||||
|
|
||||||
|
\func{bool}{Pause}{\void}
|
||||||
|
|
||||||
|
Pause the audio playing
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudio::Resume}\label{wxcdaudioresume}
|
||||||
|
|
||||||
|
\func{bool}{Resume}{\void}
|
||||||
|
|
||||||
|
Resume a paused audio playing
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudio::GetStatus}\label{wxcdaudiogetstatus}
|
||||||
|
|
||||||
|
\func{CDstatus}{GetStatus}{\void}
|
||||||
|
|
||||||
|
Get the current CD status
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudio::GetTime}\label{wxcdaudiogettime}
|
||||||
|
|
||||||
|
\func{wxCDtime}{GetTime}{\void}
|
||||||
|
|
||||||
|
Get the current playing time
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudio::GetToc}\label{wxcdaudiogettoc}
|
||||||
|
|
||||||
|
\func{const CDtoc\&}{GetToc}{\void}
|
||||||
|
|
||||||
|
Returns the table of contents
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxCDAudio::Ok}\label{wxcdaudiook}
|
||||||
|
|
||||||
|
\constfunc{bool}{Ok}{\void}
|
||||||
|
|
||||||
|
CD ok
|
||||||
|
|
3
contrib/docs/latex/mmedia/changes.tex
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
\chapter{Change log}
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
13
contrib/docs/latex/mmedia/classes.tex
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
\chapter{Class reference}\label{classref}
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
These are the main Mmedia classes.
|
||||||
|
|
||||||
|
\input cdaudio.tex
|
||||||
|
\input cdaudlnx.tex
|
||||||
|
\input cdaudwin.tex
|
||||||
|
\input cdtoc.tex
|
||||||
|
\input sndbase.tex
|
||||||
|
\input sndfile.tex
|
||||||
|
\input sndfrmt.tex
|
BIN
contrib/docs/latex/mmedia/contents.gif
Normal file
After Width: | Height: | Size: 231 B |
BIN
contrib/docs/latex/mmedia/forward.gif
Normal file
After Width: | Height: | Size: 164 B |
47
contrib/docs/latex/mmedia/intro.tex
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
\chapter{Introduction}
|
||||||
|
\pagenumbering{arabic}%
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
The MMedia wxWindows extension is a wxWindows library which provides you
|
||||||
|
a full set of multimedia classes including sound recording/playing,
|
||||||
|
cd audio playing and video playing. The API is portable and can be used
|
||||||
|
on any supported systems with the insurance the behaviour will be the
|
||||||
|
same.
|
||||||
|
|
||||||
|
\section{File structure}
|
||||||
|
|
||||||
|
These are the files that comprise the mmedia library.
|
||||||
|
|
||||||
|
\begin{description}\itemsep=0pt
|
||||||
|
\item[sndbase.h] Header for wxSoundStream base class and wxSoundFormat base class.
|
||||||
|
\item[sndbase.cpp] Basic objects implementation.
|
||||||
|
\item[sndfile.h] wxSoundFileStream base class header.
|
||||||
|
\item[sndfile.cpp] wxSoundFileStream base class implementation.
|
||||||
|
\item[sndpcm.h] wxSoundFormatPcm class header.
|
||||||
|
\item[sndpcm.cpp] wxSoundFormatPcm class implementation.
|
||||||
|
\item[sndcpcm.h] wxSoundCodecPcm class header (PCM converter).
|
||||||
|
\item[sndcpcm.cpp] wxSoundCodecPcm class implementation (PCM converter).
|
||||||
|
\item[sndulaw.h]
|
||||||
|
\item[sndulaw.cpp]
|
||||||
|
\item[sndg72x.h]
|
||||||
|
\item[sndg72x.cpp]
|
||||||
|
\item[sndoss.h]
|
||||||
|
\item[sndoss.cpp]
|
||||||
|
\item[sndesd.h]
|
||||||
|
\item[sndesd.cpp]
|
||||||
|
\item[sndwin.h]
|
||||||
|
\item[sndwin.cpp]
|
||||||
|
\item[cdbase.h]
|
||||||
|
\item[cdbase.cpp]
|
||||||
|
\item[cdunix.h]
|
||||||
|
\item[cdunix.cpp]
|
||||||
|
\item[cdwin.h]
|
||||||
|
\item[cdwin.cpp]
|
||||||
|
\item[vidbase.h]
|
||||||
|
\item[vidbase.cpp]
|
||||||
|
\item[vidxanm.h]
|
||||||
|
\item[vidxanm.cpp]
|
||||||
|
\item[vidwin.h]
|
||||||
|
\item[vidwin.cpp]
|
||||||
|
\end{description}
|
45
contrib/docs/latex/mmedia/mmedia.tex
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
\documentstyle[a4,makeidx,verbatim,texhelp,fancyheadings]{report}
|
||||||
|
\definecolour{black}{0}{0}{0}%
|
||||||
|
\definecolour{cyan}{0}{255}{255}%
|
||||||
|
\definecolour{green}{0}{255}{0}%
|
||||||
|
\definecolour{magenta}{255}{0}{255}%
|
||||||
|
\definecolour{red}{255}{0}{0}%
|
||||||
|
\definecolour{blue}{0}{0}{200}%
|
||||||
|
\definecolour{yellow}{255}{255}{0}%
|
||||||
|
\definecolour{white}{255}{255}{255}%
|
||||||
|
\input psbox.tex
|
||||||
|
\parindent 0pt
|
||||||
|
\parskip 11pt
|
||||||
|
\title{MMedia for wxWindows}
|
||||||
|
\author{Guilhem Lavaux}
|
||||||
|
\date{March 2000}
|
||||||
|
|
||||||
|
\makeindex
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\pagestyle{fancyplain}
|
||||||
|
\bibliographystyle{plain}
|
||||||
|
\pagenumbering{roman}
|
||||||
|
\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}}
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
\tableofcontents%
|
||||||
|
|
||||||
|
\input{intro.tex}
|
||||||
|
%
|
||||||
|
\input{sample.tex}
|
||||||
|
%
|
||||||
|
\input{classes.tex}
|
||||||
|
%
|
||||||
|
\input{topics.tex}
|
||||||
|
%
|
||||||
|
\input{bugs.tex}
|
||||||
|
%
|
||||||
|
\input{changes.tex}
|
||||||
|
|
||||||
|
%
|
||||||
|
\addcontentsline{toc}{chapter}{Index}
|
||||||
|
\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}%
|
||||||
|
\printindex
|
||||||
|
\end{document}
|
520
contrib/docs/latex/mmedia/psbox.tex
Normal file
@@ -0,0 +1,520 @@
|
|||||||
|
%
|
||||||
|
% %%%%%%% %%%%% %%%%%% %%%%% % %
|
||||||
|
% % % % % % % % % %
|
||||||
|
% % % % % % % % % %
|
||||||
|
% %%%%%%% %%%%% %%%%%% % % %
|
||||||
|
% % % % % % % % %
|
||||||
|
% % % % % % % % %
|
||||||
|
% % %%%%%% %%%%%% %%%%% % %
|
||||||
|
%
|
||||||
|
% By Jean Orloff
|
||||||
|
% Comments & suggestions by e-mail: ORLOFF@surya11.cern.ch
|
||||||
|
% No modification of this file allowed if not e-sent to me.
|
||||||
|
%
|
||||||
|
% A simple way to measure the size of encapsulated postscript figures
|
||||||
|
% from inside TeX, and to use it for automatically formatting texts
|
||||||
|
% with inserted figures. Works both under Plain TeX-based macros
|
||||||
|
% (Phyzzx, Harvmac, Psizzl, ...) and LaTeX environment.
|
||||||
|
% Provides exactly the same result on any PostScript printer provided
|
||||||
|
% the single instruction \psfor... is changed to fit the needs of the
|
||||||
|
% particular dvi->ps translator used.
|
||||||
|
% History:
|
||||||
|
% 1.31: adds \psforDVIALW(?)
|
||||||
|
% 1.30: adds \splitfile & \joinfiles for multi-file management
|
||||||
|
% 1.24: fix error handling & add \psonlyboxes
|
||||||
|
% 1.23: adds \putsp@ce for OzTeX fix
|
||||||
|
% 1.22: makes \drawingBox \global for use in Phyzzx
|
||||||
|
% 1.21: accepts %%BoundingBox: (atend)
|
||||||
|
% 1.20: tries to add \psfordvitps for the TeXPS package.
|
||||||
|
% 1.10: adds \psforoztex, error handling...
|
||||||
|
%2345678 1 2345678 2 2345678 3 2345678 4 2345678 5 2345678 6 2345678 7 23456789
|
||||||
|
%
|
||||||
|
\def\temp{1.31}
|
||||||
|
\let\tempp=\relax
|
||||||
|
\expandafter\ifx\csname psboxversion\endcsname\relax
|
||||||
|
\message{version: \temp}
|
||||||
|
\else
|
||||||
|
\ifdim\temp cm>\psboxversion cm
|
||||||
|
\message{version: \temp}
|
||||||
|
\else
|
||||||
|
\message{psbox(\psboxversion) is already loaded: I won't load
|
||||||
|
psbox(\temp)!}
|
||||||
|
\let\temp=\psboxversion
|
||||||
|
\let\tempp=\endinput
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
\tempp
|
||||||
|
\let\psboxversion=\temp
|
||||||
|
\catcode`\@=11
|
||||||
|
% Every macro likes a little privacy...
|
||||||
|
%
|
||||||
|
% Some common defs
|
||||||
|
%
|
||||||
|
\def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution
|
||||||
|
\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex
|
||||||
|
\def\executeinspecs#1{%
|
||||||
|
\execute{\begingroup\let\do\psm@keother\dospecials\catcode`\^^M=9#1\endgroup}}
|
||||||
|
%
|
||||||
|
%Trying to tame the variety of \special commands for Postscript: the
|
||||||
|
% universal internal command \PSspeci@l##1##2 takes ##1 to be the
|
||||||
|
% filename and ##2 to be the integer scale factor*1000 (as for usual
|
||||||
|
% TeX \scale commands)
|
||||||
|
%
|
||||||
|
\def\psfortextures{% For TeXtures on the Macintosh
|
||||||
|
%-----------------
|
||||||
|
\def\PSspeci@l##1##2{%
|
||||||
|
\special{illustration ##1\space scaled ##2}%
|
||||||
|
}}
|
||||||
|
%
|
||||||
|
\def\psfordvitops{% For the DVItoPS converter on IBM mainframes
|
||||||
|
%----------------
|
||||||
|
\def\PSspeci@l##1##2{%
|
||||||
|
\special{dvitops: import ##1\space \the\drawingwd \the\drawinght}%
|
||||||
|
}}
|
||||||
|
%
|
||||||
|
\def\psfordvips{% For DVIPS converter on VAX, UNIX and PC's
|
||||||
|
%--------------
|
||||||
|
\def\PSspeci@l##1##2{%
|
||||||
|
% \special{/@scaleunit 1000 def}% never read dox without trying!
|
||||||
|
\d@my=0.1bp \d@mx=\drawingwd \divide\d@mx by\d@my%
|
||||||
|
\special{PSfile=##1\space llx=\psllx\space lly=\pslly\space%
|
||||||
|
urx=\psurx\space ury=\psury\space rwi=\number\d@mx}%
|
||||||
|
}}
|
||||||
|
%
|
||||||
|
\def\psforoztex{% For the OzTeX shareware on the Macintosh
|
||||||
|
%--------------
|
||||||
|
\def\PSspeci@l##1##2{%
|
||||||
|
\special{##1 \space
|
||||||
|
##2 1000 div dup scale
|
||||||
|
\putsp@ce{\number-\psllx} \putsp@ce{\number-\pslly} translate
|
||||||
|
}%
|
||||||
|
}}
|
||||||
|
\def\putsp@ce#1{#1 }
|
||||||
|
%
|
||||||
|
\def\psfordvitps{% From the UNIX TeXPS package, vers.>3.12
|
||||||
|
%---------------
|
||||||
|
% Convert a dimension into the number \psn@sp (in scaled points)
|
||||||
|
\def\psdimt@n@sp##1{\d@mx=##1\relax\edef\psn@sp{\number\d@mx}}
|
||||||
|
\def\PSspeci@l##1##2{%
|
||||||
|
% psfig.psr contains the def of "startTexFig": if you can locate it
|
||||||
|
% and include the correct pathname, it should work
|
||||||
|
\special{dvitps: Include0 "psfig.psr"}% contains def of "startTexFig"
|
||||||
|
\psdimt@n@sp{\drawingwd}
|
||||||
|
\special{dvitps: Literal "\psn@sp\space"}
|
||||||
|
\psdimt@n@sp{\drawinght}
|
||||||
|
\special{dvitps: Literal "\psn@sp\space"}
|
||||||
|
\psdimt@n@sp{\psllx bp}
|
||||||
|
\special{dvitps: Literal "\psn@sp\space"}
|
||||||
|
\psdimt@n@sp{\pslly bp}
|
||||||
|
\special{dvitps: Literal "\psn@sp\space"}
|
||||||
|
\psdimt@n@sp{\psurx bp}
|
||||||
|
\special{dvitps: Literal "\psn@sp\space"}
|
||||||
|
\psdimt@n@sp{\psury bp}
|
||||||
|
\special{dvitps: Literal "\psn@sp\space startTexFig\space"}
|
||||||
|
\special{dvitps: Include1 "##1"}
|
||||||
|
\special{dvitps: Literal "endTexFig\space"}
|
||||||
|
}}
|
||||||
|
\def\psforDVIALW{% Try for dvialw, a UNIX public domain
|
||||||
|
%---------------
|
||||||
|
\def\PSspeci@l##1##2{
|
||||||
|
\special{language "PS"
|
||||||
|
literal "##2 1000 div dup scale"
|
||||||
|
include "##1"}}}
|
||||||
|
\def\psonlyboxes{% Draft-like behaviour if none of the others works
|
||||||
|
%---------------
|
||||||
|
\def\PSspeci@l##1##2{%
|
||||||
|
\at(0cm;0cm){\boxit{\vbox to\drawinght
|
||||||
|
{\vss
|
||||||
|
\hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1)}}\hss}
|
||||||
|
}}}
|
||||||
|
}%
|
||||||
|
}
|
||||||
|
%
|
||||||
|
\def\psloc@lerr#1{%
|
||||||
|
\let\savedPSspeci@l=\PSspeci@l%
|
||||||
|
\def\PSspeci@l##1##2{%
|
||||||
|
\at(0cm;0cm){\boxit{\vbox to\drawinght
|
||||||
|
{\vss
|
||||||
|
\hbox to\drawingwd{\at(0cm;0cm){\hbox{(##1) #1}}\hss}
|
||||||
|
}}}
|
||||||
|
\let\PSspeci@l=\savedPSspeci@l% restore normal output for other figs!
|
||||||
|
}%
|
||||||
|
}
|
||||||
|
%
|
||||||
|
%\def\psfor... add your own!
|
||||||
|
%
|
||||||
|
% \ReadPSize{PSfilename} reads the dimensions of a PostScript drawing
|
||||||
|
% and stores it in \drawinght(wd)
|
||||||
|
\newread\pst@mpin
|
||||||
|
\newdimen\drawinght\newdimen\drawingwd
|
||||||
|
\newdimen\psxoffset\newdimen\psyoffset
|
||||||
|
\newbox\drawingBox
|
||||||
|
\newif\ifNotB@undingBox
|
||||||
|
\newhelp\PShelp{Proceed: you'll have a 5cm square blank box instead of
|
||||||
|
your graphics (Jean Orloff).}
|
||||||
|
\def\@mpty{}
|
||||||
|
\def\s@tsize#1 #2 #3 #4\@ndsize{
|
||||||
|
\def\psllx{#1}\def\pslly{#2}%
|
||||||
|
\def\psurx{#3}\def\psury{#4}% needed by a crazyness of dvips!
|
||||||
|
\ifx\psurx\@mpty\NotB@undingBoxtrue% this is not a valid one!
|
||||||
|
\else
|
||||||
|
\drawinght=#4bp\advance\drawinght by-#2bp
|
||||||
|
\drawingwd=#3bp\advance\drawingwd by-#1bp
|
||||||
|
% !Units related by crazy factors as bp/pt=72.27/72 should be BANNED!
|
||||||
|
\fi
|
||||||
|
}
|
||||||
|
\def\sc@nline#1:#2\@ndline{\edef\p@rameter{#1}\edef\v@lue{#2}}
|
||||||
|
\def\g@bblefirstblank#1#2:{\ifx#1 \else#1\fi#2}
|
||||||
|
\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex
|
||||||
|
\def\execute#1{#1}% Seems stupid, but cs are identified BEFORE execution
|
||||||
|
{\catcode`\%=12
|
||||||
|
\xdef\B@undingBox{%%BoundingBox}
|
||||||
|
} %% is not a true comment in PostScript, even if % is!
|
||||||
|
\def\ReadPSize#1{
|
||||||
|
\edef\PSfilename{#1}
|
||||||
|
\openin\pst@mpin=#1\relax
|
||||||
|
\ifeof\pst@mpin \errhelp=\PShelp
|
||||||
|
\errmessage{I haven't found your postscript file (\PSfilename)}
|
||||||
|
\psloc@lerr{was not found}
|
||||||
|
\s@tsize 0 0 142 142\@ndsize
|
||||||
|
\closein\pst@mpin
|
||||||
|
\else
|
||||||
|
\immediate\write\psbj@inaux{#1,}
|
||||||
|
\loop
|
||||||
|
\executeinspecs{\catcode`\ =10\global\read\pst@mpin to\n@xtline}
|
||||||
|
\ifeof\pst@mpin
|
||||||
|
\errhelp=\PShelp
|
||||||
|
\errmessage{(\PSfilename) is not an Encapsulated PostScript File:
|
||||||
|
I could not find any \B@undingBox: line.}
|
||||||
|
\edef\v@lue{0 0 142 142:}
|
||||||
|
\psloc@lerr{is not an EPSFile}
|
||||||
|
\NotB@undingBoxfalse
|
||||||
|
\else
|
||||||
|
\expandafter\sc@nline\n@xtline:\@ndline
|
||||||
|
\ifx\p@rameter\B@undingBox\NotB@undingBoxfalse
|
||||||
|
\edef\t@mp{%
|
||||||
|
\expandafter\g@bblefirstblank\v@lue\space\space\space}
|
||||||
|
\expandafter\s@tsize\t@mp\@ndsize
|
||||||
|
\else\NotB@undingBoxtrue
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
\ifNotB@undingBox\repeat
|
||||||
|
\closein\pst@mpin
|
||||||
|
\fi
|
||||||
|
\message{#1}
|
||||||
|
}
|
||||||
|
%
|
||||||
|
% \psboxto(xdim;ydim){psfilename}: you specify the dimensions and
|
||||||
|
% TeX uniformly scales to fit the largest one. If xdim=0pt, the
|
||||||
|
% scale is fully determined by ydim and vice versa.
|
||||||
|
% Notice: psboxes are a real vboxes; couldn't take hbox otherwise all
|
||||||
|
% indentation and all cr's would be interpreted as spaces (hugh!).
|
||||||
|
%
|
||||||
|
\newcount\xscale \newcount\yscale \newdimen\pscm\pscm=1cm
|
||||||
|
\newdimen\d@mx \newdimen\d@my
|
||||||
|
\let\ps@nnotation=\relax
|
||||||
|
\def\psboxto(#1;#2)#3{\vbox{
|
||||||
|
\ReadPSize{#3}
|
||||||
|
\divide\drawingwd by 1000
|
||||||
|
\divide\drawinght by 1000
|
||||||
|
\d@mx=#1
|
||||||
|
\ifdim\d@mx=0pt\xscale=1000
|
||||||
|
\else \xscale=\d@mx \divide \xscale by \drawingwd\fi
|
||||||
|
\d@my=#2
|
||||||
|
\ifdim\d@my=0pt\yscale=1000
|
||||||
|
\else \yscale=\d@my \divide \yscale by \drawinght\fi
|
||||||
|
\ifnum\yscale=1000
|
||||||
|
\else\ifnum\xscale=1000\xscale=\yscale
|
||||||
|
\else\ifnum\yscale<\xscale\xscale=\yscale\fi
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
\divide \psxoffset by 1000\multiply\psxoffset by \xscale
|
||||||
|
\divide \psyoffset by 1000\multiply\psyoffset by \xscale
|
||||||
|
\global\divide\pscm by 1000
|
||||||
|
\global\multiply\pscm by\xscale
|
||||||
|
\multiply\drawingwd by\xscale \multiply\drawinght by\xscale
|
||||||
|
\ifdim\d@mx=0pt\d@mx=\drawingwd\fi
|
||||||
|
\ifdim\d@my=0pt\d@my=\drawinght\fi
|
||||||
|
\message{scaled \the\xscale}
|
||||||
|
\hbox to\d@mx{\hss\vbox to\d@my{\vss
|
||||||
|
\global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{
|
||||||
|
\kern-\psyoffset
|
||||||
|
\PSspeci@l{\PSfilename}{\the\xscale}
|
||||||
|
\vss}\hss\ps@nnotation}
|
||||||
|
\global\ht\drawingBox=\the\drawinght
|
||||||
|
\global\wd\drawingBox=\the\drawingwd
|
||||||
|
\baselineskip=0pt
|
||||||
|
\copy\drawingBox
|
||||||
|
\vss}\hss}
|
||||||
|
\global\psxoffset=0pt
|
||||||
|
\global\psyoffset=0pt% These are local to one figure
|
||||||
|
\global\pscm=1cm
|
||||||
|
\global\drawingwd=\drawingwd
|
||||||
|
\global\drawinght=\drawinght
|
||||||
|
}}
|
||||||
|
%
|
||||||
|
% \psboxscaled{scalefactor*1000}{PSfilename} allows to bypass the
|
||||||
|
% rounding errors of TeX integer divisions for situations where the
|
||||||
|
% TeX box should fit the original BoundingBox with a precision better
|
||||||
|
% than 1/1000.
|
||||||
|
%
|
||||||
|
\def\psboxscaled#1#2{\vbox{
|
||||||
|
\ReadPSize{#2}
|
||||||
|
\xscale=#1
|
||||||
|
\message{scaled \the\xscale}
|
||||||
|
\divide\drawingwd by 1000\multiply\drawingwd by\xscale
|
||||||
|
\divide\drawinght by 1000\multiply\drawinght by\xscale
|
||||||
|
\divide \psxoffset by 1000\multiply\psxoffset by \xscale
|
||||||
|
\divide \psyoffset by 1000\multiply\psyoffset by \xscale
|
||||||
|
\global\divide\pscm by 1000
|
||||||
|
\global\multiply\pscm by\xscale
|
||||||
|
\global\setbox\drawingBox=\hbox to 0pt{\kern\psxoffset\vbox to 0pt{
|
||||||
|
\kern-\psyoffset
|
||||||
|
\PSspeci@l{\PSfilename}{\the\xscale}
|
||||||
|
\vss}\hss\ps@nnotation}
|
||||||
|
\global\ht\drawingBox=\the\drawinght
|
||||||
|
\global\wd\drawingBox=\the\drawingwd
|
||||||
|
\baselineskip=0pt
|
||||||
|
\copy\drawingBox
|
||||||
|
\global\psxoffset=0pt
|
||||||
|
\global\psyoffset=0pt% These are local to one figure
|
||||||
|
\global\pscm=1cm
|
||||||
|
\global\drawingwd=\drawingwd
|
||||||
|
\global\drawinght=\drawinght
|
||||||
|
}}
|
||||||
|
%
|
||||||
|
% \psbox{PSfilename} makes a TeX box having the minimal size to
|
||||||
|
% enclose the picture
|
||||||
|
\def\psbox#1{\psboxscaled{1000}{#1}}
|
||||||
|
%
|
||||||
|
%
|
||||||
|
% \joinfiles file1, file2, ...n \into joinedfilename .
|
||||||
|
% makes one file out of many
|
||||||
|
% \splitfile joinedfilename
|
||||||
|
% the opposite
|
||||||
|
%
|
||||||
|
%\def\execute#1{#1}% NOT stupid: cs in #1 are then identified BEFORE execution
|
||||||
|
%\def\psm@keother#1{\catcode`#112\relax}% borrowed from latex
|
||||||
|
%\def\executeinspecs#1{%
|
||||||
|
%\execute{\begingroup\let\do\psm@keother\dospecials\catcode`\^^M=9#1\endgroup}}
|
||||||
|
%\newread\pst@mpin
|
||||||
|
\newif\ifn@teof\n@teoftrue
|
||||||
|
\newif\ifc@ntrolline
|
||||||
|
\newif\ifmatch
|
||||||
|
\newread\j@insplitin
|
||||||
|
\newwrite\j@insplitout
|
||||||
|
\newwrite\psbj@inaux
|
||||||
|
\immediate\openout\psbj@inaux=psbjoin.aux
|
||||||
|
\immediate\write\psbj@inaux{\string\joinfiles}
|
||||||
|
\immediate\write\psbj@inaux{\jobname,}
|
||||||
|
%
|
||||||
|
% We redefine input to keep track of the various files inputted
|
||||||
|
%
|
||||||
|
\immediate\let\oldinput=\input
|
||||||
|
\def\input#1 {
|
||||||
|
\immediate\write\psbj@inaux{#1,}
|
||||||
|
\oldinput #1 }
|
||||||
|
\def\empty{}
|
||||||
|
\def\setmatchif#1\contains#2{
|
||||||
|
\def\match##1#2##2\endmatch{
|
||||||
|
\def\tmp{##2}
|
||||||
|
\ifx\empty\tmp
|
||||||
|
\matchfalse
|
||||||
|
\else
|
||||||
|
\matchtrue
|
||||||
|
\fi}
|
||||||
|
\match#1#2\endmatch}
|
||||||
|
\def\warnopenout#1#2{
|
||||||
|
\setmatchif{TrashMe,psbjoin.aux,psbjoin.all}\contains{#2}
|
||||||
|
\ifmatch
|
||||||
|
\else
|
||||||
|
\immediate\openin\pst@mpin=#2
|
||||||
|
\ifeof\pst@mpin
|
||||||
|
\else
|
||||||
|
\errhelp{If the content of this file is so precious to you, abort (ie
|
||||||
|
press x or e) and rename it before retrying.}
|
||||||
|
\errmessage{I'm just about to replace your file named #2}
|
||||||
|
\fi
|
||||||
|
\immediate\closein\pst@mpin
|
||||||
|
\fi
|
||||||
|
\message{#2}
|
||||||
|
\immediate\openout#1=#2}
|
||||||
|
% No comments allowed below: % will have an unusual catcode
|
||||||
|
{
|
||||||
|
\catcode`\%=12
|
||||||
|
\gdef\splitfile#1 {
|
||||||
|
\immediate\openin\j@insplitin=#1
|
||||||
|
\message{Splitting file #1 into:}
|
||||||
|
\warnopenout\j@insplitout{TrashMe}
|
||||||
|
\loop
|
||||||
|
\ifeof
|
||||||
|
\j@insplitin\immediate\closein\j@insplitin\n@teoffalse
|
||||||
|
\else
|
||||||
|
\n@teoftrue
|
||||||
|
\executeinspecs{\global\read\j@insplitin to\spl@tinline\expandafter
|
||||||
|
\ch@ckbeginnewfile\spl@tinline%Beginning-Of-File-Named:%\endcheck}
|
||||||
|
\ifc@ntrolline
|
||||||
|
\else
|
||||||
|
\toks0=\expandafter{\spl@tinline}
|
||||||
|
\immediate\write\j@insplitout{\the\toks0}
|
||||||
|
\fi
|
||||||
|
\fi
|
||||||
|
\ifn@teof\repeat
|
||||||
|
\immediate\closeout\j@insplitout}
|
||||||
|
\gdef\ch@ckbeginnewfile#1%Beginning-Of-File-Named:#2%#3\endcheck{
|
||||||
|
\def\t@mp{#1}
|
||||||
|
\ifx\empty\t@mp
|
||||||
|
\def\t@mp{#3}
|
||||||
|
\ifx\empty\t@mp
|
||||||
|
\global\c@ntrollinefalse
|
||||||
|
\else
|
||||||
|
\immediate\closeout\j@insplitout
|
||||||
|
\warnopenout\j@insplitout{#2}
|
||||||
|
\global\c@ntrollinetrue
|
||||||
|
\fi
|
||||||
|
\else
|
||||||
|
\global\c@ntrollinefalse
|
||||||
|
\fi}
|
||||||
|
\gdef\joinfiles#1\into#2 {
|
||||||
|
\message{Joining following files into}
|
||||||
|
\warnopenout\j@insplitout{#2}
|
||||||
|
\message{:}
|
||||||
|
{
|
||||||
|
\edef\w@##1{\immediate\write\j@insplitout{##1}}
|
||||||
|
\w@{% This text was produced with psbox's \string\joinfiles.}
|
||||||
|
\w@{% To decompose and tex it:}
|
||||||
|
\w@{%-save this with a filename CONTAINING ONLY LETTERS, and no extensions}
|
||||||
|
\w@{% (say, JOINTFIL), in some uncrowded directory;}
|
||||||
|
\w@{%-make sure you can \string\input\space psbox.tex (version>=1.3);}
|
||||||
|
\w@{%-tex JOINTFIL using Plain, or LaTeX, or whatever is needed by}
|
||||||
|
\w@{% the first part in the joining (after splitting JOINTFIL into}
|
||||||
|
\w@{% it's constituents, TeX will try to process it as it stands).}
|
||||||
|
\w@{\string\input\space psbox.tex}
|
||||||
|
\w@{\string\splitfile{\string\jobname}}
|
||||||
|
}
|
||||||
|
\tre@tfilelist#1, \endtre@t
|
||||||
|
\immediate\closeout\j@insplitout}
|
||||||
|
\gdef\tre@tfilelist#1, #2\endtre@t{
|
||||||
|
\def\t@mp{#1}
|
||||||
|
\ifx\empty\t@mp
|
||||||
|
\else
|
||||||
|
\llj@in{#1}
|
||||||
|
\tre@tfilelist#2, \endtre@t
|
||||||
|
\fi}
|
||||||
|
\gdef\llj@in#1{
|
||||||
|
\immediate\openin\j@insplitin=#1
|
||||||
|
\ifeof\j@insplitin
|
||||||
|
\errmessage{I couldn't find file #1.}
|
||||||
|
\else
|
||||||
|
\message{#1}
|
||||||
|
\toks0={%Beginning-Of-File-Named:#1}
|
||||||
|
\immediate\write\j@insplitout{\the\toks0}
|
||||||
|
\executeinspecs{\global\read\j@insplitin to\oldj@ininline}
|
||||||
|
\loop
|
||||||
|
\ifeof\j@insplitin\immediate\closein\j@insplitin\n@teoffalse
|
||||||
|
\else\n@teoftrue
|
||||||
|
\executeinspecs{\global\read\j@insplitin to\j@ininline}
|
||||||
|
\toks0=\expandafter{\oldj@ininline}
|
||||||
|
\let\oldj@ininline=\j@ininline
|
||||||
|
\immediate\write\j@insplitout{\the\toks0}
|
||||||
|
\fi
|
||||||
|
\ifn@teof
|
||||||
|
\repeat
|
||||||
|
\immediate\closein\j@insplitin
|
||||||
|
\fi}
|
||||||
|
}
|
||||||
|
% To be put at the end of a file, for making an tar-like file containing
|
||||||
|
% everything it used.
|
||||||
|
\def\autojoin{
|
||||||
|
\immediate\write\psbj@inaux{\string\into\space psbjoin.all}
|
||||||
|
\immediate\closeout\psbj@inaux
|
||||||
|
\input psbjoin.aux
|
||||||
|
}
|
||||||
|
%
|
||||||
|
% Annotations & Captions etc...
|
||||||
|
%
|
||||||
|
%
|
||||||
|
% \centinsert{anybox} is just a centered \midinsert, but is included as
|
||||||
|
% people barely use the original inserts from TeX.
|
||||||
|
%
|
||||||
|
\def\centinsert#1{\midinsert\line{\hss#1\hss}\endinsert}
|
||||||
|
\def\psannotate#1#2{\def\ps@nnotation{#2\global\let\ps@nnotation=\relax}#1}
|
||||||
|
\def\pscaption#1#2{\vbox{
|
||||||
|
\setbox\drawingBox=#1
|
||||||
|
\copy\drawingBox
|
||||||
|
\vskip\baselineskip
|
||||||
|
\vbox{\hsize=\wd\drawingBox\setbox0=\hbox{#2}
|
||||||
|
\ifdim\wd0>\hsize
|
||||||
|
\noindent\unhbox0\tolerance=5000
|
||||||
|
\else\centerline{\box0}
|
||||||
|
\fi
|
||||||
|
}}}
|
||||||
|
% for compatibility with older versions
|
||||||
|
\def\psfig#1#2#3{\pscaption{\psannotate{#1}{#2}}{#3}}
|
||||||
|
\def\psfigurebox#1#2#3{\pscaption{\psannotate{\psbox{#1}}{#2}}{#3}}
|
||||||
|
%
|
||||||
|
% \at(#1;#2)#3 puts #3 at #1-higher and #2-right of the current
|
||||||
|
% position without moving it (to be used in annotations).
|
||||||
|
\def\at(#1;#2)#3{\setbox0=\hbox{#3}\ht0=0pt\dp0=0pt
|
||||||
|
\rlap{\kern#1\vbox to0pt{\kern-#2\box0\vss}}}
|
||||||
|
%
|
||||||
|
% \gridfill(ht;wd) makes a 1cm*1cm grid of ht by wd whose lower-left
|
||||||
|
% corner is the current point
|
||||||
|
\newdimen\gridht \newdimen\gridwd
|
||||||
|
\def\gridfill(#1;#2){
|
||||||
|
\setbox0=\hbox to 1\pscm
|
||||||
|
{\vrule height1\pscm width.4pt\leaders\hrule\hfill}
|
||||||
|
\gridht=#1
|
||||||
|
\divide\gridht by \ht0
|
||||||
|
\multiply\gridht by \ht0
|
||||||
|
\gridwd=#2
|
||||||
|
\divide\gridwd by \wd0
|
||||||
|
\multiply\gridwd by \wd0
|
||||||
|
\advance \gridwd by \wd0
|
||||||
|
\vbox to \gridht{\leaders\hbox to\gridwd{\leaders\box0\hfill}\vfill}}
|
||||||
|
%
|
||||||
|
% Useful to measure where to put annotations
|
||||||
|
\def\fillinggrid{\at(0cm;0cm){\vbox{
|
||||||
|
\gridfill(\drawinght;\drawingwd)}}}
|
||||||
|
%
|
||||||
|
% \textleftof\anybox: Sample text\endtext
|
||||||
|
% inserts "Sample text" on the left of \anybox ie \vbox, \psbox.
|
||||||
|
% \textrightof is the symmetric (not documented, too uggly)
|
||||||
|
% Welcome any suggestion about clean wraparound macros from
|
||||||
|
% TeXhackers reading this
|
||||||
|
%
|
||||||
|
\def\textleftof#1:{
|
||||||
|
\setbox1=#1
|
||||||
|
\setbox0=\vbox\bgroup
|
||||||
|
\advance\hsize by -\wd1 \advance\hsize by -2em}
|
||||||
|
\def\textrightof#1:{
|
||||||
|
\setbox0=#1
|
||||||
|
\setbox1=\vbox\bgroup
|
||||||
|
\advance\hsize by -\wd0 \advance\hsize by -2em}
|
||||||
|
\def\endtext{
|
||||||
|
\egroup
|
||||||
|
\hbox to \hsize{\valign{\vfil##\vfil\cr%
|
||||||
|
\box0\cr%
|
||||||
|
\noalign{\hss}\box1\cr}}}
|
||||||
|
%
|
||||||
|
% \frameit{\thick}{\skip}{\anybox}
|
||||||
|
% draws with thickness \thick a box around \anybox, leaving \skip of
|
||||||
|
% blank around it. eg \frameit{0.5pt}{1pt}{\hbox{hello}}
|
||||||
|
% \boxit{\anybox} is a shortcut.
|
||||||
|
\def\frameit#1#2#3{\hbox{\vrule width#1\vbox{
|
||||||
|
\hrule height#1\vskip#2\hbox{\hskip#2\vbox{#3}\hskip#2}%
|
||||||
|
\vskip#2\hrule height#1}\vrule width#1}}
|
||||||
|
\def\boxit#1{\frameit{0.4pt}{0pt}{#1}}
|
||||||
|
%
|
||||||
|
%
|
||||||
|
\catcode`\@=12 % cs containing @ are unreachable
|
||||||
|
%
|
||||||
|
% CUSTOMIZE YOUR DEFAULT DRIVER:
|
||||||
|
% Uncomment the line corresponding to your TeX system:
|
||||||
|
%\psfortextures% For TeXtures on the Macintosh
|
||||||
|
%\psforoztex % For OzTeX shareware on the Macintosh
|
||||||
|
%\psfordvitops % For the DVItoPS converter for TeX on IBM mainframes
|
||||||
|
\psfordvips % For DVIPS converter on VAX and UNIX
|
||||||
|
%\psfordvitps % For dvitps from TeXPS package under UNIX
|
||||||
|
%\psforDVIALW % For DVIALW, UNIX public domain
|
||||||
|
%\psonlyboxes % Blank Boxes (when all else fails).
|
6
contrib/docs/latex/mmedia/sample.tex
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
\chapter{MMboard: a sample MMedia application}\label{mmboard}%
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
To be written.
|
||||||
|
|
68
contrib/docs/latex/mmedia/sndaiff.tex
Normal file
@@ -0,0 +1,68 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndaiff.h at 26/Feb/00 14:52:29
|
||||||
|
%
|
||||||
|
|
||||||
|
\section{\class{wxSoundAiff}}\label{wxsoundaiff}
|
||||||
|
|
||||||
|
AIFF codec
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundFileStream}{wxsoundfilestream}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::wxSoundAiff}\label{wxsoundaiffwxsoundaiff}
|
||||||
|
|
||||||
|
\func{}{wxSoundAiff}{\param{wxInputStream\& }{stream}, \param{wxSoundStream\& }{io\_sound}}
|
||||||
|
|
||||||
|
\func{}{wxSoundAiff}{\param{wxOutputStream\& }{stream}, \param{wxSoundStream\& }{io\_sound}}
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::\destruct{wxSoundAiff}}\label{wxsoundaiffdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundAiff}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::CanRead}\label{wxsoundaiffcanread}
|
||||||
|
|
||||||
|
\func{bool}{CanRead}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::GetCodecName}\label{wxsoundaiffgetcodecname}
|
||||||
|
|
||||||
|
\constfunc{wxString}{GetCodecName}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::PrepareToPlay}\label{wxsoundaiffpreparetoplay}
|
||||||
|
|
||||||
|
\func{bool}{PrepareToPlay}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::PrepareToRecord}\label{wxsoundaiffpreparetorecord}
|
||||||
|
|
||||||
|
\func{bool}{PrepareToRecord}{\param{wxUint32 }{time}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::FinishRecording}\label{wxsoundaifffinishrecording}
|
||||||
|
|
||||||
|
\func{bool}{FinishRecording}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::RepositionStream}\label{wxsoundaiffrepositionstream}
|
||||||
|
|
||||||
|
\func{bool}{RepositionStream}{\param{wxUint32 }{position}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::GetData}\label{wxsoundaiffgetdata}
|
||||||
|
|
||||||
|
\func{wxUint32}{GetData}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundAiff::PutData}\label{wxsoundaiffputdata}
|
||||||
|
|
||||||
|
\func{wxUint32}{PutData}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
294
contrib/docs/latex/mmedia/sndbase.tex
Normal file
@@ -0,0 +1,294 @@
|
|||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Name: sndbase.tex
|
||||||
|
%% Purpose: wxMMedia docs
|
||||||
|
%% Author: Guilhem Lavaux <lavaux@easynet.fr>
|
||||||
|
%% Modified by:
|
||||||
|
%% Created: 2000
|
||||||
|
%% RCS-ID: $Id$
|
||||||
|
%% Copyright: (c) wxWindows team
|
||||||
|
%% Licence: wxWindows licence
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{\class{wxSoundStream}}\label{wxsoundstream}
|
||||||
|
|
||||||
|
Base class for sound streams
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
No base class
|
||||||
|
|
||||||
|
\wxheading{Include files}
|
||||||
|
|
||||||
|
<wx/mmedia/sndbase.h>
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% wxSoundStream errors
|
||||||
|
%%
|
||||||
|
|
||||||
|
\wxheading{wxSoundStream errors}
|
||||||
|
|
||||||
|
\twocolwidtha{7cm}
|
||||||
|
\begin{twocollist}\itemsep=0pt
|
||||||
|
\twocolitem{{\bf wxSOUND\_NOERR}}{No error occured}
|
||||||
|
\twocolitem{{\bf wxSOUND\_IOERR}}{An input/output error occured, it may concern
|
||||||
|
either a driver or a file}
|
||||||
|
\twocolitem{{\bf wxSOUND\_INVFRMT}}{The sound format passed to the function is
|
||||||
|
invalid. Generally, it means that you passed out of range values to the codec
|
||||||
|
stream or you don't pass the right sound format object to the right sound codec
|
||||||
|
stream.}
|
||||||
|
\twocolitem{{\bf wxSOUND\_INVDEV}}{Invalid device. Generally, it means that the
|
||||||
|
sound stream didn't manage to open the device driver due to an invalid parameter
|
||||||
|
or to the fact that sound is not supported on this computer.}
|
||||||
|
\twocolitem{{\bf wxSOUND\_NOEXACT}}{No exact matching sound codec has been found for
|
||||||
|
this sound format. It means that the sound driver didn't manage to setup the sound
|
||||||
|
card with the specified values.}
|
||||||
|
\twocolitem{{\bf wxSOUND\_NOCODEC}}{No matching codec has been found. Generally, it
|
||||||
|
may happen when you call wxSoundRouterStream::SetSoundFormat().}
|
||||||
|
\twocolitem{{\bf wxSOUND\_MEMERR}}{Not enough memory.}
|
||||||
|
\end{twocollist}
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% C callback
|
||||||
|
%%
|
||||||
|
|
||||||
|
\wxheading{C callback for wxSound event}
|
||||||
|
|
||||||
|
When a sound event is generated, it may either call the internal sound event
|
||||||
|
processor (which can be inherited) or call a C function. Its definition is:
|
||||||
|
|
||||||
|
\begin{verbatim}
|
||||||
|
typedef void (*wxSoundCallback)(wxSoundStream *stream, int evt,
|
||||||
|
void *cdata);
|
||||||
|
\end{verbatim}
|
||||||
|
|
||||||
|
The {\bf stream} parameter represents the current wxSoundStream.
|
||||||
|
|
||||||
|
The {\bf evt} parameter represents the sound event which is the cause of the calling. (See \helpref{wxSound events}{wxsoundstream}).
|
||||||
|
|
||||||
|
The {\bf cdata} parameter represents the user callback data which were specified
|
||||||
|
when the user called \helpref{wxSoundStream::Register}{wxsoundstreamregister}.
|
||||||
|
|
||||||
|
{\it Note:} There are two other ways to catch sound events: you can inherit the
|
||||||
|
sound stream and redefine \helpref{wxSoundStream::OnSoundEvent}{wxsoundstreamonsoundevent}, or you can reroute the events to another sound stream using \helpref{wxSoundStream::SetEventHandler}{wxsoundstreamseteventhandler}.
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% wxSoundStream streaming mode
|
||||||
|
%%
|
||||||
|
|
||||||
|
\wxheading{wxSound streaming mode}
|
||||||
|
|
||||||
|
The wxSoundStream object can work in three different modes. These modes are specified
|
||||||
|
at the call to \helpref{wxSoundStream::StartProduction}{wxsoundstreamstartproduction}
|
||||||
|
and cannot be changed until you call
|
||||||
|
\helpref{wxSoundStream::StopProduction}{wxsoundstreamstopproduction}.
|
||||||
|
|
||||||
|
The {\bf wxSOUND\_INPUT} mode is the recording mode. It generates {\bf wxSOUND\_INPUT}
|
||||||
|
events and you cannot use wxSoundStream::Write().
|
||||||
|
|
||||||
|
The {\bf wxSOUND\_OUTPUT} mode is the playing mode. It generates {\bf wxSOUND\_OUTPUT}
|
||||||
|
events and you cannot use wxSoundStream::Read().
|
||||||
|
|
||||||
|
The {\bf wxSOUND\_DUPLEX} mode activates the full duplex mode. The full duplex requires
|
||||||
|
you to make synchronous call to \helpref{wxSoundStream::Read}{wxsoundstreamread} and
|
||||||
|
\helpref{wxSoundStream::Write}{wxsoundstreamwrite}. This means that you must be
|
||||||
|
careful with realtime problems. Each time you call Read you must call Write.
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% wxSoundStream events
|
||||||
|
%%
|
||||||
|
|
||||||
|
\wxheading{wxSoundStream events}
|
||||||
|
|
||||||
|
The sound events are generated when the sound driver (or the sound stream) completes
|
||||||
|
a previous sound buffer. There are two possible sound events and two meanings.
|
||||||
|
|
||||||
|
The {\bf wxSOUND\_INPUT} event is generated when the sound stream has a new input
|
||||||
|
buffer ready to be read. You know that you can read a buffer of the size
|
||||||
|
\helpref{GetBestSize()}{wxsoundstreamgetbestsize} without blocking.
|
||||||
|
|
||||||
|
The {\bf wxSOUND\_OUTPUT} event is generated when the sound stream has completed a
|
||||||
|
previous buffer. This buffer has been sent to the sound driver and it is ready to
|
||||||
|
process a new buffer. Consequently, \helpref{Write}{wxsoundstreamwrite} will not
|
||||||
|
block too.
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
%% Ctor && Dtor
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::wxSoundStream}\label{wxsoundstreamwxsoundstream}
|
||||||
|
|
||||||
|
\func{}{wxSoundStream}{\void}
|
||||||
|
|
||||||
|
Default constructor.
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::\destruct{wxSoundStream}}\label{wxsoundstreamdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundStream}}{\void}
|
||||||
|
|
||||||
|
Destructor. The destructor stops automatically all started production and destroys
|
||||||
|
any temporary buffer.
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% Read
|
||||||
|
%%
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::Read}\label{wxsoundstreamread}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Read}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
Reads {\it len} bytes from the sound stream. This call may block the user so
|
||||||
|
use it carefully when you need to intensively refresh the GUI. You may be
|
||||||
|
interested by sound events: see \helpref{wxSoundStream::OnSoundEvent}{wxsoundstreamonsoundevent}.
|
||||||
|
|
||||||
|
It is better to use the size returned by \helpref{wxSoundStream::GetBestSize}{wxsoundstreamgetbestsize}: this may improve performance or accuracy of the
|
||||||
|
sound event system.
|
||||||
|
|
||||||
|
\wxheading{Parameters}
|
||||||
|
|
||||||
|
\docparam{len}{{\it len} is expressed in bytes. If you need to do conversions between bytes
|
||||||
|
and seconds use wxSoundFormat.
|
||||||
|
See \helpref{wxSoundFormatBase}{wxsoundformatbase}, \helpref{wxSoundStream::GetSoundFormat}{wxsoundstreamgetsoundformat}.}
|
||||||
|
|
||||||
|
\docparam{data}{Data in \it{buffer} are coded using the sound format attached to this sound
|
||||||
|
stream. The format is specified with
|
||||||
|
\helpref{SetSoundFormat}{wxsoundstreamsetsoundformat}.}
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% Write
|
||||||
|
%%
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::Write}\label{wxsoundstreamwrite}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Write}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
Writes \it{len} bytes to the sound stream. This call may block the user so
|
||||||
|
use it carefully. You may be interested by sound events: see
|
||||||
|
\helpref{wxSoundStream::OnSoundEvent}{wxsoundstreamonsoundevent}.
|
||||||
|
|
||||||
|
It is better to use the size returned by \helpref{wxSoundStream::GetBestSize}{wxsoundstreamgetbestsize}: this may improve performance or accuracy of the
|
||||||
|
sound event system.
|
||||||
|
|
||||||
|
\wxheading{Parameters}
|
||||||
|
|
||||||
|
\docparam{len}{This is expressed in bytes. If you need to do conversions between bytes
|
||||||
|
and seconds use wxSoundFormat.
|
||||||
|
See \helpref{wxSoundFormatBase}{wxsoundformatbase}, \helpref{wxSoundStream::GetSoundFormat}{wxsoundstreamgetsoundformat}.}
|
||||||
|
|
||||||
|
\docparam{buffer}{Data in \it{buffer} are coded using the sound format attached to this sound
|
||||||
|
stream. The format is specified with
|
||||||
|
\helpref{SetSoundFormat}{wxsoundstreamsetsoundformat}.}
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% GetBestSize
|
||||||
|
%%
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::GetBestSize}\label{wxsoundstreamgetbestsize}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetBestSize}{\void}
|
||||||
|
|
||||||
|
This function returns the best size for IO calls. The best size provides you
|
||||||
|
a good alignment for data to be written (or read) to (or from) the sound stream.
|
||||||
|
So, when, for example, a sound event is sent, you are sure the sound stream
|
||||||
|
will not block for this buffer size.
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% wxSoundStream:SetSoundFormat
|
||||||
|
%%
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::SetSoundFormat}\label{wxsoundstreamsetsoundformat}
|
||||||
|
|
||||||
|
\func{bool}{SetSoundFormat}{\param{const wxSoundFormatBase\& }{format}}
|
||||||
|
|
||||||
|
SetSoundFormat is one of the key function of the wxSoundStream object.
|
||||||
|
It specifies the sound format the user needs. SetSoundFormat tries to
|
||||||
|
apply the format to the current sound stream (it can be a sound file or a
|
||||||
|
sound driver). Then, either it manages to apply it and it returns {\bf TRUE},
|
||||||
|
or it could not and it returns {\bf FALSE}. In this case, you must check
|
||||||
|
the error with
|
||||||
|
\helpref{wxSoundStream::GetError}{wxsoundstreamgeterror}. See
|
||||||
|
\helpref{wxSoundStream errors section}{wxsoundstream} for more details.
|
||||||
|
|
||||||
|
\wxheading{Note}
|
||||||
|
|
||||||
|
The {\bf format} object can be destroyed after the call. The object does not need it.
|
||||||
|
|
||||||
|
\wxheading{Note}
|
||||||
|
|
||||||
|
If the error is {\bf wxSOUND\_NOTEXACT}, the stream tries to find the best
|
||||||
|
approaching format and setups it. You can check the format which it applied
|
||||||
|
with \helpref{wxSoundStream::GetSoundFormat}{wxsoundstreamgetsoundformat}.
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% GetSoundFormat
|
||||||
|
%%
|
||||||
|
\membersection{wxSoundStream::GetSoundFormat}\label{wxsoundstreamgetsoundformat}
|
||||||
|
\constfunc{wxSoundFormatBase\&}{GetSoundFormat}{\void}
|
||||||
|
|
||||||
|
It returns a reference to the current sound format of the stream represented by a
|
||||||
|
wxSoundFormatBase object. This object {\it must not} be destroyed by anyone except
|
||||||
|
the stream itself.
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% SetCallback
|
||||||
|
%%
|
||||||
|
\membersection{wxSoundStream::SetCallback}\label{wxsoundstreamregister}
|
||||||
|
|
||||||
|
\func{void}{Register}{\param{int }{evt}, \param{wxSoundCallback }{cbk}, \param{void* }{cdata}}
|
||||||
|
|
||||||
|
It installs a C callback for wxSoundStream events. The C callbacks are still
|
||||||
|
useful to avoid hard inheritance. You can install only one callback per event.
|
||||||
|
Each callback has its callback data.
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% StartProduction
|
||||||
|
%%
|
||||||
|
\membersection{wxSoundStream::StartProduction}\label{wxsoundstreamstartproduction}
|
||||||
|
|
||||||
|
\func{bool}{StartProduction}{\param{int }{evt}}
|
||||||
|
|
||||||
|
StartProduction starts the sound streaming. {\it evt} may be one of
|
||||||
|
{\bf wxSOUND\_INPUT}, {\bf wxSOUND\_OUTPUT} or {\bf wxSOUND\_DUPLEX}.
|
||||||
|
You cannot specify several flags at the same time. Starting the production
|
||||||
|
may automaticaly in position of buffer underrun (only in the case you activated
|
||||||
|
recording). Actually this may happen the sound IO queue is too short.
|
||||||
|
It is also advised that you fill quickly enough the sound IO queue when the
|
||||||
|
driver requests it (through a wxSoundEvent).
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::StopProduction}\label{wxsoundstreamstopproduction}
|
||||||
|
|
||||||
|
\func{bool}{StopProduction}{\void}
|
||||||
|
|
||||||
|
I stops the async notifier and the sound streaming straightly.
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::SetEventHandler}\label{wxsoundstreamseteventhandler}
|
||||||
|
|
||||||
|
\func{void}{SetEventHandler}{\param{wxSoundStream* }{handler}}
|
||||||
|
|
||||||
|
Sets the event handler: if it is non-null, all events are routed to it.
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::GetError}\label{wxsoundstreamgeterror}
|
||||||
|
|
||||||
|
\constfunc{wxSoundError}{GetError}{\void}
|
||||||
|
|
||||||
|
It returns the last error which occured.
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::GetLastAccess}\label{wxsoundstreamgetlastaccess}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetLastAccess}{\void}
|
||||||
|
|
||||||
|
It returns the number of bytes which were effectively written to/read from the sound stream.
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::QueueFilled}\label{wxsoundstreamqueuefilled}
|
||||||
|
|
||||||
|
\constfunc{bool}{QueueFilled}{\void}
|
||||||
|
|
||||||
|
It returns whether the sound IO queue is full. When it is full, the next IO call will block
|
||||||
|
until the IO queue has at least one empty entry.
|
||||||
|
|
||||||
|
\membersection{wxSoundStream::OnSoundEvent}\label{wxsoundstreamonsoundevent}
|
||||||
|
|
||||||
|
\func{void}{OnSoundEvent}{\param{int }{evt}}
|
||||||
|
|
||||||
|
It is called by the wxSoundStream when a new sound event occured.
|
||||||
|
|
39
contrib/docs/latex/mmedia/sndcodec.tex
Normal file
@@ -0,0 +1,39 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndcodec.h at 26/Feb/00 14:26:29
|
||||||
|
%
|
||||||
|
|
||||||
|
\section{\class{wxSoundStreamCodec}}\label{wxsoundstreamcodec}
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundStream}{wxsoundstream}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamCodec::wxSoundStreamCodec}\label{wxsoundstreamcodecwxsoundstreamcodec}
|
||||||
|
|
||||||
|
\func{}{wxSoundStreamCodec}{\param{wxSoundStream\& }{snd\_io}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamCodec::\destruct{wxSoundStreamCodec}}\label{wxsoundstreamcodecdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundStreamCodec}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamCodec::StartProduction}\label{wxsoundstreamcodecstartproduction}
|
||||||
|
|
||||||
|
\func{bool}{StartProduction}{\param{int }{evt}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamCodec::StopProduction}\label{wxsoundstreamcodecstopproduction}
|
||||||
|
|
||||||
|
\func{bool}{StopProduction}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamCodec::GetBestSize}\label{wxsoundstreamcodecgetbestsize}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetBestSize}{\void}
|
||||||
|
|
64
contrib/docs/latex/mmedia/sndesd.tex
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndesd.h at 26/Feb/00 14:26:56
|
||||||
|
%
|
||||||
|
|
||||||
|
\section{\class{wxSoundStreamESD}}\label{wxsoundstreamesd}
|
||||||
|
|
||||||
|
ESD output class
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundStream}{wxsoundstream}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamESD::wxSoundStreamESD}\label{wxsoundstreamesdwxsoundstreamesd}
|
||||||
|
|
||||||
|
\func{}{wxSoundStreamESD}{\param{const wxString\& }{hostname = "localhost"}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamESD::\destruct{wxSoundStreamESD}}\label{wxsoundstreamesddtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundStreamESD}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamESD::Read}\label{wxsoundstreamesdread}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Read}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamESD::Write}\label{wxsoundstreamesdwrite}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Write}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamESD::SetSoundFormat}\label{wxsoundstreamesdsetsoundformat}
|
||||||
|
|
||||||
|
\func{bool}{SetSoundFormat}{\param{const wxSoundFormatBase\& }{format}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamESD::StartProduction}\label{wxsoundstreamesdstartproduction}
|
||||||
|
|
||||||
|
\func{bool}{StartProduction}{\param{int }{evt}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamESD::StopProduction}\label{wxsoundstreamesdstopproduction}
|
||||||
|
|
||||||
|
\func{bool}{StopProduction}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamESD::WakeUpEvt}\label{wxsoundstreamesdwakeupevt}
|
||||||
|
|
||||||
|
\func{void}{WakeUpEvt}{\param{int }{evt}}
|
||||||
|
|
||||||
|
You should not call this.
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamESD::QueueFilled}\label{wxsoundstreamesdqueuefilled}
|
||||||
|
|
||||||
|
\constfunc{bool}{QueueFilled}{\void}
|
||||||
|
|
87
contrib/docs/latex/mmedia/sndfg72x.tex
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndg72x.h at 26/Feb/00 14:52:19
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundFormatG72X}}\label{wxsoundformatg72x}
|
||||||
|
|
||||||
|
|
||||||
|
G72X format
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundFormatBase}{wxsoundformatbase}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef enum {
|
||||||
|
wxSOUND\_G721,
|
||||||
|
wxSOUND\_G723\_24,
|
||||||
|
wxSOUND\_G723\_40
|
||||||
|
} wxSoundG72XType
|
||||||
|
\end{verbatim}}
|
||||||
|
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef struct g72x\_state g72state
|
||||||
|
\end{verbatim}}
|
||||||
|
|
||||||
|
This fixes a bug in Mingw95
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::wxSoundFormatG72X}\label{wxsoundformatg72xwxsoundformatg72x}
|
||||||
|
|
||||||
|
\func{}{wxSoundFormatG72X}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::\destruct{wxSoundFormatG72X}}\label{wxsoundformatg72xdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundFormatG72X}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::SetG72XType}\label{wxsoundformatg72xsetg72xtype}
|
||||||
|
|
||||||
|
\func{void}{SetG72XType}{\param{wxSoundG72XType }{type}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::GetG72XType}\label{wxsoundformatg72xgetg72xtype}
|
||||||
|
|
||||||
|
\constfunc{wxSoundG72XType}{GetG72XType}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::SetSampleRate}\label{wxsoundformatg72xsetsamplerate}
|
||||||
|
|
||||||
|
\func{void}{SetSampleRate}{\param{wxUint32 }{srate}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::GetSampleRate}\label{wxsoundformatg72xgetsamplerate}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetSampleRate}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::GetType}\label{wxsoundformatg72xgettype}
|
||||||
|
|
||||||
|
\constfunc{wxSoundFormatType}{GetType}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::Clone}\label{wxsoundformatg72xclone}
|
||||||
|
|
||||||
|
\constfunc{wxSoundFormatBase*}{Clone}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::GetTimeFromBytes}\label{wxsoundformatg72xgettimefrombytes}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetTimeFromBytes}{\param{wxUint32 }{bytes}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::GetBytesFromTime}\label{wxsoundformatg72xgetbytesfromtime}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetBytesFromTime}{\param{wxUint32 }{time}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatG72X::operator!=}\label{wxsoundformatg72xoperatorneq}
|
||||||
|
|
||||||
|
\constfunc{bool}{operator!=}{\param{const wxSoundFormatBase\& }{frmt2}}
|
||||||
|
|
243
contrib/docs/latex/mmedia/sndfile.tex
Normal file
@@ -0,0 +1,243 @@
|
|||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
%% Name: sndfile.tex
|
||||||
|
%% Purpose: wxMMedia docs
|
||||||
|
%% Author: Guilhem Lavaux <lavaux@easynet.fr>
|
||||||
|
%% Modified by:
|
||||||
|
%% Created: 2000
|
||||||
|
%% RCS-ID: $Id$
|
||||||
|
%% Copyright: (c) wxWindows team
|
||||||
|
%% Licence: wxWindows licence
|
||||||
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
|
\section{\class{wxSoundFileStream}}\label{wxsoundfilestream}
|
||||||
|
|
||||||
|
Base class for file coders/decoders. This class is not constructor (it is an abstract
|
||||||
|
class).
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundStream}{wxsoundstream}
|
||||||
|
|
||||||
|
\wxheading{Include file}
|
||||||
|
|
||||||
|
wx/sndfile.h
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::wxSoundFileStream}\label{wxsoundfilestreamwxsoundfilestream}
|
||||||
|
|
||||||
|
\func{}{wxSoundFileStream}{\param{wxInputStream\& }{stream}, \param{wxSoundStream\& }{io\_sound}}
|
||||||
|
|
||||||
|
It constructs a new file decoder object which will send
|
||||||
|
audio data to the specified sound stream.
|
||||||
|
The {\it stream} is the input stream to be decoded. The
|
||||||
|
{\it io\_sound} is the destination sound stream.
|
||||||
|
Once it has been constructed, you cannot change any of
|
||||||
|
the specified streams nor the direction of the stream.
|
||||||
|
|
||||||
|
You will have access to the playback functions.
|
||||||
|
|
||||||
|
\func{}{wxSoundFileStream}{\param{wxOutputStream\& }{stream}, \param{wxSoundStream\& }{io\_sound}}
|
||||||
|
|
||||||
|
It constructs a new file coder object which will get
|
||||||
|
data to be recorded from the specified sound stream.
|
||||||
|
The {\it stream} is the output wxStream. The {\it io\_sound}
|
||||||
|
is the source sound stream of the audio data. Once
|
||||||
|
it has been constructed, you cannot change any of
|
||||||
|
the specified streams nor the direction of the stream.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::\destruct{wxSoundFileStream}}\label{wxsoundfilestreamdtor}
|
||||||
|
\func{}{\destruct{wxSoundFileStream}}{\void}
|
||||||
|
|
||||||
|
It destroys the current sound file codec.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::Play}\label{wxsoundfilestreamplay}
|
||||||
|
\func{bool}{Play}{\void}
|
||||||
|
|
||||||
|
It starts playing the file. The playing begins, in background
|
||||||
|
in nearly all cases, after the return of the function. The
|
||||||
|
codec returns to a {\bf stopped} state when it reaches the
|
||||||
|
end of the file.
|
||||||
|
On success, it returns TRUE.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::Record}\label{wxsoundfilestreamrecord}
|
||||||
|
\func{bool}{Record}{\param{wxUint32 }{time}}
|
||||||
|
|
||||||
|
It starts recording data from the sound stream and writing them
|
||||||
|
to the output stream. You have to precise the recording length in
|
||||||
|
parameter. This length is expressed in seconds. If you want to
|
||||||
|
control the record length (using \helpref{Stop}{wxsoundfilestreamstop}),
|
||||||
|
you can set it to wxSOUND\_INFINITE\_TIME.
|
||||||
|
|
||||||
|
On success, it returns TRUE.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::Stop}\label{wxsoundfilestreamstop}
|
||||||
|
\func{bool}{Stop}{\void}
|
||||||
|
|
||||||
|
It stops either recording or playing. Whatever happens (even unexpected
|
||||||
|
errors), the stream is stopped when the function returns. When you are
|
||||||
|
in recording mode, the file headers are updated and flushed if possible
|
||||||
|
(ie: if the output stream is seekable).
|
||||||
|
|
||||||
|
On success, it returns TRUE.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::Pause}\label{wxsoundfilestreampause}
|
||||||
|
\func{bool}{Pause}{\void}
|
||||||
|
|
||||||
|
The file codec tries to pause the stream: it means that it stops audio
|
||||||
|
production but keep the file pointer at the place.
|
||||||
|
|
||||||
|
If the file codec is already paused, it returns FALSE.
|
||||||
|
|
||||||
|
On success, it returns TREE.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::Resume}\label{wxsoundfilestreamresume}
|
||||||
|
\func{bool}{Resume}{\void}
|
||||||
|
|
||||||
|
When the file codec has been paused using
|
||||||
|
\helpref{Pause}{wxsoundfilestreampause}, you could be interrested in
|
||||||
|
resuming it. This is the goal of this function.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::IsStopped}\label{wxsoundfilestreamisstopped}
|
||||||
|
\constfunc{bool}{IsStopped}{\void}
|
||||||
|
|
||||||
|
It returns TRUE when the stream is stopped, in another case it returns
|
||||||
|
FALSE.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::IsPaused}\label{wxsoundfilestreamispaused}
|
||||||
|
\constfunc{bool}{IsPaused}{\void}
|
||||||
|
|
||||||
|
It returns TRUE when the stream is paused, in another case it returns
|
||||||
|
FALSE.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::StartProduction}\label{wxsoundfilestreamstartproduction}
|
||||||
|
\func{bool}{StartProduction}{\param{int }{evt}}
|
||||||
|
|
||||||
|
It is really not advised you call this function. From the wxSoundFileStream
|
||||||
|
point of view it is an internal function. Internally, it is called after
|
||||||
|
the file stream has been prepared to be played or to receive audio data and
|
||||||
|
when it wants to start processing audio data.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::StopProduction}\label{wxsoundfilestreamstopproduction}
|
||||||
|
\func{bool}{StopProduction}{\void}
|
||||||
|
|
||||||
|
As for \helpref{StartProduction}{wxsoundfilestreamstopproduction}, it is not
|
||||||
|
advised for you to call this function. It is called by
|
||||||
|
\helpref{Stop}{wxsoundfilestreamstop} when it needs to stop the audio data
|
||||||
|
processing.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::GetLength}\label{wxsoundfilestreamgetlength}
|
||||||
|
\func{wxUint32}{GetLength}{\void}
|
||||||
|
|
||||||
|
It returns the audio data length of the file stream. This length is expressed
|
||||||
|
in bytes. If you need the length in seconds, you will need to use
|
||||||
|
\helpref{GetSoundFormat}{wxsoundstreamgetsoundformat} and
|
||||||
|
\helpref{GetTimeFromBytes}{wxsoundformatbasegettimefrombytes}.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::GetPosition}\label{wxsoundfilestreamgetposition}
|
||||||
|
\func{wxUint32}{GetPosition}{\void}
|
||||||
|
|
||||||
|
It returns the current position in the soundfile stream. The position
|
||||||
|
is expressed in bytes. If you need the length in seconds, you will need to use
|
||||||
|
\helpref{GetSoundFormat}{wxsoundstreamgetsoundformat} and
|
||||||
|
\helpref{GetTimeFromBytes}{wxsoundformatbasegettimefrombytes}.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::SetPosition}\label{wxsoundfilestreamsetposition}
|
||||||
|
\func{wxUint32}{SetPosition}{\param{wxUint32 }{new\_position}}
|
||||||
|
|
||||||
|
It sets the current in the soundfile stream. The position
|
||||||
|
{\it new\_position} must be expressed in bytes. You can get
|
||||||
|
a length/position in bytes from a time value using
|
||||||
|
\helpref{GetSoundFormat}{wxsoundstreamgetsoundformat} and
|
||||||
|
\helpref{GetTimeFromBytes}{wxsoundformatbasegettimefrombytes}.
|
||||||
|
|
||||||
|
On success, it returns TRUE.
|
||||||
|
|
||||||
|
\wxheading{Warning}
|
||||||
|
|
||||||
|
Some wxStream may not be capable to support this function as
|
||||||
|
it may not support the seekable functionnality. If this happens,
|
||||||
|
it returns FALSE and leave the stream at the same position.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::Read}\label{wxsoundfilestreamread}
|
||||||
|
\func{wxSoundStream\&}{Read}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
You can obtain the audio data encoded in the file using this function.
|
||||||
|
But it must be considered as an internal function. Used carelessly, it
|
||||||
|
may corrupt the current state of the stream.
|
||||||
|
Data are returned using in the original file coding (You must use a sound
|
||||||
|
format object to decode it).
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::Write}\label{wxsoundfilestreamwrite}
|
||||||
|
\func{wxSoundStream\&}{Write}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
You can put encoded audio data to the file using this function.
|
||||||
|
But it must be considered as an internal function. Used carelessly, it
|
||||||
|
may corrupt the current state of the stream.
|
||||||
|
Data must be coded with the specified file coding (You must use a sound
|
||||||
|
format object to do this).
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::SetSoundFormat}\label{wxsoundfilestreamsetsoundformat}
|
||||||
|
\func{bool}{SetSoundFormat}{\param{const wxSoundFormatBase\& }{format}}
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::GetCodecName}\label{wxsoundfilestreamgetcodecname}
|
||||||
|
\constfunc{wxString}{GetCodecName}{\void}
|
||||||
|
|
||||||
|
This function returns the Codec name. This is useful for those who
|
||||||
|
want to build a player (But also in some other case).
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::CanRead}\label{wxsoundfilestreamcanread}
|
||||||
|
\func{bool}{CanRead}{\void}
|
||||||
|
|
||||||
|
You should use this function to test whether this file codec can read
|
||||||
|
the stream you passed to it.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::PrepareToPlay}\label{wxsoundfilestreampreparetoplay}
|
||||||
|
\func{bool}{PrepareToPlay}{\void}
|
||||||
|
|
||||||
|
It is called by wxSoundFileStream to prepare the specific file loader
|
||||||
|
to prepare itself to play the file. Actually, this includes reading
|
||||||
|
headers and setting the various parameters of the sound format.
|
||||||
|
This should not be called by an external user but it should be
|
||||||
|
implemented when you inherit wxSoundFileStream to build a new codec.
|
||||||
|
|
||||||
|
It must return when the file is identified and the parameters have
|
||||||
|
been set. In all other cases, you must return FALSE.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::PrepareToRecord}\label{wxsoundfilestreampreparetorecord}
|
||||||
|
\func{bool}{PrepareToRecord}{\param{wxUint32 }{time}}
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::FinishRecording}\label{wxsoundfilestreamfinishrecording}
|
||||||
|
\func{bool}{FinishRecording}{\void}
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::RepositionStream}\label{wxsoundfilestreamrepositionstream}
|
||||||
|
\func{bool}{RepositionStream}{\param{wxUint32 }{position}}
|
||||||
|
|
||||||
|
This is called by wxSoundFileStream::SetPosition to seek the input stream
|
||||||
|
to the right position. This must be overidden by the file codec class.
|
||||||
|
The position is relative to the beginning of the samples.
|
||||||
|
If it is impossible (as for a piped input stream), you must return FALSE.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::FinishPreparation}\label{wxsoundfilestreamfinishpreparation}
|
||||||
|
\func{void}{FinishPreparation}{\param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
This is an internal function but it must called by the file codec class when
|
||||||
|
the "playing" preparation is finished and you know the size of the stream.
|
||||||
|
If it is an {\it infinite} stream, you should set this to wxSOUND\_INFINITE\_TIME.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::GetData}\label{wxsoundfilestreamgetdata}
|
||||||
|
\func{wxUint32}{GetData}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
This is called by wxSoundFileStream when it needs to get new sound data to
|
||||||
|
send to the device driver (or to a conversion codec). This must be eventually
|
||||||
|
overidden by the file codec class. The default behaviour is simply to read from
|
||||||
|
the input stream.
|
||||||
|
|
||||||
|
\membersection{wxSoundFileStream::PutData}\label{wxsoundfilestreamputdata}
|
||||||
|
\func{wxUint32}{PutData}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
This is called by wxSoundFileStream when it needs to put new sound data received
|
||||||
|
from the device driver (or from a conversion codec). This must be eventually
|
||||||
|
overidden by the file codec class. The default behaviour is simply to write to
|
||||||
|
the input stream.
|
104
contrib/docs/latex/mmedia/sndfpcm.tex
Normal file
@@ -0,0 +1,104 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndpcm.h at 26/Feb/00 14:26:33
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundFormatPcm}}\label{wxsoundformatpcm}
|
||||||
|
|
||||||
|
|
||||||
|
PCM specification class
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundFormatBase}{wxsoundformatbase}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::wxSoundFormatPcm}\label{wxsoundformatpcmwxsoundformatpcm}
|
||||||
|
|
||||||
|
\func{}{wxSoundFormatPcm}{\param{wxUint32 }{srate = 22500}, \param{wxUint8 }{bps = 8}, \param{wxUint16 }{channels = 2}, \param{bool }{sign = TRUE}, \param{int }{order = wxLITTLE\_ENDIAN}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::\destruct{wxSoundFormatPcm}}\label{wxsoundformatpcmdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundFormatPcm}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::SetSampleRate}\label{wxsoundformatpcmsetsamplerate}
|
||||||
|
|
||||||
|
\func{void}{SetSampleRate}{\param{wxUint32 }{srate}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::SetBPS}\label{wxsoundformatpcmsetbps}
|
||||||
|
|
||||||
|
\func{void}{SetBPS}{\param{wxUint8 }{bps}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::SetChannels}\label{wxsoundformatpcmsetchannels}
|
||||||
|
|
||||||
|
\func{void}{SetChannels}{\param{wxUint16 }{nchannels}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::SetOrder}\label{wxsoundformatpcmsetorder}
|
||||||
|
|
||||||
|
\func{void}{SetOrder}{\param{int }{order}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::Signed}\label{wxsoundformatpcmsigned}
|
||||||
|
|
||||||
|
\func{void}{Signed}{\param{bool }{sign}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::GetSampleRate}\label{wxsoundformatpcmgetsamplerate}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetSampleRate}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::GetBPS}\label{wxsoundformatpcmgetbps}
|
||||||
|
|
||||||
|
\constfunc{wxUint8}{GetBPS}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::GetChannels}\label{wxsoundformatpcmgetchannels}
|
||||||
|
|
||||||
|
\constfunc{wxUint16}{GetChannels}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::GetOrder}\label{wxsoundformatpcmgetorder}
|
||||||
|
|
||||||
|
\constfunc{int}{GetOrder}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::Signed}\label{wxsoundformatpcmgetsigned}
|
||||||
|
|
||||||
|
\constfunc{bool}{Signed}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::GetType}\label{wxsoundformatpcmgettype}
|
||||||
|
|
||||||
|
\constfunc{wxSoundFormatType}{GetType}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::Clone}\label{wxsoundformatpcmclone}
|
||||||
|
|
||||||
|
\constfunc{wxSoundFormatBase*}{Clone}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::GetTimeFromBytes}\label{wxsoundformatpcmgettimefrombytes}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetTimeFromBytes}{\param{wxUint32 }{bytes}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::GetBytesFromTime}\label{wxsoundformatpcmgetbytesfromtime}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetBytesFromTime}{\param{wxUint32 }{time}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatPcm::operator!}\label{wxsoundformatpcmoperatornot}
|
||||||
|
|
||||||
|
\constfunc{bool}{operator!}{\param{const wxSoundFormatBase\& }{frmt2}}
|
||||||
|
|
69
contrib/docs/latex/mmedia/sndfrmt.tex
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndbase.h at 26/Feb/00 14:23:29
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundFormatBase}}\label{wxsoundformatbase}
|
||||||
|
|
||||||
|
|
||||||
|
Base class for sound format specification
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
No base class
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef enum {
|
||||||
|
wxSOUND\_NOFORMAT,
|
||||||
|
wxSOUND\_PCM,
|
||||||
|
wxSOUND\_ULAW,
|
||||||
|
wxSOUND\_G72X,
|
||||||
|
wxSOUND\_MSADPCM
|
||||||
|
} wxSoundFormatType
|
||||||
|
\end{verbatim}}
|
||||||
|
|
||||||
|
wxSoundFormatType: it specifies the format family of the sound data
|
||||||
|
which will be passed to the stream.
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatBase::wxSoundFormatBase}\label{wxsoundformatbasewxsoundformatbase}
|
||||||
|
|
||||||
|
\func{}{wxSoundFormatBase}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatBase::\destruct{wxSoundFormatBase}}\label{wxsoundformatbasedtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundFormatBase}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatBase::GetType}\label{wxsoundformatbasegettype}
|
||||||
|
|
||||||
|
\constfunc{wxSoundFormatType}{GetType}{\void}
|
||||||
|
|
||||||
|
It returns a "standard" format type.
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatBase::Clone}\label{wxsoundformatbaseclone}
|
||||||
|
|
||||||
|
\constfunc{wxSoundFormatBase*}{Clone}{\void}
|
||||||
|
|
||||||
|
It clones the current format.
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatBase::GetTimeFromBytes}\label{wxsoundformatbasegettimefrombytes}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetTimeFromBytes}{\param{wxUint32 }{bytes}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatBase::GetBytesFromTime}\label{wxsoundformatbasegetbytesfromtime}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetBytesFromTime}{\param{wxUint32 }{time}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatBase::operator!=}\label{wxsoundformatbaseoperatorneq}
|
||||||
|
|
||||||
|
\constfunc{bool}{operator!=}{\param{const wxSoundFormatBase\& }{frmt2}}
|
74
contrib/docs/latex/mmedia/sndfulaw.tex
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndulaw.h at 26/Feb/00 14:52:25
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundFormatUlaw}}\label{wxsoundformatulaw}
|
||||||
|
|
||||||
|
|
||||||
|
ULAW format
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundFormatBase}{wxsoundformatbase}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::wxSoundFormatUlaw}\label{wxsoundformatulawwxsoundformatulaw}
|
||||||
|
|
||||||
|
\func{}{wxSoundFormatUlaw}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::\destruct{wxSoundFormatUlaw}}\label{wxsoundformatulawdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundFormatUlaw}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::SetSampleRate}\label{wxsoundformatulawsetsamplerate}
|
||||||
|
|
||||||
|
\func{void}{SetSampleRate}{\param{wxUint32 }{srate}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::GetSampleRate}\label{wxsoundformatulawgetsamplerate}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetSampleRate}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::SetChannels}\label{wxsoundformatulawsetchannels}
|
||||||
|
|
||||||
|
\func{void}{SetChannels}{\param{wxUint8 }{channels}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::GetChannels}\label{wxsoundformatulawgetchannels}
|
||||||
|
|
||||||
|
\constfunc{wxUint8}{GetChannels}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::GetType}\label{wxsoundformatulawgettype}
|
||||||
|
|
||||||
|
\constfunc{wxSoundFormatType}{GetType}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::Clone}\label{wxsoundformatulawclone}
|
||||||
|
|
||||||
|
\constfunc{wxSoundFormatBase*}{Clone}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::GetTimeFromBytes}\label{wxsoundformatulawgettimefrombytes}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetTimeFromBytes}{\param{wxUint32 }{bytes}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::GetBytesFromTime}\label{wxsoundformatulawgetbytesfromtime}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetBytesFromTime}{\param{wxUint32 }{time}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundFormatUlaw::operator!=}\label{wxsoundformatulawoperatorneq}
|
||||||
|
|
||||||
|
\constfunc{bool}{operator!=}{\param{const wxSoundFormatBase\& }{frmt2}}
|
||||||
|
|
54
contrib/docs/latex/mmedia/sndg72x.tex
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndg72x.h at 26/Feb/00 14:52:19
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundStreamG72X}}\label{wxsoundstreamg72x}
|
||||||
|
|
||||||
|
|
||||||
|
ULAW converter class
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundStreamCodec}{wxsoundstreamcodec}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamG72X::wxSoundStreamG72X}\label{wxsoundstreamg72xwxsoundstreamg72x}
|
||||||
|
|
||||||
|
\func{}{wxSoundStreamG72X}{\param{wxSoundStream\& }{sndio}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamG72X::\destruct{wxSoundStreamG72X}}\label{wxsoundstreamg72xdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundStreamG72X}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamG72X::Read}\label{wxsoundstreamg72xread}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Read}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamG72X::Write}\label{wxsoundstreamg72xwrite}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Write}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamG72X::SetSoundFormat}\label{wxsoundstreamg72xsetsoundformat}
|
||||||
|
|
||||||
|
\func{bool}{SetSoundFormat}{\param{const wxSoundFormatBase\& }{format}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamG72X::PutBits}\label{wxsoundstreamg72xputbits}
|
||||||
|
|
||||||
|
\func{void}{PutBits}{\param{wxUint8 }{bits}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamG72X::GetBits}\label{wxsoundstreamg72xgetbits}
|
||||||
|
|
||||||
|
\func{wxUint8}{GetBits}{\void}
|
||||||
|
|
71
contrib/docs/latex/mmedia/sndoss.tex
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndoss.h at 26/Feb/00 14:26:53
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundStreamOSS}}\label{wxsoundstreamoss}
|
||||||
|
|
||||||
|
|
||||||
|
OSS output class
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundStream}{wxsoundstream}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::wxSoundStreamOSS}\label{wxsoundstreamosswxsoundstreamoss}
|
||||||
|
|
||||||
|
\func{}{wxSoundStreamOSS}{\param{const wxString\& }{dev\_name = \_T("/dev/dsp")}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::\destruct{wxSoundStreamOSS}}\label{wxsoundstreamossdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundStreamOSS}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::Read}\label{wxsoundstreamossread}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Read}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::Write}\label{wxsoundstreamosswrite}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Write}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::GetBestSize}\label{wxsoundstreamossgetbestsize}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetBestSize}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::SetSoundFormat}\label{wxsoundstreamosssetsoundformat}
|
||||||
|
|
||||||
|
\func{bool}{SetSoundFormat}{\param{const wxSoundFormatBase\& }{format}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::StartProduction}\label{wxsoundstreamossstartproduction}
|
||||||
|
|
||||||
|
\func{bool}{StartProduction}{\param{int }{evt}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::StopProduction}\label{wxsoundstreamossstopproduction}
|
||||||
|
|
||||||
|
\func{bool}{StopProduction}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::QueueFilled}\label{wxsoundstreamossqueuefilled}
|
||||||
|
|
||||||
|
\constfunc{bool}{QueueFilled}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamOSS::WakeUpEvt}\label{wxsoundstreamosswakeupevt}
|
||||||
|
|
||||||
|
\func{void}{WakeUpEvt}{\param{int }{evt}}
|
||||||
|
|
||||||
|
You should not call this.
|
||||||
|
|
48
contrib/docs/latex/mmedia/sndpcm.tex
Normal file
@@ -0,0 +1,48 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndcpcm.h at 26/Feb/00 14:26:35
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundStreamPcm}}\label{wxsoundstreampcm}
|
||||||
|
|
||||||
|
|
||||||
|
PCM converter class
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundStreamCodec}{wxsoundstreamcodec}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef void (*ConverterType)(const char *buf\_in, char *buf\_out, wxUint32 len) ConverterType
|
||||||
|
\end{verbatim}}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamPcm::wxSoundStreamPcm}\label{wxsoundstreampcmwxsoundstreampcm}
|
||||||
|
|
||||||
|
\func{}{wxSoundStreamPcm}{\param{wxSoundStream\& }{sndio}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamPcm::\destruct{wxSoundStreamPcm}}\label{wxsoundstreampcmdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundStreamPcm}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamPcm::Read}\label{wxsoundstreampcmread}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Read}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamPcm::Write}\label{wxsoundstreampcmwrite}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Write}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamPcm::SetSoundFormat}\label{wxsoundstreampcmsetsoundformat}
|
||||||
|
|
||||||
|
\func{bool}{SetSoundFormat}{\param{const wxSoundFormatBase\& }{format}}
|
||||||
|
|
37
contrib/docs/latex/mmedia/sndrter.tex
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndfile.h at 26/Feb/00 14:26:42
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundRouterStream}}\label{wxsoundrouterstream}
|
||||||
|
|
||||||
|
This is the router "codec" class. It should do codec routing when the device
|
||||||
|
driver does not deal with a format.
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundStreamCodec}{wxsoundstreamcodec}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
\membersection{wxSoundRouterStream::wxSoundRouterStream}\label{wxsoundrouterstreamwxsoundrouterstream}
|
||||||
|
\func{}{wxSoundRouterStream}{\param{wxSoundStream\& }{sndio}}
|
||||||
|
|
||||||
|
\helpref{wxSoundCodec}{wxsoundcodec}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundRouterStream::\destruct{wxSoundRouterStream}}\label{wxsoundrouterstreamdtor}
|
||||||
|
\func{}{\destruct{wxSoundRouterStream}}{\void}
|
||||||
|
|
||||||
|
Destructor.
|
||||||
|
|
||||||
|
\membersection{wxSoundRouterStream::SetSoundFormat}\label{wxsoundrouterstreamsetsoundformat}
|
||||||
|
\func{bool}{SetSoundFormat}{\param{const wxSoundFormatBase\& }{format}}
|
||||||
|
|
||||||
|
SetSoundFormat will first try to setup the device driver with the specified
|
||||||
|
format. If this fails, it will try to find a codec which will convert the
|
||||||
|
input format to a valid format for the device driver. It uses an internal
|
||||||
|
codec database.
|
49
contrib/docs/latex/mmedia/sndulaw.tex
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndulaw.h at 26/Feb/00 14:52:25
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundStreamUlaw}}\label{wxsoundstreamulaw}
|
||||||
|
|
||||||
|
|
||||||
|
ULAW converter class
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundStreamCodec}{wxsoundstreamcodec}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamUlaw::wxSoundStreamUlaw}\label{wxsoundstreamulawwxsoundstreamulaw}
|
||||||
|
|
||||||
|
\func{}{wxSoundStreamUlaw}{\param{wxSoundStream\& }{sndio}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamUlaw::\destruct{wxSoundStreamUlaw}}\label{wxsoundstreamulawdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundStreamUlaw}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamUlaw::Read}\label{wxsoundstreamulawread}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Read}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamUlaw::Write}\label{wxsoundstreamulawwrite}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Write}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamUlaw::SetSoundFormat}\label{wxsoundstreamulawsetsoundformat}
|
||||||
|
|
||||||
|
\func{bool}{SetSoundFormat}{\param{const wxSoundFormatBase\& }{format}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamUlaw::GetBestSize}\label{wxsoundstreamulawgetbestsize}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetBestSize}{\void}
|
||||||
|
|
91
contrib/docs/latex/mmedia/sndwave.tex
Normal file
@@ -0,0 +1,91 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndwav.h at 26/Feb/00 14:26:40
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundWave}}\label{wxsoundwave}
|
||||||
|
|
||||||
|
|
||||||
|
WAVE codec
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundFileStream}{wxsoundfilestream}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::wxSoundWave}\label{wxsoundwavewxsoundwave}
|
||||||
|
|
||||||
|
\func{}{wxSoundWave}{\param{wxInputStream\& }{stream}, \param{wxSoundStream\& }{io\_sound}}
|
||||||
|
|
||||||
|
\func{}{wxSoundWave}{\param{wxOutputStream\& }{stream}, \param{wxSoundStream\& }{io\_sound}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::\destruct{wxSoundWave}}\label{wxsoundwavedtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundWave}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::CanRead}\label{wxsoundwavecanread}
|
||||||
|
|
||||||
|
\func{bool}{CanRead}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::GetCodecName}\label{wxsoundwavegetcodecname}
|
||||||
|
|
||||||
|
\constfunc{wxString}{GetCodecName}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::PrepareToPlay}\label{wxsoundwavepreparetoplay}
|
||||||
|
|
||||||
|
\func{bool}{PrepareToPlay}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::PrepareToRecord}\label{wxsoundwavepreparetorecord}
|
||||||
|
|
||||||
|
\func{bool}{PrepareToRecord}{\param{wxUint32 }{time}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::FinishRecording}\label{wxsoundwavefinishrecording}
|
||||||
|
|
||||||
|
\func{bool}{FinishRecording}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::RepositionStream}\label{wxsoundwaverepositionstream}
|
||||||
|
|
||||||
|
\func{bool}{RepositionStream}{\param{wxUint32 }{position}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::GetData}\label{wxsoundwavegetdata}
|
||||||
|
|
||||||
|
\func{wxUint32}{GetData}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::PutData}\label{wxsoundwaveputdata}
|
||||||
|
|
||||||
|
\func{wxUint32}{PutData}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::HandleOutputPCM}\label{wxsoundwavehandleoutputpcm}
|
||||||
|
|
||||||
|
\func{bool}{HandleOutputPCM}{\param{wxDataInputStream\& }{data}, \param{wxUint16 }{channels}, \param{wxUint32 }{sample\_fq}, \param{wxUint32 }{byte\_p\_sec}, \param{wxUint16 }{byte\_p\_spl}, \param{wxUint16 }{bits\_p\_spl}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::HandleOutputG721}\label{wxsoundwavehandleoutputg721}
|
||||||
|
|
||||||
|
\func{bool}{HandleOutputG721}{\param{wxDataInputStream\& }{data}, \param{wxUint16 }{channels}, \param{wxUint32 }{sample\_fq}, \param{wxUint32 }{byte\_p\_sec}, \param{wxUint16 }{byte\_p\_spl}, \param{wxUint16 }{bits\_p\_spl}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::HandleInputPCM}\label{wxsoundwavehandleinputpcm}
|
||||||
|
|
||||||
|
\func{wxSoundFormatBase*}{HandleInputPCM}{\param{wxDataOutputStream\& }{data}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundWave::HandleInputG72X}\label{wxsoundwavehandleinputg72x}
|
||||||
|
|
||||||
|
\func{wxSoundFormatBase*}{HandleInputG72X}{\param{wxDataOutputStream\& }{data}}
|
||||||
|
|
140
contrib/docs/latex/mmedia/sndwin.tex
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/sndwin.h at 26/Feb/00 14:26:51
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxSoundStreamWin}}\label{wxsoundstreamwin}
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxSoundStream}{wxsoundstream}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef struct \_wxSoundInternal wxSoundInternal
|
||||||
|
\end{verbatim}}
|
||||||
|
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef struct \_wxSoundInfoHeader wxSoundInfoHeader
|
||||||
|
\end{verbatim}}
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::wxSoundStreamWin}\label{wxsoundstreamwinwxsoundstreamwin}
|
||||||
|
|
||||||
|
\func{}{wxSoundStreamWin}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::\destruct{wxSoundStreamWin}}\label{wxsoundstreamwindtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxSoundStreamWin}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::Write}\label{wxsoundstreamwinwrite}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Write}{\param{const void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::Read}\label{wxsoundstreamwinread}
|
||||||
|
|
||||||
|
\func{wxSoundStream\&}{Read}{\param{void* }{buffer}, \param{wxUint32 }{len}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::SetSoundFormat}\label{wxsoundstreamwinsetsoundformat}
|
||||||
|
|
||||||
|
\func{bool}{SetSoundFormat}{\param{wxSoundFormatBase\& }{base}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::StartProduction}\label{wxsoundstreamwinstartproduction}
|
||||||
|
|
||||||
|
\func{bool}{StartProduction}{\param{int }{evt}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::StopProduction}\label{wxsoundstreamwinstopproduction}
|
||||||
|
|
||||||
|
\func{bool}{StopProduction}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::QueueFilled}\label{wxsoundstreamwinqueuefilled}
|
||||||
|
|
||||||
|
\constfunc{bool}{QueueFilled}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::NotifyDoneBuffer}\label{wxsoundstreamwinnotifydonebuffer}
|
||||||
|
|
||||||
|
\func{void}{NotifyDoneBuffer}{\param{wxUint32 }{dev\_handle}, \param{int }{flag}}
|
||||||
|
|
||||||
|
Internal but defined as public
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::GetBestSize}\label{wxsoundstreamwingetbestsize}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetBestSize}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::CreateSndWindow}\label{wxsoundstreamwincreatesndwindow}
|
||||||
|
|
||||||
|
\func{void}{CreateSndWindow}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::DestroySndWindow}\label{wxsoundstreamwindestroysndwindow}
|
||||||
|
|
||||||
|
\func{void}{DestroySndWindow}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::OpenDevice}\label{wxsoundstreamwinopendevice}
|
||||||
|
|
||||||
|
\func{bool}{OpenDevice}{\param{int }{mode}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::CloseDevice}\label{wxsoundstreamwinclosedevice}
|
||||||
|
|
||||||
|
\func{void}{CloseDevice}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::AllocHeader}\label{wxsoundstreamwinallocheader}
|
||||||
|
|
||||||
|
\func{wxSoundInfoHeader*}{AllocHeader}{\param{int }{mode}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::FreeHeader}\label{wxsoundstreamwinfreeheader}
|
||||||
|
|
||||||
|
\func{void}{FreeHeader}{\param{wxSoundInfoHeader* }{header}, \param{int }{mode}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::AllocHeaders}\label{wxsoundstreamwinallocheaders}
|
||||||
|
|
||||||
|
\func{bool}{AllocHeaders}{\param{int }{mode}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::FreeHeaders}\label{wxsoundstreamwinfreeheaders}
|
||||||
|
|
||||||
|
\func{void}{FreeHeaders}{\param{int }{mode}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::WaitFor}\label{wxsoundstreamwinwaitfor}
|
||||||
|
|
||||||
|
\func{void}{WaitFor}{\param{wxSoundInfoHeader* }{info}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::AddToQueue}\label{wxsoundstreamwinaddtoqueue}
|
||||||
|
|
||||||
|
\func{bool}{AddToQueue}{\param{wxSoundInfoHeader* }{info}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::ClearHeader}\label{wxsoundstreamwinclearheader}
|
||||||
|
|
||||||
|
\func{void}{ClearHeader}{\param{wxSoundInfoHeader* }{info}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::NextFragmentOutput}\label{wxsoundstreamwinnextfragmentoutput}
|
||||||
|
|
||||||
|
\func{wxSoundInfoHeader*}{NextFragmentOutput}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxSoundStreamWin::NextFragmentInput}\label{wxsoundstreamwinnextfragmentinput}
|
||||||
|
|
||||||
|
\func{wxSoundInfoHeader*}{NextFragmentInput}{\void}
|
||||||
|
|
35
contrib/docs/latex/mmedia/tex2rtf.ini
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
; Last change: JAC 13 Oct 100 5:16 pm
|
||||||
|
runTwice = yes
|
||||||
|
titleFontSize = 12
|
||||||
|
authorFontSize = 10
|
||||||
|
chapterFontSize = 12
|
||||||
|
sectionFontSize = 12
|
||||||
|
subsectionFontSize = 12
|
||||||
|
headerRule = yes
|
||||||
|
footerRule = yes
|
||||||
|
useHeadingStyles = yes
|
||||||
|
listItemIndent=40
|
||||||
|
generateHPJ = yes
|
||||||
|
htmlBrowseButtons = bitmap
|
||||||
|
winHelpVersion = 3
|
||||||
|
winHelpContents = yes
|
||||||
|
winHelpTitle = "MMedia Manual"
|
||||||
|
truncateFilenames = no
|
||||||
|
combineSubSections = yes
|
||||||
|
\overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}}
|
||||||
|
\htmlonly{\image{}{books.gif}}\helpref{#1}{#2}
|
||||||
|
\sethotspotcolour{on}\sethotspotunderline{on}}
|
||||||
|
\docparam [2]{\parskip{0}{\it #1}\htmlignore{\par}\parskip{10}\indented{1cm}{#2}}
|
||||||
|
\wxheading [1]{{\bf \htmlignore{\fcol{blue}{#1}}\htmlonly{\fcol{red}{#1}}}}
|
||||||
|
\const [0] {{\bf const}}
|
||||||
|
\constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}}
|
||||||
|
\windowstyle [1] {{\bf #1}\index{#1}}
|
||||||
|
|
||||||
|
;;
|
||||||
|
;; These two are for generating MS HTML Help project, contents and index files.
|
||||||
|
;;
|
||||||
|
htmlWorkshopFiles = true
|
||||||
|
htmlIndex = true
|
||||||
|
\pythonnote [1] {{\bf \fcol{blue}{wxPython note:}} #1}
|
||||||
|
%\pythonnote [1] {}
|
||||||
|
|
298
contrib/docs/latex/mmedia/texhelp.sty
Normal file
@@ -0,0 +1,298 @@
|
|||||||
|
% LaTeX style file
|
||||||
|
% Name: texhelp.sty
|
||||||
|
% Author: Julian Smart
|
||||||
|
%
|
||||||
|
% Purpose
|
||||||
|
% -------
|
||||||
|
% Style file to enable the simultaneous preparation of printed LaTeX and on-line
|
||||||
|
% hypertext manuals.
|
||||||
|
% Use in conjunction with Tex2RTF (see Tex2RTF documentation).
|
||||||
|
%
|
||||||
|
% Note that if a non-ASCII character starts a newline and there should be a space
|
||||||
|
% between the last word on the previous line and the first word on this line,
|
||||||
|
% you need to use \rtfsp to generate a space in Windows Help. \rtfsp is ignored
|
||||||
|
% in all other formats.
|
||||||
|
%
|
||||||
|
% Julian Smart
|
||||||
|
% Artificial Intelligence Applications Institute
|
||||||
|
%
|
||||||
|
%
|
||||||
|
% ============== C++/CLIPS Documentation Facilities ==============
|
||||||
|
%
|
||||||
|
% Each class definition should be typeset with e.g.
|
||||||
|
%
|
||||||
|
% \section{\class{Name}: Parent}
|
||||||
|
%
|
||||||
|
% followed by a description of the class.
|
||||||
|
% Each member should follow:
|
||||||
|
%
|
||||||
|
% \membersection{wxName::Member}
|
||||||
|
%
|
||||||
|
% with a description of what this member does.
|
||||||
|
% Then, one (or more if overloaded) member (function) in detail:
|
||||||
|
%
|
||||||
|
% \func{return type}{name}{args}
|
||||||
|
% or
|
||||||
|
% \member{type}{name}
|
||||||
|
%
|
||||||
|
% where args is a list of \param{type}{name}, ...
|
||||||
|
|
||||||
|
% Function, e.g.
|
||||||
|
% e.g. to typeset
|
||||||
|
%
|
||||||
|
% void DoIt(char *string);
|
||||||
|
%
|
||||||
|
% write:
|
||||||
|
%
|
||||||
|
% \func{void}{DoIt}{\param{char *}{string}}
|
||||||
|
%
|
||||||
|
|
||||||
|
\newcommand{\func}[3]{\hangafter=1\noindent\hangindent=10mm
|
||||||
|
{{\it #1} {\bf #2}\index{#2}}(#3)}
|
||||||
|
|
||||||
|
% For function/type definition where the name is a pointer,
|
||||||
|
% e.g. to typeset
|
||||||
|
%
|
||||||
|
% typedef void (*wxFunction)(wxObject&)
|
||||||
|
%
|
||||||
|
% write:
|
||||||
|
%
|
||||||
|
% \pfunc{typedef void}{wxFunction}{param{wxObject&}}
|
||||||
|
|
||||||
|
\newcommand{\pfunc}[3]{\hangafter=1\noindent\hangindent=10mm
|
||||||
|
{{\it #1} ({\bf *#2})\index{#2}}(#3)}
|
||||||
|
|
||||||
|
% Use an ordinary \section command for class name definitions.
|
||||||
|
|
||||||
|
% This is used for a member, such as wxBitmap: GetDepth
|
||||||
|
\newcommand{\membersection}[1]{\subsection*{#1}\index{#1}}
|
||||||
|
|
||||||
|
% CLIPS function
|
||||||
|
\newcommand{\clipsfunc}[3]{\hangafter=1\noindent\hangindent=10mm
|
||||||
|
{{\bf #1} ({\bf #2}\index{#2}}#3)}
|
||||||
|
|
||||||
|
\newcommand{\clipssection}[1]{\chapter{#1}}
|
||||||
|
|
||||||
|
% This is used for a CLIPS function name
|
||||||
|
\newcommand{\functionsection}[1]{\subsection*{#1}}
|
||||||
|
|
||||||
|
% Member: a type and a name
|
||||||
|
\newcommand{\member}[2]{{\bf #1 \it #2}}
|
||||||
|
|
||||||
|
% C++ Parameter: a type and a name (no intervening space)
|
||||||
|
\newcommand{\param}[2]{{\it #1}{\bf #2}}
|
||||||
|
|
||||||
|
% CLIPS Parameter: a type and a name (one intervening space)
|
||||||
|
\newcommand{\cparam}[2]{{\bf #1} {\it #2}}
|
||||||
|
|
||||||
|
% Class: puts in index
|
||||||
|
\newcommand{\class}[1]{#1\index{#1}}
|
||||||
|
|
||||||
|
%\newcommand{\docparam}[2]{\parskip=0pt {\it #1}\par\parskip=10pt\begin{indented}{1cm}{#2}\end{indented}}
|
||||||
|
|
||||||
|
% Void type
|
||||||
|
\newcommand{\void}{{\it void}}
|
||||||
|
|
||||||
|
% Typeset destructor
|
||||||
|
\newcommand{\destruct}[1]{{$\sim$}#1}
|
||||||
|
|
||||||
|
% Typeset insert/extract operators
|
||||||
|
\newcommand{\cinsert}{$<<$}
|
||||||
|
\newcommand{\cextract}{$>>$}
|
||||||
|
|
||||||
|
|
||||||
|
% =================== Hypertext facilities ===================
|
||||||
|
%
|
||||||
|
% To insert hyperlinks (or references, in Latex), \label the sections
|
||||||
|
% or membersections \label{ref-label} immediately after the section, on the same line,
|
||||||
|
% and use \helpref{text-to-show}{ref-label} to make a reference.
|
||||||
|
%
|
||||||
|
|
||||||
|
% Type text with section reference
|
||||||
|
\newcommand{\helpref}[2]{{\it #1} (p.\ \pageref{#2}) }
|
||||||
|
|
||||||
|
% Type text with URL in verbatim mode
|
||||||
|
\newcommand{\urlref}[2]{#1 (\verb$#2$)}
|
||||||
|
|
||||||
|
% Don't typeset section number in LaTeX
|
||||||
|
\newcommand{\helprefn}[2]{{\it #1}}
|
||||||
|
|
||||||
|
% Like helpref, but popup text in WinHelp instead of hyperlinked
|
||||||
|
\newcommand{\popref}[2]{{\it #1}}
|
||||||
|
|
||||||
|
% Like footnote, but popup text.
|
||||||
|
\newcommand{\footnotepopup}[2]{{\it #1}\footnote{#2}}
|
||||||
|
|
||||||
|
% =================== On-line help specific macros ===================
|
||||||
|
%
|
||||||
|
|
||||||
|
% Global document font size/family, help only.
|
||||||
|
\newcommand{\helpfontsize}[1]{}
|
||||||
|
\newcommand{\helpfontfamily}[1]{}
|
||||||
|
|
||||||
|
% Ignore in all on-line help
|
||||||
|
\newcommand{\helpignore}[1]{#1}
|
||||||
|
% Only print in all on-line help
|
||||||
|
\newcommand{\helponly}[1]{}
|
||||||
|
|
||||||
|
% Ignore in LaTeX
|
||||||
|
\newcommand{\latexignore}[1]{}
|
||||||
|
% Only print in LaTeX
|
||||||
|
\newcommand{\latexonly}[1]{#1}
|
||||||
|
|
||||||
|
% Ignore in linear RTF
|
||||||
|
\newcommand{\rtfignore}[1]{#1}
|
||||||
|
% Only print in linear RTF
|
||||||
|
\newcommand{\rtfonly}[1]{}
|
||||||
|
|
||||||
|
% Ignore in WinHelp RTF
|
||||||
|
\newcommand{\winhelpignore}[1]{#1}
|
||||||
|
% Only print in WinHelp RTF
|
||||||
|
\newcommand{\winhelponly}[1]{}
|
||||||
|
|
||||||
|
% Ignore in wxHelp
|
||||||
|
\newcommand{\xlpignore}[1]{#1}
|
||||||
|
% Only print in wxHelp
|
||||||
|
\newcommand{\xlponly}[1]{}
|
||||||
|
|
||||||
|
% Ignore in HTML
|
||||||
|
\newcommand{\htmlignore}[1]{#1}
|
||||||
|
% Only print in HTML
|
||||||
|
\newcommand{\htmlonly}[1]{}
|
||||||
|
|
||||||
|
% Input a file only for help system (binder thickness is not a limitation
|
||||||
|
% in help systems!)
|
||||||
|
\newcommand{\helpinput}[1]{}
|
||||||
|
|
||||||
|
\newcommand{\rtfsp}{ } % Force a space in RTF, ignore in Latex
|
||||||
|
|
||||||
|
% =================== Miscellaneous macros ===================
|
||||||
|
%
|
||||||
|
% Headings consistent with generated ones
|
||||||
|
\newcommand{\myheading}[1]{\vspace*{25pt}
|
||||||
|
\begin{flushleft}
|
||||||
|
{\LARGE \bf #1}
|
||||||
|
\end{flushleft}
|
||||||
|
\vskip 20pt
|
||||||
|
}
|
||||||
|
|
||||||
|
% Heading with entry in contents page.
|
||||||
|
\newcommand{\chapterheading}[1]{\myheading{#1}
|
||||||
|
\addcontentsline{toc}{chapter}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\sectionheading}[1]{\myheading{#1}
|
||||||
|
\addcontentsline{toc}{section}{#1}}
|
||||||
|
|
||||||
|
% Glossary environment
|
||||||
|
\newenvironment{helpglossary}{\newpage\chapterheading{Glossary}\begin{description}}{\end{description}}
|
||||||
|
|
||||||
|
% Glossary entry
|
||||||
|
\newcommand{\gloss}[1]{\item[#1]\index{#1}}
|
||||||
|
|
||||||
|
% Image: EPS in Latex, BMP or MF (whatever's available) in RTF. Requires psbox.
|
||||||
|
\newcommand{\image}[2]{\psboxto(#1){#2}}
|
||||||
|
|
||||||
|
% Image, left aligned (HTML)
|
||||||
|
\newcommand{\imager}[2]{\psboxto(#1){#2}}
|
||||||
|
|
||||||
|
% Image, right aligned (HTML)
|
||||||
|
\newcommand{\imagel}[2]{\psboxto(#1){#2}}
|
||||||
|
|
||||||
|
% Imagemap: principally for HTML only. In Latex,
|
||||||
|
% acts like \image.
|
||||||
|
\newcommand{\imagemap}[3]{\psboxto(#1){#2}}
|
||||||
|
|
||||||
|
% Headers and footers
|
||||||
|
% \setheader{EvenPageLeft}{EvenPageCentre}{EvenPageRight}
|
||||||
|
% {OddPageLeft}{OddPageCentre}{OddPageRight}
|
||||||
|
\newcommand{\setheader}[6]{
|
||||||
|
\lhead[\fancyplain{}{#1}]{\fancyplain{}{#4}}
|
||||||
|
\chead[\fancyplain{}{#2}]{\fancyplain{}{#5}}
|
||||||
|
\rhead[\fancyplain{}{#3}]{\fancyplain{}{#6}}
|
||||||
|
}
|
||||||
|
|
||||||
|
% \setfooter{EvenPageLeft}{EvenPageCentre}{EvenPageRight}
|
||||||
|
% {OddPageLeft}{OddPageCentre}{OddPageRight}
|
||||||
|
\newcommand{\setfooter}[6]{
|
||||||
|
\lfoot[\fancyplain{#1}{#1}]{\fancyplain{#4}{#4}}
|
||||||
|
\cfoot[\fancyplain{#2}{#2}]{\fancyplain{#5}{#5}}
|
||||||
|
\rfoot[\fancyplain{#3}{#3}]{\fancyplain{#6}{#6}}
|
||||||
|
}
|
||||||
|
|
||||||
|
% Needed for telling RTF where margin paragraph should go
|
||||||
|
% in mirrored margins mode.
|
||||||
|
\newcommand{\marginpareven}[1]{\hspace*{0pt}\marginpar{#1}}
|
||||||
|
\newcommand{\marginparodd}[1]{\hspace*{0pt}\marginpar{#1}}
|
||||||
|
|
||||||
|
% Environment for two-column table popular in WinHelp and manuals.
|
||||||
|
\newcommand{\twocolwidtha}[1]{\def\twocolwidthaval{#1}}
|
||||||
|
\newcommand{\twocolwidthb}[1]{\def\twocolwidthbval{#1}}
|
||||||
|
\newcommand{\twocolspacing}[1]{\def\twocolspacingval{#1}}
|
||||||
|
|
||||||
|
\twocolwidtha{3cm}
|
||||||
|
\twocolwidthb{8.5cm}
|
||||||
|
\twocolspacing{2}
|
||||||
|
|
||||||
|
\newcommand{\twocolitem}[2]{#1 & #2\\}
|
||||||
|
\newcommand{\twocolitemruled}[2]{#1 & #2\\\hline}
|
||||||
|
|
||||||
|
\newenvironment{twocollist}{\renewcommand{\arraystretch}{\twocolspacingval}\begin{tabular}{lp{\twocolwidthbval}}}%
|
||||||
|
{\end{tabular}\renewcommand{\arraystretch}{1}}
|
||||||
|
|
||||||
|
% Specifying table rows for RTF compatibility
|
||||||
|
\newcommand{\row}[1]{#1\\}
|
||||||
|
|
||||||
|
% Use for the last ruled row for correct RTF generation.
|
||||||
|
\newcommand{\ruledrow}[1]{#1\\\hline}
|
||||||
|
|
||||||
|
% Indentation environment. Arg1 is left margin size
|
||||||
|
\newenvironment{indented}[1]{\begin{list}{}{\leftmargin=#1}\item[]}%
|
||||||
|
{\end{list}}
|
||||||
|
|
||||||
|
% Framed box of text, normal formatting.
|
||||||
|
\newcommand{\normalbox}[1]{\fbox{\vbox{#1}}}
|
||||||
|
% Double-framed box of text.
|
||||||
|
\newcommand{\normalboxd}[1]{\fbox{\fbox{\vbox{#1}}}}
|
||||||
|
|
||||||
|
% WITHDRAWN -- can't do in RTF, easily.
|
||||||
|
% Framed box of text, horizontally centred. Ragged right within box.
|
||||||
|
% \newcommand{\centeredbox}[2]{\begin{center}\fbox{\parbox{#1}{\raggedright#2}}\end{center}}
|
||||||
|
% Double-framed box of text, horizontally centred. Ragged right within box.
|
||||||
|
% \newcommand{\centeredboxd}[2]{\begin{center}\fbox{\fbox{\parbox{#1}{\raggedright#2}}}\end{center}}
|
||||||
|
|
||||||
|
% toocomplex environment: simply prints the argument in LaTeX,
|
||||||
|
% comes out verbatim in all generated formats.
|
||||||
|
\newenvironment{toocomplex}{}{}
|
||||||
|
|
||||||
|
% Colour: dummy commands since LaTeX doesn't support colour.
|
||||||
|
% \definecolour{name}{red}{blue}{green}
|
||||||
|
% \fcol{name}{text} ; Foreground
|
||||||
|
% \bcol{name}{text} ; Background
|
||||||
|
\newcommand{\definecolour}[4]{}
|
||||||
|
\newcommand{\definecolor}[4]{}
|
||||||
|
\newcommand{\fcol}[2]{#2}
|
||||||
|
\newcommand{\bcol}[2]{#2}
|
||||||
|
\newcommand{\sethotspotcolour}[1]{}
|
||||||
|
\newcommand{\sethotspotunderline}[1]{}
|
||||||
|
\newcommand{\settransparency}[1]{}
|
||||||
|
\newcommand{\backslashraw}[0]{}
|
||||||
|
\newcommand{\lbraceraw}[0]{}
|
||||||
|
\newcommand{\rbraceraw}[0]{}
|
||||||
|
\newcommand{\registered}[0]{(r)}
|
||||||
|
\newcommand{\background}[1]{}
|
||||||
|
\newcommand{\textcolour}[1]{}
|
||||||
|
\newcommand{\overview}[2]{See \helpref{#1}{#2}.}
|
||||||
|
\newcommand{\docparam}[2]{{\it #1}\begin{list}{}{\leftmargin=1cm}\item[]
|
||||||
|
#2%
|
||||||
|
\end{list}}
|
||||||
|
\newcommand{\wxheading}[1]{{\bf #1}}
|
||||||
|
\newcommand{\const}[0]{{\bf const}}
|
||||||
|
\newcommand{\constfunc}[3]{{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}}
|
||||||
|
\newcommand{\windowstyle}[1]{{\bf #1}\index{#1}}
|
||||||
|
|
||||||
|
\addtolength{\textwidth}{1in}
|
||||||
|
\addtolength{\oddsidemargin}{-0.5in}
|
||||||
|
\addtolength{\topmargin}{-0.5in}
|
||||||
|
\addtolength{\textheight}{1in}
|
||||||
|
\sloppy
|
||||||
|
|
10
contrib/docs/latex/mmedia/topics.tex
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
\chapter{Topic overviews}\label{overviews}
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
The following sections describe particular topics.
|
||||||
|
|
||||||
|
\section{MMedia extension overview}\label{mmedoverview}
|
||||||
|
|
||||||
|
To be written.
|
||||||
|
|
BIN
contrib/docs/latex/mmedia/up.gif
Normal file
After Width: | Height: | Size: 137 B |
173
contrib/docs/latex/mmedia/vidbase.tex
Normal file
@@ -0,0 +1,173 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/vidbase.h at 26/Feb/00 14:51:56
|
||||||
|
%
|
||||||
|
|
||||||
|
\section{\class{wxVideoBaseDriver}}\label{wxvideobasedriver}
|
||||||
|
|
||||||
|
Classes definition
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
wxObject
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef enum {
|
||||||
|
wxVIDEO\_MSAVI,
|
||||||
|
wxVIDEO\_MPEG,
|
||||||
|
wxVIDEO\_QT,
|
||||||
|
wxVIDEO\_GIF,
|
||||||
|
wxVIDEO\_JMOV,
|
||||||
|
wxVIDEO\_FLI,
|
||||||
|
wxVIDEO\_IFF,
|
||||||
|
wxVIDEO\_SGI,
|
||||||
|
wxVIDEO\_MPEG2
|
||||||
|
} wxVideoType
|
||||||
|
\end{verbatim}}
|
||||||
|
|
||||||
|
wxMMedia2 (video) types
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::wxVideoBaseDriver}\label{wxvideobasedriverwxvideobasedriver}
|
||||||
|
|
||||||
|
\func{}{wxVideoBaseDriver}{\void}
|
||||||
|
|
||||||
|
Ctors
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::wxVideoBaseDriver}\label{wxvideobasedriverwxvideobasedriver}
|
||||||
|
|
||||||
|
\func{}{wxVideoBaseDriver}{\param{wxInputStream\& }{str}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::wxVideoBaseDriver}\label{wxvideobasedriverwxvideobasedriver}
|
||||||
|
|
||||||
|
\func{}{wxVideoBaseDriver}{\param{const wxString\& }{filename}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::\destruct{wxVideoBaseDriver}}\label{wxvideobasedriverdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxVideoBaseDriver}}{\void}
|
||||||
|
|
||||||
|
Dtor
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::Play}\label{wxvideobasedriverplay}
|
||||||
|
|
||||||
|
\func{bool}{Play}{\void}
|
||||||
|
|
||||||
|
Usual functions ... They all return FALSE in case of errors.
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::Stop}\label{wxvideobasedriverstop}
|
||||||
|
|
||||||
|
\func{bool}{Stop}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::Pause}\label{wxvideobasedriverpause}
|
||||||
|
|
||||||
|
\func{bool}{Pause}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::Resume}\label{wxvideobasedriverresume}
|
||||||
|
|
||||||
|
\func{bool}{Resume}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::SetSize}\label{wxvideobasedriversetsize}
|
||||||
|
|
||||||
|
\func{bool}{SetSize}{\param{wxSize }{size}}
|
||||||
|
|
||||||
|
Size management
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::GetSize}\label{wxvideobasedrivergetsize}
|
||||||
|
|
||||||
|
\constfunc{bool}{GetSize}{\param{wxSize\& }{size}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::IsCapable}\label{wxvideobasedriveriscapable}
|
||||||
|
|
||||||
|
\constfunc{bool}{IsCapable}{\param{wxVideoType }{WXUNUSED(v\_type)}}
|
||||||
|
|
||||||
|
Test the capability of the driver to handle the specified type
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::GetMovieCodec}\label{wxvideobasedrivergetmoviecodec}
|
||||||
|
|
||||||
|
\constfunc{wxString}{GetMovieCodec}{\void}
|
||||||
|
|
||||||
|
Return the video codec name
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::GetAudioCodec}\label{wxvideobasedrivergetaudiocodec}
|
||||||
|
|
||||||
|
\constfunc{wxString}{GetAudioCodec}{\void}
|
||||||
|
|
||||||
|
Return the audio codec name
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::GetSampleRate}\label{wxvideobasedrivergetsamplerate}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetSampleRate}{\void}
|
||||||
|
|
||||||
|
Return misc info about audio
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::GetChannels}\label{wxvideobasedrivergetchannels}
|
||||||
|
|
||||||
|
\constfunc{wxUint8}{GetChannels}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::GetBPS}\label{wxvideobasedrivergetbps}
|
||||||
|
|
||||||
|
\constfunc{wxUint8}{GetBPS}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::GetFrameRate}\label{wxvideobasedrivergetframerate}
|
||||||
|
|
||||||
|
\constfunc{double}{GetFrameRate}{\void}
|
||||||
|
|
||||||
|
Return frame rate
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::GetNbFrames}\label{wxvideobasedrivergetnbframes}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetNbFrames}{\void}
|
||||||
|
|
||||||
|
Return number of frames
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::OnFinished}\label{wxvideobasedriveronfinished}
|
||||||
|
|
||||||
|
\func{void}{OnFinished}{\void}
|
||||||
|
|
||||||
|
Called when the movie finished
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::AttachOutput}\label{wxvideobasedriverattachoutput}
|
||||||
|
|
||||||
|
\func{bool}{AttachOutput}{\param{wxWindow\& }{output}}
|
||||||
|
|
||||||
|
Attaches the video output to a window. The video will be shown in that window.
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::DetachOutput}\label{wxvideobasedriverdetachoutput}
|
||||||
|
|
||||||
|
\func{void}{DetachOutput}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::IsPaused}\label{wxvideobasedriverispaused}
|
||||||
|
|
||||||
|
\constfunc{bool}{IsPaused}{\void}
|
||||||
|
|
||||||
|
They return the state of the movie.
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoBaseDriver::IsStopped}\label{wxvideobasedriverisstopped}
|
||||||
|
|
||||||
|
\constfunc{bool}{IsStopped}{\void}
|
||||||
|
|
148
contrib/docs/latex/mmedia/vidwin.tex
Normal file
@@ -0,0 +1,148 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/vidwin.h at 26/Feb/00 14:52:03
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxVideoWindows}}\label{wxvideowindows}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Class definition
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxVideoBaseDriver}{wxvideobasedriver}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef struct VIDW\_Internal {
|
||||||
|
MCIDEVICEID m\_dev\_id
|
||||||
|
};
|
||||||
|
\end{verbatim}}
|
||||||
|
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::OpenFile}\label{wxvideowindowsopenfile}
|
||||||
|
|
||||||
|
\func{void}{OpenFile}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::wxVideoWindows}\label{wxvideowindowswxvideowindows}
|
||||||
|
|
||||||
|
\func{}{wxVideoWindows}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::wxVideoWindows}\label{wxvideowindowswxvideowindows}
|
||||||
|
|
||||||
|
\func{}{wxVideoWindows}{\param{wxInputStream\& }{str}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::wxVideoWindows}\label{wxvideowindowswxvideowindows}
|
||||||
|
|
||||||
|
\func{}{wxVideoWindows}{\param{const wxString\& }{fname}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::\destruct{wxVideoWindows}}\label{wxvideowindowsdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxVideoWindows}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::Play}\label{wxvideowindowsplay}
|
||||||
|
|
||||||
|
\func{bool}{Play}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::Stop}\label{wxvideowindowsstop}
|
||||||
|
|
||||||
|
\func{bool}{Stop}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::Pause}\label{wxvideowindowspause}
|
||||||
|
|
||||||
|
\func{bool}{Pause}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::Resume}\label{wxvideowindowsresume}
|
||||||
|
|
||||||
|
\func{bool}{Resume}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::GetSize}\label{wxvideowindowsgetsize}
|
||||||
|
|
||||||
|
\constfunc{bool}{GetSize}{\param{wxSize\& }{size}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::SetSize}\label{wxvideowindowssetsize}
|
||||||
|
|
||||||
|
\func{bool}{SetSize}{\param{wxSize }{size}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::GetMovieCodec}\label{wxvideowindowsgetmoviecodec}
|
||||||
|
|
||||||
|
\constfunc{wxString}{GetMovieCodec}{\void}
|
||||||
|
|
||||||
|
Return codec name for each stream.
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::GetAudioCodec}\label{wxvideowindowsgetaudiocodec}
|
||||||
|
|
||||||
|
\constfunc{wxString}{GetAudioCodec}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::GetSampleRate}\label{wxvideowindowsgetsamplerate}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetSampleRate}{\void}
|
||||||
|
|
||||||
|
Return misc. info about audio
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::GetChannels}\label{wxvideowindowsgetchannels}
|
||||||
|
|
||||||
|
\constfunc{wxUint8}{GetChannels}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::GetBPS}\label{wxvideowindowsgetbps}
|
||||||
|
|
||||||
|
\constfunc{wxUint8}{GetBPS}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::GetFrameRate}\label{wxvideowindowsgetframerate}
|
||||||
|
|
||||||
|
\constfunc{double}{GetFrameRate}{\void}
|
||||||
|
|
||||||
|
Return the frame rate of the video (in frames/second)
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::GetNbFrames}\label{wxvideowindowsgetnbframes}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetNbFrames}{\void}
|
||||||
|
|
||||||
|
Return the total number of frames in the movie
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::IsCapable}\label{wxvideowindowsiscapable}
|
||||||
|
|
||||||
|
\func{bool}{IsCapable}{\param{wxVideoType }{v\_type}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::AttachOutput}\label{wxvideowindowsattachoutput}
|
||||||
|
|
||||||
|
\func{bool}{AttachOutput}{\param{wxWindow\& }{output}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::DetachOutput}\label{wxvideowindowsdetachoutput}
|
||||||
|
|
||||||
|
\func{void}{DetachOutput}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::IsPaused}\label{wxvideowindowsispaused}
|
||||||
|
|
||||||
|
\constfunc{bool}{IsPaused}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoWindows::IsStopped}\label{wxvideowindowsisstopped}
|
||||||
|
|
||||||
|
\constfunc{bool}{IsStopped}{\void}
|
||||||
|
|
170
contrib/docs/latex/mmedia/vidxanm.tex
Normal file
@@ -0,0 +1,170 @@
|
|||||||
|
%
|
||||||
|
% automatically generated by HelpGen from
|
||||||
|
% /home/guilhem/PROJECTS/wxWindows/utils/wxMMedia2/lib/vidxanm.h at 26/Feb/00 14:52:06
|
||||||
|
%
|
||||||
|
|
||||||
|
|
||||||
|
\section{\class{wxVideoXANIM}}\label{wxvideoxanim}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Class definition
|
||||||
|
|
||||||
|
\wxheading{Derived from}
|
||||||
|
|
||||||
|
\helpref{wxVideoBaseDriver}{wxvideobasedriver}
|
||||||
|
|
||||||
|
\wxheading{Data structures}
|
||||||
|
|
||||||
|
{\small \begin{verbatim}
|
||||||
|
typedef struct wxXANIMinternal {
|
||||||
|
Display *xanim\_dpy
|
||||||
|
\end{verbatim}}
|
||||||
|
\latexignore{\rtfignore{\wxheading{Members}}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::wxVideoXANIM}\label{wxvideoxanimwxvideoxanim}
|
||||||
|
|
||||||
|
\func{}{wxVideoXANIM}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::wxVideoXANIM}\label{wxvideoxanimwxvideoxanim}
|
||||||
|
|
||||||
|
\func{}{wxVideoXANIM}{\param{wxInputStream\& }{str}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::wxVideoXANIM}\label{wxvideoxanimwxvideoxanim}
|
||||||
|
|
||||||
|
\func{}{wxVideoXANIM}{\param{const wxString\& }{filename}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::\destruct{wxVideoXANIM}}\label{wxvideoxanimdtor}
|
||||||
|
|
||||||
|
\func{}{\destruct{wxVideoXANIM}}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::Play}\label{wxvideoxanimplay}
|
||||||
|
|
||||||
|
\func{bool}{Play}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::Pause}\label{wxvideoxanimpause}
|
||||||
|
|
||||||
|
\func{bool}{Pause}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::Resume}\label{wxvideoxanimresume}
|
||||||
|
|
||||||
|
\func{bool}{Resume}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::Stop}\label{wxvideoxanimstop}
|
||||||
|
|
||||||
|
\func{bool}{Stop}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::SetVolume}\label{wxvideoxanimsetvolume}
|
||||||
|
|
||||||
|
\func{bool}{SetVolume}{\param{wxUint8 }{vol}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::SetSize}\label{wxvideoxanimsetsize}
|
||||||
|
|
||||||
|
\func{bool}{SetSize}{\param{wxSize }{size}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::GetSize}\label{wxvideoxanimgetsize}
|
||||||
|
|
||||||
|
\constfunc{bool}{GetSize}{\param{wxSize\& }{size}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::GetMovieCodec}\label{wxvideoxanimgetmoviecodec}
|
||||||
|
|
||||||
|
\constfunc{wxString}{GetMovieCodec}{\void}
|
||||||
|
|
||||||
|
Return the video codec name
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::GetAudioCodec}\label{wxvideoxanimgetaudiocodec}
|
||||||
|
|
||||||
|
\constfunc{wxString}{GetAudioCodec}{\void}
|
||||||
|
|
||||||
|
Return the audio codec name
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::GetSampleRate}\label{wxvideoxanimgetsamplerate}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetSampleRate}{\void}
|
||||||
|
|
||||||
|
Return misc info about audio
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::GetChannels}\label{wxvideoxanimgetchannels}
|
||||||
|
|
||||||
|
\constfunc{wxUint8}{GetChannels}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::GetBPS}\label{wxvideoxanimgetbps}
|
||||||
|
|
||||||
|
\constfunc{wxUint8}{GetBPS}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::GetFrameRate}\label{wxvideoxanimgetframerate}
|
||||||
|
|
||||||
|
\constfunc{double}{GetFrameRate}{\void}
|
||||||
|
|
||||||
|
Return frame rate
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::GetNbFrames}\label{wxvideoxanimgetnbframes}
|
||||||
|
|
||||||
|
\constfunc{wxUint32}{GetNbFrames}{\void}
|
||||||
|
|
||||||
|
Return number of frames in the movie
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::IsCapable}\label{wxvideoxanimiscapable}
|
||||||
|
|
||||||
|
\constfunc{bool}{IsCapable}{\param{wxVideoType }{v\_type}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::AttachOutput}\label{wxvideoxanimattachoutput}
|
||||||
|
|
||||||
|
\func{bool}{AttachOutput}{\param{wxWindow\& }{output}}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::DetachOutput}\label{wxvideoxanimdetachoutput}
|
||||||
|
|
||||||
|
\func{void}{DetachOutput}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::IsPaused}\label{wxvideoxanimispaused}
|
||||||
|
|
||||||
|
\constfunc{bool}{IsPaused}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::IsStopped}\label{wxvideoxanimisstopped}
|
||||||
|
|
||||||
|
\constfunc{bool}{IsStopped}{\void}
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::RestartXANIM}\label{wxvideoxanimrestartxanim}
|
||||||
|
|
||||||
|
\func{bool}{RestartXANIM}{\void}
|
||||||
|
|
||||||
|
Start the subprocess with the right parameters
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::SendCommand}\label{wxvideoxanimsendcommand}
|
||||||
|
|
||||||
|
\func{bool}{SendCommand}{\param{const char* }{command}, \param{char** }{ret = NULL}, \param{wxUint32* }{size = NULL}}
|
||||||
|
|
||||||
|
Send a command to the subprocess
|
||||||
|
|
||||||
|
|
||||||
|
\membersection{wxVideoXANIM::CollectInfo}\label{wxvideoxanimcollectinfo}
|
||||||
|
|
||||||
|
\func{bool}{CollectInfo}{\void}
|
||||||
|
|
||||||
|
Collect informations from XAnim
|
||||||
|
|
BIN
contrib/docs/latex/ogl/back.gif
Normal file
After Width: | Height: | Size: 978 B |
BIN
contrib/docs/latex/ogl/books.bmp
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
contrib/docs/latex/ogl/books.gif
Normal file
After Width: | Height: | Size: 440 B |
11
contrib/docs/latex/ogl/bugs.tex
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
\chapter{Bugs}\label{bugs}%
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
These are the known bugs.
|
||||||
|
|
||||||
|
\begin{itemize}\itemsep=0pt
|
||||||
|
\item In the OGLEdit sample, .dia files are output double-spaced
|
||||||
|
due to an unidentified bug in the way a stream is converted to a file.
|
||||||
|
\end{itemize}
|
||||||
|
|
BIN
contrib/docs/latex/ogl/bullet.bmp
Normal file
After Width: | Height: | Size: 138 B |
19
contrib/docs/latex/ogl/changes.tex
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
\chapter{Change log}
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
Version 3.0, September 8th 1998
|
||||||
|
|
||||||
|
\begin{itemize}\itemsep=0pt
|
||||||
|
\item Version for wxWindows 2.0.
|
||||||
|
\item Various enhancements especially to wxDrawnShape
|
||||||
|
(multiple metafiles, for different orientations).
|
||||||
|
\item More ability to override functions e.g. OnSizeDragLeft, so events can be
|
||||||
|
intercepted for Do/Undo.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
Version 2.0, June 1st 1996
|
||||||
|
|
||||||
|
\begin{itemize}\itemsep=0pt
|
||||||
|
\item First publicly released version.
|
||||||
|
\end{itemize}
|
2861
contrib/docs/latex/ogl/classes.tex
Normal file
BIN
contrib/docs/latex/ogl/contents.gif
Normal file
After Width: | Height: | Size: 996 B |
BIN
contrib/docs/latex/ogl/forward.gif
Normal file
After Width: | Height: | Size: 959 B |
47
contrib/docs/latex/ogl/intro.tex
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
\chapter{Introduction}
|
||||||
|
\pagenumbering{arabic}%
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
Object Graphics Library (\ogl) is a C++ library supporting the creation and
|
||||||
|
manipulation of simple and complex graphic images on a canvas.
|
||||||
|
|
||||||
|
It can be found in the directory {\tt utils/ogl/src} in the
|
||||||
|
wxWindows distribution. The file {\tt ogl.h} must be included to make use
|
||||||
|
of the library.
|
||||||
|
|
||||||
|
Please see \helpref{OGL overview}{ogloverview} for a general description how the object library works. For details,
|
||||||
|
please see the \helpref{class reference}{classref}.
|
||||||
|
|
||||||
|
\section{File structure}
|
||||||
|
|
||||||
|
These are the files that comprise the \ogl\ library.
|
||||||
|
|
||||||
|
\begin{description}\itemsep=0pt
|
||||||
|
\item[basic.h] Header for basic objects such as wxShape and wxRectangleShape.
|
||||||
|
\item[basic.cpp] Basic objects implementation (1).
|
||||||
|
\item[basic2.cpp] Basic objects implementation (2).
|
||||||
|
\item[bmpshape.h] wxBitmapShape class header.
|
||||||
|
\item[bmpshape.cpp] wxBitmapShape implementation.
|
||||||
|
\item[canvas.h] wxShapeCanvas class header.
|
||||||
|
\item[canvas.cpp] wxShapeCanvas class implementation.
|
||||||
|
\item[composit.h] Composite object class header.
|
||||||
|
\item[composit.cpp] Composite object class implementation.
|
||||||
|
\item[constrnt.h] Constraint classes header.
|
||||||
|
\item[constrnt.cpp] Constraint classes implementation.
|
||||||
|
\item[divided.h] Divided object class header.
|
||||||
|
\item[divided.cpp] Divided object class implementation.
|
||||||
|
\item[drawn.h] Drawn (metafile) object class header.
|
||||||
|
\item[drawn.cpp] Drawn (metafile) object class implementation.
|
||||||
|
\item[graphics.h] Main include file.
|
||||||
|
\item[lines.h] wxLineShape class header.
|
||||||
|
\item[lines.cpp] wxLineShape class implementation.
|
||||||
|
\item[misc.h] Miscellaneous graphics functions header.
|
||||||
|
\item[misc.cpp] Miscellaneous graphics functions implementation.
|
||||||
|
\item[ogldiag.h] wxDiagram class header.
|
||||||
|
\item[ogldiag.cpp] wxDiagram implementation.
|
||||||
|
\item[mfutils.h] Metafile utilities header.
|
||||||
|
\item[mfutils.cpp] Metafile utilities implementation.
|
||||||
|
\end{description}
|
||||||
|
|
||||||
|
|
17
contrib/docs/latex/ogl/ogl.hpj
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
[OPTIONS]
|
||||||
|
BMROOT=d:\wx2\wxwind~1\contrib\docs\latex\ogl ; Assume that bitmaps are where the source is
|
||||||
|
TITLE=OGL Manual
|
||||||
|
CONTENTS=Contents
|
||||||
|
COMPRESS=HIGH
|
||||||
|
|
||||||
|
[FILES]
|
||||||
|
ogl.rtf
|
||||||
|
|
||||||
|
[CONFIG]
|
||||||
|
CreateButton("Up", "&Up", "JumpId(`ogl.hlp', `Contents')")
|
||||||
|
BrowseButtons()
|
||||||
|
|
||||||
|
[MAP]
|
||||||
|
|
||||||
|
[BITMAPS]
|
||||||
|
|
46
contrib/docs/latex/ogl/ogl.tex
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
\documentstyle[a4,makeidx,verbatim,texhelp,fancyhea,mysober,mytitle]{report}
|
||||||
|
\newcommand{\ogl}[0]{{OGL}}%
|
||||||
|
\definecolour{black}{0}{0}{0}%
|
||||||
|
\definecolour{cyan}{0}{255}{255}%
|
||||||
|
\definecolour{green}{0}{255}{0}%
|
||||||
|
\definecolour{magenta}{255}{0}{255}%
|
||||||
|
\definecolour{red}{255}{0}{0}%
|
||||||
|
\definecolour{blue}{0}{0}{200}%
|
||||||
|
\definecolour{yellow}{255}{255}{0}%
|
||||||
|
\definecolour{white}{255}{255}{255}%
|
||||||
|
\input psbox.tex
|
||||||
|
\parindent 0pt
|
||||||
|
\parskip 11pt
|
||||||
|
\title{Object Graphics Library 3.0}
|
||||||
|
\author{Julian Smart}
|
||||||
|
\date{September 1998}
|
||||||
|
|
||||||
|
\makeindex
|
||||||
|
\begin{document}
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\pagestyle{fancyplain}
|
||||||
|
\bibliographystyle{plain}
|
||||||
|
\pagenumbering{roman}
|
||||||
|
\setheader{{\it CONTENTS}}{}{}{}{}{{\it CONTENTS}}
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
\tableofcontents%
|
||||||
|
|
||||||
|
\input{intro.tex}
|
||||||
|
%
|
||||||
|
\input{sample.tex}
|
||||||
|
%
|
||||||
|
\input{classes.tex}
|
||||||
|
%
|
||||||
|
\input{topics.tex}
|
||||||
|
%
|
||||||
|
\input{bugs.tex}
|
||||||
|
%
|
||||||
|
\input{changes.tex}
|
||||||
|
|
||||||
|
%
|
||||||
|
\addcontentsline{toc}{chapter}{Index}
|
||||||
|
\setheader{{\it INDEX}}{}{}{}{}{{\it INDEX}}
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}%
|
||||||
|
\printindex
|
||||||
|
\end{document}
|
BIN
contrib/docs/latex/ogl/ogledit.bmp
Normal file
After Width: | Height: | Size: 86 KiB |
BIN
contrib/docs/latex/ogl/ogledit.gif
Normal file
After Width: | Height: | Size: 7.0 KiB |
87
contrib/docs/latex/ogl/sample.tex
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
\chapter{OGLEdit: a sample OGL application}\label{ogledit}%
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
OGLEdit is a sample OGL application that allows the user to draw, edit,
|
||||||
|
save and load a few shapes. It should clarify aspects of OGL usage, and
|
||||||
|
can act as a template for similar applications. OGLEdit can be found in\rtfsp
|
||||||
|
{\tt samples/ogledit} in the OGL distribution.
|
||||||
|
|
||||||
|
$$\image{10cm;0cm}{ogledit.eps}$$\par
|
||||||
|
|
||||||
|
The wxWindows document/view model has been used in OGL, to reduce the amount of
|
||||||
|
housekeeping logic required to get it up and running. OGLEdit also provides
|
||||||
|
a demonstration of the Undo/Redo capability supported by the document/view classes,
|
||||||
|
and how a typical application might implement this feature.
|
||||||
|
|
||||||
|
\section{OGLEdit files}
|
||||||
|
|
||||||
|
OGLEdit comprises the following source files.
|
||||||
|
|
||||||
|
\begin{itemize}\itemsep=0pt
|
||||||
|
\item doc.h, doc.cpp: MyDiagram, DiagramDocument, DiagramCommand, MyEvtHandler
|
||||||
|
classes related to diagram functionality and documents.
|
||||||
|
\item view.h, view.cpp: MyCanvas, DiagramView classes related to visualisation of
|
||||||
|
the diagram.
|
||||||
|
\item ogledit.h, ogledit.cpp: MyFrame, MyApp classes related to the overall application.
|
||||||
|
\item palette.h, palette.cpp: EditorToolPalette implementing the shape palette.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\section{How OGLEdit works}
|
||||||
|
|
||||||
|
OGLEdit defines a DiagramDocument class, each of instance of which holds a MyDiagram
|
||||||
|
member which itself contains the shapes.
|
||||||
|
|
||||||
|
In order to implement specific mouse behaviour for shapes, a class MyEvtHandler is
|
||||||
|
defined which is `plugged into' each shape when it is created, instead of overriding each shape class
|
||||||
|
individually. This event handler class also holds a label string.
|
||||||
|
|
||||||
|
The DiagramCommand class is the key to implementing Undo/Redo. Each instance of DiagramCommand
|
||||||
|
stores enough information about an operation (create, delete, change colour etc.) to allow
|
||||||
|
it to carry out (or undo) its command. In DiagramView::OnMenuCommand, when the user initiates the
|
||||||
|
command, a new DiagramCommand instance is created which is then sent to the document's
|
||||||
|
command processor (see wxWindows manual for more information about doc/view and command
|
||||||
|
processing).
|
||||||
|
|
||||||
|
Apart from menu commands, another way commands are initiated is by the user left-clicking on
|
||||||
|
the canvas or right-dragging on a node. MyCanvas::OnLeftClick in view.cpp shows how
|
||||||
|
the appropriate wxClassInfo is passed to a DiagramCommand, to allow DiagramCommand::Do
|
||||||
|
to create a new shape given the wxClassInfo.
|
||||||
|
|
||||||
|
The MyEvtHandler right-drag methods in doc.cpp implement drawing a line between
|
||||||
|
two shapes, detecting where the right mouse button was released and looking for a second
|
||||||
|
shape. Again, a new DiagramCommand instance is created and passed to the command
|
||||||
|
processor to carry out the command.
|
||||||
|
|
||||||
|
DiagramCommand::Do and DiagramCommand::Undo embody much of the
|
||||||
|
interesting interaction with the OGL library. A complication of note
|
||||||
|
when implementing undo is the problem of deleting a node shape which has
|
||||||
|
one or more arcs attached to it. If you delete the node, the arc(s)
|
||||||
|
should be deleted too. But multiple arc deletion represents more information
|
||||||
|
that can be incorporated in the existing DiagramCommand scheme. OGLEdit
|
||||||
|
copes with this by treating each arc deletion as a separate command, and
|
||||||
|
sending Cut commands recursively, providing an undo path. Undoing such a
|
||||||
|
Cut will only undo one command at a time - not a one to one
|
||||||
|
correspondence with the original command - but it's a reasonable
|
||||||
|
compromise and preserves Do/Undo whilst keeping our DiagramCommand class
|
||||||
|
simple.
|
||||||
|
|
||||||
|
\section{Possible enhancements}
|
||||||
|
|
||||||
|
OGLEdit is very simplistic and does not employ the more advanced features
|
||||||
|
of OGL, such as:
|
||||||
|
|
||||||
|
\begin{itemize}\itemsep=0pt
|
||||||
|
\item attachment points (arcs are drawn to particular points on a shape)
|
||||||
|
\item metafile and bitmaps shapes
|
||||||
|
\item divided rectangles
|
||||||
|
\item composite shapes, and constraints
|
||||||
|
\item creating labels in shape regions
|
||||||
|
\item arc labels (OGL has support for three movable labels per arc)
|
||||||
|
\item spline and multiple-segment line arcs
|
||||||
|
\item adding annotations to node and arc shapes
|
||||||
|
\item line-straightening (supported by OGL) and alignment (not supported directly by OGL)
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
These could be added to OGLEdit, at the risk of making it a less
|
||||||
|
useful example for beginners.
|
35
contrib/docs/latex/ogl/tex2rtf.ini
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
; Last change: JAC 13 Oct 100 5:11 pm
|
||||||
|
runTwice = yes
|
||||||
|
titleFontSize = 12
|
||||||
|
authorFontSize = 10
|
||||||
|
chapterFontSize = 12
|
||||||
|
sectionFontSize = 12
|
||||||
|
subsectionFontSize = 12
|
||||||
|
headerRule = yes
|
||||||
|
footerRule = yes
|
||||||
|
useHeadingStyles = yes
|
||||||
|
listItemIndent=40
|
||||||
|
generateHPJ = no
|
||||||
|
htmlBrowseButtons = bitmap
|
||||||
|
winHelpVersion = 3
|
||||||
|
winHelpContents = yes
|
||||||
|
winHelpTitle = "OGL Manual"
|
||||||
|
truncateFilenames = yes
|
||||||
|
combineSubSections = yes
|
||||||
|
\overview [2] {\rtfonly{See also }\settransparency{on}\sethotspotcolour{off}\sethotspotunderline{on}\winhelponly{\image{}{books.bmp}\settransparency{off}}
|
||||||
|
\htmlonly{\image{}{books.gif}}\helpref{#1}{#2}
|
||||||
|
\sethotspotcolour{on}\sethotspotunderline{on}}
|
||||||
|
\docparam [2]{\parskip{0}{\it #1}\htmlignore{\par}\parskip{10}\indented{1cm}{#2}}
|
||||||
|
\wxheading [1]{{\bf \htmlignore{\fcol{blue}{#1}}\htmlonly{\fcol{red}{#1}}}}
|
||||||
|
\const [0] {{\bf const}}
|
||||||
|
\constfunc [3] {{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}}
|
||||||
|
\windowstyle [1] {{\bf #1}\index{#1}}
|
||||||
|
|
||||||
|
;;
|
||||||
|
;; These two are for generating MS HTML Help project, contents and index files.
|
||||||
|
;;
|
||||||
|
htmlWorkshopFiles = true
|
||||||
|
htmlIndex = true
|
||||||
|
\pythonnote [1] {{\bf \fcol{blue}{wxPython note:}} #1}
|
||||||
|
%\pythonnote [1] {}
|
||||||
|
|
298
contrib/docs/latex/ogl/texhelp.sty
Normal file
@@ -0,0 +1,298 @@
|
|||||||
|
% LaTeX style file
|
||||||
|
% Name: texhelp.sty
|
||||||
|
% Author: Julian Smart
|
||||||
|
%
|
||||||
|
% Purpose
|
||||||
|
% -------
|
||||||
|
% Style file to enable the simultaneous preparation of printed LaTeX and on-line
|
||||||
|
% hypertext manuals.
|
||||||
|
% Use in conjunction with Tex2RTF (see Tex2RTF documentation).
|
||||||
|
%
|
||||||
|
% Note that if a non-ASCII character starts a newline and there should be a space
|
||||||
|
% between the last word on the previous line and the first word on this line,
|
||||||
|
% you need to use \rtfsp to generate a space in Windows Help. \rtfsp is ignored
|
||||||
|
% in all other formats.
|
||||||
|
%
|
||||||
|
% Julian Smart
|
||||||
|
% Artificial Intelligence Applications Institute
|
||||||
|
%
|
||||||
|
%
|
||||||
|
% ============== C++/CLIPS Documentation Facilities ==============
|
||||||
|
%
|
||||||
|
% Each class definition should be typeset with e.g.
|
||||||
|
%
|
||||||
|
% \section{\class{Name}: Parent}
|
||||||
|
%
|
||||||
|
% followed by a description of the class.
|
||||||
|
% Each member should follow:
|
||||||
|
%
|
||||||
|
% \membersection{wxName::Member}
|
||||||
|
%
|
||||||
|
% with a description of what this member does.
|
||||||
|
% Then, one (or more if overloaded) member (function) in detail:
|
||||||
|
%
|
||||||
|
% \func{return type}{name}{args}
|
||||||
|
% or
|
||||||
|
% \member{type}{name}
|
||||||
|
%
|
||||||
|
% where args is a list of \param{type}{name}, ...
|
||||||
|
|
||||||
|
% Function, e.g.
|
||||||
|
% e.g. to typeset
|
||||||
|
%
|
||||||
|
% void DoIt(char *string);
|
||||||
|
%
|
||||||
|
% write:
|
||||||
|
%
|
||||||
|
% \func{void}{DoIt}{\param{char *}{string}}
|
||||||
|
%
|
||||||
|
|
||||||
|
\newcommand{\func}[3]{\hangafter=1\noindent\hangindent=10mm
|
||||||
|
{{\it #1} {\bf #2}\index{#2}}(#3)}
|
||||||
|
|
||||||
|
% For function/type definition where the name is a pointer,
|
||||||
|
% e.g. to typeset
|
||||||
|
%
|
||||||
|
% typedef void (*wxFunction)(wxObject&)
|
||||||
|
%
|
||||||
|
% write:
|
||||||
|
%
|
||||||
|
% \pfunc{typedef void}{wxFunction}{param{wxObject&}}
|
||||||
|
|
||||||
|
\newcommand{\pfunc}[3]{\hangafter=1\noindent\hangindent=10mm
|
||||||
|
{{\it #1} ({\bf *#2})\index{#2}}(#3)}
|
||||||
|
|
||||||
|
% Use an ordinary \section command for class name definitions.
|
||||||
|
|
||||||
|
% This is used for a member, such as wxBitmap: GetDepth
|
||||||
|
\newcommand{\membersection}[1]{\subsection*{#1}\index{#1}}
|
||||||
|
|
||||||
|
% CLIPS function
|
||||||
|
\newcommand{\clipsfunc}[3]{\hangafter=1\noindent\hangindent=10mm
|
||||||
|
{{\bf #1} ({\bf #2}\index{#2}}#3)}
|
||||||
|
|
||||||
|
\newcommand{\clipssection}[1]{\chapter{#1}}
|
||||||
|
|
||||||
|
% This is used for a CLIPS function name
|
||||||
|
\newcommand{\functionsection}[1]{\subsection*{#1}}
|
||||||
|
|
||||||
|
% Member: a type and a name
|
||||||
|
\newcommand{\member}[2]{{\bf #1 \it #2}}
|
||||||
|
|
||||||
|
% C++ Parameter: a type and a name (no intervening space)
|
||||||
|
\newcommand{\param}[2]{{\it #1}{\bf #2}}
|
||||||
|
|
||||||
|
% CLIPS Parameter: a type and a name (one intervening space)
|
||||||
|
\newcommand{\cparam}[2]{{\bf #1} {\it #2}}
|
||||||
|
|
||||||
|
% Class: puts in index
|
||||||
|
\newcommand{\class}[1]{#1\index{#1}}
|
||||||
|
|
||||||
|
%\newcommand{\docparam}[2]{\parskip=0pt {\it #1}\par\parskip=10pt\begin{indented}{1cm}{#2}\end{indented}}
|
||||||
|
|
||||||
|
% Void type
|
||||||
|
\newcommand{\void}{{\it void}}
|
||||||
|
|
||||||
|
% Typeset destructor
|
||||||
|
\newcommand{\destruct}[1]{{$\sim$}#1}
|
||||||
|
|
||||||
|
% Typeset insert/extract operators
|
||||||
|
\newcommand{\cinsert}{$<<$}
|
||||||
|
\newcommand{\cextract}{$>>$}
|
||||||
|
|
||||||
|
|
||||||
|
% =================== Hypertext facilities ===================
|
||||||
|
%
|
||||||
|
% To insert hyperlinks (or references, in Latex), \label the sections
|
||||||
|
% or membersections \label{ref-label} immediately after the section, on the same line,
|
||||||
|
% and use \helpref{text-to-show}{ref-label} to make a reference.
|
||||||
|
%
|
||||||
|
|
||||||
|
% Type text with section reference
|
||||||
|
\newcommand{\helpref}[2]{{\it #1} (p.\ \pageref{#2}) }
|
||||||
|
|
||||||
|
% Type text with URL in verbatim mode
|
||||||
|
\newcommand{\urlref}[2]{#1 (\verb$#2$)}
|
||||||
|
|
||||||
|
% Don't typeset section number in LaTeX
|
||||||
|
\newcommand{\helprefn}[2]{{\it #1}}
|
||||||
|
|
||||||
|
% Like helpref, but popup text in WinHelp instead of hyperlinked
|
||||||
|
\newcommand{\popref}[2]{{\it #1}}
|
||||||
|
|
||||||
|
% Like footnote, but popup text.
|
||||||
|
\newcommand{\footnotepopup}[2]{{\it #1}\footnote{#2}}
|
||||||
|
|
||||||
|
% =================== On-line help specific macros ===================
|
||||||
|
%
|
||||||
|
|
||||||
|
% Global document font size/family, help only.
|
||||||
|
\newcommand{\helpfontsize}[1]{}
|
||||||
|
\newcommand{\helpfontfamily}[1]{}
|
||||||
|
|
||||||
|
% Ignore in all on-line help
|
||||||
|
\newcommand{\helpignore}[1]{#1}
|
||||||
|
% Only print in all on-line help
|
||||||
|
\newcommand{\helponly}[1]{}
|
||||||
|
|
||||||
|
% Ignore in LaTeX
|
||||||
|
\newcommand{\latexignore}[1]{}
|
||||||
|
% Only print in LaTeX
|
||||||
|
\newcommand{\latexonly}[1]{#1}
|
||||||
|
|
||||||
|
% Ignore in linear RTF
|
||||||
|
\newcommand{\rtfignore}[1]{#1}
|
||||||
|
% Only print in linear RTF
|
||||||
|
\newcommand{\rtfonly}[1]{}
|
||||||
|
|
||||||
|
% Ignore in WinHelp RTF
|
||||||
|
\newcommand{\winhelpignore}[1]{#1}
|
||||||
|
% Only print in WinHelp RTF
|
||||||
|
\newcommand{\winhelponly}[1]{}
|
||||||
|
|
||||||
|
% Ignore in wxHelp
|
||||||
|
\newcommand{\xlpignore}[1]{#1}
|
||||||
|
% Only print in wxHelp
|
||||||
|
\newcommand{\xlponly}[1]{}
|
||||||
|
|
||||||
|
% Ignore in HTML
|
||||||
|
\newcommand{\htmlignore}[1]{#1}
|
||||||
|
% Only print in HTML
|
||||||
|
\newcommand{\htmlonly}[1]{}
|
||||||
|
|
||||||
|
% Input a file only for help system (binder thickness is not a limitation
|
||||||
|
% in help systems!)
|
||||||
|
\newcommand{\helpinput}[1]{}
|
||||||
|
|
||||||
|
\newcommand{\rtfsp}{ } % Force a space in RTF, ignore in Latex
|
||||||
|
|
||||||
|
% =================== Miscellaneous macros ===================
|
||||||
|
%
|
||||||
|
% Headings consistent with generated ones
|
||||||
|
\newcommand{\myheading}[1]{\vspace*{25pt}
|
||||||
|
\begin{flushleft}
|
||||||
|
{\LARGE \bf #1}
|
||||||
|
\end{flushleft}
|
||||||
|
\vskip 20pt
|
||||||
|
}
|
||||||
|
|
||||||
|
% Heading with entry in contents page.
|
||||||
|
\newcommand{\chapterheading}[1]{\myheading{#1}
|
||||||
|
\addcontentsline{toc}{chapter}{#1}}
|
||||||
|
|
||||||
|
\newcommand{\sectionheading}[1]{\myheading{#1}
|
||||||
|
\addcontentsline{toc}{section}{#1}}
|
||||||
|
|
||||||
|
% Glossary environment
|
||||||
|
\newenvironment{helpglossary}{\newpage\chapterheading{Glossary}\begin{description}}{\end{description}}
|
||||||
|
|
||||||
|
% Glossary entry
|
||||||
|
\newcommand{\gloss}[1]{\item[#1]\index{#1}}
|
||||||
|
|
||||||
|
% Image: EPS in Latex, BMP or MF (whatever's available) in RTF. Requires psbox.
|
||||||
|
\newcommand{\image}[2]{\psboxto(#1){#2}}
|
||||||
|
|
||||||
|
% Image, left aligned (HTML)
|
||||||
|
\newcommand{\imager}[2]{\psboxto(#1){#2}}
|
||||||
|
|
||||||
|
% Image, right aligned (HTML)
|
||||||
|
\newcommand{\imagel}[2]{\psboxto(#1){#2}}
|
||||||
|
|
||||||
|
% Imagemap: principally for HTML only. In Latex,
|
||||||
|
% acts like \image.
|
||||||
|
\newcommand{\imagemap}[3]{\psboxto(#1){#2}}
|
||||||
|
|
||||||
|
% Headers and footers
|
||||||
|
% \setheader{EvenPageLeft}{EvenPageCentre}{EvenPageRight}
|
||||||
|
% {OddPageLeft}{OddPageCentre}{OddPageRight}
|
||||||
|
\newcommand{\setheader}[6]{
|
||||||
|
\lhead[\fancyplain{}{#1}]{\fancyplain{}{#4}}
|
||||||
|
\chead[\fancyplain{}{#2}]{\fancyplain{}{#5}}
|
||||||
|
\rhead[\fancyplain{}{#3}]{\fancyplain{}{#6}}
|
||||||
|
}
|
||||||
|
|
||||||
|
% \setfooter{EvenPageLeft}{EvenPageCentre}{EvenPageRight}
|
||||||
|
% {OddPageLeft}{OddPageCentre}{OddPageRight}
|
||||||
|
\newcommand{\setfooter}[6]{
|
||||||
|
\lfoot[\fancyplain{#1}{#1}]{\fancyplain{#4}{#4}}
|
||||||
|
\cfoot[\fancyplain{#2}{#2}]{\fancyplain{#5}{#5}}
|
||||||
|
\rfoot[\fancyplain{#3}{#3}]{\fancyplain{#6}{#6}}
|
||||||
|
}
|
||||||
|
|
||||||
|
% Needed for telling RTF where margin paragraph should go
|
||||||
|
% in mirrored margins mode.
|
||||||
|
\newcommand{\marginpareven}[1]{\hspace*{0pt}\marginpar{#1}}
|
||||||
|
\newcommand{\marginparodd}[1]{\hspace*{0pt}\marginpar{#1}}
|
||||||
|
|
||||||
|
% Environment for two-column table popular in WinHelp and manuals.
|
||||||
|
\newcommand{\twocolwidtha}[1]{\def\twocolwidthaval{#1}}
|
||||||
|
\newcommand{\twocolwidthb}[1]{\def\twocolwidthbval{#1}}
|
||||||
|
\newcommand{\twocolspacing}[1]{\def\twocolspacingval{#1}}
|
||||||
|
|
||||||
|
\twocolwidtha{3cm}
|
||||||
|
\twocolwidthb{8.5cm}
|
||||||
|
\twocolspacing{2}
|
||||||
|
|
||||||
|
\newcommand{\twocolitem}[2]{#1 & #2\\}
|
||||||
|
\newcommand{\twocolitemruled}[2]{#1 & #2\\\hline}
|
||||||
|
|
||||||
|
\newenvironment{twocollist}{\renewcommand{\arraystretch}{\twocolspacingval}\begin{tabular}{lp{\twocolwidthbval}}}%
|
||||||
|
{\end{tabular}\renewcommand{\arraystretch}{1}}
|
||||||
|
|
||||||
|
% Specifying table rows for RTF compatibility
|
||||||
|
\newcommand{\row}[1]{#1\\}
|
||||||
|
|
||||||
|
% Use for the last ruled row for correct RTF generation.
|
||||||
|
\newcommand{\ruledrow}[1]{#1\\\hline}
|
||||||
|
|
||||||
|
% Indentation environment. Arg1 is left margin size
|
||||||
|
\newenvironment{indented}[1]{\begin{list}{}{\leftmargin=#1}\item[]}%
|
||||||
|
{\end{list}}
|
||||||
|
|
||||||
|
% Framed box of text, normal formatting.
|
||||||
|
\newcommand{\normalbox}[1]{\fbox{\vbox{#1}}}
|
||||||
|
% Double-framed box of text.
|
||||||
|
\newcommand{\normalboxd}[1]{\fbox{\fbox{\vbox{#1}}}}
|
||||||
|
|
||||||
|
% WITHDRAWN -- can't do in RTF, easily.
|
||||||
|
% Framed box of text, horizontally centred. Ragged right within box.
|
||||||
|
% \newcommand{\centeredbox}[2]{\begin{center}\fbox{\parbox{#1}{\raggedright#2}}\end{center}}
|
||||||
|
% Double-framed box of text, horizontally centred. Ragged right within box.
|
||||||
|
% \newcommand{\centeredboxd}[2]{\begin{center}\fbox{\fbox{\parbox{#1}{\raggedright#2}}}\end{center}}
|
||||||
|
|
||||||
|
% toocomplex environment: simply prints the argument in LaTeX,
|
||||||
|
% comes out verbatim in all generated formats.
|
||||||
|
\newenvironment{toocomplex}{}{}
|
||||||
|
|
||||||
|
% Colour: dummy commands since LaTeX doesn't support colour.
|
||||||
|
% \definecolour{name}{red}{blue}{green}
|
||||||
|
% \fcol{name}{text} ; Foreground
|
||||||
|
% \bcol{name}{text} ; Background
|
||||||
|
\newcommand{\definecolour}[4]{}
|
||||||
|
\newcommand{\definecolor}[4]{}
|
||||||
|
\newcommand{\fcol}[2]{#2}
|
||||||
|
\newcommand{\bcol}[2]{#2}
|
||||||
|
\newcommand{\sethotspotcolour}[1]{}
|
||||||
|
\newcommand{\sethotspotunderline}[1]{}
|
||||||
|
\newcommand{\settransparency}[1]{}
|
||||||
|
\newcommand{\backslashraw}[0]{}
|
||||||
|
\newcommand{\lbraceraw}[0]{}
|
||||||
|
\newcommand{\rbraceraw}[0]{}
|
||||||
|
\newcommand{\registered}[0]{(r)}
|
||||||
|
\newcommand{\background}[1]{}
|
||||||
|
\newcommand{\textcolour}[1]{}
|
||||||
|
\newcommand{\overview}[2]{See \helpref{#1}{#2}.}
|
||||||
|
\newcommand{\docparam}[2]{{\it #1}\begin{list}{}{\leftmargin=1cm}\item[]
|
||||||
|
#2%
|
||||||
|
\end{list}}
|
||||||
|
\newcommand{\wxheading}[1]{{\bf #1}}
|
||||||
|
\newcommand{\const}[0]{{\bf const}}
|
||||||
|
\newcommand{\constfunc}[3]{{\bf #1} {\bf #2}(#3) {\bf const}\index{#2}}
|
||||||
|
\newcommand{\windowstyle}[1]{{\bf #1}\index{#1}}
|
||||||
|
|
||||||
|
\addtolength{\textwidth}{1in}
|
||||||
|
\addtolength{\oddsidemargin}{-0.5in}
|
||||||
|
\addtolength{\topmargin}{-0.5in}
|
||||||
|
\addtolength{\textheight}{1in}
|
||||||
|
\sloppy
|
||||||
|
|
161
contrib/docs/latex/ogl/topics.tex
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
\chapter{Topic overviews}
|
||||||
|
\setheader{{\it CHAPTER \thechapter}}{}{}{}{}{{\it CHAPTER \thechapter}}%
|
||||||
|
\setfooter{\thepage}{}{}{}{}{\thepage}
|
||||||
|
|
||||||
|
The following sections describe particular topics.
|
||||||
|
|
||||||
|
\section{OGL overview}\label{ogloverview}
|
||||||
|
|
||||||
|
\helpref{wxShapeCanvas}{wxshapecanvas}, derived from {\bf wxCanvas}, is the drawing area
|
||||||
|
for a number of \helpref{wxShape}{wxshape} instances. Everything drawn on a
|
||||||
|
wxShapeCanvas is derived from wxShape, which provides virtual
|
||||||
|
member functions for redrawing, creating and destroying
|
||||||
|
resize/selection `handles', movement and erasing behaviour, mouse
|
||||||
|
click behaviour, calculating the bounding box of the shape, linking
|
||||||
|
nodes with arcs, and so on.
|
||||||
|
|
||||||
|
The way a client application copes with `damage' to the canvas is to
|
||||||
|
erase (white out) anything should no longer be displayed, redraw the shape,
|
||||||
|
and then redraw everything on the canvas to repair any damage. If quick edit
|
||||||
|
mode is on for the canvas, the complete should be omitted by OGL and the
|
||||||
|
application.
|
||||||
|
|
||||||
|
Selection handles (called control points in the code) are implemented as
|
||||||
|
wxRectangleShapes.
|
||||||
|
|
||||||
|
Events are passed to shapes by the canvas in a high-level form, for example {\bf OnLeftClick},
|
||||||
|
{\bf OnBeginDragLeft}, {\bf OnDragLeft}, {\bf OnEndDragLeft}. The canvas decides
|
||||||
|
what is a click and what is a drag, whether it is on a shape or the canvas itself,
|
||||||
|
and (by interrogating the shape) which attachment point the click is associated with.
|
||||||
|
|
||||||
|
In order to provide event-handling flexibility, each shapes has an `event handler' associated with it,
|
||||||
|
which by default is the shape itself (all shapes derive from wxShapeEvtHandler).
|
||||||
|
An application can modify the event-handling behaviour simply by plugging a new
|
||||||
|
event handler into the shape. This can avoid the need for multiple inheritance when
|
||||||
|
new properties and behaviour are required for a number of different shape classes: instead
|
||||||
|
of overriding each class, one new event handler class can be defined and used for all
|
||||||
|
existing shape classes.
|
||||||
|
|
||||||
|
A range of shapes have been predefined in the library, including rectangles, ellipses,
|
||||||
|
polygons. A client application can derive from these shapes and/or derive entirely
|
||||||
|
new shapes from wxShape.
|
||||||
|
|
||||||
|
Instances of a class called \helpref{wxDiagram}{wxdiagram} organise collections of
|
||||||
|
shapes, providing default file input and output behaviour.
|
||||||
|
|
||||||
|
\section{wxDividedShape overview}\label{dividedshapeoverview}
|
||||||
|
|
||||||
|
Classes: \helpref{wxDividedShape}{wxdividedshape}
|
||||||
|
|
||||||
|
A wxDividedShape is a rectangle with a number of vertical divisions. Each
|
||||||
|
division may have its text formatted with independent characteristics, and
|
||||||
|
the size of each division relative to the whole image may be specified.
|
||||||
|
|
||||||
|
Once a wxDividedShape has been created, the user may move the divisions with the
|
||||||
|
mouse. By pressing Ctrl while right-clicking, the region attributes can be edited.
|
||||||
|
|
||||||
|
Here are examples of creating wxDividedShape objects:
|
||||||
|
|
||||||
|
{\small
|
||||||
|
\begin{verbatim}
|
||||||
|
/*
|
||||||
|
* Divided rectangle with 3 regions
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
wxDividedShape *dividedRect = new wxDividedShape(50, 60);
|
||||||
|
|
||||||
|
wxShapeRegion *region = new wxShapeRegion;
|
||||||
|
region->SetProportions(0.0, 0.25);
|
||||||
|
dividedRect->AddRegion(region);
|
||||||
|
|
||||||
|
region = new wxShapeRegion;
|
||||||
|
region->SetProportions(0.0, 0.5);
|
||||||
|
dividedRect->AddRegion(region);
|
||||||
|
|
||||||
|
region = new wxShapeRegion;
|
||||||
|
region->SetProportions(0.0, 0.25);
|
||||||
|
dividedRect->AddRegion(region);
|
||||||
|
|
||||||
|
dividedRect->SetSize(50, 60); // Allow it to calculate region sizes
|
||||||
|
dividedRect->SetPen(wxBLACK_PEN);
|
||||||
|
dividedRect->SetBrush(wxWHITE_BRUSH);
|
||||||
|
dividedRect->Show(TRUE);
|
||||||
|
dividedRect->NameRegions();
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Divided rectangle with 3 regions, rounded
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
wxDividedShape *dividedRect3 = new wxDividedShape(50, 60);
|
||||||
|
dividedRect3->SetCornerRadius(-0.4);
|
||||||
|
|
||||||
|
region = new wxShapeRegion;
|
||||||
|
region->SetProportions(0.0, 0.25);
|
||||||
|
dividedRect3->AddRegion(region);
|
||||||
|
|
||||||
|
region = new wxShapeRegion;
|
||||||
|
region->SetProportions(0.0, 0.5);
|
||||||
|
dividedRect3->AddRegion(region);
|
||||||
|
|
||||||
|
region = new wxShapeRegion;
|
||||||
|
region->SetProportions(0.0, 0.25);
|
||||||
|
dividedRect3->AddRegion(region);
|
||||||
|
|
||||||
|
dividedRect3->SetSize(50, 60); // Allow it to calculate region sizes
|
||||||
|
dividedRect3->SetPen(wxBLACK_PEN);
|
||||||
|
dividedRect3->SetBrush(wxWHITE_BRUSH);
|
||||||
|
dividedRect3->Show(TRUE);
|
||||||
|
dividedRect3->NameRegions();
|
||||||
|
\end{verbatim}
|
||||||
|
}
|
||||||
|
|
||||||
|
\section{wxCompositeShape overview}\label{compositeshapeoverview}
|
||||||
|
|
||||||
|
Classes: \helpref{wxCompositeShape}{wxcompositeshape}, \helpref{wxOGLConstraint}{wxoglconstraint}
|
||||||
|
|
||||||
|
The wxCompositeShape allows fairly complex shapes to be created, and maintains
|
||||||
|
a set of constraints which specify the layout and proportions of child shapes.
|
||||||
|
|
||||||
|
Add child shapes to a wxCompositeShape using \helpref{AddChild}{wxcompositeshapeaddchild}, and
|
||||||
|
add constraints using \helpref{AddConstraint}{wxcompositeshapeaddconstraint}.
|
||||||
|
|
||||||
|
After children and shapes have been added, call \helpref{Recompute}{wxcompositeshaperecompute} which
|
||||||
|
will return TRUE is the constraints could be satisfied, FALSE otherwise. If
|
||||||
|
constraints have been correctly and consistently specified, this call will succeed.
|
||||||
|
|
||||||
|
If there is more than one child, constraints must be specified: OGL cannot calculate
|
||||||
|
the size and position of children otherwise. Don't assume that children will simply
|
||||||
|
move relative to the parent without the use of constraints.
|
||||||
|
|
||||||
|
To specify a constraint, you need three things:
|
||||||
|
|
||||||
|
\begin{enumerate}\itemsep=0pt
|
||||||
|
\item a constraint type, such as gyCONSTRAINT\_CENTRED\_VERTICALLY;
|
||||||
|
\item a reference shape, with respect to which other shapes are going to be positioned - the\rtfsp
|
||||||
|
{\it constraining} shape;
|
||||||
|
\item a list of one or more shapes to be constrained: the {\it constrained} shapes.
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
The constraining shape can be either the parent of the constrained shapes, or a sibling. The
|
||||||
|
constrained shapes must all be siblings of each other.
|
||||||
|
|
||||||
|
For an exhaustive list and description of the available constraint types, see the \helpref{wxOGLConstraint constructor}{wxoglconstraintconstr}.
|
||||||
|
Note that most constraints operate in one dimension only (vertically or horizontally), so you will
|
||||||
|
usually need to specify constraints in pairs.
|
||||||
|
|
||||||
|
You can set the spacing between constraining and constrained shapes by
|
||||||
|
calling \helpref{wxOGLConstraint::SetSpacing}{wxoglconstraintsetspacing}.
|
||||||
|
|
||||||
|
Finally, a wxCompositeShape can have {\it divisions}, which are special child shapes of class
|
||||||
|
wxDivisionShape (not to be confused with wxDividedShape). The purpose of this is to allow
|
||||||
|
the composite to be divided into user-adjustable regions (divisions) into which other shapes
|
||||||
|
can be dropped dynamically, given suitable application code. Divisons allow the child
|
||||||
|
shapes to have an identity of their own - they can be manipulated independently of their container -
|
||||||
|
but to behave as if they are contained with the division, moving with the parent shape.
|
||||||
|
Divisions boundaries can themselves be moved using the mouse.
|
||||||
|
|
||||||
|
To create an initial division, call \helpref{wxCompositeShape::MakeContainer}{wxcompositeshapemakecontainer}.
|
||||||
|
Make further divisions by calling \helpref{wxDivisionShape::Divide}{wxdivisionshapedivide}.
|
||||||
|
|
BIN
contrib/docs/latex/ogl/up.gif
Normal file
After Width: | Height: | Size: 998 B |
335
contrib/include/wx/animate/animate.h
Normal file
@@ -0,0 +1,335 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: animate.h
|
||||||
|
// Purpose: Animation classes
|
||||||
|
// Author: Julian Smart and Guillermo Rodriguez Garcia
|
||||||
|
// Modified by:
|
||||||
|
// Created: 13/8/99
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Julian Smart and Guillermo Rodriguez Garcia
|
||||||
|
// Licence: wxWindows licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef _WX_ANIMATEH__
|
||||||
|
#define _WX_ANIMATEH__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "animate.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <wx/defs.h>
|
||||||
|
#include <wx/string.h>
|
||||||
|
#include <wx/gdicmn.h>
|
||||||
|
#include <wx/list.h>
|
||||||
|
#include <wx/timer.h>
|
||||||
|
|
||||||
|
//#define ANIMDLLEXPORT WXDLLEXPORT
|
||||||
|
#define ANIMDLLEXPORT
|
||||||
|
|
||||||
|
class ANIMDLLEXPORT wxAnimationBase;
|
||||||
|
class ANIMDLLEXPORT wxAnimationPlayer;
|
||||||
|
class WXDLLEXPORT wxImage;
|
||||||
|
|
||||||
|
enum wxAnimationDisposal
|
||||||
|
{
|
||||||
|
wxANIM_UNSPECIFIED = -1,
|
||||||
|
wxANIM_DONOTREMOVE = 0,
|
||||||
|
wxANIM_TOBACKGROUND = 1,
|
||||||
|
wxANIM_TOPREVIOUS = 2
|
||||||
|
} ;
|
||||||
|
|
||||||
|
class ANIMDLLEXPORT wxAnimationTimer: public wxTimer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxAnimationTimer() { m_player = (wxAnimationPlayer*) NULL; }
|
||||||
|
|
||||||
|
virtual void Notify();
|
||||||
|
void SetPlayer(wxAnimationPlayer* player) { m_player = player; }
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxAnimationPlayer* m_player;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* wxAnimationPlayer
|
||||||
|
* Create an object of this class, and either pass an wxXXXAnimation object in the constructor,
|
||||||
|
* or call SetAnimation. Then call Play().
|
||||||
|
* The wxAnimation object is only destroyed in the destructor if destroyAnimation is TRUE
|
||||||
|
* in the constructor.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class ANIMDLLEXPORT wxAnimationPlayer : public wxObject
|
||||||
|
{
|
||||||
|
DECLARE_CLASS(wxAnimationPlayer)
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxAnimationPlayer(wxAnimationBase *animation = (wxAnimationBase *) NULL, bool destroyAnimation = FALSE);
|
||||||
|
~wxAnimationPlayer();
|
||||||
|
//// Accessors
|
||||||
|
|
||||||
|
void SetAnimation(wxAnimationBase* animation, bool destroyAnimation = FALSE);
|
||||||
|
wxAnimationBase* GetAnimation() const { return m_animation; }
|
||||||
|
|
||||||
|
void SetDestroyAnimation(bool destroyAnimation) { m_destroyAnimation = destroyAnimation; };
|
||||||
|
bool GetDestroyAnimation() const { return m_destroyAnimation; }
|
||||||
|
|
||||||
|
void SetCurrentFrame(int currentFrame) { m_currentFrame = currentFrame; };
|
||||||
|
int GetCurrentFrame() const { return m_currentFrame; }
|
||||||
|
|
||||||
|
void SetWindow(wxWindow* window) { m_window = window; };
|
||||||
|
wxWindow* GetWindow() const { return m_window; }
|
||||||
|
|
||||||
|
void SetPosition(const wxPoint& pos) { m_position = pos; };
|
||||||
|
wxPoint GetPosition() const { return m_position; }
|
||||||
|
|
||||||
|
void SetLooped(bool looped) { m_looped = looped; };
|
||||||
|
bool GetLooped() const { return m_looped; }
|
||||||
|
|
||||||
|
bool HasAnimation() const { return (m_animation != (wxAnimationBase*) NULL); }
|
||||||
|
|
||||||
|
bool IsPlaying() const { return m_isPlaying; }
|
||||||
|
|
||||||
|
// Specify whether the GIF's background colour is to be shown,
|
||||||
|
// or whether the window background should show through (the default)
|
||||||
|
void UseBackgroundColour(bool useBackground) { m_useBackgroundColour = useBackground; }
|
||||||
|
bool UsingBackgroundColour() const { return m_useBackgroundColour; }
|
||||||
|
|
||||||
|
// Set and use a user-specified background colour (valid for transparent
|
||||||
|
// animations only)
|
||||||
|
void SetCustomBackgroundColour(const wxColour& col, bool useCustomBackgroundColour = TRUE)
|
||||||
|
{ m_customBackgroundColour = col; m_useCustomBackgroundColour = useCustomBackgroundColour; }
|
||||||
|
|
||||||
|
bool UsingCustomBackgroundColour() const { return m_useCustomBackgroundColour; }
|
||||||
|
const wxColour& GetCustomBackgroundColour() const { return m_customBackgroundColour; }
|
||||||
|
|
||||||
|
// Another refinement - suppose we're drawing the animation in a separate
|
||||||
|
// control or window. We may wish to use the background of the parent
|
||||||
|
// window as the background of our animation. This allows us to specify
|
||||||
|
// whether to grab from the parent or from this window.
|
||||||
|
void UseParentBackground(bool useParent) { m_useParentBackground = useParent; }
|
||||||
|
bool UsingParentBackground() const { return m_useParentBackground; }
|
||||||
|
|
||||||
|
//// Operations
|
||||||
|
|
||||||
|
// Play
|
||||||
|
virtual bool Play(wxWindow& window, const wxPoint& pos = wxPoint(0, 0), bool looped = TRUE);
|
||||||
|
|
||||||
|
// Build animation (list of wxImages). If not called before Play
|
||||||
|
// is called, Play will call this automatically.
|
||||||
|
virtual bool Build();
|
||||||
|
|
||||||
|
// Stop the animation
|
||||||
|
virtual void Stop();
|
||||||
|
|
||||||
|
// Draw the current view of the animation into this DC.
|
||||||
|
// Call this from your OnPaint, for example.
|
||||||
|
virtual void Draw(wxDC& dc);
|
||||||
|
|
||||||
|
//// Accessing the current animation
|
||||||
|
|
||||||
|
virtual int GetFrameCount() const;
|
||||||
|
virtual wxImage* GetFrame(int i) const; // Creates a new wxImage
|
||||||
|
virtual wxAnimationDisposal GetDisposalMethod(int i) const;
|
||||||
|
virtual wxRect GetFrameRect(int i) const; // Position and size of frame
|
||||||
|
virtual int GetDelay(int i) const; // Delay for this frame
|
||||||
|
|
||||||
|
virtual wxSize GetLogicalScreenSize() const;
|
||||||
|
virtual bool GetBackgroundColour(wxColour& col) const ;
|
||||||
|
virtual bool GetTransparentColour(wxColour& col) const ;
|
||||||
|
|
||||||
|
//// Implementation
|
||||||
|
|
||||||
|
// Play the frame
|
||||||
|
virtual bool PlayFrame(int frame, wxWindow& window, wxPoint& pos);
|
||||||
|
virtual bool PlayFrame();
|
||||||
|
virtual void DrawFrame(int frame, wxDC& dc, const wxPoint& pos);
|
||||||
|
virtual void DrawBackground(wxDC& dc, const wxPoint& pos, const wxColour& colour);
|
||||||
|
|
||||||
|
// Clear the wxImage cache
|
||||||
|
virtual void ClearCache();
|
||||||
|
|
||||||
|
// Save the pertinent area of the window so we can restore
|
||||||
|
// it if drawing transparently
|
||||||
|
void SaveBackground(const wxRect& rect);
|
||||||
|
|
||||||
|
wxBitmap& GetBackingStore() { return m_backingStore; }
|
||||||
|
|
||||||
|
//// Data members
|
||||||
|
protected:
|
||||||
|
wxAnimationBase* m_animation;
|
||||||
|
bool m_destroyAnimation; // Destroy m_animation on deletion of this object
|
||||||
|
wxList m_frames; // List of cached wxBitmap frames.
|
||||||
|
int m_currentFrame; // Current frame
|
||||||
|
wxWindow* m_window; // Window to draw into
|
||||||
|
wxPoint m_position; // Position to draw at
|
||||||
|
bool m_looped; // Looped, or not
|
||||||
|
wxAnimationTimer m_timer; // The timer
|
||||||
|
bool m_isPlaying; // Is the animation playing?
|
||||||
|
wxBitmap m_savedBackground; // Saved background of window portion
|
||||||
|
wxBitmap m_backingStore; // The player draws into this
|
||||||
|
bool m_useBackgroundColour; // Use colour or background
|
||||||
|
wxColour m_customBackgroundColour; // Override animation background
|
||||||
|
bool m_useCustomBackgroundColour;
|
||||||
|
bool m_useParentBackground; // Grab background from parent?
|
||||||
|
};
|
||||||
|
|
||||||
|
/* wxAnimationBase
|
||||||
|
* Base class for animations.
|
||||||
|
* A wxXXXAnimation only stores the animation, providing accessors to wxAnimationPlayer.
|
||||||
|
* Currently an animation is read-only, but we could extend the API for adding frames
|
||||||
|
* programmatically, and perhaps have a wxMemoryAnimation class that stores its frames
|
||||||
|
* in memory, and is able to save all files with suitable filenames. You could then use
|
||||||
|
* e.g. Ulead GIF Animator to load the image files into a GIF animation.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class ANIMDLLEXPORT wxAnimationBase : public wxObject
|
||||||
|
{
|
||||||
|
DECLARE_ABSTRACT_CLASS(wxAnimationBase)
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxAnimationBase() {};
|
||||||
|
~wxAnimationBase() {};
|
||||||
|
|
||||||
|
//// Accessors. Should be overridden by each derived class.
|
||||||
|
|
||||||
|
virtual int GetFrameCount() const = 0;
|
||||||
|
virtual wxImage* GetFrame(int i) const = 0; // Creates a new wxImage
|
||||||
|
virtual wxAnimationDisposal GetDisposalMethod(int i) const = 0;
|
||||||
|
virtual wxRect GetFrameRect(int i) const = 0; // Position and size of frame
|
||||||
|
virtual int GetDelay(int i) const = 0; // Delay for this frame
|
||||||
|
|
||||||
|
virtual wxSize GetLogicalScreenSize() const = 0;
|
||||||
|
virtual bool GetBackgroundColour(wxColour& col) const = 0;
|
||||||
|
virtual bool GetTransparentColour(wxColour& col) const = 0;
|
||||||
|
|
||||||
|
// Is the animation OK?
|
||||||
|
virtual bool IsValid() const = 0;
|
||||||
|
|
||||||
|
//// Operations
|
||||||
|
|
||||||
|
virtual bool LoadFile(const wxString& filename) { return FALSE; }
|
||||||
|
};
|
||||||
|
|
||||||
|
/* wxGIFAnimation
|
||||||
|
* This will be moved to a separate file in due course.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class ANIMDLLEXPORT wxGIFDecoder;
|
||||||
|
|
||||||
|
class ANIMDLLEXPORT wxGIFAnimation : public wxAnimationBase
|
||||||
|
{
|
||||||
|
DECLARE_CLASS(wxGIFAnimation)
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxGIFAnimation() ;
|
||||||
|
~wxGIFAnimation() ;
|
||||||
|
|
||||||
|
//// Accessors
|
||||||
|
|
||||||
|
virtual int GetFrameCount() const;
|
||||||
|
virtual wxImage* GetFrame(int i) const;
|
||||||
|
virtual wxAnimationDisposal GetDisposalMethod(int i) const;
|
||||||
|
virtual wxRect GetFrameRect(int i) const; // Position and size of frame
|
||||||
|
virtual int GetDelay(int i) const; // Delay for this frame
|
||||||
|
|
||||||
|
virtual wxSize GetLogicalScreenSize() const ;
|
||||||
|
virtual bool GetBackgroundColour(wxColour& col) const ;
|
||||||
|
virtual bool GetTransparentColour(wxColour& col) const ;
|
||||||
|
|
||||||
|
virtual bool IsValid() const;
|
||||||
|
|
||||||
|
//// Operations
|
||||||
|
|
||||||
|
virtual bool LoadFile(const wxString& filename);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
wxGIFDecoder* m_decoder;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* wxAnimationCtrlBase
|
||||||
|
* Abstract base class for format-specific animation controls.
|
||||||
|
* This class implements most of the functionality; all a derived
|
||||||
|
* class has to do is create the appropriate animation class on demand.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// Resize to animation size if this is set
|
||||||
|
#define wxAN_FIT_ANIMATION 0x0010
|
||||||
|
|
||||||
|
class ANIMDLLEXPORT wxAnimationCtrlBase: public wxControl
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxAnimationCtrlBase() { }
|
||||||
|
wxAnimationCtrlBase(wxWindow *parent, wxWindowID id,
|
||||||
|
const wxString& filename = wxEmptyString,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize, long style = wxAN_FIT_ANIMATION|wxNO_BORDER,
|
||||||
|
const wxString& name = wxT("animationControl"))
|
||||||
|
{
|
||||||
|
Create(parent, id, filename, pos, size, style, name);
|
||||||
|
}
|
||||||
|
~wxAnimationCtrlBase();
|
||||||
|
|
||||||
|
bool Create(wxWindow *parent, wxWindowID id,
|
||||||
|
const wxString& filename = wxEmptyString,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize, long style = wxAN_FIT_ANIMATION|wxNO_BORDER,
|
||||||
|
const wxString& name = wxT("animationControl"));
|
||||||
|
|
||||||
|
//// Operations
|
||||||
|
virtual bool LoadFile(const wxString& filename = wxEmptyString);
|
||||||
|
virtual bool Play(bool looped = TRUE) ;
|
||||||
|
virtual void Stop() { m_animationPlayer.Stop(); }
|
||||||
|
virtual void FitToAnimation();
|
||||||
|
|
||||||
|
//// Accessors
|
||||||
|
virtual bool IsPlaying() const { return m_animationPlayer.IsPlaying(); }
|
||||||
|
virtual wxAnimationPlayer& GetPlayer() { return m_animationPlayer; }
|
||||||
|
virtual wxAnimationBase* GetAnimation() { return m_animation; }
|
||||||
|
|
||||||
|
const wxString& GetFilename() const { return m_filename; }
|
||||||
|
void SetFilename(const wxString& filename) { m_filename = filename; }
|
||||||
|
|
||||||
|
//// Event handlers
|
||||||
|
void OnPaint(wxPaintEvent& event);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual wxSize DoGetBestSize() const;
|
||||||
|
|
||||||
|
// Override this in derived classes
|
||||||
|
virtual wxAnimationBase* DoCreateAnimation(const wxString& filename) = 0;
|
||||||
|
|
||||||
|
wxAnimationPlayer m_animationPlayer;
|
||||||
|
wxAnimationBase* m_animation;
|
||||||
|
wxString m_filename;
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_ABSTRACT_CLASS(wxAnimationCtrlBase)
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* wxGIFAnimationCtrl
|
||||||
|
* Provides a GIF animation class when required.
|
||||||
|
*/
|
||||||
|
|
||||||
|
class ANIMDLLEXPORT wxGIFAnimationCtrl: public wxAnimationCtrlBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxGIFAnimationCtrl() { }
|
||||||
|
wxGIFAnimationCtrl(wxWindow *parent, wxWindowID id,
|
||||||
|
const wxString& filename = wxEmptyString,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize, long style = wxAN_FIT_ANIMATION|wxNO_BORDER,
|
||||||
|
const wxString& name = wxT("animationControl"))
|
||||||
|
{
|
||||||
|
Create(parent, id, filename, pos, size, style, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual wxAnimationBase* DoCreateAnimation(const wxString& filename) ;
|
||||||
|
private:
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxGIFAnimationCtrl)
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // _WX_ANIMATEH__
|
||||||
|
|
85
contrib/include/wx/applet/applet.h
Normal file
@@ -0,0 +1,85 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* wxWindows HTML Applet Package
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the wxWindows License
|
||||||
|
* Version 3.0 (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of the License at
|
||||||
|
* http://www.wxwindows.org/licence3.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an
|
||||||
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* Language: ANSI C++
|
||||||
|
* Environment: Any
|
||||||
|
*
|
||||||
|
* Description: Header file for the wxApplet class
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __WX_APPLET_H
|
||||||
|
#define __WX_APPLET_H
|
||||||
|
|
||||||
|
#include "wx/panel.h"
|
||||||
|
#include "wx/html/htmlwin.h"
|
||||||
|
|
||||||
|
// Forward declaration
|
||||||
|
class wxHtmlAppletWindow;
|
||||||
|
|
||||||
|
/*--------------------------- Class Definitions ---------------------------*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Defines the abstract base class for wxApplet objects.
|
||||||
|
****************************************************************************/
|
||||||
|
class wxApplet : public wxPanel {
|
||||||
|
private:
|
||||||
|
DECLARE_ABSTRACT_CLASS(wxApplet);
|
||||||
|
DECLARE_EVENT_TABLE();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//wxHtmlAppletWindow *m_parent;
|
||||||
|
|
||||||
|
// Special handler for background erase messages
|
||||||
|
void OnEraseBackground(wxEraseEvent&);
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructor (called during dynamic creation)
|
||||||
|
wxApplet() { m_parent = NULL; };
|
||||||
|
|
||||||
|
// Psuedo virtual constructor
|
||||||
|
virtual bool Create(
|
||||||
|
wxHtmlAppletWindow *parent,
|
||||||
|
const wxHtmlTag& params,
|
||||||
|
const wxSize& size,
|
||||||
|
long style = wxTAB_TRAVERSAL | wxNO_BORDER);
|
||||||
|
|
||||||
|
// Virtual destructor
|
||||||
|
virtual ~wxApplet();
|
||||||
|
|
||||||
|
// Handle HTML navigation to a new URL
|
||||||
|
virtual void OnLinkClicked(const wxHtmlLinkInfo& link) = 0;
|
||||||
|
|
||||||
|
// Handle HTML navigation forward command in applet
|
||||||
|
virtual void OnHistoryForward() = 0;
|
||||||
|
|
||||||
|
// Handle HTML navigation back command in applet
|
||||||
|
virtual void OnHistoryBack() = 0;
|
||||||
|
|
||||||
|
// Handle messages from the wxAppletManager and other applets
|
||||||
|
virtual void OnMessage(wxEvent& msg) = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __WX_APPLET_H
|
||||||
|
|
95
contrib/include/wx/applet/echovar.h
Normal file
@@ -0,0 +1,95 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* wxWindows HTML Applet Package
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the wxWindows License
|
||||||
|
* Version 3.0 (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of the License at
|
||||||
|
* http://www.wxwindows.org/licence3.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an
|
||||||
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* Language: ANSI C++
|
||||||
|
* Environment: Any
|
||||||
|
*
|
||||||
|
* Description: Header file for wxEchoVariable Class, Dynamically constructed
|
||||||
|
* objects representing variables in SSI #echo directive
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __WX_ECHOVAR_H
|
||||||
|
#define __WX_ECHOVAR_H
|
||||||
|
|
||||||
|
/*--------------------------- Class Definitions ---------------------------*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
wxEchoVariable class Definition
|
||||||
|
****************************************************************************/
|
||||||
|
class wxEchoVariable : public wxObject {
|
||||||
|
private:
|
||||||
|
DECLARE_ABSTRACT_CLASS(wxEchoVariable);
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxEchoVariable() : wxObject() {}
|
||||||
|
~wxEchoVariable() {}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
RETURNS:
|
||||||
|
The boolean value of the variable
|
||||||
|
|
||||||
|
PARAMETERS:
|
||||||
|
parms - Optional parameter string passed from parm= field in HTML
|
||||||
|
|
||||||
|
REMARKS:
|
||||||
|
To create new variables for the #echo HTML preprocessing directives
|
||||||
|
you need to derive classes from wxEchoVariable and override the
|
||||||
|
pure virtual GetValue function. However this should not be done directly
|
||||||
|
but by using the BEGIN_ECHO_VARIABLE and END_ECHO_VARIABLE macros
|
||||||
|
|
||||||
|
SEE ALSO:
|
||||||
|
wxEchoPrep, BEGIN_ECHO_VARIABLE, END_ECHO_VARIABLE
|
||||||
|
****************************************************************************/
|
||||||
|
virtual wxString GetValue(const char *parms = NULL) const = 0;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
// static function to retrieve any variable avaliable
|
||||||
|
static wxString FindValue(const wxString &cls, const char *parms = NULL);
|
||||||
|
};
|
||||||
|
|
||||||
|
/*--------------------------------- MACROS --------------------------------*/
|
||||||
|
|
||||||
|
#define ECHO_PARM (_BEV_parm)
|
||||||
|
#define BEGIN_ECHO_VARIABLE(name) \
|
||||||
|
class wxEchoVariable##name : public wxEchoVariable { \
|
||||||
|
private: \
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxEchoVariable##name##); \
|
||||||
|
public: \
|
||||||
|
wxEchoVariable##name##() : wxEchoVariable() {} \
|
||||||
|
virtual wxString GetValue(const char *parms = NULL) const; \
|
||||||
|
}; \
|
||||||
|
IMPLEMENT_DYNAMIC_CLASS(wxEchoVariable##name##, wxEchoVariable); \
|
||||||
|
wxString wxEchoVariable##name :: GetValue(const char *parms) const { \
|
||||||
|
wxString _BEV_parm = wxString(parms);
|
||||||
|
|
||||||
|
#define END_ECHO_VARIABLE(returnval) \
|
||||||
|
return returnval; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define STRING_ECHO_VARIABLE(name, string) \
|
||||||
|
BEGIN_ECHO_VARIABLE(##name##); \
|
||||||
|
END_ECHO_VARIABLE(wxString(##string##))
|
||||||
|
|
||||||
|
#endif // __WX_ECHOVAR_H
|
||||||
|
|
94
contrib/include/wx/applet/ifelsevar.h
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* wxWindows HTML Applet Package
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the wxWindows License
|
||||||
|
* Version 3.0 (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of the License at
|
||||||
|
* http://www.wxwindows.org/licence3.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an
|
||||||
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* Language: ANSI C++
|
||||||
|
* Environment: Any
|
||||||
|
*
|
||||||
|
* Description: Header file for wxIfElseVariable Class, Dynamically constructed
|
||||||
|
* objects representing variables in SSI #if, #else and #endif directives
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __WX_IFELSEVAR_H
|
||||||
|
#define __WX_IFELSEVAR_H
|
||||||
|
|
||||||
|
/*--------------------------- Class Definitions ---------------------------*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
This class is used to create variables for the HTML preprocessor #if, #else,
|
||||||
|
and #endif directives.
|
||||||
|
|
||||||
|
SEE ALSO:
|
||||||
|
wxIfElsePrep
|
||||||
|
****************************************************************************/
|
||||||
|
class wxIfElseVariable : public wxObject {
|
||||||
|
private:
|
||||||
|
DECLARE_ABSTRACT_CLASS(wxIfElseVariable);
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxIfElseVariable() : wxObject() {}
|
||||||
|
~wxIfElseVariable() {}
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
RETURNS:
|
||||||
|
The boolean value of the variable
|
||||||
|
|
||||||
|
REMARKS:
|
||||||
|
To create new variables for the #if, #else and #endif HTML preprocessing
|
||||||
|
blocks you need to derive classes from wxIfElseVariable and override the
|
||||||
|
pure virtual GetValue function. However this should not be done directly
|
||||||
|
but by using the BEGIN_IFELSE_VARIABLE and END_IFELSE_VARIABLE macros
|
||||||
|
|
||||||
|
SEE ALSO:
|
||||||
|
wxIfElsePrep, BEGIN_IFELSE_VARIABLE, END_IFELSE_VARIABLE
|
||||||
|
****************************************************************************/
|
||||||
|
virtual bool GetValue() const = 0;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
|
// static function to retrieve any variable avaliable
|
||||||
|
static bool FindValue(const wxString &cls);
|
||||||
|
};
|
||||||
|
|
||||||
|
/*--------------------------------- MACROS --------------------------------*/
|
||||||
|
|
||||||
|
#define BEGIN_IFELSE_VARIABLE(name) \
|
||||||
|
class wxIfElseVariable##name : public wxIfElseVariable { \
|
||||||
|
private: \
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxIfElseVariable##name##); \
|
||||||
|
public: \
|
||||||
|
wxIfElseVariable##name##() : wxIfElseVariable() {} \
|
||||||
|
virtual bool GetValue() const; \
|
||||||
|
}; \
|
||||||
|
IMPLEMENT_DYNAMIC_CLASS(wxIfElseVariable##name##, wxIfElseVariable); \
|
||||||
|
bool wxIfElseVariable##name :: GetValue() const {
|
||||||
|
|
||||||
|
#define END_IFELSE_VARIABLE(returnval) \
|
||||||
|
return returnval; \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define IFELSE_VARIABLE(name, state) \
|
||||||
|
BEGIN_IFELSE_VARIABLE(##name##); \
|
||||||
|
END_IFELSE_VARIABLE(bool (state))
|
||||||
|
|
||||||
|
#endif // __WX_IFELSEVAR_H
|
||||||
|
|
109
contrib/include/wx/applet/loadpage.h
Normal file
@@ -0,0 +1,109 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* wxWindows HTML Applet Package
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the wxWindows License
|
||||||
|
* Version 3.0 (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of the License at
|
||||||
|
* http://www.wxwindows.org/licence3.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an
|
||||||
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* Language: ANSI C++
|
||||||
|
* Environment: Any
|
||||||
|
*
|
||||||
|
* Description: Header file for the wxLoadPage Event class
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __WX_LOAD_PAGE_H
|
||||||
|
#define __WX_LOAD_PAGE_H
|
||||||
|
|
||||||
|
#include "wx/html/htmlwin.h"
|
||||||
|
|
||||||
|
// Forward declaration
|
||||||
|
class wxHtmlAppletWindow;
|
||||||
|
|
||||||
|
// If we are compiling this code into a library that links against
|
||||||
|
// the DLL, we need to remove all the __declspec(dllimports) that
|
||||||
|
// would declare our classes below incorrectly.
|
||||||
|
|
||||||
|
#ifndef WXMAKINGDLL
|
||||||
|
#undef WXDLLEXPORT
|
||||||
|
#define WXDLLEXPORT
|
||||||
|
#endif
|
||||||
|
// Declare our local load page event type
|
||||||
|
BEGIN_DECLARE_EVENT_TYPES()
|
||||||
|
DECLARE_EVENT_TYPE(wxEVT_LOAD_PAGE, wxEVT_USER_FIRST+1)
|
||||||
|
DECLARE_EVENT_TYPE(wxEVT_PAGE_LOADED, wxEVT_USER_FIRST+2)
|
||||||
|
END_DECLARE_EVENT_TYPES()
|
||||||
|
|
||||||
|
/*--------------------------- Class Definitions ---------------------------*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Defines the class for load page events.
|
||||||
|
****************************************************************************/
|
||||||
|
class wxLoadPageEvent : public wxEvent {
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxLoadPageEvent);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxString m_hRef;
|
||||||
|
wxHtmlAppletWindow *m_htmlWindow;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructor
|
||||||
|
wxLoadPageEvent(const wxString &hRef = "",wxHtmlAppletWindow *htmlWindow = NULL);
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
~wxLoadPageEvent() {}
|
||||||
|
|
||||||
|
// Return the hmtl window for the load page operation
|
||||||
|
wxHtmlAppletWindow *GetHtmlWindow() { return m_htmlWindow; };
|
||||||
|
|
||||||
|
// Get the hRef string for the load page operation
|
||||||
|
const wxString & GetHRef() { return m_hRef; };
|
||||||
|
|
||||||
|
// Copy constructor for the object
|
||||||
|
void CopyObject(wxObject& obj) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// Define the macro to create our event type
|
||||||
|
typedef void (wxEvtHandler::*wxLoadPageEventFunction)(wxLoadPageEvent&);
|
||||||
|
#define EVT_LOAD_PAGE(fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_LOAD_PAGE, -1, -1, (wxObjectEventFunction)(wxEventFunction)(wxLoadPageEventFunction) & fn, (wxObject *) NULL ),
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Defines the class for pageloaded events.
|
||||||
|
****************************************************************************/
|
||||||
|
class wxPageLoadedEvent : public wxEvent {
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxPageLoadedEvent);
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructor
|
||||||
|
wxPageLoadedEvent();
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
~wxPageLoadedEvent() {}
|
||||||
|
|
||||||
|
// Copy constructor for the object
|
||||||
|
void CopyObject(wxObject& obj) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
// Define the macro to create our event type
|
||||||
|
typedef void (wxEvtHandler::*wxPageLoadedEventFunction)(wxPageLoadedEvent&);
|
||||||
|
#define EVT_PAGE_LOADED(fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_PAGE_LOADED, -1, -1, (wxObjectEventFunction)(wxEventFunction)(wxPageLoadedEventFunction) & fn, (wxObject *) NULL ),
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __WX_LOAD_PAGE_H
|
57
contrib/include/wx/applet/plugin.h
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* wxWindows HTML Applet Package
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the wxWindows License
|
||||||
|
* Version 3.0 (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of the License at
|
||||||
|
* http://www.wxwindows.org/licence3.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an
|
||||||
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* Language: ANSI C++
|
||||||
|
* Environment: Any
|
||||||
|
*
|
||||||
|
* Description: Header file for the wxQlet class
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __WX_PLUGIN_H
|
||||||
|
#define __WX_PLUGIN_H
|
||||||
|
|
||||||
|
// Forward declaration
|
||||||
|
class wxHtmlAppletWindow;
|
||||||
|
|
||||||
|
/*--------------------------- Class Definitions ---------------------------*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Defines the abstract base class for wxQlet objects.
|
||||||
|
****************************************************************************/
|
||||||
|
class wxPlugIn : public wxObject {
|
||||||
|
private:
|
||||||
|
DECLARE_ABSTRACT_CLASS(wxPlugIn);
|
||||||
|
|
||||||
|
wxHtmlAppletWindow *m_parent;
|
||||||
|
public:
|
||||||
|
// Constructor (called during dynamic creation)
|
||||||
|
wxPlugIn() { m_parent = NULL; };
|
||||||
|
|
||||||
|
// Psuedo virtual constructor
|
||||||
|
virtual bool Create(wxHtmlAppletWindow *parent);
|
||||||
|
|
||||||
|
// Virtual destructor
|
||||||
|
virtual ~wxPlugIn();
|
||||||
|
};
|
||||||
|
#endif // __WX_PLUGIN_H
|
||||||
|
|
59
contrib/include/wx/applet/prepecho.h
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* wxWindows HTML Applet Package
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the wxWindows License
|
||||||
|
* Version 3.0 (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of the License at
|
||||||
|
* http://www.wxwindows.org/licence3.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an
|
||||||
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* Language: ANSI C++
|
||||||
|
* Environment: Any
|
||||||
|
*
|
||||||
|
* Description: Header file for the Preprocessor of the #echo directive
|
||||||
|
* in wxHTML.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __WX_PREPECHO_H
|
||||||
|
#define __WX_PREPECHO_H
|
||||||
|
|
||||||
|
#include "wx/html/htmlproc.h"
|
||||||
|
|
||||||
|
/*--------------------------- Class Definitions ---------------------------*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Echo Preprocessor class Definition
|
||||||
|
****************************************************************************/
|
||||||
|
class wxEchoPrep : public wxHtmlProcessor {
|
||||||
|
private:
|
||||||
|
//DECLARE_DYNAMIC_CLASS(wxEchoPrep);
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxEchoPrep() : wxHtmlProcessor() {}
|
||||||
|
~wxEchoPrep() {}
|
||||||
|
|
||||||
|
// Process input text and return processed result
|
||||||
|
wxString Process(const wxString& text) const;
|
||||||
|
|
||||||
|
// Return priority value of this processor. The higher, the sooner
|
||||||
|
// is the processor applied to the text.
|
||||||
|
int GetPriority() const { return wxHTML_PRIORITY_SYSTEM-2; }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __WX_PREPECHO_H
|
||||||
|
|
59
contrib/include/wx/applet/prepifelse.h
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* wxWindows HTML Applet Package
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the wxWindows License
|
||||||
|
* Version 3.0 (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of the License at
|
||||||
|
* http://www.wxwindows.org/licence3.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an
|
||||||
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* Language: ANSI C++
|
||||||
|
* Environment: Any
|
||||||
|
*
|
||||||
|
* Description: Header file for the Preprocessor of the #if SSI directive
|
||||||
|
* in wxHTML.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __WX_PREPIFELSE_H
|
||||||
|
#define __WX_PREPIFELSE_H
|
||||||
|
|
||||||
|
#include "wx/html/htmlproc.h"
|
||||||
|
|
||||||
|
/*--------------------------- Class Definitions ---------------------------*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
If Else Preprocessor class Definition
|
||||||
|
****************************************************************************/
|
||||||
|
class wxIfElsePrep : public wxHtmlProcessor {
|
||||||
|
private:
|
||||||
|
//DECLARE_DYNAMIC_CLASS(wxIfElsePrep);
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxIfElsePrep() : wxHtmlProcessor() {}
|
||||||
|
~wxIfElsePrep() {}
|
||||||
|
|
||||||
|
// Process input text and return processed result
|
||||||
|
wxString Process(const wxString& text) const;
|
||||||
|
|
||||||
|
// Return priority value of this processor. The higher, the sooner
|
||||||
|
// is the processor applied to the text.
|
||||||
|
int GetPriority() const { return wxHTML_PRIORITY_SYSTEM-2; }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __WX_PREPECHO_H
|
||||||
|
|
61
contrib/include/wx/applet/prepinclude.h
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* wxWindows HTML Applet Package
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the wxWindows License
|
||||||
|
* Version 3.0 (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of the License at
|
||||||
|
* http://www.wxwindows.org/licence3.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an
|
||||||
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* Language: ANSI C++
|
||||||
|
* Environment: Any
|
||||||
|
*
|
||||||
|
* Description: Header file for the Preprocessor of the #include directive
|
||||||
|
* in wxHTML.
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __WX_PREPINCLUDE_H
|
||||||
|
#define __WX_PREPINCLUDE_H
|
||||||
|
|
||||||
|
#include "wx/html/htmlproc.h"
|
||||||
|
|
||||||
|
/*--------------------------- Class Definitions ---------------------------*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
wxIncludePrep class Definition
|
||||||
|
****************************************************************************/
|
||||||
|
class wxIncludePrep : public wxHtmlProcessor {
|
||||||
|
private:
|
||||||
|
//DECLARE_DYNAMIC_CLASS(wxIncludePrep);
|
||||||
|
wxFileSystem *m_FS;
|
||||||
|
public:
|
||||||
|
wxIncludePrep() : wxHtmlProcessor() {}
|
||||||
|
~wxIncludePrep() {}
|
||||||
|
|
||||||
|
// Process input text and return processed result
|
||||||
|
wxString Process(const wxString& text) const;
|
||||||
|
|
||||||
|
// Return priority value of this processor. The higher, the sooner
|
||||||
|
// is the processor applied to the text.
|
||||||
|
int GetPriority() const { return wxHTML_PRIORITY_SYSTEM; }
|
||||||
|
|
||||||
|
void ChangeDirectory(wxFileSystem *);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __WX_PREPINCLUDE_H
|
||||||
|
|
226
contrib/include/wx/applet/window.h
Normal file
@@ -0,0 +1,226 @@
|
|||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* wxWindows HTML Applet Package
|
||||||
|
*
|
||||||
|
* Copyright (C) 1991-2001 SciTech Software, Inc.
|
||||||
|
* All rights reserved.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* The contents of this file are subject to the wxWindows License
|
||||||
|
* Version 3.0 (the "License"); you may not use this file except in
|
||||||
|
* compliance with the License. You may obtain a copy of the License at
|
||||||
|
* http://www.wxwindows.org/licence3.txt
|
||||||
|
*
|
||||||
|
* Software distributed under the License is distributed on an
|
||||||
|
* "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
|
||||||
|
* implied. See the License for the specific language governing
|
||||||
|
* rights and limitations under the License.
|
||||||
|
*
|
||||||
|
* ========================================================================
|
||||||
|
*
|
||||||
|
* Language: ANSI C++
|
||||||
|
* Environment: Any
|
||||||
|
*
|
||||||
|
* Description: Header file for the wxHtmlAppletWindow class
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef __WX_APPLET_WINDOW_H
|
||||||
|
#define __WX_APPLET_WINDOW_H
|
||||||
|
|
||||||
|
#include "wx/html/htmlwin.h"
|
||||||
|
#include "wx/process.h"
|
||||||
|
|
||||||
|
// Forward declare
|
||||||
|
class wxApplet;
|
||||||
|
class wxQlet;
|
||||||
|
class wxLoadPageEvent;
|
||||||
|
class wxPageLoadedEvent;
|
||||||
|
class wxIncludePrep;
|
||||||
|
class wxToolBarBase;
|
||||||
|
|
||||||
|
// Declare a linked list of wxApplet pointers
|
||||||
|
WX_DECLARE_LIST(wxApplet, wxAppletList);
|
||||||
|
|
||||||
|
/*--------------------------- Class Definitions ---------------------------*/
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Defines the class for virtual-link data types
|
||||||
|
****************************************************************************/
|
||||||
|
class VirtualData : public wxObject {
|
||||||
|
private:
|
||||||
|
wxString m_name;
|
||||||
|
wxString m_group;
|
||||||
|
wxString m_href;
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Ctors
|
||||||
|
VirtualData(
|
||||||
|
wxString& name,
|
||||||
|
wxString& group,
|
||||||
|
wxString& href );
|
||||||
|
|
||||||
|
VirtualData();
|
||||||
|
|
||||||
|
// Gets
|
||||||
|
wxString GetName(){ return m_name;};
|
||||||
|
wxString GetGroup(){ return m_group;};
|
||||||
|
wxString GetHref(){ return m_href;};
|
||||||
|
|
||||||
|
// Sets
|
||||||
|
void SetName (wxString& s){ m_name = s; };
|
||||||
|
void SetGroup(wxString& s){ m_group = s; };
|
||||||
|
void SetHref (wxString& s){ m_href = s; };
|
||||||
|
};
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Defines the class for wxAppletWindow. This class is derived from the
|
||||||
|
wxHtmlWindow class and extends it with functionality to handle embedded
|
||||||
|
wxApplet's on the HTML pages.
|
||||||
|
****************************************************************************/
|
||||||
|
class wxHtmlAppletWindow : public wxHtmlWindow {
|
||||||
|
private:
|
||||||
|
DECLARE_CLASS(wxHtmlAppletWindow);
|
||||||
|
DECLARE_EVENT_TABLE();
|
||||||
|
|
||||||
|
bool m_mutexLock;
|
||||||
|
wxIncludePrep *incPreprocessor; // deleted by list it is added too in constructor
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxAppletList m_AppletList;
|
||||||
|
static wxHashTable m_Cookies;
|
||||||
|
bool m_NavBarEnabled;
|
||||||
|
wxToolBarBase *m_NavBar;
|
||||||
|
int m_NavBackId;
|
||||||
|
int m_NavForwardId;
|
||||||
|
wxPalette m_globalPalette;
|
||||||
|
|
||||||
|
// Override this so we can do proper palette management!!
|
||||||
|
virtual void OnDraw(wxDC& dc);
|
||||||
|
|
||||||
|
public:
|
||||||
|
// Constructor
|
||||||
|
wxHtmlAppletWindow(
|
||||||
|
wxWindow *parent,
|
||||||
|
wxWindowID id = -1,
|
||||||
|
wxToolBarBase *navBar = NULL,
|
||||||
|
int navBackId = -1,
|
||||||
|
int navForwardId = -1,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = wxHW_SCROLLBAR_AUTO,
|
||||||
|
const wxString& name = "htmlAppletWindow",
|
||||||
|
const wxPalette& globalPalette = wxNullPalette);
|
||||||
|
|
||||||
|
// Destructor
|
||||||
|
~wxHtmlAppletWindow();
|
||||||
|
|
||||||
|
// Create an instance of an applet based on it's class name
|
||||||
|
wxApplet *CreateApplet(
|
||||||
|
const wxString& classId,
|
||||||
|
const wxString& iName,
|
||||||
|
const wxHtmlTag ¶ms,
|
||||||
|
const wxSize& size);
|
||||||
|
|
||||||
|
// Create an instance of an Qlet based on it's class name
|
||||||
|
bool CreatePlugIn(const wxString& classId );
|
||||||
|
|
||||||
|
// Find an instance of an applet based on it's class name
|
||||||
|
wxApplet *FindApplet(const wxString& className);
|
||||||
|
|
||||||
|
// Remove an applet from the window. Called during applet destruction
|
||||||
|
bool RemoveApplet(const wxApplet *applet);
|
||||||
|
|
||||||
|
// Load a new URL page
|
||||||
|
virtual bool LoadPage(const wxString& location);
|
||||||
|
|
||||||
|
// Called when users clicked on hypertext link.
|
||||||
|
virtual void OnLinkClicked(const wxHtmlLinkInfo& link);
|
||||||
|
|
||||||
|
// Handles forward navigation within the HTML stack
|
||||||
|
bool HistoryForward();
|
||||||
|
|
||||||
|
// Handles backwards navigation within the HTML stack
|
||||||
|
bool HistoryBack();
|
||||||
|
|
||||||
|
// Disables Nav bars
|
||||||
|
void DisableNavBar();
|
||||||
|
|
||||||
|
// Enables Nav bars
|
||||||
|
void EnableNavBar();
|
||||||
|
|
||||||
|
void SetNavBar(wxToolBarBase *navBar);
|
||||||
|
|
||||||
|
// Broadcast a message to all applets on the page
|
||||||
|
void SendMessage(wxEvent& msg);
|
||||||
|
|
||||||
|
// Register a cookie of data in the applet manager
|
||||||
|
static bool RegisterCookie(const wxString& name,wxObject *cookie);
|
||||||
|
|
||||||
|
// UnRegister a cookie of data in the applet manager
|
||||||
|
static bool UnRegisterCookie(const wxString& name);
|
||||||
|
|
||||||
|
// Find a cookie of data given it's public name
|
||||||
|
static wxObject *FindCookie(const wxString& name);
|
||||||
|
|
||||||
|
// Event handlers to load a new page
|
||||||
|
void OnLoadPage(wxLoadPageEvent &event);
|
||||||
|
|
||||||
|
// Event handlers to load a new page
|
||||||
|
void OnPageLoaded(wxPageLoadedEvent &event);
|
||||||
|
|
||||||
|
// LoadPage mutex locks
|
||||||
|
void Lock(){ m_mutexLock = true;};
|
||||||
|
void UnLock(){ m_mutexLock = false;};
|
||||||
|
|
||||||
|
// Returns TRUE if the mutex is locked, FALSE otherwise.
|
||||||
|
bool IsLocked(){ return m_mutexLock;};
|
||||||
|
|
||||||
|
// Tries to lock the mutex. If it can't, returns immediately with false.
|
||||||
|
bool TryLock();
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Defines the class for AppetProcess
|
||||||
|
***************************************************************************/
|
||||||
|
class AppletProcess : public wxProcess {
|
||||||
|
public:
|
||||||
|
AppletProcess(
|
||||||
|
wxWindow *parent)
|
||||||
|
: wxProcess(parent)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
// instead of overriding this virtual function we might as well process the
|
||||||
|
// event from it in the frame class - this might be more convenient in some
|
||||||
|
// cases
|
||||||
|
virtual void OnTerminate(int pid, int status);
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
REMARKS:
|
||||||
|
Defines the class for wxHtmlAppletCell
|
||||||
|
***************************************************************************/
|
||||||
|
class wxHtmlAppletCell : public wxHtmlCell
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxHtmlAppletCell(wxWindow *wnd, int w = 0);
|
||||||
|
~wxHtmlAppletCell() { m_Wnd->Destroy(); }
|
||||||
|
virtual void Draw(wxDC& dc, int x, int y, int view_y1, int view_y2);
|
||||||
|
virtual void DrawInvisible(wxDC& dc, int x, int y);
|
||||||
|
virtual void Layout(int w);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxWindow* m_Wnd;
|
||||||
|
// width float is used in adjustWidth (it is in percents)
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif // __WX_APPLET_WINDOW_H
|
||||||
|
|
76
contrib/include/wx/canvas/bbox.h
Normal file
@@ -0,0 +1,76 @@
|
|||||||
|
#ifndef __WXBOUNDINGBOX_H__
|
||||||
|
#define __WXBOUNDINGBOX_H__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "bbox.cpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/wx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/matrix.h"
|
||||||
|
#include "wx/geometry.h"
|
||||||
|
|
||||||
|
enum OVERLAP {_IN,_ON,_OUT};
|
||||||
|
|
||||||
|
//Purpose The wxBoundingBox class stores one wxBoundingBox.
|
||||||
|
//The wxBoundingBox is defined by two coordiates,
|
||||||
|
//a upperleft coordinate and a lowerright coordinate.
|
||||||
|
class wxBoundingBox
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxBoundingBox();
|
||||||
|
wxBoundingBox(wxBoundingBox&);
|
||||||
|
wxBoundingBox(const wxPoint2DDouble&);
|
||||||
|
wxBoundingBox(double xmin, double ymin, double xmax, double ymax);
|
||||||
|
|
||||||
|
bool And(wxBoundingBox*, double Marge = 0);
|
||||||
|
|
||||||
|
void EnLarge(const double Marge);
|
||||||
|
void Shrink(const double Marge);
|
||||||
|
|
||||||
|
void Expand(const wxPoint2DDouble& , const wxPoint2DDouble&);
|
||||||
|
void Expand(const wxPoint2DDouble&);
|
||||||
|
void Expand(double x,double y);
|
||||||
|
void Expand(const wxBoundingBox& bbox);
|
||||||
|
|
||||||
|
OVERLAP Intersect( wxBoundingBox &, double Marge = 0);
|
||||||
|
bool LineIntersect(const wxPoint2DDouble& begin, const wxPoint2DDouble& end );
|
||||||
|
bool PointInBox( const wxPoint2DDouble&, double Marge = 0);
|
||||||
|
bool PointInBox( double, double, double Marge = 0);
|
||||||
|
|
||||||
|
void Reset();
|
||||||
|
|
||||||
|
void Translate( wxPoint2DDouble& );
|
||||||
|
void MapBbox( const wxTransformMatrix& matrix);
|
||||||
|
|
||||||
|
double GetWidth() {return m_maxx-m_minx;};
|
||||||
|
double GetHeight(){return m_maxy-m_miny;};
|
||||||
|
bool GetValid() const;
|
||||||
|
void SetValid(bool);
|
||||||
|
|
||||||
|
void SetBoundingBox(const wxPoint2DDouble& a_point);
|
||||||
|
|
||||||
|
void SetMin(double, double);
|
||||||
|
void SetMax(double, double);
|
||||||
|
inline wxPoint2DDouble GetMin();
|
||||||
|
inline wxPoint2DDouble GetMax();
|
||||||
|
inline double GetMinX(){return m_minx;};
|
||||||
|
inline double GetMinY(){return m_miny;};
|
||||||
|
inline double GetMaxX(){return m_maxx;};
|
||||||
|
inline double GetMaxY(){return m_maxy;};
|
||||||
|
|
||||||
|
wxBoundingBox& operator+( wxBoundingBox& );
|
||||||
|
wxBoundingBox& operator=( const wxBoundingBox& );
|
||||||
|
|
||||||
|
protected:
|
||||||
|
//bounding box in world
|
||||||
|
double m_minx;
|
||||||
|
double m_miny;
|
||||||
|
double m_maxx;
|
||||||
|
double m_maxy;
|
||||||
|
bool m_validbbox;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
859
contrib/include/wx/canvas/canvas.h
Normal file
@@ -0,0 +1,859 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: canvas.h
|
||||||
|
// Author: Robert Roebling
|
||||||
|
// Created: XX/XX/XX
|
||||||
|
// Copyright: 2000 (c) Robert Roebling
|
||||||
|
// Licence: wxWindows Licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __WXCANVAS_H__
|
||||||
|
#define __WXCANVAS_H__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "canvas.cpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/wx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/image.h"
|
||||||
|
#include "wx/txtstrm.h"
|
||||||
|
#include "wx/geometry.h"
|
||||||
|
#include "wx/matrix.h"
|
||||||
|
#include "bbox.h"
|
||||||
|
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// decls
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxCanvas;
|
||||||
|
class wxCanvasAdmin;
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxCanvasObject
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
enum wxDRAG_MODE
|
||||||
|
{
|
||||||
|
wxDRAG_RECTANGLE,
|
||||||
|
wxDRAG_ONTOP,
|
||||||
|
wxDRAG_REDRAW
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvasObject is the base class for Canvas Objects.
|
||||||
|
// All Objects for drawing one the canvas are derived from this class.
|
||||||
|
// It supports dragging and moving methods that can be used in derived
|
||||||
|
// classes for defining several ways of dragging.
|
||||||
|
// Also it is possible to plug in events handlers to do this for all derived classes at once.
|
||||||
|
//
|
||||||
|
// wxCanvasObjects have themselves as their event handlers by default,
|
||||||
|
// but their event handlers could be set to another object entirely. This
|
||||||
|
// separation can reduce the amount of derivation required, and allow
|
||||||
|
// alteration of a wxCanvasObject functionality
|
||||||
|
class wxCanvasObject: public wxEvtHandler
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
|
||||||
|
wxCanvasObject();
|
||||||
|
|
||||||
|
//If the position (x,y) is within the object this return a pointer to the object
|
||||||
|
//Normally this function needs to be defined for each derived wxCanvasObject.
|
||||||
|
//The default is a simple bounding box test.
|
||||||
|
virtual wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
//render this object to the canvas (either on its buffer or directly on the canvas)
|
||||||
|
//this depends on the wxDC that is set for the active canvas.
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
|
||||||
|
//x position in world coordinates of the object
|
||||||
|
virtual double GetPosX()=0;
|
||||||
|
//y position in world coordinates of the object
|
||||||
|
virtual double GetPosY()=0;
|
||||||
|
|
||||||
|
//set position in world coordinates for the object
|
||||||
|
virtual void SetPosXY( double x, double y)=0;
|
||||||
|
|
||||||
|
//absolute moving the object to position x,y in world coordinates
|
||||||
|
//also does an update of the old and new area
|
||||||
|
virtual void MoveAbsolute( double x, double y );
|
||||||
|
|
||||||
|
//relative moving the object to position x,y in world coordinates
|
||||||
|
//also does an update of the old and new area
|
||||||
|
virtual void MoveRelative( double x, double y );
|
||||||
|
|
||||||
|
//relative translate the object to position x,y in world coordinates
|
||||||
|
//does NOT update the old and new area
|
||||||
|
//this function must be defined for each derived object,
|
||||||
|
//it is used internally for dragging and moving objects.
|
||||||
|
virtual void TransLate( double x, double y )=0;
|
||||||
|
|
||||||
|
//choose one of the three diffrenet drag methods |
|
||||||
|
//DRAG_RECTANGLE = as a rectangle when drag is in progress |
|
||||||
|
//DRAG_ONTOP = only redraw the object when dragging |
|
||||||
|
//DRAG_REDRAW = redraw the damaged areas when dragging
|
||||||
|
void SetDragMode(wxDRAG_MODE mode) { m_dragmode=mode; };
|
||||||
|
|
||||||
|
//return the dragmode
|
||||||
|
wxDRAG_MODE GetDragMode() { return m_dragmode; };
|
||||||
|
|
||||||
|
//called when starting a drag
|
||||||
|
virtual void DragStart();
|
||||||
|
//called when dragging is in progress
|
||||||
|
virtual void DragRelative( double x, double y);
|
||||||
|
//called when dragging is ended
|
||||||
|
virtual void DragEnd();
|
||||||
|
|
||||||
|
//return the object if it is part of the given object or
|
||||||
|
//if the given object is part of a group within this object.
|
||||||
|
//For group objects this means recursively search for it.
|
||||||
|
virtual wxCanvasObject* Contains( wxCanvasObject* obj );
|
||||||
|
|
||||||
|
//calculate the boundingbox in world coordinates
|
||||||
|
virtual void CalcBoundingBox()=0;
|
||||||
|
|
||||||
|
//write the object as SVG (scalable vector grafhics
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
//get the administrator for the object,
|
||||||
|
//this will give access to the canvas's where it is displayed upon.
|
||||||
|
//It is used to render the object to the active canvas.
|
||||||
|
//Conversion from world to Device coordinates and visa versa is
|
||||||
|
//done using the Active canvas at that moment.
|
||||||
|
wxCanvasAdmin *GetAdmin() { return m_admin; }
|
||||||
|
|
||||||
|
//set the administrator
|
||||||
|
virtual void SetAdmin( wxCanvasAdmin *admin ) { m_admin = admin; }
|
||||||
|
|
||||||
|
//is this a control type of canvas object
|
||||||
|
bool IsControl() { return m_isControl; }
|
||||||
|
//is this a vector type of canvas object
|
||||||
|
bool IsVector() { return m_isVector; }
|
||||||
|
//is this an Image type of canvas object
|
||||||
|
bool IsImage() { return m_isImage; }
|
||||||
|
|
||||||
|
//get minimum X of the boundingbox in world coordinates
|
||||||
|
inline double GetXMin() { return m_bbox.GetMinX(); }
|
||||||
|
//get minimum Y of the boundingbox in world coordinates
|
||||||
|
inline double GetYMin() { return m_bbox.GetMinY(); }
|
||||||
|
//get maximum X of the boundingbox in world coordinates
|
||||||
|
inline double GetXMax() { return m_bbox.GetMaxX(); }
|
||||||
|
//get maximum Y of the boundingbox in world coordinates
|
||||||
|
inline double GetYMax() { return m_bbox.GetMaxY(); }
|
||||||
|
|
||||||
|
//get boundingbox
|
||||||
|
inline wxBoundingBox GetBbox() { return m_bbox; }
|
||||||
|
|
||||||
|
//redirect all mouse events for the canvas to this object
|
||||||
|
void CaptureMouse();
|
||||||
|
//release the mouse capture for this object
|
||||||
|
void ReleaseMouse();
|
||||||
|
//is the mouse captured for this object
|
||||||
|
bool IsCapturedMouse();
|
||||||
|
|
||||||
|
//set if this object will visible (be rendered or not)
|
||||||
|
inline void SetVisible(bool visible) { m_visible=visible; }
|
||||||
|
//get visibility
|
||||||
|
inline bool GetVisible() {return m_visible; }
|
||||||
|
|
||||||
|
//can the object be dragged
|
||||||
|
inline void SetDraggable(bool drag) { m_dragable=drag; }
|
||||||
|
//get if the object can be dragged
|
||||||
|
inline bool GetDraggable() {return m_dragable; }
|
||||||
|
|
||||||
|
//get absolute area in the device coordinates where the object
|
||||||
|
//its boundingbox in world coordinates is first translated using the matrix.
|
||||||
|
wxRect GetAbsoluteArea(const wxTransformMatrix& cworld);
|
||||||
|
|
||||||
|
//get currently used eventhandler (always the first in the list)
|
||||||
|
wxEvtHandler *GetEventHandler() const { return m_eventHandler; }
|
||||||
|
|
||||||
|
//process an event for the object, starting with the first eventhandler
|
||||||
|
// in the list.
|
||||||
|
bool ProcessCanvasObjectEvent(wxEvent& event);
|
||||||
|
|
||||||
|
// push/pop event handler: allows to chain a custom event handler to
|
||||||
|
// already existing ones
|
||||||
|
void PushEventHandler( wxEvtHandler *handler );
|
||||||
|
|
||||||
|
//remove first eventhandler in the list (one will be always stay in)
|
||||||
|
wxEvtHandler *PopEventHandler( bool deleteHandler = FALSE );
|
||||||
|
//append an eventhandler to the list, this event handler will be called
|
||||||
|
//if the other skipped the event to process.
|
||||||
|
void AppendEventHandler(wxEvtHandler *handler);
|
||||||
|
//remove last event handler in the list (one will always stay in)
|
||||||
|
wxEvtHandler *RemoveLastEventHandler(bool deleteHandler);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
//administator for rendering and accessing the canvas's
|
||||||
|
wxCanvasAdmin* m_admin;
|
||||||
|
|
||||||
|
//active event handler, default the object itself
|
||||||
|
wxEvtHandler* m_eventHandler;
|
||||||
|
|
||||||
|
bool m_isControl:1;
|
||||||
|
bool m_isVector:1;
|
||||||
|
bool m_isImage:1;
|
||||||
|
bool m_visible:1;
|
||||||
|
bool m_dragable:1;
|
||||||
|
wxDRAG_MODE m_dragmode:3;
|
||||||
|
|
||||||
|
//boundingbox in world coordinates
|
||||||
|
wxBoundingBox m_bbox;
|
||||||
|
|
||||||
|
//used for dragging
|
||||||
|
wxBitmap m_atnewpos;
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvasObjectGroup is a container for wxCanvas derived Objects.
|
||||||
|
// It renders itself by calling the render methods of the wxCanvasObjects it contains.
|
||||||
|
// It can have nested groups also, in the same way as the other wxCanvasObjects it already contains.
|
||||||
|
// The group has a matrix to position/rotate/scale the group.
|
||||||
|
class wxCanvasObjectGroup: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasObjectGroup(double x, double y);
|
||||||
|
virtual ~wxCanvasObjectGroup();
|
||||||
|
|
||||||
|
void SetAdmin(wxCanvasAdmin* admin);
|
||||||
|
|
||||||
|
//prepend a wxCanvasObject to this group
|
||||||
|
virtual void Prepend( wxCanvasObject* obj );
|
||||||
|
//append a wxCanvasObject to this group
|
||||||
|
virtual void Append( wxCanvasObject* obj );
|
||||||
|
//insert a wxCanvasObject to this group
|
||||||
|
virtual void Insert( size_t before, wxCanvasObject* obj );
|
||||||
|
//remove the given object from the group
|
||||||
|
virtual void Remove( wxCanvasObject* obj );
|
||||||
|
|
||||||
|
//those this group contain the given object.
|
||||||
|
//in case of nested groups also search in there to the lowwest level.
|
||||||
|
virtual wxCanvasObject* Contains( wxCanvasObject* obj );
|
||||||
|
|
||||||
|
//returns index of the given wxCanvasObject in this group
|
||||||
|
virtual int IndexOf( wxCanvasObject* obj );
|
||||||
|
|
||||||
|
double GetPosX() { return lworld.GetValue(2,0); }
|
||||||
|
double GetPosY() { return lworld.GetValue(2,1); }
|
||||||
|
void SetPosXY( double x, double y) {lworld.SetValue(2,0,x);lworld.SetValue(2,1,y);CalcBoundingBox();};
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
|
||||||
|
void CalcBoundingBox();
|
||||||
|
//remove all wxCanvasObjects from the group (flag for deletion of the objectsalso)
|
||||||
|
void DeleteContents( bool );
|
||||||
|
virtual void Render(wxTransformMatrix* cworld,int x, int y, int width, int height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
//recursive call the IsHitWorld on all contained objects, the first
|
||||||
|
//one that is hit will be returned
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
//recursive calls for contained objects to set eventhandlers,
|
||||||
|
//and also sets its own eventhandler
|
||||||
|
void PushEventHandler( wxEvtHandler *handler );
|
||||||
|
//recursive calls for contained objects to set eventhandlers,
|
||||||
|
//and also sets its own eventhandler
|
||||||
|
wxEvtHandler *PopEventHandler( bool deleteHandler = FALSE );
|
||||||
|
//recursive calls for contained objects to set eventhandlers,
|
||||||
|
//and also sets its own eventhandler
|
||||||
|
void AppendEventHandler(wxEvtHandler *handler);
|
||||||
|
//recursive calls for contained objects to set eventhandlers,
|
||||||
|
//and also sets its own eventhandler
|
||||||
|
wxEvtHandler *RemoveLastEventHandler(bool deleteHandler);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
//to position the object
|
||||||
|
wxTransformMatrix lworld;
|
||||||
|
|
||||||
|
wxList m_objects;
|
||||||
|
|
||||||
|
friend class wxCanvas;
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvasObjectRef is a reference to any wxCanvasObject derived class.
|
||||||
|
// It does not duplicate the referenced object.
|
||||||
|
// It has a matrix to reposition/rotate/scale the object it references.
|
||||||
|
// The position/matrix of the referenced Object is accumulated with the one here.
|
||||||
|
class wxCanvasObjectRef: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasObjectRef(double x, double y,wxCanvasObject* obj);
|
||||||
|
|
||||||
|
//set rotation for the reference
|
||||||
|
void SetRotation(double rotation);
|
||||||
|
|
||||||
|
//set scale in x and y ( > zero)
|
||||||
|
void SetScale( double scalex, double scaley );
|
||||||
|
|
||||||
|
void SetAdmin(wxCanvasAdmin* admin);
|
||||||
|
|
||||||
|
double GetPosX() { return lworld.GetValue(2,0); }
|
||||||
|
double GetPosY() { return lworld.GetValue(2,1); }
|
||||||
|
void SetPosXY( double x, double y) {lworld.SetValue(2,0,x);lworld.SetValue(2,1,y);CalcBoundingBox();};
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
void CalcBoundingBox();
|
||||||
|
virtual void Render(wxTransformMatrix* cworld,int x, int y, int width, int height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
//return this object if one of the objects it references is hit
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
virtual wxCanvasObject* Contains( wxCanvasObject* obj );
|
||||||
|
|
||||||
|
//recursive calls for contained objects to set eventhandlers,
|
||||||
|
//and also sets its own eventhandler
|
||||||
|
void PushEventHandler( wxEvtHandler *handler );
|
||||||
|
//recursive calls for contained objects to set eventhandlers,
|
||||||
|
//and also sets its own eventhandler
|
||||||
|
wxEvtHandler *PopEventHandler( bool deleteHandler = FALSE );
|
||||||
|
//recursive calls for contained objects to set eventhandlers,
|
||||||
|
//and also sets its own eventhandler
|
||||||
|
void AppendEventHandler(wxEvtHandler *handler);
|
||||||
|
//recursive calls for contained objects to set eventhandlers,
|
||||||
|
//and also sets its own eventhandler
|
||||||
|
wxEvtHandler *RemoveLastEventHandler(bool deleteHandler);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
//to position the object
|
||||||
|
wxTransformMatrix lworld;
|
||||||
|
|
||||||
|
//reference to another wxCanvasObject
|
||||||
|
wxCanvasObject* m_obj;
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvasRect
|
||||||
|
class wxCanvasRect: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasRect( double x, double y, double w, double h , double radius=0 );
|
||||||
|
void SetBrush( const wxBrush& brush) { m_brush = brush; };
|
||||||
|
void SetPen( const wxPen& pen) { m_pen = pen; CalcBoundingBox(); };
|
||||||
|
|
||||||
|
double GetPosX() { return m_x; }
|
||||||
|
double GetPosY() { return m_y; }
|
||||||
|
void SetPosXY( double x, double y) {m_x=x; m_y=y; CalcBoundingBox();};
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxPen m_pen;
|
||||||
|
wxBrush m_brush;
|
||||||
|
|
||||||
|
double m_x;
|
||||||
|
double m_y;
|
||||||
|
double m_width;
|
||||||
|
double m_height;
|
||||||
|
double m_radius;
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxCanvasCircle
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
class wxCanvasCircle: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasCircle( double x, double y, double radius );
|
||||||
|
void SetBrush( const wxBrush& brush) { m_brush = brush; };
|
||||||
|
void SetPen( const wxPen& pen) { m_pen = pen; CalcBoundingBox(); };
|
||||||
|
|
||||||
|
double GetPosX() { return m_x; }
|
||||||
|
double GetPosY() { return m_y; }
|
||||||
|
void SetPosXY( double x, double y) {m_x=x; m_y=y;CalcBoundingBox(); };
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxPen m_pen;
|
||||||
|
wxBrush m_brush;
|
||||||
|
|
||||||
|
double m_x;
|
||||||
|
double m_y;
|
||||||
|
double m_radius;
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvasEllipse
|
||||||
|
class wxCanvasEllipse: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasEllipse( double x, double y, double width, double height );
|
||||||
|
void SetBrush( const wxBrush& brush) { m_brush = brush; };
|
||||||
|
void SetPen( const wxPen& pen) { m_pen = pen; CalcBoundingBox(); };
|
||||||
|
|
||||||
|
double GetPosX() { return m_x; }
|
||||||
|
double GetPosY() { return m_y; }
|
||||||
|
void SetPosXY( double x, double y) {m_x=x; m_y=y; CalcBoundingBox();};
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxPen m_pen;
|
||||||
|
wxBrush m_brush;
|
||||||
|
|
||||||
|
double m_x;
|
||||||
|
double m_y;
|
||||||
|
double m_width;
|
||||||
|
double m_height;
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvasEllipticArc
|
||||||
|
class wxCanvasEllipticArc: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasEllipticArc( double x, double y, double width, double height, double start, double end );
|
||||||
|
void SetBrush( const wxBrush& brush) { m_brush = brush; };
|
||||||
|
void SetPen( const wxPen& pen) { m_pen = pen; CalcBoundingBox(); };
|
||||||
|
|
||||||
|
double GetPosX() { return m_x; }
|
||||||
|
double GetPosY() { return m_y; }
|
||||||
|
void SetPosXY( double x, double y) {m_x=x; m_y=y; CalcBoundingBox();};
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxPen m_pen;
|
||||||
|
wxBrush m_brush;
|
||||||
|
|
||||||
|
double m_x;
|
||||||
|
double m_y;
|
||||||
|
double m_width;
|
||||||
|
double m_height;
|
||||||
|
double m_start;
|
||||||
|
double m_end;
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvasLine
|
||||||
|
class wxCanvasLine: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasLine( double x1, double y1, double x2, double y2 );
|
||||||
|
void SetPen( const wxPen& pen) { m_pen = pen; CalcBoundingBox(); };
|
||||||
|
|
||||||
|
|
||||||
|
double GetPosX() { return m_x1; }
|
||||||
|
double GetPosY() { return m_y1; }
|
||||||
|
void SetPosXY( double x, double y) {m_x1=x; m_y1=y; CalcBoundingBox();};
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxPen m_pen;
|
||||||
|
|
||||||
|
double m_x1;
|
||||||
|
double m_y1;
|
||||||
|
double m_x2;
|
||||||
|
double m_y2;
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvasImage
|
||||||
|
class wxCanvasImage: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasImage( const wxImage &image, double x, double y, double w, double h );
|
||||||
|
|
||||||
|
double GetPosX() { return m_x; }
|
||||||
|
double GetPosY() { return m_y; }
|
||||||
|
void SetPosXY( double x, double y);
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
private:
|
||||||
|
double m_x;
|
||||||
|
double m_y;
|
||||||
|
double m_width;
|
||||||
|
double m_height;
|
||||||
|
|
||||||
|
wxImage m_image;
|
||||||
|
int m_orgw,m_orgh;
|
||||||
|
|
||||||
|
// cache
|
||||||
|
wxBitmap m_cBitmap;
|
||||||
|
wxImage m_cImage;
|
||||||
|
int m_cW;
|
||||||
|
int m_cH;
|
||||||
|
double m_cR;
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxCanvasControl
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxCanvasControl: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasControl( wxWindow *control );
|
||||||
|
~wxCanvasControl();
|
||||||
|
|
||||||
|
double GetPosX();
|
||||||
|
double GetPosY();
|
||||||
|
void SetPosXY( double x, double y);
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
void MoveRelative( double x, double y );
|
||||||
|
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxWindow *m_control;
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvasText
|
||||||
|
class wxCanvasText: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasText( const wxString &text, double x, double y, const wxString &foneFile, int size );
|
||||||
|
~wxCanvasText();
|
||||||
|
|
||||||
|
double GetPosX() { return m_x; }
|
||||||
|
double GetPosY() { return m_y; }
|
||||||
|
void SetPosXY( double x, double y) {m_x=x; m_y=y;CalcBoundingBox(); };
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
void SetRGB( unsigned char red, unsigned char green, unsigned char blue );
|
||||||
|
void SetFlag( int flag );
|
||||||
|
int GetFlag() { return m_flag; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxString m_text;
|
||||||
|
double m_x;
|
||||||
|
double m_y;
|
||||||
|
unsigned char *m_alpha;
|
||||||
|
void *m_faceData;
|
||||||
|
int m_flag;
|
||||||
|
int m_red;
|
||||||
|
int m_green;
|
||||||
|
int m_blue;
|
||||||
|
wxString m_fontFileName;
|
||||||
|
int m_size;
|
||||||
|
};
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
// wxCanvas is used to display a wxCanvasGroupObject, which contains wxCanvasObject derived
|
||||||
|
// drawable objects. The group to draw is called the root.
|
||||||
|
// All objects are defined in world coordinates, relative to its parent (e.g. nested groups)
|
||||||
|
// There are methods to convert from world to device coordinates and visa versa.
|
||||||
|
// Rendering a draw is normally started on the root, it to a buffer, afterwords
|
||||||
|
// an update of the damaged parts will blitted from the buffer to the screen.
|
||||||
|
// This is done in Idle time, but can also be forced.
|
||||||
|
// World coordinates can be with the Y axis going up are down.
|
||||||
|
// The area of the drawing in world coordinates that is visible on the canvas
|
||||||
|
// can be set. Parts of this area can be zoomed into resulting in scroll bars
|
||||||
|
// to be displayed.
|
||||||
|
class wxCanvas: public wxScrolledWindow
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// constructors and destructors
|
||||||
|
wxCanvas( wxCanvasAdmin* admin ,wxWindow *parent, wxWindowID id = -1,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = wxScrolledWindowStyle );
|
||||||
|
virtual ~wxCanvas();
|
||||||
|
|
||||||
|
//background colour for the canvas
|
||||||
|
virtual void SetColour( const wxColour& background );
|
||||||
|
|
||||||
|
//update the area given in device coordinates
|
||||||
|
virtual void Update( int x, int y, int width, int height, bool blit = TRUE );
|
||||||
|
|
||||||
|
//blit all updated areas now to the screen, else it will happen in idle time.
|
||||||
|
//Use this to support dragging for instance, becuase in such cases idle time
|
||||||
|
//will take to long.
|
||||||
|
virtual void UpdateNow();
|
||||||
|
|
||||||
|
//prevent canvas activety
|
||||||
|
virtual void Freeze();
|
||||||
|
//allow canvas activety
|
||||||
|
virtual void Thaw();
|
||||||
|
|
||||||
|
//get the buffer that is used for rendering in general
|
||||||
|
inline wxBitmap *GetBuffer() { return &m_buffer; }
|
||||||
|
//get the DC that is used for rendering
|
||||||
|
inline wxDC *GetDC() { return m_renderDC; }
|
||||||
|
//set the DC that is used for rendering
|
||||||
|
inline void SetDC(wxDC* dc) { m_renderDC=dc; }
|
||||||
|
|
||||||
|
inline int GetBufferWidth() { return m_buffer.GetWidth(); }
|
||||||
|
inline int GetBufferHeight() { return m_buffer.GetHeight(); }
|
||||||
|
|
||||||
|
//updating is needed for the canvas if the buffer did change
|
||||||
|
bool NeedUpdate() { return m_needUpdate; }
|
||||||
|
bool IsFrozen() { return m_frozen; }
|
||||||
|
|
||||||
|
//blit damaged areas in the buffer to the screen
|
||||||
|
void BlitBuffer( wxDC &dc );
|
||||||
|
|
||||||
|
//redirect events to this canvas object
|
||||||
|
void SetCaptureMouse( wxCanvasObject *obj );
|
||||||
|
//are events redirected, if so return the object else NULL
|
||||||
|
inline wxCanvasObject* GetCaptured() { return m_captureMouse;}
|
||||||
|
|
||||||
|
//set the root group where the objects for this canvas are stored
|
||||||
|
void SetRoot(wxCanvasObjectGroup* aroot){m_root=aroot;}
|
||||||
|
|
||||||
|
//get root group that is displayed on the canvas
|
||||||
|
wxCanvasObjectGroup* GetRoot(){return m_root;}
|
||||||
|
|
||||||
|
//scroll the window in device coordinates
|
||||||
|
virtual void ScrollWindow( int dx, int dy,
|
||||||
|
const wxRect* rect = (wxRect *) NULL );
|
||||||
|
|
||||||
|
//get y axis orientation
|
||||||
|
virtual bool GetYaxis() { return FALSE; }
|
||||||
|
|
||||||
|
//get the visible part in world coordinates
|
||||||
|
virtual double GetMinX() const;
|
||||||
|
virtual double GetMinY() const;
|
||||||
|
virtual double GetMaxX() const;
|
||||||
|
virtual double GetMaxY() const;
|
||||||
|
|
||||||
|
//convert from window to virtual coordinates
|
||||||
|
virtual double DeviceToLogicalX(int x) const;
|
||||||
|
virtual double DeviceToLogicalY(int y) const;
|
||||||
|
virtual double DeviceToLogicalXRel(int x) const;
|
||||||
|
virtual double DeviceToLogicalYRel(int y) const;
|
||||||
|
virtual int LogicalToDeviceX(double x) const;
|
||||||
|
virtual int LogicalToDeviceY(double y) const;
|
||||||
|
virtual int LogicalToDeviceXRel(double x) const;
|
||||||
|
virtual int LogicalToDeviceYRel(double y) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
wxBitmap m_buffer;
|
||||||
|
|
||||||
|
//always available and m_buffer selected
|
||||||
|
wxDC* m_renderDC;
|
||||||
|
|
||||||
|
bool m_needUpdate;
|
||||||
|
wxList m_updateRects;
|
||||||
|
wxCanvasObjectGroup* m_root;
|
||||||
|
|
||||||
|
wxColour m_background;
|
||||||
|
bool m_frozen;
|
||||||
|
wxCanvasObject *m_lastMouse;
|
||||||
|
wxCanvasObject *m_captureMouse;
|
||||||
|
|
||||||
|
int m_oldDeviceX,m_oldDeviceY;
|
||||||
|
|
||||||
|
wxCanvasAdmin* m_admin;
|
||||||
|
|
||||||
|
private:
|
||||||
|
int m_bufferX,m_bufferY;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void OnMouse( wxMouseEvent &event );
|
||||||
|
void OnPaint( wxPaintEvent &event );
|
||||||
|
void OnSize( wxSizeEvent &event );
|
||||||
|
void OnIdle( wxIdleEvent &event );
|
||||||
|
void OnSetFocus( wxFocusEvent &event );
|
||||||
|
void OnKillFocus( wxFocusEvent &event );
|
||||||
|
void OnEraseBackground( wxEraseEvent &event );
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_CLASS(wxCanvas)
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class wxVectorCanvas: public wxCanvas
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// constructors and destructors
|
||||||
|
wxVectorCanvas( wxCanvasAdmin* admin ,wxWindow *parent, wxWindowID id = -1,
|
||||||
|
const wxPoint& pos = wxDefaultPosition,
|
||||||
|
const wxSize& size = wxDefaultSize,
|
||||||
|
long style = wxScrolledWindowStyle );
|
||||||
|
|
||||||
|
//scroll the window in device coordinates
|
||||||
|
virtual void ScrollWindow( int dx, int dy,
|
||||||
|
const wxRect* rect = (wxRect *) NULL );
|
||||||
|
|
||||||
|
//set if the Yaxis goes up or down
|
||||||
|
void SetYaxis(bool up) { m_yaxis=up; }
|
||||||
|
|
||||||
|
//get currently used Yaxis setting
|
||||||
|
virtual bool GetYaxis() { return m_yaxis; }
|
||||||
|
|
||||||
|
//to set the total area in world coordinates that can be scrolled.
|
||||||
|
// when totaly zoomed out (SetMappingScroll same size as given here),
|
||||||
|
// this will be the area displayed.
|
||||||
|
// To display all of a drawing, set this here to the boundingbox of the root group
|
||||||
|
// of the canvas.
|
||||||
|
void SetScroll(double vx1,double vy1,double vx2,double vy2);
|
||||||
|
|
||||||
|
//given the virtual size to be displayed, the mappingmatrix will be calculated
|
||||||
|
//in such a manner that it fits (same ratio in width and height) to the window size.
|
||||||
|
//The window size is used to intitialize the mapping.
|
||||||
|
//The virtual size is just an indication, it will be ajusted to fit in the client window ratio.
|
||||||
|
//When border is set an extra margin is added so that the drawing will fit nicely.
|
||||||
|
// To display all of a drawing, set this here to the boundingbox of the root group
|
||||||
|
// of the canvas.
|
||||||
|
void SetMappingScroll(double vx1,double vy1,double vx2,double vy2,bool border);
|
||||||
|
|
||||||
|
//matrix for calculating the virtual coordinate given a screen coordinate
|
||||||
|
wxTransformMatrix GetInverseMappingMatrix();
|
||||||
|
|
||||||
|
//matrix for calculating the screen coordinate given a virtual coordinate
|
||||||
|
wxTransformMatrix GetMappingMatrix();
|
||||||
|
|
||||||
|
//get minimum X of the visible part in world coordinates
|
||||||
|
virtual double GetMinX() const;
|
||||||
|
virtual double GetMinY() const;
|
||||||
|
virtual double GetMaxX() const;
|
||||||
|
virtual double GetMaxY() const;
|
||||||
|
|
||||||
|
//convert from window to virtual coordinates and back
|
||||||
|
virtual double DeviceToLogicalX(int x) const;
|
||||||
|
virtual double DeviceToLogicalY(int y) const;
|
||||||
|
virtual double DeviceToLogicalXRel(int x) const;
|
||||||
|
virtual double DeviceToLogicalYRel(int y) const;
|
||||||
|
virtual int LogicalToDeviceX(double x) const;
|
||||||
|
virtual int LogicalToDeviceY(double y) const;
|
||||||
|
virtual int LogicalToDeviceXRel(double x) const;
|
||||||
|
virtual int LogicalToDeviceYRel(double y) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// up or down
|
||||||
|
bool m_yaxis;
|
||||||
|
|
||||||
|
// holds the matrix for mapping from virtual to screen coordinates
|
||||||
|
wxTransformMatrix m_mapping_matrix;
|
||||||
|
|
||||||
|
// holds the inverse of the mapping matrix
|
||||||
|
wxTransformMatrix m_inverse_mapping;
|
||||||
|
|
||||||
|
//virtual coordinates of total drawing
|
||||||
|
double m_virtm_minX, m_virtm_minY, m_virtm_maxX, m_virtm_maxY;
|
||||||
|
|
||||||
|
// virtual coordinates box
|
||||||
|
double m_virt_minX, m_virt_minY, m_virt_maxX, m_virt_maxY;
|
||||||
|
|
||||||
|
// bounding box
|
||||||
|
double m_minX, m_minY, m_maxX, m_maxY;
|
||||||
|
|
||||||
|
//are scroll bars active?
|
||||||
|
bool m_scrolled;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void OnScroll(wxScrollWinEvent& event);
|
||||||
|
void OnChar( wxKeyEvent &event );
|
||||||
|
void OnSize( wxSizeEvent &event );
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_CLASS(wxVectorCanvas)
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
//:defenition
|
||||||
|
//Contains a list of wxCanvas Objects that will be maintained through this class.
|
||||||
|
//Each wxCanvasObject can be displayed on several wxCanvas Objects at the same time.
|
||||||
|
//The active wxCanvas is used to render and convert coordinates from world to device.
|
||||||
|
//So it is important to set the active wxCanvas based on the wxCanvas that has the focus
|
||||||
|
//or is scrolled etc. This is normally done within wxCanvas when appropriate.
|
||||||
|
class wxCanvasAdmin
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// constructors and destructors
|
||||||
|
wxCanvasAdmin();
|
||||||
|
virtual ~wxCanvasAdmin();
|
||||||
|
|
||||||
|
//convert from window to virtual coordinates
|
||||||
|
double DeviceToLogicalX(int x) const;
|
||||||
|
//convert from window to virtual coordinates
|
||||||
|
double DeviceToLogicalY(int y) const;
|
||||||
|
//convert from window to virtual coordinates relatif
|
||||||
|
double DeviceToLogicalXRel(int x) const;
|
||||||
|
//convert from window to virtual coordinates relatif
|
||||||
|
double DeviceToLogicalYRel(int y) const;
|
||||||
|
//convert from virtual to window coordinates
|
||||||
|
int LogicalToDeviceX(double x) const;
|
||||||
|
//convert from virtual to window coordinates
|
||||||
|
int LogicalToDeviceY(double y) const;
|
||||||
|
//convert from virtual to window coordinates relatif
|
||||||
|
int LogicalToDeviceXRel(double x) const;
|
||||||
|
//convert from virtual to window coordinates relatif
|
||||||
|
int LogicalToDeviceYRel(double y) const;
|
||||||
|
|
||||||
|
//update in the buffer off all canvases, the area given in world coordinates
|
||||||
|
virtual void Update(wxCanvasObject* obj, double x, double y, double width, double height);
|
||||||
|
|
||||||
|
//blit all updated areas now to the screen, else it will happen in idle time.
|
||||||
|
//Use this to support dragging for instance, becuase in such cases idle time
|
||||||
|
//will take to long.
|
||||||
|
virtual void UpdateNow();
|
||||||
|
|
||||||
|
//append another canvas
|
||||||
|
virtual void Append( wxCanvas* canvas );
|
||||||
|
|
||||||
|
//remove a canvas
|
||||||
|
virtual void Remove( wxCanvas* canvas );
|
||||||
|
|
||||||
|
//set the given canvas as active (for rendering, coordinate conversion etc.)
|
||||||
|
void SetActive(wxCanvas* activate);
|
||||||
|
|
||||||
|
//get active canvas
|
||||||
|
inline wxCanvas* GetActive() {return m_active;};
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxList m_canvaslist;
|
||||||
|
wxCanvas* m_active;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
// WXCANVAS
|
||||||
|
|
58
contrib/include/wx/canvas/liner.h
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: liner.h
|
||||||
|
// Author: Klaas Holwerda
|
||||||
|
// Created: 1/10/2000
|
||||||
|
// Copyright: 2000 (c) Klaas Holwerda
|
||||||
|
// Licence: wxWindows Licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
#ifndef __WXLINER_H
|
||||||
|
#define __WXLINER_H
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "liner.cpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#include "wx/geometry.h"
|
||||||
|
|
||||||
|
enum OUTPRODUCT {R_IS_LEFT,R_IS_ON,R_IS_RIGHT};
|
||||||
|
|
||||||
|
// Status of a point to a wxLine
|
||||||
|
enum R_PointStatus {R_LEFT_SIDE, R_RIGHT_SIDE, R_ON_AREA, R_IN_AREA};
|
||||||
|
|
||||||
|
class wxLine
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
// constructors and destructor
|
||||||
|
wxLine( double x1, double y1, double x2, double y2 );
|
||||||
|
wxLine( const wxPoint2DDouble& a, const wxPoint2DDouble& b);
|
||||||
|
~wxLine();
|
||||||
|
|
||||||
|
wxPoint2DDouble GetBeginPoint(); // Get the beginpoint from a wxLine
|
||||||
|
wxPoint2DDouble GetEndPoint(); // Get the endpoint from a wxLine
|
||||||
|
bool CheckIntersect( wxLine&, double Marge); // Check if two wxLines intersects
|
||||||
|
int Intersect( wxLine&, wxPoint2DDouble& bp ,wxPoint2DDouble& ep ,double Marge) ; // Intersects two wxLines
|
||||||
|
bool Intersect( wxLine& lijn, wxPoint2DDouble& crossing); //intersect two (infinit) lines
|
||||||
|
R_PointStatus PointOnLine( const wxPoint2DDouble& a_Point, double& Distance, double Marge ); //For an infinite wxLine
|
||||||
|
R_PointStatus PointInLine( const wxPoint2DDouble& a_Point, double& Distance, double Marge ); //For a non-infinite wxLine
|
||||||
|
OUTPRODUCT OutProduct( const wxLine& two, double accur); // outproduct of two wxLines
|
||||||
|
double Calculate_Y( double X); // Caclulate Y if X is known
|
||||||
|
void Virtual_Point( wxPoint2DDouble& a_point, double distance) const;
|
||||||
|
wxLine& operator=( const wxLine&); // assignment operator
|
||||||
|
void CalculateLineParameters(); // Calculate the parameters if nessecary
|
||||||
|
void OffsetContour( const wxLine& nextline, double factor,wxPoint2DDouble& offsetpoint) const;
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
int ActionOnTable1(R_PointStatus,R_PointStatus); // Function needed for Intersect
|
||||||
|
int ActionOnTable2(R_PointStatus,R_PointStatus); // Function needed for Intersect
|
||||||
|
|
||||||
|
double m_AA;
|
||||||
|
double m_BB;
|
||||||
|
double m_CC;
|
||||||
|
wxPoint2DDouble m_a;
|
||||||
|
wxPoint2DDouble m_b;
|
||||||
|
bool m_valid_parameters;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
220
contrib/include/wx/canvas/polygon.h
Normal file
@@ -0,0 +1,220 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: polygon.h
|
||||||
|
// Author: Klaas Holwerda
|
||||||
|
// Created: XX/XX/XX
|
||||||
|
// Copyright: 2000 (c) Klaas Holwerda
|
||||||
|
// Licence: wxWindows Licence
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __WXPOLYGON_H__
|
||||||
|
#define __WXPOLYGON_H__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "polygon.cpp"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/wx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/matrix.h"
|
||||||
|
#include "wx/geometry.h"
|
||||||
|
#include "bbox.h"
|
||||||
|
#include "canvas.h"
|
||||||
|
|
||||||
|
enum INOUTPOLY {OUTSIDE_POLY,INSIDE_POLY,ON_POLY};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxCanvasPolygon
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxCanvasPolygon: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasPolygon( int n, wxPoint2DDouble points[], bool spline = FALSE );
|
||||||
|
~wxCanvasPolygon();
|
||||||
|
void SetBrush( const wxBrush& brush) { m_brush = brush; }
|
||||||
|
void SetPen( const wxPen& pen) { m_pen = pen; CalcBoundingBox(); }
|
||||||
|
|
||||||
|
//set colour 1
|
||||||
|
//being the background color if filling with a monochrome bitmap
|
||||||
|
//or in case of gradient filling the starting colour for the fill
|
||||||
|
void SetColour1( const wxColour& fg) { m_textfg=fg;}
|
||||||
|
//set colour 1
|
||||||
|
//being the foreground color if filling with a monochrome bitmap
|
||||||
|
//or in case of gradient filling the ending colour for the fill
|
||||||
|
void SetColour2( const wxColour& bg) { m_textbg=bg;}
|
||||||
|
//transparent filling when bitmapbrush is monochrome
|
||||||
|
void SetTransParent(bool transp) { m_transp=transp;}
|
||||||
|
//gradient filling using lines chnging in colour from colour1 to colour2
|
||||||
|
void SetGradient(bool gradient, const wxPen& gpen, double distance)
|
||||||
|
{ m_gradient=gradient;
|
||||||
|
m_gpen=gpen;
|
||||||
|
m_gdistance=distance;
|
||||||
|
}
|
||||||
|
|
||||||
|
double GetPosX() { return m_points[0].m_x; }
|
||||||
|
double GetPosY() { return m_points[0].m_y; }
|
||||||
|
void SetPosXY( double x, double y);
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
INOUTPOLY PointInPolygon(const wxPoint2DDouble& P, double marge);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
bool MoveUp(double horline, int& index, int direction);
|
||||||
|
void DetectCriticalPoints();
|
||||||
|
void FillPolygon(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
wxList m_CRlist;
|
||||||
|
wxList m_AETlist;
|
||||||
|
|
||||||
|
|
||||||
|
wxBrush m_brush;
|
||||||
|
wxPen m_pen;
|
||||||
|
wxColour m_textbg;
|
||||||
|
wxColour m_textfg;
|
||||||
|
|
||||||
|
//if brush is of type bitmap with a mask fill with mask transparent
|
||||||
|
bool m_transp;
|
||||||
|
bool m_gradient;
|
||||||
|
wxPen m_gpen;
|
||||||
|
double m_gdistance;
|
||||||
|
|
||||||
|
bool m_spline;
|
||||||
|
|
||||||
|
int m_n;
|
||||||
|
wxPoint2DDouble* m_points;
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxCanvasPolyline
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxCanvasPolyline: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasPolyline(int n, wxPoint2DDouble points[]);
|
||||||
|
~wxCanvasPolyline();
|
||||||
|
void SetPen( const wxPen& pen) { m_pen = pen; CalcBoundingBox(); }
|
||||||
|
|
||||||
|
double GetPosX() { return m_points[0].m_x; }
|
||||||
|
double GetPosY() { return m_points[0].m_y; }
|
||||||
|
void SetPosXY( double x, double y);
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
bool PointOnPolyline(const wxPoint2DDouble& P, double marge);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
wxPen m_pen;
|
||||||
|
|
||||||
|
int m_n;
|
||||||
|
wxPoint2DDouble* m_points;
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxCanvasPolygon
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxCanvasPolygonL: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasPolygonL(wxList* points, bool spline = FALSE);
|
||||||
|
~wxCanvasPolygonL();
|
||||||
|
void SetBrush( const wxBrush& brush) { m_brush = brush; }
|
||||||
|
void SetPen( const wxPen& pen) { m_pen = pen; CalcBoundingBox(); }
|
||||||
|
void SetColour1( const wxColour& fg) { m_textfg=fg;}
|
||||||
|
void SetColour2( const wxColour& bg) { m_textbg=bg;}
|
||||||
|
void SetTransParent(bool transp) { m_transp=transp;}
|
||||||
|
|
||||||
|
double GetPosX();
|
||||||
|
double GetPosY();
|
||||||
|
void SetPosXY( double x, double y);
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
INOUTPOLY PointInPolygon(const wxPoint2DDouble& P, double marge);
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
wxBrush m_brush;
|
||||||
|
wxPen m_pen;
|
||||||
|
bool m_spline;
|
||||||
|
wxColour m_textbg;
|
||||||
|
wxColour m_textfg;
|
||||||
|
//if brush is of type bitmap with a mask fill with mask transparent
|
||||||
|
bool m_transp;
|
||||||
|
|
||||||
|
wxList* m_lpoints;
|
||||||
|
};
|
||||||
|
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
// wxCanvasPolyline
|
||||||
|
//----------------------------------------------------------------------------
|
||||||
|
|
||||||
|
class wxCanvasPolylineL: public wxCanvasObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxCanvasPolylineL(wxList* points, bool spline );
|
||||||
|
~wxCanvasPolylineL();
|
||||||
|
void SetPen( const wxPen& pen) { m_pen = pen; CalcBoundingBox(); }
|
||||||
|
|
||||||
|
double GetPosX();
|
||||||
|
double GetPosY();
|
||||||
|
void SetPosXY( double x, double y);
|
||||||
|
|
||||||
|
void TransLate( double x, double y );
|
||||||
|
void CalcBoundingBox();
|
||||||
|
|
||||||
|
virtual void Render(wxTransformMatrix* cworld, int clip_x, int clip_y, int clip_width, int clip_height );
|
||||||
|
virtual void WriteSVG( wxTextOutputStream &stream );
|
||||||
|
|
||||||
|
wxCanvasObject* IsHitWorld( double x, double y, double margin = 0 );
|
||||||
|
|
||||||
|
bool PointOnPolyline(const wxPoint2DDouble& P, double marge);
|
||||||
|
|
||||||
|
private:
|
||||||
|
wxPen m_pen;
|
||||||
|
bool m_spline;
|
||||||
|
|
||||||
|
wxList* m_lpoints;
|
||||||
|
};
|
||||||
|
|
||||||
|
//active edge table
|
||||||
|
class wxAET
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
inline void CalculateLineParameters( const wxPoint2DDouble& p1 , const wxPoint2DDouble& p2 );
|
||||||
|
inline void CalculateXs( double y );
|
||||||
|
|
||||||
|
//line paramters
|
||||||
|
bool m_horizontal;
|
||||||
|
double m_BdivA;
|
||||||
|
double m_CdivA;
|
||||||
|
int m_index;
|
||||||
|
int m_direction;
|
||||||
|
//intersection point with scanline;
|
||||||
|
double m_xs;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
64
contrib/include/wx/fl/antiflickpl.h
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas (@Lithuania)
|
||||||
|
// Modified by:
|
||||||
|
// Created: 23/10/98
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __ANTIFLICKPL_G__
|
||||||
|
#define __ANTIFLICKPL_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "antiflickpl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
|
||||||
|
class cbAntiflickerPlugin : public cbPluginBase
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS( cbAntiflickerPlugin )
|
||||||
|
protected:
|
||||||
|
// double-buffers are shared "resource" among all instances of
|
||||||
|
// antiflicker plugin within the application
|
||||||
|
//
|
||||||
|
// TODO:: locking should be implemented, for multithreaded GUIs
|
||||||
|
|
||||||
|
static wxBitmap* mpVertBuf;
|
||||||
|
static wxBitmap* mpHorizBuf;
|
||||||
|
static wxMemoryDC* mpVertBufDc;
|
||||||
|
static wxMemoryDC* mpHorizBufDc;
|
||||||
|
|
||||||
|
static int mRefCount;
|
||||||
|
|
||||||
|
wxDC* mpLRUBufDc; // last-reacently-used buffer
|
||||||
|
wxRect mLRUArea; // last-reacently-used area
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// returns NULL, if sutable buffer is not present
|
||||||
|
wxDC* FindSuitableBuffer( const wxRect& forArea );
|
||||||
|
wxDC* AllocNewBuffer( const wxRect& forArea );
|
||||||
|
wxDC& GetWindowDC();
|
||||||
|
|
||||||
|
wxDC& GetClientDC();
|
||||||
|
public:
|
||||||
|
|
||||||
|
cbAntiflickerPlugin(void);
|
||||||
|
|
||||||
|
cbAntiflickerPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
|
||||||
|
|
||||||
|
virtual ~cbAntiflickerPlugin();
|
||||||
|
|
||||||
|
// handlers for plugin events
|
||||||
|
|
||||||
|
void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
|
||||||
|
void OnFinishDrawInArea( cbFinishDrawInAreaEvent& event );
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __ANTIFLICKPL_G__ */
|
||||||
|
|
122
contrib/include/wx/fl/bardragpl.h
Normal file
@@ -0,0 +1,122 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: 23/09/98
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __BARDRAGPL_G__
|
||||||
|
#define __BARDRAGPL_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "bardragpl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
#include "wx/fl/toolwnd.h"
|
||||||
|
|
||||||
|
class cbBarDragPlugin : public cbPluginBase
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS( cbBarDragPlugin )
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// plugin is active only in bar-dragging state
|
||||||
|
bool mBarDragStarted;
|
||||||
|
bool mCanStick; // flag used to prevent "bouncing" of hint-rectangle
|
||||||
|
wxScreenDC* mpScrDc; // created while tracking hint-rect
|
||||||
|
wxCursor* mpCurCursor;
|
||||||
|
|
||||||
|
// rectnagle shows the position/dimensions of the bar,
|
||||||
|
// if it would be docked now
|
||||||
|
|
||||||
|
wxRect mPrevHintRect;
|
||||||
|
wxRect mHintRect;
|
||||||
|
|
||||||
|
|
||||||
|
int mMouseInRectX;
|
||||||
|
int mMouseInRectY;
|
||||||
|
|
||||||
|
cbDockPane* mpSrcPane; // pane, from which the bar was originally taken
|
||||||
|
int mBarWidthInSrcPane;
|
||||||
|
|
||||||
|
cbDockPane* mpCurPane;
|
||||||
|
|
||||||
|
cbBarInfo* mpDraggedBar; // bar, which is being dragged
|
||||||
|
bool mBarWasFloating;
|
||||||
|
wxRect mFloatedBarBounds;
|
||||||
|
|
||||||
|
public: /*** public properties ***/
|
||||||
|
|
||||||
|
int mInClientHintBorder; // when hint-rect moves within client window area,
|
||||||
|
// the thicker rectangle is drawn using hatched brush,
|
||||||
|
// the default border width for this rectangle is 8 pix.
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
|
||||||
|
void AdjustHintRect( wxPoint& mousePos );
|
||||||
|
|
||||||
|
void ClipRectInFrame( wxRect& rect );
|
||||||
|
void ClipPosInFrame( wxPoint& pos );
|
||||||
|
|
||||||
|
cbDockPane* HitTestPanes( wxRect& rect );
|
||||||
|
cbDockPane* HitTestPanes( wxPoint& pos );
|
||||||
|
bool HitsPane( cbDockPane* pPane, wxRect& rect );
|
||||||
|
|
||||||
|
void CalcOnScreenDims( wxRect& rect );
|
||||||
|
|
||||||
|
int GetDistanceToPane( cbDockPane* pPane, wxPoint& mousePos );
|
||||||
|
|
||||||
|
bool IsInOtherPane ( wxPoint& mousePos );
|
||||||
|
bool IsInClientArea( wxPoint& mousePos );
|
||||||
|
bool IsInClientArea( wxRect& rect );
|
||||||
|
|
||||||
|
void StickToPane( cbDockPane* pPane, wxPoint& mousePos );
|
||||||
|
void UnstickFromPane( cbDockPane* pPane, wxPoint& mousePos );
|
||||||
|
|
||||||
|
int GetBarWidthInPane( cbDockPane* pPane );
|
||||||
|
int GetBarHeightInPane( cbDockPane* pPane );
|
||||||
|
|
||||||
|
// on-screen hint-tracking related methods
|
||||||
|
|
||||||
|
void StartTracking();
|
||||||
|
|
||||||
|
void DrawHintRect ( wxRect& rect, bool isInClientRect);
|
||||||
|
void EraseHintRect( wxRect& rect, bool isInClientRect);
|
||||||
|
|
||||||
|
void FinishTracking();
|
||||||
|
|
||||||
|
void DoDrawHintRect( wxRect& rect, bool isInClientRect);
|
||||||
|
|
||||||
|
void RectToScr( wxRect& frameRect, wxRect& scrRect );
|
||||||
|
|
||||||
|
void ShowHint( bool prevWasInClient );
|
||||||
|
|
||||||
|
public:
|
||||||
|
cbBarDragPlugin(void);
|
||||||
|
|
||||||
|
cbBarDragPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
|
||||||
|
|
||||||
|
virtual ~cbBarDragPlugin();
|
||||||
|
|
||||||
|
// handlers for plugin events
|
||||||
|
|
||||||
|
void OnMouseMove( cbMotionEvent& event );
|
||||||
|
void OnLButtonUp( cbLeftUpEvent& event );
|
||||||
|
void OnLButtonDown( cbLeftDownEvent& event );
|
||||||
|
void OnLDblClick( cbLeftDClickEvent& event );
|
||||||
|
|
||||||
|
// handles event, which oriniates from itself
|
||||||
|
void OnDrawHintRect( cbDrawHintRectEvent& event );
|
||||||
|
|
||||||
|
void OnStartBarDragging( cbStartBarDraggingEvent& event );
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __BARDRAGPL_G__ */
|
||||||
|
|
96
contrib/include/wx/fl/barhintspl.h
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: 30/11/98 (my 22th birthday :-)
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __DRAGHINTSPL_G__
|
||||||
|
#define __DRAGHINTSPL_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "barhintspl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
#include "wx/fl/toolwnd.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Intercepts bar-decoration and sizing events, draws 3d-hints
|
||||||
|
* around fixed and flexible bars, similar to those in Microsoft DevStudio 6.x
|
||||||
|
*/
|
||||||
|
|
||||||
|
class cbBarHintsPlugin : public cbPluginBase
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS( cbBarHintsPlugin )
|
||||||
|
|
||||||
|
protected:
|
||||||
|
cbDockPane* mpPane; // is set up temorarely, while handling event
|
||||||
|
|
||||||
|
cbMiniButton* mBoxes[2];
|
||||||
|
|
||||||
|
bool mBtnPressed;
|
||||||
|
bool mClosePressed;
|
||||||
|
cbBarInfo* mpClickedBar;
|
||||||
|
bool mDepressed;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// drawing helpers
|
||||||
|
|
||||||
|
void Draw3DBox ( wxDC& dc, const wxPoint& pos, bool pressed );
|
||||||
|
void DrawCloseBox ( wxDC& dc, const wxPoint& pos, bool pressed );
|
||||||
|
void DrawCollapseBox( wxDC& dc, const wxPoint& pos,
|
||||||
|
bool atLeft, bool disabled, bool pressed );
|
||||||
|
|
||||||
|
void DrawGrooves ( wxDC& dc, const wxPoint& pos, int length );
|
||||||
|
|
||||||
|
void DoDrawHint( wxDC& dc, wxRect& rect, int pos, int boxOfs, int grooveOfs, bool isFixed );
|
||||||
|
|
||||||
|
void GetHintsLayout( wxRect& rect, cbBarInfo& info,
|
||||||
|
int& boxOfs, int& grooveOfs, int& pos );
|
||||||
|
|
||||||
|
int HitTestHints( cbBarInfo& info, const wxPoint& pos );
|
||||||
|
|
||||||
|
void ExcludeHints( wxRect& rect, cbBarInfo& info );
|
||||||
|
|
||||||
|
void CreateBoxes();
|
||||||
|
|
||||||
|
public:
|
||||||
|
/* public properties */
|
||||||
|
|
||||||
|
bool mCloseBoxOn; // default: ON
|
||||||
|
bool mCollapseBoxOn; // default: ON
|
||||||
|
int mGrooveCount; // default: 2 (two shaded bars)
|
||||||
|
int mHintGap; // default: 5 (pixels from above, below, right and left)
|
||||||
|
int mXWeight; // default: 2 (width in pixels of lines which used for drawing cross)
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
cbBarHintsPlugin(void);
|
||||||
|
|
||||||
|
cbBarHintsPlugin( wxFrameLayout* pLayout, int paneMask = wxALL_PANES );
|
||||||
|
|
||||||
|
~cbBarHintsPlugin();
|
||||||
|
|
||||||
|
void SetGrooveCount( int nGrooves );
|
||||||
|
|
||||||
|
void OnInitPlugin();
|
||||||
|
|
||||||
|
// handlers of plugin-events
|
||||||
|
|
||||||
|
void OnSizeBarWindow( cbSizeBarWndEvent& event );
|
||||||
|
void OnDrawBarDecorations( cbDrawBarDecorEvent& event );
|
||||||
|
|
||||||
|
void OnLeftDown( cbLeftDownEvent& event );
|
||||||
|
void OnLeftUp ( cbLeftUpEvent& event );
|
||||||
|
void OnMotion ( cbMotionEvent& event );
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __DRAGHINTSPL_G__ */
|
||||||
|
|
47
contrib/include/wx/fl/cbcustom.h
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: 28/10/98
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __CBCUSTOM_G__
|
||||||
|
#define __CBCUSTOM_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "cbcustom.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
|
||||||
|
class cbSimpleCustomizationPlugin : public cbPluginBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DECLARE_DYNAMIC_CLASS( cbSimpleCustomizationPlugin )
|
||||||
|
|
||||||
|
int mCustMenuItemId;
|
||||||
|
public:
|
||||||
|
|
||||||
|
cbSimpleCustomizationPlugin(void);
|
||||||
|
|
||||||
|
cbSimpleCustomizationPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
|
||||||
|
|
||||||
|
// plugin-event handlers
|
||||||
|
|
||||||
|
void OnCustomizeBar( cbCustomizeBarEvent& event );
|
||||||
|
|
||||||
|
void OnCustomizeLayout( cbCustomizeLayoutEvent& event );
|
||||||
|
|
||||||
|
// menu-event handler
|
||||||
|
|
||||||
|
void OnMenuItemSelected( wxCommandEvent& event );
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __CBCUSTOM_G__ */
|
||||||
|
|
1745
contrib/include/wx/fl/controlbar.h
Normal file
22
contrib/include/wx/fl/dynbarhnd.h
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: 23/01/99
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __DYNBARHND_G__
|
||||||
|
#define __DYNBARHND_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "dynbarhnd.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
|
||||||
|
#endif /* __DYNBARHND_G__ */
|
||||||
|
|
204
contrib/include/wx/fl/dyntbar.h
Normal file
@@ -0,0 +1,204 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: ??/10/98
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __DYNTBAR_G__
|
||||||
|
#define __DYNTBAR_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "dyntbar.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/tbarbase.h"
|
||||||
|
#include "wx/dynarray.h"
|
||||||
|
|
||||||
|
// layout item
|
||||||
|
|
||||||
|
class wxToolLayoutItem : public wxObject
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
wxRect mRect;
|
||||||
|
bool mIsSeparator;
|
||||||
|
};
|
||||||
|
|
||||||
|
class wxDynToolInfo;
|
||||||
|
|
||||||
|
typedef wxToolLayoutItem* wxToolLayoutItemPtrT;
|
||||||
|
typedef wxDynToolInfo* wxDynToolInfoPtrT;
|
||||||
|
|
||||||
|
|
||||||
|
WX_DEFINE_ARRAY( wxToolLayoutItemPtrT, wxLayoutItemArrayT );
|
||||||
|
WX_DEFINE_ARRAY( wxDynToolInfoPtrT, wxDynToolInfoArrayT );
|
||||||
|
|
||||||
|
// base class for layouting algorithm implementations
|
||||||
|
|
||||||
|
class LayoutManagerBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void Layout( const wxSize& parentDim,
|
||||||
|
wxSize& resultingDim,
|
||||||
|
wxLayoutItemArrayT& items,
|
||||||
|
int horizGap,
|
||||||
|
int vertGap ) = 0;
|
||||||
|
|
||||||
|
virtual ~LayoutManagerBase() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
// layouts items in left-to-right order from
|
||||||
|
// top towards bottom
|
||||||
|
|
||||||
|
class BagLayout : public LayoutManagerBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual void Layout( const wxSize& parentDim,
|
||||||
|
wxSize& resultingDim,
|
||||||
|
wxLayoutItemArrayT& items,
|
||||||
|
int horizGap,
|
||||||
|
int vertGap );
|
||||||
|
};
|
||||||
|
|
||||||
|
class wxDynToolInfo : public wxToolLayoutItem
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxDynToolInfo)
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxWindow* mpToolWnd;
|
||||||
|
int mIndex;
|
||||||
|
wxSize mRealSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
// layouting orientations for tools
|
||||||
|
|
||||||
|
#define LO_HORIZONTAL 0
|
||||||
|
#define LO_VERTICAL 1
|
||||||
|
#define LO_FIT_TO_WINDOW 2
|
||||||
|
|
||||||
|
// class manages containment and layouting of tool-windows
|
||||||
|
|
||||||
|
class wxDynamicToolBar : public wxToolBarBase
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxDynamicToolBar)
|
||||||
|
protected:
|
||||||
|
|
||||||
|
friend class wxDynamicToolBarSerializer;
|
||||||
|
|
||||||
|
wxDynToolInfoArrayT mTools;
|
||||||
|
LayoutManagerBase* mpLayoutMan;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void SizeToolWindows();
|
||||||
|
|
||||||
|
public: /* public properties */
|
||||||
|
|
||||||
|
int mSepartorSize; // default: 8
|
||||||
|
int mVertGap; // default: 0
|
||||||
|
int mHorizGap; // default: 0
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxDynamicToolBar();
|
||||||
|
|
||||||
|
wxDynamicToolBar(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||||
|
const long style = wxNO_BORDER, const int orientation = wxVERTICAL,
|
||||||
|
const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
|
||||||
|
|
||||||
|
~wxDynamicToolBar(void);
|
||||||
|
|
||||||
|
bool Create(wxWindow *parent, const wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
|
||||||
|
const long style = wxNO_BORDER, const int orientation = wxVERTICAL, const int RowsOrColumns = 1, const wxString& name = wxToolBarNameStr);
|
||||||
|
|
||||||
|
// overridables
|
||||||
|
|
||||||
|
virtual void AddTool( int toolIndex,
|
||||||
|
wxWindow* pToolWindow,
|
||||||
|
const wxSize& size = wxDefaultSize );
|
||||||
|
|
||||||
|
virtual void AddTool( int toolIndex,
|
||||||
|
const wxString& imageFileName,
|
||||||
|
wxBitmapType imageFileType = wxBITMAP_TYPE_BMP,
|
||||||
|
const wxString& labelText = "", bool alignTextRight = FALSE,
|
||||||
|
bool isFlat = TRUE );
|
||||||
|
virtual void AddTool( int toolIndex, wxBitmap labelBmp,
|
||||||
|
const wxString& labelText = "", bool alignTextRight = FALSE,
|
||||||
|
bool isFlat = TRUE );
|
||||||
|
|
||||||
|
// method from wxToolBarBase (for compatibility), only
|
||||||
|
// first two arguments are valid
|
||||||
|
|
||||||
|
virtual wxToolBarToolBase *AddTool(const int toolIndex, const wxBitmap& bitmap, const wxBitmap& pushedBitmap = wxNullBitmap,
|
||||||
|
const bool toggle = FALSE, const long xPos = -1, const long yPos = -1, wxObject *clientData = NULL,
|
||||||
|
const wxString& helpString1 = "", const wxString& helpString2 = "");
|
||||||
|
|
||||||
|
virtual void AddSeparator( wxWindow* pSepartorWnd = NULL );
|
||||||
|
|
||||||
|
wxDynToolInfo* GetToolInfo( int toolIndex );
|
||||||
|
|
||||||
|
void RemveTool( int toolIndex );
|
||||||
|
|
||||||
|
// the default implementation draws shaded line
|
||||||
|
virtual void DrawSeparator( wxDynToolInfo& info, wxDC& dc );
|
||||||
|
|
||||||
|
// see definitions of orientation types
|
||||||
|
virtual bool Layout();
|
||||||
|
|
||||||
|
virtual void GetPreferredDim( const wxSize& givenDim, wxSize& prefDim );
|
||||||
|
|
||||||
|
virtual LayoutManagerBase* CreateDefaulLayout() { return new BagLayout(); }
|
||||||
|
|
||||||
|
virtual void SetLayout( LayoutManagerBase* pLayout );
|
||||||
|
|
||||||
|
virtual void EnableTool(const int toolIndex, const bool enable = TRUE);
|
||||||
|
|
||||||
|
// event handlers
|
||||||
|
|
||||||
|
void OnSize( wxSizeEvent& event );
|
||||||
|
void OnPaint( wxPaintEvent& event );
|
||||||
|
void OnEraseBackground( wxEraseEvent& event );
|
||||||
|
|
||||||
|
// overriden from wxToolBarBase
|
||||||
|
|
||||||
|
virtual bool Realize(void);
|
||||||
|
|
||||||
|
// stuff from the 2.1.15
|
||||||
|
|
||||||
|
virtual wxToolBarToolBase *FindToolForPosition(wxCoord x,
|
||||||
|
wxCoord y) const;
|
||||||
|
|
||||||
|
|
||||||
|
virtual bool DoInsertTool(size_t pos, wxToolBarToolBase *tool);
|
||||||
|
|
||||||
|
// the tool is still in m_tools list when this function is called, it will
|
||||||
|
// only be deleted from it if it succeeds
|
||||||
|
virtual bool DoDeleteTool(size_t pos, wxToolBarToolBase *tool);
|
||||||
|
|
||||||
|
// called when the tools enabled flag changes
|
||||||
|
virtual void DoEnableTool(wxToolBarToolBase *tool, bool enable);
|
||||||
|
|
||||||
|
// called when the tool is toggled
|
||||||
|
virtual void DoToggleTool(wxToolBarToolBase *tool, bool toggle);
|
||||||
|
|
||||||
|
// called when the tools "can be toggled" flag changes
|
||||||
|
virtual void DoSetToggle(wxToolBarToolBase *tool, bool toggle);
|
||||||
|
|
||||||
|
// the functions to create toolbar tools
|
||||||
|
virtual wxToolBarToolBase *CreateTool(int id,
|
||||||
|
const wxBitmap& bitmap1,
|
||||||
|
const wxBitmap& bitmap2,
|
||||||
|
bool toggle,
|
||||||
|
wxObject *clientData,
|
||||||
|
const wxString& shortHelpString,
|
||||||
|
const wxString& longHelpString);
|
||||||
|
virtual wxToolBarToolBase *CreateTool(wxControl *control);
|
||||||
|
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __DYNTBAR_G__ */
|
||||||
|
|
31
contrib/include/wx/fl/dyntbarhnd.h
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: 23/01/99
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __DYNTBARHND_G__
|
||||||
|
#define __DYNTBARHND_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "dyntbarhnd.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
#include "wx/fl/dyntbar.h"
|
||||||
|
|
||||||
|
class cbDynToolBarDimHandler : public cbBarDimHandlerBase
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS( cbDynToolBarDimHandler )
|
||||||
|
public:
|
||||||
|
void OnChangeBarState(cbBarInfo* pBar, int newState );
|
||||||
|
void OnResizeBar( cbBarInfo* pBar, const wxSize& given, wxSize& preferred );
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __DYNTBARHND_G__ */
|
||||||
|
|
140
contrib/include/wx/fl/frmview.h
Normal file
@@ -0,0 +1,140 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: 02/01/99
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __FRMVIEW_G__
|
||||||
|
#define __FRMVIEW_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "frmview.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/module.h"
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
#include "wx/fl/objstore.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class wxObjectStorage;
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
|
||||||
|
class wxFrameManager;
|
||||||
|
|
||||||
|
class wxFrameView : public wxEvtHandler
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
wxStringList mTopMenus;
|
||||||
|
wxFrameLayout* mpLayout;
|
||||||
|
wxFrameManager* mpFrameMgr;
|
||||||
|
bool mDoToolUpdates;
|
||||||
|
|
||||||
|
friend class wxFrameManager;
|
||||||
|
friend class wxFrameViewSerializer;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void OnIdle( wxIdleEvent& event);
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxFrameView();
|
||||||
|
~wxFrameView();
|
||||||
|
|
||||||
|
virtual void Activate();
|
||||||
|
virtual void Deactivate();
|
||||||
|
|
||||||
|
wxFrame* GetParentFrame();
|
||||||
|
wxWindow* GetClientWindow();
|
||||||
|
|
||||||
|
wxFrameManager& GetFrameManager();
|
||||||
|
|
||||||
|
void RegisterMenu( const wxString& topMenuName );
|
||||||
|
|
||||||
|
void CreateLayout();
|
||||||
|
wxFrameLayout* GetLayout();
|
||||||
|
void SetLayout( wxFrameLayout* pLayout );
|
||||||
|
void SetToolUpdates( bool doToolUpdates = TRUE );
|
||||||
|
|
||||||
|
|
||||||
|
// hooks for specific frame-views
|
||||||
|
|
||||||
|
virtual void OnInit() {}
|
||||||
|
|
||||||
|
virtual void OnSerialize( wxObjectStorage& store ) {}
|
||||||
|
virtual void OnActiveate() {}
|
||||||
|
virtual void OnDeactivate() {}
|
||||||
|
|
||||||
|
// imp. is mandatory
|
||||||
|
virtual void OnRecreate() {}
|
||||||
|
virtual void OnInitMenus() {}
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
class wxFrame;
|
||||||
|
|
||||||
|
class wxFrameManager : wxObject
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
wxList mViews;
|
||||||
|
wxWindow* mpFrameWnd;
|
||||||
|
int mActiveViewNo;
|
||||||
|
wxWindow* mpClientWnd;
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
wxObjectStorage mStore;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
wxString mSettingsFile;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void DoSerialize( wxObjectStorage& store );
|
||||||
|
void DestroyViews();
|
||||||
|
int GetViewNo( wxFrameView* pView );
|
||||||
|
void EnableMenusForView( wxFrameView* pView, bool enable );
|
||||||
|
void SyncAllMenus();
|
||||||
|
|
||||||
|
public:
|
||||||
|
wxFrameManager();
|
||||||
|
~wxFrameManager();
|
||||||
|
|
||||||
|
// if file name is empty, views are are not saved/loaded
|
||||||
|
|
||||||
|
virtual void Init( wxWindow* pMainFrame, const wxString& settingsFile = "" );
|
||||||
|
|
||||||
|
// synonyms
|
||||||
|
wxFrame* GetParentFrame();
|
||||||
|
wxWindow* GetParentWindow();
|
||||||
|
|
||||||
|
int GetActiveViewNo();
|
||||||
|
wxFrameView* GetActiveView();
|
||||||
|
wxNode* GetActiveViewNode();
|
||||||
|
|
||||||
|
wxFrameView* GetView( int viewNo );
|
||||||
|
|
||||||
|
void SetClinetWindow( wxWindow* pFrameClient );
|
||||||
|
wxWindow* GetClientWindow();
|
||||||
|
|
||||||
|
void AddView( wxFrameView* pFrmView );
|
||||||
|
void RemoveView( wxFrameView* pFrmView );
|
||||||
|
|
||||||
|
void ActivateView( int viewNo );
|
||||||
|
void ActivateView( wxFrameView* pFrmView );
|
||||||
|
void DeactivateCurrentView();
|
||||||
|
|
||||||
|
wxObjectStorage& GetObjectStore();
|
||||||
|
|
||||||
|
void SaveViewsNow();
|
||||||
|
bool ReloadViews();
|
||||||
|
|
||||||
|
bool ViewsAreLoaded();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __FRMVIEW_G__ */
|
||||||
|
|
74
contrib/include/wx/fl/garbagec.h
Normal file
@@ -0,0 +1,74 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas (@Lithuania)
|
||||||
|
// Modified by:
|
||||||
|
// Created: ??/10/98
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __GARBAGEC_G__
|
||||||
|
#define __GARBAGEC_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "garbagec.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/list.h"
|
||||||
|
|
||||||
|
struct GCItem
|
||||||
|
{
|
||||||
|
void* mpObj;
|
||||||
|
wxList mRefs; // references to other nodes
|
||||||
|
};
|
||||||
|
|
||||||
|
inline void* gc_node_to_obj( wxNode* pGCNode )
|
||||||
|
{
|
||||||
|
return ( (GCItem*) (pGCNode->Data()) )->mpObj;
|
||||||
|
}
|
||||||
|
|
||||||
|
// class implements extremely slow, but probably one of the most simple GC algorithms
|
||||||
|
|
||||||
|
class GarbageCollector
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
wxList mAllNodes;
|
||||||
|
wxList mRegularLst;
|
||||||
|
wxList mCycledLst;
|
||||||
|
|
||||||
|
wxNode* FindItemNode( void* pForObj );
|
||||||
|
void ResolveReferences();
|
||||||
|
|
||||||
|
wxNode* FindReferenceFreeItemNode();
|
||||||
|
void RemoveReferencesToNode( wxNode* pItemNode );
|
||||||
|
void DestroyItemList( wxList& lst );
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
GarbageCollector() {}
|
||||||
|
|
||||||
|
virtual ~GarbageCollector();
|
||||||
|
|
||||||
|
// prepare data for GC alg.
|
||||||
|
|
||||||
|
virtual void AddObject( void* pObj, int refCnt = 1 );
|
||||||
|
virtual void AddDependency( void* pObj, void* pDependsOnObj );
|
||||||
|
|
||||||
|
// executes GC alg.
|
||||||
|
|
||||||
|
virtual void ArrangeCollection();
|
||||||
|
|
||||||
|
// access results of the alg.
|
||||||
|
|
||||||
|
wxList& GetRegularObjects();
|
||||||
|
wxList& GetCycledObjects();
|
||||||
|
|
||||||
|
// removes all data from GC
|
||||||
|
|
||||||
|
void Reset();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __GARBAGEC_G__ */
|
||||||
|
|
123
contrib/include/wx/fl/gcupdatesmgr.h
Normal file
@@ -0,0 +1,123 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: 19/10/98
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __GCUPDATESMGR_G__
|
||||||
|
#define __GCUPDATESMGR_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "gcupdatesmgr.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
#include "wx/fl/updatesmgr.h"
|
||||||
|
|
||||||
|
#include "wx/fl/garbagec.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* class implements optimized logic for refreshing
|
||||||
|
* areas of frame layout - which actually need to be updated.
|
||||||
|
* Is used as default updates-manager by wxFrameLayout.
|
||||||
|
*
|
||||||
|
* it is called "Garbage Collecting" u.mgr for it's implementation
|
||||||
|
* tries to find out dependencies between bars, and to order
|
||||||
|
* them ito "hierarchy", this hierarchical sorting resembles
|
||||||
|
* implemenation of heap-garbage collectors, which resolve
|
||||||
|
* dependencies between references.
|
||||||
|
*
|
||||||
|
* Example: there are situations where the order of moving
|
||||||
|
* the windows does matter:
|
||||||
|
*
|
||||||
|
* case 1)
|
||||||
|
* ------ ---
|
||||||
|
* | A | |B|
|
||||||
|
* ------ ---> | |
|
||||||
|
* --- --- ------
|
||||||
|
* |B| | A |
|
||||||
|
* | | ------
|
||||||
|
* ---
|
||||||
|
* (future)
|
||||||
|
* (past)
|
||||||
|
*
|
||||||
|
* past/future positions of A and B windows completely overlapp, i.e.
|
||||||
|
* depend on each other, and there is not solution for
|
||||||
|
* moving the windows witout refreshing both of them,
|
||||||
|
* -- we have cyclic dependency here. The gc. alg will
|
||||||
|
* find this cyclic dependecy and will force "refresh"
|
||||||
|
* after movement.
|
||||||
|
*
|
||||||
|
* case 2)
|
||||||
|
*
|
||||||
|
* ------
|
||||||
|
* | A |
|
||||||
|
* ------ --->
|
||||||
|
* ---
|
||||||
|
* |B| ------
|
||||||
|
* | | | A |
|
||||||
|
* --- ------
|
||||||
|
* ---
|
||||||
|
* |B|
|
||||||
|
* | |
|
||||||
|
* ---
|
||||||
|
*
|
||||||
|
* (future)
|
||||||
|
* (past)
|
||||||
|
*
|
||||||
|
* in this case past/future positions do not overlapp, thus
|
||||||
|
* it's enough only to move windows, without refreshing them.
|
||||||
|
* GC will "notice" it.
|
||||||
|
*
|
||||||
|
* there is also third case, when overlapping is partial
|
||||||
|
* in this case the refershing can be also avoided by
|
||||||
|
* moving windows in the order of "most-dependant" towards the
|
||||||
|
* "least-dependent". GC handles this automatically, by
|
||||||
|
* sorting windows by their dependency-level (or "hierarchy")
|
||||||
|
*
|
||||||
|
* See garbagec.h for more details of this method, garbagec.h/cpp
|
||||||
|
* implement sorting of generic-dependencies (does not deal
|
||||||
|
* with graphical objects directly)
|
||||||
|
*
|
||||||
|
* Summary: improves performance when complex/large windows are
|
||||||
|
* moved around, by reducing number of repaints. Also helps
|
||||||
|
* to avoid dirty non-client areas of moved windows
|
||||||
|
* in some special cases of "overlapping anomalies"
|
||||||
|
*/
|
||||||
|
|
||||||
|
class cbGCUpdatesMgr : public cbSimpleUpdatesMgr
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS( cbGCUpdatesMgr )
|
||||||
|
protected:
|
||||||
|
|
||||||
|
GarbageCollector mGC;
|
||||||
|
|
||||||
|
void DoRepositionItems( wxList& items );
|
||||||
|
|
||||||
|
void AddItem( wxList& itemList,
|
||||||
|
cbBarInfo* pBar,
|
||||||
|
cbDockPane* pPane,
|
||||||
|
wxRect& curBounds,
|
||||||
|
wxRect& prevBounds );
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
cbGCUpdatesMgr(void) {}
|
||||||
|
|
||||||
|
cbGCUpdatesMgr( wxFrameLayout* pPanel );
|
||||||
|
|
||||||
|
// notificiactions received from Frame Layout :
|
||||||
|
|
||||||
|
virtual void OnStartChanges();
|
||||||
|
|
||||||
|
// refreshes parts of the frame layout, which need an update
|
||||||
|
virtual void UpdateNow();
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __GCUPDATESMGR_G__ */
|
||||||
|
|
120
contrib/include/wx/fl/hintanimpl.h
Normal file
@@ -0,0 +1,120 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: 9/11/98
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __HINTANIMPL_G__
|
||||||
|
#define __HINTANIMPL_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "hintanimpl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
|
||||||
|
#include "wx/timer.h"
|
||||||
|
|
||||||
|
class cbHintAnimTimer;
|
||||||
|
|
||||||
|
class cbHintAnimationPlugin : public cbPluginBase
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS( cbHintAnimationPlugin )
|
||||||
|
protected:
|
||||||
|
friend class cbHintAnimTimer;
|
||||||
|
|
||||||
|
wxScreenDC* mpScrDc; // created while tracking hint-rect
|
||||||
|
cbHintAnimTimer* mpAnimTimer;
|
||||||
|
|
||||||
|
// FOR NOW:: try it without mutually exculisve locks
|
||||||
|
volatile wxRect mCurRect;
|
||||||
|
|
||||||
|
// state variables
|
||||||
|
|
||||||
|
bool mAnimStarted;
|
||||||
|
bool mStopPending;
|
||||||
|
|
||||||
|
bool mPrevInClient;
|
||||||
|
bool mCurInClient;
|
||||||
|
|
||||||
|
wxRect mPrevRect;
|
||||||
|
|
||||||
|
public:
|
||||||
|
int mMorphDelay; // delay between frames in miliseconds, default: 20
|
||||||
|
int mMaxFrames; // number of iterations for hint morphing, default: 30
|
||||||
|
// (morph duration = mMorphDelay * mMaxFrames msec)
|
||||||
|
|
||||||
|
int mInClientHintBorder; // default: 4 pixels
|
||||||
|
|
||||||
|
bool mAccelerationOn; // TRUE, if morph accelerates, otherwise morph
|
||||||
|
// speed is constant. Default: TRUE
|
||||||
|
|
||||||
|
// TBD:: get/set methods for above members
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void StartTracking();
|
||||||
|
|
||||||
|
void DrawHintRect ( wxRect& rect, bool isInClientRect);
|
||||||
|
void EraseHintRect( wxRect& rect, bool isInClientRect);
|
||||||
|
|
||||||
|
void FinishTracking();
|
||||||
|
|
||||||
|
void DoDrawHintRect( wxRect& rect, bool isInClientRect);
|
||||||
|
|
||||||
|
void RectToScr( wxRect& frameRect, wxRect& scrRect );
|
||||||
|
|
||||||
|
public:
|
||||||
|
cbHintAnimationPlugin(void);
|
||||||
|
|
||||||
|
~cbHintAnimationPlugin();
|
||||||
|
|
||||||
|
cbHintAnimationPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
|
||||||
|
|
||||||
|
void OnDrawHintRect( cbDrawHintRectEvent& event );
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
// helper classes
|
||||||
|
|
||||||
|
struct MorphInfoT
|
||||||
|
{
|
||||||
|
wxPoint mFrom;
|
||||||
|
wxPoint mTill;
|
||||||
|
};
|
||||||
|
|
||||||
|
class cbHintAnimTimer : public wxTimer
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
|
||||||
|
friend class cbHintAnimationPlugin;
|
||||||
|
|
||||||
|
wxRect mPrevMorphed;
|
||||||
|
|
||||||
|
MorphInfoT mUpperLeft;
|
||||||
|
MorphInfoT mLowerRight;
|
||||||
|
int mCurIter;
|
||||||
|
|
||||||
|
long mLock;
|
||||||
|
|
||||||
|
cbHintAnimationPlugin* mpPl;
|
||||||
|
|
||||||
|
void MorphPoint( wxPoint& origin, MorphInfoT& info, wxPoint& point );
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
cbHintAnimTimer(void);
|
||||||
|
|
||||||
|
virtual void Notify(void);
|
||||||
|
|
||||||
|
virtual bool Init( cbHintAnimationPlugin* pAnimPl, bool reinit );
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __HINTANIMPL_G__ */
|
||||||
|
|
165
contrib/include/wx/fl/newbmpbtn.h
Normal file
@@ -0,0 +1,165 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Contrib. demo
|
||||||
|
// Author: Aleksandras Gluchovas
|
||||||
|
// Modified by:
|
||||||
|
// Created: ??/09/98
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __NEWBMPBTN_G__
|
||||||
|
#define __NEWBMPBTN_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "newbmpbtn.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/button.h"
|
||||||
|
#include "wx/string.h"
|
||||||
|
|
||||||
|
// button lable-text alignment types
|
||||||
|
|
||||||
|
#define NB_ALIGN_TEXT_RIGHT 0
|
||||||
|
#define NB_ALIGN_TEXT_BOTTOM 1
|
||||||
|
#define NB_NO_TEXT 2
|
||||||
|
#define NB_NO_IMAGE 3
|
||||||
|
|
||||||
|
// classes declared in this header file
|
||||||
|
|
||||||
|
class wxNewBitmapButton;
|
||||||
|
class wxBorderLessBitmapButton;
|
||||||
|
|
||||||
|
// alternative class for wxBmpButton
|
||||||
|
|
||||||
|
class wxNewBitmapButton: public wxPanel
|
||||||
|
{
|
||||||
|
DECLARE_DYNAMIC_CLASS(wxNewBitmapButton)
|
||||||
|
|
||||||
|
protected:
|
||||||
|
|
||||||
|
friend class wxNewBitmapButtonSerializer;
|
||||||
|
|
||||||
|
int mTextToLabelGap;
|
||||||
|
int mMarginX;
|
||||||
|
int mMarginY;
|
||||||
|
int mTextAlignment;
|
||||||
|
bool mIsSticky;
|
||||||
|
bool mIsFlat;
|
||||||
|
|
||||||
|
wxString mLabelText;
|
||||||
|
wxString mImageFileName;
|
||||||
|
wxBitmapType mImageFileType;
|
||||||
|
|
||||||
|
wxBitmap mDepressedBmp; // source image for rendering
|
||||||
|
// labels for particular state
|
||||||
|
|
||||||
|
wxBitmap mFocusedBmp; // may not be always present -
|
||||||
|
// only if mHasFocusedBmp is TRUE
|
||||||
|
|
||||||
|
wxBitmap* mpDepressedImg;
|
||||||
|
wxBitmap* mpPressedImg;
|
||||||
|
wxBitmap* mpDisabledImg;
|
||||||
|
wxBitmap* mpFocusedImg;
|
||||||
|
|
||||||
|
// button state variables;
|
||||||
|
bool mDragStarted;
|
||||||
|
bool mIsPressed;
|
||||||
|
bool mIsInFocus;
|
||||||
|
bool mPrevPressedState;
|
||||||
|
bool mPrevInFocusState;
|
||||||
|
|
||||||
|
bool mHasFocusedBmp;
|
||||||
|
|
||||||
|
// type of event which is fired upon depression of this button
|
||||||
|
int mFiredEventType;
|
||||||
|
|
||||||
|
// pens for drawing decorations (borders)
|
||||||
|
wxPen mBlackPen;
|
||||||
|
wxPen mDarkPen;
|
||||||
|
wxPen mGrayPen;
|
||||||
|
wxPen mLightPen;
|
||||||
|
|
||||||
|
bool mIsCreated;
|
||||||
|
int mSizeIsSet;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void DestroyLabels();
|
||||||
|
|
||||||
|
// returns the label which match the current button state
|
||||||
|
virtual wxBitmap* GetStateLabel();
|
||||||
|
|
||||||
|
virtual void DrawShade( int outerLevel,
|
||||||
|
wxDC& dc,
|
||||||
|
wxPen& upperLeftSidePen,
|
||||||
|
wxPen& lowerRightSidePen );
|
||||||
|
|
||||||
|
bool IsInWindow( int x,int y );
|
||||||
|
|
||||||
|
public:
|
||||||
|
|
||||||
|
wxNewBitmapButton( const wxBitmap& labelBitmap = wxNullBitmap,
|
||||||
|
const wxString& labelText = "",
|
||||||
|
int alignText = NB_ALIGN_TEXT_BOTTOM,
|
||||||
|
bool isFlat = TRUE,
|
||||||
|
// this is the default type of fired events
|
||||||
|
int firedEventType = wxEVT_COMMAND_MENU_SELECTED,
|
||||||
|
int marginX = 2,
|
||||||
|
int marginY = 2,
|
||||||
|
int textToLabelGap = 2,
|
||||||
|
bool isSticky = FALSE
|
||||||
|
);
|
||||||
|
|
||||||
|
// use this constructor if buttons have to be persistant
|
||||||
|
|
||||||
|
wxNewBitmapButton( const wxString& bitmapFileName,
|
||||||
|
const wxBitmapType bitmapFileType = wxBITMAP_TYPE_BMP,
|
||||||
|
const wxString& labelText = "",
|
||||||
|
int alignText = NB_ALIGN_TEXT_BOTTOM,
|
||||||
|
bool isFlat = TRUE,
|
||||||
|
// this is the default type of fired events
|
||||||
|
int firedEventType = wxEVT_COMMAND_MENU_SELECTED,
|
||||||
|
int marginX = 2,
|
||||||
|
int marginY = 2,
|
||||||
|
int textToLabelGap = 2,
|
||||||
|
bool isSticky = FALSE
|
||||||
|
);
|
||||||
|
|
||||||
|
~wxNewBitmapButton();
|
||||||
|
|
||||||
|
// should be called after Create();
|
||||||
|
virtual void Reshape();
|
||||||
|
|
||||||
|
// overridables
|
||||||
|
virtual void SetLabel(const wxBitmap& labelBitmap, const wxString& labelText = "" );
|
||||||
|
|
||||||
|
virtual void SetAlignments( int alignText = NB_ALIGN_TEXT_BOTTOM,
|
||||||
|
int marginX = 2,
|
||||||
|
int marginY = 2,
|
||||||
|
int textToLabelGap = 2);
|
||||||
|
|
||||||
|
virtual void DrawDecorations( wxDC& dc );
|
||||||
|
virtual void DrawLabel( wxDC& dc );
|
||||||
|
|
||||||
|
virtual void RenderLabelImage( wxBitmap*& destBmp, wxBitmap* srcBmp,
|
||||||
|
bool isEnabled = TRUE,
|
||||||
|
bool isPressed = FALSE);
|
||||||
|
|
||||||
|
virtual void RenderLabelImages();
|
||||||
|
virtual void RenderAllLabelImages();
|
||||||
|
|
||||||
|
// event handlers
|
||||||
|
void OnLButtonDown( wxMouseEvent& event );
|
||||||
|
void OnLButtonUp( wxMouseEvent& event );
|
||||||
|
void OnMouseMove( wxMouseEvent& event );
|
||||||
|
void OnSize( wxSizeEvent& event );
|
||||||
|
void OnPaint( wxPaintEvent& event );
|
||||||
|
void OnEraseBackground( wxEraseEvent& event );
|
||||||
|
void OnKillFocus( wxFocusEvent& event );
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __NEWBMPBTN_G__ */
|
||||||
|
|
119
contrib/include/wx/fl/panedrawpl.h
Normal file
@@ -0,0 +1,119 @@
|
|||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
// Name: No names yet.
|
||||||
|
// Purpose: Central header file for control-bar related classes
|
||||||
|
//
|
||||||
|
// Author: Aleksandras Gluchovas <mailto:alex@soften.ktu.lt>
|
||||||
|
// Modified by:
|
||||||
|
// Created: 06/09/98
|
||||||
|
// RCS-ID: $Id$
|
||||||
|
// Copyright: (c) Aleksandras Gluchovas
|
||||||
|
// Licence: wxWindows license
|
||||||
|
/////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
#ifndef __PANEDRAWPL_G__
|
||||||
|
#define __PANEDRAWPL_G__
|
||||||
|
|
||||||
|
#ifdef __GNUG__
|
||||||
|
#pragma interface "panedrawpl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include "wx/fl/controlbar.h"
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Simple, but all-in-one plugin implementation. Resembles look & feel of
|
||||||
|
* to MFC control-bars. Handles painting of pane and items in it.
|
||||||
|
* Fires bar/layout customization event, when user right-clicks bar/pane.
|
||||||
|
* Hooking an instance of this and row-layouting plugins per each pane,
|
||||||
|
* would be enough for the frame layout to function properly.
|
||||||
|
* (they are plugged in autimatically by wxFrameLayout class)
|
||||||
|
*/
|
||||||
|
|
||||||
|
class cbPaneDrawPlugin : public cbPluginBase
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DECLARE_DYNAMIC_CLASS( cbPaneDrawPlugin )
|
||||||
|
protected:
|
||||||
|
|
||||||
|
// resizing bars/rows state variables
|
||||||
|
bool mResizeStarted;
|
||||||
|
bool mResizeCursorOn;
|
||||||
|
wxPoint mDragOrigin;
|
||||||
|
|
||||||
|
cbBarInfo* mpDraggedBar; // also used when in bar-drag action
|
||||||
|
cbRowInfo* mpResizedRow;
|
||||||
|
|
||||||
|
bool mRowHandleHitted;
|
||||||
|
bool mIsUpperHandle;
|
||||||
|
bool mBarHandleHitted;
|
||||||
|
bool mIsLeftHandle;
|
||||||
|
bool mBarContentHitted;
|
||||||
|
|
||||||
|
// contstraints for dragging the handle
|
||||||
|
wxRect mHandleDragArea;
|
||||||
|
bool mHandleIsVertical;
|
||||||
|
int mHandleOfs;
|
||||||
|
int mDraggedDelta;
|
||||||
|
wxPoint mPrevPos;
|
||||||
|
|
||||||
|
// used for handling, start-draw-in-area events
|
||||||
|
wxClientDC* mpClntDc;
|
||||||
|
|
||||||
|
cbDockPane* mpPane; // is set up temorary short-cut, while handling event
|
||||||
|
|
||||||
|
protected:
|
||||||
|
// helpers
|
||||||
|
void DrawDraggedHandle( const wxPoint& pos, cbDockPane& pane );
|
||||||
|
|
||||||
|
virtual void DrawPaneShade( wxDC& dc, int alignment );
|
||||||
|
virtual void DrawPaneShadeForRow( cbRowInfo* pRow, wxDC& dc );
|
||||||
|
|
||||||
|
virtual void DrawUpperRowHandle( cbRowInfo* pRow, wxDC& dc );
|
||||||
|
virtual void DrawLowerRowHandle( cbRowInfo* pRow, wxDC& dc );
|
||||||
|
|
||||||
|
virtual void DrawUpperRowShades( cbRowInfo* pRow, wxDC& dc, int level );
|
||||||
|
virtual void DrawLowerRowShades( cbRowInfo* pRow, wxDC& dc, int level );
|
||||||
|
|
||||||
|
virtual void DrawBarInnerShadeRect( cbBarInfo* pBar, wxDC& dc );
|
||||||
|
|
||||||
|
virtual void DrawShade( int level, wxRect& rect, int alignment, wxDC& dc );
|
||||||
|
virtual void DrawShade1( int level, wxRect& rect, int alignment, wxDC& dc );
|
||||||
|
|
||||||
|
inline void SetLightPixel( int x, int y, wxDC& dc );
|
||||||
|
inline void SetDarkPixel ( int x, int y, wxDC& dc );
|
||||||
|
|
||||||
|
public:
|
||||||
|
cbPaneDrawPlugin(void);
|
||||||
|
|
||||||
|
cbPaneDrawPlugin( wxFrameLayout* pPanel, int paneMask = wxALL_PANES );
|
||||||
|
|
||||||
|
virtual ~cbPaneDrawPlugin();
|
||||||
|
|
||||||
|
virtual cbPluginBase* Clone() { return new cbPaneDrawPlugin(0,0); }
|
||||||
|
|
||||||
|
// handlers for plugin-events
|
||||||
|
|
||||||
|
void OnLButtonDown( cbLeftDownEvent& event );
|
||||||
|
void OnLDblClick ( cbLeftDClickEvent& event );
|
||||||
|
void OnLButtonUp ( cbLeftUpEvent& event );
|
||||||
|
void OnRButtonUp ( cbRightUpEvent& event );
|
||||||
|
void OnMouseMove ( cbMotionEvent& event );
|
||||||
|
|
||||||
|
void OnDrawPaneBackground ( cbDrawPaneBkGroundEvent& event );
|
||||||
|
void OnDrawPaneDecorations( cbDrawPaneDecorEvent& event );
|
||||||
|
|
||||||
|
void OnDrawRowDecorations ( cbDrawRowDecorEvent& event );
|
||||||
|
void OnDrawRowHandles ( cbDrawRowHandlesEvent& event );
|
||||||
|
void OnDrawRowBackground ( cbDrawRowBkGroundEvent& event );
|
||||||
|
|
||||||
|
void OnSizeBarWindow ( cbSizeBarWndEvent& event );
|
||||||
|
void OnDrawBarDecorations ( cbDrawBarDecorEvent& event );
|
||||||
|
void OnDrawBarHandles ( cbDrawBarHandlesEvent& event );
|
||||||
|
|
||||||
|
void OnStartDrawInArea ( cbStartDrawInAreaEvent& event );
|
||||||
|
void OnFinishDrawInArea ( cbFinishDrawInAreaEvent& event );
|
||||||
|
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif /* __PANEDRAWPL_G__ */
|
||||||
|
|