Compare commits

..

645 Commits

Author SHA1 Message Date
Bryan Petty
103ce3a260 This commit was manufactured by cvs2svn to create tag 'PRE_REWRITE'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/PRE_REWRITE@658 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 15:38:49 +00:00
Unknown (AN)
a83ffecb67 fixed the install/unix references -Markus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@657 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 15:38:49 +00:00
Unknown (AN)
9dbd8eb8f1 fixed the install/unix references -Markus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 15:27:50 +00:00
Vadim Zeitlin
b3031762e8 wxFileConfig ctor now (again) uses the files in the correct locations if the
file names are not specified -- that's what Get{Local|Global}FileName() are
for, Julian!


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@655 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 15:23:04 +00:00
Robert Roebling
c98f04213e make install
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 13:58:56 +00:00
Vadim Zeitlin
e96ddf25ad replaced wxEmptyString with "" because it's defined in gdicmn.h (sic!) which,
of course, is not always included before confbase.h...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@652 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 12:03:22 +00:00
Karsten Ballüder
9a648dc916 Removed files as requested by Robert.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@651 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 11:46:15 +00:00
Julian Smart
7b46ecac64 Dang, can't remember what I changed now
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-03 07:34:26 +00:00
Robert Roebling
bcf1fa6bb4 Added wxAccelerators (sort of)
Moved configure (once again)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@649 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-02 22:23:57 +00:00
Robert Roebling
8429bec1e8 New configure
wxRegionIterator
  New IsEposed functions  (-> recompile)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@648 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-02 17:53:48 +00:00
Robert Roebling
2f2aa6287b Fixed event handling for DialogEd
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@647 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-02 12:15:35 +00:00
Guilhem Lavaux
f4a8c29f7a * wxCreateDynamicObject() uses an hashtable now
* wxClassInfo::first = NULL after the hashtable is initialized
* dynlib has been simplified.
* Some fix in the serialization core and in wxObject::StoreObject()/LoadObject()
* Updates in utils/serialize/sermain.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@645 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-01 17:17:05 +00:00
Robert Roebling
2f6407b947 Small fixes to wxChoice, wxComboBox and wxListBox
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-01 15:41:45 +00:00
Robert Roebling
edaa81ae5d Added Set/GetItemState, GetNextItem.. to wxTreeCtrl
Fixed functions name mismatch SetSizeHint in window and frame
  Added support for non-european fonts and X extension using
   gtk_set_locale()
  Added compile fixes for FreeBSD and folks


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@643 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-01 14:29:21 +00:00
Robert Roebling
30f82ea416 Fixed a few compile things
Fixed wxListCtrl::SetItemState bug
  Tried to hunt down a bug in menu, which
    disappeared after recompiling


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@642 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-09-01 10:26:14 +00:00
Julian Smart
34da0970a0 Fixed MSW printing, tidied up member variable names
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@641 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-28 11:00:50 +00:00
Robin Dunn
451871970b Added some typecasts that the compiler complained about not having
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@640 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 23:32:09 +00:00
Robin Dunn
0d6f9504ae Some chicken-and-egg problems solved for wxPython on wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@639 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 21:59:51 +00:00
Julian Smart
052ae0e568 Updated wxConfig documentation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@638 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 21:10:49 +00:00
Julian Smart
3e0f922848 Added some files I forgot about
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@637 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 21:08:39 +00:00
Julian Smart
1824493628 wxConfig changes to be more logical.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@636 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 21:06:02 +00:00
Julian Smart
73fb82f3f3 wxUpdateUIEvent derives from wxCommandEvent now
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@635 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 07:47:25 +00:00
Robin Dunn
21f4bf4568 - more tweaks
- have discovered some problems but not yet discovered solutions...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@634 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-27 00:01:17 +00:00
Unknown (RO)
5104949d8a Missing typecast from return.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@633 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-25 22:24:50 +00:00
Julian Smart
0d8d91a98f HKEY -> WXHKEY, wxScrolledWindow::SetScale added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@632 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-24 19:13:34 +00:00
Julian Smart
fd6c844b17 HKEY -> WXHKEY; wxScrolledWindow::SetScale added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-24 19:11:11 +00:00
Guilhem Lavaux
885ee23543 * wxStream fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@630 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-24 17:22:31 +00:00
Vadim Zeitlin
4128681253 minor fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@629 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 22:21:47 +00:00
Karsten Ballüder
c47711479e added (de)select all
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@628 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 20:06:24 +00:00
Guilhem Lavaux
6f34921d93 * Fixed two memory leaks.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@627 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 14:06:39 +00:00
Julian Smart
d8260b2f57 defs.h corrected (syntax error in wxDELETEA). More unnecessary files removed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@626 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 10:30:17 +00:00
Guilhem Lavaux
1d44aaf824 * New function wxObjectInputStream::Recall()
* Fixes in object serializer,dynlib,LoadObject/StoreObject
* Updates for serialization.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@625 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 09:23:27 +00:00
Unknown (RO)
def172b2af Missing \ before _
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@624 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 04:50:00 +00:00
Unknown (RO)
c67daf8777 General tidy-up (mainly typecasts) to allow the use of the SGI native
compilers (tested on Irix 6.5 with -mips3 -n32).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@623 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-23 03:22:56 +00:00
Vadim Zeitlin
cb6780ff01 calling insert("") would provoke an assert - now it's just ignored
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@622 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 20:44:07 +00:00
Vadim Zeitlin
1880e45211 bug with checking the first character of possible empty string corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@621 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 20:34:00 +00:00
Robin Dunn
f57d793249 some tweaks for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@620 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 19:51:18 +00:00
Julian Smart
b6a158b04e Removed redundant makefiles and AIAI icons. Changed dynamic sample source name from
minimal.cpp to dynamic.cpp.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@619 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 19:46:35 +00:00
Julian Smart
8fed68d816 Added config resource file and VC++ makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@618 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 19:07:11 +00:00
Julian Smart
26ac5fadea Removed child frame CreateStatusBar from MDI sample; renamed config.h to confbase.h;
config.h now includes appropriate files


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 16:41:51 +00:00
Julian Smart
42cfaf8cd4 OGL improvements
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-22 16:31:11 +00:00
Vadim Zeitlin
32c66ea22e spurious error messages from wxRegKey::HasValue() suppressed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@615 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-21 20:48:45 +00:00
Vadim Zeitlin
cd91632c36 radiobox had some strange ideas about vertical and horizontal directions
(in fact, wxRA_VERTICAL and HORIZONTAL were inverted). corrected.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-21 20:47:49 +00:00
Julian Smart
567da5c600 Accelerators now work for wxDialog; wxToolBarSimple fixed when dragging out of
the toolbar


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@613 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-21 17:47:19 +00:00
Vadim Zeitlin
257f1d9b85 wxStaticBitmaps were created invisible - corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@612 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-20 22:47:39 +00:00
Guilhem Lavaux
8d43638db1 * Some new feature in wxObject*Stream (objects aren't duplicated)
* Added SetBackgroundBrush in wxGridCell
* New classes/fixes in wxSerial


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@611 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 18:33:19 +00:00
Julian Smart
4c444f19cf GDI double-deletion fix, wxBitmap depth bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 15:45:05 +00:00
Guilhem Lavaux
857f3be5f1 * Bug fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@609 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 07:42:27 +00:00
Robin Dunn
8f89cfc11e A few tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@608 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:38:23 +00:00
Robin Dunn
c8d07da7a6 Placeholder
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@607 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:35:04 +00:00
Robin Dunn
9d358552fc new build structure
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@606 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:10:57 +00:00
Robin Dunn
70551f4702 GTK version of the SWIG-generated files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@605 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:10:03 +00:00
Robin Dunn
e181bb6f72 placeholder
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@604 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-19 00:05:43 +00:00
Robin Dunn
b62bdb487f New build directory structure
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@603 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 21:55:10 +00:00
Robin Dunn
13dfc24333 ifdef out some wxGTK specific code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 21:54:12 +00:00
Robin Dunn
8ab979d738 MSW version of the SWIG-generated files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@601 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 21:52:31 +00:00
Robin Dunn
f42c777d79 moving the SWIG-generated files to toolkit specific subdirectories
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 21:50:11 +00:00
Vadim Zeitlin
3cda63537e uint -> size_t change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@599 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 20:15:51 +00:00
Robin Dunn
0cf2cb360f Added wxTheApp = this; to wxApp::wxApp for wxPython
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:57:02 +00:00
Denis Pershin
4540e33bb6 Second try
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:54:06 +00:00
Robin Dunn
fb5e0af035 more wxGTK compatibility things.
It builds now but there are serious runtime problems...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@596 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:48:20 +00:00
Robin Dunn
eaf3cf57ed a few tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:45:09 +00:00
Denis Pershin
befe54c6ca Seems it works reasonably stable...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@594 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 19:25:46 +00:00
Robert Roebling
314055fa8d Added TOOL_ENTER command. Now wxGTK and wxMSW misbehave
equally on that matter.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@593 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 17:41:55 +00:00
Guilhem Lavaux
c2dd8380ba * wxThread: new functions: wxThread::Pause/Resume, wxThread::GetThreadFromID
* Updates and new objects in utils/serialize
* wxLayout*_Serialize are friends of wxLayout* (so I can access to the
internal fields)
* wxMenu (GTK):  SetTitle/GetTitle (basic implementation)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 17:22:15 +00:00
Vadim Zeitlin
c86f1403c3 globally renamed uint to size_t. This has _not_ been checked under Windows,
although I changed msw files also, so please wait until this evening if you
want to be sure that it compiles. This change should fix 64 bit compilation
problems, but it would be nice to test it...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 15:36:12 +00:00
Robert Roebling
77ff2d2639 Next attempt at dynlib.cpp
Disabled ImLib's cashing
  Confirmed Vadim's changes to wxListCtrl :-)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@590 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 15:28:46 +00:00
Vadim Zeitlin
39570cd479 corrected wxListCtrl compilation problems
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@589 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 14:59:26 +00:00
Julian Smart
b8de493fbd Various .tex files updated. .bmp files were corrupted, recomitting.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@588 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 14:54:21 +00:00
Karsten Ballüder
cb38104ec7 reordered headers to compile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 12:37:53 +00:00
Karsten Ballüder
406291e530 #ifdef'd out some parts for non-supported systems.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@586 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 12:30:40 +00:00
Karsten Ballüder
53e65b8a50 Added configure to cvs - there are systems without autoconf!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@585 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 12:18:37 +00:00
Robert Roebling
94bd2eded1 Added the static text patch for multiline text
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@584 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-18 07:09:00 +00:00
Vadim Zeitlin
c4afa2cbfd added wxConfigBase documentation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 22:45:47 +00:00
Vadim Zeitlin
c2b1eaf8ca minor change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@582 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 22:22:29 +00:00
Vadim Zeitlin
72cb6ff3b3 a micro bug (but which was enough to break regtest sample) corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 22:19:17 +00:00
Vadim Zeitlin
af9e71a8b4 replaced another printf() with wxLogDebug()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 22:18:21 +00:00
Robin Dunn
f9d855de75 Added missing declaration of wxIcon::operator =(const wxIcon &)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@579 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 21:35:03 +00:00
Robert Roebling
77e7a1dc48 Added IRIX compile fixes
Added functions that must be handed down
   from wxListCtrl to the main window


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@578 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 20:07:50 +00:00
Robin Dunn
652e7bb422 Removed an extra method definition
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@577 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 18:29:40 +00:00
Robin Dunn
324511ce07 Corrected the signature for wxFrame::Maximize
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 18:25:14 +00:00
Robin Dunn
cd0183ca31 Added wxWindow::Center
Corrected the signature for wxWindow::SetSizeHints


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@575 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 18:24:32 +00:00
Robert Roebling
ee7ee4698c Added in-place editiging in wxListCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@574 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 17:05:47 +00:00
Robert Roebling
b0d77f437c Added list ctrl sample. Looks better than what I thought...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@573 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 15:48:25 +00:00
Robert Roebling
52cbfcf009 Turned wxIcon inline constructors to real constructors
Removed warning from dcclient
  Added wxTheFontList->Add(this) somewhere in wxFont
  CleanUp() now printfs the number of members in
    wxTheBitmapList


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@572 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 14:29:53 +00:00
Julian Smart
e8c81745ea Got printing, toolbar samples compiling under Windows again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@571 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 11:11:13 +00:00
Julian Smart
7a11869dde Changed floats to doubles in wxexpr.h; added a flag in accel.h (wxACCEL_NONE for
'no ctrl/alt/shift key')


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 09:39:39 +00:00
Julian Smart
12ed6eb56f Changed floats to doubles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@569 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 09:38:28 +00:00
Robert Roebling
9d3221abf1 GTK's toolbar class has no OnPaint
Added missing bitmap in mdi sample
  Added OpenGL support (I Get segv on
   my Debian/Mesa system, don't know why).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-17 09:16:28 +00:00
Vadim Zeitlin
d553992a3c 1) corrected bug in log.cpp which only affected wxGTK: some messages could
appear twice
2) tried to use gtk_widget_set_usize in wxFrame::SetSizeHints(), but it
   still doesn't work...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@567 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 21:02:14 +00:00
Robert Roebling
ff7b1510ea Added mising AddBitmapList in wxBitmap
Added missing deletion of wxFrame's toolbar
  Removed a few superfluous ; (sorry)
  Mentioned dmalloc in INSTALL


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 19:39:29 +00:00
Robert Roebling
11026f7b59 New scrolling for GTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 17:07:17 +00:00
Karsten Ballüder
82dc15db08 added one extra check for emptyness
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@564 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 11:28:39 +00:00
Julian Smart
f7387de542 Changed wxMenu::GetTitle to return a wxString.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@563 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 08:03:13 +00:00
Robin Dunn
714e6a9e26 More wxGTK work.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 04:31:11 +00:00
Robin Dunn
2d6dfbb778 updated email address
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 04:30:03 +00:00
Vadim Zeitlin
12e7bc479e Karsten's correction undone - this code is (was) correct!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@560 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-16 01:37:16 +00:00
Karsten Ballüder
76f53a0e39 Added configure option --with-dmalloc to use the dmalloc memory debugging library.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 23:52:16 +00:00
Vadim Zeitlin
1280032d6c '&' are removed from checkbox labels (all controls should call
wxControl::SetLabel and use m_label which contains the label without '&')


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@558 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 21:05:06 +00:00
Vadim Zeitlin
8f5f7c82d1 added default values for ax size arguments of SetSizeHints (for msw
compatibility)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 21:03:28 +00:00
Julian Smart
d0fff5cb11 Small changes after Robert's edits
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 20:10:16 +00:00
Robert Roebling
cd53f34118 Fixed my own Makefile bug
New INSTALL
  Fixed path in imrc


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 18:58:26 +00:00
Karsten Ballüder
2b5bd7fd87 fixed GetSelection() inversion bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@554 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 18:47:23 +00:00
Julian Smart
c2265822fe Added isosurf wxGLCanvas sample, cured OnPaint bug (missing wxPaintDC object)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 17:48:39 +00:00
Karsten Ballüder
6967fbf45b fixed a logical error (! isempty) instead of isempty
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@552 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 17:05:48 +00:00
Robert Roebling
a9c96bcce9 Added graying out of menus and buttons
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@551 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 15:59:43 +00:00
Robert Roebling
d5c462fd20 DialogEd's missing icons.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@550 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 15:23:47 +00:00
Robert Roebling
b127f3011f DialogEd now compiles, links and runs under wxGTK
I didn't say it worked, eh.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 14:45:04 +00:00
Denis Pershin
8b21b87fe3 DP: Just came back from 3 days fishing and found that forget to commit some
changes.

GetBitmap added


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 14:42:09 +00:00
Robert Roebling
8656024d15 Added wxPropList library
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@547 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 13:20:52 +00:00
Julian Smart
6a1120ad4c Added GLCanvas library (Win only at present).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@546 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 12:43:34 +00:00
Julian Smart
c856c750c0 2 GnuWin32 compile bugs fixed, incl. printf bug in prntdlgg that sent GnuWin32
into an endless loop


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@545 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 12:30:42 +00:00
Robert Roebling
8d71b5552e Resource sample works now, apart from
wxRadioBox, which is #ifdef 0 in
   resource.cpp
  Fixed tiny thing in resource.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@544 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 12:06:45 +00:00
Robert Roebling
c33c405087 See last changelog
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@543 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 10:52:09 +00:00
Robert Roebling
942be9a749 Makefile fixes
Added resource sample (segvs)
  Added functions to menu, mdi, frame, dialog, window
    that were missing e.g. in wxPython


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@542 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 10:47:47 +00:00
Robin Dunn
03e9bead8a - Moved the header in the .i files out of the code that gets put into
the .cpp files.  It caused CVS conflicts because of the RCS ID being
different each time.

- A few minor fixes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 07:36:54 +00:00
Julian Smart
34138703c3 Changes mostly as a result of __WXSTUBS__ compilation. The stubs code now
compiles under Windows with VC++. Also OGL enhancements espec. wxDrawnShape.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-15 00:23:28 +00:00
Robin Dunn
853b255a6b Beginings of wxGTK compatibility
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 23:36:49 +00:00
Robert Roebling
903f689bf7 Added validation support
Fixed a few minor things in wxGrid
  Fixed bug in SetClippingregion
  Disabled SetDefault again
  Fixed bug in AddChild, SetSize et al.
  Add PROCESS_ENTER and wxEVT_TEXT_CHANGE
  Renamed OnOk -> OnOK
  Added a few compatibilty functions
  Added code to make iinterception
    of events possible and work


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@538 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 22:53:21 +00:00
Vadim Zeitlin
470b7da353 wxLogWindoe changed again: now takes a parent frame in ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 21:49:27 +00:00
Vadim Zeitlin
1845330624 a small GUI glitch corrected (if a frame with child frames was resized, it
was lowered below it's children)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@536 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 21:47:49 +00:00
Vadim Zeitlin
568cb54317 WM_MOVE processing added (wxMoveEvent generated)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 21:41:53 +00:00
Unknown (AN)
0059a10283 -somewhat more elegant method, supporting the src subdir (-Markus)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@534 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 20:12:00 +00:00
Karsten Ballüder
64a1451536 added option to hide page controls
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@533 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 11:20:00 +00:00
Julian Smart
163f0dbef0 wxToolBarBase -> wxToolBar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 11:15:17 +00:00
Karsten Ballüder
76810b8c97 printing works, page number controls are hidden
portrait/landscape doesn't work, pages are printed wrong


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 11:02:39 +00:00
Robert Roebling
6de97a3b94 Added wxRadioButton (not tested)
Added wxValidator to constructros
  Added resource.cpp
  Added parser stuff
  Added the coolest Makefile.in
  Added callbacks to Menu
  Changed parser.y to include lexer.c for wxGTK
    (Is that right?)
  Can't remeber havning changed the printing stuff.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@530 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 10:07:38 +00:00
Karsten Ballüder
3ebece2bda added printing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@529 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 08:33:33 +00:00
Robin Dunn
3b8b23873a made pre-compiling the python files optional
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@528 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 03:34:23 +00:00
Robin Dunn
2370fac3f6 removed some definitions that got removed from defs.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@527 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-14 03:16:39 +00:00
Unknown (AN)
e6886957b4 -Debian glibc2 system is 'linux-gnu', not 'Linux';updated .cvsignore's -Markus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 11:45:43 +00:00
Julian Smart
14b72bf5a6 Attempting to check in this wretched cursor again. Also added SetAcceleratorTable
to wxWindow, GnuWin32 fix in registry.h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@525 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 10:19:16 +00:00
Julian Smart
088a95f5ff Fixed compile bug in dropsrc.cpp (constr. arg); GnuWin32 fix in registry.cpp;
combobox event fix; moved SetAcceleratorTable down to window.h/cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@524 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 10:16:03 +00:00
Karsten Ballüder
5e0394ae9b integrated my latest changes and Vadim's fixes on top of that
Compiles, but works?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@523 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 10:03:26 +00:00
Robert Roebling
fc008f2592 Added ToogleTool from Markus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@522 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-13 09:11:23 +00:00
Vadim Zeitlin
564b260950 wxWindow::MSWOnHScroll changed to call the default handler if the message isn't
processed (earlier it wasn't called in some cases)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@521 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:44:51 +00:00
Vadim Zeitlin
93a19f178c stack overflow when clicking on the arrow in a notebook fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@520 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:42:01 +00:00
Vadim Zeitlin
42a91fcebc suppressed VC++ 5.0 bool to int conversion warning (when compiling with
USE_RESSOURCE_LOADING_IN_MSW only)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@519 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:41:02 +00:00
Vadim Zeitlin
338c2a71e9 one more minor wxLogWindow fix (I try to get it really right...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@518 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:38:30 +00:00
Vadim Zeitlin
4b13e6aeb2 added a "wxWindow *" (unused) argument for wxGTK compatibility
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@517 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:37:20 +00:00
Vadim Zeitlin
6d9669450d explicit SetSelection/SetOldSelection methods added to wxNotebookEvent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@516 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 22:36:21 +00:00
Robert Roebling
496080f0b0 Forgot this one.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@515 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 21:39:12 +00:00
Robert Roebling
86b29a6122 Added PushEventHandler, Pop...
Corrected spelling of SetEventhandler
  Fixed two bugs in wxGenericPrintDlg
  Tried in vain to make printing of icons work.
    It now prints black on black, mostly.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@514 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 21:24:51 +00:00
Vadim Zeitlin
16ced4a272 had to modify it (added one pixel...) to be able to commit: the file in the
repository was indeed corrupted (as noticed by Robin a couple of days ago)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@513 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 20:57:08 +00:00
Vadim Zeitlin
bb14db2d95 file d&d (re)enabled under Windows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@512 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 20:30:23 +00:00
Karsten Ballüder
23b75a2db4 Looks like I've fixed the editing
bugs. Delete/Insert/Home/End/Ctrl-Delete all work as expected.
Cursor gets redrawn properly.
Scroll-to-cursor still missing.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 16:14:15 +00:00
Robert Roebling
362c669367 Added wxFrame::OnCreateStatusBar and ToolBar
Added wxWindow::Raise and Lower

  There isn't going to be wxFrame::SetToolBar.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@510 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 11:44:33 +00:00
Karsten Ballüder
01b2eeec59 replaced by stubs files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 09:16:21 +00:00
Karsten Ballüder
0acb94947f fixed mysterious mistakes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 08:50:25 +00:00
Karsten Ballüder
3908d01eab Cursor and insert/delete work much better now, code streamlined, still
a minor problem left.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@507 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-12 08:33:34 +00:00
Vadim Zeitlin
3b9261289f more minor changes to wxLogWindow
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@506 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 21:14:47 +00:00
Vadim Zeitlin
906373bf01 '\\' can be used to suppress special meaning in '%' and '$' in wxExpandEnvVars
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 21:12:06 +00:00
Vadim Zeitlin
d1427b7053 static wxFile::Access() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@504 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 21:04:48 +00:00
Vadim Zeitlin
d4a00e065b static wxFile::Access() added (access() isn't ANSI neither...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@503 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 21:03:57 +00:00
Vadim Zeitlin
654c1d6b7b controls.cpp didn't compile - missing MyTextCtrl declaration added (and what
OnRightButton is supposed to do?)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 12:44:33 +00:00
Karsten Ballüder
cd063a90f5 deleted
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@501 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 11:53:55 +00:00
Karsten Ballüder
e149aaeb44 Added empty Raise() and Lower() methods for compatibilty.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-11 09:51:04 +00:00
Robin Dunn
d279310da9 Typo fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@499 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 23:23:05 +00:00
Robin Dunn
5796ed400c Since wxREADONLY has disappeared, I had to change to wxTE_READONLY
in order to compile.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 22:22:25 +00:00
Denis Pershin
e8cd8b1b12 Small modifications
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 19:57:59 +00:00
Denis Pershin
40413a5b70 DP: GetBitmap() added to wxImageList
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@496 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 18:09:07 +00:00
Denis Pershin
f4e325b3df DP: native wxTreeCtrl for GTK.
It *should* be buggy... Cause I do not know GTK...
But it works... I do not know why... Robert, please look at it...
I am not sure that it is ok...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@495 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 17:53:44 +00:00
Julian Smart
9c331ded69 Various Dialog Editor-related mods; Dlg Ed. getting usable now under MSW.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@494 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 13:48:12 +00:00
Julian Smart
983162bd54 Mod to allow hit-test on static to succeed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@493 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 13:41:22 +00:00
Karsten Ballüder
7b3a00878c added correct coordinate handling
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-10 09:21:28 +00:00
Denis Pershin
f6d5397840 DP: Robert's mistake with incorrect var name corrected.
It even does not compile.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@491 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 19:42:11 +00:00
Robin Dunn
376781f78e I didn't mean for this to be in the repository...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@490 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 17:26:41 +00:00
Julian Smart
b823f5a145 Miscellaneous, mostly cosmetic changes. wxPen/wxFont/wxBrush altered so Set...
functions don't change shared objects.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@489 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 16:46:37 +00:00
Julian Smart
5e25ba908f Stub header changes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@488 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 16:31:10 +00:00
Julian Smart
93cf77c076 Added stubs .cpp files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 16:27:07 +00:00
Robert Roebling
30dea05497 Added Pop-up menus.
Hunted down bug in dnd
  Changed widget, that wxWin connects to in certain
  case (in controls, where m_widget is not the connect
  widget, such as list control and text control)
  Compile fixes all over


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@486 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 13:06:25 +00:00
Robin Dunn
7bf854050f Initial version
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@485 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 08:31:08 +00:00
Robin Dunn
b6a69abc7d Made NOPCH overridable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@484 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-09 07:15:59 +00:00
Vadim Zeitlin
e17e4f282f wxWarning replaced with wxLogWarning (to solve the compilation problems due
to wxWarning's const incorrectness)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@483 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 22:14:17 +00:00
Vadim Zeitlin
b039c367cd WXFARPROC prototyped as `typedef int (__stdcall *WXFARPROC)()' (does Borland
understand __stdcall?) to make the program compile with VC++


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@482 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 22:08:04 +00:00
Vadim Zeitlin
f83528074b SetBackgroundColour() call is now done after the window is created, not before
(in which case ListCtrl_SetBkColor fails because it's called with HWND = 0)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 21:42:39 +00:00
Vadim Zeitlin
a781a38247 wxDeleteStockLists() used (instead of duplicating part of it's code)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@480 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 21:40:45 +00:00
Vadim Zeitlin
77ca46e7e3 extra memory amount allocated for string data reduced to the paragraph multiple:
so, in principle, it shouldn't waste any memory at all now (unless someone finds
a malloc implementation which is capable of allocation less than 16 bytes)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@479 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 21:39:43 +00:00
Vadim Zeitlin
fe7b115601 some minor changes in wxLogWindow
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@478 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 21:38:22 +00:00
Robert Roebling
b593568eca Correct the wxButton::Setlabel nonsense
Added wxFrame::SetClientSize


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@477 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 13:44:36 +00:00
Robert Roebling
b6af8d80dc Added wxDC:DrawPolygone
Corrected wxBitmap::SetLabel
  Added wxASSERT here and there
  wxDropSource:DoDrop() now returns Cancel when supposed to


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@476 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 13:11:54 +00:00
Julian Smart
7c23a0b01b Added stub include files; also a couple more Dialog Editor files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 09:19:47 +00:00
Denis Pershin
843410bdd0 DP: framecmn.o & wincmn.o were duplicated...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:56:37 +00:00
Denis Pershin
fd4fec5bcf Another small modification... Sorry for CVS list overloading...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@473 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:38:16 +00:00
Denis Pershin
57c2c161e8 Small modification
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@472 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:36:33 +00:00
Denis Pershin
d8758bbc62 Looks like I did that...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:30:11 +00:00
Denis Pershin
e096c40c2b Third try to commit....
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@470 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 06:27:27 +00:00
Denis Pershin
1a5a836775 DP:
1. _() calls added where needed.
2. const added in params in postscrp.[h,cpp] in order to compile with
_().
3. Some .cvsignore added. (I did not found any .cvsignore in repository,
it is rather hard to compile something without them...)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@469 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-08 05:20:46 +00:00
Julian Smart
bbcdf8bc7c Fixed various wxMSW compile problems that came down the telephone line...
plus wxTreeCtrl::EditLabel/EndEditLabel, dialog editor stuff, wxMSW header changes,
doc changes. Sorry about the quantity :-(


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@468 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 23:52:45 +00:00
Vadim Zeitlin
c2d8daeb4a stray #include "wincmn.cpp" removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@467 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:38:30 +00:00
Vadim Zeitlin
3197ed26f0 wxTREE_INSERT_XXX constants were incorrectly defined (and so inserting the
items at the end, for example, didn't work)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@466 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:30:12 +00:00
Vadim Zeitlin
dc1c4b6213 the modal dialogs restore the focus to the control which had it before the
dialog was displayed (earlier, the focus was lost all the time)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@465 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:27:33 +00:00
Vadim Zeitlin
a02eb1d2b6 ProcessEvent() now saves the m_lastXXX parameters in case the event handler will
send any other events (without this it can easily lead to crash because DefWndProc
is called with garbage instead of correct parameters)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:25:09 +00:00
Vadim Zeitlin
83626bfa72 code using ms_PaintDC changed a little (a couple of asserts added, the behaviour
did not change)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@463 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:22:30 +00:00
Vadim Zeitlin
d2aef3124b improved handling of frames with parent: now they have a NULL parent HWND (to
avoid Win32 bugs in handling this situation) but still are iconized/restored
with their parent frame


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:21:08 +00:00
Vadim Zeitlin
c1066cdf62 VZ: I removed (CASTWNDPROC) from ::CallWndProc - it doesn't compile here with it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:18:43 +00:00
Vadim Zeitlin
c59147ba27 WM_GETDLGCODE handling correctly implemented
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@460 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:15:31 +00:00
Vadim Zeitlin
44a6c8e618 a couple of missing calls to UngetWriteBuf() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:10:33 +00:00
Vadim Zeitlin
aaab7c01dc now process UDN_DELTAPOS notification: up-down control (which appears if there
is not enough space for the pages) works correctly now


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@458 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:08:43 +00:00
Vadim Zeitlin
370382c71b added call to _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG) | _CRTDBG_LEAK_CHECK_DF) for
VC++: it gives at the end of the program report about memory leaks if any
similar to the one produced by the wxwin memory diagnostic classes (but it
works without problems with VC++ and costs nothing to add)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:07:03 +00:00
Vadim Zeitlin
d93f63db9d couple of minor bug fixes/enhancements (interface unchanged)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@456 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 22:03:16 +00:00
Robert Roebling
7c78e7c702 More configure fixes
/src/qt and /include/wx/qt now have stubs. Not everything
  compiles yet. But it's a start..


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 21:32:13 +00:00
Robert Roebling
b4e76e0d7e More work on wxQt integration, configure
I tried notr to break anything...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@454 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 20:23:17 +00:00
Robin Dunn
d50b2a58e9 Added missing call to wxInitializeStockLists() in CommonInit.
Come on people!  Before checking in changes that affect more than one
platform, please test more than one platform!


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@453 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 18:28:52 +00:00
Robin Dunn
35eca07ccd Removed a ">>>>>>> 1.5" (a CVS conflict indicator) that got left in
the code.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@452 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 17:32:54 +00:00
Robin Dunn
b5279053f6 Removed duplicate definitions of GetMenuCount and GetMenu so I could
compile.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@451 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 17:07:43 +00:00
Vadim Zeitlin
a3622daa90 (1) Denis Pershin's patch for wxGTK (memory leaks corrections)
(2) DELETEP/DELETEA globally renamed to wxDELETE/wxDELETEA and now also NULL
    their argument


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-07 15:09:04 +00:00
Guilhem Lavaux
0e072aac7a * Typo fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@449 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 20:12:56 +00:00
Julian Smart
b1670f9641 Fixed someone's compile error in regconf.cpp (needed a cast to non-const).
Added nplugin sample HTML files, even if the samples have broken :-(


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@448 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 19:49:54 +00:00
Julian Smart
5de76427c8 OGL fixes; documentation fixes; dialog editor updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@447 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 19:42:06 +00:00
Karsten Ballüder
c6cdf16c93 several fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@446 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 19:23:19 +00:00
Robert Roebling
09cf7c5853 Fixed compilation (add serbase.cpp)
Added ListBox::SetString
 Changed listbox message behaviour to match wxMSW (I hope)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@445 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 19:07:05 +00:00
Robert Roebling
496e3a4a03 Now configure actually finds Lesstif and Qt
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@444 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 17:03:46 +00:00
Robert Roebling
a1a2adef07 New Unix configure system
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@443 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-06 16:18:34 +00:00
Vadim Zeitlin
df9067d85c compilation problem under Windows fixed (Karsten, you should use a cast when
calling a const function from a non-const one - gcc compiles it it, but it's
broken)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 21:51:47 +00:00
Guilhem Lavaux
123a7fddb8 * Added source file info in utils/serialize/*
* Added Windows support in dynlib.cpp (not tested)
* Added some operator in wxStream
* Added a mutex in thread sample (more later)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 17:12:43 +00:00
Julian Smart
e1a6fc11e2 Fixed popup menu processing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@440 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 16:35:09 +00:00
Robert Roebling
54ff4a701f Removed /install/gtk/configure from cvs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@439 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 16:33:18 +00:00
Karsten Ballüder
baeed2892d added SetRecordDefaults() and IsRecordingDefaults() methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@438 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 14:15:13 +00:00
Julian Smart
2bb0cd285a Various bug fixes to OGL; wxStripExtension prototype added to filefn.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@437 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-05 07:13:08 +00:00
Guilhem Lavaux
7a4b9130e3 * Fixes and new features in wxObject*Stream
* Fixes: wxChoice (GTK), wxCheckBox (GTK)
* Fixes: wxStream
* wxObject calls wx*Serialize::LoadObject/StoreObject in StoreObject/LoadObject
* Added support for dynamic library (Linux only, Windows will follow)
* Added serbase.h (Serialization base defines and base object)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 17:49:26 +00:00
Guilhem Lavaux
9fdd83842f * Added serialization code to the repository
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@435 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 17:45:20 +00:00
Vadim Zeitlin
06db8ebd73 added wxLogWindow::GetFrame()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@434 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 16:42:34 +00:00
Vadim Zeitlin
3ed358cbfe size_t -> int conversion and the warnings about it corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 16:05:22 +00:00
Karsten Ballüder
ffbcbbb45a re-fixed wxFileConfig(wxString, wxString) constructor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@432 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 10:26:56 +00:00
Julian Smart
e8435fa381 Small fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@431 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-04 07:24:05 +00:00
Vadim Zeitlin
c5c16a3025 1) wxFileConfig now longer tries to delete system-wide config file in DeleteAll
(only the user's one)
2) wxLogStream "un#indef'ed" under wxGTK


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@430 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 23:23:56 +00:00
Vadim Zeitlin
a7489b367d check that wxTheApp != NULL in wxLog::GetActiveTarget
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@429 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 23:05:07 +00:00
Vadim Zeitlin
071cc2be5c crash in wxLog::GetActiveTarget() fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@428 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 23:03:59 +00:00
Vadim Zeitlin
f3e6e1b5d3 added framecmn.cpp and wincmn.cpp (hmm... how could it compile without them?)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@427 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:59:50 +00:00
Vadim Zeitlin
c614ed58d8 SelectItem() always sends the notification messages
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@426 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:57:30 +00:00
Vadim Zeitlin
ad553268cb wxApp::Get/SetVendorName functions added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@425 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:55:59 +00:00
Vadim Zeitlin
23fcecf783 added wxLocale::Init() and ctor without arguments for convenience
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:54:15 +00:00
Vadim Zeitlin
275bf4c13a minor changes and bug corrections (interface unchanged)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:49:01 +00:00
Vadim Zeitlin
0be4095abb wxConfig sample + wxGTK makefiles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@422 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 22:37:42 +00:00
Karsten Ballüder
574504ae85 grmbl, typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@421 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 15:11:47 +00:00
Karsten Ballüder
b925352b3a fixed GetGlobalFilename()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@420 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 13:59:41 +00:00
Karsten Ballüder
fe3229dfa4 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@419 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 13:59:11 +00:00
Karsten Ballüder
5a0f10a631 added another link
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@418 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 11:08:36 +00:00
Karsten Ballüder
dcbe388200 fixed wxFileConfig constructor bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@417 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-03 10:10:53 +00:00
Vadim Zeitlin
02569ba8eb wxIniConfig added (pre-alpha quality, many functions not implemented), some
bug fixes in wxRegConfig/wxRegKey


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:12:37 +00:00
Vadim Zeitlin
5fe256deb7 wxConfig -> wxConfigBase renaming plus some minor changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:11:03 +00:00
Vadim Zeitlin
88f2aa3720 trace mask made static variable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@414 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:09:13 +00:00
Vadim Zeitlin
46eaa42260 trace mask made static variable (and corresponding accessors static functions)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@413 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:07:41 +00:00
Vadim Zeitlin
3bd8df227c the base class is now called wxConfigBase, wxConfig is #define'd as
wx{Reg|Ini|File}Config depending on the platform


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@412 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:06:42 +00:00
Vadim Zeitlin
8f494e5d87 minor changes to registry classes and wxIniConfig added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@411 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 23:04:55 +00:00
Robert Roebling
66bd6b9300 Fixed Fontdialog
Fixed frame positions/centering
  Fixed inserting mdi windows
  Changed control callbacks


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@410 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 20:38:05 +00:00
Karsten Ballüder
5787c2b9c2 added slash to path
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@409 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-08-02 16:59:53 +00:00
Robert Roebling
47908e25f9 Added bitmaps and icons to samples
Fixed event handling in all controls
  Add some missing functions to wxRadioBox
  Fixed clientData stuff to Choice (Combo?)
  No more gtk warning in Combo
  Fixed toolbar sample and mdi sample
  Fixed bug in AddChild resulting from mdi changes
  Fixed wxFrame::GetPosition()
  Changed order of notification calls in wxListCtrl
  to prevent what I think is a reentry bug
  The usual compile fixes here and there


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 20:04:04 +00:00
Julian Smart
110f32055e Added wxAccelerationTable class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@407 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 13:22:58 +00:00
Julian Smart
57a7b7c148 Added wxAcceleratorTable, wxFrame::SetAcceleratorTable and additions to process it under wxMSW.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 13:01:34 +00:00
Julian Smart
bd0df01f3f Some manual updates; in MDI sample, child frames now have default size/position (hope
it's OK in wxGTK!)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@405 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 09:33:36 +00:00
Karsten Ballüder
db4365c912 added a comment and hopefully improved extent detectionn
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 08:41:17 +00:00
Karsten Ballüder
4f08af68b9 fixed stupid typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-31 08:38:06 +00:00
Julian Smart
4d0c0756e1 MSWOnMouseMove arg bug in toolbar; compile bug in regconf; fixed warning in odbc.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-30 09:37:26 +00:00
Robert Roebling
d4c99d6fa8 Pretty redical change concerning the underlying
X's windows' position. Even without having
  scrolled anywhere, the device origin of the
  top left corner is no longer certain to be
  zero,zero.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@401 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-30 09:16:21 +00:00
Karsten Ballüder
82ab121507 Setting of background colours is now correct.
Made virtual declarations depend on BROKEN_COMPILER define.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@400 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 13:57:51 +00:00
Robert Roebling
cf4219e77a wxMDIChildFrame inherits from wxFrame
toolbar work
  mini menubar change
  compile fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 13:21:22 +00:00
Vadim Zeitlin
da468d387d 1) APPCONF_ constants renamed to wxCONFIG_
2) wxConfig::Create() now chooses the best (native) implemenntation of
   wxConfig instead of calling wxApp::CreateConfig which was suppressed
3) wxFileConfig(const char *appname) ctor added which looks for the config
   file(s) in standard location(s)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 12:03:42 +00:00
Vadim Zeitlin
580c10e3ca wxApp::(S|G)etVendorName added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@397 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 12:00:17 +00:00
Julian Smart
f449ef69b4 Added missing OGL files; added defaults to wxDocMDIParentFrame; corrected
toolbar usage in Dialog Editor


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@396 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 10:43:51 +00:00
Karsten Ballüder
8dad2ab39e fixed compiler warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@395 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 10:43:11 +00:00
Karsten Ballüder
00e0d52a92 implemented correct setting of background colour for text
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@394 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 10:34:11 +00:00
Robert Roebling
b204641ec9 wxListCtrl selection improved
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@393 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 08:07:45 +00:00
Julian Smart
f7bd26981f Update to docs incl. wxString first stab; added a couple of palette-related events (wxMSW)
needed for wxGLCanvas


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@392 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-29 06:51:33 +00:00
Robert Roebling
9746a2ba50 Fixed bug in wxListCtrl
Made wxMDIDocView work


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@391 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 22:08:36 +00:00
Guilhem Lavaux
32a4b1d57c * Added Peek() to wxMemoryInputStream.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@390 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 17:11:08 +00:00
Julian Smart
00c75bb689 Added ODBC classes manual (Word 97).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@389 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 15:15:47 +00:00
Unknown (MO)
99cc0288bd Fixed wxOVERWRITE_PROMPT bug in gtk file selector
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@388 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 15:01:09 +00:00
Julian Smart
2108f33a68 Added MDI support for Document/view, plus an example.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@387 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 13:33:23 +00:00
Karsten Ballüder
22c248be96 fixed compiler warning (newline at last line missing)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@386 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 10:38:46 +00:00
Julian Smart
108106cfe7 Added ODBC database classes and sample from RemStar (sample needs work for wxWin 2)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@385 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 09:43:44 +00:00
Julian Smart
b3324be240 Changed files to work with wxDataFormat
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@384 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 08:12:20 +00:00
Robert Roebling
7b5408ea7d Fixed bug in MDI
Changed FortyThieves to 2.0 dialog logic
  Did I modify dialog.cpp as well?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@383 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-28 07:50:45 +00:00
Robert Roebling
d355d3fe69 wxFrame::SetIcon()
it's possible now to call Close() after ShowModal()
  dialog sample works
  changed wxString::First() etc to return -1


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@382 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 23:01:43 +00:00
Robert Roebling
e3e65dac0c warning msgs
toolbar updates
mdi fixes
dnd works now
Forty Thieves drawing optimization
wxDF_Text constants
ListCtrl bugs fixed
memory leak work
imrc now refers to home dir
dcclient/memory leak fixed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@381 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 20:50:48 +00:00
Karsten Ballüder
bf79063cc8 more comments
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@380 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 20:39:50 +00:00
Guilhem Lavaux
1eac776c03 * Bug fixes
* Changed wxObjectOutputStream::AddChildren() to AddChild()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@379 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 17:08:49 +00:00
Julian Smart
0757d27c1e Changed event type ids to constants instead of enum, for extensibility.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 16:17:59 +00:00
Karsten Ballüder
a97aaabf5c make wxS_DEFAULT consistend with standard Unix behaviour
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@377 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 09:52:49 +00:00
Julian Smart
81d66cf39f wxToolBar API changes; now frames manage their toolbar & statusbar properly;
client area position is used in SetSize; changes for BC++ & VC++ 1.5;
wxWindow::GetUpdateRegion added; removed wxUpdateIterator; some missing functions
added to process.cpp; bad navigation key event cast fixed; MDI and toolbar samples
updated; new wxMSW wxRegion constructor (WXHRGN)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@376 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-27 09:47:57 +00:00
Vadim Zeitlin
e6688c3fd2 double wxMenuItem definition problem fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-26 00:10:52 +00:00
Guilhem Lavaux
7b124d5404 * Deleted #include "wx/bufstrm.h"
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@374 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-25 10:19:18 +00:00
Robert Roebling
bd7d06f23d Removed warnings mesgs
Doesn't compile due to missing bufstream


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@373 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-25 08:31:39 +00:00
Julian Smart
f701d7abc1 Corrected some problems
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@372 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 22:04:21 +00:00
Julian Smart
527fc629c8 Added missing accessors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@371 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:48:49 +00:00
Julian Smart
37f0deedfa Added missing files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@370 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:48:25 +00:00
Julian Smart
b979f8772c Removed explicit #defines for wxToolBar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@369 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:47:43 +00:00
Julian Smart
3d8bd7d6bf Removed duplicate code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@368 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:46:39 +00:00
Julian Smart
cc79e53c16 Small change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@367 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:45:26 +00:00
Julian Smart
03f68f123b Dialog Editor edits
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@366 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 20:44:36 +00:00
Julian Smart
63cafd2799 Added Forty Thieves
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@365 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 19:43:32 +00:00
Robert Roebling
46dc76ba35 wxFrame::CreateToolBar() stuff
wxDC::SetBackground from Chris Breeze
zillions of compile fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@364 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 19:05:25 +00:00
Guilhem Lavaux
d602f1d8b6 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:44:44 +00:00
Guilhem Lavaux
6d44bf31a6 * Ooops, I didn't copy the files in the right directory of my repository.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@362 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:21:06 +00:00
Guilhem Lavaux
1678ad7802 * New wxStream classes: wxStreamBuffer and wxObject*Stream.
* Changes: ofsInvalid => wxInvalidOffset in filefn.h
* Updates: all wxStream classes use wxStreamBuffer.
           wxObject basic declaration changes (added LoadObject, modified
           StoreObject)
* Some base of the serialization.
(I hope not to have forgotten any files)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@361 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:13:47 +00:00
Vadim Zeitlin
439b3bf1f5 some common code moved from wxWindow/wxFrame into files in common subdir
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@360 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:06:45 +00:00
Vadim Zeitlin
d37a02d0d5 SelectItem() now sends a wxEVT_SELECTED notification.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@359 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:04:48 +00:00
Vadim Zeitlin
246037e229 added "access" parameter to wxFile::Create and Open. The default value is
"rw-r--r--" mode.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:03:26 +00:00
Vadim Zeitlin
13289f04ae scrollbar support added (experimental)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@357 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 17:02:23 +00:00
Julian Smart
0f217db318 New toolbar event processing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@356 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 15:47:22 +00:00
Julian Smart
6a23cbcede Removed compile bugs in regconf.cpp, added new toolbar event processing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@355 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 15:46:52 +00:00
Julian Smart
a37e883612 Altered event.h to reflect new toolbar event handling; removed bugs in regconf.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@354 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 15:44:58 +00:00
Julian Smart
13437238cd Updated the toolbar sample to reflect updated event handling.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@353 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 15:43:03 +00:00
Vadim Zeitlin
44216b3b2e added default value for "int type" (wxBITMAP_TYPE_XPM) in wxBitmap ctor
and Load() method


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@352 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 14:35:48 +00:00
Vadim Zeitlin
a7ca513e5a removed #define wxToolBarGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@351 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 13:17:04 +00:00
Karsten Ballüder
8ffec97a6e fixed appending of '/' to empty string
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@350 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 12:18:23 +00:00
Karsten Ballüder
6134811179 fixed private member access problem
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@349 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-24 10:31:25 +00:00
Vadim Zeitlin
fe3d8179fa oops... a typo in just checked in file corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@348 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 17:56:13 +00:00
Vadim Zeitlin
904f68c7e8 call to SetLabel in Create() added to strip "&" characters from the label
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@347 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 17:54:24 +00:00
Vadim Zeitlin
389cdc7ae4 wxTreeControl::Get/SetSelection implemented
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@346 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 17:53:50 +00:00
Vadim Zeitlin
543e7dd22a now wxToolBarGTK is #define'd as wxToolBar under wxGTK and not vice versa
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@345 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:10:48 +00:00
Vadim Zeitlin
43fa96a840 IsItemExpanded() function added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:09:55 +00:00
Vadim Zeitlin
aed8df383f wxUpdateUI events generation added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:08:49 +00:00
Vadim Zeitlin
9406d962cc IsModified() function now works correctly
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@342 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:08:28 +00:00
Vadim Zeitlin
7c41ac7b42 SetModified() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@341 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:07:55 +00:00
Vadim Zeitlin
fd4bc7de65 OnSize removed (not needed any more after Robert's fix)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@340 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:07:27 +00:00
Vadim Zeitlin
83885a398b more accessors added, member variablesmade private
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@339 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:07:05 +00:00
Vadim Zeitlin
ab16f4a300 DoMenuUpdates()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@338 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:06:23 +00:00
Vadim Zeitlin
4632781333 added flag wxFILE_MUST_EXIST
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@337 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:05:39 +00:00
Vadim Zeitlin
2a4f4a2773 GetLabel() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@336 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:05:14 +00:00
Vadim Zeitlin
19717c50b9 common functions moved into ../common/framecmn.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@335 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:03:53 +00:00
Vadim Zeitlin
96fd301f0e made the code more wxMSW compatible
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@334 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:02:54 +00:00
Vadim Zeitlin
caac51810b made the constraintsin notebook pages work (once again)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@333 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:02:23 +00:00
Vadim Zeitlin
5e0aa05a52 added wxUpdateUI generation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@332 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:01:52 +00:00
Vadim Zeitlin
7ec1983bfa common part of wxWindow class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@331 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 16:01:33 +00:00
Vadim Zeitlin
32c77a7133 removes "&" from wxControl's label (also for buttons and stattext)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@330 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 15:59:55 +00:00
Vadim Zeitlin
9ec05cc986 choosing "Cancel" in the message box which appears when an wxASSERT fails also
suppresses wxLogDebug() messages


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@329 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 15:57:47 +00:00
Vadim Zeitlin
63fec618dc common code of wxFrame class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@328 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 15:56:50 +00:00
Vadim Zeitlin
3bbb630a21 a warning in the release build suppressed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@327 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 15:56:30 +00:00
Julian Smart
14d1ccd89d Created new, simplified toolbar sample; removed other toolbar samples.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@326 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 14:39:46 +00:00
Julian Smart
73e7daa02e Moved Get/SetToolBar down into frame.h/cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@325 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 14:25:44 +00:00
Vadim Zeitlin
30474825bb added #define wxToolBar wxToolBarGTK for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@324 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-23 12:33:08 +00:00
Robert Roebling
716b736420 mdi private menus
Chris's check menu additions
frame fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-22 22:13:31 +00:00
Julian Smart
47fa796902 Added wxString version of wxStripExtension; changed OnClose to return TRUE;
fixed some bad casts in resource.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@322 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-22 13:54:47 +00:00
Julian Smart
9123006f13 Added wxString version of wxStripExtension; changed OnClose to return TRUE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@321 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-22 13:53:47 +00:00
Vadim Zeitlin
7228ab483e warning under gcc removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@320 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-22 11:33:15 +00:00
Karsten Ballüder
240d850370 fixed duplicate definition
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@319 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-21 13:41:40 +00:00
Vadim Zeitlin
c3b0ff9c7a bug in wxFileConfig::DeleteEntry/Group corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@318 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 22:26:39 +00:00
Vadim Zeitlin
4d14b52449 corrected bug in wxArrayString::operator= and it's copy ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@317 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 22:23:51 +00:00
Robert Roebling
e2414cbe8c many fixes to wxTextCrtl, wxTreeCrtl, wxListBox,
wxDialog, wxFrame
two more samples work now, docview and treectrl


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@316 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 18:05:48 +00:00
Unknown (MO)
035b704a46 Added use of default file/dir and confirm on overwrite to file selection
dialog


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@315 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 14:59:54 +00:00
Karsten Ballüder
f40ccee99b fixed config incosistency
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@314 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 12:20:06 +00:00
Karsten Ballüder
3d6a5e3c5b added -O0 to debug flags to disable optimisation - might break things for non-gcc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@313 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 11:25:50 +00:00
Karsten Ballüder
9480f5d151 printing added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@312 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-20 08:43:47 +00:00
Vadim Zeitlin
86bb7d4825 infinite loop in wxNavigationKeyEvent processing fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@310 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-19 20:46:35 +00:00
Vadim Zeitlin
ae29de8326 MSWGetDlgCode() behaviour changed to allow both TAB navigation in the
dialogs, pressing Enter to activate default button and processing Enter
by the text control itself.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@309 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-19 20:45:51 +00:00
Julian Smart
a93ca20183 Renamed a couple more samples/controls files; fixed wxSplitterWindow cursors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@308 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-19 20:09:44 +00:00
Karsten Ballüder
26cf69fe72 fixed the ps dialog but doesn't all work yet
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-19 17:39:07 +00:00
Julian Smart
637f467a06 wxDocManager gets the only view if none other specified as the current view;
added ProcessEvent so views get their events processed properly.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@306 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 22:04:25 +00:00
Julian Smart
0fc1a7137c Added revamped Object Graphics Library (for node/arc diagrams).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@305 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 21:57:52 +00:00
Vadim Zeitlin
0f7549d594 a couple of functions added (GetNumberOfGroups/Entries, ExpandEnvStrings),
some global functions renamed to start with "wx"


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@304 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 21:47:45 +00:00
Vadim Zeitlin
82cf4761e1 small bug fixes + a couple of new functions added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@303 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 21:44:54 +00:00
Vadim Zeitlin
9fbd8b8d61 several bugs fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@302 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 21:15:37 +00:00
Guilhem Lavaux
cf5f9c9c3e wxFrame: OnSize() has a SEGV if wxFrame has no child. Fixed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 10:44:31 +00:00
Robert Roebling
0d73e5a104 ODBC compile (and link) fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 10:15:35 +00:00
Robert Roebling
1a6944fd74 added ODBC support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@299 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-18 00:57:32 +00:00
Vadim Zeitlin
c83d505a20 compile without STRICT fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@298 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 22:34:15 +00:00
Vadim Zeitlin
c7f3b78bac corrected (after wxTString untimely death) and expanded
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@297 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:21:02 +00:00
Vadim Zeitlin
3aadbb82d9 the very last traces of wxTString removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@296 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:13:13 +00:00
Julian Smart
11ed4f79aa Bug fix to scrolwin.cpp (position not set in SetScrollbars); redundant variable
in wxGrid removed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@295 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:03:05 +00:00
Vadim Zeitlin
99d270120e don't set focus to [ok] in text entry dialog (leave the text zone have it)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@294 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:01:47 +00:00
Vadim Zeitlin
7502ba2975 last traces of wxTString removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@293 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 21:00:11 +00:00
Vadim Zeitlin
3168a13f90 correct (working) version of wxString
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@292 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 20:58:33 +00:00
Vadim Zeitlin
a1530845c9 wxTString removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@291 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 20:52:40 +00:00
Vadim Zeitlin
6b95b20d03 correct (working) version of wxString
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@290 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 20:51:36 +00:00
Vadim Zeitlin
36af0bc423 another "const" added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@289 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 13:07:33 +00:00
Vadim Zeitlin
85ccdcce1c some "const"s added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@288 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 12:44:13 +00:00
Karsten Ballüder
e14dccff1c fixed, latex now works for manual.tex and referenc.tex, but
referenc.tex fails with index


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@287 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 12:34:50 +00:00
Julian Smart
d6a1743b56 Some Borland/GnuWin32 fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@286 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 11:10:38 +00:00
Karsten Ballüder
18a2fa3715 fixed underline for drawing text, as suggested by Chris Breeze
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@285 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 10:06:26 +00:00
Julian Smart
c4e7c2aa58 Added STRICT corrections.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@284 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 09:32:24 +00:00
Vadim Zeitlin
e99c304810 fixed compilation problems under Windows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@283 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 08:18:57 +00:00
Robin Dunn
3848ffef9f fixed a missing backslash
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@282 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-17 03:35:20 +00:00
Vadim Zeitlin
f5ae044937 wxFileConfig uses sorted arrays (big performance improvement)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@281 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-16 17:30:39 +00:00
Vadim Zeitlin
3bfa440288 added sorted arrays: they automatically sort items on insertion (using user
provided compare function) and binary search in Index(). Using them in
situations where Index() performance is important brings 30%-40% performance
boost.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-16 17:29:46 +00:00
Julian Smart
400735a8fa Cured SetString/GetSelection interaction; incorporated Chris's changes to wxDC:Blit
for printer DCs.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@279 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-16 08:34:29 +00:00
Robin Dunn
1eb20d4a08 Inserted an else that seemed to be missing. (My RadioBox crashed
without it...)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@278 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-16 06:47:27 +00:00
Guilhem Lavaux
e49f47aa77 wxStream: wxInputStream and wxOutputStream don't inherit from wxObject anymore.
Removed DECLARE* and IMPLEMENT*
filefn.h: added #include "wx/list.h" to define wxStringList


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@277 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 18:40:37 +00:00
Vadim Zeitlin
ba7f9a90b4 speed optimizations: some functions now use wxString::Alloc, wxTextFile::Read
uses a buffer to read data (instead of reading it one char at a time)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@276 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 17:14:06 +00:00
Vadim Zeitlin
dd1eaa89dd optimizations: more functions made inline, added Alloc()/Shrink() function for
more precise control over string's memory


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@275 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 17:10:23 +00:00
Karsten Ballüder
2ab889ff7b added gauge.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@274 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 14:38:57 +00:00
Karsten Ballüder
5a8c6c9adb fixed SetRange/GetValue
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@273 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 14:37:42 +00:00
Karsten Ballüder
24e5e6fcb4 fixed wxGTK copyright
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@272 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 12:02:40 +00:00
Karsten Ballüder
b4c05cda99 On Robert's request I have added the html-version of my wxQt proposal.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@271 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-15 12:00:42 +00:00
Vadim Zeitlin
45ea509a21 common constants (wxSeekMode) and types (off_t) to wxFile and wxStream are
now defined in filefn.h included by both file.h and stream.h


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@270 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 22:15:29 +00:00
Vadim Zeitlin
eda3efe2f8 off_t #define'd as _off_t for VC++ (it's not a standard type)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@269 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 22:08:59 +00:00
Vadim Zeitlin
30a5be975d GetTempFileName used in wxTempFile now instead of tmpnam
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@268 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 21:59:27 +00:00
Vadim Zeitlin
0ce2baa5e6 ExpandEnvVars was eating backslashes - no more.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 21:57:24 +00:00
Vadim Zeitlin
3826db3ef5 added wxSplitFile() to decompose a file name into path + name + ext
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@266 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 21:55:47 +00:00
Vadim Zeitlin
92abb45d0a 1) added wxSplitFile() to decompose a file name into path + name + ext
2) added a macro wxARE_FILENAMES_CASE_SENSITIVE which is either 1 or 0
   (for usage with wxString::IsSameAs)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@265 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 21:55:17 +00:00
Guilhem Lavaux
0cd9bfe8da * wxMemory*Stream link problem fix.
* wxData*Stream update.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@264 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 16:35:50 +00:00
Guilhem Lavaux
79c3e0e1ae * wxStream: I've rewritten the inheritance
* added wxZlib*Stream
* updated makefiles and data.cpp
* modified a bit wxFile so I can use it in wxFile*Stream


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-14 12:06:50 +00:00
Robert Roebling
33d0b396b2 resize mdi and notebook client
bitmap resizing (used in imagelist)
draw spline bug


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 23:30:59 +00:00
Julian Smart
d29d303b1c In splitter sample, forwarded OnIdle events to wxFrame, else UI updates don't
work. Removed compatibility function from docview.h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@261 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 20:11:21 +00:00
Robert Roebling
0180d5daae memdc and bitmap fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@260 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 17:00:29 +00:00
Vadim Zeitlin
5a8c929eb4 constraints for notebook pages work (again)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@259 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 16:57:43 +00:00
Karsten Ballüder
85504caca9 fixed DEBUG
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@258 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 15:46:01 +00:00
Karsten Ballüder
c6cdbc3d75 Changed #ifdef DEBUG to #ifdef __WXDEBUG__
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@257 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 14:11:22 +00:00
Karsten Ballüder
70bb5dba34 Quick fix to avoid unnecessary compiler warnings from duplicate __WXDEBUG__ defines.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@256 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 12:47:02 +00:00
Karsten Ballüder
4acbf24597 Configure now adds -D__WXDEBUG__ to the compiler switches if run with
--with-debug_flag.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 12:45:47 +00:00
Karsten Ballüder
f0b078077d Fixed that stupid stream problem.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 10:01:29 +00:00
Julian Smart
db138a4c2a Removed streams from VC++ makefile for now; corrected typo in log.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 09:15:56 +00:00
Karsten Ballüder
ddfc206782 uses wxString again (std::string optional)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@252 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-13 08:48:38 +00:00
Vadim Zeitlin
7d7fb17e1d GetTextExtent checks that passed pointers are not NULL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@251 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 23:23:11 +00:00
Vadim Zeitlin
27c9fe7554 wxLogDebug/Trace in release mode now don't give compiler warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 23:07:22 +00:00
Vadim Zeitlin
b5c3b53817 constraints handling for notebook pages improved
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@249 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:59:00 +00:00
Vadim Zeitlin
e15e548b50 wxFILE_MUST_EXIST added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@248 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:57:42 +00:00
Vadim Zeitlin
db8b79634e wxWindow::OnSize() removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@247 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:52:14 +00:00
Vadim Zeitlin
092bddef5a 1) separate expand/collapse event
2) separate Expand/Collapse/ToggleItem() functions
3) IsItemExpanded() added


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:50:32 +00:00
Vadim Zeitlin
5475b96085 constraints handling for the notebook pages fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:47:09 +00:00
Vadim Zeitlin
a8e50c86a4 defined wxFILE_MUST_EXIST flag
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@244 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:46:10 +00:00
Vadim Zeitlin
f04f399187 wxGetEmptyString() function added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@243 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:40:00 +00:00
Vadim Zeitlin
02ce7b722e 1. expand/collapse (and -ing variants) events are now separated
2. ExpandItem(action) can now be also called as ExpandItem(), CollapseItem()
   and ToggleItem()
3. several other minor changes (IsExpanded function added)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@242 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:25:34 +00:00
Vadim Zeitlin
abc7998686 added missing UngetWriteBuf() in wxString::insert
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:06:28 +00:00
Vadim Zeitlin
128aec1da4 memory leak plugged
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@240 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 22:05:16 +00:00
Vadim Zeitlin
cd70477bbd wxFrame::OnSize() slightly optimized (the behaviour is the same as before)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@239 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 21:55:31 +00:00
Vadim Zeitlin
d8329927ee wxWindow::OnSize() removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@238 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 21:49:45 +00:00
Robert Roebling
219f895a27 stream compile fixes
bitmap, icon, imaglist work (broken)
notebook client resize fixed (ugly)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@237 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 20:06:59 +00:00
Guilhem Lavaux
3cacae09fa Added IMPLEMENT_CLASS, ... about wxStream classes (I hope I didn't make mistakes).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@236 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 15:36:53 +00:00
Guilhem Lavaux
32fc4afbb2 Ooops ! I've forgotten the include files.
mmstream.cpp => mstream.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@235 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 15:24:52 +00:00
Guilhem Lavaux
3d4c6a214a Added wxStream but I haven't tested them.
Modified wxDataStream.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@234 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 15:16:09 +00:00
Karsten Ballüder
23f641681f latest sources from M
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 15:02:44 +00:00
Julian Smart
4414cc1db8 Added wxTreeLayout for wxWindows 2.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 09:21:16 +00:00
Julian Smart
ad3ad68e15 Added gtk.rsp, a 'response' file (listing of all wxGTK-specific files)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 09:17:14 +00:00
Julian Smart
3e1a3a402d Removed #pragmas in utils.cpp, corrected USE_(WX)DEBUG_CONTEXT,
added wx200gtk.zip creation in zipdist.bat.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@230 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-12 09:16:20 +00:00
Guilhem Lavaux
0f460a1d4b Deleted "#include <sched.h>".
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-11 14:51:58 +00:00
Robert Roebling
401ec7b639 event/leave events
scrollbar fix
listctrl fix


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-11 09:53:58 +00:00
Robert Roebling
4c6819972f tree control and dc::drawlines bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 23:08:39 +00:00
Vadim Zeitlin
da7f8ac4dd wxWindow::OnSize() does _not_ call Layout() (it should only be done for
top-level windows)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@226 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 17:46:08 +00:00
Vadim Zeitlin
ed7a557b53 wxFrame::OnSize() calls Layout() if GetAutoLayout()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 17:45:38 +00:00
Karsten Ballüder
2049ba38ad Changed __GTK__, __WINDOWS__ and __MOTIF__ to __WXGTK__, __WXMSW__ and __WXMOTIF__
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 14:15:17 +00:00
Karsten Ballüder
7007fcfced Fixed implementation pragma to "utils.h"
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 13:34:20 +00:00
Karsten Ballüder
8c43d1c898 DEBUG -> WXDEBUG
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@221 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 12:06:03 +00:00
Karsten Ballüder
2216f571bf still fixing DEBUG macros
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 12:01:16 +00:00
Karsten Ballüder
54fe0dcf9a fixed another @DEBUG@
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@219 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 11:55:19 +00:00
Karsten Ballüder
b2aef89b7a Cleared up DEBUG define mess, defines are now called __WXDEBUG__ and WXDEBUG.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@218 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 11:14:17 +00:00
Julian Smart
8b9518ee4a Fixed const problems in status bar code, changed panelg.cpp temporarily to
stop infinite loop, added notebook.cpp in wxMSW makefiles. Fixed #pragma
in utilscmn.cpp YET again.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@216 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 10:39:48 +00:00
Julian Smart
447daba1ce Changed name of controls sample.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@215 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 10:36:57 +00:00
Karsten Ballüder
a19102646e fixed arguments to make it wxMSW compatible
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@214 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-10 08:26:54 +00:00
Vadim Zeitlin
88310e2e82 MSW wxNotebook implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@213 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 20:19:33 +00:00
Vadim Zeitlin
7fd1d163b7 wxWindow::IsShown() made 'const'
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 15:59:27 +00:00
Vadim Zeitlin
6e4739a0e1 wxWindow::FindFocus() doesn't exist in wxGTK - #ifdef'd out
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@211 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 12:26:38 +00:00
Vadim Zeitlin
0abbe29739 added virtual bool wxWindow::AcceptsFocus()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@210 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 12:24:13 +00:00
Robert Roebling
c0392997c9 ThreadnoGui compiles now.
A few more compilefixes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@209 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-09 06:25:37 +00:00
Vadim Zeitlin
c99a3a1d94 wxCHECK/CHECK_RET adjustments
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@208 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 23:13:47 +00:00
Vadim Zeitlin
524761867c added virtual functions AcceptsFocus() and MSWGetDlgCode()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@207 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:44:10 +00:00
Vadim Zeitlin
670c3849fd added Acceptsfocus() { return FALSE; }
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@206 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:41:38 +00:00
Vadim Zeitlin
19ddda8406 added AcceptsFocus() { return FALSE; }
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:41:07 +00:00
Vadim Zeitlin
8a33ea6250 improved keyboard handling, bug fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@204 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:39:21 +00:00
Vadim Zeitlin
3bfaaefe96 Last() function added (the same as Item(Count() - 1))
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@203 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:37:57 +00:00
Vadim Zeitlin
47cbd6da8f 1) keyboard handling: now generates NavigationKey events instead of using
IsDialogMessage (which is still called if the event is not processed)
   which gets very confused in complex dialogs
2) added tracing of Windows messages


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@202 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:33:24 +00:00
Vadim Zeitlin
c1e3482862 bug with multi-part status bars with default widths corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@201 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:29:11 +00:00
Vadim Zeitlin
b7dd52e9ad wxDC::GetTextExtent() checks that passed in x and y pointers are !NULL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@200 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:27:17 +00:00
Vadim Zeitlin
097c080b74 Matches() and UngetWriteBuf() added, several asserts added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:21:55 +00:00
Vadim Zeitlin
8fd0f20ba4 1) some size_t replaced with uint - does it now compile under Alpha??
2) added Matches(const char *mask) function which checks if the string
   matches the mask possibly containing '?' and '*' wildchars
3) GetWriteBuf complemented with UngetWriteBuf


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@198 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:21:11 +00:00
Vadim Zeitlin
93da8c4246 trace messages are now turned off by default
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:17:50 +00:00
Vadim Zeitlin
7fdefd5755 wxNavigationKeyEvent class and corresponding macro added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@196 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:16:19 +00:00
Vadim Zeitlin
b09dcbf5cb IMPLEMENT_DYNAMIC_CLASS(wxNavigationKeyEvent, wxCommandEvent) added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@195 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:15:30 +00:00
Vadim Zeitlin
e163f7bb2a 1) keyboard handling added (OnNavigationKey)
2) removed default values from the old-style ctor to make it possible to
   use the new one with default args


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:12:44 +00:00
Vadim Zeitlin
90c3bdac77 keyboard handling added (OnNavigationKey)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@193 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:12:03 +00:00
Vadim Zeitlin
330043b46d a couple of "const" mistakenly removed restored
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@192 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 22:09:37 +00:00
Guilhem Lavaux
4d1f281b6d Small updates in the documentation about threads.
Documentation about wxDataStream added.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@191 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 19:06:13 +00:00
Vadim Zeitlin
6d8335660f HasGroup/Entry added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@190 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 17:56:43 +00:00
Julian Smart
6a6c0a8bda Removed redundant auto-setting code in wxDC; corrected utilscmn.cpp pragma;
added inlines using wxPoint/wxSize/wxRect in dc.h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@189 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 15:52:22 +00:00
Julian Smart
b7346a70cf Cured a bad assert in wxStatusBar; #ifdefed oleutils.cpp for VC++ 5.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@188 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 13:21:23 +00:00
Karsten Ballüder
c79064fbc3 Corrected convert path to /usr/X11/bin, the default installation path.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@187 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 10:40:08 +00:00
Julian Smart
e5ad6961eb Fixed event arg in notebook.h, #ifdefed out some functions in oleutils that
don't compile in VC++ 4.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-08 10:05:51 +00:00
Karsten Ballüder
6163f5d8b0 Some fixes for Solaris (2.5).
Fixed path to png.h in gdk_imlib_private.h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@185 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 15:59:37 +00:00
Julian Smart
bb6290e351 Various bug fixes, cosmetic changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@184 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 14:57:42 +00:00
Vadim Zeitlin
876419ce60 added HasEntry/Group function to wxConfig, corrected entry/group deletion
bug (were not deleted from file) in wxFileConfig


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@183 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 13:53:19 +00:00
Vadim Zeitlin
a32dd69091 added missing DeleteItem(long itemId) function
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@182 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 13:16:37 +00:00
Karsten Ballüder
0e338ff9a3 Fixed broken Ieee extension for configure --without-apple_ieee
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@181 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-07 10:43:26 +00:00
Guilhem Lavaux
8c46af496a * Fixed configuration problem (#if USE_APPLE_IEEE)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@180 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-05 14:39:29 +00:00
Julian Smart
debe6624c1 Sorry, I went and removed consts as per the style guide :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@179 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-04 15:17:59 +00:00
Guilhem Lavaux
eafc087e69 * Fixed Async -> sync in wxExecute
* Added documentation about wxProcess, ...
* Added wxDataStream::WriteString and wxDataStream::ReadString


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@178 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-03 17:44:34 +00:00
Julian Smart
884360bc11 Various documentation changes, makefile fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-03 16:39:59 +00:00
Julian Smart
0d3820b348 Added #pragmas for gcc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@176 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-03 16:36:10 +00:00
Julian Smart
cfe780fb99 Added wxExpr parser/lexer files which had somehow got lost;
added some pragmas.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@175 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-03 16:34:35 +00:00
Guilhem Lavaux
ca7731b7c8 * Deleted all ^M
* Added common/process.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@174 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 17:43:02 +00:00
Julian Smart
e74d736b5a Added dummy constructors etc. for wxProcess(Event) until Guilhem does it
for real.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 16:40:30 +00:00
Julian Smart
4ce7bc3ebf Added extra Dialog Editor icons
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@172 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:43:40 +00:00
Karsten Ballüder
595bcfe9fc Fixed the configure apple-ieee to apple_ieee.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@171 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:38:21 +00:00
Julian Smart
ae8351fc61 Major changes to Dialog Editor (still at alpha level)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@170 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:19:34 +00:00
Julian Smart
201812a850 Removed some consts from tabctrl.h; fixed some other errors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@169 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:17:35 +00:00
Julian Smart
5260b1c582 Various changes for 16-bit compilation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@168 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 15:16:56 +00:00
Vadim Zeitlin
ccd82cd130 old TODO renamed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@167 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 14:01:27 +00:00
Vadim Zeitlin
0ef0f35a33 renamed to TODO.txt (you really shouldn't use Explorer, Julian! :-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@166 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 14:00:05 +00:00
Vadim Zeitlin
ec69bbe8fa the file which contains TODO issues (with their priorities) for all platforms
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@165 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-02 11:40:53 +00:00
Vadim Zeitlin
484e45bff5 * added gtk_text_changed callback and implemented DiscardEdits(), so that
now IsModified() works correctly
* corrected several "off by 1" errors for wxTE_MULTILINE controls
  (apparently it was a GTK bug so perhaps it doesn't work correctly with
   previous GTK versions, but it works correctly with the latest, GTK 1.0.4)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@164 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 18:58:24 +00:00
Guilhem Lavaux
3259263158 * Well, I've forgotten this file :-(
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@163 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 17:28:14 +00:00
Guilhem Lavaux
cf44735628 * Changed "true" to "TRUE" in some file: "true" doesn't exist in BC++ 5
* Added wxDataStream and wxProcess
* Added the asynchronous end process notification on GTK and MSW
* Updated configure* and setup.h
* Added extended.c: Apple code to encode/decode float in IEEE format
  this code is removable by disabling USE_APPLE_CODEC


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@162 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 17:26:46 +00:00
Vadim Zeitlin
0423b68518 wxImageList ctor now takes the same arguments as the MSW version (but it's
still not implemented)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@161 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 15:43:03 +00:00
Vadim Zeitlin
74bedbeb40 many changes to make generic tree control (more) MSW compatible:
1) wxEVT_COMMAND_TREE_EXPANDING event now generated
 2) tree control doesn't not delete children on branch collapse any more
 3) migging image list and image-related functions added (but not yet
    implemented)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@160 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-07-01 15:42:11 +00:00
Karsten Ballüder
fd02ae23c2 Removed the WXUNUSED() from size parameters in wxIcon(filename,width,height)
and added default values of -1,-1 to make it compatible with MSW behaviour.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@159 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-30 12:42:46 +00:00
Vadim Zeitlin
29d87bba53 fixes redraw bug which was leaving a horizontal strip under the tree item
after it was unselected (in wxGTK)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@158 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-29 16:23:41 +00:00
Karsten Ballüder
a5f81d8c07 Added my wxWindows based layout engine to the repository.
It arranges text and graphics for display on a wxDC.
This code is licensed under the LGPL.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@157 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-29 12:44:36 +00:00
Karsten Ballüder
8f79098a04 fixed event type parameter
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@156 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-29 12:18:42 +00:00
Julian Smart
780d37acc7 Separated out Win95 versions of gauge, slider
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@155 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-28 11:34:42 +00:00
Julian Smart
ad860fbf5d *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@154 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-28 11:33:08 +00:00
Julian Smart
da87a1ca42 Separated out Win95 versions of gauge, slider; added wxTabCtrl::GetCurFocus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-28 11:32:14 +00:00
Julian Smart
003a43dc88 Changes for wxEventType
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 22:00:38 +00:00
Julian Smart
6c6f51f6bb Changes to aid debugging.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@151 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 21:59:42 +00:00
Julian Smart
646930985a wxEventType alterations.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@150 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 20:19:48 +00:00
Julian Smart
7798a18ec8 New wxEventType for event type enum, and corresponding alterations.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@149 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 20:18:30 +00:00
Vadim Zeitlin
68919656bb corrected "of by 1" error in wxString::insert()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@148 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 15:39:01 +00:00
Vadim Zeitlin
604a178390 added support for label alignments in wxStaticText::Create()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@147 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 14:29:47 +00:00
Vadim Zeitlin
ff829f3f6d made the interface more compatible with the MSW version (although
InsertPage and wxEVT_PAGE_CHANGING are still not implemented) and
implemented the wxEVT_PAGE_CHANGED callback.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@146 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-26 14:29:11 +00:00
Julian Smart
dabeb02181 Cured DC/GDI object leak; listbox window proc restored from debugging
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@145 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-25 21:30:23 +00:00
Julian Smart
ad95e0f64e Various measures to reduce flicker.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@144 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-25 09:45:27 +00:00
Julian Smart
da938cfd99 Reduced flicker by a combination of less background erasing, and double-buffering.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@143 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-25 09:43:59 +00:00
Vadim Zeitlin
f1da2f03fc misleading wxASSERT() corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@142 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-24 14:37:28 +00:00
Vadim Zeitlin
20193f1dab bug in wxNotebook::OnSize() corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@141 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-23 17:47:42 +00:00
Vadim Zeitlin
4e6322e0e5 added OnSize() to wxNotebook which forwards size events to the pages: fixes
the layout problem


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@140 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-23 16:28:49 +00:00
Julian Smart
46851318fe Corrected problem with MDI children not refreshing (removed WS_CLIPCHILDREN).
Double-fixed the LEAVE/ENTER bug...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@139 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-23 10:29:23 +00:00
Julian Smart
ab22cb9a01 Removed deletion of m_selections
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:53:39 +00:00
Julian Smart
f0edd8249f Removed Scanf, Scanfv
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@137 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:52:43 +00:00
Julian Smart
607d906178 Added more flags to resource.cpp, #ifdefed out ScanfV for Windows, some
grid typo fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:48:22 +00:00
Julian Smart
1c089c47f3 Cured problem introduced by LEAVE/ENTER OnIdle code; bugs in gauge sizing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@135 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:43:48 +00:00
Julian Smart
565215b26a Added wxCLIP_CHILDREN style (mainly for getting rid of flicker), other minor mods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@134 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:27:14 +00:00
Vadim Zeitlin
f54f3bffce attempt to clean up a little keyboard handling code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@133 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:25:07 +00:00
Vadim Zeitlin
1311c7a9bb wxCHECK/wxCHECK_RET changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@132 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:17:39 +00:00
Vadim Zeitlin
a539b39f6b wxCHECK change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@131 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:17:15 +00:00
Vadim Zeitlin
144833307d GetSelections() changed to work with wxArrayInt
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@130 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:09:38 +00:00
Vadim Zeitlin
1d7929284e now compiles with USE_XPM_IN_MSW on, added error messages if bitmap can't
be loaded/saved


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@129 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:07:55 +00:00
Vadim Zeitlin
8abf40fbb9 VC++ warning suppressed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@128 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:06:42 +00:00
Vadim Zeitlin
9efd3367c0 wxString::Scanf() removed because can't be implemented portably
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@127 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:04:23 +00:00
Vadim Zeitlin
e9c7dfb9b5 now compiles with USE_XPM_IN_MSW on
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@126 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 22:03:20 +00:00
Vadim Zeitlin
937d4f4d31 bug in SplitPath() corrected - now ".." handled correctly
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@125 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:58:31 +00:00
Vadim Zeitlin
7f17c6dbbf wxListbox::GetSelections() now takes a wxArrayInt instead of "int **"
(as under wxGTK)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@124 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:54:19 +00:00
Vadim Zeitlin
d736364315 now compiles with USE_XPM_IN_MSW on
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@123 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:53:24 +00:00
Vadim Zeitlin
0f03d24f30 Oops... just added wxString::Scanf() functions can't be implemented under
Windows. Removed.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@122 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:51:27 +00:00
Vadim Zeitlin
6a415c9a1f #include "wx/msw/notebook" added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@121 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:50:11 +00:00
Vadim Zeitlin
2283a22c2d wxLogWindow::GetOldLog() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@120 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:48:53 +00:00
Vadim Zeitlin
1db08b2baf wxCHECK macros slightly changed: wxCHECK( expr, rc ) now returns rc if
expr is FALSE and wxCHECK_RET( expr ) must be used in void functions.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@119 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 21:47:38 +00:00
Karsten Ballüder
5ebd1fb227 fixed #pragma
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@118 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 14:40:59 +00:00
Karsten Ballüder
1f0299c17d fixed #include paths to use local copies of png/gdk_imlib/zlib headers
fixed compiler warning in time.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@117 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-22 12:47:56 +00:00
Guilhem Lavaux
bdc6fff9ea * Added $(THREADS_LINK) to $(LINK_LIBS) so all programs can be linked.
* Updated the thread detected (pthread-0.7, pthread, pthreads)
* Added --without-threads to disable threads


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@116 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-20 10:25:12 +00:00
Vadim Zeitlin
9fd239ad61 put wxMessageBox() arguments in OnAssert() in the right order
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@115 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-19 15:55:51 +00:00
Karsten Ballüder
6367c8394c fixed stupid compiler warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@114 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-19 12:35:36 +00:00
Vadim Zeitlin
4bf58c62d2 changed the notebook control to use AddPage() interface (Julian's version
didn't work at all) andupdated the sample to work with it


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@113 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 16:59:18 +00:00
Julian Smart
5bfe9bbc65 Fixed SetSelection, GetSelection for Portrait/Landscape selection
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@112 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 14:01:07 +00:00
Karsten Ballüder
40a97c003c another typo fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@111 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:40:24 +00:00
Karsten Ballüder
46bada707d added notebook.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@110 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:26:19 +00:00
Karsten Ballüder
3fc5256f83 fixed wrong scanf() arguments
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@109 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:26:02 +00:00
Vadim Zeitlin
c8cfb486fb 1) Right(char ch) now returns the part of the string after the last
occurence of ch _without_ ch itself (like Left(char ch))
2) Added wxString::Scanf() and wxString::ScanfV()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@108 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:20:42 +00:00
Vadim Zeitlin
b841e0e379 wxFileConfig bugs corrected (now the new entries belong to the right groups)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@107 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-18 13:07:58 +00:00
Guilhem Lavaux
82052affa7 * Hope this is the last bug fix in the wxThread merge ...
* configure updated
* some function added in utilsgtk.cpp (wxSleep, wxKill)
* wxThread sample v0.1


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@106 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-16 17:17:02 +00:00
Vadim Zeitlin
d1c9bbf64d "-1" index error in wxString::Before fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@105 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-16 12:41:33 +00:00
Guilhem Lavaux
8d31c13865 * Corrected #include "thread.h" => #include "wx/thread.h"
* Corrected the joystick.h detection stuff in configure.in


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@104 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-15 17:21:07 +00:00
Karsten Ballüder
f5bf3b9509 changed GetSelections() argument
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@103 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-15 12:06:39 +00:00
Julian Smart
8aadf22734 Experimental notebook API
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@102 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-15 09:21:45 +00:00
Julian Smart
38009d396d Corrected some problems I introduced, added tabevent.tex.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@101 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-15 07:57:40 +00:00
Vadim Zeitlin
b5f2afe541 wxNotebook interface (it may change!), implementation file is not yet
commited - I will do as soon as the interface is fixed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@100 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 23:16:19 +00:00
Vadim Zeitlin
28bfeb7353 added notebook events: wxEVT_COMMAND_NOTEBOOK_PAGE_CHANG(ED|ING)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@99 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 23:13:36 +00:00
Vadim Zeitlin
ec845369d5 added ctor wxColour(unsigned long colRGB) and the corresponding Set()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@98 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 23:08:53 +00:00
Julian Smart
e5fb7191bb Added #define wxHelpController to help.h; added wxWinHelpController::Quit code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@97 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 20:53:26 +00:00
Julian Smart
89a51b2e38 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@96 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 20:52:08 +00:00
Julian Smart
fe604ccddc Various documentation additions and changes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@95 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 20:48:39 +00:00
Guilhem Lavaux
b89156b5db * Thread updates and cleanup (m_locked, MUTEX_UNLOCKED added)
* Updated the documentation


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@94 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 15:28:28 +00:00
Julian Smart
ee4f8c2af9 const/void changes in thread, tabctrl and wave files; wxTabCtrl::InsertItem
now returns bool not int.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@93 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 12:15:13 +00:00
Julian Smart
eaaa6a06a2 Changed documentation const convention for non-objects; added some manual files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@92 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 12:11:50 +00:00
Julian Smart
4efd74436a Corrected missing pipe in treectrl.h, wxOK->wxID_OK in wxGetTextFromUser,
no offsets in 2 functions in wxDC


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@91 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-14 08:53:46 +00:00
Julian Smart
40e1a9c025 Corrected dataobj.h/.cpp, corrected listbox to use non-integral height
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@90 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 17:09:59 +00:00
Guilhem Lavaux
7c351dad14 * Posix/SGI/No threads added
* Updated configure.in file (Threads and Joystick detection)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@89 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 17:02:45 +00:00
Julian Smart
d3c2365922 Added include/wx/joystick.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@88 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 10:12:57 +00:00
Julian Smart
101ceb40b1 Added GTK/Linux joystick class (Guilhem Lavaux)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@87 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 10:11:58 +00:00
Julian Smart
43d811ea55 Correction to dnd.h; EVT_MOUSE_EVENTS now includes LEAVE/ENTER events;
Windows LEAVE/ENTER events now work


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@86 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-13 10:09:13 +00:00
Vadim Zeitlin
3078c3a641 in wxOnAssert() abort() replaced with raise(SIGTRAP) (Unix only)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@85 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-12 15:41:02 +00:00
Vadim Zeitlin
6a6d4eedf8 added support of multiple-selection listboxes, GetSelections() now works.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@84 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-12 14:56:04 +00:00
Vadim Zeitlin
2ad3a34ecc wxTextCtrl::WriteText() now adds it at the end and not 1 position before
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@83 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-10 17:04:04 +00:00
Vadim Zeitlin
329b53d8ff testing CVS notifications
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@82 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-10 11:11:20 +00:00
Vadim Zeitlin
4516e6c444 wxLogWindow ctor changed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@81 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-10 10:18:51 +00:00
Vadim Zeitlin
f42d26252d wxLogWindow is now not a top-level frame, so it doesn't prevent the app from
being closed


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@80 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-09 17:35:25 +00:00
Vadim Zeitlin
b59650beee wxTempFile bug corrected: the temp file is now created in the same dir
as the original one, so that rename() always succeeds


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@79 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-09 13:14:20 +00:00
Vadim Zeitlin
e51c494324 Bool changed to bool
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@78 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-08 12:41:15 +00:00
Julian Smart
b18268d34b Notes about implementing EVT_LEAVE_WINDOW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@77 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-08 11:48:29 +00:00
Karsten Ballüder
c03b8ea8cd fixed NULL problem
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@76 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-08 11:37:30 +00:00
Vadim Zeitlin
05fafecd1a Bool replaced by bool
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@75 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-05 14:46:58 +00:00
Vadim Zeitlin
bc7665d447 Bool replaced by bool (I hope I got it right this time!)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-05 14:46:17 +00:00
Julian Smart
1889c7c9b7 Small mods to manual
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-05 07:45:17 +00:00
Robert Roebling
112892b918 GTK
- added docview sample, doesn't work :-(
   - changed wxBmpButton callback name


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-04 16:08:47 +00:00
Julian Smart
948041079c Modified wx.hpj for new directory structure; books.gif is now transparent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@71 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-03 19:40:14 +00:00
Robert Roebling
53010e52d3 GTK
combobox
    idle handling
    makefile fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-03 19:06:13 +00:00
Vadim Zeitlin
884d770ab5 bug preventing compilation of wxLogGui under !Windows corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@69 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-03 16:34:39 +00:00
Julian Smart
39e6cbe2d2 Resubmitted binary files that may been corrupted
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@68 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-02 20:25:34 +00:00
Robert Roebling
53b2867549 GTK
- wxNotebook added
    - wxTabCtrl removed
    - added USE_WXCONFIG option
    - minor compile fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-02 19:04:33 +00:00
Vadim Zeitlin
cd71293400 added #if USE_WXCONFIG check (TODO: add configure switch for it)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@66 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-06-02 13:23:24 +00:00
Vadim Zeitlin
b0cf2597e2 wxDataObject now defined in defs.h and not here
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@65 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-31 00:09:52 +00:00
Vadim Zeitlin
6a0eb96b27 missing #endif
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@64 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-31 00:08:01 +00:00
Vadim Zeitlin
c6020b7d71 wxDataFormat typedef added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@63 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-31 00:00:11 +00:00
Vadim Zeitlin
75c6c54531 helper file for WX_DEFINE_LIST: dynamic list implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@62 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-30 23:42:51 +00:00
Julian Smart
a85586fd22 Removed Deselect function.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@61 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-30 17:21:21 +00:00
Robert Roebling
7f4dc78d35 Same as last one..
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@60 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-30 17:11:51 +00:00
Robert Roebling
1c005ff76d GTK:
Added wxTabCtrl
    Work on wxEventhandler (delete clientdata)
            wxChoice (derive from wxControl)
            wxTextCtrl (init with text)
    Added sample for tabctrl (and more)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-30 17:10:15 +00:00
Robert Roebling
1a56f55c02 GTK
moved main() to app.cpp
  added wxGauge
  added wxStaticBitmap


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-28 22:05:55 +00:00
Julian Smart
6f65e33794 Updates from Chris Breeze
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@57 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-28 19:54:07 +00:00
Robert Roebling
151ccd11af GTK wxBitmapButton added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@56 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-28 17:44:04 +00:00
Julian Smart
ef77f91e5b #ifdefed out a typedef not appropriate to MSW; added SetSelection to choice dialog
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@55 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-28 11:13:25 +00:00
Vadim Zeitlin
4075e9a407 cleaned code a bit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@54 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:41:55 +00:00
Vadim Zeitlin
269a5a34a6 wxDataObject and wxDropSource implementations
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@53 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:38:26 +00:00
Vadim Zeitlin
19454fa092 registry based implementation of wxConfig (wxRegConfig)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@52 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:37:21 +00:00
Vadim Zeitlin
195896c792 1) now associated drop target is deleted (memory/resource leak corrected)
2) added wxCHECK( hWnd != NULL ) to wxAssociateWinWithHandle


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@51 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:36:40 +00:00
Vadim Zeitlin
d8b98f009e removed compilation warning about "switch with default but no case" (no
real changes)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@50 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:34:01 +00:00
Vadim Zeitlin
0b1c5a6cba many bugs (including major one in DeleteSelf) corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@49 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:32:14 +00:00
Vadim Zeitlin
c1888b05b0 spurious "(uint)" cast which was causing compilation warnings removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@48 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:30:50 +00:00
Vadim Zeitlin
c54f78a253 1) Added call to wxLog::Flush() to wxApp::OnIdle()
2) Last active log target is now deleted in wxApp::CleanUp()


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:29:56 +00:00
Vadim Zeitlin
1737035fb8 wxDataObject and wxDropSource classes for (more) d&d support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@46 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:24:11 +00:00
Vadim Zeitlin
3bd2972366 option USE_WXCONFIG (default value: 1) added which enables compilation of
wxConfig


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:20:27 +00:00
Vadim Zeitlin
2dc7764675 function HasValue() added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:18:16 +00:00
Vadim Zeitlin
45c2881542 declaration of registry based implementation of wxConfig (wxRegConfig)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:07:33 +00:00
Vadim Zeitlin
4e066dd257 wxApp::CreateConfig() only defined #if USE_WXCONFIG
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@42 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 23:05:10 +00:00
Vadim Zeitlin
aeaa5b9aad no changes (cvs wierdness...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@41 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 22:52:51 +00:00
Vadim Zeitlin
cdb7168d80 no changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 22:50:55 +00:00
Julian Smart
6b0eb19fe8 Misc changes for DOS compatibility, plus added wxApp::CreateConfig
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@39 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 13:56:59 +00:00
Julian Smart
f0b3249bf7 Changes to help with Win16 compilation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-27 09:37:56 +00:00
Karsten Ballüder
bac0b3d573 bug hunting in the repository
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 16:36:38 +00:00
Vadim Zeitlin
6a06dd8df2 new compile option added: USE_WXCONFIG. If it's 1, wxApp has a virtual
wxConfig *CreateConfig() function which can be overloaded to create a global
config object (current implementation simply returns NULL for now).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:15:22 +00:00
Vadim Zeitlin
1fa9e86daf stray '^M' removed (egcs doesn't like them)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@35 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:13:53 +00:00
Vadim Zeitlin
9ef3052c91 1) log leves are now global wxLOG_ prefixed constants and not wxConfig::enum
members
2) another variant of wxLogTrace() takes the trace level as argument: this
   allows to filter trace messages from different sources (see wxTraceXXX
   constants)
3) wxLogWindow class added: opens a debug frame which collects all log
   messages


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@34 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:11:46 +00:00
Vadim Zeitlin
9d8046f6fe inline wxGetTranslation() moved so it's not called before being defined
(thanks to egcs for the warning)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@33 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:08:50 +00:00
Vadim Zeitlin
1f905dc575 wxFileConfig now has it's own header, the config file name may be given to
it's ctor (and not hard coded). Static wxFileConfig methods
Get{Global|Local}FileName can be used to retrieve the standard config file
path.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:07:48 +00:00
Vadim Zeitlin
61b027446e added write_append mode to wxFile, implemented eof() for Unix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@31 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:05:56 +00:00
Vadim Zeitlin
99b55eb078 added "\n" at the end of file to silent egcs warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@30 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:04:03 +00:00
Vadim Zeitlin
855e92a8d9 added "const char *Read()" returning pointer to statis buffer (in wxConfig
implementation at least), code common to wxRegConfig and wxFileConfig moved
to config.cpp


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@29 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 15:02:58 +00:00
Vadim Zeitlin
824e935add mistype: #ifdef __GTK corrected (#ifdef __GTK__ now)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-26 14:58:05 +00:00
Julian Smart
efad39f997 Added some more missing files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 20:03:07 +00:00
Julian Smart
457814b5aa *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@26 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 19:57:05 +00:00
Robert Roebling
69d2886dfe Added dynamic events sample.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@25 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 19:08:19 +00:00
Julian Smart
f6bf3066bb *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 17:09:19 +00:00
Julian Smart
99025f6e18 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 11:48:57 +00:00
Julian Smart
e1d1da03d5 In SetString, added test for owner draw style to cure crash.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@22 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 10:31:40 +00:00
Julian Smart
58c55d1f77 Changed library paths for new structure
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@21 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-22 08:08:11 +00:00
Julian Smart
6e5ae05172 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@20 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 20:42:20 +00:00
Julian Smart
26a87b69a0 App declarations modified; cursor was corrupt; needed to add PostScript-related variable.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@19 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 19:39:05 +00:00
Julian Smart
10b959e372 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@18 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 15:02:02 +00:00
Julian Smart
aad5220b82 Minor changes to make files compile (return values); added resource.cpp.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@17 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 14:34:35 +00:00
Julian Smart
145aa40682 Added resource.h, missing from archive.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@16 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 14:33:06 +00:00
Julian Smart
1ff121bd9e Added sample makefile.nt, makefile.g95.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@15 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 14:22:00 +00:00
Julian Smart
197e66da2c *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 14:19:36 +00:00
Robert Roebling
fe71f65c0f Add support for dynamic event tables
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@13 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 12:31:14 +00:00
Robert Roebling
abe1d62edf *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@12 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-21 10:46:43 +00:00
Karsten Ballüder
a660d684ed I've now added the documentation files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@11 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-20 14:25:30 +00:00
Karsten Ballüder
bbf1f0e5cf now MSW stuff is complete
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-20 14:21:00 +00:00
Karsten Ballüder
2bda0e1738 added some wxMSW stuff
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@9 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
1998-05-20 14:12:05 +00:00
66 changed files with 3456 additions and 13367 deletions

View File

@@ -1,2 +0,0 @@
zlibM*Data
zlibM5.mcp

View File

@@ -1,481 +0,0 @@
ChangeLog file for zlib
Changes in 1.1.4 (11 March 2002)
- ZFREE was repeated on same allocation on some error conditions.
This creates a security problem described in
http://www.zlib.org/advisory-2002-03-11.txt
- Returned incorrect error (Z_MEM_ERROR) on some invalid data
- Avoid accesses before window for invalid distances with inflate window
less than 32K.
- force windowBits > 8 to avoid a bug in the encoder for a window size
of 256 bytes. (A complete fix will be available in 1.1.5).
Changes in 1.1.3 (9 July 1998)
- fix "an inflate input buffer bug that shows up on rare but persistent
occasions" (Mark)
- fix gzread and gztell for concatenated .gz files (Didier Le Botlan)
- fix gzseek(..., SEEK_SET) in write mode
- fix crc check after a gzeek (Frank Faubert)
- fix miniunzip when the last entry in a zip file is itself a zip file
(J Lillge)
- add contrib/asm586 and contrib/asm686 (Brian Raiter)
See http://www.muppetlabs.com/~breadbox/software/assembly.html
- add support for Delphi 3 in contrib/delphi (Bob Dellaca)
- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti)
- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren)
- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks)
- added a FAQ file
- Support gzdopen on Mac with Metrowerks (Jason Linhart)
- Do not redefine Byte on Mac (Brad Pettit & Jason Linhart)
- define SEEK_END too if SEEK_SET is not defined (Albert Chin-A-Young)
- avoid some warnings with Borland C (Tom Tanner)
- fix a problem in contrib/minizip/zip.c for 16-bit MSDOS (Gilles Vollant)
- emulate utime() for WIN32 in contrib/untgz (Gilles Vollant)
- allow several arguments to configure (Tim Mooney, Frodo Looijaard)
- use libdir and includedir in Makefile.in (Tim Mooney)
- support shared libraries on OSF1 V4 (Tim Mooney)
- remove so_locations in "make clean" (Tim Mooney)
- fix maketree.c compilation error (Glenn, Mark)
- Python interface to zlib now in Python 1.5 (Jeremy Hylton)
- new Makefile.riscos (Rich Walker)
- initialize static descriptors in trees.c for embedded targets (Nick Smith)
- use "foo-gz" in example.c for RISCOS and VMS (Nick Smith)
- add the OS/2 files in Makefile.in too (Andrew Zabolotny)
- fix fdopen and halloc macros for Microsoft C 6.0 (Tom Lane)
- fix maketree.c to allow clean compilation of inffixed.h (Mark)
- fix parameter check in deflateCopy (Gunther Nikl)
- cleanup trees.c, use compressed_len only in debug mode (Christian Spieler)
- Many portability patches by Christian Spieler:
. zutil.c, zutil.h: added "const" for zmem*
. Make_vms.com: fixed some typos
. Make_vms.com: msdos/Makefile.*: removed zutil.h from some dependency lists
. msdos/Makefile.msc: remove "default rtl link library" info from obj files
. msdos/Makefile.*: use model-dependent name for the built zlib library
. msdos/Makefile.emx, nt/Makefile.emx, nt/Makefile.gcc:
new makefiles, for emx (DOS/OS2), emx&rsxnt and mingw32 (Windows 9x / NT)
- use define instead of typedef for Bytef also for MSC small/medium (Tom Lane)
- replace __far with _far for better portability (Christian Spieler, Tom Lane)
- fix test for errno.h in configure (Tim Newsham)
Changes in 1.1.2 (19 March 98)
- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant)
See http://www.winimage.com/zLibDll/unzip.html
- preinitialize the inflate tables for fixed codes, to make the code
completely thread safe (Mark)
- some simplifications and slight speed-up to the inflate code (Mark)
- fix gzeof on non-compressed files (Allan Schrum)
- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs)
- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn)
- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny)
- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori)
- do not wrap extern "C" around system includes (Tom Lane)
- mention zlib binding for TCL in README (Andreas Kupries)
- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert)
- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson)
- allow "configure --prefix $HOME" (Tim Mooney)
- remove warnings in example.c and gzio.c (Glenn Randers-Pehrson)
- move Makefile.sas to amiga/Makefile.sas
Changes in 1.1.1 (27 Feb 98)
- fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson)
- remove block truncation heuristic which had very marginal effect for zlib
(smaller lit_bufsize than in gzip 1.2.4) and degraded a little the
compression ratio on some files. This also allows inlining _tr_tally for
matches in deflate_slow.
- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier)
Changes in 1.1.0 (24 Feb 98)
- do not return STREAM_END prematurely in inflate (John Bowler)
- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler)
- compile with -DFASTEST to get compression code optimized for speed only
- in minigzip, try mmap'ing the input file first (Miguel Albrecht)
- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain
on Sun but significant on HP)
- add a pointer to experimental unzip library in README (Gilles Vollant)
- initialize variable gcc in configure (Chris Herborth)
Changes in 1.0.9 (17 Feb 1998)
- added gzputs and gzgets functions
- do not clear eof flag in gzseek (Mark Diekhans)
- fix gzseek for files in transparent mode (Mark Diekhans)
- do not assume that vsprintf returns the number of bytes written (Jens Krinke)
- replace EXPORT with ZEXPORT to avoid conflict with other programs
- added compress2 in zconf.h, zlib.def, zlib.dnt
- new asm code from Gilles Vollant in contrib/asm386
- simplify the inflate code (Mark):
. Replace ZALLOC's in huft_build() with single ZALLOC in inflate_blocks_new()
. ZALLOC the length list in inflate_trees_fixed() instead of using stack
. ZALLOC the value area for huft_build() instead of using stack
. Simplify Z_FINISH check in inflate()
- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8
- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi)
- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with
the declaration of FAR (Gilles VOllant)
- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann)
- read_buf buf parameter of type Bytef* instead of charf*
- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout)
- do not redeclare unlink in minigzip.c for WIN32 (John Bowler)
- fix check for presence of directories in "make install" (Ian Willis)
Changes in 1.0.8 (27 Jan 1998)
- fixed offsets in contrib/asm386/gvmat32.asm (Gilles Vollant)
- fix gzgetc and gzputc for big endian systems (Markus Oberhumer)
- added compress2() to allow setting the compression level
- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong)
- use constant arrays for the static trees in trees.c instead of computing
them at run time (thanks to Ken Raeburn for this suggestion). To create
trees.h, compile with GEN_TREES_H and run "make test".
- check return code of example in "make test" and display result
- pass minigzip command line options to file_compress
- simplifying code of inflateSync to avoid gcc 2.8 bug
- support CC="gcc -Wall" in configure -s (QingLong)
- avoid a flush caused by ftell in gzopen for write mode (Ken Raeburn)
- fix test for shared library support to avoid compiler warnings
- zlib.lib -> zlib.dll in msdos/zlib.rc (Gilles Vollant)
- check for TARGET_OS_MAC in addition to MACOS (Brad Pettit)
- do not use fdopen for Metrowerks on Mac (Brad Pettit))
- add checks for gzputc and gzputc in example.c
- avoid warnings in gzio.c and deflate.c (Andreas Kleinert)
- use const for the CRC table (Ken Raeburn)
- fixed "make uninstall" for shared libraries
- use Tracev instead of Trace in infblock.c
- in example.c use correct compressed length for test_sync
- suppress +vnocompatwarnings in configure for HPUX (not always supported)
Changes in 1.0.7 (20 Jan 1998)
- fix gzseek which was broken in write mode
- return error for gzseek to negative absolute position
- fix configure for Linux (Chun-Chung Chen)
- increase stack space for MSC (Tim Wegner)
- get_crc_table and inflateSyncPoint are EXPORTed (Gilles Vollant)
- define EXPORTVA for gzprintf (Gilles Vollant)
- added man page zlib.3 (Rick Rodgers)
- for contrib/untgz, fix makedir() and improve Makefile
- check gzseek in write mode in example.c
- allocate extra buffer for seeks only if gzseek is actually called
- avoid signed/unsigned comparisons (Tim Wegner, Gilles Vollant)
- add inflateSyncPoint in zconf.h
- fix list of exported functions in nt/zlib.dnt and mdsos/zlib.def
Changes in 1.0.6 (19 Jan 1998)
- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and
gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code)
- Fix a deflate bug occuring only with compression level 0 (thanks to
Andy Buckler for finding this one).
- In minigzip, pass transparently also the first byte for .Z files.
- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress()
- check Z_FINISH in inflate (thanks to Marc Schluper)
- Implement deflateCopy (thanks to Adam Costello)
- make static libraries by default in configure, add --shared option.
- move MSDOS or Windows specific files to directory msdos
- suppress the notion of partial flush to simplify the interface
(but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4)
- suppress history buffer provided by application to simplify the interface
(this feature was not implemented anyway in 1.0.4)
- next_in and avail_in must be initialized before calling inflateInit or
inflateInit2
- add EXPORT in all exported functions (for Windows DLL)
- added Makefile.nt (thanks to Stephen Williams)
- added the unsupported "contrib" directory:
contrib/asm386/ by Gilles Vollant <info@winimage.com>
386 asm code replacing longest_match().
contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
A C++ I/O streams interface to the zlib gz* functions
contrib/iostream2/ by Tyge L<>vset <Tyge.Lovset@cmr.no>
Another C++ I/O streams interface
contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
A very simple tar.gz file extractor using zlib
contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
How to use compress(), uncompress() and the gz* functions from VB.
- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression
level) in minigzip (thanks to Tom Lane)
- use const for rommable constants in deflate
- added test for gzseek and gztell in example.c
- add undocumented function inflateSyncPoint() (hack for Paul Mackerras)
- add undocumented function zError to convert error code to string
(for Tim Smithers)
- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code.
- Use default memcpy for Symantec MSDOS compiler.
- Add EXPORT keyword for check_func (needed for Windows DLL)
- add current directory to LD_LIBRARY_PATH for "make test"
- create also a link for libz.so.1
- added support for FUJITSU UXP/DS (thanks to Toshiaki Nomura)
- use $(SHAREDLIB) instead of libz.so in Makefile.in (for HPUX)
- added -soname for Linux in configure (Chun-Chung Chen,
- assign numbers to the exported functions in zlib.def (for Windows DLL)
- add advice in zlib.h for best usage of deflateSetDictionary
- work around compiler bug on Atari (cast Z_NULL in call of s->checkfn)
- allow compilation with ANSI keywords only enabled for TurboC in large model
- avoid "versionString"[0] (Borland bug)
- add NEED_DUMMY_RETURN for Borland
- use variable z_verbose for tracing in debug mode (L. Peter Deutsch).
- allow compilation with CC
- defined STDC for OS/2 (David Charlap)
- limit external names to 8 chars for MVS (Thomas Lund)
- in minigzip.c, use static buffers only for 16-bit systems
- fix suffix check for "minigzip -d foo.gz"
- do not return an error for the 2nd of two consecutive gzflush() (Felix Lee)
- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau)
- added makelcc.bat for lcc-win32 (Tom St Denis)
- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe)
- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion.
- check for unistd.h in configure (for off_t)
- remove useless check parameter in inflate_blocks_free
- avoid useless assignment of s->check to itself in inflate_blocks_new
- do not flush twice in gzclose (thanks to Ken Raeburn)
- rename FOPEN as F_OPEN to avoid clash with /usr/include/sys/file.h
- use NO_ERRNO_H instead of enumeration of operating systems with errno.h
- work around buggy fclose on pipes for HP/UX
- support zlib DLL with BORLAND C++ 5.0 (thanks to Glenn Randers-Pehrson)
- fix configure if CC is already equal to gcc
Changes in 1.0.5 (3 Jan 98)
- Fix inflate to terminate gracefully when fed corrupted or invalid data
- Use const for rommable constants in inflate
- Eliminate memory leaks on error conditions in inflate
- Removed some vestigial code in inflate
- Update web address in README
Changes in 1.0.4 (24 Jul 96)
- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF
bit, so the decompressor could decompress all the correct data but went
on to attempt decompressing extra garbage data. This affected minigzip too.
- zlibVersion and gzerror return const char* (needed for DLL)
- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno)
- use z_error only for DEBUG (avoid problem with DLLs)
Changes in 1.0.3 (2 Jul 96)
- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS
small and medium models; this makes the library incompatible with previous
versions for these models. (No effect in large model or on other systems.)
- return OK instead of BUF_ERROR if previous deflate call returned with
avail_out as zero but there is nothing to do
- added memcmp for non STDC compilers
- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly)
- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO)
- better check for 16-bit mode MSC (avoids problem with Symantec)
Changes in 1.0.2 (23 May 96)
- added Windows DLL support
- added a function zlibVersion (for the DLL support)
- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model)
- Bytef is define's instead of typedef'd only for Borland C
- avoid reading uninitialized memory in example.c
- mention in README that the zlib format is now RFC1950
- updated Makefile.dj2
- added algorithm.doc
Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion]
- fix array overlay in deflate.c which sometimes caused bad compressed data
- fix inflate bug with empty stored block
- fix MSDOS medium model which was broken in 0.99
- fix deflateParams() which could generated bad compressed data.
- Bytef is define'd instead of typedef'ed (work around Borland bug)
- added an INDEX file
- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32),
Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas)
- speed up adler32 for modern machines without auto-increment
- added -ansi for IRIX in configure
- static_init_done in trees.c is an int
- define unlink as delete for VMS
- fix configure for QNX
- add configure branch for SCO and HPUX
- avoid many warnings (unused variables, dead assignments, etc...)
- no fdopen for BeOS
- fix the Watcom fix for 32 bit mode (define FAR as empty)
- removed redefinition of Byte for MKWERKS
- work around an MWKERKS bug (incorrect merge of all .h files)
Changes in 0.99 (27 Jan 96)
- allow preset dictionary shared between compressor and decompressor
- allow compression level 0 (no compression)
- add deflateParams in zlib.h: allow dynamic change of compression level
and compression strategy.
- test large buffers and deflateParams in example.c
- add optional "configure" to build zlib as a shared library
- suppress Makefile.qnx, use configure instead
- fixed deflate for 64-bit systems (detected on Cray)
- fixed inflate_blocks for 64-bit systems (detected on Alpha)
- declare Z_DEFLATED in zlib.h (possible parameter for deflateInit2)
- always return Z_BUF_ERROR when deflate() has nothing to do
- deflateInit and inflateInit are now macros to allow version checking
- prefix all global functions and types with z_ with -DZ_PREFIX
- make falloc completely reentrant (inftrees.c)
- fixed very unlikely race condition in ct_static_init
- free in reverse order of allocation to help memory manager
- use zlib-1.0/* instead of zlib/* inside the tar.gz
- make zlib warning-free with "gcc -O3 -Wall -Wwrite-strings -Wpointer-arith
-Wconversion -Wstrict-prototypes -Wmissing-prototypes"
- allow gzread on concatenated .gz files
- deflateEnd now returns Z_DATA_ERROR if it was premature
- deflate is finally (?) fully deterministic (no matches beyond end of input)
- Document Z_SYNC_FLUSH
- add uninstall in Makefile
- Check for __cpluplus in zlib.h
- Better test in ct_align for partial flush
- avoid harmless warnings for Borland C++
- initialize hash_head in deflate.c
- avoid warning on fdopen (gzio.c) for HP cc -Aa
- include stdlib.h for STDC compilers
- include errno.h for Cray
- ignore error if ranlib doesn't exist
- call ranlib twice for NeXTSTEP
- use exec_prefix instead of prefix for libz.a
- renamed ct_* as _tr_* to avoid conflict with applications
- clear z->msg in inflateInit2 before any error return
- initialize opaque in example.c, gzio.c, deflate.c and inflate.c
- fixed typo in zconf.h (_GNUC__ => __GNUC__)
- check for WIN32 in zconf.h and zutil.c (avoid farmalloc in 32-bit mode)
- fix typo in Make_vms.com (f$trnlnm -> f$getsyi)
- in fcalloc, normalize pointer if size > 65520 bytes
- don't use special fcalloc for 32 bit Borland C++
- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc...
- use Z_BINARY instead of BINARY
- document that gzclose after gzdopen will close the file
- allow "a" as mode in gzopen.
- fix error checking in gzread
- allow skipping .gz extra-field on pipes
- added reference to Perl interface in README
- put the crc table in FAR data (I dislike more and more the medium model :)
- added get_crc_table
- added a dimension to all arrays (Borland C can't count).
- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast
- guard against multiple inclusion of *.h (for precompiled header on Mac)
- Watcom C pretends to be Microsoft C small model even in 32 bit mode.
- don't use unsized arrays to avoid silly warnings by Visual C++:
warning C4746: 'inflate_mask' : unsized array treated as '__far'
(what's wrong with far data in far model?).
- define enum out of inflate_blocks_state to allow compilation with C++
Changes in 0.95 (16 Aug 95)
- fix MSDOS small and medium model (now easier to adapt to any compiler)
- inlined send_bits
- fix the final (:-) bug for deflate with flush (output was correct but
not completely flushed in rare occasions).
- default window size is same for compression and decompression
(it's now sufficient to set MAX_WBITS in zconf.h).
- voidp -> voidpf and voidnp -> voidp (for consistency with other
typedefs and because voidnp was not near in large model).
Changes in 0.94 (13 Aug 95)
- support MSDOS medium model
- fix deflate with flush (could sometimes generate bad output)
- fix deflateReset (zlib header was incorrectly suppressed)
- added support for VMS
- allow a compression level in gzopen()
- gzflush now calls fflush
- For deflate with flush, flush even if no more input is provided.
- rename libgz.a as libz.a
- avoid complex expression in infcodes.c triggering Turbo C bug
- work around a problem with gcc on Alpha (in INSERT_STRING)
- don't use inline functions (problem with some gcc versions)
- allow renaming of Byte, uInt, etc... with #define.
- avoid warning about (unused) pointer before start of array in deflate.c
- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c
- avoid reserved word 'new' in trees.c
Changes in 0.93 (25 June 95)
- temporarily disable inline functions
- make deflate deterministic
- give enough lookahead for PARTIAL_FLUSH
- Set binary mode for stdin/stdout in minigzip.c for OS/2
- don't even use signed char in inflate (not portable enough)
- fix inflate memory leak for segmented architectures
Changes in 0.92 (3 May 95)
- don't assume that char is signed (problem on SGI)
- Clear bit buffer when starting a stored block
- no memcpy on Pyramid
- suppressed inftest.c
- optimized fill_window, put longest_match inline for gcc
- optimized inflate on stored blocks.
- untabify all sources to simplify patches
Changes in 0.91 (2 May 95)
- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h
- Document the memory requirements in zconf.h
- added "make install"
- fix sync search logic in inflateSync
- deflate(Z_FULL_FLUSH) now works even if output buffer too short
- after inflateSync, don't scare people with just "lo world"
- added support for DJGPP
Changes in 0.9 (1 May 95)
- don't assume that zalloc clears the allocated memory (the TurboC bug
was Mark's bug after all :)
- let again gzread copy uncompressed data unchanged (was working in 0.71)
- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented
- added a test of inflateSync in example.c
- moved MAX_WBITS to zconf.h because users might want to change that.
- document explicitly that zalloc(64K) on MSDOS must return a normalized
pointer (zero offset)
- added Makefiles for Microsoft C, Turbo C, Borland C++
- faster crc32()
Changes in 0.8 (29 April 95)
- added fast inflate (inffast.c)
- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this
is incompatible with previous versions of zlib which returned Z_OK.
- work around a TurboC compiler bug (bad code for b << 0, see infutil.h)
(actually that was not a compiler bug, see 0.81 above)
- gzread no longer reads one extra byte in certain cases
- In gzio destroy(), don't reference a freed structure
- avoid many warnings for MSDOS
- avoid the ERROR symbol which is used by MS Windows
Changes in 0.71 (14 April 95)
- Fixed more MSDOS compilation problems :( There is still a bug with
TurboC large model.
Changes in 0.7 (14 April 95)
- Added full inflate support.
- Simplified the crc32() interface. The pre- and post-conditioning
(one's complement) is now done inside crc32(). WARNING: this is
incompatible with previous versions; see zlib.h for the new usage.
Changes in 0.61 (12 April 95)
- workaround for a bug in TurboC. example and minigzip now work on MSDOS.
Changes in 0.6 (11 April 95)
- added minigzip.c
- added gzdopen to reopen a file descriptor as gzFile
- added transparent reading of non-gziped files in gzread.
- fixed bug in gzread (don't read crc as data)
- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose).
- don't allocate big arrays in the stack (for MSDOS)
- fix some MSDOS compilation problems
Changes in 0.5:
- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but
not yet Z_FULL_FLUSH.
- support decompression but only in a single step (forced Z_FINISH)
- added opaque object for zalloc and zfree.
- added deflateReset and inflateReset
- added a variable zlib_version for consistency checking.
- renamed the 'filter' parameter of deflateInit2 as 'strategy'.
Added Z_FILTERED and Z_HUFFMAN_ONLY constants.
Changes in 0.4:
- avoid "zip" everywhere, use zlib instead of ziplib.
- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush
if compression method == 8.
- added adler32 and crc32
- renamed deflateOptions as deflateInit2, call one or the other but not both
- added the method parameter for deflateInit2.
- added inflateInit2
- simplied considerably deflateInit and inflateInit by not supporting
user-provided history buffer. This is supported only in deflateInit2
and inflateInit2.
Changes in 0.3:
- prefix all macro names with Z_
- use Z_FINISH instead of deflateEnd to finish compression.
- added Z_HUFFMAN_ONLY
- added gzerror()

View File

@@ -1,86 +0,0 @@
ChangeLog history of changes
INDEX this file
FAQ Frequently Asked Questions about zlib
Make_vms.com script for Vax/VMS
Makefile makefile for Unix (generated by configure)
Makefile.in makefile for Unix (template for configure)
Makefile.riscos makefile for RISCOS
README guess what
algorithm.txt description of the (de)compression algorithm
configure configure script for Unix
descrip.mms makefile for Vax/VMS
zlib.3 mini man page for zlib (volunteers to write full
man pages from zlib.h welcome. write to jloup@gzip.org)
amiga/Makefile.sas makefile for Amiga SAS/C
amiga/Makefile.pup makefile for Amiga powerUP SAS/C PPC
msdos/Makefile.w32 makefile for Microsoft Visual C++ 32-bit
msdos/Makefile.b32 makefile for Borland C++ 32-bit
msdos/Makefile.bor makefile for Borland C/C++ 16-bit
msdos/Makefile.dj2 makefile for DJGPP 2.x
msdos/Makefile.emx makefile for EMX 0.9c (32-bit DOS/OS2)
msdos/Makefile.msc makefile for Microsoft C 16-bit
msdos/Makefile.tc makefile for Turbo C
msdos/Makefile.wat makefile for Watcom C
msdos/zlib.def definition file for Windows DLL
msdos/zlib.rc definition file for Windows DLL
nt/Makefile.nt makefile for Windows NT
nt/zlib.dnt definition file for Windows NT DLL
nt/Makefile.emx makefile for EMX 0.9c/RSXNT 1.41 (Win32 Intel)
nt/Makefile.gcc makefile for Windows NT using GCC (mingw32)
zlib public header files (must be kept):
zconf.h
zlib.h
private source files used to build the zlib library:
adler32.c
compress.c
crc32.c
deflate.c
deflate.h
gzio.c
infblock.c
infblock.h
infcodes.c
infcodes.h
inffast.c
inffast.h
inflate.c
inftrees.c
inftrees.h
infutil.c
infutil.h
maketree.c
trees.c
uncompr.c
zutil.c
zutil.h
source files for sample programs:
example.c
minigzip.c
unsupported contribution by third parties
contrib/asm386/ by Gilles Vollant <info@winimage.com>
386 asm code replacing longest_match().
contrib/minizip/ by Gilles Vollant <info@winimage.com>
Mini zip and unzip based on zlib
See http://www.winimage.com/zLibDll/unzip.html
contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu>
A C++ I/O streams interface to the zlib gz* functions
contrib/iostream2/ by Tyge L<>vset <Tyge.Lovset@cmr.no>
Another C++ I/O streams interface
contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es>
A very simple tar.gz extractor using zlib
contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl>
How to use compress(), uncompress() and the gz* functions from VB.

View File

@@ -1,135 +0,0 @@
#
# File: makefile.vc
# Author: David Webster
# Created: 1999
# Updated:
# Copyright: c) 1993, AIAI, University of Edinburgh
#
# "%W% %G%"
#
# Makefile : Builds os2zlib.lib library for OS/2 3.0/4.0
# Suffixes
OBJSUFF=obj
SRCSUFF=c
OS2FLAGS=/c /W2 /DOS232 /D__VISAGECPP__ /Ss /Q /N100
OS2LINKFLAGS=/BASE:0x00010000 /PMTYPE:PM /NOE /NOD /ALIGN:16
OS2LIBFLAGS=/NOL /NOE
OS2LIBS=CPPOM30.lib CPPOOC3.LIB OS2386.LIB
!if "$(WXMAKINGDLL)" != "0"
EXTRADLLFLAGS=/DWXMAKINGDLL=1 /Ge- /D__OS2DLL__
EXTRALNKFLAGS=/DLL
!endif
# Change WXDIR or WXWIN to wherever wxWindows is found
WXDIR = $(WXWIN)
OS2ZLIBDIR=$(WXDIR)\src\zlib
OS2ZLIBINC=$(WINPNGDIR)
!if "$(WXMAKINGDLL)" != "1"
OS2ZLIBLIB=$(WXDIR)\lib\os2zlib.lib
!else
OS2ZLIBLIB=$(WXDIR)\lib\os2zlib.dll
!endif
INC=
!ifndef FINAL
FINAL=0
!endif
!if "$(NOPCH)" == "1"
PCH=
PRECOMP=
MAKEPRECOMP=
!else
PCH=$(WXLIBNAME).pch
PRECOMP=/Si$(PCH)
MAKEPRECOMP=/Fi$(PCH)
!endif
!if "$(FINAL)" == "0"
!if "$(WXMAKINGDLL)" == "1"
D=DebugOS2DLL
!else
D=DebugOS2
!endif
OPT =
DEBUG_FLAGS= /Ti /D__WXDEBUG__ #/Fb
LINK_DEBUG_FLAGS=/DEBUG
CRTFLAG=/Gm /Gd
!else
# /O1 - smallest code
# /O2 - fastest code
!if "$(WXMAKINGDLL)" == "1"
D=RelseOS2DLL
!else
D=RelseOS2
!endif
OPT = /O+ /Oc /G5
DEBUG_FLAGS=
LINK_DEBUG_FLAGS=/RELEASE
CRTFLAG=/Gm /Gd
!endif
!if [md $(OS2ZLIBDIR)\$D]
!endif
CPPFLAGS=$(OS2FLAGS) $(EXTRADLLFLAGS) $(DEBUG_FLAGS) $(PRECOMP) $(INC) $(OPT) $(CRTFLAG)
LINKFKAGS=$(OS2LINKFLAGS) $(EXTRALNKFLAGS)
{..\zlib}.c{..\zlib\$D}.obj:
@echo $<
icc @<<
$(CPPFLAGS) /Fo$@ /Tp $<
<<
OBJECTS = \
..\zlib\$D\adler32.obj \
..\zlib\$D\compress.obj \
..\zlib\$D\crc32.obj \
..\zlib\$D\deflate.obj \
..\zlib\$D\gzio.obj \
..\zlib\$D\infblock.obj \
..\zlib\$D\infcodes.obj \
..\zlib\$D\inflate.obj \
..\zlib\$D\inftrees.obj \
..\zlib\$D\infutil.obj \
..\zlib\$D\inffast.obj \
..\zlib\$D\trees.obj \
..\zlib\$D\uncompr.obj \
..\zlib\$D\zutil.obj
all: $(OS2ZLIBLIB)
!if "$(WXMAKINGDLL)" != "1"
$(WXDIR)\lib\os2zlib.lib: $(OBJECTS)
touch $(WXDIR)\lib\os2zlib.lib
del $(WXDIR)\lib\os2zlib.lib
ilib $(OS2LIBFLAGS) $@ @<<
$**;
<<
!else
# Update the dynamic link library
$(WXDIR)\lib\os2zlib.dll: $(OBJECTS)
icc @<<
/B" $(LINKFLAGS)" /Fe$@
$(LIBS)
$(OBJECTS)
$(WXDIR)\src\os2\os2zlib.def
<<
implib $(WXDIR)\lib\os2zlibd.lib $(WXDIR)\src\os2\os2zlib.def
!endif
clean:
del $(OS2ZLIBLIB)
erase /N $(OS2ZLIBDIR)\$D
rd $(OS2ZLIBDIR)\$D
cleanall: clean

View File

@@ -1,115 +0,0 @@
$! make libz under VMS
$! written by Martin P.J. Zinser <m.zinser@gsi.de>
$!
$! Look for the compiler used
$!
$ ccopt = ""
$ if f$getsyi("HW_MODEL").ge.1024
$ then
$ ccopt = "/prefix=all"+ccopt
$ comp = "__decc__=1"
$ if f$trnlnm("SYS").eqs."" then define sys sys$library:
$ else
$ if f$search("SYS$SYSTEM:DECC$COMPILER.EXE").eqs.""
$ then
$ comp = "__vaxc__=1"
$ if f$trnlnm("SYS").eqs."" then define sys sys$library:
$ else
$ if f$trnlnm("SYS").eqs."" then define sys decc$library_include:
$ ccopt = "/decc/prefix=all"+ccopt
$ comp = "__decc__=1"
$ endif
$ endif
$!
$! Build the thing plain or with mms
$!
$ write sys$output "Compiling Zlib sources ..."
$ if f$search("SYS$SYSTEM:MMS.EXE").eqs.""
$ then
$ dele example.obj;*,minigzip.obj;*
$ CALL MAKE adler32.OBJ "CC ''CCOPT' adler32" -
adler32.c zlib.h zconf.h
$ CALL MAKE compress.OBJ "CC ''CCOPT' compress" -
compress.c zlib.h zconf.h
$ CALL MAKE crc32.OBJ "CC ''CCOPT' crc32" -
crc32.c zlib.h zconf.h
$ CALL MAKE deflate.OBJ "CC ''CCOPT' deflate" -
deflate.c deflate.h zutil.h zlib.h zconf.h
$ CALL MAKE gzio.OBJ "CC ''CCOPT' gzio" -
gzio.c zutil.h zlib.h zconf.h
$ CALL MAKE infblock.OBJ "CC ''CCOPT' infblock" -
infblock.c zutil.h zlib.h zconf.h infblock.h
$ CALL MAKE infcodes.OBJ "CC ''CCOPT' infcodes" -
infcodes.c zutil.h zlib.h zconf.h inftrees.h
$ CALL MAKE inffast.OBJ "CC ''CCOPT' inffast" -
inffast.c zutil.h zlib.h zconf.h inffast.h
$ CALL MAKE inflate.OBJ "CC ''CCOPT' inflate" -
inflate.c zutil.h zlib.h zconf.h infblock.h
$ CALL MAKE inftrees.OBJ "CC ''CCOPT' inftrees" -
inftrees.c zutil.h zlib.h zconf.h inftrees.h
$ CALL MAKE infutil.OBJ "CC ''CCOPT' infutil" -
infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
$ CALL MAKE trees.OBJ "CC ''CCOPT' trees" -
trees.c deflate.h zutil.h zlib.h zconf.h
$ CALL MAKE uncompr.OBJ "CC ''CCOPT' uncompr" -
uncompr.c zlib.h zconf.h
$ CALL MAKE zutil.OBJ "CC ''CCOPT' zutil" -
zutil.c zutil.h zlib.h zconf.h
$ write sys$output "Building Zlib ..."
$ CALL MAKE libz.OLB "lib/crea libz.olb *.obj" *.OBJ
$ write sys$output "Building example..."
$ CALL MAKE example.OBJ "CC ''CCOPT' example" -
example.c zlib.h zconf.h
$ call make example.exe "LINK example,libz.olb/lib" example.obj libz.olb
$ write sys$output "Building minigzip..."
$ CALL MAKE minigzip.OBJ "CC ''CCOPT' minigzip" -
minigzip.c zlib.h zconf.h
$ call make minigzip.exe -
"LINK minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib" -
minigzip.obj libz.olb
$ else
$ mms/macro=('comp')
$ endif
$ write sys$output "Zlib build completed"
$ exit
$!
$!
$MAKE: SUBROUTINE !SUBROUTINE TO CHECK DEPENDENCIES
$ V = 'F$Verify(0)
$! P1 = What we are trying to make
$! P2 = Command to make it
$! P3 - P8 What it depends on
$
$ If F$Search(P1) .Eqs. "" Then Goto Makeit
$ Time = F$CvTime(F$File(P1,"RDT"))
$arg=3
$Loop:
$ Argument = P'arg
$ If Argument .Eqs. "" Then Goto Exit
$ El=0
$Loop2:
$ File = F$Element(El," ",Argument)
$ If File .Eqs. " " Then Goto Endl
$ AFile = ""
$Loop3:
$ OFile = AFile
$ AFile = F$Search(File)
$ If AFile .Eqs. "" .Or. AFile .Eqs. OFile Then Goto NextEl
$ If F$CvTime(F$File(AFile,"RDT")) .Ges. Time Then Goto Makeit
$ Goto Loop3
$NextEL:
$ El = El + 1
$ Goto Loop2
$EndL:
$ arg=arg+1
$ If arg .Le. 8 Then Goto Loop
$ Goto Exit
$
$Makeit:
$ VV=F$VERIFY(0)
$ write sys$output P2
$ 'P2
$ VV='F$Verify(VV)
$Exit:
$ If V Then Set Verify
$ENDSUBROUTINE

View File

@@ -1,160 +0,0 @@
# Makefile for zlib
# Copyright (C) 1995-1998 Jean-loup Gailly.
# For conditions of distribution and use, see copyright notice in zlib.h
# To compile and test, type:
# ./configure; make test
# The call of configure is optional if you don't have special requirements
# If you wish to build zlib as a shared library, use: ./configure -s
# To install /usr/local/lib/libz.* and /usr/local/include/zlib.h, type:
# make install
# To install in $HOME instead of /usr/local, use:
# make install prefix=$HOME
CC=cc
CFLAGS=-O
#CFLAGS=-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7
#CFLAGS=-g -DDEBUG
#CFLAGS=-O3 -Wall -Wwrite-strings -Wpointer-arith -Wconversion \
# -Wstrict-prototypes -Wmissing-prototypes
LDFLAGS=-L. -lz
LDSHARED=$(CC)
VER=1.1.2
LIBS=libz.a
SHAREDLIB=libz.so
AR=ar rc
RANLIB=ranlib
TAR=tar
SHELL=/bin/sh
prefix = /usr/local
exec_prefix = ${prefix}
OBJS = adler32.o compress.o crc32.o gzio.o uncompr.o deflate.o trees.o \
zutil.o inflate.o infblock.o inftrees.o infcodes.o infutil.o inffast.o
TEST_OBJS = example.o minigzip.o
DISTFILES = README INDEX ChangeLog configure Make*[a-z0-9] *.[ch] descrip.mms \
algorithm.txt zlib.3 msdos/Make*[a-z0-9] msdos/zlib.def msdos/zlib.rc \
nt/Makefile.nt nt/zlib.dnt amiga/Make*.??? contrib/README.contrib \
contrib/*.txt contrib/asm386/*.asm contrib/asm386/*.c \
contrib/asm386/*.bat contrib/asm386/zlibvc.d?? contrib/iostream/*.cpp \
contrib/iostream/*.h contrib/iostream2/*.h contrib/iostream2/*.cpp \
contrib/untgz/Makefile contrib/untgz/*.c contrib/untgz/*.w32 \
contrib/minizip/[CM]*[pe] contrib/minizip/*.[ch] contrib/minizip/*.[td]??
all: example minigzip
test: all
@LD_LIBRARY_PATH=.:$(LD_LIBRARY_PATH) ; export LD_LIBRARY_PATH; \
echo hello world | ./minigzip | ./minigzip -d || \
echo ' *** minigzip test FAILED ***' ; \
if ./example; then \
echo ' *** zlib test OK ***'; \
else \
echo ' *** zlib test FAILED ***'; \
fi
libz.a: $(OBJS)
$(AR) $@ $(OBJS)
-@ ($(RANLIB) $@ || true) >/dev/null 2>&1
$(SHAREDLIB).$(VER): $(OBJS)
$(LDSHARED) -o $@ $(OBJS)
rm -f $(SHAREDLIB) $(SHAREDLIB).1
ln -s $@ $(SHAREDLIB)
ln -s $@ $(SHAREDLIB).1
example: example.o $(LIBS)
$(CC) $(CFLAGS) -o $@ example.o $(LDFLAGS)
minigzip: minigzip.o $(LIBS)
$(CC) $(CFLAGS) -o $@ minigzip.o $(LDFLAGS)
install: $(LIBS)
-@if [ ! -d $(prefix)/include ]; then mkdir $(prefix)/include; fi
-@if [ ! -d $(exec_prefix)/lib ]; then mkdir $(exec_prefix)/lib; fi
cp zlib.h zconf.h $(prefix)/include
chmod 644 $(prefix)/include/zlib.h $(prefix)/include/zconf.h
cp $(LIBS) $(exec_prefix)/lib
cd $(exec_prefix)/lib; chmod 755 $(LIBS)
-@(cd $(exec_prefix)/lib; $(RANLIB) libz.a || true) >/dev/null 2>&1
cd $(exec_prefix)/lib; if test -f $(SHAREDLIB).$(VER); then \
rm -f $(SHAREDLIB) $(SHAREDLIB).1; \
ln -s $(SHAREDLIB).$(VER) $(SHAREDLIB); \
ln -s $(SHAREDLIB).$(VER) $(SHAREDLIB).1; \
(ldconfig || true) >/dev/null 2>&1; \
fi
# The ranlib in install is needed on NeXTSTEP which checks file times
# ldconfig is for Linux
uninstall:
cd $(prefix)/include; \
v=$(VER); \
if test -f zlib.h; then \
v=`sed -n '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`; \
rm -f zlib.h zconf.h; \
fi; \
cd $(exec_prefix)/lib; rm -f libz.a; \
if test -f $(SHAREDLIB).$$v; then \
rm -f $(SHAREDLIB).$$v $(SHAREDLIB) $(SHAREDLIB).1; \
fi
clean:
rm -f *.o *~ example minigzip libz.a libz.so* foo.gz
distclean: clean
zip:
mv Makefile Makefile~; cp -p Makefile.in Makefile
rm -f test.c ztest*.c contrib/minizip/test.zip
v=`sed -n -e 's/\.//g' -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\
zip -ul9 zlib$$v $(DISTFILES)
mv Makefile~ Makefile
dist:
mv Makefile Makefile~; cp -p Makefile.in Makefile
rm -f test.c ztest*.c contrib/minizip/test.zip
d=zlib-`sed -n '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`;\
rm -f $$d.tar.gz; \
if test ! -d ../$$d; then rm -f ../$$d; ln -s `pwd` ../$$d; fi; \
files=""; \
for f in $(DISTFILES); do files="$$files $$d/$$f"; done; \
cd ..; \
GZIP=-9 $(TAR) chofz $$d/$$d.tar.gz $$files; \
if test ! -d $$d; then rm -f $$d; fi
mv Makefile~ Makefile
tags:
etags *.[ch]
depend:
makedepend -- $(CFLAGS) -- *.[ch]
# DO NOT DELETE THIS LINE -- make depend depends on it.
adler32.o: zlib.h zconf.h
compress.o: zlib.h zconf.h
crc32.o: zlib.h zconf.h
deflate.o: deflate.h zutil.h zlib.h zconf.h
example.o: zlib.h zconf.h
gzio.o: zutil.h zlib.h zconf.h
infblock.o: infblock.h inftrees.h infcodes.h infutil.h zutil.h zlib.h zconf.h
infcodes.o: zutil.h zlib.h zconf.h
infcodes.o: inftrees.h infblock.h infcodes.h infutil.h inffast.h
inffast.o: zutil.h zlib.h zconf.h inftrees.h
inffast.o: infblock.h infcodes.h infutil.h inffast.h
inflate.o: zutil.h zlib.h zconf.h infblock.h
inftrees.o: zutil.h zlib.h zconf.h inftrees.h
infutil.o: zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h
minigzip.o: zlib.h zconf.h
trees.o: deflate.h zutil.h zlib.h zconf.h trees.h
uncompr.o: zlib.h zconf.h
zutil.o: zutil.h zlib.h zconf.h

View File

@@ -1,151 +0,0 @@
# Project: zlib_1_03
# Patched for zlib 1.1.2 rw@shadow.org.uk 19980430
# test works out-of-the-box, installs `somewhere' on demand
# Toolflags:
CCflags = -c -depend !Depend -IC: -g -throwback -DRISCOS -fah
C++flags = -c -depend !Depend -IC: -throwback
Linkflags = -aif -c++ -o $@
ObjAsmflags = -throwback -NoCache -depend !Depend
CMHGflags =
LibFileflags = -c -l -o $@
Squeezeflags = -o $@
# change the line below to where _you_ want the library installed.
libdest = lib:zlib
# Final targets:
@.lib: @.o.adler32 @.o.compress @.o.crc32 @.o.deflate @.o.gzio \
@.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil @.o.trees \
@.o.uncompr @.o.zutil
LibFile $(LibFileflags) @.o.adler32 @.o.compress @.o.crc32 @.o.deflate \
@.o.gzio @.o.infblock @.o.infcodes @.o.inffast @.o.inflate @.o.inftrees @.o.infutil \
@.o.trees @.o.uncompr @.o.zutil
test: @.minigzip @.example @.lib
@copy @.lib @.libc A~C~DF~L~N~P~Q~RS~TV
@echo running tests: hang on.
@/@.minigzip -f -9 libc
@/@.minigzip -d libc-gz
@/@.minigzip -f -1 libc
@/@.minigzip -d libc-gz
@/@.minigzip -h -9 libc
@/@.minigzip -d libc-gz
@/@.minigzip -h -1 libc
@/@.minigzip -d libc-gz
@/@.minigzip -9 libc
@/@.minigzip -d libc-gz
@/@.minigzip -1 libc
@/@.minigzip -d libc-gz
@diff @.lib @.libc
@echo that should have reported '@.lib and @.libc identical' if you have diff.
@/@.example @.fred @.fred
@echo that will have given lots of hello!'s.
@.minigzip: @.o.minigzip @.lib C:o.Stubs
Link $(Linkflags) @.o.minigzip @.lib C:o.Stubs
@.example: @.o.example @.lib C:o.Stubs
Link $(Linkflags) @.o.example @.lib C:o.Stubs
install: @.lib
cdir $(libdest)
cdir $(libdest).h
@copy @.h.zlib $(libdest).h.zlib A~C~DF~L~N~P~Q~RS~TV
@copy @.h.zconf $(libdest).h.zconf A~C~DF~L~N~P~Q~RS~TV
@copy @.lib $(libdest).lib A~C~DF~L~N~P~Q~RS~TV
@echo okay, installed zlib in $(libdest)
clean:; remove @.minigzip
remove @.example
remove @.libc
-wipe @.o.* F~r~cV
remove @.fred
# User-editable dependencies:
.c.o:
cc $(ccflags) -o $@ $<
# Static dependencies:
# Dynamic dependencies:
o.example: c.example
o.example: h.zlib
o.example: h.zconf
o.minigzip: c.minigzip
o.minigzip: h.zlib
o.minigzip: h.zconf
o.adler32: c.adler32
o.adler32: h.zlib
o.adler32: h.zconf
o.compress: c.compress
o.compress: h.zlib
o.compress: h.zconf
o.crc32: c.crc32
o.crc32: h.zlib
o.crc32: h.zconf
o.deflate: c.deflate
o.deflate: h.deflate
o.deflate: h.zutil
o.deflate: h.zlib
o.deflate: h.zconf
o.gzio: c.gzio
o.gzio: h.zutil
o.gzio: h.zlib
o.gzio: h.zconf
o.infblock: c.infblock
o.infblock: h.zutil
o.infblock: h.zlib
o.infblock: h.zconf
o.infblock: h.infblock
o.infblock: h.inftrees
o.infblock: h.infcodes
o.infblock: h.infutil
o.infcodes: c.infcodes
o.infcodes: h.zutil
o.infcodes: h.zlib
o.infcodes: h.zconf
o.infcodes: h.inftrees
o.infcodes: h.infblock
o.infcodes: h.infcodes
o.infcodes: h.infutil
o.infcodes: h.inffast
o.inffast: c.inffast
o.inffast: h.zutil
o.inffast: h.zlib
o.inffast: h.zconf
o.inffast: h.inftrees
o.inffast: h.infblock
o.inffast: h.infcodes
o.inffast: h.infutil
o.inffast: h.inffast
o.inflate: c.inflate
o.inflate: h.zutil
o.inflate: h.zlib
o.inflate: h.zconf
o.inflate: h.infblock
o.inftrees: c.inftrees
o.inftrees: h.zutil
o.inftrees: h.zlib
o.inftrees: h.zconf
o.inftrees: h.inftrees
o.inftrees: h.inffixed
o.infutil: c.infutil
o.infutil: h.zutil
o.infutil: h.zlib
o.infutil: h.zconf
o.infutil: h.infblock
o.infutil: h.inftrees
o.infutil: h.infcodes
o.infutil: h.infutil
o.trees: c.trees
o.trees: h.deflate
o.trees: h.zutil
o.trees: h.zlib
o.trees: h.zconf
o.trees: h.trees
o.uncompr: c.uncompr
o.uncompr: h.zlib
o.uncompr: h.zconf
o.zutil: c.zutil
o.zutil: h.zutil
o.zutil: h.zlib
o.zutil: h.zconf

View File

@@ -1,147 +0,0 @@
zlib 1.1.4 is a general purpose data compression library. All the code
is thread safe. The data format used by the zlib library
is described by RFCs (Request for Comments) 1950 to 1952 in the files
http://www.ietf.org/rfc/rfc1950.txt (zlib format), rfc1951.txt (deflate
format) and rfc1952.txt (gzip format). These documents are also available in
other formats from ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
All functions of the compression library are documented in the file zlib.h
(volunteer to write man pages welcome, contact jloup@gzip.org). A usage
example of the library is given in the file example.c which also tests that
the library is working correctly. Another example is given in the file
minigzip.c. The compression library itself is composed of all source files
except example.c and minigzip.c.
To compile all files and run the test program, follow the instructions
given at the top of Makefile. In short "make test; make install"
should work for most machines. For Unix: "./configure; make test; make install"
For MSDOS, use one of the special makefiles such as Makefile.msc.
For VMS, use Make_vms.com or descrip.mms.
Questions about zlib should be sent to <zlib@gzip.org>, or to
Gilles Vollant <info@winimage.com> for the Windows DLL version.
The zlib home page is http://www.zlib.org or http://www.gzip.org/zlib/
Before reporting a problem, please check this site to verify that
you have the latest version of zlib; otherwise get the latest version and
check whether the problem still exists or not.
PLEASE read the zlib FAQ http://www.gzip.org/zlib/zlib_faq.html
before asking for help.
Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997
issue of Dr. Dobb's Journal; a copy of the article is available in
http://dogma.net/markn/articles/zlibtool/zlibtool.htm
The changes made in version 1.1.4 are documented in the file ChangeLog.
The only changes made since 1.1.3 are bug corrections:
- ZFREE was repeated on same allocation on some error conditions.
This creates a security problem described in
http://www.zlib.org/advisory-2002-03-11.txt
- Returned incorrect error (Z_MEM_ERROR) on some invalid data
- Avoid accesses before window for invalid distances with inflate window
less than 32K.
- force windowBits > 8 to avoid a bug in the encoder for a window size
of 256 bytes. (A complete fix will be available in 1.1.5).
The beta version 1.1.5beta includes many more changes. A new official
version 1.1.5 will be released as soon as extensive testing has been
completed on it.
Unsupported third party contributions are provided in directory "contrib".
A Java implementation of zlib is available in the Java Development Kit
http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html
See the zlib home page http://www.zlib.org for details.
A Perl interface to zlib written by Paul Marquess <pmarquess@bfsec.bt.co.uk>
is in the CPAN (Comprehensive Perl Archive Network) sites
http://www.cpan.org/modules/by-module/Compress/
A Python interface to zlib written by A.M. Kuchling <amk@magnet.com>
is available in Python 1.5 and later versions, see
http://www.python.org/doc/lib/module-zlib.html
A zlib binding for TCL written by Andreas Kupries <a.kupries@westend.com>
is availlable at http://www.westend.com/~kupries/doc/trf/man/man.html
An experimental package to read and write files in .zip format,
written on top of zlib by Gilles Vollant <info@winimage.com>, is
available at http://www.winimage.com/zLibDll/unzip.html
and also in the contrib/minizip directory of zlib.
Notes for some targets:
- To build a Windows DLL version, include in a DLL project zlib.def, zlib.rc
and all .c files except example.c and minigzip.c; compile with -DZLIB_DLL
The zlib DLL support was initially done by Alessandro Iacopetti and is
now maintained by Gilles Vollant <info@winimage.com>. Check the zlib DLL
home page at http://www.winimage.com/zLibDll
From Visual Basic, you can call the DLL functions which do not take
a structure as argument: compress, uncompress and all gz* functions.
See contrib/visual-basic.txt for more information, or get
http://www.tcfb.com/dowseware/cmp-z-it.zip
- For 64-bit Irix, deflate.c must be compiled without any optimization.
With -O, one libpng test fails. The test works in 32 bit mode (with
the -n32 compiler flag). The compiler bug has been reported to SGI.
- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1
it works when compiled with cc.
- on Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1
is necessary to get gzprintf working correctly. This is done by configure.
- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works
with other compilers. Use "make test" to check your compiler.
- gzdopen is not supported on RISCOS, BEOS and by some Mac compilers.
- For Turbo C the small model is supported only with reduced performance to
avoid any far allocation; it was tested with -DMAX_WBITS=11 -DMAX_MEM_LEVEL=3
- For PalmOs, see http://www.cs.uit.no/~perm/PASTA/pilot/software.html
Per Harald Myrvang <perm@stud.cs.uit.no>
Acknowledgments:
The deflate format used by zlib was defined by Phil Katz. The deflate
and zlib specifications were written by L. Peter Deutsch. Thanks to all the
people who reported problems and suggested various improvements in zlib;
they are too numerous to cite here.
Copyright notice:
(C) 1995-2002 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
If you use the zlib library in a product, we would appreciate *not*
receiving lengthy legal documents to sign. The sources are provided
for free but without warranty of any kind. The library has been
entirely written by Jean-loup Gailly and Mark Adler; it does not
include third-party code.
If you redistribute modified sources, we would appreciate that you include
in the file ChangeLog history information documenting your changes.

View File

@@ -1,48 +0,0 @@
/* adler32.c -- compute the Adler-32 checksum of a data stream
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include "zlib.h"
#define BASE 65521L /* largest prime smaller than 65536 */
#define NMAX 5552
/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
#define DO16(buf) DO8(buf,0); DO8(buf,8);
/* ========================================================================= */
uLong ZEXPORT adler32(adler, buf, len)
uLong adler;
const Bytef *buf;
uInt len;
{
unsigned long s1 = adler & 0xffff;
unsigned long s2 = (adler >> 16) & 0xffff;
int k;
if (buf == Z_NULL) return 1L;
while (len > 0) {
k = len < NMAX ? len : NMAX;
len -= k;
while (k >= 16) {
DO16(buf);
buf += 16;
k -= 16;
}
if (k != 0) do {
s1 += *buf++;
s2 += s1;
} while (--k);
s1 %= BASE;
s2 %= BASE;
}
return (s2 << 16) | s1;
}

View File

@@ -1,213 +0,0 @@
1. Compression algorithm (deflate)
The deflation algorithm used by gzip (also zip and zlib) is a variation of
LZ77 (Lempel-Ziv 1977, see reference below). It finds duplicated strings in
the input data. The second occurrence of a string is replaced by a
pointer to the previous string, in the form of a pair (distance,
length). Distances are limited to 32K bytes, and lengths are limited
to 258 bytes. When a string does not occur anywhere in the previous
32K bytes, it is emitted as a sequence of literal bytes. (In this
description, `string' must be taken as an arbitrary sequence of bytes,
and is not restricted to printable characters.)
Literals or match lengths are compressed with one Huffman tree, and
match distances are compressed with another tree. The trees are stored
in a compact form at the start of each block. The blocks can have any
size (except that the compressed data for one block must fit in
available memory). A block is terminated when deflate() determines that
it would be useful to start another block with fresh trees. (This is
somewhat similar to the behavior of LZW-based _compress_.)
Duplicated strings are found using a hash table. All input strings of
length 3 are inserted in the hash table. A hash index is computed for
the next 3 bytes. If the hash chain for this index is not empty, all
strings in the chain are compared with the current input string, and
the longest match is selected.
The hash chains are searched starting with the most recent strings, to
favor small distances and thus take advantage of the Huffman encoding.
The hash chains are singly linked. There are no deletions from the
hash chains, the algorithm simply discards matches that are too old.
To avoid a worst-case situation, very long hash chains are arbitrarily
truncated at a certain length, determined by a runtime option (level
parameter of deflateInit). So deflate() does not always find the longest
possible match but generally finds a match which is long enough.
deflate() also defers the selection of matches with a lazy evaluation
mechanism. After a match of length N has been found, deflate() searches for
a longer match at the next input byte. If a longer match is found, the
previous match is truncated to a length of one (thus producing a single
literal byte) and the process of lazy evaluation begins again. Otherwise,
the original match is kept, and the next match search is attempted only N
steps later.
The lazy match evaluation is also subject to a runtime parameter. If
the current match is long enough, deflate() reduces the search for a longer
match, thus speeding up the whole process. If compression ratio is more
important than speed, deflate() attempts a complete second search even if
the first match is already long enough.
The lazy match evaluation is not performed for the fastest compression
modes (level parameter 1 to 3). For these fast modes, new strings
are inserted in the hash table only when no match was found, or
when the match is not too long. This degrades the compression ratio
but saves time since there are both fewer insertions and fewer searches.
2. Decompression algorithm (inflate)
2.1 Introduction
The real question is, given a Huffman tree, how to decode fast. The most
important realization is that shorter codes are much more common than
longer codes, so pay attention to decoding the short codes fast, and let
the long codes take longer to decode.
inflate() sets up a first level table that covers some number of bits of
input less than the length of longest code. It gets that many bits from the
stream, and looks it up in the table. The table will tell if the next
code is that many bits or less and how many, and if it is, it will tell
the value, else it will point to the next level table for which inflate()
grabs more bits and tries to decode a longer code.
How many bits to make the first lookup is a tradeoff between the time it
takes to decode and the time it takes to build the table. If building the
table took no time (and if you had infinite memory), then there would only
be a first level table to cover all the way to the longest code. However,
building the table ends up taking a lot longer for more bits since short
codes are replicated many times in such a table. What inflate() does is
simply to make the number of bits in the first table a variable, and set it
for the maximum speed.
inflate() sends new trees relatively often, so it is possibly set for a
smaller first level table than an application that has only one tree for
all the data. For inflate, which has 286 possible codes for the
literal/length tree, the size of the first table is nine bits. Also the
distance trees have 30 possible values, and the size of the first table is
six bits. Note that for each of those cases, the table ended up one bit
longer than the ``average'' code length, i.e. the code length of an
approximately flat code which would be a little more than eight bits for
286 symbols and a little less than five bits for 30 symbols. It would be
interesting to see if optimizing the first level table for other
applications gave values within a bit or two of the flat code size.
2.2 More details on the inflate table lookup
Ok, you want to know what this cleverly obfuscated inflate tree actually
looks like. You are correct that it's not a Huffman tree. It is simply a
lookup table for the first, let's say, nine bits of a Huffman symbol. The
symbol could be as short as one bit or as long as 15 bits. If a particular
symbol is shorter than nine bits, then that symbol's translation is duplicated
in all those entries that start with that symbol's bits. For example, if the
symbol is four bits, then it's duplicated 32 times in a nine-bit table. If a
symbol is nine bits long, it appears in the table once.
If the symbol is longer than nine bits, then that entry in the table points
to another similar table for the remaining bits. Again, there are duplicated
entries as needed. The idea is that most of the time the symbol will be short
and there will only be one table look up. (That's whole idea behind data
compression in the first place.) For the less frequent long symbols, there
will be two lookups. If you had a compression method with really long
symbols, you could have as many levels of lookups as is efficient. For
inflate, two is enough.
So a table entry either points to another table (in which case nine bits in
the above example are gobbled), or it contains the translation for the symbol
and the number of bits to gobble. Then you start again with the next
ungobbled bit.
You may wonder: why not just have one lookup table for how ever many bits the
longest symbol is? The reason is that if you do that, you end up spending
more time filling in duplicate symbol entries than you do actually decoding.
At least for deflate's output that generates new trees every several 10's of
kbytes. You can imagine that filling in a 2^15 entry table for a 15-bit code
would take too long if you're only decoding several thousand symbols. At the
other extreme, you could make a new table for every bit in the code. In fact,
that's essentially a Huffman tree. But then you spend two much time
traversing the tree while decoding, even for short symbols.
So the number of bits for the first lookup table is a trade of the time to
fill out the table vs. the time spent looking at the second level and above of
the table.
Here is an example, scaled down:
The code being decoded, with 10 symbols, from 1 to 6 bits long:
A: 0
B: 10
C: 1100
D: 11010
E: 11011
F: 11100
G: 11101
H: 11110
I: 111110
J: 111111
Let's make the first table three bits long (eight entries):
000: A,1
001: A,1
010: A,1
011: A,1
100: B,2
101: B,2
110: -> table X (gobble 3 bits)
111: -> table Y (gobble 3 bits)
Each entry is what the bits decode to and how many bits that is, i.e. how
many bits to gobble. Or the entry points to another table, with the number of
bits to gobble implicit in the size of the table.
Table X is two bits long since the longest code starting with 110 is five bits
long:
00: C,1
01: C,1
10: D,2
11: E,2
Table Y is three bits long since the longest code starting with 111 is six
bits long:
000: F,2
001: F,2
010: G,2
011: G,2
100: H,2
101: H,2
110: I,3
111: J,3
So what we have here are three tables with a total of 20 entries that had to
be constructed. That's compared to 64 entries for a single table. Or
compared to 16 entries for a Huffman tree (six two entry tables and one four
entry table). Assuming that the code ideally represents the probability of
the symbols, it takes on the average 1.25 lookups per symbol. That's compared
to one lookup for the single table, or 1.66 lookups per symbol for the
Huffman tree.
There, I think that gives you a picture of what's going on. For inflate, the
meaning of a particular symbol is often more than just a letter. It can be a
byte (a "literal"), or it can be either a length or a distance which
indicates a base value and a number of bits to fetch after the code that is
added to the base value. Or it might be the special end-of-block code. The
data structures created in inftrees.c try to encode all that information
compactly in the tables.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
References:
[LZ77] Ziv J., Lempel A., ``A Universal Algorithm for Sequential Data
Compression,'' IEEE Transactions on Information Theory, Vol. 23, No. 3,
pp. 337-343.
``DEFLATE Compressed Data Format Specification'' available in
ftp://ds.internic.net/rfc/rfc1951.txt

View File

@@ -1,68 +0,0 @@
/* compress.c -- compress a memory buffer
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include "zlib.h"
/* ===========================================================================
Compresses the source buffer into the destination buffer. The level
parameter has the same meaning as in deflateInit. sourceLen is the byte
length of the source buffer. Upon entry, destLen is the total size of the
destination buffer, which must be at least 0.1% larger than sourceLen plus
12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_BUF_ERROR if there was not enough room in the output buffer,
Z_STREAM_ERROR if the level parameter is invalid.
*/
int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
Bytef *dest;
uLongf *destLen;
const Bytef *source;
uLong sourceLen;
int level;
{
z_stream stream;
int err;
stream.next_in = (Bytef*)source;
stream.avail_in = (uInt)sourceLen;
#ifdef MAXSEG_64K
/* Check for source > 64K on 16-bit machine: */
if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
#endif
stream.next_out = dest;
stream.avail_out = (uInt)*destLen;
if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
stream.zalloc = (alloc_func)0;
stream.zfree = (free_func)0;
stream.opaque = (voidpf)0;
err = deflateInit(&stream, level);
if (err != Z_OK) return err;
err = deflate(&stream, Z_FINISH);
if (err != Z_STREAM_END) {
deflateEnd(&stream);
return err == Z_OK ? Z_BUF_ERROR : err;
}
*destLen = stream.total_out;
err = deflateEnd(&stream);
return err;
}
/* ===========================================================================
*/
int ZEXPORT compress (dest, destLen, source, sourceLen)
Bytef *dest;
uLongf *destLen;
const Bytef *source;
uLong sourceLen;
{
return compress2(dest, destLen, source, sourceLen, Z_DEFAULT_COMPRESSION);
}

212
src/zlib/configure vendored
View File

@@ -1,212 +0,0 @@
#!/bin/sh
# configure script for zlib. This script is needed only if
# you wish to build a shared library and your system supports them,
# of if you need special compiler, flags or install directory.
# Otherwise, you can just use directly "make test; make install"
#
# To create a shared library, use "configure --shared"; by default a static
# library is created. If the primitive shared library support provided here
# does not work, use ftp://prep.ai.mit.edu/pub/gnu/libtool-*.tar.gz
#
# To impose specific compiler or flags or install directory, use for example:
# prefix=$HOME CC=cc CFLAGS="-O4" ./configure
# or for csh/tcsh users:
# (setenv prefix $HOME; setenv CC cc; setenv CFLAGS "-O4"; ./configure)
# LDSHARED is the command to be used to create a shared library
# Incorrect settings of CC or CFLAGS may prevent creating a shared library.
# If you have problems, try without defining CC and CFLAGS before reporting
# an error.
LIBS=libz.a
SHAREDLIB=libz.so
VER=`sed -n -e '/VERSION "/s/.*"\(.*\)".*/\1/p' < zlib.h`
AR=${AR-"ar rc"}
RANLIB=${RANLIB-"ranlib"}
prefix=${prefix-/usr/local}
exec_prefix=${exec_prefix-'${prefix}'}
libdir=${libdir-'${exec_prefix}/lib'}
includedir=${includedir-'${prefix}/include'}
shared_ext='.so'
shared=0
gcc=0
old_cc="$CC"
old_cflags="$CFLAGS"
while test $# -ge 1
do
case "$1" in
-h* | --h*)
echo 'usage:'
echo ' configure [--shared] [--prefix=PREFIX] [--exec_prefix=EXPREFIX]'
echo ' [--libdir=LIBDIR] [--includedir=INCLUDEDIR]'
exit 0;;
-p*=* | --p*=*) prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;;
-e*=* | --e*=*) exec_prefix=`echo $1 | sed 's/[-a-z_]*=//'`; shift;;
-l*=* | --libdir=*) libdir=`echo $1 | sed 's/[-a-z_]*=//'`; shift;;
-i*=* | --includedir=*) includedir=`echo $1 | sed 's/[-a-z_]*=//'`;shift;;
-p* | --p*) prefix="$2"; shift; shift;;
-e* | --e*) exec_prefix="$2"; shift; shift;;
-l* | --l*) libdir="$2"; shift; shift;;
-i* | --i*) includedir="$2"; shift; shift;;
-s* | --s*) shared=1; shift;;
esac
done
test=ztest$$
cat > $test.c <<EOF
extern int getchar();
int hello() {return getchar();}
EOF
test -z "$CC" && echo Checking for gcc...
cc=${CC-gcc}
cflags=${CFLAGS-"-O3"}
# to force the asm version use: CFLAGS="-O3 -DASMV" ./configure
case "$cc" in
*gcc*) gcc=1;;
esac
if test "$gcc" -eq 1 && ($cc -c $cflags $test.c) 2>/dev/null; then
CC="$cc"
SFLAGS=${CFLAGS-"-fPIC -O3"}
CFLAGS="$cflags"
case `(uname -s || echo unknown) 2>/dev/null` in
Linux | linux) LDSHARED=${LDSHARED-"gcc -shared -Wl,-soname,libz.so.1"};;
*) LDSHARED=${LDSHARED-"gcc -shared"};;
esac
else
# find system name and corresponding cc options
CC=${CC-cc}
case `(uname -sr || echo unknown) 2>/dev/null` in
HP-UX*) SFLAGS=${CFLAGS-"-O +z"}
CFLAGS=${CFLAGS-"-O"}
# LDSHARED=${LDSHARED-"ld -b +vnocompatwarnings"}
LDSHARED=${LDSHARED-"ld -b"}
shared_ext='.sl'
SHAREDLIB='libz.sl';;
IRIX*) SFLAGS=${CFLAGS-"-ansi -O2 -rpath ."}
CFLAGS=${CFLAGS-"-ansi -O2"}
LDSHARED=${LDSHARED-"cc -shared"};;
OSF1\ V4*) SFLAGS=${CFLAGS-"-O -std1"}
CFLAGS=${CFLAGS-"-O -std1"}
LDSHARED=${LDSHARED-"cc -shared -Wl,-soname,$SHAREDLIB -Wl,-msym -Wl,-rpath,$(libdir) -Wl,-set_version,${VER}:1.0"};;
OSF1*) SFLAGS=${CFLAGS-"-O -std1"}
CFLAGS=${CFLAGS-"-O -std1"}
LDSHARED=${LDSHARED-"cc -shared"};;
QNX*) SFLAGS=${CFLAGS-"-4 -O"}
CFLAGS=${CFLAGS-"-4 -O"}
LDSHARED=${LDSHARED-"cc"}
RANLIB=${RANLIB-"true"}
AR="cc -A";;
SCO_SV\ 3.2*) SFLAGS=${CFLAGS-"-O3 -dy -KPIC "}
CFLAGS=${CFLAGS-"-O3"}
LDSHARED=${LDSHARED-"cc -dy -KPIC -G"};;
SunOS\ 5*) SFLAGS=${CFLAGS-"-fast -xcg89 -KPIC -R."}
CFLAGS=${CFLAGS-"-fast -xcg89"}
LDSHARED=${LDSHARED-"cc -G"};;
SunOS\ 4*) SFLAGS=${CFLAGS-"-O2 -PIC"}
CFLAGS=${CFLAGS-"-O2"}
LDSHARED=${LDSHARED-"ld"};;
UNIX_System_V\ 4.2.0)
SFLAGS=${CFLAGS-"-KPIC -O"}
CFLAGS=${CFLAGS-"-O"}
LDSHARED=${LDSHARED-"cc -G"};;
UNIX_SV\ 4.2MP)
SFLAGS=${CFLAGS-"-Kconform_pic -O"}
CFLAGS=${CFLAGS-"-O"}
LDSHARED=${LDSHARED-"cc -G"};;
# send working options for other systems to support@gzip.org
*) SFLAGS=${CFLAGS-"-O"}
CFLAGS=${CFLAGS-"-O"}
LDSHARED=${LDSHARED-"cc -shared"};;
esac
fi
if test $shared -eq 1; then
echo Checking for shared library support...
# we must test in two steps (cc then ld), required at least on SunOS 4.x
if test "`($CC -c $SFLAGS $test.c) 2>&1`" = "" &&
test "`($LDSHARED -o $test$shared_ext $test.o) 2>&1`" = ""; then
CFLAGS="$SFLAGS"
LIBS="$SHAREDLIB.$VER"
echo Building shared library $SHAREDLIB.$VER with $CC.
elif test -z "$old_cc" -a -z "$old_cflags"; then
echo No shared library suppport.
shared=0;
else
echo 'No shared library suppport; try without defining CC and CFLAGS'
shared=0;
fi
fi
if test $shared -eq 0; then
LDSHARED="$CC"
echo Building static library $LIBS version $VER with $CC.
fi
cat > $test.c <<EOF
#include <unistd.h>
int main() { return 0; }
EOF
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
CFLAGS="$CFLAGS -DHAVE_UNISTD_H"
echo "Checking for unistd.h... Yes."
else
echo "Checking for unistd.h... No."
fi
cat > $test.c <<EOF
#include <errno.h>
int main() { return 0; }
EOF
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
echo "Checking for errno.h... Yes."
else
echo "Checking for errno.h... No."
CFLAGS="$CFLAGS -DNO_ERRNO_H"
fi
cat > $test.c <<EOF
#include <sys/types.h>
#include <sys/mman.h>
#include <sys/stat.h>
caddr_t hello() {
return mmap((caddr_t)0, (off_t)0, PROT_READ, MAP_SHARED, 0, (off_t)0);
}
EOF
if test "`($CC -c $CFLAGS $test.c) 2>&1`" = ""; then
CFLAGS="$CFLAGS -DUSE_MMAP"
echo Checking for mmap support... Yes.
else
echo Checking for mmap support... No.
fi
CPP=${CPP-"$CC -E"}
case $CFLAGS in
*ASMV*)
if test "`nm $test.o | grep _hello`" = ""; then
CPP="$CPP -DNO_UNDERLINE"
echo Checking for underline in external names... No.
else
echo Checking for underline in external names... Yes.
fi;;
esac
rm -f $test.[co] $test$shared_ext
# udpate Makefile
sed < Makefile.in "
/^CC *=/s%=.*%=$CC%
/^CFLAGS *=/s%=.*%=$CFLAGS%
/^CPP *=/s%=.*%=$CPP%
/^LDSHARED *=/s%=.*%=$LDSHARED%
/^LIBS *=/s%=.*%=$LIBS%
/^SHAREDLIB *=/s%=.*%=$SHAREDLIB%
/^AR *=/s%=.*%=$AR%
/^RANLIB *=/s%=.*%=$RANLIB%
/^VER *=/s%=.*%=$VER%
/^prefix *=/s%=.*%=$prefix%
/^exec_prefix *=/s%=.*%=$exec_prefix%
/^libdir *=/s%=.*%=$libdir%
/^includedir *=/s%=.*%=$includedir%
" > Makefile

View File

@@ -1,162 +0,0 @@
/* crc32.c -- compute the CRC-32 of a data stream
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include "zlib.h"
#define local static
#ifdef DYNAMIC_CRC_TABLE
local int crc_table_empty = 1;
local uLongf crc_table[256];
local void make_crc_table OF((void));
/*
Generate a table for a byte-wise 32-bit CRC calculation on the polynomial:
x^32+x^26+x^23+x^22+x^16+x^12+x^11+x^10+x^8+x^7+x^5+x^4+x^2+x+1.
Polynomials over GF(2) are represented in binary, one bit per coefficient,
with the lowest powers in the most significant bit. Then adding polynomials
is just exclusive-or, and multiplying a polynomial by x is a right shift by
one. If we call the above polynomial p, and represent a byte as the
polynomial q, also with the lowest power in the most significant bit (so the
byte 0xb1 is the polynomial x^7+x^3+x+1), then the CRC is (q*x^32) mod p,
where a mod b means the remainder after dividing a by b.
This calculation is done using the shift-register method of multiplying and
taking the remainder. The register is initialized to zero, and for each
incoming bit, x^32 is added mod p to the register if the bit is a one (where
x^32 mod p is p+x^32 = x^26+...+1), and the register is multiplied mod p by
x (which is shifting right by one and adding x^32 mod p if the bit shifted
out is a one). We start with the highest power (least significant bit) of
q and repeat for all eight bits of q.
The table is simply the CRC of all possible eight bit values. This is all
the information needed to generate CRC's on data a byte at a time for all
combinations of CRC register values and incoming bytes.
*/
local void make_crc_table()
{
uLong c;
int n, k;
uLong poly; /* polynomial exclusive-or pattern */
/* terms of polynomial defining this crc (except x^32): */
static const Byte p[] = {0,1,2,4,5,7,8,10,11,12,16,22,23,26};
/* make exclusive-or pattern from polynomial (0xedb88320L) */
poly = 0L;
for (n = 0; n < sizeof(p)/sizeof(Byte); n++)
poly |= 1L << (31 - p[n]);
for (n = 0; n < 256; n++)
{
c = (uLong)n;
for (k = 0; k < 8; k++)
c = c & 1 ? poly ^ (c >> 1) : c >> 1;
crc_table[n] = c;
}
crc_table_empty = 0;
}
#else
/* ========================================================================
* Table of CRC-32's of all single-byte values (made by make_crc_table)
*/
local const uLongf crc_table[256] = {
0x00000000L, 0x77073096L, 0xee0e612cL, 0x990951baL, 0x076dc419L,
0x706af48fL, 0xe963a535L, 0x9e6495a3L, 0x0edb8832L, 0x79dcb8a4L,
0xe0d5e91eL, 0x97d2d988L, 0x09b64c2bL, 0x7eb17cbdL, 0xe7b82d07L,
0x90bf1d91L, 0x1db71064L, 0x6ab020f2L, 0xf3b97148L, 0x84be41deL,
0x1adad47dL, 0x6ddde4ebL, 0xf4d4b551L, 0x83d385c7L, 0x136c9856L,
0x646ba8c0L, 0xfd62f97aL, 0x8a65c9ecL, 0x14015c4fL, 0x63066cd9L,
0xfa0f3d63L, 0x8d080df5L, 0x3b6e20c8L, 0x4c69105eL, 0xd56041e4L,
0xa2677172L, 0x3c03e4d1L, 0x4b04d447L, 0xd20d85fdL, 0xa50ab56bL,
0x35b5a8faL, 0x42b2986cL, 0xdbbbc9d6L, 0xacbcf940L, 0x32d86ce3L,
0x45df5c75L, 0xdcd60dcfL, 0xabd13d59L, 0x26d930acL, 0x51de003aL,
0xc8d75180L, 0xbfd06116L, 0x21b4f4b5L, 0x56b3c423L, 0xcfba9599L,
0xb8bda50fL, 0x2802b89eL, 0x5f058808L, 0xc60cd9b2L, 0xb10be924L,
0x2f6f7c87L, 0x58684c11L, 0xc1611dabL, 0xb6662d3dL, 0x76dc4190L,
0x01db7106L, 0x98d220bcL, 0xefd5102aL, 0x71b18589L, 0x06b6b51fL,
0x9fbfe4a5L, 0xe8b8d433L, 0x7807c9a2L, 0x0f00f934L, 0x9609a88eL,
0xe10e9818L, 0x7f6a0dbbL, 0x086d3d2dL, 0x91646c97L, 0xe6635c01L,
0x6b6b51f4L, 0x1c6c6162L, 0x856530d8L, 0xf262004eL, 0x6c0695edL,
0x1b01a57bL, 0x8208f4c1L, 0xf50fc457L, 0x65b0d9c6L, 0x12b7e950L,
0x8bbeb8eaL, 0xfcb9887cL, 0x62dd1ddfL, 0x15da2d49L, 0x8cd37cf3L,
0xfbd44c65L, 0x4db26158L, 0x3ab551ceL, 0xa3bc0074L, 0xd4bb30e2L,
0x4adfa541L, 0x3dd895d7L, 0xa4d1c46dL, 0xd3d6f4fbL, 0x4369e96aL,
0x346ed9fcL, 0xad678846L, 0xda60b8d0L, 0x44042d73L, 0x33031de5L,
0xaa0a4c5fL, 0xdd0d7cc9L, 0x5005713cL, 0x270241aaL, 0xbe0b1010L,
0xc90c2086L, 0x5768b525L, 0x206f85b3L, 0xb966d409L, 0xce61e49fL,
0x5edef90eL, 0x29d9c998L, 0xb0d09822L, 0xc7d7a8b4L, 0x59b33d17L,
0x2eb40d81L, 0xb7bd5c3bL, 0xc0ba6cadL, 0xedb88320L, 0x9abfb3b6L,
0x03b6e20cL, 0x74b1d29aL, 0xead54739L, 0x9dd277afL, 0x04db2615L,
0x73dc1683L, 0xe3630b12L, 0x94643b84L, 0x0d6d6a3eL, 0x7a6a5aa8L,
0xe40ecf0bL, 0x9309ff9dL, 0x0a00ae27L, 0x7d079eb1L, 0xf00f9344L,
0x8708a3d2L, 0x1e01f268L, 0x6906c2feL, 0xf762575dL, 0x806567cbL,
0x196c3671L, 0x6e6b06e7L, 0xfed41b76L, 0x89d32be0L, 0x10da7a5aL,
0x67dd4accL, 0xf9b9df6fL, 0x8ebeeff9L, 0x17b7be43L, 0x60b08ed5L,
0xd6d6a3e8L, 0xa1d1937eL, 0x38d8c2c4L, 0x4fdff252L, 0xd1bb67f1L,
0xa6bc5767L, 0x3fb506ddL, 0x48b2364bL, 0xd80d2bdaL, 0xaf0a1b4cL,
0x36034af6L, 0x41047a60L, 0xdf60efc3L, 0xa867df55L, 0x316e8eefL,
0x4669be79L, 0xcb61b38cL, 0xbc66831aL, 0x256fd2a0L, 0x5268e236L,
0xcc0c7795L, 0xbb0b4703L, 0x220216b9L, 0x5505262fL, 0xc5ba3bbeL,
0xb2bd0b28L, 0x2bb45a92L, 0x5cb36a04L, 0xc2d7ffa7L, 0xb5d0cf31L,
0x2cd99e8bL, 0x5bdeae1dL, 0x9b64c2b0L, 0xec63f226L, 0x756aa39cL,
0x026d930aL, 0x9c0906a9L, 0xeb0e363fL, 0x72076785L, 0x05005713L,
0x95bf4a82L, 0xe2b87a14L, 0x7bb12baeL, 0x0cb61b38L, 0x92d28e9bL,
0xe5d5be0dL, 0x7cdcefb7L, 0x0bdbdf21L, 0x86d3d2d4L, 0xf1d4e242L,
0x68ddb3f8L, 0x1fda836eL, 0x81be16cdL, 0xf6b9265bL, 0x6fb077e1L,
0x18b74777L, 0x88085ae6L, 0xff0f6a70L, 0x66063bcaL, 0x11010b5cL,
0x8f659effL, 0xf862ae69L, 0x616bffd3L, 0x166ccf45L, 0xa00ae278L,
0xd70dd2eeL, 0x4e048354L, 0x3903b3c2L, 0xa7672661L, 0xd06016f7L,
0x4969474dL, 0x3e6e77dbL, 0xaed16a4aL, 0xd9d65adcL, 0x40df0b66L,
0x37d83bf0L, 0xa9bcae53L, 0xdebb9ec5L, 0x47b2cf7fL, 0x30b5ffe9L,
0xbdbdf21cL, 0xcabac28aL, 0x53b39330L, 0x24b4a3a6L, 0xbad03605L,
0xcdd70693L, 0x54de5729L, 0x23d967bfL, 0xb3667a2eL, 0xc4614ab8L,
0x5d681b02L, 0x2a6f2b94L, 0xb40bbe37L, 0xc30c8ea1L, 0x5a05df1bL,
0x2d02ef8dL
};
#endif
/* =========================================================================
* This function can be used by asm versions of crc32()
*/
const uLongf * ZEXPORT get_crc_table()
{
#ifdef DYNAMIC_CRC_TABLE
if (crc_table_empty) make_crc_table();
#endif
return (const uLongf *)crc_table;
}
/* ========================================================================= */
#define DO1(buf) crc = crc_table[((int)crc ^ (*buf++)) & 0xff] ^ (crc >> 8);
#define DO2(buf) DO1(buf); DO1(buf);
#define DO4(buf) DO2(buf); DO2(buf);
#define DO8(buf) DO4(buf); DO4(buf);
/* ========================================================================= */
uLong ZEXPORT crc32(crc, buf, len)
uLong crc;
const Bytef *buf;
uInt len;
{
if (buf == Z_NULL) return 0L;
#ifdef DYNAMIC_CRC_TABLE
if (crc_table_empty)
make_crc_table();
#endif
crc = crc ^ 0xffffffffL;
while (len >= 8)
{
DO8(buf);
len -= 8;
}
if (len) do {
DO1(buf);
} while (--len);
return crc ^ 0xffffffffL;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,318 +0,0 @@
/* deflate.h -- internal compression state
* Copyright (C) 1995-2002 Jean-loup Gailly
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
/* @(#) $Id$ */
#ifndef _DEFLATE_H
#define _DEFLATE_H
#include "zutil.h"
/* ===========================================================================
* Internal compression state.
*/
#define LENGTH_CODES 29
/* number of length codes, not counting the special END_BLOCK code */
#define LITERALS 256
/* number of literal bytes 0..255 */
#define L_CODES (LITERALS+1+LENGTH_CODES)
/* number of Literal or Length codes, including the END_BLOCK code */
#define D_CODES 30
/* number of distance codes */
#define BL_CODES 19
/* number of codes used to transfer the bit lengths */
#define HEAP_SIZE (2*L_CODES+1)
/* maximum heap size */
#define MAX_BITS 15
/* All codes must not exceed MAX_BITS bits */
#define INIT_STATE 42
#define BUSY_STATE 113
#define FINISH_STATE 666
/* Stream status */
/* Data structure describing a single value and its code string. */
typedef struct ct_data_s {
union {
ush freq; /* frequency count */
ush code; /* bit string */
} fc;
union {
ush dad; /* father node in Huffman tree */
ush len; /* length of bit string */
} dl;
} FAR ct_data;
#define Freq fc.freq
#define Code fc.code
#define Dad dl.dad
#define Len dl.len
typedef struct static_tree_desc_s static_tree_desc;
typedef struct tree_desc_s {
ct_data *dyn_tree; /* the dynamic tree */
int max_code; /* largest code with non zero frequency */
static_tree_desc *stat_desc; /* the corresponding static tree */
} FAR tree_desc;
typedef ush Pos;
typedef Pos FAR Posf;
typedef unsigned IPos;
/* A Pos is an index in the character window. We use short instead of int to
* save space in the various tables. IPos is used only for parameter passing.
*/
typedef struct internal_state {
z_streamp strm; /* pointer back to this zlib stream */
int status; /* as the name implies */
Bytef *pending_buf; /* output still pending */
ulg pending_buf_size; /* size of pending_buf */
Bytef *pending_out; /* next pending byte to output to the stream */
int pending; /* nb of bytes in the pending buffer */
int noheader; /* suppress zlib header and adler32 */
Byte data_type; /* UNKNOWN, BINARY or ASCII */
Byte method; /* STORED (for zip only) or DEFLATED */
int last_flush; /* value of flush param for previous deflate call */
/* used by deflate.c: */
uInt w_size; /* LZ77 window size (32K by default) */
uInt w_bits; /* log2(w_size) (8..16) */
uInt w_mask; /* w_size - 1 */
Bytef *window;
/* Sliding window. Input bytes are read into the second half of the window,
* and move to the first half later to keep a dictionary of at least wSize
* bytes. With this organization, matches are limited to a distance of
* wSize-MAX_MATCH bytes, but this ensures that IO is always
* performed with a length multiple of the block size. Also, it limits
* the window size to 64K, which is quite useful on MSDOS.
* To do: use the user input buffer as sliding window.
*/
ulg window_size;
/* Actual size of window: 2*wSize, except when the user input buffer
* is directly used as sliding window.
*/
Posf *prev;
/* Link to older string with same hash index. To limit the size of this
* array to 64K, this link is maintained only for the last 32K strings.
* An index in this array is thus a window index modulo 32K.
*/
Posf *head; /* Heads of the hash chains or NIL. */
uInt ins_h; /* hash index of string to be inserted */
uInt hash_size; /* number of elements in hash table */
uInt hash_bits; /* log2(hash_size) */
uInt hash_mask; /* hash_size-1 */
uInt hash_shift;
/* Number of bits by which ins_h must be shifted at each input
* step. It must be such that after MIN_MATCH steps, the oldest
* byte no longer takes part in the hash key, that is:
* hash_shift * MIN_MATCH >= hash_bits
*/
long block_start;
/* Window position at the beginning of the current output block. Gets
* negative when the window is moved backwards.
*/
uInt match_length; /* length of best match */
IPos prev_match; /* previous match */
int match_available; /* set if previous match exists */
uInt strstart; /* start of string to insert */
uInt match_start; /* start of matching string */
uInt lookahead; /* number of valid bytes ahead in window */
uInt prev_length;
/* Length of the best match at previous step. Matches not greater than this
* are discarded. This is used in the lazy match evaluation.
*/
uInt max_chain_length;
/* To speed up deflation, hash chains are never searched beyond this
* length. A higher limit improves compression ratio but degrades the
* speed.
*/
uInt max_lazy_match;
/* Attempt to find a better match only when the current match is strictly
* smaller than this value. This mechanism is used only for compression
* levels >= 4.
*/
# define max_insert_length max_lazy_match
/* Insert new strings in the hash table only if the match length is not
* greater than this length. This saves time but degrades compression.
* max_insert_length is used only for compression levels <= 3.
*/
int level; /* compression level (1..9) */
int strategy; /* favor or force Huffman coding*/
uInt good_match;
/* Use a faster search when the previous match is longer than this */
int nice_match; /* Stop searching when current match exceeds this */
/* used by trees.c: */
/* Didn't use ct_data typedef below to supress compiler warning */
struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */
struct ct_data_s dyn_dtree[2*D_CODES+1]; /* distance tree */
struct ct_data_s bl_tree[2*BL_CODES+1]; /* Huffman tree for bit lengths */
struct tree_desc_s l_desc; /* desc. for literal tree */
struct tree_desc_s d_desc; /* desc. for distance tree */
struct tree_desc_s bl_desc; /* desc. for bit length tree */
ush bl_count[MAX_BITS+1];
/* number of codes at each bit length for an optimal tree */
int heap[2*L_CODES+1]; /* heap used to build the Huffman trees */
int heap_len; /* number of elements in the heap */
int heap_max; /* element of largest frequency */
/* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used.
* The same heap array is used to build all trees.
*/
uch depth[2*L_CODES+1];
/* Depth of each subtree used as tie breaker for trees of equal frequency
*/
uchf *l_buf; /* buffer for literals or lengths */
uInt lit_bufsize;
/* Size of match buffer for literals/lengths. There are 4 reasons for
* limiting lit_bufsize to 64K:
* - frequencies can be kept in 16 bit counters
* - if compression is not successful for the first block, all input
* data is still in the window so we can still emit a stored block even
* when input comes from standard input. (This can also be done for
* all blocks if lit_bufsize is not greater than 32K.)
* - if compression is not successful for a file smaller than 64K, we can
* even emit a stored file instead of a stored block (saving 5 bytes).
* This is applicable only for zip (not gzip or zlib).
* - creating new Huffman trees less frequently may not provide fast
* adaptation to changes in the input data statistics. (Take for
* example a binary file with poorly compressible code followed by
* a highly compressible string table.) Smaller buffer sizes give
* fast adaptation but have of course the overhead of transmitting
* trees more frequently.
* - I can't count above 4
*/
uInt last_lit; /* running index in l_buf */
ushf *d_buf;
/* Buffer for distances. To simplify the code, d_buf and l_buf have
* the same number of elements. To use different lengths, an extra flag
* array would be necessary.
*/
ulg opt_len; /* bit length of current block with optimal trees */
ulg static_len; /* bit length of current block with static trees */
uInt matches; /* number of string matches in current block */
int last_eob_len; /* bit length of EOB code for last block */
#ifdef DEBUG
ulg compressed_len; /* total bit length of compressed file mod 2^32 */
ulg bits_sent; /* bit length of compressed data sent mod 2^32 */
#endif
ush bi_buf;
/* Output buffer. bits are inserted starting at the bottom (least
* significant bits).
*/
int bi_valid;
/* Number of valid bits in bi_buf. All bits above the last valid bit
* are always zero.
*/
} FAR deflate_state;
/* Output a byte on the stream.
* IN assertion: there is enough room in pending_buf.
*/
#define put_byte(s, c) {s->pending_buf[s->pending++] = (c);}
#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1)
/* Minimum amount of lookahead, except at the end of the input file.
* See deflate.c for comments about the MIN_MATCH+1.
*/
#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD)
/* In order to simplify the code, particularly on 16 bit machines, match
* distances are limited to MAX_DIST instead of WSIZE.
*/
/* in trees.c */
void _tr_init OF((deflate_state *s));
int _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc));
void _tr_flush_block OF((deflate_state *s, charf *buf, ulg stored_len,
int eof));
void _tr_align OF((deflate_state *s));
void _tr_stored_block OF((deflate_state *s, charf *buf, ulg stored_len,
int eof));
#define d_code(dist) \
((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)])
/* Mapping from a distance to a distance code. dist is the distance - 1 and
* must not have side effects. _dist_code[256] and _dist_code[257] are never
* used.
*/
#ifndef DEBUG
/* Inline versions of _tr_tally for speed: */
#if defined(GEN_TREES_H) || !defined(STDC)
extern uch _length_code[];
extern uch _dist_code[];
#else
extern const uch _length_code[];
extern const uch _dist_code[];
#endif
# define _tr_tally_lit(s, c, flush) \
{ uch cc = (c); \
s->d_buf[s->last_lit] = 0; \
s->l_buf[s->last_lit++] = cc; \
s->dyn_ltree[cc].Freq++; \
flush = (s->last_lit == s->lit_bufsize-1); \
}
# define _tr_tally_dist(s, distance, length, flush) \
{ uch len = (length); \
ush dist = (distance); \
s->d_buf[s->last_lit] = dist; \
s->l_buf[s->last_lit++] = len; \
dist--; \
s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
s->dyn_dtree[d_code(dist)].Freq++; \
flush = (s->last_lit == s->lit_bufsize-1); \
}
#else
# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c)
# define _tr_tally_dist(s, distance, length, flush) \
flush = _tr_tally(s, distance, length)
#endif
#endif

View File

@@ -1,48 +0,0 @@
# descrip.mms: MMS description file for building zlib on VMS
# written by Martin P.J. Zinser <m.zinser@gsi.de>
cc_defs =
c_deb =
.ifdef __DECC__
pref = /prefix=all
.endif
OBJS = adler32.obj, compress.obj, crc32.obj, gzio.obj, uncompr.obj,\
deflate.obj, trees.obj, zutil.obj, inflate.obj, infblock.obj,\
inftrees.obj, infcodes.obj, infutil.obj, inffast.obj
CFLAGS= $(C_DEB) $(CC_DEFS) $(PREF)
all : example.exe minigzip.exe
@ write sys$output " Example applications available"
libz.olb : libz.olb($(OBJS))
@ write sys$output " libz available"
example.exe : example.obj libz.olb
link example,libz.olb/lib
minigzip.exe : minigzip.obj libz.olb
link minigzip,libz.olb/lib,x11vms:xvmsutils.olb/lib
clean :
delete *.obj;*,libz.olb;*
# Other dependencies.
adler32.obj : zutil.h zlib.h zconf.h
compress.obj : zlib.h zconf.h
crc32.obj : zutil.h zlib.h zconf.h
deflate.obj : deflate.h zutil.h zlib.h zconf.h
example.obj : zlib.h zconf.h
gzio.obj : zutil.h zlib.h zconf.h
infblock.obj : zutil.h zlib.h zconf.h infblock.h inftrees.h infcodes.h infutil.h
infcodes.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h infcodes.h inffast.h
inffast.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
inflate.obj : zutil.h zlib.h zconf.h infblock.h
inftrees.obj : zutil.h zlib.h zconf.h inftrees.h
infutil.obj : zutil.h zlib.h zconf.h inftrees.h infutil.h
minigzip.obj : zlib.h zconf.h
trees.obj : deflate.h zutil.h zlib.h zconf.h
uncompr.obj : zlib.h zconf.h
zutil.obj : zutil.h zlib.h zconf.h

View File

@@ -1,556 +0,0 @@
/* example.c -- usage example of the zlib compression library
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include <stdio.h>
#include "zlib.h"
#ifdef STDC
# include <string.h>
# include <stdlib.h>
#else
extern void exit OF((int));
#endif
#if defined(VMS) || defined(RISCOS)
# define TESTFILE "foo-gz"
#else
# define TESTFILE "foo.gz"
#endif
#define CHECK_ERR(err, msg) { \
if (err != Z_OK) { \
fprintf(stderr, "%s error: %d\n", msg, err); \
exit(1); \
} \
}
const char hello[] = "hello, hello!";
/* "hello world" would be more standard, but the repeated "hello"
* stresses the compression code better, sorry...
*/
const char dictionary[] = "hello";
uLong dictId; /* Adler32 value of the dictionary */
void test_compress OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_gzio OF((const char *out, const char *in,
Byte *uncompr, int uncomprLen));
void test_deflate OF((Byte *compr, uLong comprLen));
void test_inflate OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_large_deflate OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_large_inflate OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_flush OF((Byte *compr, uLong *comprLen));
void test_sync OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
void test_dict_deflate OF((Byte *compr, uLong comprLen));
void test_dict_inflate OF((Byte *compr, uLong comprLen,
Byte *uncompr, uLong uncomprLen));
int main OF((int argc, char *argv[]));
/* ===========================================================================
* Test compress() and uncompress()
*/
void test_compress(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
uLong len = strlen(hello)+1;
err = compress(compr, &comprLen, (const Bytef*)hello, len);
CHECK_ERR(err, "compress");
strcpy((char*)uncompr, "garbage");
err = uncompress(uncompr, &uncomprLen, compr, comprLen);
CHECK_ERR(err, "uncompress");
if (strcmp((char*)uncompr, hello)) {
fprintf(stderr, "bad uncompress\n");
exit(1);
} else {
printf("uncompress(): %s\n", (char *)uncompr);
}
}
/* ===========================================================================
* Test read/write of .gz files
*/
void test_gzio(out, in, uncompr, uncomprLen)
const char *out; /* compressed output file */
const char *in; /* compressed input file */
Byte *uncompr;
int uncomprLen;
{
int err;
int len = strlen(hello)+1;
gzFile file;
z_off_t pos;
file = gzopen(out, "wb");
if (file == NULL) {
fprintf(stderr, "gzopen error\n");
exit(1);
}
gzputc(file, 'h');
if (gzputs(file, "ello") != 4) {
fprintf(stderr, "gzputs err: %s\n", gzerror(file, &err));
exit(1);
}
if (gzprintf(file, ", %s!", "hello") != 8) {
fprintf(stderr, "gzprintf err: %s\n", gzerror(file, &err));
exit(1);
}
gzseek(file, 1L, SEEK_CUR); /* add one zero byte */
gzclose(file);
file = gzopen(in, "rb");
if (file == NULL) {
fprintf(stderr, "gzopen error\n");
}
strcpy((char*)uncompr, "garbage");
uncomprLen = gzread(file, uncompr, (unsigned)uncomprLen);
if (uncomprLen != len) {
fprintf(stderr, "gzread err: %s\n", gzerror(file, &err));
exit(1);
}
if (strcmp((char*)uncompr, hello)) {
fprintf(stderr, "bad gzread: %s\n", (char*)uncompr);
exit(1);
} else {
printf("gzread(): %s\n", (char *)uncompr);
}
pos = gzseek(file, -8L, SEEK_CUR);
if (pos != 6 || gztell(file) != pos) {
fprintf(stderr, "gzseek error, pos=%ld, gztell=%ld\n",
(long)pos, (long)gztell(file));
exit(1);
}
if (gzgetc(file) != ' ') {
fprintf(stderr, "gzgetc error\n");
exit(1);
}
gzgets(file, (char*)uncompr, uncomprLen);
uncomprLen = strlen((char*)uncompr);
if (uncomprLen != 6) { /* "hello!" */
fprintf(stderr, "gzgets err after gzseek: %s\n", gzerror(file, &err));
exit(1);
}
if (strcmp((char*)uncompr, hello+7)) {
fprintf(stderr, "bad gzgets after gzseek\n");
exit(1);
} else {
printf("gzgets() after gzseek: %s\n", (char *)uncompr);
}
gzclose(file);
}
/* ===========================================================================
* Test deflate() with small buffers
*/
void test_deflate(compr, comprLen)
Byte *compr;
uLong comprLen;
{
z_stream c_stream; /* compression stream */
int err;
int len = strlen(hello)+1;
c_stream.zalloc = (alloc_func)0;
c_stream.zfree = (free_func)0;
c_stream.opaque = (voidpf)0;
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
CHECK_ERR(err, "deflateInit");
c_stream.next_in = (Bytef*)hello;
c_stream.next_out = compr;
while (c_stream.total_in != (uLong)len && c_stream.total_out < comprLen) {
c_stream.avail_in = c_stream.avail_out = 1; /* force small buffers */
err = deflate(&c_stream, Z_NO_FLUSH);
CHECK_ERR(err, "deflate");
}
/* Finish the stream, still forcing small buffers: */
for (;;) {
c_stream.avail_out = 1;
err = deflate(&c_stream, Z_FINISH);
if (err == Z_STREAM_END) break;
CHECK_ERR(err, "deflate");
}
err = deflateEnd(&c_stream);
CHECK_ERR(err, "deflateEnd");
}
/* ===========================================================================
* Test inflate() with small buffers
*/
void test_inflate(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
z_stream d_stream; /* decompression stream */
strcpy((char*)uncompr, "garbage");
d_stream.zalloc = (alloc_func)0;
d_stream.zfree = (free_func)0;
d_stream.opaque = (voidpf)0;
d_stream.next_in = compr;
d_stream.avail_in = 0;
d_stream.next_out = uncompr;
err = inflateInit(&d_stream);
CHECK_ERR(err, "inflateInit");
while (d_stream.total_out < uncomprLen && d_stream.total_in < comprLen) {
d_stream.avail_in = d_stream.avail_out = 1; /* force small buffers */
err = inflate(&d_stream, Z_NO_FLUSH);
if (err == Z_STREAM_END) break;
CHECK_ERR(err, "inflate");
}
err = inflateEnd(&d_stream);
CHECK_ERR(err, "inflateEnd");
if (strcmp((char*)uncompr, hello)) {
fprintf(stderr, "bad inflate\n");
exit(1);
} else {
printf("inflate(): %s\n", (char *)uncompr);
}
}
/* ===========================================================================
* Test deflate() with large buffers and dynamic change of compression level
*/
void test_large_deflate(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
z_stream c_stream; /* compression stream */
int err;
c_stream.zalloc = (alloc_func)0;
c_stream.zfree = (free_func)0;
c_stream.opaque = (voidpf)0;
err = deflateInit(&c_stream, Z_BEST_SPEED);
CHECK_ERR(err, "deflateInit");
c_stream.next_out = compr;
c_stream.avail_out = (uInt)comprLen;
/* At this point, uncompr is still mostly zeroes, so it should compress
* very well:
*/
c_stream.next_in = uncompr;
c_stream.avail_in = (uInt)uncomprLen;
err = deflate(&c_stream, Z_NO_FLUSH);
CHECK_ERR(err, "deflate");
if (c_stream.avail_in != 0) {
fprintf(stderr, "deflate not greedy\n");
exit(1);
}
/* Feed in already compressed data and switch to no compression: */
deflateParams(&c_stream, Z_NO_COMPRESSION, Z_DEFAULT_STRATEGY);
c_stream.next_in = compr;
c_stream.avail_in = (uInt)comprLen/2;
err = deflate(&c_stream, Z_NO_FLUSH);
CHECK_ERR(err, "deflate");
/* Switch back to compressing mode: */
deflateParams(&c_stream, Z_BEST_COMPRESSION, Z_FILTERED);
c_stream.next_in = uncompr;
c_stream.avail_in = (uInt)uncomprLen;
err = deflate(&c_stream, Z_NO_FLUSH);
CHECK_ERR(err, "deflate");
err = deflate(&c_stream, Z_FINISH);
if (err != Z_STREAM_END) {
fprintf(stderr, "deflate should report Z_STREAM_END\n");
exit(1);
}
err = deflateEnd(&c_stream);
CHECK_ERR(err, "deflateEnd");
}
/* ===========================================================================
* Test inflate() with large buffers
*/
void test_large_inflate(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
z_stream d_stream; /* decompression stream */
strcpy((char*)uncompr, "garbage");
d_stream.zalloc = (alloc_func)0;
d_stream.zfree = (free_func)0;
d_stream.opaque = (voidpf)0;
d_stream.next_in = compr;
d_stream.avail_in = (uInt)comprLen;
err = inflateInit(&d_stream);
CHECK_ERR(err, "inflateInit");
for (;;) {
d_stream.next_out = uncompr; /* discard the output */
d_stream.avail_out = (uInt)uncomprLen;
err = inflate(&d_stream, Z_NO_FLUSH);
if (err == Z_STREAM_END) break;
CHECK_ERR(err, "large inflate");
}
err = inflateEnd(&d_stream);
CHECK_ERR(err, "inflateEnd");
if (d_stream.total_out != 2*uncomprLen + comprLen/2) {
fprintf(stderr, "bad large inflate: %ld\n", d_stream.total_out);
exit(1);
} else {
printf("large_inflate(): OK\n");
}
}
/* ===========================================================================
* Test deflate() with full flush
*/
void test_flush(compr, comprLen)
Byte *compr;
uLong *comprLen;
{
z_stream c_stream; /* compression stream */
int err;
int len = strlen(hello)+1;
c_stream.zalloc = (alloc_func)0;
c_stream.zfree = (free_func)0;
c_stream.opaque = (voidpf)0;
err = deflateInit(&c_stream, Z_DEFAULT_COMPRESSION);
CHECK_ERR(err, "deflateInit");
c_stream.next_in = (Bytef*)hello;
c_stream.next_out = compr;
c_stream.avail_in = 3;
c_stream.avail_out = (uInt)*comprLen;
err = deflate(&c_stream, Z_FULL_FLUSH);
CHECK_ERR(err, "deflate");
compr[3]++; /* force an error in first compressed block */
c_stream.avail_in = len - 3;
err = deflate(&c_stream, Z_FINISH);
if (err != Z_STREAM_END) {
CHECK_ERR(err, "deflate");
}
err = deflateEnd(&c_stream);
CHECK_ERR(err, "deflateEnd");
*comprLen = c_stream.total_out;
}
/* ===========================================================================
* Test inflateSync()
*/
void test_sync(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
z_stream d_stream; /* decompression stream */
strcpy((char*)uncompr, "garbage");
d_stream.zalloc = (alloc_func)0;
d_stream.zfree = (free_func)0;
d_stream.opaque = (voidpf)0;
d_stream.next_in = compr;
d_stream.avail_in = 2; /* just read the zlib header */
err = inflateInit(&d_stream);
CHECK_ERR(err, "inflateInit");
d_stream.next_out = uncompr;
d_stream.avail_out = (uInt)uncomprLen;
inflate(&d_stream, Z_NO_FLUSH);
CHECK_ERR(err, "inflate");
d_stream.avail_in = (uInt)comprLen-2; /* read all compressed data */
err = inflateSync(&d_stream); /* but skip the damaged part */
CHECK_ERR(err, "inflateSync");
err = inflate(&d_stream, Z_FINISH);
if (err != Z_DATA_ERROR) {
fprintf(stderr, "inflate should report DATA_ERROR\n");
/* Because of incorrect adler32 */
exit(1);
}
err = inflateEnd(&d_stream);
CHECK_ERR(err, "inflateEnd");
printf("after inflateSync(): hel%s\n", (char *)uncompr);
}
/* ===========================================================================
* Test deflate() with preset dictionary
*/
void test_dict_deflate(compr, comprLen)
Byte *compr;
uLong comprLen;
{
z_stream c_stream; /* compression stream */
int err;
c_stream.zalloc = (alloc_func)0;
c_stream.zfree = (free_func)0;
c_stream.opaque = (voidpf)0;
err = deflateInit(&c_stream, Z_BEST_COMPRESSION);
CHECK_ERR(err, "deflateInit");
err = deflateSetDictionary(&c_stream,
(const Bytef*)dictionary, sizeof(dictionary));
CHECK_ERR(err, "deflateSetDictionary");
dictId = c_stream.adler;
c_stream.next_out = compr;
c_stream.avail_out = (uInt)comprLen;
c_stream.next_in = (Bytef*)hello;
c_stream.avail_in = (uInt)strlen(hello)+1;
err = deflate(&c_stream, Z_FINISH);
if (err != Z_STREAM_END) {
fprintf(stderr, "deflate should report Z_STREAM_END\n");
exit(1);
}
err = deflateEnd(&c_stream);
CHECK_ERR(err, "deflateEnd");
}
/* ===========================================================================
* Test inflate() with a preset dictionary
*/
void test_dict_inflate(compr, comprLen, uncompr, uncomprLen)
Byte *compr, *uncompr;
uLong comprLen, uncomprLen;
{
int err;
z_stream d_stream; /* decompression stream */
strcpy((char*)uncompr, "garbage");
d_stream.zalloc = (alloc_func)0;
d_stream.zfree = (free_func)0;
d_stream.opaque = (voidpf)0;
d_stream.next_in = compr;
d_stream.avail_in = (uInt)comprLen;
err = inflateInit(&d_stream);
CHECK_ERR(err, "inflateInit");
d_stream.next_out = uncompr;
d_stream.avail_out = (uInt)uncomprLen;
for (;;) {
err = inflate(&d_stream, Z_NO_FLUSH);
if (err == Z_STREAM_END) break;
if (err == Z_NEED_DICT) {
if (d_stream.adler != dictId) {
fprintf(stderr, "unexpected dictionary");
exit(1);
}
err = inflateSetDictionary(&d_stream, (const Bytef*)dictionary,
sizeof(dictionary));
}
CHECK_ERR(err, "inflate with dict");
}
err = inflateEnd(&d_stream);
CHECK_ERR(err, "inflateEnd");
if (strcmp((char*)uncompr, hello)) {
fprintf(stderr, "bad inflate with dict\n");
exit(1);
} else {
printf("inflate with dictionary: %s\n", (char *)uncompr);
}
}
/* ===========================================================================
* Usage: example [output.gz [input.gz]]
*/
int main(argc, argv)
int argc;
char *argv[];
{
Byte *compr, *uncompr;
uLong comprLen = 10000*sizeof(int); /* don't overflow on MSDOS */
uLong uncomprLen = comprLen;
static const char* myVersion = ZLIB_VERSION;
if (zlibVersion()[0] != myVersion[0]) {
fprintf(stderr, "incompatible zlib version\n");
exit(1);
} else if (strcmp(zlibVersion(), ZLIB_VERSION) != 0) {
fprintf(stderr, "warning: different zlib version\n");
}
compr = (Byte*)calloc((uInt)comprLen, 1);
uncompr = (Byte*)calloc((uInt)uncomprLen, 1);
/* compr and uncompr are cleared to avoid reading uninitialized
* data and to ensure that uncompr compresses well.
*/
if (compr == Z_NULL || uncompr == Z_NULL) {
printf("out of memory\n");
exit(1);
}
test_compress(compr, comprLen, uncompr, uncomprLen);
test_gzio((argc > 1 ? argv[1] : TESTFILE),
(argc > 2 ? argv[2] : TESTFILE),
uncompr, (int)uncomprLen);
test_deflate(compr, comprLen);
test_inflate(compr, comprLen, uncompr, uncomprLen);
test_large_deflate(compr, comprLen, uncompr, uncomprLen);
test_large_inflate(compr, comprLen, uncompr, uncomprLen);
test_flush(compr, &comprLen);
test_sync(compr, comprLen, uncompr, uncomprLen);
comprLen = uncomprLen;
test_dict_deflate(compr, comprLen);
test_dict_inflate(compr, comprLen, uncompr, uncomprLen);
exit(0);
return 0; /* to avoid warning */
}

View File

@@ -1,875 +0,0 @@
/* gzio.c -- IO on .gz files
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*
* Compile this file with -DNO_DEFLATE to avoid the compression code.
*/
/* @(#) $Id$ */
#include <stdio.h>
#include "zutil.h"
struct internal_state {int dummy;}; /* for buggy compilers */
#ifndef Z_BUFSIZE
# ifdef MAXSEG_64K
# define Z_BUFSIZE 4096 /* minimize memory usage for 16-bit DOS */
# else
# define Z_BUFSIZE 16384
# endif
#endif
#ifndef Z_PRINTF_BUFSIZE
# define Z_PRINTF_BUFSIZE 4096
#endif
#define ALLOC(size) malloc(size)
#define TRYFREE(p) {if (p) free(p);}
static int gz_magic[2] = {0x1f, 0x8b}; /* gzip magic header */
/* gzip flag byte */
#define ASCII_FLAG 0x01 /* bit 0 set: file probably ascii text */
#define HEAD_CRC 0x02 /* bit 1 set: header CRC present */
#define EXTRA_FIELD 0x04 /* bit 2 set: extra field present */
#define ORIG_NAME 0x08 /* bit 3 set: original file name present */
#define COMMENT 0x10 /* bit 4 set: file comment present */
#define RESERVED 0xE0 /* bits 5..7: reserved */
typedef struct gz_stream {
z_stream stream;
int z_err; /* error code for last stream operation */
int z_eof; /* set if end of input file */
FILE *file; /* .gz file */
Byte *inbuf; /* input buffer */
Byte *outbuf; /* output buffer */
uLong crc; /* crc32 of uncompressed data */
char *msg; /* error message */
char *path; /* path name for debugging only */
int transparent; /* 1 if input file is not a .gz file */
char mode; /* 'w' or 'r' */
long startpos; /* start of compressed data in file (header skipped) */
} gz_stream;
local gzFile gz_open OF((const char *path, const char *mode, int fd));
local int do_flush OF((gzFile file, int flush));
local int get_byte OF((gz_stream *s));
local void check_header OF((gz_stream *s));
local int destroy OF((gz_stream *s));
local void putLong OF((FILE *file, uLong x));
local uLong getLong OF((gz_stream *s));
/* ===========================================================================
Opens a gzip (.gz) file for reading or writing. The mode parameter
is as in fopen ("rb" or "wb"). The file is given either by file descriptor
or path name (if fd == -1).
gz_open return NULL if the file could not be opened or if there was
insufficient memory to allocate the (de)compression state; errno
can be checked to distinguish the two cases (if errno is zero, the
zlib error is Z_MEM_ERROR).
*/
local gzFile gz_open (path, mode, fd)
const char *path;
const char *mode;
int fd;
{
int err;
int level = Z_DEFAULT_COMPRESSION; /* compression level */
int strategy = Z_DEFAULT_STRATEGY; /* compression strategy */
char *p = (char*)mode;
gz_stream *s;
char fmode[80]; /* copy of mode, without the compression level */
char *m = fmode;
if (!path || !mode) return Z_NULL;
s = (gz_stream *)ALLOC(sizeof(gz_stream));
if (!s) return Z_NULL;
s->stream.zalloc = (alloc_func)0;
s->stream.zfree = (free_func)0;
s->stream.opaque = (voidpf)0;
s->stream.next_in = s->inbuf = Z_NULL;
s->stream.next_out = s->outbuf = Z_NULL;
s->stream.avail_in = s->stream.avail_out = 0;
s->file = NULL;
s->z_err = Z_OK;
s->z_eof = 0;
s->crc = crc32(0L, Z_NULL, 0);
s->msg = NULL;
s->transparent = 0;
s->path = (char*)ALLOC(strlen(path)+1);
if (s->path == NULL) {
return destroy(s), (gzFile)Z_NULL;
}
strcpy(s->path, path); /* do this early for debugging */
s->mode = '\0';
do {
if (*p == 'r') s->mode = 'r';
if (*p == 'w' || *p == 'a') s->mode = 'w';
if (*p >= '0' && *p <= '9') {
level = *p - '0';
} else if (*p == 'f') {
strategy = Z_FILTERED;
} else if (*p == 'h') {
strategy = Z_HUFFMAN_ONLY;
} else {
*m++ = *p; /* copy the mode */
}
} while (*p++ && m != fmode + sizeof(fmode));
if (s->mode == '\0') return destroy(s), (gzFile)Z_NULL;
if (s->mode == 'w') {
#ifdef NO_DEFLATE
err = Z_STREAM_ERROR;
#else
err = deflateInit2(&(s->stream), level,
Z_DEFLATED, -MAX_WBITS, DEF_MEM_LEVEL, strategy);
/* windowBits is passed < 0 to suppress zlib header */
s->stream.next_out = s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
#endif
if (err != Z_OK || s->outbuf == Z_NULL) {
return destroy(s), (gzFile)Z_NULL;
}
} else {
s->stream.next_in = s->inbuf = (Byte*)ALLOC(Z_BUFSIZE);
err = inflateInit2(&(s->stream), -MAX_WBITS);
/* windowBits is passed < 0 to tell that there is no zlib header.
* Note that in this case inflate *requires* an extra "dummy" byte
* after the compressed stream in order to complete decompression and
* return Z_STREAM_END. Here the gzip CRC32 ensures that 4 bytes are
* present after the compressed stream.
*/
if (err != Z_OK || s->inbuf == Z_NULL) {
return destroy(s), (gzFile)Z_NULL;
}
}
s->stream.avail_out = Z_BUFSIZE;
errno = 0;
s->file = fd < 0 ? F_OPEN(path, fmode) : (FILE*)fdopen(fd, fmode);
if (s->file == NULL) {
return destroy(s), (gzFile)Z_NULL;
}
if (s->mode == 'w') {
/* Write a very simple .gz header:
*/
fprintf(s->file, "%c%c%c%c%c%c%c%c%c%c", gz_magic[0], gz_magic[1],
Z_DEFLATED, 0 /*flags*/, 0,0,0,0 /*time*/, 0 /*xflags*/, OS_CODE);
s->startpos = 10L;
/* We use 10L instead of ftell(s->file) to because ftell causes an
* fflush on some systems. This version of the library doesn't use
* startpos anyway in write mode, so this initialization is not
* necessary.
*/
} else {
check_header(s); /* skip the .gz header */
s->startpos = (ftell(s->file) - s->stream.avail_in);
}
return (gzFile)s;
}
/* ===========================================================================
Opens a gzip (.gz) file for reading or writing.
*/
gzFile ZEXPORT gzopen (path, mode)
const char *path;
const char *mode;
{
return gz_open (path, mode, -1);
}
/* ===========================================================================
Associate a gzFile with the file descriptor fd. fd is not dup'ed here
to mimic the behavio(u)r of fdopen.
*/
gzFile ZEXPORT gzdopen (fd, mode)
int fd;
const char *mode;
{
char name[20];
if (fd < 0) return (gzFile)Z_NULL;
sprintf(name, "<fd:%d>", fd); /* for debugging */
return gz_open (name, mode, fd);
}
/* ===========================================================================
* Update the compression level and strategy
*/
int ZEXPORT gzsetparams (file, level, strategy)
gzFile file;
int level;
int strategy;
{
gz_stream *s = (gz_stream*)file;
if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
/* Make room to allow flushing */
if (s->stream.avail_out == 0) {
s->stream.next_out = s->outbuf;
if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
s->z_err = Z_ERRNO;
}
s->stream.avail_out = Z_BUFSIZE;
}
return deflateParams (&(s->stream), level, strategy);
}
/* ===========================================================================
Read a byte from a gz_stream; update next_in and avail_in. Return EOF
for end of file.
IN assertion: the stream s has been sucessfully opened for reading.
*/
local int get_byte(s)
gz_stream *s;
{
if (s->z_eof) return EOF;
if (s->stream.avail_in == 0) {
errno = 0;
s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file);
if (s->stream.avail_in == 0) {
s->z_eof = 1;
if (ferror(s->file)) s->z_err = Z_ERRNO;
return EOF;
}
s->stream.next_in = s->inbuf;
}
s->stream.avail_in--;
return *(s->stream.next_in)++;
}
/* ===========================================================================
Check the gzip header of a gz_stream opened for reading. Set the stream
mode to transparent if the gzip magic header is not present; set s->err
to Z_DATA_ERROR if the magic header is present but the rest of the header
is incorrect.
IN assertion: the stream s has already been created sucessfully;
s->stream.avail_in is zero for the first time, but may be non-zero
for concatenated .gz files.
*/
local void check_header(s)
gz_stream *s;
{
int method; /* method byte */
int flags; /* flags byte */
uInt len;
int c;
/* Check the gzip magic header */
for (len = 0; len < 2; len++) {
c = get_byte(s);
if (c != gz_magic[len]) {
if (len != 0) s->stream.avail_in++, s->stream.next_in--;
if (c != EOF) {
s->stream.avail_in++, s->stream.next_in--;
s->transparent = 1;
}
s->z_err = s->stream.avail_in != 0 ? Z_OK : Z_STREAM_END;
return;
}
}
method = get_byte(s);
flags = get_byte(s);
if (method != Z_DEFLATED || (flags & RESERVED) != 0) {
s->z_err = Z_DATA_ERROR;
return;
}
/* Discard time, xflags and OS code: */
for (len = 0; len < 6; len++) (void)get_byte(s);
if ((flags & EXTRA_FIELD) != 0) { /* skip the extra field */
len = (uInt)get_byte(s);
len += ((uInt)get_byte(s))<<8;
/* len is garbage if EOF but the loop below will quit anyway */
while (len-- != 0 && get_byte(s) != EOF) ;
}
if ((flags & ORIG_NAME) != 0) { /* skip the original file name */
while ((c = get_byte(s)) != 0 && c != EOF) ;
}
if ((flags & COMMENT) != 0) { /* skip the .gz file comment */
while ((c = get_byte(s)) != 0 && c != EOF) ;
}
if ((flags & HEAD_CRC) != 0) { /* skip the header crc */
for (len = 0; len < 2; len++) (void)get_byte(s);
}
s->z_err = s->z_eof ? Z_DATA_ERROR : Z_OK;
}
/* ===========================================================================
* Cleanup then free the given gz_stream. Return a zlib error code.
Try freeing in the reverse order of allocations.
*/
local int destroy (s)
gz_stream *s;
{
int err = Z_OK;
if (!s) return Z_STREAM_ERROR;
TRYFREE(s->msg);
if (s->stream.state != NULL) {
if (s->mode == 'w') {
#ifdef NO_DEFLATE
err = Z_STREAM_ERROR;
#else
err = deflateEnd(&(s->stream));
#endif
} else if (s->mode == 'r') {
err = inflateEnd(&(s->stream));
}
}
if (s->file != NULL && fclose(s->file)) {
#ifdef ESPIPE
if (errno != ESPIPE) /* fclose is broken for pipes in HP/UX */
#endif
err = Z_ERRNO;
}
if (s->z_err < 0) err = s->z_err;
TRYFREE(s->inbuf);
TRYFREE(s->outbuf);
TRYFREE(s->path);
TRYFREE(s);
return err;
}
/* ===========================================================================
Reads the given number of uncompressed bytes from the compressed file.
gzread returns the number of bytes actually read (0 for end of file).
*/
int ZEXPORT gzread (file, buf, len)
gzFile file;
voidp buf;
unsigned len;
{
gz_stream *s = (gz_stream*)file;
Bytef *start = (Bytef*)buf; /* starting point for crc computation */
Byte *next_out; /* == stream.next_out but not forced far (for MSDOS) */
if (s == NULL || s->mode != 'r') return Z_STREAM_ERROR;
if (s->z_err == Z_DATA_ERROR || s->z_err == Z_ERRNO) return -1;
if (s->z_err == Z_STREAM_END) return 0; /* EOF */
next_out = (Byte*)buf;
s->stream.next_out = (Bytef*)buf;
s->stream.avail_out = len;
while (s->stream.avail_out != 0) {
if (s->transparent) {
/* Copy first the lookahead bytes: */
uInt n = s->stream.avail_in;
if (n > s->stream.avail_out) n = s->stream.avail_out;
if (n > 0) {
zmemcpy(s->stream.next_out, s->stream.next_in, n);
next_out += n;
s->stream.next_out = next_out;
s->stream.next_in += n;
s->stream.avail_out -= n;
s->stream.avail_in -= n;
}
if (s->stream.avail_out > 0) {
s->stream.avail_out -= fread(next_out, 1, s->stream.avail_out,
s->file);
}
len -= s->stream.avail_out;
s->stream.total_in += (uLong)len;
s->stream.total_out += (uLong)len;
if (len == 0) s->z_eof = 1;
return (int)len;
}
if (s->stream.avail_in == 0 && !s->z_eof) {
errno = 0;
s->stream.avail_in = fread(s->inbuf, 1, Z_BUFSIZE, s->file);
if (s->stream.avail_in == 0) {
s->z_eof = 1;
if (ferror(s->file)) {
s->z_err = Z_ERRNO;
break;
}
}
s->stream.next_in = s->inbuf;
}
s->z_err = inflate(&(s->stream), Z_NO_FLUSH);
if (s->z_err == Z_STREAM_END) {
/* Check CRC and original size */
s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
start = s->stream.next_out;
if (getLong(s) != s->crc) {
s->z_err = Z_DATA_ERROR;
} else {
(void)getLong(s);
/* The uncompressed length returned by above getlong() may
* be different from s->stream.total_out) in case of
* concatenated .gz files. Check for such files:
*/
check_header(s);
if (s->z_err == Z_OK) {
uLong total_in = s->stream.total_in;
uLong total_out = s->stream.total_out;
inflateReset(&(s->stream));
s->stream.total_in = total_in;
s->stream.total_out = total_out;
s->crc = crc32(0L, Z_NULL, 0);
}
}
}
if (s->z_err != Z_OK || s->z_eof) break;
}
s->crc = crc32(s->crc, start, (uInt)(s->stream.next_out - start));
return (int)(len - s->stream.avail_out);
}
/* ===========================================================================
Reads one byte from the compressed file. gzgetc returns this byte
or -1 in case of end of file or error.
*/
int ZEXPORT gzgetc(file)
gzFile file;
{
unsigned char c;
return gzread(file, &c, 1) == 1 ? c : -1;
}
/* ===========================================================================
Reads bytes from the compressed file until len-1 characters are
read, or a newline character is read and transferred to buf, or an
end-of-file condition is encountered. The string is then terminated
with a null character.
gzgets returns buf, or Z_NULL in case of error.
The current implementation is not optimized at all.
*/
char * ZEXPORT gzgets(file, buf, len)
gzFile file;
char *buf;
int len;
{
char *b = buf;
if (buf == Z_NULL || len <= 0) return Z_NULL;
while (--len > 0 && gzread(file, buf, 1) == 1 && *buf++ != '\n') ;
*buf = '\0';
return b == buf && len > 0 ? Z_NULL : b;
}
#ifndef NO_DEFLATE
/* ===========================================================================
Writes the given number of uncompressed bytes into the compressed file.
gzwrite returns the number of bytes actually written (0 in case of error).
*/
int ZEXPORT gzwrite (file, buf, len)
gzFile file;
const voidp buf;
unsigned len;
{
gz_stream *s = (gz_stream*)file;
if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
s->stream.next_in = (Bytef*)buf;
s->stream.avail_in = len;
while (s->stream.avail_in != 0) {
if (s->stream.avail_out == 0) {
s->stream.next_out = s->outbuf;
if (fwrite(s->outbuf, 1, Z_BUFSIZE, s->file) != Z_BUFSIZE) {
s->z_err = Z_ERRNO;
break;
}
s->stream.avail_out = Z_BUFSIZE;
}
s->z_err = deflate(&(s->stream), Z_NO_FLUSH);
if (s->z_err != Z_OK) break;
}
s->crc = crc32(s->crc, (const Bytef *)buf, len);
return (int)(len - s->stream.avail_in);
}
/* ===========================================================================
Converts, formats, and writes the args to the compressed file under
control of the format string, as in fprintf. gzprintf returns the number of
uncompressed bytes actually written (0 in case of error).
*/
#ifdef STDC
#include <stdarg.h>
int ZEXPORTVA gzprintf (gzFile file, const char *format, /* args */ ...)
{
char buf[Z_PRINTF_BUFSIZE];
va_list va;
int len;
va_start(va, format);
#ifdef HAS_vsnprintf
(void)vsnprintf(buf, sizeof(buf), format, va);
#else
(void)vsprintf(buf, format, va);
#endif
va_end(va);
len = strlen(buf); /* some *sprintf don't return the nb of bytes written */
if (len <= 0) return 0;
return gzwrite(file, buf, (unsigned)len);
}
#else /* not ANSI C */
int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
gzFile file;
const char *format;
int a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
a11, a12, a13, a14, a15, a16, a17, a18, a19, a20;
{
char buf[Z_PRINTF_BUFSIZE];
int len;
#ifdef HAS_snprintf
snprintf(buf, sizeof(buf), format, a1, a2, a3, a4, a5, a6, a7, a8,
a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
#else
sprintf(buf, format, a1, a2, a3, a4, a5, a6, a7, a8,
a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20);
#endif
len = strlen(buf); /* old sprintf doesn't return the nb of bytes written */
if (len <= 0) return 0;
return gzwrite(file, buf, len);
}
#endif
/* ===========================================================================
Writes c, converted to an unsigned char, into the compressed file.
gzputc returns the value that was written, or -1 in case of error.
*/
int ZEXPORT gzputc(file, c)
gzFile file;
int c;
{
unsigned char cc = (unsigned char) c; /* required for big endian systems */
return gzwrite(file, &cc, 1) == 1 ? (int)cc : -1;
}
/* ===========================================================================
Writes the given null-terminated string to the compressed file, excluding
the terminating null character.
gzputs returns the number of characters written, or -1 in case of error.
*/
int ZEXPORT gzputs(file, s)
gzFile file;
const char *s;
{
return gzwrite(file, (char*)s, (unsigned)strlen(s));
}
/* ===========================================================================
Flushes all pending output into the compressed file. The parameter
flush is as in the deflate() function.
*/
local int do_flush (file, flush)
gzFile file;
int flush;
{
uInt len;
int done = 0;
gz_stream *s = (gz_stream*)file;
if (s == NULL || s->mode != 'w') return Z_STREAM_ERROR;
s->stream.avail_in = 0; /* should be zero already anyway */
for (;;) {
len = Z_BUFSIZE - s->stream.avail_out;
if (len != 0) {
if ((uInt)fwrite(s->outbuf, 1, len, s->file) != len) {
s->z_err = Z_ERRNO;
return Z_ERRNO;
}
s->stream.next_out = s->outbuf;
s->stream.avail_out = Z_BUFSIZE;
}
if (done) break;
s->z_err = deflate(&(s->stream), flush);
/* Ignore the second of two consecutive flushes: */
if (len == 0 && s->z_err == Z_BUF_ERROR) s->z_err = Z_OK;
/* deflate has finished flushing only when it hasn't used up
* all the available space in the output buffer:
*/
done = (s->stream.avail_out != 0 || s->z_err == Z_STREAM_END);
if (s->z_err != Z_OK && s->z_err != Z_STREAM_END) break;
}
return s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
}
int ZEXPORT gzflush (file, flush)
gzFile file;
int flush;
{
gz_stream *s = (gz_stream*)file;
int err = do_flush (file, flush);
if (err) return err;
fflush(s->file);
return s->z_err == Z_STREAM_END ? Z_OK : s->z_err;
}
#endif /* NO_DEFLATE */
/* ===========================================================================
Sets the starting position for the next gzread or gzwrite on the given
compressed file. The offset represents a number of bytes in the
gzseek returns the resulting offset location as measured in bytes from
the beginning of the uncompressed stream, or -1 in case of error.
SEEK_END is not implemented, returns error.
In this version of the library, gzseek can be extremely slow.
*/
z_off_t ZEXPORT gzseek (file, offset, whence)
gzFile file;
z_off_t offset;
int whence;
{
gz_stream *s = (gz_stream*)file;
if (s == NULL || whence == SEEK_END ||
s->z_err == Z_ERRNO || s->z_err == Z_DATA_ERROR) {
return -1L;
}
if (s->mode == 'w') {
#ifdef NO_DEFLATE
return -1L;
#else
if (whence == SEEK_SET) {
offset -= s->stream.total_in;
}
if (offset < 0) return -1L;
/* At this point, offset is the number of zero bytes to write. */
if (s->inbuf == Z_NULL) {
s->inbuf = (Byte*)ALLOC(Z_BUFSIZE); /* for seeking */
zmemzero(s->inbuf, Z_BUFSIZE);
}
while (offset > 0) {
uInt size = Z_BUFSIZE;
if (offset < Z_BUFSIZE) size = (uInt)offset;
size = gzwrite(file, s->inbuf, size);
if (size == 0) return -1L;
offset -= size;
}
return (z_off_t)s->stream.total_in;
#endif
}
/* Rest of function is for reading only */
/* compute absolute position */
if (whence == SEEK_CUR) {
offset += s->stream.total_out;
}
if (offset < 0) return -1L;
if (s->transparent) {
/* map to fseek */
s->stream.avail_in = 0;
s->stream.next_in = s->inbuf;
if (fseek(s->file, offset, SEEK_SET) < 0) return -1L;
s->stream.total_in = s->stream.total_out = (uLong)offset;
return offset;
}
/* For a negative seek, rewind and use positive seek */
if ((uLong)offset >= s->stream.total_out) {
offset -= s->stream.total_out;
} else if (gzrewind(file) < 0) {
return -1L;
}
/* offset is now the number of bytes to skip. */
if (offset != 0 && s->outbuf == Z_NULL) {
s->outbuf = (Byte*)ALLOC(Z_BUFSIZE);
}
while (offset > 0) {
int size = Z_BUFSIZE;
if (offset < Z_BUFSIZE) size = (int)offset;
size = gzread(file, s->outbuf, (uInt)size);
if (size <= 0) return -1L;
offset -= size;
}
return (z_off_t)s->stream.total_out;
}
/* ===========================================================================
Rewinds input file.
*/
int ZEXPORT gzrewind (file)
gzFile file;
{
gz_stream *s = (gz_stream*)file;
if (s == NULL || s->mode != 'r') return -1;
s->z_err = Z_OK;
s->z_eof = 0;
s->stream.avail_in = 0;
s->stream.next_in = s->inbuf;
s->crc = crc32(0L, Z_NULL, 0);
if (s->startpos == 0) { /* not a compressed file */
rewind(s->file);
return 0;
}
(void) inflateReset(&s->stream);
return fseek(s->file, s->startpos, SEEK_SET);
}
/* ===========================================================================
Returns the starting position for the next gzread or gzwrite on the
given compressed file. This position represents a number of bytes in the
uncompressed data stream.
*/
z_off_t ZEXPORT gztell (file)
gzFile file;
{
return gzseek(file, 0L, SEEK_CUR);
}
/* ===========================================================================
Returns 1 when EOF has previously been detected reading the given
input stream, otherwise zero.
*/
int ZEXPORT gzeof (file)
gzFile file;
{
gz_stream *s = (gz_stream*)file;
return (s == NULL || s->mode != 'r') ? 0 : s->z_eof;
}
/* ===========================================================================
Outputs a long in LSB order to the given file
*/
local void putLong (file, x)
FILE *file;
uLong x;
{
int n;
for (n = 0; n < 4; n++) {
fputc((int)(x & 0xff), file);
x >>= 8;
}
}
/* ===========================================================================
Reads a long in LSB order from the given gz_stream. Sets z_err in case
of error.
*/
local uLong getLong (s)
gz_stream *s;
{
uLong x = (uLong)get_byte(s);
int c;
x += ((uLong)get_byte(s))<<8;
x += ((uLong)get_byte(s))<<16;
c = get_byte(s);
if (c == EOF) s->z_err = Z_DATA_ERROR;
x += ((uLong)c)<<24;
return x;
}
/* ===========================================================================
Flushes all pending output if necessary, closes the compressed file
and deallocates all the (de)compression state.
*/
int ZEXPORT gzclose (file)
gzFile file;
{
int err;
gz_stream *s = (gz_stream*)file;
if (s == NULL) return Z_STREAM_ERROR;
if (s->mode == 'w') {
#ifdef NO_DEFLATE
return Z_STREAM_ERROR;
#else
err = do_flush (file, Z_FINISH);
if (err != Z_OK) return destroy((gz_stream*)file);
putLong (s->file, s->crc);
putLong (s->file, s->stream.total_in);
#endif
}
return destroy((gz_stream*)file);
}
/* ===========================================================================
Returns the error message for the last error which occured on the
given compressed file. errnum is set to zlib error number. If an
error occured in the file system and not in the compression library,
errnum is set to Z_ERRNO and the application may consult errno
to get the exact error code.
*/
const char* ZEXPORT gzerror (file, errnum)
gzFile file;
int *errnum;
{
char *m;
gz_stream *s = (gz_stream*)file;
if (s == NULL) {
*errnum = Z_STREAM_ERROR;
return (const char*)ERR_MSG(Z_STREAM_ERROR);
}
*errnum = s->z_err;
if (*errnum == Z_OK) return (const char*)"";
m = (char*)(*errnum == Z_ERRNO ? zstrerror(errno) : s->stream.msg);
if (m == NULL || *m == '\0') m = (char*)ERR_MSG(s->z_err);
TRYFREE(s->msg);
s->msg = (char*)ALLOC(strlen(s->path) + strlen(m) + 3);
strcpy(s->msg, s->path);
strcat(s->msg, ": ");
strcat(s->msg, m);
return (const char*)s->msg;
}

View File

@@ -1,402 +0,0 @@
/* infblock.c -- interpret and process block types to last block
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "infblock.h"
#include "inftrees.h"
#include "infcodes.h"
#include "infutil.h"
struct inflate_codes_state {int dummy;}; /* for buggy compilers */
/* simplify the use of the inflate_huft type with some defines */
#define exop word.what.Exop
#define bits word.what.Bits
/* Table for deflate from PKZIP's appnote.txt. */
local const uInt border[] = { /* Order of the bit length code lengths */
16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15};
/*
Notes beyond the 1.93a appnote.txt:
1. Distance pointers never point before the beginning of the output
stream.
2. Distance pointers can point back across blocks, up to 32k away.
3. There is an implied maximum of 7 bits for the bit length table and
15 bits for the actual data.
4. If only one code exists, then it is encoded using one bit. (Zero
would be more efficient, but perhaps a little confusing.) If two
codes exist, they are coded using one bit each (0 and 1).
5. There is no way of sending zero distance codes--a dummy must be
sent if there are none. (History: a pre 2.0 version of PKZIP would
store blocks with no distance codes, but this was discovered to be
too harsh a criterion.) Valid only for 1.93a. 2.04c does allow
zero distance codes, which is sent as one code of zero bits in
length.
6. There are up to 286 literal/length codes. Code 256 represents the
end-of-block. Note however that the static length tree defines
288 codes just to fill out the Huffman codes. Codes 286 and 287
cannot be used though, since there is no length base or extra bits
defined for them. Similarily, there are up to 30 distance codes.
However, static trees define 32 codes (all 5 bits) to fill out the
Huffman codes, but the last two had better not show up in the data.
7. Unzip can check dynamic Huffman blocks for complete code sets.
The exception is that a single code would not be complete (see #4).
8. The five bits following the block type is really the number of
literal codes sent minus 257.
9. Length codes 8,16,16 are interpreted as 13 length codes of 8 bits
(1+6+6). Therefore, to output three times the length, you output
three codes (1+1+1), whereas to output four times the same length,
you only need two codes (1+3). Hmm.
10. In the tree reconstruction algorithm, Code = Code + Increment
only if BitLength(i) is not zero. (Pretty obvious.)
11. Correction: 4 Bits: # of Bit Length codes - 4 (4 - 19)
12. Note: length code 284 can represent 227-258, but length code 285
really is 258. The last length deserves its own, short code
since it gets used a lot in very redundant files. The length
258 is special since 258 - 3 (the min match length) is 255.
13. The literal/length and distance code bit lengths are read as a
single stream of lengths. It is possible (and advantageous) for
a repeat code (16, 17, or 18) to go across the boundary between
the two sets of lengths.
*/
void inflate_blocks_reset(s, z, c)
inflate_blocks_statef *s;
z_streamp z;
uLongf *c;
{
if (c != Z_NULL)
*c = s->check;
if (s->mode == BTREE || s->mode == DTREE)
ZFREE(z, s->sub.trees.blens);
if (s->mode == CODES)
inflate_codes_free(s->sub.decode.codes, z);
s->mode = TYPE;
s->bitk = 0;
s->bitb = 0;
s->read = s->write = s->window;
if (s->checkfn != Z_NULL)
z->adler = s->check = (*s->checkfn)(0L, (const Bytef *)Z_NULL, 0);
Tracev((stderr, "inflate: blocks reset\n"));
}
inflate_blocks_statef *inflate_blocks_new(z, c, w)
z_streamp z;
check_func c;
uInt w;
{
inflate_blocks_statef *s;
if ((s = (inflate_blocks_statef *)ZALLOC
(z,1,sizeof(struct inflate_blocks_state))) == Z_NULL)
return s;
if ((s->hufts =
(inflate_huft *)ZALLOC(z, sizeof(inflate_huft), MANY)) == Z_NULL)
{
ZFREE(z, s);
return Z_NULL;
}
if ((s->window = (Bytef *)ZALLOC(z, 1, w)) == Z_NULL)
{
ZFREE(z, s->hufts);
ZFREE(z, s);
return Z_NULL;
}
s->end = s->window + w;
s->checkfn = c;
s->mode = TYPE;
Tracev((stderr, "inflate: blocks allocated\n"));
inflate_blocks_reset(s, z, Z_NULL);
return s;
}
int inflate_blocks(s, z, r)
inflate_blocks_statef *s;
z_streamp z;
int r;
{
uInt t; /* temporary storage */
uLong b; /* bit buffer */
uInt k; /* bits in bit buffer */
Bytef *p; /* input data pointer */
uInt n; /* bytes available there */
Bytef *q; /* output window write pointer */
uInt m; /* bytes to end of window or read pointer */
/* copy input/output information to locals (UPDATE macro restores) */
LOAD
/* process input based on current state */
while (1) switch (s->mode)
{
case TYPE:
NEEDBITS(3)
t = (uInt)b & 7;
s->last = t & 1;
switch (t >> 1)
{
case 0: /* stored */
Tracev((stderr, "inflate: stored block%s\n",
s->last ? " (last)" : ""));
DUMPBITS(3)
t = k & 7; /* go to byte boundary */
DUMPBITS(t)
s->mode = LENS; /* get length of stored block */
break;
case 1: /* fixed */
Tracev((stderr, "inflate: fixed codes block%s\n",
s->last ? " (last)" : ""));
{
uInt bl, bd;
inflate_huft *tl, *td;
inflate_trees_fixed(&bl, &bd, &tl, &td, z);
s->sub.decode.codes = inflate_codes_new(bl, bd, tl, td, z);
if (s->sub.decode.codes == Z_NULL)
{
r = Z_MEM_ERROR;
LEAVE
}
}
DUMPBITS(3)
s->mode = CODES;
break;
case 2: /* dynamic */
Tracev((stderr, "inflate: dynamic codes block%s\n",
s->last ? " (last)" : ""));
DUMPBITS(3)
s->mode = TABLE;
break;
case 3: /* illegal */
DUMPBITS(3)
s->mode = BAD;
z->msg = (char*)"invalid block type";
r = Z_DATA_ERROR;
LEAVE
}
break;
case LENS:
NEEDBITS(32)
if ((((~b) >> 16) & 0xffff) != (b & 0xffff))
{
s->mode = BAD;
z->msg = (char*)"invalid stored block lengths";
r = Z_DATA_ERROR;
LEAVE
}
s->sub.left = (uInt)b & 0xffff;
b = k = 0; /* dump bits */
Tracev((stderr, "inflate: stored length %u\n", s->sub.left));
s->mode = s->sub.left ? STORED : (s->last ? DRY : TYPE);
break;
case STORED:
if (n == 0)
LEAVE
NEEDOUT
t = s->sub.left;
if (t > n) t = n;
if (t > m) t = m;
zmemcpy(q, p, t);
p += t; n -= t;
q += t; m -= t;
if ((s->sub.left -= t) != 0)
break;
Tracev((stderr, "inflate: stored end, %lu total out\n",
z->total_out + (q >= s->read ? q - s->read :
(s->end - s->read) + (q - s->window))));
s->mode = s->last ? DRY : TYPE;
break;
case TABLE:
NEEDBITS(14)
s->sub.trees.table = t = (uInt)b & 0x3fff;
#ifndef PKZIP_BUG_WORKAROUND
if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29)
{
s->mode = BAD;
z->msg = (char*)"too many length or distance symbols";
r = Z_DATA_ERROR;
LEAVE
}
#endif
t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);
if ((s->sub.trees.blens = (uIntf*)ZALLOC(z, t, sizeof(uInt))) == Z_NULL)
{
r = Z_MEM_ERROR;
LEAVE
}
DUMPBITS(14)
s->sub.trees.index = 0;
Tracev((stderr, "inflate: table sizes ok\n"));
s->mode = BTREE;
case BTREE:
while (s->sub.trees.index < 4 + (s->sub.trees.table >> 10))
{
NEEDBITS(3)
s->sub.trees.blens[border[s->sub.trees.index++]] = (uInt)b & 7;
DUMPBITS(3)
}
while (s->sub.trees.index < 19)
s->sub.trees.blens[border[s->sub.trees.index++]] = 0;
s->sub.trees.bb = 7;
t = inflate_trees_bits(s->sub.trees.blens, &s->sub.trees.bb,
&s->sub.trees.tb, s->hufts, z);
if (t != Z_OK)
{
r = t;
if (r == Z_DATA_ERROR)
{
ZFREE(z, s->sub.trees.blens);
s->mode = BAD;
}
LEAVE
}
s->sub.trees.index = 0;
Tracev((stderr, "inflate: bits tree ok\n"));
s->mode = DTREE;
case DTREE:
while (t = s->sub.trees.table,
s->sub.trees.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))
{
inflate_huft *h;
uInt i, j, c;
t = s->sub.trees.bb;
NEEDBITS(t)
h = s->sub.trees.tb + ((uInt)b & inflate_mask[t]);
t = h->bits;
c = h->base;
if (c < 16)
{
DUMPBITS(t)
s->sub.trees.blens[s->sub.trees.index++] = c;
}
else /* c == 16..18 */
{
i = c == 18 ? 7 : c - 14;
j = c == 18 ? 11 : 3;
NEEDBITS(t + i)
DUMPBITS(t)
j += (uInt)b & inflate_mask[i];
DUMPBITS(i)
i = s->sub.trees.index;
t = s->sub.trees.table;
if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) ||
(c == 16 && i < 1))
{
ZFREE(z, s->sub.trees.blens);
s->mode = BAD;
z->msg = (char*)"invalid bit length repeat";
r = Z_DATA_ERROR;
LEAVE
}
c = c == 16 ? s->sub.trees.blens[i - 1] : 0;
do {
s->sub.trees.blens[i++] = c;
} while (--j);
s->sub.trees.index = i;
}
}
s->sub.trees.tb = Z_NULL;
{
uInt bl, bd;
inflate_huft *tl, *td;
inflate_codes_statef *c;
bl = 9; /* must be <= 9 for lookahead assumptions */
bd = 6; /* must be <= 9 for lookahead assumptions */
t = s->sub.trees.table;
t = inflate_trees_dynamic(257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f),
s->sub.trees.blens, &bl, &bd, &tl, &td,
s->hufts, z);
if (t != Z_OK)
{
if (t == (uInt)Z_DATA_ERROR)
{
ZFREE(z, s->sub.trees.blens);
s->mode = BAD;
}
r = t;
LEAVE
}
Tracev((stderr, "inflate: trees ok\n"));
if ((c = inflate_codes_new(bl, bd, tl, td, z)) == Z_NULL)
{
r = Z_MEM_ERROR;
LEAVE
}
s->sub.decode.codes = c;
}
ZFREE(z, s->sub.trees.blens);
s->mode = CODES;
case CODES:
UPDATE
if ((r = inflate_codes(s, z, r)) != Z_STREAM_END)
return inflate_flush(s, z, r);
r = Z_OK;
inflate_codes_free(s->sub.decode.codes, z);
LOAD
Tracev((stderr, "inflate: codes end, %lu total out\n",
z->total_out + (q >= s->read ? q - s->read :
(s->end - s->read) + (q - s->window))));
if (!s->last)
{
s->mode = TYPE;
break;
}
s->mode = DRY;
case DRY:
FLUSH
if (s->read != s->write)
LEAVE
s->mode = DONE;
case DONE:
r = Z_STREAM_END;
LEAVE
case BAD:
r = Z_DATA_ERROR;
LEAVE
default:
r = Z_STREAM_ERROR;
LEAVE
}
}
int inflate_blocks_free(s, z)
inflate_blocks_statef *s;
z_streamp z;
{
inflate_blocks_reset(s, z, Z_NULL);
ZFREE(z, s->window);
ZFREE(z, s->hufts);
ZFREE(z, s);
Tracev((stderr, "inflate: blocks freed\n"));
return Z_OK;
}
void inflate_set_dictionary(s, d, n)
inflate_blocks_statef *s;
const Bytef *d;
uInt n;
{
zmemcpy(s->window, d, n);
s->read = s->write = s->window + n;
}
/* Returns true if inflate is currently at the end of a block generated
* by Z_SYNC_FLUSH or Z_FULL_FLUSH.
* IN assertion: s != Z_NULL
*/
int inflate_blocks_sync_point(s)
inflate_blocks_statef *s;
{
return s->mode == LENS;
}

View File

@@ -1,39 +0,0 @@
/* infblock.h -- header to use infblock.c
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
struct inflate_blocks_state;
typedef struct inflate_blocks_state FAR inflate_blocks_statef;
extern inflate_blocks_statef * inflate_blocks_new OF((
z_streamp z,
check_func c, /* check function */
uInt w)); /* window size */
extern int inflate_blocks OF((
inflate_blocks_statef *,
z_streamp ,
int)); /* initial return code */
extern void inflate_blocks_reset OF((
inflate_blocks_statef *,
z_streamp ,
uLongf *)); /* check value on output */
extern int inflate_blocks_free OF((
inflate_blocks_statef *,
z_streamp));
extern void inflate_set_dictionary OF((
inflate_blocks_statef *s,
const Bytef *d, /* dictionary */
uInt n)); /* dictionary length */
extern int inflate_blocks_sync_point OF((
inflate_blocks_statef *s));

View File

@@ -1,251 +0,0 @@
/* infcodes.c -- process literals and length/distance pairs
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "inftrees.h"
#include "infblock.h"
#include "infcodes.h"
#include "infutil.h"
#include "inffast.h"
/* simplify the use of the inflate_huft type with some defines */
#define exop word.what.Exop
#define bits word.what.Bits
typedef enum { /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
START, /* x: set up for LEN */
LEN, /* i: get length/literal/eob next */
LENEXT, /* i: getting length extra (have base) */
DIST, /* i: get distance next */
DISTEXT, /* i: getting distance extra */
COPY, /* o: copying bytes in window, waiting for space */
LIT, /* o: got literal, waiting for output space */
WASH, /* o: got eob, possibly still output waiting */
END, /* x: got eob and all data flushed */
BADCODE} /* x: got error */
inflate_codes_mode;
/* inflate codes private state */
struct inflate_codes_state {
/* mode */
inflate_codes_mode mode; /* current inflate_codes mode */
/* mode dependent information */
uInt len;
union {
struct {
inflate_huft *tree; /* pointer into tree */
uInt need; /* bits needed */
} code; /* if LEN or DIST, where in tree */
uInt lit; /* if LIT, literal */
struct {
uInt get; /* bits to get for extra */
uInt dist; /* distance back to copy from */
} copy; /* if EXT or COPY, where and how much */
} sub; /* submode */
/* mode independent information */
Byte lbits; /* ltree bits decoded per branch */
Byte dbits; /* dtree bits decoder per branch */
inflate_huft *ltree; /* literal/length/eob tree */
inflate_huft *dtree; /* distance tree */
};
inflate_codes_statef *inflate_codes_new(bl, bd, tl, td, z)
uInt bl, bd;
inflate_huft *tl;
inflate_huft *td; /* need separate declaration for Borland C++ */
z_streamp z;
{
inflate_codes_statef *c;
if ((c = (inflate_codes_statef *)
ZALLOC(z,1,sizeof(struct inflate_codes_state))) != Z_NULL)
{
c->mode = START;
c->lbits = (Byte)bl;
c->dbits = (Byte)bd;
c->ltree = tl;
c->dtree = td;
Tracev((stderr, "inflate: codes new\n"));
}
return c;
}
int inflate_codes(s, z, r)
inflate_blocks_statef *s;
z_streamp z;
int r;
{
uInt j; /* temporary storage */
inflate_huft *t; /* temporary pointer */
uInt e; /* extra bits or operation */
uLong b; /* bit buffer */
uInt k; /* bits in bit buffer */
Bytef *p; /* input data pointer */
uInt n; /* bytes available there */
Bytef *q; /* output window write pointer */
uInt m; /* bytes to end of window or read pointer */
Bytef *f; /* pointer to copy strings from */
inflate_codes_statef *c = s->sub.decode.codes; /* codes state */
/* copy input/output information to locals (UPDATE macro restores) */
LOAD
/* process input and output based on current state */
while (1) switch (c->mode)
{ /* waiting for "i:"=input, "o:"=output, "x:"=nothing */
case START: /* x: set up for LEN */
#ifndef SLOW
if (m >= 258 && n >= 10)
{
UPDATE
r = inflate_fast(c->lbits, c->dbits, c->ltree, c->dtree, s, z);
LOAD
if (r != Z_OK)
{
c->mode = r == Z_STREAM_END ? WASH : BADCODE;
break;
}
}
#endif /* !SLOW */
c->sub.code.need = c->lbits;
c->sub.code.tree = c->ltree;
c->mode = LEN;
case LEN: /* i: get length/literal/eob next */
j = c->sub.code.need;
NEEDBITS(j)
t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
DUMPBITS(t->bits)
e = (uInt)(t->exop);
if (e == 0) /* literal */
{
c->sub.lit = t->base;
Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
"inflate: literal '%c'\n" :
"inflate: literal 0x%02x\n", t->base));
c->mode = LIT;
break;
}
if (e & 16) /* length */
{
c->sub.copy.get = e & 15;
c->len = t->base;
c->mode = LENEXT;
break;
}
if ((e & 64) == 0) /* next table */
{
c->sub.code.need = e;
c->sub.code.tree = t + t->base;
break;
}
if (e & 32) /* end of block */
{
Tracevv((stderr, "inflate: end of block\n"));
c->mode = WASH;
break;
}
c->mode = BADCODE; /* invalid code */
z->msg = (char*)"invalid literal/length code";
r = Z_DATA_ERROR;
LEAVE
case LENEXT: /* i: getting length extra (have base) */
j = c->sub.copy.get;
NEEDBITS(j)
c->len += (uInt)b & inflate_mask[j];
DUMPBITS(j)
c->sub.code.need = c->dbits;
c->sub.code.tree = c->dtree;
Tracevv((stderr, "inflate: length %u\n", c->len));
c->mode = DIST;
case DIST: /* i: get distance next */
j = c->sub.code.need;
NEEDBITS(j)
t = c->sub.code.tree + ((uInt)b & inflate_mask[j]);
DUMPBITS(t->bits)
e = (uInt)(t->exop);
if (e & 16) /* distance */
{
c->sub.copy.get = e & 15;
c->sub.copy.dist = t->base;
c->mode = DISTEXT;
break;
}
if ((e & 64) == 0) /* next table */
{
c->sub.code.need = e;
c->sub.code.tree = t + t->base;
break;
}
c->mode = BADCODE; /* invalid code */
z->msg = (char*)"invalid distance code";
r = Z_DATA_ERROR;
LEAVE
case DISTEXT: /* i: getting distance extra */
j = c->sub.copy.get;
NEEDBITS(j)
c->sub.copy.dist += (uInt)b & inflate_mask[j];
DUMPBITS(j)
Tracevv((stderr, "inflate: distance %u\n", c->sub.copy.dist));
c->mode = COPY;
case COPY: /* o: copying bytes in window, waiting for space */
f = q - c->sub.copy.dist;
while (f < s->window) /* modulo window size-"while" instead */
f += s->end - s->window; /* of "if" handles invalid distances */
while (c->len)
{
NEEDOUT
OUTBYTE(*f++)
if (f == s->end)
f = s->window;
c->len--;
}
c->mode = START;
break;
case LIT: /* o: got literal, waiting for output space */
NEEDOUT
OUTBYTE(c->sub.lit)
c->mode = START;
break;
case WASH: /* o: got eob, possibly more output */
if (k > 7) /* return unused byte, if any */
{
Assert(k < 16, "inflate_codes grabbed too many bytes")
k -= 8;
n++;
p--; /* can always return one */
}
FLUSH
if (s->read != s->write)
LEAVE
c->mode = END;
case END:
r = Z_STREAM_END;
LEAVE
case BADCODE: /* x: got error */
r = Z_DATA_ERROR;
LEAVE
default:
r = Z_STREAM_ERROR;
LEAVE
}
#ifdef NEED_DUMMY_RETURN
return Z_STREAM_ERROR; /* Some dumb compilers complain without this */
#endif
}
void inflate_codes_free(c, z)
inflate_codes_statef *c;
z_streamp z;
{
ZFREE(z, c);
Tracev((stderr, "inflate: codes free\n"));
}

View File

@@ -1,27 +0,0 @@
/* infcodes.h -- header to use infcodes.c
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
struct inflate_codes_state;
typedef struct inflate_codes_state FAR inflate_codes_statef;
extern inflate_codes_statef *inflate_codes_new OF((
uInt, uInt,
inflate_huft *, inflate_huft *,
z_streamp ));
extern int inflate_codes OF((
inflate_blocks_statef *,
z_streamp ,
int));
extern void inflate_codes_free OF((
inflate_codes_statef *,
z_streamp ));

View File

@@ -1,183 +0,0 @@
/* inffast.c -- process literals and length/distance pairs fast
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "inftrees.h"
#include "infblock.h"
#include "infcodes.h"
#include "infutil.h"
#include "inffast.h"
struct inflate_codes_state {int dummy;}; /* for buggy compilers */
/* simplify the use of the inflate_huft type with some defines */
#define exop word.what.Exop
#define bits word.what.Bits
/* macros for bit input with no checking and for returning unused bytes */
#define GRABBITS(j) {while(k<(j)){b|=((uLong)NEXTBYTE)<<k;k+=8;}}
#define UNGRAB {c=z->avail_in-n;c=(k>>3)<c?k>>3:c;n+=c;p-=c;k-=c<<3;}
/* Called with number of bytes left to write in window at least 258
(the maximum string length) and number of input bytes available
at least ten. The ten bytes are six bytes for the longest length/
distance pair plus four bytes for overloading the bit buffer. */
int inflate_fast(bl, bd, tl, td, s, z)
uInt bl, bd;
inflate_huft *tl;
inflate_huft *td; /* need separate declaration for Borland C++ */
inflate_blocks_statef *s;
z_streamp z;
{
inflate_huft *t; /* temporary pointer */
uInt e; /* extra bits or operation */
uLong b; /* bit buffer */
uInt k; /* bits in bit buffer */
Bytef *p; /* input data pointer */
uInt n; /* bytes available there */
Bytef *q; /* output window write pointer */
uInt m; /* bytes to end of window or read pointer */
uInt ml; /* mask for literal/length tree */
uInt md; /* mask for distance tree */
uInt c; /* bytes to copy */
uInt d; /* distance back to copy from */
Bytef *r; /* copy source pointer */
/* load input, output, bit values */
LOAD
/* initialize masks */
ml = inflate_mask[bl];
md = inflate_mask[bd];
/* do until not enough input or output space for fast loop */
do { /* assume called with m >= 258 && n >= 10 */
/* get literal/length code */
GRABBITS(20) /* max bits for literal/length code */
if ((e = (t = tl + ((uInt)b & ml))->exop) == 0)
{
DUMPBITS(t->bits)
Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
"inflate: * literal '%c'\n" :
"inflate: * literal 0x%02x\n", t->base));
*q++ = (Byte)t->base;
m--;
continue;
}
do {
DUMPBITS(t->bits)
if (e & 16)
{
/* get extra bits for length */
e &= 15;
c = t->base + ((uInt)b & inflate_mask[e]);
DUMPBITS(e)
Tracevv((stderr, "inflate: * length %u\n", c));
/* decode distance base of block to copy */
GRABBITS(15); /* max bits for distance code */
e = (t = td + ((uInt)b & md))->exop;
do {
DUMPBITS(t->bits)
if (e & 16)
{
/* get extra bits to add to distance base */
e &= 15;
GRABBITS(e) /* get extra bits (up to 13) */
d = t->base + ((uInt)b & inflate_mask[e]);
DUMPBITS(e)
Tracevv((stderr, "inflate: * distance %u\n", d));
/* do the copy */
m -= c;
r = q - d;
if (r < s->window) /* wrap if needed */
{
do {
r += s->end - s->window; /* force pointer in window */
} while (r < s->window); /* covers invalid distances */
e = s->end - r;
if (c > e)
{
c -= e; /* wrapped copy */
do {
*q++ = *r++;
} while (--e);
r = s->window;
do {
*q++ = *r++;
} while (--c);
}
else /* normal copy */
{
*q++ = *r++; c--;
*q++ = *r++; c--;
do {
*q++ = *r++;
} while (--c);
}
}
else /* normal copy */
{
*q++ = *r++; c--;
*q++ = *r++; c--;
do {
*q++ = *r++;
} while (--c);
}
break;
}
else if ((e & 64) == 0)
{
t += t->base;
e = (t += ((uInt)b & inflate_mask[e]))->exop;
}
else
{
z->msg = (char*)"invalid distance code";
UNGRAB
UPDATE
return Z_DATA_ERROR;
}
} while (1);
break;
}
if ((e & 64) == 0)
{
t += t->base;
if ((e = (t += ((uInt)b & inflate_mask[e]))->exop) == 0)
{
DUMPBITS(t->bits)
Tracevv((stderr, t->base >= 0x20 && t->base < 0x7f ?
"inflate: * literal '%c'\n" :
"inflate: * literal 0x%02x\n", t->base));
*q++ = (Byte)t->base;
m--;
break;
}
}
else if (e & 32)
{
Tracevv((stderr, "inflate: * end of block\n"));
UNGRAB
UPDATE
return Z_STREAM_END;
}
else
{
z->msg = (char*)"invalid literal/length code";
UNGRAB
UPDATE
return Z_DATA_ERROR;
}
} while (1);
} while (m >= 258 && n >= 10);
/* not enough input or output--restore pointers and return */
UNGRAB
UPDATE
return Z_OK;
}

View File

@@ -1,17 +0,0 @@
/* inffast.h -- header to use inffast.c
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
extern int inflate_fast OF((
uInt,
uInt,
inflate_huft *,
inflate_huft *,
inflate_blocks_statef *,
z_streamp ));

View File

@@ -1,151 +0,0 @@
/* inffixed.h -- table for decoding fixed codes
* Generated automatically by the maketree.c program
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
local uInt fixed_bl = 9;
local uInt fixed_bd = 5;
local inflate_huft fixed_tl[] = {
{{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115},
{{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},192},
{{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},160},
{{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},224},
{{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},144},
{{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},208},
{{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},176},
{{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},240},
{{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227},
{{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},200},
{{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},168},
{{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},232},
{{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},152},
{{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},216},
{{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},184},
{{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},248},
{{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163},
{{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},196},
{{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},164},
{{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},228},
{{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},148},
{{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},212},
{{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},180},
{{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},244},
{{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0},
{{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},204},
{{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},172},
{{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},236},
{{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},156},
{{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},220},
{{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},188},
{{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},252},
{{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131},
{{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},194},
{{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},162},
{{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},226},
{{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},146},
{{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},210},
{{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},178},
{{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},242},
{{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258},
{{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},202},
{{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},170},
{{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},234},
{{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},154},
{{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},218},
{{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},186},
{{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},250},
{{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195},
{{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},198},
{{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},166},
{{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},230},
{{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},150},
{{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},214},
{{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},182},
{{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},246},
{{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0},
{{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},206},
{{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},174},
{{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},238},
{{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},158},
{{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},222},
{{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},190},
{{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},254},
{{{96,7}},256}, {{{0,8}},80}, {{{0,8}},16}, {{{84,8}},115},
{{{82,7}},31}, {{{0,8}},112}, {{{0,8}},48}, {{{0,9}},193},
{{{80,7}},10}, {{{0,8}},96}, {{{0,8}},32}, {{{0,9}},161},
{{{0,8}},0}, {{{0,8}},128}, {{{0,8}},64}, {{{0,9}},225},
{{{80,7}},6}, {{{0,8}},88}, {{{0,8}},24}, {{{0,9}},145},
{{{83,7}},59}, {{{0,8}},120}, {{{0,8}},56}, {{{0,9}},209},
{{{81,7}},17}, {{{0,8}},104}, {{{0,8}},40}, {{{0,9}},177},
{{{0,8}},8}, {{{0,8}},136}, {{{0,8}},72}, {{{0,9}},241},
{{{80,7}},4}, {{{0,8}},84}, {{{0,8}},20}, {{{85,8}},227},
{{{83,7}},43}, {{{0,8}},116}, {{{0,8}},52}, {{{0,9}},201},
{{{81,7}},13}, {{{0,8}},100}, {{{0,8}},36}, {{{0,9}},169},
{{{0,8}},4}, {{{0,8}},132}, {{{0,8}},68}, {{{0,9}},233},
{{{80,7}},8}, {{{0,8}},92}, {{{0,8}},28}, {{{0,9}},153},
{{{84,7}},83}, {{{0,8}},124}, {{{0,8}},60}, {{{0,9}},217},
{{{82,7}},23}, {{{0,8}},108}, {{{0,8}},44}, {{{0,9}},185},
{{{0,8}},12}, {{{0,8}},140}, {{{0,8}},76}, {{{0,9}},249},
{{{80,7}},3}, {{{0,8}},82}, {{{0,8}},18}, {{{85,8}},163},
{{{83,7}},35}, {{{0,8}},114}, {{{0,8}},50}, {{{0,9}},197},
{{{81,7}},11}, {{{0,8}},98}, {{{0,8}},34}, {{{0,9}},165},
{{{0,8}},2}, {{{0,8}},130}, {{{0,8}},66}, {{{0,9}},229},
{{{80,7}},7}, {{{0,8}},90}, {{{0,8}},26}, {{{0,9}},149},
{{{84,7}},67}, {{{0,8}},122}, {{{0,8}},58}, {{{0,9}},213},
{{{82,7}},19}, {{{0,8}},106}, {{{0,8}},42}, {{{0,9}},181},
{{{0,8}},10}, {{{0,8}},138}, {{{0,8}},74}, {{{0,9}},245},
{{{80,7}},5}, {{{0,8}},86}, {{{0,8}},22}, {{{192,8}},0},
{{{83,7}},51}, {{{0,8}},118}, {{{0,8}},54}, {{{0,9}},205},
{{{81,7}},15}, {{{0,8}},102}, {{{0,8}},38}, {{{0,9}},173},
{{{0,8}},6}, {{{0,8}},134}, {{{0,8}},70}, {{{0,9}},237},
{{{80,7}},9}, {{{0,8}},94}, {{{0,8}},30}, {{{0,9}},157},
{{{84,7}},99}, {{{0,8}},126}, {{{0,8}},62}, {{{0,9}},221},
{{{82,7}},27}, {{{0,8}},110}, {{{0,8}},46}, {{{0,9}},189},
{{{0,8}},14}, {{{0,8}},142}, {{{0,8}},78}, {{{0,9}},253},
{{{96,7}},256}, {{{0,8}},81}, {{{0,8}},17}, {{{85,8}},131},
{{{82,7}},31}, {{{0,8}},113}, {{{0,8}},49}, {{{0,9}},195},
{{{80,7}},10}, {{{0,8}},97}, {{{0,8}},33}, {{{0,9}},163},
{{{0,8}},1}, {{{0,8}},129}, {{{0,8}},65}, {{{0,9}},227},
{{{80,7}},6}, {{{0,8}},89}, {{{0,8}},25}, {{{0,9}},147},
{{{83,7}},59}, {{{0,8}},121}, {{{0,8}},57}, {{{0,9}},211},
{{{81,7}},17}, {{{0,8}},105}, {{{0,8}},41}, {{{0,9}},179},
{{{0,8}},9}, {{{0,8}},137}, {{{0,8}},73}, {{{0,9}},243},
{{{80,7}},4}, {{{0,8}},85}, {{{0,8}},21}, {{{80,8}},258},
{{{83,7}},43}, {{{0,8}},117}, {{{0,8}},53}, {{{0,9}},203},
{{{81,7}},13}, {{{0,8}},101}, {{{0,8}},37}, {{{0,9}},171},
{{{0,8}},5}, {{{0,8}},133}, {{{0,8}},69}, {{{0,9}},235},
{{{80,7}},8}, {{{0,8}},93}, {{{0,8}},29}, {{{0,9}},155},
{{{84,7}},83}, {{{0,8}},125}, {{{0,8}},61}, {{{0,9}},219},
{{{82,7}},23}, {{{0,8}},109}, {{{0,8}},45}, {{{0,9}},187},
{{{0,8}},13}, {{{0,8}},141}, {{{0,8}},77}, {{{0,9}},251},
{{{80,7}},3}, {{{0,8}},83}, {{{0,8}},19}, {{{85,8}},195},
{{{83,7}},35}, {{{0,8}},115}, {{{0,8}},51}, {{{0,9}},199},
{{{81,7}},11}, {{{0,8}},99}, {{{0,8}},35}, {{{0,9}},167},
{{{0,8}},3}, {{{0,8}},131}, {{{0,8}},67}, {{{0,9}},231},
{{{80,7}},7}, {{{0,8}},91}, {{{0,8}},27}, {{{0,9}},151},
{{{84,7}},67}, {{{0,8}},123}, {{{0,8}},59}, {{{0,9}},215},
{{{82,7}},19}, {{{0,8}},107}, {{{0,8}},43}, {{{0,9}},183},
{{{0,8}},11}, {{{0,8}},139}, {{{0,8}},75}, {{{0,9}},247},
{{{80,7}},5}, {{{0,8}},87}, {{{0,8}},23}, {{{192,8}},0},
{{{83,7}},51}, {{{0,8}},119}, {{{0,8}},55}, {{{0,9}},207},
{{{81,7}},15}, {{{0,8}},103}, {{{0,8}},39}, {{{0,9}},175},
{{{0,8}},7}, {{{0,8}},135}, {{{0,8}},71}, {{{0,9}},239},
{{{80,7}},9}, {{{0,8}},95}, {{{0,8}},31}, {{{0,9}},159},
{{{84,7}},99}, {{{0,8}},127}, {{{0,8}},63}, {{{0,9}},223},
{{{82,7}},27}, {{{0,8}},111}, {{{0,8}},47}, {{{0,9}},191},
{{{0,8}},15}, {{{0,8}},143}, {{{0,8}},79}, {{{0,9}},255}
};
local inflate_huft fixed_td[] = {
{{{80,5}},1}, {{{87,5}},257}, {{{83,5}},17}, {{{91,5}},4097},
{{{81,5}},5}, {{{89,5}},1025}, {{{85,5}},65}, {{{93,5}},16385},
{{{80,5}},3}, {{{88,5}},513}, {{{84,5}},33}, {{{92,5}},8193},
{{{82,5}},9}, {{{90,5}},2049}, {{{86,5}},129}, {{{192,5}},24577},
{{{80,5}},2}, {{{87,5}},385}, {{{83,5}},25}, {{{91,5}},6145},
{{{81,5}},7}, {{{89,5}},1537}, {{{85,5}},97}, {{{93,5}},24577},
{{{80,5}},4}, {{{88,5}},769}, {{{84,5}},49}, {{{92,5}},12289},
{{{82,5}},13}, {{{90,5}},3073}, {{{86,5}},193}, {{{192,5}},24577}
};

View File

@@ -1,364 +0,0 @@
/* inflate.c -- zlib interface to inflate modules
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "infblock.h"
struct inflate_blocks_state {int dummy;}; /* for buggy compilers */
typedef enum {
METHOD, /* waiting for method byte */
FLAG, /* waiting for flag byte */
DICT4, /* four dictionary check bytes to go */
DICT3, /* three dictionary check bytes to go */
DICT2, /* two dictionary check bytes to go */
DICT1, /* one dictionary check byte to go */
DICT0, /* waiting for inflateSetDictionary */
BLOCKS, /* decompressing blocks */
CHECK4, /* four check bytes to go */
CHECK3, /* three check bytes to go */
CHECK2, /* two check bytes to go */
CHECK1, /* one check byte to go */
DONE, /* finished check, done */
BAD} /* got an error--stay here */
inflate_mode;
/* inflate private state */
struct internal_state {
/* mode */
inflate_mode mode; /* current inflate mode */
/* mode dependent information */
union {
uInt method; /* if FLAGS, method byte */
struct {
uLong was; /* computed check value */
uLong need; /* stream check value */
} check; /* if CHECK, check values to compare */
uInt marker; /* if BAD, inflateSync's marker bytes count */
} sub; /* submode */
/* mode independent information */
int nowrap; /* flag for no wrapper */
uInt wbits; /* log2(window size) (8..15, defaults to 15) */
inflate_blocks_statef
*blocks; /* current inflate_blocks state */
};
int ZEXPORT inflateReset(z)
z_streamp z;
{
if (z == Z_NULL || z->state == Z_NULL)
return Z_STREAM_ERROR;
z->total_in = z->total_out = 0;
z->msg = Z_NULL;
z->state->mode = z->state->nowrap ? BLOCKS : METHOD;
inflate_blocks_reset(z->state->blocks, z, Z_NULL);
Tracev((stderr, "inflate: reset\n"));
return Z_OK;
}
int ZEXPORT inflateEnd(z)
z_streamp z;
{
if (z == Z_NULL || z->state == Z_NULL || z->zfree == Z_NULL)
return Z_STREAM_ERROR;
if (z->state->blocks != Z_NULL)
inflate_blocks_free(z->state->blocks, z);
ZFREE(z, z->state);
z->state = Z_NULL;
Tracev((stderr, "inflate: end\n"));
return Z_OK;
}
int ZEXPORT inflateInit2_(z, w, version, stream_size)
z_streamp z;
int w;
const char *version;
int stream_size;
{
if (version == Z_NULL || version[0] != ZLIB_VERSION[0] ||
stream_size != sizeof(z_stream))
return Z_VERSION_ERROR;
/* initialize state */
if (z == Z_NULL)
return Z_STREAM_ERROR;
z->msg = Z_NULL;
if (z->zalloc == Z_NULL)
{
z->zalloc = zcalloc;
z->opaque = (voidpf)0;
}
if (z->zfree == Z_NULL) z->zfree = zcfree;
if ((z->state = (struct internal_state FAR *)
ZALLOC(z,1,sizeof(struct internal_state))) == Z_NULL)
return Z_MEM_ERROR;
z->state->blocks = Z_NULL;
/* handle undocumented nowrap option (no zlib header or check) */
z->state->nowrap = 0;
if (w < 0)
{
w = - w;
z->state->nowrap = 1;
}
/* set window size */
if (w < 8 || w > 15)
{
inflateEnd(z);
return Z_STREAM_ERROR;
}
z->state->wbits = (uInt)w;
/* create inflate_blocks state */
if ((z->state->blocks =
inflate_blocks_new(z, z->state->nowrap ? Z_NULL : adler32, (uInt)1 << w))
== Z_NULL)
{
inflateEnd(z);
return Z_MEM_ERROR;
}
Tracev((stderr, "inflate: allocated\n"));
/* reset state */
inflateReset(z);
return Z_OK;
}
int ZEXPORT inflateInit_(z, version, stream_size)
z_streamp z;
const char *version;
int stream_size;
{
return inflateInit2_(z, DEF_WBITS, version, stream_size);
}
#define NEEDBYTE {if(z->avail_in==0)return r;r=f;}
#define NEXTBYTE (z->avail_in--,z->total_in++,*z->next_in++)
int ZEXPORT inflate(z, f)
z_streamp z;
int f;
{
int r;
uInt b;
if (z == Z_NULL || z->state == Z_NULL || z->next_in == Z_NULL)
return Z_STREAM_ERROR;
f = f == Z_FINISH ? Z_BUF_ERROR : Z_OK;
r = Z_BUF_ERROR;
while (1) switch (z->state->mode)
{
case METHOD:
NEEDBYTE
if (((z->state->sub.method = NEXTBYTE) & 0xf) != Z_DEFLATED)
{
z->state->mode = BAD;
z->msg = (char*)"unknown compression method";
z->state->sub.marker = 5; /* can't try inflateSync */
break;
}
if ((z->state->sub.method >> 4) + 8 > z->state->wbits)
{
z->state->mode = BAD;
z->msg = (char*)"invalid window size";
z->state->sub.marker = 5; /* can't try inflateSync */
break;
}
z->state->mode = FLAG;
case FLAG:
NEEDBYTE
b = NEXTBYTE;
if (((z->state->sub.method << 8) + b) % 31)
{
z->state->mode = BAD;
z->msg = (char*)"incorrect header check";
z->state->sub.marker = 5; /* can't try inflateSync */
break;
}
Tracev((stderr, "inflate: zlib header ok\n"));
if (!(b & PRESET_DICT))
{
z->state->mode = BLOCKS;
break;
}
z->state->mode = DICT4;
case DICT4:
NEEDBYTE
z->state->sub.check.need = (uLong)NEXTBYTE << 24;
z->state->mode = DICT3;
case DICT3:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE << 16;
z->state->mode = DICT2;
case DICT2:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE << 8;
z->state->mode = DICT1;
case DICT1:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE;
z->adler = z->state->sub.check.need;
z->state->mode = DICT0;
return Z_NEED_DICT;
case DICT0:
z->state->mode = BAD;
z->msg = (char*)"need dictionary";
z->state->sub.marker = 0; /* can try inflateSync */
return Z_STREAM_ERROR;
case BLOCKS:
r = inflate_blocks(z->state->blocks, z, r);
if (r == Z_DATA_ERROR)
{
z->state->mode = BAD;
z->state->sub.marker = 0; /* can try inflateSync */
break;
}
if (r == Z_OK)
r = f;
if (r != Z_STREAM_END)
return r;
r = f;
inflate_blocks_reset(z->state->blocks, z, &z->state->sub.check.was);
if (z->state->nowrap)
{
z->state->mode = DONE;
break;
}
z->state->mode = CHECK4;
case CHECK4:
NEEDBYTE
z->state->sub.check.need = (uLong)NEXTBYTE << 24;
z->state->mode = CHECK3;
case CHECK3:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE << 16;
z->state->mode = CHECK2;
case CHECK2:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE << 8;
z->state->mode = CHECK1;
case CHECK1:
NEEDBYTE
z->state->sub.check.need += (uLong)NEXTBYTE;
if (z->state->sub.check.was != z->state->sub.check.need)
{
z->state->mode = BAD;
z->msg = (char*)"incorrect data check";
z->state->sub.marker = 5; /* can't try inflateSync */
break;
}
Tracev((stderr, "inflate: zlib check ok\n"));
z->state->mode = DONE;
case DONE:
return Z_STREAM_END;
case BAD:
return Z_DATA_ERROR;
default:
return Z_STREAM_ERROR;
}
#ifdef NEED_DUMMY_RETURN
return Z_STREAM_ERROR; /* Some dumb compilers complain without this */
#endif
}
int ZEXPORT inflateSetDictionary(z, dictionary, dictLength)
z_streamp z;
const Bytef *dictionary;
uInt dictLength;
{
uInt length = dictLength;
if (z == Z_NULL || z->state == Z_NULL || z->state->mode != DICT0)
return Z_STREAM_ERROR;
if (adler32(1L, dictionary, dictLength) != z->adler) return Z_DATA_ERROR;
z->adler = 1L;
if (length >= ((uInt)1<<z->state->wbits))
{
length = (1<<z->state->wbits)-1;
dictionary += dictLength - length;
}
inflate_set_dictionary(z->state->blocks, dictionary, length);
z->state->mode = BLOCKS;
return Z_OK;
}
int ZEXPORT inflateSync(z)
z_streamp z;
{
uInt n; /* number of bytes to look at */
Bytef *p; /* pointer to bytes */
uInt m; /* number of marker bytes found in a row */
uLong r, w; /* temporaries to save total_in and total_out */
/* set up */
if (z == Z_NULL || z->state == Z_NULL)
return Z_STREAM_ERROR;
if (z->state->mode != BAD)
{
z->state->mode = BAD;
z->state->sub.marker = 0;
}
if ((n = z->avail_in) == 0)
return Z_BUF_ERROR;
p = z->next_in;
m = z->state->sub.marker;
/* search */
while (n && m < 4)
{
static const Byte mark[4] = {0, 0, 0xff, 0xff};
if (*p == mark[m])
m++;
else if (*p)
m = 0;
else
m = 4 - m;
p++, n--;
}
/* restore */
z->total_in += p - z->next_in;
z->next_in = p;
z->avail_in = n;
z->state->sub.marker = m;
/* return no joy or set up to restart on a new block */
if (m != 4)
return Z_DATA_ERROR;
r = z->total_in; w = z->total_out;
inflateReset(z);
z->total_in = r; z->total_out = w;
z->state->mode = BLOCKS;
return Z_OK;
}
/* Returns true if inflate is currently at the end of a block generated
* by Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP
* implementation to provide an additional safety check. PPP uses Z_SYNC_FLUSH
* but removes the length bytes of the resulting empty stored block. When
* decompressing, PPP checks that at the end of input packet, inflate is
* waiting for these length bytes.
*/
int ZEXPORT inflateSyncPoint(z)
z_streamp z;
{
if (z == Z_NULL || z->state == Z_NULL || z->state->blocks == Z_NULL)
return Z_STREAM_ERROR;
return inflate_blocks_sync_point(z->state->blocks);
}

View File

@@ -1,453 +0,0 @@
/* inftrees.c -- generate Huffman trees for efficient decoding
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "inftrees.h"
#if !defined(BUILDFIXED) && !defined(STDC)
# define BUILDFIXED /* non ANSI compilers may not accept inffixed.h */
#endif
const char inflate_copyright[] =
" inflate 1.1.4 Copyright 1995-2002 Mark Adler ";
/*
If you use the zlib library in a product, an acknowledgment is welcome
in the documentation of your product. If for some reason you cannot
include such an acknowledgment, I would appreciate that you keep this
copyright string in the executable of your product.
*/
struct internal_state {int dummy;}; /* for buggy compilers */
/* simplify the use of the inflate_huft type with some defines */
#define exop word.what.Exop
#define bits word.what.Bits
local int huft_build OF((
uIntf *, /* code lengths in bits */
uInt, /* number of codes */
uInt, /* number of "simple" codes */
const uIntf *, /* list of base values for non-simple codes */
const uIntf *, /* list of extra bits for non-simple codes */
inflate_huft * FAR*,/* result: starting table */
uIntf *, /* maximum lookup bits (returns actual) */
inflate_huft *, /* space for trees */
uInt *, /* hufts used in space */
uIntf * )); /* space for values */
/* Tables for deflate from PKZIP's appnote.txt. */
local const uInt cplens[31] = { /* Copy lengths for literal codes 257..285 */
3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31,
35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
/* see note #13 above about 258 */
local const uInt cplext[31] = { /* Extra bits for literal codes 257..285 */
0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2,
3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112}; /* 112==invalid */
local const uInt cpdist[30] = { /* Copy offsets for distance codes 0..29 */
1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
8193, 12289, 16385, 24577};
local const uInt cpdext[30] = { /* Extra bits for distance codes */
0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6,
7, 7, 8, 8, 9, 9, 10, 10, 11, 11,
12, 12, 13, 13};
/*
Huffman code decoding is performed using a multi-level table lookup.
The fastest way to decode is to simply build a lookup table whose
size is determined by the longest code. However, the time it takes
to build this table can also be a factor if the data being decoded
is not very long. The most common codes are necessarily the
shortest codes, so those codes dominate the decoding time, and hence
the speed. The idea is you can have a shorter table that decodes the
shorter, more probable codes, and then point to subsidiary tables for
the longer codes. The time it costs to decode the longer codes is
then traded against the time it takes to make longer tables.
This results of this trade are in the variables lbits and dbits
below. lbits is the number of bits the first level table for literal/
length codes can decode in one step, and dbits is the same thing for
the distance codes. Subsequent tables are also less than or equal to
those sizes. These values may be adjusted either when all of the
codes are shorter than that, in which case the longest code length in
bits is used, or when the shortest code is *longer* than the requested
table size, in which case the length of the shortest code in bits is
used.
There are two different values for the two tables, since they code a
different number of possibilities each. The literal/length table
codes 286 possible values, or in a flat code, a little over eight
bits. The distance table codes 30 possible values, or a little less
than five bits, flat. The optimum values for speed end up being
about one bit more than those, so lbits is 8+1 and dbits is 5+1.
The optimum values may differ though from machine to machine, and
possibly even between compilers. Your mileage may vary.
*/
/* If BMAX needs to be larger than 16, then h and x[] should be uLong. */
#define BMAX 15 /* maximum bit length of any code */
local int huft_build(b, n, s, d, e, t, m, hp, hn, v)
uIntf *b; /* code lengths in bits (all assumed <= BMAX) */
uInt n; /* number of codes (assumed <= 288) */
uInt s; /* number of simple-valued codes (0..s-1) */
const uIntf *d; /* list of base values for non-simple codes */
const uIntf *e; /* list of extra bits for non-simple codes */
inflate_huft * FAR *t; /* result: starting table */
uIntf *m; /* maximum lookup bits, returns actual */
inflate_huft *hp; /* space for trees */
uInt *hn; /* hufts used in space */
uIntf *v; /* working area: values in order of bit length */
/* Given a list of code lengths and a maximum table size, make a set of
tables to decode that set of codes. Return Z_OK on success, Z_BUF_ERROR
if the given code set is incomplete (the tables are still built in this
case), or Z_DATA_ERROR if the input is invalid. */
{
uInt a; /* counter for codes of length k */
uInt c[BMAX+1]; /* bit length count table */
uInt f; /* i repeats in table every f entries */
int g; /* maximum code length */
int h; /* table level */
register uInt i; /* counter, current code */
register uInt j; /* counter */
register int k; /* number of bits in current code */
int l; /* bits per table (returned in m) */
uInt mask; /* (1 << w) - 1, to avoid cc -O bug on HP */
register uIntf *p; /* pointer into c[], b[], or v[] */
inflate_huft *q; /* points to current table */
struct inflate_huft_s r; /* table entry for structure assignment */
inflate_huft *u[BMAX]; /* table stack */
register int w; /* bits before this table == (l * h) */
uInt x[BMAX+1]; /* bit offsets, then code stack */
uIntf *xp; /* pointer into x */
int y; /* number of dummy codes added */
uInt z; /* number of entries in current table */
/* Generate counts for each bit length */
p = c;
#define C0 *p++ = 0;
#define C2 C0 C0 C0 C0
#define C4 C2 C2 C2 C2
C4 /* clear c[]--assume BMAX+1 is 16 */
p = b; i = n;
do {
c[*p++]++; /* assume all entries <= BMAX */
} while (--i);
if (c[0] == n) /* null input--all zero length codes */
{
*t = (inflate_huft *)Z_NULL;
*m = 0;
return Z_OK;
}
/* Find minimum and maximum length, bound *m by those */
l = *m;
for (j = 1; j <= BMAX; j++)
if (c[j])
break;
k = j; /* minimum code length */
if ((uInt)l < j)
l = j;
for (i = BMAX; i; i--)
if (c[i])
break;
g = i; /* maximum code length */
if ((uInt)l > i)
l = i;
*m = l;
/* Adjust last length count to fill out codes, if needed */
for (y = 1 << j; j < i; j++, y <<= 1)
if ((y -= c[j]) < 0)
return Z_DATA_ERROR;
if ((y -= c[i]) < 0)
return Z_DATA_ERROR;
c[i] += y;
/* Generate starting offsets into the value table for each length */
x[1] = j = 0;
p = c + 1; xp = x + 2;
while (--i) { /* note that i == g from above */
*xp++ = (j += *p++);
}
/* Make a table of values in order of bit lengths */
p = b; i = 0;
do {
if ((j = *p++) != 0)
v[x[j]++] = i;
} while (++i < n);
n = x[g]; /* set n to length of v */
/* Generate the Huffman codes and for each, make the table entries */
x[0] = i = 0; /* first Huffman code is zero */
p = v; /* grab values in bit order */
h = -1; /* no tables yet--level -1 */
w = -l; /* bits decoded == (l * h) */
u[0] = (inflate_huft *)Z_NULL; /* just to keep compilers happy */
q = (inflate_huft *)Z_NULL; /* ditto */
z = 0; /* ditto */
/* go through the bit lengths (k already is bits in shortest code) */
for (; k <= g; k++)
{
a = c[k];
while (a--)
{
/* here i is the Huffman code of length k bits for value *p */
/* make tables up to required level */
while (k > w + l)
{
h++;
w += l; /* previous table always l bits */
/* compute minimum size table less than or equal to l bits */
z = g - w;
z = z > (uInt)l ? l : z; /* table size upper limit */
if ((f = 1 << (j = k - w)) > a + 1) /* try a k-w bit table */
{ /* too few codes for k-w bit table */
f -= a + 1; /* deduct codes from patterns left */
xp = c + k;
if (j < z)
while (++j < z) /* try smaller tables up to z bits */
{
if ((f <<= 1) <= *++xp)
break; /* enough codes to use up j bits */
f -= *xp; /* else deduct codes from patterns */
}
}
z = 1 << j; /* table entries for j-bit table */
/* allocate new table */
if (*hn + z > MANY) /* (note: doesn't matter for fixed) */
return Z_DATA_ERROR; /* overflow of MANY */
u[h] = q = hp + *hn;
*hn += z;
/* connect to last table, if there is one */
if (h)
{
x[h] = i; /* save pattern for backing up */
r.bits = (Byte)l; /* bits to dump before this table */
r.exop = (Byte)j; /* bits in this table */
j = i >> (w - l);
r.base = (uInt)(q - u[h-1] - j); /* offset to this table */
u[h-1][j] = r; /* connect to last table */
}
else
*t = q; /* first table is returned result */
}
/* set up table entry in r */
r.bits = (Byte)(k - w);
if (p >= v + n)
r.exop = 128 + 64; /* out of values--invalid code */
else if (*p < s)
{
r.exop = (Byte)(*p < 256 ? 0 : 32 + 64); /* 256 is end-of-block */
r.base = *p++; /* simple code is just the value */
}
else
{
r.exop = (Byte)(e[*p - s] + 16 + 64);/* non-simple--look up in lists */
r.base = d[*p++ - s];
}
/* fill code-like entries with r */
f = 1 << (k - w);
for (j = i >> w; j < z; j += f)
q[j] = r;
/* backwards increment the k-bit code i */
for (j = 1 << (k - 1); i & j; j >>= 1)
i ^= j;
i ^= j;
/* backup over finished tables */
mask = (1 << w) - 1; /* needed on HP, cc -O bug */
while ((i & mask) != x[h])
{
h--; /* don't need to update q */
w -= l;
mask = (1 << w) - 1;
}
}
}
/* Return Z_BUF_ERROR if we were given an incomplete table */
return y != 0 && g != 1 ? Z_BUF_ERROR : Z_OK;
}
int inflate_trees_bits(c, bb, tb, hp, z)
uIntf *c; /* 19 code lengths */
uIntf *bb; /* bits tree desired/actual depth */
inflate_huft * FAR *tb; /* bits tree result */
inflate_huft *hp; /* space for trees */
z_streamp z; /* for messages */
{
int r;
uInt hn = 0; /* hufts used in space */
uIntf *v; /* work area for huft_build */
if ((v = (uIntf*)ZALLOC(z, 19, sizeof(uInt))) == Z_NULL)
return Z_MEM_ERROR;
r = huft_build(c, 19, 19, (uIntf*)Z_NULL, (uIntf*)Z_NULL,
tb, bb, hp, &hn, v);
if (r == Z_DATA_ERROR)
z->msg = (char*)"oversubscribed dynamic bit lengths tree";
else if (r == Z_BUF_ERROR || *bb == 0)
{
z->msg = (char*)"incomplete dynamic bit lengths tree";
r = Z_DATA_ERROR;
}
ZFREE(z, v);
return r;
}
int inflate_trees_dynamic(nl, nd, c, bl, bd, tl, td, hp, z)
uInt nl; /* number of literal/length codes */
uInt nd; /* number of distance codes */
uIntf *c; /* that many (total) code lengths */
uIntf *bl; /* literal desired/actual bit depth */
uIntf *bd; /* distance desired/actual bit depth */
inflate_huft * FAR *tl; /* literal/length tree result */
inflate_huft * FAR *td; /* distance tree result */
inflate_huft *hp; /* space for trees */
z_streamp z; /* for messages */
{
int r;
uInt hn = 0; /* hufts used in space */
uIntf *v; /* work area for huft_build */
/* allocate work area */
if ((v = (uIntf*)ZALLOC(z, 288, sizeof(uInt))) == Z_NULL)
return Z_MEM_ERROR;
/* build literal/length tree */
r = huft_build(c, nl, 257, cplens, cplext, tl, bl, hp, &hn, v);
if (r != Z_OK || *bl == 0)
{
if (r == Z_DATA_ERROR)
z->msg = (char*)"oversubscribed literal/length tree";
else if (r != Z_MEM_ERROR)
{
z->msg = (char*)"incomplete literal/length tree";
r = Z_DATA_ERROR;
}
ZFREE(z, v);
return r;
}
/* build distance tree */
r = huft_build(c + nl, nd, 0, cpdist, cpdext, td, bd, hp, &hn, v);
if (r != Z_OK || (*bd == 0 && nl > 257))
{
if (r == Z_DATA_ERROR)
z->msg = (char*)"oversubscribed distance tree";
else if (r == Z_BUF_ERROR) {
#ifdef PKZIP_BUG_WORKAROUND
r = Z_OK;
}
#else
z->msg = (char*)"incomplete distance tree";
r = Z_DATA_ERROR;
}
else if (r != Z_MEM_ERROR)
{
z->msg = (char*)"empty distance tree with lengths";
r = Z_DATA_ERROR;
}
ZFREE(z, v);
return r;
#endif
}
/* done */
ZFREE(z, v);
return Z_OK;
}
/* build fixed tables only once--keep them here */
#ifdef BUILDFIXED
local int fixed_built = 0;
#define FIXEDH 544 /* number of hufts used by fixed tables */
local inflate_huft fixed_mem[FIXEDH];
local uInt fixed_bl;
local uInt fixed_bd;
local inflate_huft *fixed_tl;
local inflate_huft *fixed_td;
#else
#include "inffixed.h"
#endif
int inflate_trees_fixed(bl, bd, tl, td, z)
uIntf *bl; /* literal desired/actual bit depth */
uIntf *bd; /* distance desired/actual bit depth */
inflate_huft * FAR *tl; /* literal/length tree result */
inflate_huft * FAR *td; /* distance tree result */
z_streamp z; /* for memory allocation */
{
#ifdef BUILDFIXED
/* build fixed tables if not already */
if (!fixed_built)
{
int k; /* temporary variable */
uInt f = 0; /* number of hufts used in fixed_mem */
uIntf *c; /* length list for huft_build */
uIntf *v; /* work area for huft_build */
/* allocate memory */
if ((c = (uIntf*)ZALLOC(z, 288, sizeof(uInt))) == Z_NULL)
return Z_MEM_ERROR;
if ((v = (uIntf*)ZALLOC(z, 288, sizeof(uInt))) == Z_NULL)
{
ZFREE(z, c);
return Z_MEM_ERROR;
}
/* literal table */
for (k = 0; k < 144; k++)
c[k] = 8;
for (; k < 256; k++)
c[k] = 9;
for (; k < 280; k++)
c[k] = 7;
for (; k < 288; k++)
c[k] = 8;
fixed_bl = 9;
huft_build(c, 288, 257, cplens, cplext, &fixed_tl, &fixed_bl,
fixed_mem, &f, v);
/* distance table */
for (k = 0; k < 30; k++)
c[k] = 5;
fixed_bd = 5;
huft_build(c, 30, 0, cpdist, cpdext, &fixed_td, &fixed_bd,
fixed_mem, &f, v);
/* done */
ZFREE(z, v);
ZFREE(z, c);
fixed_built = 1;
}
#endif
*bl = fixed_bl;
*bd = fixed_bd;
*tl = fixed_tl;
*td = fixed_td;
return Z_OK;
}

View File

@@ -1,58 +0,0 @@
/* inftrees.h -- header to use inftrees.c
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
/* Huffman code lookup table entry--this entry is four bytes for machines
that have 16-bit pointers (e.g. PC's in the small or medium model). */
typedef struct inflate_huft_s FAR inflate_huft;
struct inflate_huft_s {
union {
struct {
Byte Exop; /* number of extra bits or operation */
Byte Bits; /* number of bits in this code or subcode */
} what;
uInt pad; /* pad structure to a power of 2 (4 bytes for */
} word; /* 16-bit, 8 bytes for 32-bit int's) */
uInt base; /* literal, length base, distance base,
or table offset */
};
/* Maximum size of dynamic tree. The maximum found in a long but non-
exhaustive search was 1004 huft structures (850 for length/literals
and 154 for distances, the latter actually the result of an
exhaustive search). The actual maximum is not known, but the
value below is more than safe. */
#define MANY 1440
extern int inflate_trees_bits OF((
uIntf *, /* 19 code lengths */
uIntf *, /* bits tree desired/actual depth */
inflate_huft * FAR *, /* bits tree result */
inflate_huft *, /* space for trees */
z_streamp)); /* for messages */
extern int inflate_trees_dynamic OF((
uInt, /* number of literal/length codes */
uInt, /* number of distance codes */
uIntf *, /* that many (total) code lengths */
uIntf *, /* literal desired/actual bit depth */
uIntf *, /* distance desired/actual bit depth */
inflate_huft * FAR *, /* literal/length tree result */
inflate_huft * FAR *, /* distance tree result */
inflate_huft *, /* space for trees */
z_streamp)); /* for messages */
extern int inflate_trees_fixed OF((
uIntf *, /* literal desired/actual bit depth */
uIntf *, /* distance desired/actual bit depth */
inflate_huft * FAR *, /* literal/length tree result */
inflate_huft * FAR *, /* distance tree result */
z_streamp)); /* for memory allocation */

View File

@@ -1,87 +0,0 @@
/* inflate_util.c -- data and routines common to blocks and codes
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
#include "zutil.h"
#include "infblock.h"
#include "inftrees.h"
#include "infcodes.h"
#include "infutil.h"
struct inflate_codes_state {int dummy;}; /* for buggy compilers */
/* And'ing with mask[n] masks the lower n bits */
uInt inflate_mask[17] = {
0x0000,
0x0001, 0x0003, 0x0007, 0x000f, 0x001f, 0x003f, 0x007f, 0x00ff,
0x01ff, 0x03ff, 0x07ff, 0x0fff, 0x1fff, 0x3fff, 0x7fff, 0xffff
};
/* copy as much as possible from the sliding window to the output area */
int inflate_flush(s, z, r)
inflate_blocks_statef *s;
z_streamp z;
int r;
{
uInt n;
Bytef *p;
Bytef *q;
/* local copies of source and destination pointers */
p = z->next_out;
q = s->read;
/* compute number of bytes to copy as far as end of window */
n = (uInt)((q <= s->write ? s->write : s->end) - q);
if (n > z->avail_out) n = z->avail_out;
if (n && r == Z_BUF_ERROR) r = Z_OK;
/* update counters */
z->avail_out -= n;
z->total_out += n;
/* update check information */
if (s->checkfn != Z_NULL)
z->adler = s->check = (*s->checkfn)(s->check, q, n);
/* copy as far as end of window */
zmemcpy(p, q, n);
p += n;
q += n;
/* see if more to copy at beginning of window */
if (q == s->end)
{
/* wrap pointers */
q = s->window;
if (s->write == s->end)
s->write = s->window;
/* compute bytes to copy */
n = (uInt)(s->write - q);
if (n > z->avail_out) n = z->avail_out;
if (n && r == Z_BUF_ERROR) r = Z_OK;
/* update counters */
z->avail_out -= n;
z->total_out += n;
/* update check information */
if (s->checkfn != Z_NULL)
z->adler = s->check = (*s->checkfn)(s->check, q, n);
/* copy */
zmemcpy(p, q, n);
p += n;
q += n;
}
/* update pointers */
z->next_out = p;
s->read = q;
/* done */
return r;
}

View File

@@ -1,98 +0,0 @@
/* infutil.h -- types and macros common to blocks and codes
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
#ifndef _INFUTIL_H
#define _INFUTIL_H
typedef enum {
TYPE, /* get type bits (3, including end bit) */
LENS, /* get lengths for stored */
STORED, /* processing stored block */
TABLE, /* get table lengths */
BTREE, /* get bit lengths tree for a dynamic block */
DTREE, /* get length, distance trees for a dynamic block */
CODES, /* processing fixed or dynamic block */
DRY, /* output remaining window bytes */
DONE, /* finished last block, done */
BAD} /* got a data error--stuck here */
inflate_block_mode;
/* inflate blocks semi-private state */
struct inflate_blocks_state {
/* mode */
inflate_block_mode mode; /* current inflate_block mode */
/* mode dependent information */
union {
uInt left; /* if STORED, bytes left to copy */
struct {
uInt table; /* table lengths (14 bits) */
uInt index; /* index into blens (or border) */
uIntf *blens; /* bit lengths of codes */
uInt bb; /* bit length tree depth */
inflate_huft *tb; /* bit length decoding tree */
} trees; /* if DTREE, decoding info for trees */
struct {
inflate_codes_statef
*codes;
} decode; /* if CODES, current state */
} sub; /* submode */
uInt last; /* true if this block is the last block */
/* mode independent information */
uInt bitk; /* bits in bit buffer */
uLong bitb; /* bit buffer */
inflate_huft *hufts; /* single malloc for tree space */
Bytef *window; /* sliding window */
Bytef *end; /* one byte after sliding window */
Bytef *read; /* window read pointer */
Bytef *write; /* window write pointer */
check_func checkfn; /* check function */
uLong check; /* check on output */
};
/* defines for inflate input/output */
/* update pointers and return */
#define UPDBITS {s->bitb=b;s->bitk=k;}
#define UPDIN {z->avail_in=n;z->total_in+=p-z->next_in;z->next_in=p;}
#define UPDOUT {s->write=q;}
#define UPDATE {UPDBITS UPDIN UPDOUT}
#define LEAVE {UPDATE return inflate_flush(s,z,r);}
/* get bytes and bits */
#define LOADIN {p=z->next_in;n=z->avail_in;b=s->bitb;k=s->bitk;}
#define NEEDBYTE {if(n)r=Z_OK;else LEAVE}
#define NEXTBYTE (n--,*p++)
#define NEEDBITS(j) {while(k<(j)){NEEDBYTE;b|=((uLong)NEXTBYTE)<<k;k+=8;}}
#define DUMPBITS(j) {b>>=(j);k-=(j);}
/* output bytes */
#define WAVAIL (uInt)(q<s->read?s->read-q-1:s->end-q)
#define LOADOUT {q=s->write;m=(uInt)WAVAIL;}
#define WRAP {if(q==s->end&&s->read!=s->window){q=s->window;m=(uInt)WAVAIL;}}
#define FLUSH {UPDOUT r=inflate_flush(s,z,r); LOADOUT}
#define NEEDOUT {if(m==0){WRAP if(m==0){FLUSH WRAP if(m==0) LEAVE}}r=Z_OK;}
#define OUTBYTE(a) {*q++=(Byte)(a);m--;}
/* load local pointers */
#define LOAD {LOADIN LOADOUT}
/* masks for lower bits (size given to avoid silly warnings with Visual C++) */
extern uInt inflate_mask[17];
/* copy as much as possible from the sliding window to the output area */
extern int inflate_flush OF((
inflate_blocks_statef *,
z_streamp ,
int));
struct internal_state {int dummy;}; /* for buggy compilers */
#endif

View File

@@ -1,24 +0,0 @@
# Makefile for zlib
# Borland C++
# This version of the zlib makefile was adapted by Chris Young for use
# with Borland C 4.5x with the Dos Power Pack for a 32-bit protected mode
# flat memory model. It was created for use with POV-Ray ray tracer and
# you may choose to edit the CFLAGS to suit your needs but the
# switches -WX and -DMSDOS are required.
# -- Chris Young 76702.1655@compuserve.com
# To use, do "make -fmakefile.b32"
# See zconf.h for details about the memory requirements.
# ------------- Borland C++ -------------
LIBTARGET=..\..\lib\zlib.lib
OBJECTS = adler32.obj compress.obj crc32.obj gzio.obj uncompr.obj deflate.obj \
trees.obj zutil.obj inflate.obj infblock.obj inftrees.obj infcodes.obj \
infutil.obj inffast.obj
!include $(WXWIN)\src\makelib.b32

View File

@@ -1,88 +0,0 @@
# Makefile for zlib
# Borland C++ ************ UNTESTED ***********
# To use, do "make -fmakefile.bor"
# WARNING: the small model is supported but only for small values of
# MAX_WBITS and MAX_MEM_LEVEL. If you wish to reduce the memory
# requirements (default 256K for big objects plus a few K), you can add
# to CFLAGS below: -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
# See zconf.h for details about the memory requirements.
# ------------- Turbo C++, Borland C++ -------------
MODEL=-ml
CFLAGS=-O2 -Z $(MODEL) -3 -Fs-
CC=bcc
LD=bcc
LIB=tlib
# replace bcc with tcc for Turbo C++ 1.0
LDFLAGS=$(MODEL)
O=.obj
LIBTARGET=..\..\lib\zlib.lib
# variables
OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \
trees$(O)
OBJP1 = adler32$(O)+compress$(O)+crc32$(O)+gzio$(O)+uncompr$(O)+deflate$(O)+\
trees$(O)
OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
infutil$(O) inffast$(O)
OBJP2 = zutil$(O)+inflate$(O)+infblock$(O)+inftrees$(O)+infcodes$(O)+\
infutil$(O)+inffast$(O)
all: $(LIBTARGET)
adler32.obj: adler32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
compress.obj: compress.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
crc32.obj: crc32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
gzio.obj: gzio.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
infcodes.h infutil.h
$(CC) -c $(CFLAGS) $*.c
infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
infcodes.h inffast.h
$(CC) -c $(CFLAGS) $*.c
inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
$(CC) -c $(CFLAGS) $*.c
inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
$(CC) -c $(CFLAGS) $*.c
infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
$(CC) -c $(CFLAGS) $*.c
inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
$(CC) -c $(CFLAGS) $*.c
trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
uncompr.obj: uncompr.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
zutil.obj: zutil.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
# we must cut the command line to fit in the MS/DOS 128 byte limit:
$(LIBTARGET): $(OBJ1) $(OBJ2)
$(LIB) $(LIBTARGET) +$(OBJP1)
$(LIB) $(LIBTARGET) +$(OBJP2)
clean:
-erase *.obj
-erase *.exe
-erase $(LIBTARGET)

View File

@@ -1,91 +0,0 @@
# Makefile for zlib
# Borland C++ ************ UNTESTED ***********
# To use, do "make -fmakefile.bor"
# WARNING: the small model is supported but only for small values of
# MAX_WBITS and MAX_MEM_LEVEL. If you wish to reduce the memory
# requirements (default 256K for big objects plus a few K), you can add
# to CFLAGS below: -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
# See zconf.h for details about the memory requirements.
# ------------- Turbo C++, Borland C++ -------------
CFLAGS=-O2 /MD # /GX
CC=cl
LD=cl
LIB=tlib
# replace bcc with tcc for Turbo C++ 1.0
LDFLAGS=$(MODEL)
O=.obj
LIBTARGET=..\..\lib\zlib.lib
# variables
OBJ1 = adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) \
trees$(O)
OBJ2 = zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) \
infutil$(O) inffast$(O)
all: $(LIBTARGET)
adler32.obj: adler32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
compress.obj: compress.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
crc32.obj: crc32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
gzio.obj: gzio.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
infcodes.h infutil.h
$(CC) -c $(CFLAGS) $*.c
infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
infcodes.h inffast.h
$(CC) -c $(CFLAGS) $*.c
inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
$(CC) -c $(CFLAGS) $*.c
inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
$(CC) -c $(CFLAGS) $*.c
infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
$(CC) -c $(CFLAGS) $*.c
inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
$(CC) -c $(CFLAGS) $*.c
trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
uncompr.obj: uncompr.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
zutil.obj: zutil.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $*.c
LIBOBJECTS = $(OBJ1) $(OBJ2)
$(LIBTARGET): $(OBJ1) $(OBJ2)
del $(LIBTARGET)
lib /PAGESIZE:128 @<<
$(LIBTARGET)
y
$(OBJ1) $(OBJ2)
nul
;
<<
clean:
-erase *.obj
-erase *.exe
-erase *.sbr
-erase $(LIBTARGET)

View File

@@ -1,30 +0,0 @@
#
# File: makefile.unx
# Author: Julian Smart
# Created: 1998
# Updated:
# Copyright: (c) 1998
#
#
# Makefile for PNG library, Unix
include ../make.env
TARGETLIB=../../lib/libzlib.a
LIB_C_SRC = adler32.c compress.c crc32.c gzio.c uncompr.c deflate.c \
trees.c zutil.c inflate.c infblock.c inftrees.c infcodes.c \
infutil.c inffast.c
all: $(TARGETLIB)
# Define library objects
OBJECTS=\
$(LIB_C_SRC:.c=.o)
$(TARGETLIB) : $(OBJECTS)
ar $(AROPTIONS) $@ $(OBJECTS)
$(RANLIB) $@
clean:
rm -f $(OBJECTS) $(TARGETLIB)

View File

@@ -1,118 +0,0 @@
# Makefile for zlib
# WARNING: the small model is supported but only for small values of
# MAX_WBITS and MAX_MEM_LEVEL. If you wish to reduce the memory
# requirements (default 256K for big objects plus a few K), you can add
# to CFLAGS below: -DMAX_MEM_LEVEL=7 -DMAX_WBITS=14
# See zconf.h for details about the memory requirements.
!if "$(RM)" == ""
RM= erase
!endif
!ifndef FINAL
FINAL=0
!endif
!if "$(FINAL)" == "0"
CFLAGS=/nologo /Od $(CRTFLAG) /GX /Fo$@
_CRTFLAG=/MDd
!else if "$(FINAL)" == "hybrid"
CFLAGS=/nologo /Od $(CRTFLAG) /GX /Fo$@
_CRTFLAG=/MD
!else
CFLAGS=/nologo -O2 $(CRTFLAG) /GX /Fo$@
_CRTFLAG=/MD
!endif
!if "$(CRTFLAG)" == ""
CRTFLAG=$(_CRTFLAG)
!endif
CC=cl
LD=cl
LIB=tlib
LDFLAGS=$(MODEL)
O=.obj
!if "$(FINAL)" == "1"
LIBTARGET=..\..\lib\zlib.lib
D=Release
!else if "$(FINAL)" == "hybrid"
LIBTARGET=..\..\lib\zlibh.lib
D=Hybrid
!else
LIBTARGET=..\..\lib\zlibd.lib
D=Debug
!endif
# variables
OBJ1 = $D\adler32$(O) $D\compress$(O) $D\crc32$(O) $D\gzio$(O) \
$D\uncompr$(O) $D\deflate$(O) $D\trees$(O)
OBJ2 = $D\zutil$(O) $D\inflate$(O) $D\infblock$(O) $D\inftrees$(O) \
$D\infcodes$(O) $D\infutil$(O) $D\inffast$(O)
all: $D $(LIBTARGET)
$D:
mkdir .\$D
$D\adler32.obj: adler32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $(*B).c
$D\compress.obj: compress.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $(*B).c
$D\crc32.obj: crc32.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $(*B).c
$D\deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $(*B).c
$D\gzio.obj: gzio.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $(*B).c
$D\infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h\
infcodes.h infutil.h
$(CC) -c $(CFLAGS) $(*B).c
$D\infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h\
infcodes.h inffast.h
$(CC) -c $(CFLAGS) $(*B).c
$D\inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
$(CC) -c $(CFLAGS) $(*B).c
$D\inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
$(CC) -c $(CFLAGS) $(*B).c
$D\infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
$(CC) -c $(CFLAGS) $(*B).c
$D\inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
$(CC) -c $(CFLAGS) $(*B).c
$D\trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $(*B).c
$D\uncompr.obj: uncompr.c zlib.h zconf.h
$(CC) -c $(CFLAGS) $(*B).c
$D\zutil.obj: zutil.c zutil.h zlib.h zconf.h
$(CC) -c $(CFLAGS) $(*B).c
LIBOBJECTS = $(OBJ1) $(OBJ2)
$(LIBTARGET): $(LIBOBJECTS)
-erase $(LIBTARGET)
lib @<<
-out:$(LIBTARGET)
$(LIBOBJECTS)
<<
clean:
-$(RM) $D\*.obj
-$(RM) *.exe
-$(RM) *.sbr
-$(RM) $(LIBTARGET)

View File

@@ -1,103 +0,0 @@
# Makefile for zlib
# Watcom 10a
# This version of the zlib makefile was adapted by Chris Young for use
# with Watcom 10a 32-bit protected mode flat memory model. It was created
# for use with POV-Ray ray tracer and you may choose to edit the CFLAGS to
# suit your needs but the -DMSDOS is required.
# -- Chris Young 76702.1655@compuserve.com
# To use, do "wmake -f makefile.wat"
# See zconf.h for details about the memory requirements.
# ------------- Watcom 10a -------------
MODEL=-mf
CFLAGS= $(MODEL) -fpi87 -fp5 -zp4 -5r -w5 -oneatx -DWIN32
CC=wcc386
LD=wcl386
LIB=wlib -b -c
LDFLAGS=
O=.obj
LIBTARGET=..\..\lib\zlib.lib
# variables
OBJECTS=adler32$(O) compress$(O) crc32$(O) gzio$(O) uncompr$(O) deflate$(O) &
trees$(O) zutil$(O) inflate$(O) infblock$(O) inftrees$(O) infcodes$(O) &
infutil$(O) inffast$(O)
# all: test
all: $(LIBTARGET)
adler32.obj: adler32.c zutil.h zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
compress.obj: compress.c zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
crc32.obj: crc32.c zutil.h zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
deflate.obj: deflate.c deflate.h zutil.h zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
gzio.obj: gzio.c zutil.h zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
infblock.obj: infblock.c zutil.h zlib.h zconf.h infblock.h inftrees.h &
infcodes.h infutil.h
$(CC) $(CFLAGS) $*.c
infcodes.obj: infcodes.c zutil.h zlib.h zconf.h inftrees.h infutil.h &
infcodes.h inffast.h
$(CC) $(CFLAGS) $*.c
inflate.obj: inflate.c zutil.h zlib.h zconf.h infblock.h
$(CC) $(CFLAGS) $*.c
inftrees.obj: inftrees.c zutil.h zlib.h zconf.h inftrees.h
$(CC) $(CFLAGS) $*.c
infutil.obj: infutil.c zutil.h zlib.h zconf.h inftrees.h infutil.h
$(CC) $(CFLAGS) $*.c
inffast.obj: inffast.c zutil.h zlib.h zconf.h inftrees.h infutil.h inffast.h
$(CC) $(CFLAGS) $*.c
trees.obj: trees.c deflate.h zutil.h zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
uncompr.obj: uncompr.c zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
zutil.obj: zutil.c zutil.h zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
example.obj: example.c zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
minigzip.obj: minigzip.c zlib.h zconf.h
$(CC) $(CFLAGS) $*.c
$(LIBTARGET) : $(OBJECTS)
%create tmp.lbc
@for %i in ( $(OBJECTS) ) do @%append tmp.lbc +%i
wlib /b /c /n /p=512 $^@ @tmp.lbc
example.exe: example.obj $(LIBTARGET)
$(LD) $(LDFLAGS) example.obj $(LIBTARGET)
minigzip.exe: minigzip.obj $(LIBTARGET)
$(LD) $(LDFLAGS) minigzip.obj $(LIBTARGET)
test: minigzip.exe example.exe
example
echo hello world | minigzip | minigzip -d >test
type test
clean: .SYMBOLIC
-erase *.obj
-erase *.exe
-erase $(LIBTARGET)

Binary file not shown.

View File

@@ -1,85 +0,0 @@
/* maketree.c -- make inffixed.h table for decoding fixed codes
* Copyright (C) 1995-2002 Mark Adler
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
/* This program is included in the distribution for completeness.
You do not need to compile or run this program since inffixed.h
is already included in the distribution. To use this program
you need to compile zlib with BUILDFIXED defined and then compile
and link this program with the zlib library. Then the output of
this program can be piped to inffixed.h. */
#include <stdio.h>
#include <stdlib.h>
#include "zutil.h"
#include "inftrees.h"
/* simplify the use of the inflate_huft type with some defines */
#define exop word.what.Exop
#define bits word.what.Bits
/* generate initialization table for an inflate_huft structure array */
void maketree(uInt b, inflate_huft *t)
{
int i, e;
i = 0;
while (1)
{
e = t[i].exop;
if (e && (e & (16+64)) == 0) /* table pointer */
{
fprintf(stderr, "maketree: cannot initialize sub-tables!\n");
exit(1);
}
if (i % 4 == 0)
printf("\n ");
printf(" {{{%u,%u}},%u}", t[i].exop, t[i].bits, t[i].base);
if (++i == (1<<b))
break;
putchar(',');
}
puts("");
}
/* create the fixed tables in C initialization syntax */
void main(void)
{
int r;
uInt bl, bd;
inflate_huft *tl, *td;
z_stream z;
z.zalloc = zcalloc;
z.opaque = (voidpf)0;
z.zfree = zcfree;
r = inflate_trees_fixed(&bl, &bd, &tl, &td, &z);
if (r)
{
fprintf(stderr, "inflate_trees_fixed error %d\n", r);
return;
}
puts("/* inffixed.h -- table for decoding fixed codes");
puts(" * Generated automatically by the maketree.c program");
puts(" */");
puts("");
puts("/* WARNING: this file should *not* be used by applications. It is");
puts(" part of the implementation of the compression library and is");
puts(" subject to change. Applications should only use zlib.h.");
puts(" */");
puts("");
printf("local uInt fixed_bl = %d;\n", bl);
printf("local uInt fixed_bd = %d;\n", bd);
printf("local inflate_huft fixed_tl[] = {");
maketree(bl, tl);
puts(" };");
printf("local inflate_huft fixed_td[] = {");
maketree(bd, td);
puts(" };");
}

View File

@@ -1,320 +0,0 @@
/* minigzip.c -- simulate gzip using the zlib compression library
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/*
* minigzip is a minimal implementation of the gzip utility. This is
* only an example of using zlib and isn't meant to replace the
* full-featured gzip. No attempt is made to deal with file systems
* limiting names to 14 or 8+3 characters, etc... Error checking is
* very limited. So use minigzip only for testing; use gzip for the
* real thing. On MSDOS, use only on file names without extension
* or in pipe mode.
*/
/* @(#) $Id$ */
#include <stdio.h>
#include "zlib.h"
#ifdef STDC
# include <string.h>
# include <stdlib.h>
#else
extern void exit OF((int));
#endif
#ifdef USE_MMAP
# include <sys/types.h>
# include <sys/mman.h>
# include <sys/stat.h>
#endif
#if defined(MSDOS) || defined(OS2) || defined(WIN32)
# include <fcntl.h>
# include <io.h>
# define SET_BINARY_MODE(file) setmode(fileno(file), O_BINARY)
#else
# define SET_BINARY_MODE(file)
#endif
#ifdef VMS
# define unlink delete
# define GZ_SUFFIX "-gz"
#endif
#ifdef RISCOS
# define unlink remove
# define GZ_SUFFIX "-gz"
# define fileno(file) file->__file
#endif
#if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
# include <unix.h> /* for fileno */
#endif
#ifndef WIN32 /* unlink already in stdio.h for WIN32 */
extern int unlink OF((const char *));
#endif
#ifndef GZ_SUFFIX
# define GZ_SUFFIX ".gz"
#endif
#define SUFFIX_LEN (sizeof(GZ_SUFFIX)-1)
#define BUFLEN 16384
#define MAX_NAME_LEN 1024
#ifdef MAXSEG_64K
# define local static
/* Needed for systems with limitation on stack size. */
#else
# define local
#endif
char *prog;
void error OF((const char *msg));
void gz_compress OF((FILE *in, gzFile out));
#ifdef USE_MMAP
int gz_compress_mmap OF((FILE *in, gzFile out));
#endif
void gz_uncompress OF((gzFile in, FILE *out));
void file_compress OF((char *file, char *mode));
void file_uncompress OF((char *file));
int main OF((int argc, char *argv[]));
/* ===========================================================================
* Display error message and exit
*/
void error(msg)
const char *msg;
{
fprintf(stderr, "%s: %s\n", prog, msg);
exit(1);
}
/* ===========================================================================
* Compress input to output then close both files.
*/
void gz_compress(in, out)
FILE *in;
gzFile out;
{
local char buf[BUFLEN];
int len;
int err;
#ifdef USE_MMAP
/* Try first compressing with mmap. If mmap fails (minigzip used in a
* pipe), use the normal fread loop.
*/
if (gz_compress_mmap(in, out) == Z_OK) return;
#endif
for (;;) {
len = fread(buf, 1, sizeof(buf), in);
if (ferror(in)) {
perror("fread");
exit(1);
}
if (len == 0) break;
if (gzwrite(out, buf, (unsigned)len) != len) error(gzerror(out, &err));
}
fclose(in);
if (gzclose(out) != Z_OK) error("failed gzclose");
}
#ifdef USE_MMAP /* MMAP version, Miguel Albrecht <malbrech@eso.org> */
/* Try compressing the input file at once using mmap. Return Z_OK if
* if success, Z_ERRNO otherwise.
*/
int gz_compress_mmap(in, out)
FILE *in;
gzFile out;
{
int len;
int err;
int ifd = fileno(in);
caddr_t buf; /* mmap'ed buffer for the entire input file */
off_t buf_len; /* length of the input file */
struct stat sb;
/* Determine the size of the file, needed for mmap: */
if (fstat(ifd, &sb) < 0) return Z_ERRNO;
buf_len = sb.st_size;
if (buf_len <= 0) return Z_ERRNO;
/* Now do the actual mmap: */
buf = mmap((caddr_t) 0, buf_len, PROT_READ, MAP_SHARED, ifd, (off_t)0);
if (buf == (caddr_t)(-1)) return Z_ERRNO;
/* Compress the whole file at once: */
len = gzwrite(out, (char *)buf, (unsigned)buf_len);
if (len != (int)buf_len) error(gzerror(out, &err));
munmap(buf, buf_len);
fclose(in);
if (gzclose(out) != Z_OK) error("failed gzclose");
return Z_OK;
}
#endif /* USE_MMAP */
/* ===========================================================================
* Uncompress input to output then close both files.
*/
void gz_uncompress(in, out)
gzFile in;
FILE *out;
{
local char buf[BUFLEN];
int len;
int err;
for (;;) {
len = gzread(in, buf, sizeof(buf));
if (len < 0) error (gzerror(in, &err));
if (len == 0) break;
if ((int)fwrite(buf, 1, (unsigned)len, out) != len) {
error("failed fwrite");
}
}
if (fclose(out)) error("failed fclose");
if (gzclose(in) != Z_OK) error("failed gzclose");
}
/* ===========================================================================
* Compress the given file: create a corresponding .gz file and remove the
* original.
*/
void file_compress(file, mode)
char *file;
char *mode;
{
local char outfile[MAX_NAME_LEN];
FILE *in;
gzFile out;
strcpy(outfile, file);
strcat(outfile, GZ_SUFFIX);
in = fopen(file, "rb");
if (in == NULL) {
perror(file);
exit(1);
}
out = gzopen(outfile, mode);
if (out == NULL) {
fprintf(stderr, "%s: can't gzopen %s\n", prog, outfile);
exit(1);
}
gz_compress(in, out);
unlink(file);
}
/* ===========================================================================
* Uncompress the given file and remove the original.
*/
void file_uncompress(file)
char *file;
{
local char buf[MAX_NAME_LEN];
char *infile, *outfile;
FILE *out;
gzFile in;
int len = strlen(file);
strcpy(buf, file);
if (len > SUFFIX_LEN && strcmp(file+len-SUFFIX_LEN, GZ_SUFFIX) == 0) {
infile = file;
outfile = buf;
outfile[len-3] = '\0';
} else {
outfile = file;
infile = buf;
strcat(infile, GZ_SUFFIX);
}
in = gzopen(infile, "rb");
if (in == NULL) {
fprintf(stderr, "%s: can't gzopen %s\n", prog, infile);
exit(1);
}
out = fopen(outfile, "wb");
if (out == NULL) {
perror(file);
exit(1);
}
gz_uncompress(in, out);
unlink(infile);
}
/* ===========================================================================
* Usage: minigzip [-d] [-f] [-h] [-1 to -9] [files...]
* -d : decompress
* -f : compress with Z_FILTERED
* -h : compress with Z_HUFFMAN_ONLY
* -1 to -9 : compression level
*/
int main(argc, argv)
int argc;
char *argv[];
{
int uncompr = 0;
gzFile file;
char outmode[20];
strcpy(outmode, "wb6 ");
prog = argv[0];
argc--, argv++;
while (argc > 0) {
if (strcmp(*argv, "-d") == 0)
uncompr = 1;
else if (strcmp(*argv, "-f") == 0)
outmode[3] = 'f';
else if (strcmp(*argv, "-h") == 0)
outmode[3] = 'h';
else if ((*argv)[0] == '-' && (*argv)[1] >= '1' && (*argv)[1] <= '9' &&
(*argv)[2] == 0)
outmode[2] = (*argv)[1];
else
break;
argc--, argv++;
}
if (argc == 0) {
SET_BINARY_MODE(stdin);
SET_BINARY_MODE(stdout);
if (uncompr) {
file = gzdopen(fileno(stdin), "rb");
if (file == NULL) error("can't gzdopen stdin");
gz_uncompress(file, stdout);
} else {
file = gzdopen(fileno(stdout), outmode);
if (file == NULL) error("can't gzdopen stdout");
gz_compress(stdin, file);
}
} else {
do {
if (uncompr) {
file_uncompress(*argv);
} else {
file_compress(*argv, outmode);
}
} while (argv++, --argc);
}
exit(0);
return 0; /* to avoid warning */
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,128 +0,0 @@
/* header created automatically with -DGEN_TREES_H */
local const ct_data static_ltree[L_CODES+2] = {
{{ 12},{ 8}}, {{140},{ 8}}, {{ 76},{ 8}}, {{204},{ 8}}, {{ 44},{ 8}},
{{172},{ 8}}, {{108},{ 8}}, {{236},{ 8}}, {{ 28},{ 8}}, {{156},{ 8}},
{{ 92},{ 8}}, {{220},{ 8}}, {{ 60},{ 8}}, {{188},{ 8}}, {{124},{ 8}},
{{252},{ 8}}, {{ 2},{ 8}}, {{130},{ 8}}, {{ 66},{ 8}}, {{194},{ 8}},
{{ 34},{ 8}}, {{162},{ 8}}, {{ 98},{ 8}}, {{226},{ 8}}, {{ 18},{ 8}},
{{146},{ 8}}, {{ 82},{ 8}}, {{210},{ 8}}, {{ 50},{ 8}}, {{178},{ 8}},
{{114},{ 8}}, {{242},{ 8}}, {{ 10},{ 8}}, {{138},{ 8}}, {{ 74},{ 8}},
{{202},{ 8}}, {{ 42},{ 8}}, {{170},{ 8}}, {{106},{ 8}}, {{234},{ 8}},
{{ 26},{ 8}}, {{154},{ 8}}, {{ 90},{ 8}}, {{218},{ 8}}, {{ 58},{ 8}},
{{186},{ 8}}, {{122},{ 8}}, {{250},{ 8}}, {{ 6},{ 8}}, {{134},{ 8}},
{{ 70},{ 8}}, {{198},{ 8}}, {{ 38},{ 8}}, {{166},{ 8}}, {{102},{ 8}},
{{230},{ 8}}, {{ 22},{ 8}}, {{150},{ 8}}, {{ 86},{ 8}}, {{214},{ 8}},
{{ 54},{ 8}}, {{182},{ 8}}, {{118},{ 8}}, {{246},{ 8}}, {{ 14},{ 8}},
{{142},{ 8}}, {{ 78},{ 8}}, {{206},{ 8}}, {{ 46},{ 8}}, {{174},{ 8}},
{{110},{ 8}}, {{238},{ 8}}, {{ 30},{ 8}}, {{158},{ 8}}, {{ 94},{ 8}},
{{222},{ 8}}, {{ 62},{ 8}}, {{190},{ 8}}, {{126},{ 8}}, {{254},{ 8}},
{{ 1},{ 8}}, {{129},{ 8}}, {{ 65},{ 8}}, {{193},{ 8}}, {{ 33},{ 8}},
{{161},{ 8}}, {{ 97},{ 8}}, {{225},{ 8}}, {{ 17},{ 8}}, {{145},{ 8}},
{{ 81},{ 8}}, {{209},{ 8}}, {{ 49},{ 8}}, {{177},{ 8}}, {{113},{ 8}},
{{241},{ 8}}, {{ 9},{ 8}}, {{137},{ 8}}, {{ 73},{ 8}}, {{201},{ 8}},
{{ 41},{ 8}}, {{169},{ 8}}, {{105},{ 8}}, {{233},{ 8}}, {{ 25},{ 8}},
{{153},{ 8}}, {{ 89},{ 8}}, {{217},{ 8}}, {{ 57},{ 8}}, {{185},{ 8}},
{{121},{ 8}}, {{249},{ 8}}, {{ 5},{ 8}}, {{133},{ 8}}, {{ 69},{ 8}},
{{197},{ 8}}, {{ 37},{ 8}}, {{165},{ 8}}, {{101},{ 8}}, {{229},{ 8}},
{{ 21},{ 8}}, {{149},{ 8}}, {{ 85},{ 8}}, {{213},{ 8}}, {{ 53},{ 8}},
{{181},{ 8}}, {{117},{ 8}}, {{245},{ 8}}, {{ 13},{ 8}}, {{141},{ 8}},
{{ 77},{ 8}}, {{205},{ 8}}, {{ 45},{ 8}}, {{173},{ 8}}, {{109},{ 8}},
{{237},{ 8}}, {{ 29},{ 8}}, {{157},{ 8}}, {{ 93},{ 8}}, {{221},{ 8}},
{{ 61},{ 8}}, {{189},{ 8}}, {{125},{ 8}}, {{253},{ 8}}, {{ 19},{ 9}},
{{275},{ 9}}, {{147},{ 9}}, {{403},{ 9}}, {{ 83},{ 9}}, {{339},{ 9}},
{{211},{ 9}}, {{467},{ 9}}, {{ 51},{ 9}}, {{307},{ 9}}, {{179},{ 9}},
{{435},{ 9}}, {{115},{ 9}}, {{371},{ 9}}, {{243},{ 9}}, {{499},{ 9}},
{{ 11},{ 9}}, {{267},{ 9}}, {{139},{ 9}}, {{395},{ 9}}, {{ 75},{ 9}},
{{331},{ 9}}, {{203},{ 9}}, {{459},{ 9}}, {{ 43},{ 9}}, {{299},{ 9}},
{{171},{ 9}}, {{427},{ 9}}, {{107},{ 9}}, {{363},{ 9}}, {{235},{ 9}},
{{491},{ 9}}, {{ 27},{ 9}}, {{283},{ 9}}, {{155},{ 9}}, {{411},{ 9}},
{{ 91},{ 9}}, {{347},{ 9}}, {{219},{ 9}}, {{475},{ 9}}, {{ 59},{ 9}},
{{315},{ 9}}, {{187},{ 9}}, {{443},{ 9}}, {{123},{ 9}}, {{379},{ 9}},
{{251},{ 9}}, {{507},{ 9}}, {{ 7},{ 9}}, {{263},{ 9}}, {{135},{ 9}},
{{391},{ 9}}, {{ 71},{ 9}}, {{327},{ 9}}, {{199},{ 9}}, {{455},{ 9}},
{{ 39},{ 9}}, {{295},{ 9}}, {{167},{ 9}}, {{423},{ 9}}, {{103},{ 9}},
{{359},{ 9}}, {{231},{ 9}}, {{487},{ 9}}, {{ 23},{ 9}}, {{279},{ 9}},
{{151},{ 9}}, {{407},{ 9}}, {{ 87},{ 9}}, {{343},{ 9}}, {{215},{ 9}},
{{471},{ 9}}, {{ 55},{ 9}}, {{311},{ 9}}, {{183},{ 9}}, {{439},{ 9}},
{{119},{ 9}}, {{375},{ 9}}, {{247},{ 9}}, {{503},{ 9}}, {{ 15},{ 9}},
{{271},{ 9}}, {{143},{ 9}}, {{399},{ 9}}, {{ 79},{ 9}}, {{335},{ 9}},
{{207},{ 9}}, {{463},{ 9}}, {{ 47},{ 9}}, {{303},{ 9}}, {{175},{ 9}},
{{431},{ 9}}, {{111},{ 9}}, {{367},{ 9}}, {{239},{ 9}}, {{495},{ 9}},
{{ 31},{ 9}}, {{287},{ 9}}, {{159},{ 9}}, {{415},{ 9}}, {{ 95},{ 9}},
{{351},{ 9}}, {{223},{ 9}}, {{479},{ 9}}, {{ 63},{ 9}}, {{319},{ 9}},
{{191},{ 9}}, {{447},{ 9}}, {{127},{ 9}}, {{383},{ 9}}, {{255},{ 9}},
{{511},{ 9}}, {{ 0},{ 7}}, {{ 64},{ 7}}, {{ 32},{ 7}}, {{ 96},{ 7}},
{{ 16},{ 7}}, {{ 80},{ 7}}, {{ 48},{ 7}}, {{112},{ 7}}, {{ 8},{ 7}},
{{ 72},{ 7}}, {{ 40},{ 7}}, {{104},{ 7}}, {{ 24},{ 7}}, {{ 88},{ 7}},
{{ 56},{ 7}}, {{120},{ 7}}, {{ 4},{ 7}}, {{ 68},{ 7}}, {{ 36},{ 7}},
{{100},{ 7}}, {{ 20},{ 7}}, {{ 84},{ 7}}, {{ 52},{ 7}}, {{116},{ 7}},
{{ 3},{ 8}}, {{131},{ 8}}, {{ 67},{ 8}}, {{195},{ 8}}, {{ 35},{ 8}},
{{163},{ 8}}, {{ 99},{ 8}}, {{227},{ 8}}
};
local const ct_data static_dtree[D_CODES] = {
{{ 0},{ 5}}, {{16},{ 5}}, {{ 8},{ 5}}, {{24},{ 5}}, {{ 4},{ 5}},
{{20},{ 5}}, {{12},{ 5}}, {{28},{ 5}}, {{ 2},{ 5}}, {{18},{ 5}},
{{10},{ 5}}, {{26},{ 5}}, {{ 6},{ 5}}, {{22},{ 5}}, {{14},{ 5}},
{{30},{ 5}}, {{ 1},{ 5}}, {{17},{ 5}}, {{ 9},{ 5}}, {{25},{ 5}},
{{ 5},{ 5}}, {{21},{ 5}}, {{13},{ 5}}, {{29},{ 5}}, {{ 3},{ 5}},
{{19},{ 5}}, {{11},{ 5}}, {{27},{ 5}}, {{ 7},{ 5}}, {{23},{ 5}}
};
const uch _dist_code[DIST_CODE_LEN] = {
0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8,
8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10,
10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11,
11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13,
13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14,
14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15,
15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17,
18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22,
23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29
};
const uch _length_code[MAX_MATCH-MIN_MATCH+1]= {
0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12,
13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16,
17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19,
19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22,
22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23,
23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26,
26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27,
27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28
};
local const int base_length[LENGTH_CODES] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56,
64, 80, 96, 112, 128, 160, 192, 224, 0
};
local const int base_dist[D_CODES] = {
0, 1, 2, 3, 4, 6, 8, 12, 16, 24,
32, 48, 64, 96, 128, 192, 256, 384, 512, 768,
1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576
};

View File

@@ -1,58 +0,0 @@
/* uncompr.c -- decompress a memory buffer
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include "zlib.h"
/* ===========================================================================
Decompresses the source buffer into the destination buffer. sourceLen is
the byte length of the source buffer. Upon entry, destLen is the total
size of the destination buffer, which must be large enough to hold the
entire uncompressed data. (The size of the uncompressed data must have
been saved previously by the compressor and transmitted to the decompressor
by some mechanism outside the scope of this compression library.)
Upon exit, destLen is the actual size of the compressed buffer.
This function can be used to decompress a whole file at once if the
input file is mmap'ed.
uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
enough memory, Z_BUF_ERROR if there was not enough room in the output
buffer, or Z_DATA_ERROR if the input data was corrupted.
*/
int ZEXPORT uncompress (dest, destLen, source, sourceLen)
Bytef *dest;
uLongf *destLen;
const Bytef *source;
uLong sourceLen;
{
z_stream stream;
int err;
stream.next_in = (Bytef*)source;
stream.avail_in = (uInt)sourceLen;
/* Check for source > 64K on 16-bit machine: */
if ((uLong)stream.avail_in != sourceLen) return Z_BUF_ERROR;
stream.next_out = dest;
stream.avail_out = (uInt)*destLen;
if ((uLong)stream.avail_out != *destLen) return Z_BUF_ERROR;
stream.zalloc = (alloc_func)0;
stream.zfree = (free_func)0;
err = inflateInit(&stream);
if (err != Z_OK) return err;
err = inflate(&stream, Z_FINISH);
if (err != Z_STREAM_END) {
inflateEnd(&stream);
return err == Z_OK ? Z_BUF_ERROR : err;
}
*destLen = stream.total_out;
err = inflateEnd(&stream);
return err;
}

View File

@@ -1,279 +0,0 @@
/* zconf.h -- configuration of the zlib compression library
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#ifndef _ZCONF_H
#define _ZCONF_H
/*
* If you *really* need a unique prefix for all types and library functions,
* compile with -DZ_PREFIX. The "standard" zlib should be compiled without it.
*/
#ifdef Z_PREFIX
# define deflateInit_ z_deflateInit_
# define deflate z_deflate
# define deflateEnd z_deflateEnd
# define inflateInit_ z_inflateInit_
# define inflate z_inflate
# define inflateEnd z_inflateEnd
# define deflateInit2_ z_deflateInit2_
# define deflateSetDictionary z_deflateSetDictionary
# define deflateCopy z_deflateCopy
# define deflateReset z_deflateReset
# define deflateParams z_deflateParams
# define inflateInit2_ z_inflateInit2_
# define inflateSetDictionary z_inflateSetDictionary
# define inflateSync z_inflateSync
# define inflateSyncPoint z_inflateSyncPoint
# define inflateReset z_inflateReset
# define compress z_compress
# define compress2 z_compress2
# define uncompress z_uncompress
# define adler32 z_adler32
# define crc32 z_crc32
# define get_crc_table z_get_crc_table
# define Byte z_Byte
# define uInt z_uInt
# define uLong z_uLong
# define Bytef z_Bytef
# define charf z_charf
# define intf z_intf
# define uIntf z_uIntf
# define uLongf z_uLongf
# define voidpf z_voidpf
# define voidp z_voidp
#endif
#if (defined(_WIN32) || defined(__WIN32__)) && !defined(WIN32)
# define WIN32
#endif
#if defined(__GNUC__) || defined(WIN32) || defined(__386__) || defined(i386)
# ifndef __32BIT__
# define __32BIT__
# endif
#endif
#if defined(__MSDOS__) && !defined(MSDOS)
# define MSDOS
#endif
/*
* Compile with -DMAXSEG_64K if the alloc function cannot allocate more
* than 64k bytes at a time (needed on systems with 16-bit int).
*/
#if defined(MSDOS) && !defined(__32BIT__)
# define MAXSEG_64K
#endif
#ifdef MSDOS
# define UNALIGNED_OK
#endif
#if (defined(MSDOS) || defined(_WINDOWS) || defined(WIN32)) && !defined(STDC)
# define STDC
#endif
#if defined(__STDC__) || defined(__cplusplus) || defined(__OS2__)
# ifndef STDC
# define STDC
# endif
#endif
#ifndef STDC
# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */
# define const
# endif
#endif
/* Some Mac compilers merge all .h files incorrectly: */
#if defined(__MWERKS__) || defined(applec) ||defined(THINK_C) ||defined(__SC__)
# define NO_DUMMY_DECL
#endif
/* Old Borland C incorrectly complains about missing returns: */
#if defined(__BORLANDC__) && (__BORLANDC__ < 0x500)
# define NEED_DUMMY_RETURN
#endif
/* Maximum value for memLevel in deflateInit2 */
#ifndef MAX_MEM_LEVEL
# ifdef MAXSEG_64K
# define MAX_MEM_LEVEL 8
# else
# define MAX_MEM_LEVEL 9
# endif
#endif
/* Maximum value for windowBits in deflateInit2 and inflateInit2.
* WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files
* created by gzip. (Files created by minigzip can still be extracted by
* gzip.)
*/
#ifndef MAX_WBITS
# define MAX_WBITS 15 /* 32K LZ77 window */
#endif
/* The memory requirements for deflate are (in bytes):
(1 << (windowBits+2)) + (1 << (memLevel+9))
that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values)
plus a few kilobytes for small objects. For example, if you want to reduce
the default memory requirements from 256K to 128K, compile with
make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7"
Of course this will generally degrade compression (there's no free lunch).
The memory requirements for inflate are (in bytes) 1 << windowBits
that is, 32K for windowBits=15 (default value) plus a few kilobytes
for small objects.
*/
/* Type declarations */
#ifndef OF /* function prototypes */
# ifdef STDC
# define OF(args) args
# else
# define OF(args) ()
# endif
#endif
/* The following definitions for FAR are needed only for MSDOS mixed
* model programming (small or medium model with some far allocations).
* This was tested only with MSC; for other MSDOS compilers you may have
* to define NO_MEMCPY in zutil.h. If you don't need the mixed model,
* just define FAR to be empty.
*/
#if (defined(M_I86SM) || defined(M_I86MM)) && !defined(__32BIT__)
/* MSC small or medium model */
# define SMALL_MEDIUM
# ifdef _MSC_VER
# define FAR _far
# else
# define FAR far
# endif
#endif
#if defined(__BORLANDC__) && (defined(__SMALL__) || defined(__MEDIUM__))
# ifndef __32BIT__
# define SMALL_MEDIUM
# define FAR _far
# endif
#endif
/* Compile with -DZLIB_DLL for Windows DLL support */
#if defined(ZLIB_DLL)
# if defined(_WINDOWS) || defined(WINDOWS)
# ifdef FAR
# undef FAR
# endif
# include <windows.h>
# define ZEXPORT WINAPI
# ifdef WIN32
# define ZEXPORTVA WINAPIV
# else
# define ZEXPORTVA FAR _cdecl _export
# endif
# endif
# if defined (__BORLANDC__)
# if (__BORLANDC__ >= 0x0500) && defined (WIN32)
# include <windows.h>
# define ZEXPORT __declspec(dllexport) WINAPI
# define ZEXPORTRVA __declspec(dllexport) WINAPIV
# else
# if defined (_Windows) && defined (__DLL__)
# define ZEXPORT _export
# define ZEXPORTVA _export
# endif
# endif
# endif
#endif
#if defined (__BEOS__)
# if defined (ZLIB_DLL)
# define ZEXTERN extern __declspec(dllexport)
# else
# define ZEXTERN extern __declspec(dllimport)
# endif
#endif
#ifndef ZEXPORT
# define ZEXPORT
#endif
#ifndef ZEXPORTVA
# define ZEXPORTVA
#endif
#ifndef ZEXTERN
# define ZEXTERN extern
#endif
#ifndef FAR
# define FAR
#endif
#if !defined(MACOS) && !defined(TARGET_OS_MAC)
typedef unsigned char Byte; /* 8 bits */
#endif
typedef unsigned int uInt; /* 16 bits or more */
typedef unsigned long uLong; /* 32 bits or more */
#ifdef SMALL_MEDIUM
/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */
# define Bytef Byte FAR
#else
typedef Byte FAR Bytef;
#endif
typedef char FAR charf;
typedef int FAR intf;
typedef uInt FAR uIntf;
typedef uLong FAR uLongf;
#ifdef STDC
typedef void FAR *voidpf;
typedef void *voidp;
#else
typedef Byte FAR *voidpf;
typedef Byte *voidp;
#endif
#ifdef HAVE_UNISTD_H
# include <sys/types.h> /* for off_t */
# include <unistd.h> /* for SEEK_* and off_t */
# define z_off_t off_t
#endif
#ifndef SEEK_SET
# define SEEK_SET 0 /* Seek from beginning of file. */
# define SEEK_CUR 1 /* Seek from current position. */
# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */
#endif
#ifndef z_off_t
# define z_off_t long
#endif
/* MVS linker does not support external names larger than 8 bytes */
#if defined(__MVS__)
# pragma map(deflateInit_,"DEIN")
# pragma map(deflateInit2_,"DEIN2")
# pragma map(deflateEnd,"DEEND")
# pragma map(inflateInit_,"ININ")
# pragma map(inflateInit2_,"ININ2")
# pragma map(inflateEnd,"INEND")
# pragma map(inflateSync,"INSY")
# pragma map(inflateSetDictionary,"INSEDI")
# pragma map(inflate_blocks,"INBL")
# pragma map(inflate_blocks_new,"INBLNE")
# pragma map(inflate_blocks_free,"INBLFR")
# pragma map(inflate_blocks_reset,"INBLRE")
# pragma map(inflate_codes_free,"INCOFR")
# pragma map(inflate_codes,"INCO")
# pragma map(inflate_fast,"INFA")
# pragma map(inflate_flush,"INFLU")
# pragma map(inflate_mask,"INMA")
# pragma map(inflate_set_dictionary,"INSEDI2")
# pragma map(inflate_copyright,"INCOPY")
# pragma map(inflate_trees_bits,"INTRBI")
# pragma map(inflate_trees_dynamic,"INTRDY")
# pragma map(inflate_trees_fixed,"INTRFI")
# pragma map(inflate_trees_free,"INTRFR")
#endif
#endif /* _ZCONF_H */

View File

@@ -1,107 +0,0 @@
.TH ZLIB 3 "11 March 2002"
.SH NAME
zlib \- compression/decompression library
.SH SYNOPSIS
[see
.I zlib.h
for full description]
.SH DESCRIPTION
The
.I zlib
library is a general purpose data compression library.
The code is thread safe.
It provides in-memory compression and decompression functions,
including integrity checks of the uncompressed data.
This version of the library supports only one compression method (deflation)
but other algorithms will be added later and will have the same stream interface.
.LP
Compression can be done in a single step if the buffers are large enough
(for example if an input file is mmap'ed),
or can be done by repeated calls of the compression function.
In the latter case,
the application must provide more input and/or consume the output
(providing more output space) before each call.
.LP
The library also supports reading and writing files in
.I gzip
(.gz) format
with an interface similar to that of stdio.
.LP
The library does not install any signal handler. The decoder checks
the consistency of the compressed data, so the library should never
crash even in case of corrupted input.
.LP
All functions of the compression library are documented in the file
.IR zlib.h.
The distribution source includes examples of use of the library
the files
.I example.c
and
.IR minigzip.c .
.LP
A Java implementation of
.IR zlib
is available in the Java Development Kit 1.1
.IP
http://www.javasoft.com/products/JDK/1.1/docs/api/Package-java.util.zip.html
.LP
A Perl interface to
.IR zlib ,
written by Paul Marquess (pmarquess@bfsec.bt.co.uk)
is available at CPAN (Comprehensive Perl Archive Network) sites,
such as:
.IP
ftp://ftp.cis.ufl.edu/pub/perl/CPAN/modules/by-module/Compress/Compress-Zlib*
.LP
A Python interface to
.IR zlib
written by A.M. Kuchling <amk@magnet.com>
is available from the Python Software Association sites, such as:
.IP
ftp://ftp.python.org/pub/python/contrib/Encoding/zlib*.tar.gz
.SH "SEE ALSO"
Questions about zlib should be sent to:
.IP
zlib@quest.jpl.nasa.gov
or, if this fails, to the author addresses given below.
The zlib home page is:
.IP
http://www.cdrom.com/pub/infozip/zlib/
.LP
The data format used by the zlib library is described by RFC
(Request for Comments) 1950 to 1952 in the files:
.IP
ftp://ds.internic.net/rfc/rfc1950.txt (zlib format)
.br
rfc1951.txt (deflate format)
.br
rfc1952.txt (gzip format)
.LP
These documents are also available in other formats from:
.IP
ftp://ftp.uu.net/graphics/png/documents/zlib/zdoc-index.html
.SH AUTHORS
Version 1.1.4
Copyright (C) 1995-2002 Jean-loup Gailly (jloup@gzip.org)
and Mark Adler (madler@alumni.caltech.edu).
.LP
This software is provided "as-is,"
without any express or implied warranty.
In no event will the authors be held liable for any damages
arising from the use of this software.
See the distribution directory with respect to requirements
governing redistribution.
The deflate format used by
.I zlib
was defined by Phil Katz.
The deflate and
.I zlib
specifications were written by L. Peter Deutsch.
Thanks to all the people who reported problems and suggested various
improvements in
.IR zlib ;
who are too numerous to cite here.
.LP
UNIX manual page by R. P. C. Rodgers,
U.S. National Library of Medicine (rodgers@nlm.nih.gov).
.\" end of man page

View File

@@ -1,149 +0,0 @@
# Microsoft Developer Studio Project File - Name="zlib" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=zlib - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "ZlibVC.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "ZlibVC.mak" CFG="zlib - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "zlib - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "zlib - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName "ZlibVC"
# PROP Scc_LocalPath "."
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "zlib - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
# ADD CPP /nologo /MD /W1 /O1 /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x809 /d "NDEBUG"
# ADD RSC /l 0x809 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\lib\zlib.lib"
!ELSEIF "$(CFG)" == "zlib - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
# ADD CPP /nologo /MDd /W1 /Gm /Zi /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /YX /FD /GZ /c
# ADD BASE RSC /l 0x809 /d "_DEBUG"
# ADD RSC /l 0x809 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\lib\zlibd.lib"
!ENDIF
# Begin Target
# Name "zlib - Win32 Release"
# Name "zlib - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\adler32.c
# End Source File
# Begin Source File
SOURCE=.\compress.c
# End Source File
# Begin Source File
SOURCE=.\crc32.c
# End Source File
# Begin Source File
SOURCE=.\deflate.c
# End Source File
# Begin Source File
SOURCE=.\gzio.c
# End Source File
# Begin Source File
SOURCE=.\infblock.c
# End Source File
# Begin Source File
SOURCE=.\infcodes.c
# End Source File
# Begin Source File
SOURCE=.\inffast.c
# End Source File
# Begin Source File
SOURCE=.\inflate.c
# End Source File
# Begin Source File
SOURCE=.\inftrees.c
# End Source File
# Begin Source File
SOURCE=.\infutil.c
# End Source File
# Begin Source File
SOURCE=.\trees.c
# End Source File
# Begin Source File
SOURCE=.\uncompr.c
# End Source File
# Begin Source File
SOURCE=.\zutil.c
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# End Group
# End Target
# End Project

View File

@@ -1,29 +0,0 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "zlib"=.\ZlibVC.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -1,893 +0,0 @@
/* zlib.h -- interface of the 'zlib' general purpose compression library
version 1.1.4, March 11th, 2002
Copyright (C) 1995-2002 Jean-loup Gailly and Mark Adler
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
Jean-loup Gailly Mark Adler
jloup@gzip.org madler@alumni.caltech.edu
The data format used by the zlib library is described by RFCs (Request for
Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
(zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
*/
#ifndef _ZLIB_H
#define _ZLIB_H
#include "zconf.h"
#ifdef __cplusplus
extern "C" {
#endif
#define ZLIB_VERSION "1.1.4"
/*
The 'zlib' compression library provides in-memory compression and
decompression functions, including integrity checks of the uncompressed
data. This version of the library supports only one compression method
(deflation) but other algorithms will be added later and will have the same
stream interface.
Compression can be done in a single step if the buffers are large
enough (for example if an input file is mmap'ed), or can be done by
repeated calls of the compression function. In the latter case, the
application must provide more input and/or consume the output
(providing more output space) before each call.
The library also supports reading and writing files in gzip (.gz) format
with an interface similar to that of stdio.
The library does not install any signal handler. The decoder checks
the consistency of the compressed data, so the library should never
crash even in case of corrupted input.
*/
typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
typedef void (*free_func) OF((voidpf opaque, voidpf address));
struct internal_state;
typedef struct z_stream_s {
Bytef *next_in; /* next input byte */
uInt avail_in; /* number of bytes available at next_in */
uLong total_in; /* total nb of input bytes read so far */
Bytef *next_out; /* next output byte should be put there */
uInt avail_out; /* remaining free space at next_out */
uLong total_out; /* total nb of bytes output so far */
char *msg; /* last error message, NULL if no error */
struct internal_state FAR *state; /* not visible by applications */
alloc_func zalloc; /* used to allocate the internal state */
free_func zfree; /* used to free the internal state */
voidpf opaque; /* private data object passed to zalloc and zfree */
int data_type; /* best guess about the data type: ascii or binary */
uLong adler; /* adler32 value of the uncompressed data */
uLong reserved; /* reserved for future use */
} z_stream;
typedef z_stream FAR *z_streamp;
/*
The application must update next_in and avail_in when avail_in has
dropped to zero. It must update next_out and avail_out when avail_out
has dropped to zero. The application must initialize zalloc, zfree and
opaque before calling the init function. All other fields are set by the
compression library and must not be updated by the application.
The opaque value provided by the application will be passed as the first
parameter for calls of zalloc and zfree. This can be useful for custom
memory management. The compression library attaches no meaning to the
opaque value.
zalloc must return Z_NULL if there is not enough memory for the object.
If zlib is used in a multi-threaded application, zalloc and zfree must be
thread safe.
On 16-bit systems, the functions zalloc and zfree must be able to allocate
exactly 65536 bytes, but will not be required to allocate more than this
if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
pointers returned by zalloc for objects of exactly 65536 bytes *must*
have their offset normalized to zero. The default allocation function
provided by this library ensures this (see zutil.c). To reduce memory
requirements and avoid any allocation of 64K objects, at the expense of
compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
The fields total_in and total_out can be used for statistics or
progress reports. After compression, total_in holds the total size of
the uncompressed data and may be saved for use in the decompressor
(particularly if the decompressor wants to decompress everything in
a single step).
*/
/* constants */
#define Z_NO_FLUSH 0
#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
#define Z_SYNC_FLUSH 2
#define Z_FULL_FLUSH 3
#define Z_FINISH 4
/* Allowed flush values; see deflate() below for details */
#define Z_OK 0
#define Z_STREAM_END 1
#define Z_NEED_DICT 2
#define Z_ERRNO (-1)
#define Z_STREAM_ERROR (-2)
#define Z_DATA_ERROR (-3)
#define Z_MEM_ERROR (-4)
#define Z_BUF_ERROR (-5)
#define Z_VERSION_ERROR (-6)
/* Return codes for the compression/decompression functions. Negative
* values are errors, positive values are used for special but normal events.
*/
#define Z_NO_COMPRESSION 0
#define Z_BEST_SPEED 1
#define Z_BEST_COMPRESSION 9
#define Z_DEFAULT_COMPRESSION (-1)
/* compression levels */
#define Z_FILTERED 1
#define Z_HUFFMAN_ONLY 2
#define Z_DEFAULT_STRATEGY 0
/* compression strategy; see deflateInit2() below for details */
#define Z_BINARY 0
#define Z_ASCII 1
#define Z_UNKNOWN 2
/* Possible values of the data_type field */
#define Z_DEFLATED 8
/* The deflate compression method (the only one supported in this version) */
#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
#define zlib_version zlibVersion()
/* for compatibility with versions < 1.0.2 */
/* basic functions */
ZEXTERN const char * ZEXPORT zlibVersion OF((void));
/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
If the first character differs, the library code actually used is
not compatible with the zlib.h header file used by the application.
This check is automatically made by deflateInit and inflateInit.
*/
/*
ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
Initializes the internal stream state for compression. The fields
zalloc, zfree and opaque must be initialized before by the caller.
If zalloc and zfree are set to Z_NULL, deflateInit updates them to
use default allocation functions.
The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
1 gives best speed, 9 gives best compression, 0 gives no compression at
all (the input data is simply copied a block at a time).
Z_DEFAULT_COMPRESSION requests a default compromise between speed and
compression (currently equivalent to level 6).
deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
enough memory, Z_STREAM_ERROR if level is not a valid compression level,
Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
with the version assumed by the caller (ZLIB_VERSION).
msg is set to null if there is no error message. deflateInit does not
perform any compression: this will be done by deflate().
*/
ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
/*
deflate compresses as much data as possible, and stops when the input
buffer becomes empty or the output buffer becomes full. It may introduce some
output latency (reading input without producing any output) except when
forced to flush.
The detailed semantics are as follows. deflate performs one or both of the
following actions:
- Compress more input starting at next_in and update next_in and avail_in
accordingly. If not all input can be processed (because there is not
enough room in the output buffer), next_in and avail_in are updated and
processing will resume at this point for the next call of deflate().
- Provide more output starting at next_out and update next_out and avail_out
accordingly. This action is forced if the parameter flush is non zero.
Forcing flush frequently degrades the compression ratio, so this parameter
should be set only when necessary (in interactive applications).
Some output may be provided even if flush is not set.
Before the call of deflate(), the application should ensure that at least
one of the actions is possible, by providing more input and/or consuming
more output, and updating avail_in or avail_out accordingly; avail_out
should never be zero before the call. The application can consume the
compressed output when it wants, for example when the output buffer is full
(avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
and with zero avail_out, it must be called again after making room in the
output buffer because there might be more output pending.
If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
flushed to the output buffer and the output is aligned on a byte boundary, so
that the decompressor can get all input data available so far. (In particular
avail_in is zero after the call if enough output space has been provided
before the call.) Flushing may degrade compression for some compression
algorithms and so it should be used only when necessary.
If flush is set to Z_FULL_FLUSH, all output is flushed as with
Z_SYNC_FLUSH, and the compression state is reset so that decompression can
restart from this point if previous compressed data has been damaged or if
random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
the compression.
If deflate returns with avail_out == 0, this function must be called again
with the same value of the flush parameter and more output space (updated
avail_out), until the flush is complete (deflate returns with non-zero
avail_out).
If the parameter flush is set to Z_FINISH, pending input is processed,
pending output is flushed and deflate returns with Z_STREAM_END if there
was enough output space; if deflate returns with Z_OK, this function must be
called again with Z_FINISH and more output space (updated avail_out) but no
more input data, until it returns with Z_STREAM_END or an error. After
deflate has returned Z_STREAM_END, the only possible operations on the
stream are deflateReset or deflateEnd.
Z_FINISH can be used immediately after deflateInit if all the compression
is to be done in a single step. In this case, avail_out must be at least
0.1% larger than avail_in plus 12 bytes. If deflate does not return
Z_STREAM_END, then it must be called again as described above.
deflate() sets strm->adler to the adler32 checksum of all input read
so far (that is, total_in bytes).
deflate() may update data_type if it can make a good guess about
the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
binary. This field is only for information purposes and does not affect
the compression algorithm in any manner.
deflate() returns Z_OK if some progress has been made (more input
processed or more output produced), Z_STREAM_END if all input has been
consumed and all output has been produced (only when flush is set to
Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
(for example avail_in or avail_out was zero).
*/
ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
/*
All dynamically allocated data structures for this stream are freed.
This function discards any unprocessed input and does not flush any
pending output.
deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
stream state was inconsistent, Z_DATA_ERROR if the stream was freed
prematurely (some input or output was discarded). In the error case,
msg may be set but then points to a static string (which must not be
deallocated).
*/
/*
ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
Initializes the internal stream state for decompression. The fields
next_in, avail_in, zalloc, zfree and opaque must be initialized before by
the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
value depends on the compression method), inflateInit determines the
compression method from the zlib header and allocates all data structures
accordingly; otherwise the allocation will be deferred to the first call of
inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to
use default allocation functions.
inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
version assumed by the caller. msg is set to null if there is no error
message. inflateInit does not perform any decompression apart from reading
the zlib header if present: this will be done by inflate(). (So next_in and
avail_in may be modified, but next_out and avail_out are unchanged.)
*/
ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
/*
inflate decompresses as much data as possible, and stops when the input
buffer becomes empty or the output buffer becomes full. It may some
introduce some output latency (reading input without producing any output)
except when forced to flush.
The detailed semantics are as follows. inflate performs one or both of the
following actions:
- Decompress more input starting at next_in and update next_in and avail_in
accordingly. If not all input can be processed (because there is not
enough room in the output buffer), next_in is updated and processing
will resume at this point for the next call of inflate().
- Provide more output starting at next_out and update next_out and avail_out
accordingly. inflate() provides as much output as possible, until there
is no more input data or no more space in the output buffer (see below
about the flush parameter).
Before the call of inflate(), the application should ensure that at least
one of the actions is possible, by providing more input and/or consuming
more output, and updating the next_* and avail_* values accordingly.
The application can consume the uncompressed output when it wants, for
example when the output buffer is full (avail_out == 0), or after each
call of inflate(). If inflate returns Z_OK and with zero avail_out, it
must be called again after making room in the output buffer because there
might be more output pending.
If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
output as possible to the output buffer. The flushing behavior of inflate is
not specified for values of the flush parameter other than Z_SYNC_FLUSH
and Z_FINISH, but the current implementation actually flushes as much output
as possible anyway.
inflate() should normally be called until it returns Z_STREAM_END or an
error. However if all decompression is to be performed in a single step
(a single call of inflate), the parameter flush should be set to
Z_FINISH. In this case all pending input is processed and all pending
output is flushed; avail_out must be large enough to hold all the
uncompressed data. (The size of the uncompressed data may have been saved
by the compressor for this purpose.) The next operation on this stream must
be inflateEnd to deallocate the decompression state. The use of Z_FINISH
is never required, but can be used to inform inflate that a faster routine
may be used for the single inflate() call.
If a preset dictionary is needed at this point (see inflateSetDictionary
below), inflate sets strm-adler to the adler32 checksum of the
dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise
it sets strm->adler to the adler32 checksum of all output produced
so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
an error code as described below. At the end of the stream, inflate()
checks that its computed adler32 checksum is equal to that saved by the
compressor and returns Z_STREAM_END only if the checksum is correct.
inflate() returns Z_OK if some progress has been made (more input processed
or more output produced), Z_STREAM_END if the end of the compressed data has
been reached and all uncompressed output has been produced, Z_NEED_DICT if a
preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
corrupted (input stream not conforming to the zlib format or incorrect
adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
(for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
enough memory, Z_BUF_ERROR if no progress is possible or if there was not
enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
case, the application may then call inflateSync to look for a good
compression block.
*/
ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
/*
All dynamically allocated data structures for this stream are freed.
This function discards any unprocessed input and does not flush any
pending output.
inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
was inconsistent. In the error case, msg may be set but then points to a
static string (which must not be deallocated).
*/
/* Advanced functions */
/*
The following functions are needed only in some special applications.
*/
/*
ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
int level,
int method,
int windowBits,
int memLevel,
int strategy));
This is another version of deflateInit with more compression options. The
fields next_in, zalloc, zfree and opaque must be initialized before by
the caller.
The method parameter is the compression method. It must be Z_DEFLATED in
this version of the library.
The windowBits parameter is the base two logarithm of the window size
(the size of the history buffer). It should be in the range 8..15 for this
version of the library. Larger values of this parameter result in better
compression at the expense of memory usage. The default value is 15 if
deflateInit is used instead.
The memLevel parameter specifies how much memory should be allocated
for the internal compression state. memLevel=1 uses minimum memory but
is slow and reduces compression ratio; memLevel=9 uses maximum memory
for optimal speed. The default value is 8. See zconf.h for total memory
usage as a function of windowBits and memLevel.
The strategy parameter is used to tune the compression algorithm. Use the
value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
string match). Filtered data consists mostly of small values with a
somewhat random distribution. In this case, the compression algorithm is
tuned to compress them better. The effect of Z_FILTERED is to force more
Huffman coding and less string matching; it is somewhat intermediate
between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
the compression ratio but not the correctness of the compressed output even
if it is not set appropriately.
deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
method). msg is set to null if there is no error message. deflateInit2 does
not perform any compression: this will be done by deflate().
*/
ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
const Bytef *dictionary,
uInt dictLength));
/*
Initializes the compression dictionary from the given byte sequence
without producing any compressed output. This function must be called
immediately after deflateInit, deflateInit2 or deflateReset, before any
call of deflate. The compressor and decompressor must use exactly the same
dictionary (see inflateSetDictionary).
The dictionary should consist of strings (byte sequences) that are likely
to be encountered later in the data to be compressed, with the most commonly
used strings preferably put towards the end of the dictionary. Using a
dictionary is most useful when the data to be compressed is short and can be
predicted with good accuracy; the data can then be compressed better than
with the default empty dictionary.
Depending on the size of the compression data structures selected by
deflateInit or deflateInit2, a part of the dictionary may in effect be
discarded, for example if the dictionary is larger than the window size in
deflate or deflate2. Thus the strings most likely to be useful should be
put at the end of the dictionary, not at the front.
Upon return of this function, strm->adler is set to the Adler32 value
of the dictionary; the decompressor may later use this value to determine
which dictionary has been used by the compressor. (The Adler32 value
applies to the whole dictionary even if only a subset of the dictionary is
actually used by the compressor.)
deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
parameter is invalid (such as NULL dictionary) or the stream state is
inconsistent (for example if deflate has already been called for this stream
or if the compression method is bsort). deflateSetDictionary does not
perform any compression: this will be done by deflate().
*/
ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
z_streamp source));
/*
Sets the destination stream as a complete copy of the source stream.
This function can be useful when several compression strategies will be
tried, for example when there are several ways of pre-processing the input
data with a filter. The streams that will be discarded should then be freed
by calling deflateEnd. Note that deflateCopy duplicates the internal
compression state which can be quite large, so this strategy is slow and
can consume lots of memory.
deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
(such as zalloc being NULL). msg is left unchanged in both source and
destination.
*/
ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
/*
This function is equivalent to deflateEnd followed by deflateInit,
but does not free and reallocate all the internal compression state.
The stream will keep the same compression level and any other attributes
that may have been set by deflateInit2.
deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
stream state was inconsistent (such as zalloc or state being NULL).
*/
ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
int level,
int strategy));
/*
Dynamically update the compression level and compression strategy. The
interpretation of level and strategy is as in deflateInit2. This can be
used to switch between compression and straight copy of the input data, or
to switch to a different kind of input data requiring a different
strategy. If the compression level is changed, the input available so far
is compressed with the old level (and may be flushed); the new level will
take effect only at the next call of deflate().
Before the call of deflateParams, the stream state must be set as for
a call of deflate(), since the currently available input may have to
be compressed and flushed. In particular, strm->avail_out must be non-zero.
deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
if strm->avail_out was zero.
*/
/*
ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
int windowBits));
This is another version of inflateInit with an extra parameter. The
fields next_in, avail_in, zalloc, zfree and opaque must be initialized
before by the caller.
The windowBits parameter is the base two logarithm of the maximum window
size (the size of the history buffer). It should be in the range 8..15 for
this version of the library. The default value is 15 if inflateInit is used
instead. If a compressed stream with a larger window size is given as
input, inflate() will return with the error code Z_DATA_ERROR instead of
trying to allocate a larger window.
inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
memLevel). msg is set to null if there is no error message. inflateInit2
does not perform any decompression apart from reading the zlib header if
present: this will be done by inflate(). (So next_in and avail_in may be
modified, but next_out and avail_out are unchanged.)
*/
ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
const Bytef *dictionary,
uInt dictLength));
/*
Initializes the decompression dictionary from the given uncompressed byte
sequence. This function must be called immediately after a call of inflate
if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
can be determined from the Adler32 value returned by this call of
inflate. The compressor and decompressor must use exactly the same
dictionary (see deflateSetDictionary).
inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
parameter is invalid (such as NULL dictionary) or the stream state is
inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
expected one (incorrect Adler32 value). inflateSetDictionary does not
perform any decompression: this will be done by subsequent calls of
inflate().
*/
ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
/*
Skips invalid compressed data until a full flush point (see above the
description of deflate with Z_FULL_FLUSH) can be found, or until all
available input is skipped. No output is provided.
inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
if no more input was provided, Z_DATA_ERROR if no flush point has been found,
or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
case, the application may save the current current value of total_in which
indicates where valid compressed data was found. In the error case, the
application may repeatedly call inflateSync, providing more input each time,
until success or end of the input data.
*/
ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
/*
This function is equivalent to inflateEnd followed by inflateInit,
but does not free and reallocate all the internal decompression state.
The stream will keep attributes that may have been set by inflateInit2.
inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
stream state was inconsistent (such as zalloc or state being NULL).
*/
/* utility functions */
/*
The following utility functions are implemented on top of the
basic stream-oriented functions. To simplify the interface, some
default options are assumed (compression level and memory usage,
standard memory allocation functions). The source code of these
utility functions can easily be modified if you need special options.
*/
ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
const Bytef *source, uLong sourceLen));
/*
Compresses the source buffer into the destination buffer. sourceLen is
the byte length of the source buffer. Upon entry, destLen is the total
size of the destination buffer, which must be at least 0.1% larger than
sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
compressed buffer.
This function can be used to compress a whole file at once if the
input file is mmap'ed.
compress returns Z_OK if success, Z_MEM_ERROR if there was not
enough memory, Z_BUF_ERROR if there was not enough room in the output
buffer.
*/
ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
const Bytef *source, uLong sourceLen,
int level));
/*
Compresses the source buffer into the destination buffer. The level
parameter has the same meaning as in deflateInit. sourceLen is the byte
length of the source buffer. Upon entry, destLen is the total size of the
destination buffer, which must be at least 0.1% larger than sourceLen plus
12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
memory, Z_BUF_ERROR if there was not enough room in the output buffer,
Z_STREAM_ERROR if the level parameter is invalid.
*/
ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
const Bytef *source, uLong sourceLen));
/*
Decompresses the source buffer into the destination buffer. sourceLen is
the byte length of the source buffer. Upon entry, destLen is the total
size of the destination buffer, which must be large enough to hold the
entire uncompressed data. (The size of the uncompressed data must have
been saved previously by the compressor and transmitted to the decompressor
by some mechanism outside the scope of this compression library.)
Upon exit, destLen is the actual size of the compressed buffer.
This function can be used to decompress a whole file at once if the
input file is mmap'ed.
uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
enough memory, Z_BUF_ERROR if there was not enough room in the output
buffer, or Z_DATA_ERROR if the input data was corrupted.
*/
typedef voidp gzFile;
ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
/*
Opens a gzip (.gz) file for reading or writing. The mode parameter
is as in fopen ("rb" or "wb") but can also include a compression level
("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
Huffman only compression as in "wb1h". (See the description
of deflateInit2 for more information about the strategy parameter.)
gzopen can be used to read a file which is not in gzip format; in this
case gzread will directly read from the file without decompression.
gzopen returns NULL if the file could not be opened or if there was
insufficient memory to allocate the (de)compression state; errno
can be checked to distinguish the two cases (if errno is zero, the
zlib error is Z_MEM_ERROR). */
ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
/*
gzdopen() associates a gzFile with the file descriptor fd. File
descriptors are obtained from calls like open, dup, creat, pipe or
fileno (in the file has been previously opened with fopen).
The mode parameter is as in gzopen.
The next call of gzclose on the returned gzFile will also close the
file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
gzdopen returns NULL if there was insufficient memory to allocate
the (de)compression state.
*/
ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
/*
Dynamically update the compression level or strategy. See the description
of deflateInit2 for the meaning of these parameters.
gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
opened for writing.
*/
ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
/*
Reads the given number of uncompressed bytes from the compressed file.
If the input file was not in gzip format, gzread copies the given number
of bytes into the buffer.
gzread returns the number of uncompressed bytes actually read (0 for
end of file, -1 for error). */
ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
const voidp buf, unsigned len));
/*
Writes the given number of uncompressed bytes into the compressed file.
gzwrite returns the number of uncompressed bytes actually written
(0 in case of error).
*/
ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
/*
Converts, formats, and writes the args to the compressed file under
control of the format string, as in fprintf. gzprintf returns the number of
uncompressed bytes actually written (0 in case of error).
*/
ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
/*
Writes the given null-terminated string to the compressed file, excluding
the terminating null character.
gzputs returns the number of characters written, or -1 in case of error.
*/
ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
/*
Reads bytes from the compressed file until len-1 characters are read, or
a newline character is read and transferred to buf, or an end-of-file
condition is encountered. The string is then terminated with a null
character.
gzgets returns buf, or Z_NULL in case of error.
*/
ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
/*
Writes c, converted to an unsigned char, into the compressed file.
gzputc returns the value that was written, or -1 in case of error.
*/
ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
/*
Reads one byte from the compressed file. gzgetc returns this byte
or -1 in case of end of file or error.
*/
ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
/*
Flushes all pending output into the compressed file. The parameter
flush is as in the deflate() function. The return value is the zlib
error number (see function gzerror below). gzflush returns Z_OK if
the flush parameter is Z_FINISH and all output could be flushed.
gzflush should be called only when strictly necessary because it can
degrade compression.
*/
ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
z_off_t offset, int whence));
/*
Sets the starting position for the next gzread or gzwrite on the
given compressed file. The offset represents a number of bytes in the
uncompressed data stream. The whence parameter is defined as in lseek(2);
the value SEEK_END is not supported.
If the file is opened for reading, this function is emulated but can be
extremely slow. If the file is opened for writing, only forward seeks are
supported; gzseek then compresses a sequence of zeroes up to the new
starting position.
gzseek returns the resulting offset location as measured in bytes from
the beginning of the uncompressed stream, or -1 in case of error, in
particular if the file is opened for writing and the new starting position
would be before the current position.
*/
ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
/*
Rewinds the given file. This function is supported only for reading.
gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
*/
ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
/*
Returns the starting position for the next gzread or gzwrite on the
given compressed file. This position represents a number of bytes in the
uncompressed data stream.
gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
*/
ZEXTERN int ZEXPORT gzeof OF((gzFile file));
/*
Returns 1 when EOF has previously been detected reading the given
input stream, otherwise zero.
*/
ZEXTERN int ZEXPORT gzclose OF((gzFile file));
/*
Flushes all pending output if necessary, closes the compressed file
and deallocates all the (de)compression state. The return value is the zlib
error number (see function gzerror below).
*/
ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
/*
Returns the error message for the last error which occurred on the
given compressed file. errnum is set to zlib error number. If an
error occurred in the file system and not in the compression library,
errnum is set to Z_ERRNO and the application may consult errno
to get the exact error code.
*/
/* checksum functions */
/*
These functions are not related to compression but are exported
anyway because they might be useful in applications using the
compression library.
*/
ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
/*
Update a running Adler-32 checksum with the bytes buf[0..len-1] and
return the updated checksum. If buf is NULL, this function returns
the required initial value for the checksum.
An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
much faster. Usage example:
uLong adler = adler32(0L, Z_NULL, 0);
while (read_buffer(buffer, length) != EOF) {
adler = adler32(adler, buffer, length);
}
if (adler != original_adler) error();
*/
ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
/*
Update a running crc with the bytes buf[0..len-1] and return the updated
crc. If buf is NULL, this function returns the required initial value
for the crc. Pre- and post-conditioning (one's complement) is performed
within this function so it shouldn't be done by the application.
Usage example:
uLong crc = crc32(0L, Z_NULL, 0);
while (read_buffer(buffer, length) != EOF) {
crc = crc32(crc, buffer, length);
}
if (crc != original_crc) error();
*/
/* various hacks, don't look :) */
/* deflateInit and inflateInit are macros to allow checking the zlib version
* and the compiler's view of z_stream:
*/
ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level,
const char *version, int stream_size));
ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm,
const char *version, int stream_size));
ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method,
int windowBits, int memLevel,
int strategy, const char *version,
int stream_size));
ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits,
const char *version, int stream_size));
#define deflateInit(strm, level) \
deflateInit_((strm), (level), ZLIB_VERSION, sizeof(z_stream))
#define inflateInit(strm) \
inflateInit_((strm), ZLIB_VERSION, sizeof(z_stream))
#define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \
deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\
(strategy), ZLIB_VERSION, sizeof(z_stream))
#define inflateInit2(strm, windowBits) \
inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
#if !defined(_Z_UTIL_H) && !defined(NO_DUMMY_DECL)
struct internal_state {int dummy;}; /* hack for buggy compilers */
#endif
ZEXTERN const char * ZEXPORT zError OF((int err));
ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp z));
ZEXTERN const uLongf * ZEXPORT get_crc_table OF((void));
#ifdef __cplusplus
}
#endif
#endif /* _ZLIB_H */

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -1,225 +0,0 @@
/* zutil.c -- target dependent utility functions for the compression library
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* @(#) $Id$ */
#include "zutil.h"
struct internal_state {int dummy;}; /* for buggy compilers */
#ifndef STDC
extern void exit OF((int));
#endif
const char *z_errmsg[10] = {
"need dictionary", /* Z_NEED_DICT 2 */
"stream end", /* Z_STREAM_END 1 */
"", /* Z_OK 0 */
"file error", /* Z_ERRNO (-1) */
"stream error", /* Z_STREAM_ERROR (-2) */
"data error", /* Z_DATA_ERROR (-3) */
"insufficient memory", /* Z_MEM_ERROR (-4) */
"buffer error", /* Z_BUF_ERROR (-5) */
"incompatible version",/* Z_VERSION_ERROR (-6) */
""};
const char * ZEXPORT zlibVersion()
{
return ZLIB_VERSION;
}
#ifdef DEBUG
# ifndef verbose
# define verbose 0
# endif
int z_verbose = verbose;
void z_error (m)
char *m;
{
fprintf(stderr, "%s\n", m);
exit(1);
}
#endif
/* exported to allow conversion of error code to string for compress() and
* uncompress()
*/
const char * ZEXPORT zError(err)
int err;
{
return ERR_MSG(err);
}
#ifndef HAVE_MEMCPY
void zmemcpy(dest, source, len)
Bytef* dest;
const Bytef* source;
uInt len;
{
if (len == 0) return;
do {
*dest++ = *source++; /* ??? to be unrolled */
} while (--len != 0);
}
int zmemcmp(s1, s2, len)
const Bytef* s1;
const Bytef* s2;
uInt len;
{
uInt j;
for (j = 0; j < len; j++) {
if (s1[j] != s2[j]) return 2*(s1[j] > s2[j])-1;
}
return 0;
}
void zmemzero(dest, len)
Bytef* dest;
uInt len;
{
if (len == 0) return;
do {
*dest++ = 0; /* ??? to be unrolled */
} while (--len != 0);
}
#endif
#ifdef __TURBOC__
#if (defined( __BORLANDC__) || !defined(SMALL_MEDIUM)) && !defined(__32BIT__)
/* Small and medium model in Turbo C are for now limited to near allocation
* with reduced MAX_WBITS and MAX_MEM_LEVEL
*/
# define MY_ZCALLOC
/* Turbo C malloc() does not allow dynamic allocation of 64K bytes
* and farmalloc(64K) returns a pointer with an offset of 8, so we
* must fix the pointer. Warning: the pointer must be put back to its
* original form in order to free it, use zcfree().
*/
#define MAX_PTR 10
/* 10*64K = 640K */
local int next_ptr = 0;
typedef struct ptr_table_s {
voidpf org_ptr;
voidpf new_ptr;
} ptr_table;
local ptr_table table[MAX_PTR];
/* This table is used to remember the original form of pointers
* to large buffers (64K). Such pointers are normalized with a zero offset.
* Since MSDOS is not a preemptive multitasking OS, this table is not
* protected from concurrent access. This hack doesn't work anyway on
* a protected system like OS/2. Use Microsoft C instead.
*/
voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
{
voidpf buf = opaque; /* just to make some compilers happy */
ulg bsize = (ulg)items*size;
/* If we allocate less than 65520 bytes, we assume that farmalloc
* will return a usable pointer which doesn't have to be normalized.
*/
if (bsize < 65520L) {
buf = farmalloc(bsize);
if (*(ush*)&buf != 0) return buf;
} else {
buf = farmalloc(bsize + 16L);
}
if (buf == NULL || next_ptr >= MAX_PTR) return NULL;
table[next_ptr].org_ptr = buf;
/* Normalize the pointer to seg:0 */
*((ush*)&buf+1) += ((ush)((uch*)buf-0) + 15) >> 4;
*(ush*)&buf = 0;
table[next_ptr++].new_ptr = buf;
return buf;
}
void zcfree (voidpf opaque, voidpf ptr)
{
int n;
if (*(ush*)&ptr != 0) { /* object < 64K */
farfree(ptr);
return;
}
/* Find the original pointer */
for (n = 0; n < next_ptr; n++) {
if (ptr != table[n].new_ptr) continue;
farfree(table[n].org_ptr);
while (++n < next_ptr) {
table[n-1] = table[n];
}
next_ptr--;
return;
}
ptr = opaque; /* just to make some compilers happy */
Assert(0, "zcfree: ptr not found");
}
#endif
#endif /* __TURBOC__ */
#if defined(M_I86) && !defined(__32BIT__)
/* Microsoft C in 16-bit mode */
# define MY_ZCALLOC
#if (!defined(_MSC_VER) || (_MSC_VER <= 600))
# define _halloc halloc
# define _hfree hfree
#endif
voidpf zcalloc (voidpf opaque, unsigned items, unsigned size)
{
if (opaque) opaque = 0; /* to make compiler happy */
return _halloc((long)items, size);
}
void zcfree (voidpf opaque, voidpf ptr)
{
if (opaque) opaque = 0; /* to make compiler happy */
_hfree(ptr);
}
#endif /* MSC */
#ifndef MY_ZCALLOC /* Any system without a special alloc function */
#ifndef STDC
extern voidp calloc OF((uInt items, uInt size));
extern void free OF((voidpf ptr));
#endif
voidpf zcalloc (opaque, items, size)
voidpf opaque;
unsigned items;
unsigned size;
{
if (opaque) items += size - size; /* make compiler happy */
return (voidpf)calloc(items, size);
}
void zcfree (opaque, ptr)
voidpf opaque;
voidpf ptr;
{
free(ptr);
if (opaque) return; /* make compiler happy */
}
#endif /* MY_ZCALLOC */

View File

@@ -1,220 +0,0 @@
/* zutil.h -- internal interface and configuration of the compression library
* Copyright (C) 1995-2002 Jean-loup Gailly.
* For conditions of distribution and use, see copyright notice in zlib.h
*/
/* WARNING: this file should *not* be used by applications. It is
part of the implementation of the compression library and is
subject to change. Applications should only use zlib.h.
*/
/* @(#) $Id$ */
#ifndef _Z_UTIL_H
#define _Z_UTIL_H
#include "zlib.h"
#ifdef STDC
# include <stddef.h>
# include <string.h>
# include <stdlib.h>
#endif
#ifdef NO_ERRNO_H
extern int errno;
#else
# include <errno.h>
#endif
#ifndef local
# define local static
#endif
/* compile with -Dlocal if your debugger can't find static symbols */
typedef unsigned char uch;
typedef uch FAR uchf;
typedef unsigned short ush;
typedef ush FAR ushf;
typedef unsigned long ulg;
extern const char *z_errmsg[10]; /* indexed by 2-zlib_error */
/* (size given to avoid silly warnings with Visual C++) */
#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)]
#define ERR_RETURN(strm,err) \
return (strm->msg = (char*)ERR_MSG(err), (err))
/* To be used only when the state is known to be valid */
/* common constants */
#ifndef DEF_WBITS
# define DEF_WBITS MAX_WBITS
#endif
/* default windowBits for decompression. MAX_WBITS is for compression only */
#if MAX_MEM_LEVEL >= 8
# define DEF_MEM_LEVEL 8
#else
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
#endif
/* default memLevel */
#define STORED_BLOCK 0
#define STATIC_TREES 1
#define DYN_TREES 2
/* The three kinds of block type */
#define MIN_MATCH 3
#define MAX_MATCH 258
/* The minimum and maximum match lengths */
#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */
/* target dependencies */
#ifdef MSDOS
# define OS_CODE 0x00
# if defined(__TURBOC__) || defined(__BORLANDC__)
# if(__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__))
/* Allow compilation with ANSI keywords only enabled */
void _Cdecl farfree( void *block );
void *_Cdecl farmalloc( unsigned long nbytes );
# else
# include <alloc.h>
# endif
# else /* MSC or DJGPP */
# include <malloc.h>
# endif
#endif
#ifdef OS2
# define OS_CODE 0x06
#endif
#ifdef WIN32 /* Window 95 & Windows NT */
# define OS_CODE 0x0b
#endif
#if defined(VAXC) || defined(VMS)
# define OS_CODE 0x02
# define F_OPEN(name, mode) \
fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512")
#endif
#ifdef AMIGA
# define OS_CODE 0x01
#endif
#if defined(ATARI) || defined(atarist)
# define OS_CODE 0x05
#endif
#if defined(MACOS) || defined(TARGET_OS_MAC)
# define OS_CODE 0x07
# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os
# include <unix.h> /* for fdopen */
# else
# ifndef fdopen
# define fdopen(fd,mode) NULL /* No fdopen() */
# endif
# endif
#endif
#ifdef __50SERIES /* Prime/PRIMOS */
# define OS_CODE 0x0F
#endif
#ifdef TOPS20
# define OS_CODE 0x0a
#endif
#if defined(_BEOS_) || defined(RISCOS)
# define fdopen(fd,mode) NULL /* No fdopen() */
#endif
#if (defined(_MSC_VER) && (_MSC_VER > 600))
# define fdopen(fd,type) _fdopen(fd,type)
#endif
/* Common defaults */
#ifndef OS_CODE
# define OS_CODE 0x03 /* assume Unix */
#endif
#ifndef F_OPEN
# define F_OPEN(name, mode) fopen((name), (mode))
#endif
/* functions */
#ifdef HAVE_STRERROR
extern char *strerror OF((int));
# define zstrerror(errnum) strerror(errnum)
#else
# define zstrerror(errnum) ""
#endif
#if defined(pyr)
# define NO_MEMCPY
#endif
#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__)
/* Use our own functions for small and medium model with MSC <= 5.0.
* You may have to use the same strategy for Borland C (untested).
* The __SC__ check is for Symantec.
*/
# define NO_MEMCPY
#endif
#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY)
# define HAVE_MEMCPY
#endif
#ifdef HAVE_MEMCPY
# ifdef SMALL_MEDIUM /* MSDOS small or medium model */
# define zmemcpy _fmemcpy
# define zmemcmp _fmemcmp
# define zmemzero(dest, len) _fmemset(dest, 0, len)
# else
# define zmemcpy memcpy
# define zmemcmp memcmp
# define zmemzero(dest, len) memset(dest, 0, len)
# endif
#else
extern void zmemcpy OF((Bytef* dest, const Bytef* source, uInt len));
extern int zmemcmp OF((const Bytef* s1, const Bytef* s2, uInt len));
extern void zmemzero OF((Bytef* dest, uInt len));
#endif
/* Diagnostic functions */
#ifdef DEBUG
# include <stdio.h>
extern int z_verbose;
extern void z_error OF((char *m));
# define Assert(cond,msg) {if(!(cond)) z_error(msg);}
# define Trace(x) {if (z_verbose>=0) fprintf x ;}
# define Tracev(x) {if (z_verbose>0) fprintf x ;}
# define Tracevv(x) {if (z_verbose>1) fprintf x ;}
# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;}
# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;}
#else
# define Assert(cond,msg)
# define Trace(x)
# define Tracev(x)
# define Tracevv(x)
# define Tracec(c,x)
# define Tracecv(c,x)
#endif
typedef uLong (ZEXPORT *check_func) OF((uLong check, const Bytef *buf,
uInt len));
voidpf zcalloc OF((voidpf opaque, unsigned items, unsigned size));
void zcfree OF((voidpf opaque, voidpf ptr));
#define ZALLOC(strm, items, size) \
(*((strm)->zalloc))((strm)->opaque, (items), (size))
#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr))
#define TRY_FREE(s, p) {if (p) ZFREE(s, p);}
#endif /* _Z_UTIL_H */

2
user/wxLayout/.cvsignore Normal file
View File

@@ -0,0 +1,2 @@
Linux
linux-gnu

1
user/wxLayout/Makefile Normal file
View File

@@ -0,0 +1 @@
include ../../setup/general/makeapp

26
user/wxLayout/Makefile.in Normal file
View File

@@ -0,0 +1,26 @@
# WXXT base directory
WXBASEDIR=@WXBASEDIR@
# set the OS type for compilation
OS=@OS@
# compile a library only
RULE=bin
# define library name
BIN_TARGET=wxLayout
# define library sources
BIN_SRC=\
wxLayout.cpp kbList.cpp wxlist.cpp wxlwindow.cpp wxlparser.cpp
#define library objects
BIN_OBJ=\
wxLayout.o kbList.o wxllist.o wxlwindow.o wxlparser.o
# additional things needed to link
BIN_LINK=
# additional things needed to compile
ADD_COMPILE=
# include the definitions now
include ../../../template.mak

309
user/wxLayout/Micon.xpm Normal file
View File

@@ -0,0 +1,309 @@
/* XPM */
static char *Micon_xpm[] = {
/* width height num_colors chars_per_pixel */
" 64 48 254 2",
/* colors */
".. c #040207",
".# c #6482b4",
".a c #2a4471",
".b c #9cc2d4",
".c c #4c627f",
".d c #94918e",
".e c #0c243e",
".f c #4c4a4a",
".g c #3c63a8",
".h c #7ca2ac",
".i c #24447e",
".j c #2c2c2c",
".k c #5482cc",
".l c #d4d0d0",
".m c #99aab7",
".n c #5c74b1",
".o c #2c5287",
".p c #1a2a4d",
".q c #acdefc",
".r c #646362",
".s c #7491d0",
".t c #bcc4bf",
".u c #5273aa",
".v c #b4b1aa",
".w c #3d5583",
".x c #828482",
".y c #8c9490",
".z c #6f7369",
".A c #1c365c",
".B c #041220",
".C c #2c325c",
".D c #94b6e4",
".E c #3e4242",
".F c #648edc",
".G c #d4f2fc",
".H c #cbd3d1",
".I c #3c54a1",
".J c #243244",
".K c #4c69aa",
".L c #7c8ba2",
".M c #4c5d84",
".N c #34497f",
".O c #1c2228",
".P c #6484c5",
".Q c #6a7788",
".R c #9ba09b",
".S c #2c3634",
".T c #acb6b4",
".U c #141517",
".V c #a0c4e8",
".W c #515753",
".X c #5c76cc",
".Y c #1b2f51",
".Z c #4472c4",
".0 c #7c8a88",
".1 c #5a6262",
".2 c #a4aba6",
".3 c #bcc8d5",
".4 c #7494df",
".5 c #84b2d4",
".6 c #6784d9",
".7 c #acd3e4",
".8 c #304b72",
".9 c #2c4c81",
"#. c #3c5b93",
"## c #5468bc",
"#a c #b5bbb0",
"#b c #1c3765",
"#c c #444e44",
"#d c #ecece8",
"#e c #7ca3dc",
"#f c #d4deda",
"#g c #345495",
"#h c #1c2641",
"#i c #94a6cc",
"#j c #243252",
"#k c #a7acb5",
"#l c #5c7ab3",
"#m c #0a152d",
"#n c #c4def0",
"#o c #686e84",
"#p c #a4a19e",
"#q c #3e3c3a",
"#r c #84aaee",
"#s c #040a09",
"#t c #3c6294",
"#u c #7c929c",
"#v c #3c5c9d",
"#w c #4e6ead",
"#x c #344458",
"#y c #446bae",
"#z c #696b6a",
"#A c #547cbc",
"#B c #789ae3",
"#C c #112a44",
"#D c #4f504b",
"#E c #2c3140",
"#F c #8c8688",
"#G c #5e5c5c",
"#H c #8c8c80",
"#I c #cccccc",
"#J c #4c6398",
"#K c #c7cbc4",
"#L c #5174b8",
"#M c #3d558e",
"#N c #2c3c5f",
"#O c #acbad4",
"#P c #3f495a",
"#Q c #354e82",
"#R c #6a8ac7",
"#S c #767c84",
"#T c #30374b",
"#U c #b1c9e7",
"#V c #1b315d",
"#W c #537bcb",
"#X c #c4bec0",
"#Y c #243e6a",
"#Z c #969892",
"#0 c #7e858e",
"#1 c #94b3f1",
"#2 c #c2d4e8",
"#3 c #141e35",
"#4 c #acb2ac",
"#5 c #c4ced0",
"#6 c #2b4d8e",
"#7 c #445ca2",
"#8 c #2c3e6f",
"#9 c #14243e",
"a. c #f1fdfa",
"a# c #8c9abc",
"aa c #d7f9f9",
"ab c #5a697e",
"ac c #c7ebf7",
"ad c #bceefc",
"ae c #b4c2b4",
"af c #889cf0",
"ag c #d8d6c8",
"ah c #748598",
"ai c #b4d2fc",
"aj c #4c5eb0",
"ak c #3f4f64",
"al c #8492bc",
"am c #161d1e",
"an c #5d7dcf",
"ao c #5c86d6",
"ap c #9cacc8",
"aq c #6c92e6",
"ar c #e4ecec",
"as c #89b7ef",
"at c #a6d0f8",
"au c #e4e2e0",
"av c #8c98a4",
"aw c #ccdaec",
"ax c #94bee4",
"ay c #232b2b",
"az c #1c2b43",
"aA c #0c1c33",
"aB c #99bcf7",
"aC c #6c72bc",
"aD c #7c766c",
"aE c #a4a2b4",
"aF c #6c7eac",
"aG c #e4d6dc",
"aH c #e4fefc",
"aI c #84aeb4",
"aJ c #b4b6bf",
"aK c #345b9b",
"aL c #bce2ef",
"aM c #ccc6bc",
"aN c #82a3ef",
"aO c #7c7b77",
"aP c #040c1e",
"aQ c #6c7e94",
"aR c #9ca69c",
"aS c #acbebc",
"aT c #a2cafa",
"aU c #545e5f",
"aV c #5c6a74",
"aW c #cae6ee",
"aX c #5c6e7c",
"aY c #5474c6",
"aZ c #fcfaf4",
"a0 c #344672",
"a1 c #446ec4",
"a2 c #b4c4d4",
"a3 c #313231",
"a4 c #9cb2b4",
"a5 c #345a8c",
"a6 c #7496d4",
"a7 c #0c1a24",
"a8 c #444a47",
"a9 c #343e3c",
"b. c #dce6e4",
"b# c #a9b2bc",
"ba c #a6a6a3",
"bb c #446a9c",
"bc c #c4f2f8",
"bd c #445667",
"be c #727475",
"bf c #6a7896",
"bg c #9aa0a7",
"bh c #9ec4fa",
"bi c #545a61",
"bj c #6474e0",
"bk c #546674",
"bl c #b8bcbd",
"bm c #5d7cbf",
"bn c #515255",
"bo c #979a9f",
"bp c #849cd0",
"bq c #546a8f",
"br c #d7d8d5",
"bs c #688ada",
"bt c #4f6ebe",
"bu c #343e4c",
"bv c #dafefc",
"bw c #acd6fc",
"bx c #b4b6b0",
"by c #8c9a94",
"bz c #203a44",
"bA c #a4b6c8",
"bB c #4c6a98",
"bC c #040214",
"bD c #5c74be",
"bE c #4c5c98",
"bF c #24325c",
"bG c #8c8c8f",
"bH c #4464a7",
"bI c #2c457e",
"bJ c #5c83c7",
"bK c #34538a",
"bL c #b4dff1",
"bM c #7c92d4",
"bN c #c4c4c0",
"bO c #243759",
"bP c #0c151e",
"bQ c #9cb2d4",
"bR c #6c8fd3",
"bS c #546aab",
"bT c #848c9f",
"bU c #242420",
"bV c #6c83c0",
"bW c #343935",
"bX c #848b89",
"bY c #acaca6",
"bZ c #c4cad0",
"b0 c #445c90",
"b1 c #243865",
"b2 c #dce0dc",
"b3 c #747b76",
"b4 c #8cacee",
"b5 c #0c0c08",
"b6 c #446299",
"b7 c #8493a4",
/* pixels */
"................................................................................................................................",
"..................................bC....bC....bC..bC....bC..bCbCbCbC..bCbC..bC..bC..bC..bCbC..bC..bC....bC....bC................",
"..#9#C#h#C.p.Y.Y.Y#j.Y.Y.Y#V#V#Vb1bFb1b1#8#Y.a.a#Q#Q.a.N#Q.abI.i.9bI#Q#MbK#M.wb0#M.9.N.N.N.9.abI.a#Y#Yb1b1#b#bb1b1b1#V#V#V#Vaz..",
"..#h#C.p.p#9.Y.Y#j.AbObO.A.AbO.Ab1#Y#Y#8.a.aa0.N.8.w.w#QbK.w.ibI.9#6#Q#.#Mb0b0#J#MbK#M.NbK.N.9.NbI.N#YbIb1#Y#8#8bOb1bO#j#V#Caz..",
"..#9.e#h#C.p.p.Y.YbO.A#b#N.a#8#Y#bb1#8#Y.Na0.9.8#Q.w.Mb0#Q#MbK.9bK#g#6.Kb6#J#J#wb0#M#MbKbK#Q#M.9bI.N.N.a.N.a.a.ab1b1#V.Y#V.Y.Y..",
"..#9#C.p#h.p.p.p.Y#VbO#b.a.ia0.9#Q.N#YbI.a.N.N.N.w#Q.wb6b6b0b6#.#g#v#M.K#w#L.n.n#vbH#.bH.Ib6aK#MbK.9#Q#Q#Q#Q.a#Yb1.AbF#VbO.Y#j..",
"..#h#h.p.p.p.Y.p#bbF#bb1#Y.a.8.N#Q#M#M#Q.N.9#QbK#M#Mb0b0.ubB.K.K#..K#v#w.nbmbV.nbHbS#w#7#w#vb0#.#M#Mb0#M#Q.9#Y#Yb1#Yb1b1.Y.Y.Y..",
"..#h#9.p.p.p#V#V#b#b#Y#Y.a.ibI.N.w#Mb0b6#7#M#Q#QbK#.b6b6bq#l.n#LbHbH#y#L#R.s.4#AaY#w#w#L.K.KbH.g.KbH#v#M.9bI.i.8.a#Yb1.A.A.A#j..",
"..#h#C.p.p.Y#V#V#bb1.abIbI#6.o.o#g.oaK#tbH.K.KbH#M.Iaj.K#w.n#R.P#Rbt#W#W.4bpb4aoanbsaobm#La1#L#A#L.ga5bK#g#g#Q.8#Y#bb1b1bOb1bO..",
"...p.p.Y#V.Y#V.Ab1#YbI.9#Q#Q#M#M#7#7#M#v.M#J.K.K.nbS#MbH.nbm.#b4.s#Baq#Wb4aB#1aqaq#R.P.##l#RbmbD.K#7#J#J#.#Q.9.i.N.a#Y#Yb1.Aaz..",
"..az#C#V#j#V.A#N#8.N.N.ibObz#T.J#E.J#T#Tbu.Y.8#..K.nbVbD#wbm.4a6aTb4aoaNaTaiasaNa6.n.m.3bZ#2bN.3aR#2#2.3#J#Q#MbK.8.a#8#b.AbO#j..",
"..#h.p.p.Y.Yb1bO.ibI#g#Mbd#hambU.jbW.Sa3aybP.Y.9bHbH.ubm#BbM.P#rbhbc.qasbL.G.VbhaBbpbZaJbobxbl#I#a#abXbP#V.9#6.NbI#8#8#bbF#V#j..",
"..az#C.Y.Y.Y#bb1.abI#Q.oaj#Pa3a3aya3a3bW.Eayb0.K.g#y.K#LanbRbhaTaxbLbvbLbvbvaLadaTai.mbobYba#Xbl.H#I#P#m#.#M#QbIbI#Y#Yb1#b#V#j..",
"..az.p.p#VbObO#Y.a.N#g#g.I#xbW.j.ja3.E.Ebnbib0bmananbm#wanbs.4asacbLbvaHa.aHbvbc.7aIbY#p#pblbl#Kbe#F#k#9#..I#g#6.i#8#8b1b1.A#j..",
"..#h#C.p.YbO#bb1a0bIbKbK#7#xaya3.jaya3#q.Wbn.J.wbD#Lbm.X#Bb4bhat.b#na.a.a.aZaHaHaW#k#a.vagbNaObl#I.vb3#3#w.K#7#v#M#QbIa0#Y#N#N..",
"..#haz.p#V.YbO#Y#Y.N.9#g#7#P.EbUa8#q#D.f.f.fbi#hbB#LaY.n.P#R#e.5.7aLa.a.aZaZa.a.aS#5#p.d#p.t.l.HbYaObo.Y#w.Kb6#.#M.Na0.a#8#NbO..",
"..#h#C.YbO#V#N#Y.8#Q#g#t##ak.j.W.f.Wbn#Gbe#zbnaU.M#Ra6#eaNb4bh.7bLaWa.aZaZaZa.br.H.2ba.H.T#fau.H.H#p.x#3#w.K#tb0#Q#Q.a#8#Nb1bO..",
"..az#j#j.Ab1#N.a.8#Q#.bb##ak.Ebnbn.1.Ua8.zaO#z.xbubqbsbR.saqaN#1bw.7aaaHa.b.a.a4bZ#k#dbgbP.H#IbG#4bY#o#9#w.K#7b0#Q.8.a#8#NbObO..",
"..az#j.Y.YbO#8.a.8#Q#7#t##bd.r#D#D.rbPaV#G#z.x.y#z.p.u#W.6#B#r#eaTaTaLaWaaaI#5#aau#XbraU#8.HbN.T.RbY#0#9#w.Kb6#M#Q#Qa0#Y#Y#N#N..",
"..#h#j.YbOb1bO#Ya0.NbKa5aj.c.f#G#z.1#3.Mbe#zaO.x#pbT#.bmbsbs.F#1#easat.Gbc.hb.b2aragbgbPaC.3#k.v#4babe#9.KbH#7b0#Qak.a.i#N#Y#T..",
"..az.Y#j.Y.Ab1#Y.8.N#gbK.IaX.r.raDaV.Bb0bfbeb3bab3#HazbBaYbsaqbRaf#1.DaB#na2#K#4b3.ybC.Yaf#k#Z.y.d#p#S#3#v#7#M#g.N.N.a#N#Y#NbO..",
"..#h.p#C#jbFbO#8.a.NbK#.#7bk.z.zb3#H#9aKbm#J.y#Hbablb#.e.PaqbmbsaNaN#1aB#2bZ.x.2aub3.AbSbjapbobobo.rbn#9#v#gbK.9bI.a.a#Yb1bObO..",
"..#haz.YbF#VbO#Y.abI#QaK.I.Q.z.WaO#za7b0an.ub#.R.y.R#XbXbEbtbJbR#Bbsb4.D.3.v#p#za3#s.ubJbj#u.WbWb3.Rbe#9#v#v#g.9bI#Yb1b1#b.A#j..",
"..#h#C.p#C.Y#bbO#YbI.9.o.Iab#Zb3.x.da7bK#WbmalbTae.t#F#Gaz.nbsaqbJ.6#R#U#aaMbx#KbPbz#laoanb#ba.2.RbG#G#9#v#v#g.9bI.ab1#bbF#Vaz..",
"..#haz.p.p#V#Vb1#Y.a#6bK#7bk.1#z#Z.y#m#.a1a1bq.LbX#HblbN.3#N.PaobJafbQ.3.tblbx.TazbB.X.kaYb7bG.d.x#ZaV#3bH#v#Q.NbI#8b1b1.A.Y.Y..",
"..az#h#C.p#VbO#b#YbIbK#g#7aQ.d.y.RbX#mbK#y#ybt.#bZ#IaM.l.2bdbmanaobMap.t.2bY.2.ObO.s.X#W.6bX#F.yaOaD#G#9b6#7.I#Q.a.ab1#bbF.Y.Y..",
"..#9#h.p.p#V#Vb1.a.NbK#..IaQ.xbob3aO#m.9#L.ZaY#w#iaJagaGbr#5.8aF.4a#blbN#Z#Z.WaP#l#l.6#WaY#0aO.y.xb3#PaA#7b6bK#QbI#8b1bO.A#V.Y..",
"..#h.p#C#V.YbO#Y.abI.9aK.Ibf#D.1bYbY#mbK#ybt#ybHbSbT#aba.tbx#S.M#B.y#kbxbYbYaP.YbR#A.6bmbt.Lb3#z.W#Dbn#3bK#.#M#Q.N#Yb1b1#V.Yaz..",
"..#h#C.p#V.p#b.A.a#Y#Q#..Ib7#kbe#4#pa7bK#ybH.g.gbHbfbZbN#4bNbgakah#Zbg#F.x.1#9bK.P#A.X.#btbTaO.W.r.ra8.e#Q.o#Q#Q.a.ab1bO.A.Yaz..",
"..#h.p#h#C#VbOb1#YbI.9.o.I.L#H#Z.2.vaA#QbHaK.g.g#y#7#nbr#a.H.vaE.zaU#4blbebCbIaK#Lbm#LbJbtaXaO.z#z#G.EaA#g#Q.9bI.a.a#Nb1#jbO.Y..",
"..#h#C#h#V.p#V.A.a#8.9.9.Iah#4bY#4bGbP#QaKaKaKaK#7#wbEbg.z.zay.E#a#K.2#ZbCbO#v#gbH.Xbb.ubDbk#z.r#c.f.E#9#Q#6bI.i#8b1#YbO.AbO.J..",
"..#h.p#9.p.p#b.A#8#Y.9.9.I.0.R.2bN#XbP.NaK.IaK#v.IbS.KaQaR.Wbl#K.RbY.R.y#9#M#gaKbH.Kbb#yaCbk.r#Ga8#D#TaAbK#6.i.a#Y#bbObO.Y#jaz..",
"..#9#9.p.p.Y#V.Ab1#YbI.9#7a#bn.Hb2#FaP.a.I#g#g#g#v#7bHb0.L.HbY.y.0#ZaObC.8b0#g#6aKbH#wbb#LaX#D#q.Ea3.UaAbK#QbI#Y#Y#bbO.AbO.Y.Y..",
"..#9#h#h#C.p.Y#V#Y#Y#6.obEbk.H.2bUbe#m.a#g#g#Q#M#M#vaK#6bq#k.d.x.y#Z..az#M#v.o#6.o#v#L#tbSbda8bU.Ub5.O#3#6#6bI.ib1#bbF.Y#C.Yaz..",
"..#9#9.p.p.p#Vb1#Y.N#6.o#Q#O.R.xaM.HaPa0bK#Q#Q#M#M#MbK#gb0akb3aO.xbX#9#x#v#g.N#6.9.wbH#yb0bn#D.f#q.j.U#3.N#6#8.i#b#b.Y.p.Y.paz..",
"..#9#h#9.p.p#V#bb1#8bI#g.NbAb.br.t#H#m#Y#Q#g#Q.9.9.N#6.o#gb0avbG#Z...Y.w#g#6bIbIbIbK#v.K#Ma7#s#s....#haA#Q.NbI#Yb1#V#V#V.p.paz..",
"..#9#9#9.p.p#VbO#Y#8#6.i#M.Q#z.H#f#K.B#Y#6.9.N.9bIbI.9.9#M#M#JbybP.B.Nb0.NbIbI#Y.ibI#vbH.wbubW.E.Sa3a7#m.o#Q#Y#Yb1#V#V#C.p.p.e..",
"..#3#9#9#9.Y#V#VbF#Y#8#6ak#O#db2br.HaP#N.N#QbIbI.a#Y.i.8#M#Qa0.L.B.p#Q#Q.i.i.i#Y.ibI#Q#..c.E.ja3a3bWambP.N.9#Y#Y#b#b#V.p.p.p#9..",
"..#3.e#9.p.p.Y.Yb1b1#Y#.#Ubgbl.T#S..aw#obI.a.a#8#Y#Y.a#YbI.Na0.8bO#8a0#Qa0#8b1#Y#Y#8#Q.ibO#Ta9a9bWa3ay#Eb1.a.ab1#V#V.Y.p.p.e#9..",
"..#3#9.p#h#C.p.Y#Vb1#b#V.a.Y.Y.Y#CazbO.eb1#8#Y#b#bb1b1#8bI#Y.8.abIb1#Y.Nb1#Y#Y#Y#b#Y.9.8.8.C.JbO#j.Yaz#C.p.Y#bb1#V.p.p.p#C.e#9..",
"..#9#9#9.p#9.p.Y.Y#V#b#bb1#8.i#8.a.a#Y#Y#Y#Yb1b1#b#bb1#N#Y#8b1#Y#Yb1#8#Yb1#b#b#b#bb1#Y.N.w.8.N.8#Q.8.i.a#b#Y#bbO#V.Y.p#C.p.p#9..",
"..#3#9.e#9.p.p#9#C.Y#V#b#b#b#Y#Y#Y#Y#Y#Yb1b1bO#V.Y#j#Vb1b1bObObObO.Ab1#N.A.AbF#V#V#V#b#8.aa0.a.ibI.8#Y#Yb1#V#V#V#V.p.p#9.p.e#9..",
"..#3#3#9.e.e.p.p.p.p#V.Y#b#b#Vb1#b#Yb1.A#V.Y.Y.Y.Y.Y.A#j.YbO#VbO.Y#jbO#b#j#j#V.Y#V#V#bb1#Y.a#Yb1.a#8b1b1#b.A#V#C.p.p.p.p.e.e#9..",
"..#3aAaA#3#9.e.e#9#C#C.Y.p.Y#V#VbF#VbO.Y#j.p.p.Y#C#j.Y#j.Y#j.Y#j.Y.YbO.Y#j.Y.p.p.p.p.Y#VbOb1#NbObOb1b1.A#V.p.p.p#C.p#9#9#9.e#9..",
"..#3#9.e#3aA#9.e#9.p.p.e.p.p.p#V#j.Y.Y.Y#9.p.p#9.Yaz.Yaz.paz.Y.paz.Y.Y#j#C.p#C.p#C#C.p#V#VbO#VbF#V#j#V#j.p.p.p#C.p#9#C#C#9.e#9..",
"..#3aA#9aA#9aA.e#9.e#9#9.p.p.p.p#Caz.Y#C.p.p#9.p#C#Caz.p#Caz.Y#C.p#9#j.p#h.p#C#C#C.e.p#9.Y#j.Y.Y.p.p.p#C.p.p#9#9#9#9#9.e#9.e#3..",
"..#3.e#3.e#3.e#9#9aA#9.e.e.e.p#C.p#h#Caz#9.p.p.p#h.Y#9.p.p#C.paz.p#h.Yaz#9.p#C.e.e.e.p.p#9.p.paz#C.paz.Y#9.p.e#9.e#9#9#9#9aA#9..",
"......bC..bC..bCbCbCbCbCbCbC..bC....bC..bCbCbCbCbC..bC....bC......bC..bCbCbCbCbCbCbCbCbCbCbC....bC......bCbC..bC..bC..bC........"
};

49
user/wxLayout/README Normal file
View File

@@ -0,0 +1,49 @@
README for wxLayout classes
---------------------------
All the source in this directory is copyrighted under the
LGPL (GNU LIBRARY PUBLIC LICENSE), by Karsten Ballueder <ballueder@usa.net>.
This is still work in progress, so if you want to make any significant
changes, please get in touch with me before.
There are three building blocks for rich text editing:
wxllist :
The wxLayoutList layout engine. It is a linked list of wxLayoutObjects
which can arrange and display them on any wxDC. I am trying to keep
this class as simple as possible, to be just the core layout
engine. All "convenience" functions should be defined in classes built
on top of this.
The wxLayoutList is derived from kbList, a double-linked list with an
interface modelled after the STL list. As wxLayoutList depends on the
way kbList treats iterators (i.e. the iterator value after an insert()
or erase() operation), I don't feel like rewriting it for wxList.
wxlwindow :
Contains a class wxLayoutWindow, derived from wxScrolledWindow which
can directly be used as a rich-text display or editing window. The
function responsible for keyboard handling is virtual and can be
overloaded for different keybindings. wxLayoutWindow can sent fake
menu-events to the application to react to the user clicking on
objects.
wxlparser:
Contains several high level functions operating on
wxLayoutList. Currently implemented is inserting of text (including
linebreaks) and export of objects, text or html.
Planned for the future is an html parser for importing html.
wxLayout.cpp is a simple test program. It will export Text and HTML to
stdout and demonstrate some of the features and bugs of wxLayoutList.
There are still things to do and I'm working on them. :-)
Karsten Ballueder <Ballueder@usa.ne> 29 June 1998

325
user/wxLayout/kbList.cpp Normal file
View File

@@ -0,0 +1,325 @@
/*-*- c++ -*-********************************************************
* kbList.cc : a double linked list *
* *
* (C) 1998 by Karsten Ball<6C>der (Ballueder@usa.net) *
* *
* $Id$ *
* *
* $Log$
* Revision 1.2 1998/08/12 08:33:23 KB
* Cursor and insert/delete work much better now, code streamlined, still
* a minor problem left.
*
* Revision 1.6 1998/07/08 11:56:56 KB
* M compiles and runs on Solaris 2.5/gcc 2.8/c-client gso
*
* Revision 1.5 1998/06/27 20:07:18 KB
* several bug fixes for kbList
* started adding my layout stuff
*
* Revision 1.1.1.1 1998/06/13 21:51:12 karsten
* initial code
*
* Revision 1.4 1998/05/24 14:48:00 KB
* lots of progress on Python, but cannot call functions yet
* kbList fixes again?
*
* Revision 1.3 1998/05/18 17:48:34 KB
* more list<>->kbList changes, fixes for wxXt, improved makefiles
*
* Revision 1.2 1998/05/14 16:39:31 VZ
*
* fixed SIGSEGV in ~kbList if the list is empty
*
* Revision 1.1 1998/05/13 19:02:11 KB
* added kbList, adapted MimeTypes for it, more python, new icons
*
*******************************************************************/
#ifdef __GNUG__
# pragma implementation "kbList.h"
#endif
#ifdef M_BASEDIR
# include "Mconfig.h"
#endif
#include "kbList.h"
kbListNode::kbListNode( void *ielement,
kbListNode *iprev,
kbListNode *inext)
{
next = inext;
prev = iprev;
if(prev)
prev->next = this;
if(next)
next->prev = this;
element = ielement;
}
kbListNode::~kbListNode()
{
if(prev)
prev->next = next;
if(next)
next->prev = prev;
}
kbList::iterator::iterator(kbListNode *n)
{
node = n;
}
void *
kbList::iterator::operator*()
{
return node->element;
}
kbList::iterator &
kbList::iterator::operator++()
{
node = node ? node->next : NULL;
return *this;
}
kbList::iterator &
kbList::iterator::operator--()
{
node = node ? node->prev : NULL;
return *this;
}
kbList::iterator &
kbList::iterator::operator++(int foo)
{
return operator++();
}
kbList::iterator &
kbList::iterator::operator--(int bar)
{
return operator--();
}
bool
kbList::iterator::operator !=(kbList::iterator const & i) const
{
return node != i.node;
}
bool
kbList::iterator::operator ==(kbList::iterator const & i) const
{
return node == i.node;
}
kbList::kbList(bool ownsEntriesFlag)
{
first = NULL;
last = NULL;
ownsEntries = ownsEntriesFlag;
}
void
kbList::push_back(void *element)
{
if(! first) // special case of empty list
{
first = new kbListNode(element);
last = first;
return;
}
else
last = new kbListNode(element, last);
}
void
kbList::push_front(void *element)
{
if(! first) // special case of empty list
{
push_back(element);
return;
}
else
first = new kbListNode(element, NULL, first);
}
void *
kbList::pop_back(void)
{
iterator i;
void *data;
bool ownsFlagBak = ownsEntries;
i = tail();
data = *i;
ownsEntries = false;
erase(i);
ownsEntries = ownsFlagBak;
return data;
}
void *
kbList::pop_front(void)
{
iterator i;
void *data;
bool ownsFlagBak = ownsEntries;
i = begin();
data = *i;
ownsEntries = false;
erase(i);
ownsEntries = ownsFlagBak;
return data;
}
void
kbList::insert(kbList::iterator & i, void *element)
{
if(! i.Node())
return;
else if(i.Node() == first)
{
push_front(element);
i = first;
return;
}
i = kbList::iterator(new kbListNode(element, i.Node()->prev, i.Node()));
}
void
kbList::erase(kbList::iterator & i)
{
kbListNode
*node = i.Node(),
*prev, *next;
if(! node) // illegal iterator
return;
prev = node->prev;
next = node->next;
// correct first/last:
if(node == first)
first = node->next;
if(node == last) // don't put else here!
last = node->prev;
// build new links:
if(prev)
prev->next = next;
if(next)
next->prev = prev;
// delete this node and contents:
if(ownsEntries)
delete *i;
delete i.Node();
// change the iterator to next element:
i = kbList::iterator(next);
}
kbList::~kbList()
{
kbListNode *next;
while ( first != NULL )
{
next = first->next;
if(ownsEntries)
delete first->element;
delete first;
first = next;
}
}
kbList::iterator
kbList::begin(void) const
{
return kbList::iterator(first);
}
kbList::iterator
kbList::tail(void) const
{
return kbList::iterator(last);
}
kbList::iterator
kbList::end(void) const
{
return kbList::iterator(NULL); // the one after the last
}
unsigned
kbList::size(void) const // inefficient
{
unsigned count = 0;
kbList::iterator i;
for(i = begin(); i != end(); i++, count++)
;
return count;
}
#ifdef KBLIST_TEST
#include <iostream.h>
KBLIST_DEFINE(kbListInt,int);
int main(void)
{
int
n, *ptr;
kbListInt
l;
kbListInt::iterator
i;
for(n = 0; n < 10; n++)
{
ptr = new int;
*ptr = n*n;
l.push_back(ptr);
}
i = l.begin(); // first element
i++; // 2nd
i++; // 3rd
i++; // 4th, insert here:
ptr = new int;
*ptr = 4444;
l.insert(i,ptr);
// this cannot work, because l.end() returns NULL:
i = l.end(); // behind last
i--; // still behind last
l.erase(i); // doesn't do anything
// this works:
i = l.tail(); // last element
i--;
--i;
l.erase(i); // erase 3rd last element (49)
for(i = l.begin(); i != l.end(); i++)
cout << *i << '\t' << *((int *)*i) << endl;
return 0;
}
#endif

298
user/wxLayout/kbList.h Normal file
View File

@@ -0,0 +1,298 @@
/*-*- c++ -*-********************************************************
* kbList.h : a double linked list *
* *
* (C) 1998 by Karsten Ball<6C>der (Ballueder@usa.net) *
* *
* $Id$
*
*******************************************************************/
#ifndef KBLIST_H
# define KBLIST_H
#ifdef __GNUG__
# pragma interface "kbList.h"
#endif
#ifndef NULL
# define NULL 0
#endif
/**@name Double linked list implementation. */
//@{
/** kbListNode is a class used by kbList. It represents a single
element in the list. It is not intended for general use outside
kbList functions.
*/
struct kbListNode
{
/// pointer to next node or NULL
struct kbListNode *next;
/// pointer to previous node or NULL
struct kbListNode *prev;
/// pointer to the actual data
void *element;
/** Constructor - it automatically links the node into the list, if
the iprev, inext parameters are given.
@param ielement pointer to the data for this node (i.e. the data itself)
@param iprev if not NULL, use this as previous element in list
@param inext if not NULL, use this as next element in list
*/
kbListNode( void *ielement,
kbListNode *iprev = (kbListNode *) NULL,
kbListNode *inext = (kbListNode *) NULL);
/// Destructor.
~kbListNode();
};
/** The main list class, handling void pointers as data.
*/
class kbList
{
public:
/// An iterator class for kbList, just like for the STL classes.
class iterator
{
protected:
/// the node to which this iterator points
kbListNode *node;
friend class kbList;
public:
/** Constructor.
@param n if not NULL, the node to which to point
*/
iterator(kbListNode *n = (kbListNode *) NULL);
/** Dereference operator.
@return the data pointer of the node belonging to this
iterator
*/
void * operator*();
/** Increment operator - prefix, goes to next node in list.
@return itself
*/
iterator & operator++();
/** Decrement operator - prefix, goes to previous node in list.
@return itself
*/
iterator & operator--();
/** Increment operator - prefix, goes to next node in list.
@return itself
*/
iterator & operator++(int); //postfix
/** Decrement operator - prefix, goes to previous node in list.
@return itself
*/
iterator & operator--(int); //postfix
/** Comparison operator.
@return true if not equal.
*/
bool operator !=(iterator const &) const;
/* Comparison operator.
@return true if equal
*/
bool operator ==(iterator const &) const;
/** Returns a pointer to the node associated with this iterator.
This function is not for general use and should be
protected. However, if protected, it cannot be called from
derived classes' iterators. (Is this a bug in gcc/egcs?)
@return the node pointer
*/
inline kbListNode * Node(void) const
{ return node; }
};
/** Constructor.
@param ownsEntriesFlag if true, the list owns the entries and
will issue a delete on each of them when deleting them. If
false, the entries themselves will not get deleted. Do not use
this with array types!
*/
kbList(bool ownsEntriesFlag = true);
/** Destructor.
If entries are owned, they will all get deleted from here.
*/
~kbList();
/** Tell list whether it owns objects. If owned, they can be
deleted by list. See the constructor for more details.
@param ownsflag if true, list will own entries
*/
void ownsObjects(bool ownsflag = true)
{ ownsEntries = ownsflag; }
/** Query whether list owns entries.
@return true if list owns entries
*/
bool ownsObjects(void)
{ return ownsEntries; }
/** Add an entry at the end of the list.
@param element pointer to data
*/
void push_back(void *element);
/** Add an entry at the head of the list.
@param element pointer to data
*/
void push_front(void *element);
/** Get element from end of the list and delete it.
NOTE: In this case the element's data will not get deleted by
the list. It is the responsibility of the caller to free it.
@return the element data
*/
void *pop_back(void);
/** Get element from head of the list and delete it.
NOTE: In this case the element's data will not get deleted by
the list. It is the responsibility of the caller to free it.
@return the element data
*/
void *pop_front(void);
/** Insert an element into the list.
@param i an iterator pointing to the element, before which the new one should be inserted
@param element the element data
*/
void insert(iterator & i, void *element);
/** Erase an element, move iterator to following element.
@param i iterator pointing to the element to be deleted
*/
void erase(iterator & i);
/* Get head of list.
@return iterator pointing to head of list
*/
iterator begin(void) const;
/* Get end of list.
@return iterator pointing after the end of the list. This is an
invalid iterator which cannot be dereferenced or decremented. It is
only of use in comparisons. NOTE: this is different from STL!
@see tail
*/
iterator end(void) const;
/* Get last element in list.
@return iterator pointing to the last element in the list.
@see end
*/
iterator tail(void) const;
/* Get the number of elements in the list.
@return number of elements in the list
*/
unsigned size(void) const;
/* Query whether list is empty.
@return true if list is empty
*/
bool empty(void) const
{ return first == NULL ; }
protected:
/// if true, list owns entries
bool ownsEntries;
/// pointer to first element in list
kbListNode *first;
/// pointer to last element in list
kbListNode *last;
private:
/// forbid copy construction
kbList(kbList const &foo);
/// forbid assignments
kbList& operator=(const kbList& foo);
};
/// just for backward compatibility, will be removed soon
typedef kbList::iterator kbListIterator;
/// cast an iterator to a pointer, compatibility only to be removed
#define kbListICast(type, iterator) ((type *)*iterator)
/// cast an iterator to a const pointer, compatibility only to be removed
#define kbListIcCast(type, iterator) ((type const *)*iterator)
/** Macro to define a kbList with a given name, having elements of
pointer to the given type. I.e. KBLIST_DEFINE(Int,int) would
create a kbListInt type holding int pointers.
*/
#define KBLIST_DEFINE(name,type) \
class name : public kbList \
{ \
public: \
class iterator : public kbList::iterator \
{ \
protected: \
inline iterator(kbList::iterator const & i) \
{ node = i.Node(); } \
friend class name; \
public: \
inline iterator(kbListNode *n = (kbListNode *) NULL) \
: kbList::iterator(n) {} \
inline type * operator*() \
/* the cast is needed for MS VC++ 5.0 */ \
{ return (type *)((kbList::iterator *)this)->operator*() ; } \
}; \
inline name(bool ownsEntriesFlag = FALSE) \
: kbList(ownsEntriesFlag) {} \
\
inline void push_back(type *element) \
{ kbList::push_back((void *)element); } \
\
inline void push_front(type *element) \
{ kbList::push_front((void *)element); } \
\
inline type *pop_back(void) \
{ return (type *) kbList::pop_back(); } \
\
inline type *pop_front(void) \
{ return (type *) kbList::pop_front(); } \
\
inline void insert(iterator & i, type *element) \
{ kbList::insert(i, (void *) element); } \
\
inline void erase(iterator & i) \
{ kbList::erase(i); } \
\
inline iterator begin(void) const \
{ return kbList::begin(); } \
\
inline iterator end(void) const \
{ return kbList::end(); } \
\
inline iterator tail(void) const \
{ return kbList::tail(); } \
~name() \
{ \
kbListNode *next; \
while ( first != (kbListNode *) NULL ) \
{ \
next = first->next; \
if(ownsEntries) \
delete typecast(first->element); \
delete first; \
first = next; \
} \
} \
private: \
inline type * typecast(void *ptr) \
{ return (type *) ptr; } \
}
#ifdef MCONFIG_H
/// define the most commonly used list type once:
KBLIST_DEFINE(kbStringList, String);
#endif
#endif // KBLIST_H

453
user/wxLayout/wxLayout.cpp Normal file
View File

@@ -0,0 +1,453 @@
/*
* Program: wxLayout
*
* Author: Karsten Ball<6C>der
*
* Copyright: (C) 1998, Karsten Ball<6C>der <Ballueder@usa.net>
*
*/
#ifdef __GNUG__
#pragma implementation "wxLayout.h"
#endif
#include "wxLayout.h"
#include "wx/textfile.h"
#include "Micon.xpm"
// for testing only:
#include <stdio.h>
//-----------------------------------------------------------------------------
// main program
//-----------------------------------------------------------------------------
IMPLEMENT_APP(MyApp)
//-----------------------------------------------------------------------------
// MyFrame
//-----------------------------------------------------------------------------
enum ids{ ID_EDIT = 1, ID_ADD_SAMPLE, ID_CLEAR, ID_PRINT,
ID_PRINT_SETUP, ID_PAGE_SETUP, ID_PREVIEW, ID_PRINT_PS,
ID_PRINT_SETUP_PS, ID_PAGE_SETUP_PS,ID_PREVIEW_PS,
ID_DPRINT,
ID_WXLAYOUT_DEBUG, ID_QUIT, ID_CLICK, ID_HTML, ID_TEXT, ID_TEST };
IMPLEMENT_DYNAMIC_CLASS( MyFrame, wxFrame )
BEGIN_EVENT_TABLE(MyFrame,wxFrame)
EVT_MENU(ID_PRINT, MyFrame::OnPrint)
EVT_MENU(ID_PREVIEW, MyFrame::OnPrintPreview)
EVT_MENU(ID_PRINT_SETUP, MyFrame::OnPrintSetup)
EVT_MENU(ID_PAGE_SETUP, MyFrame::OnPageSetup)
EVT_MENU(ID_PRINT_PS, MyFrame::OnPrintPS)
EVT_MENU(ID_PREVIEW_PS, MyFrame::OnPrintPreviewPS)
EVT_MENU(ID_PRINT_SETUP_PS, MyFrame::OnPrintSetupPS)
EVT_MENU(ID_PAGE_SETUP_PS, MyFrame::OnPageSetupPS)
EVT_MENU (-1, MyFrame::OnCommand)
EVT_COMMAND (-1,-1, MyFrame::OnCommand)
EVT_CHAR ( wxLayoutWindow::OnChar )
END_EVENT_TABLE()
int orientation = wxPORTRAIT;
MyFrame::MyFrame(void) :
wxFrame( (wxFrame *) NULL, -1, (char *) "wxLayout", wxPoint(20,20), wxSize(600,360) )
{
CreateStatusBar( 1 );
SetStatusText( "wxLayout by Karsten Ball<6C>der." );
wxMenu *file_menu = new wxMenu( "Menu 1" );
file_menu->Append( ID_CLEAR, "Clear");
file_menu->Append( ID_ADD_SAMPLE, "Example");
file_menu->Append( ID_EDIT, "Edit");
file_menu->Append( ID_WXLAYOUT_DEBUG, "Debug");
file_menu->Append(ID_PRINT, "&Print...", "Print");
file_menu->Append(ID_PRINT_SETUP, "Print &Setup...","Setup printer properties");
file_menu->Append(ID_PAGE_SETUP, "Page Set&up...", "Page setup");
file_menu->Append(ID_PREVIEW, "Print Pre&view", "Preview");
#ifdef __WXMSW__
file_menu->AppendSeparator();
file_menu->Append(ID_PRINT_PS, "Print PostScript...", "Print (PostScript)");
file_menu->Append(ID_PRINT_SETUP_PS, "Print Setup PostScript...", "Setup printer properties (PostScript)");
file_menu->Append(ID_PAGE_SETUP_PS, "Page Setup PostScript...", "Page setup (PostScript)");
file_menu->Append(ID_PREVIEW_PS, "Print Preview PostScript", "Preview (PostScript)");
#endif
file_menu->AppendSeparator();
file_menu->Append( ID_DPRINT, "Direct Print");
file_menu->Append( ID_TEXT, "Export Text");
file_menu->Append( ID_HTML, "Export HTML");
file_menu->Append( ID_TEST, "Test");
file_menu->Append( ID_QUIT, "Exit");
wxMenuBar *menu_bar = new wxMenuBar();
menu_bar->Append(file_menu, "File" );
menu_bar->Show( TRUE );
SetMenuBar( menu_bar );
m_lwin = new wxLayoutWindow(this);
m_lwin->SetEventId(ID_CLICK);
m_lwin->GetLayoutList().SetEditable(true);
m_lwin->Clear(wxROMAN,16,wxNORMAL,wxNORMAL, false);
m_lwin->SetFocus();
};
void
MyFrame::AddSampleText(wxLayoutList &llist)
{
llist.Insert("--");
llist.LineBreak();
llist.Insert("The quick brown fox jumps over the lazy dog.");
llist.LineBreak();
llist.Insert("Hello ");
llist.Insert(new wxLayoutObjectIcon(new wxIcon(Micon_xpm,-1,-1)));
llist.LineBreak();
llist.SetFontWeight(wxBOLD);
llist.Insert("World! ");
llist.SetFontWeight(wxNORMAL);
llist.Insert("The quick brown fox jumps...");
llist.LineBreak();
llist.Insert("over the lazy dog.");
llist.SetFont(-1,-1,-1,-1,true);
llist.Insert("underlined");
llist.SetFont(-1,-1,-1,-1,false);
llist.SetFont(wxROMAN);
llist.Insert("This is ");
llist.SetFont(-1,-1,-1,wxBOLD); llist.Insert("BOLD "); llist.SetFont(-1,-1,-1,wxNORMAL);
llist.Insert("and ");
llist.SetFont(-1,-1,wxITALIC);
llist.Insert("italics ");
llist.SetFont(-1,-1,wxNORMAL);
llist.LineBreak();
llist.Insert("and ");
llist.SetFont(-1,-1,wxSLANT);
llist.Insert("slanted");
llist.SetFont(-1,-1,wxNORMAL);
llist.Insert(" text.");
llist.LineBreak();
llist.Insert("and ");
llist.SetFont(-1,-1,-1,-1,-1,"blue");
llist.Insert("blue");
llist.SetFont(-1,-1,-1,-1,-1,"black");
llist.Insert(" and ");
llist.SetFont(-1,-1,-1,-1,-1,"green","black");
llist.Insert("green on black");
llist.SetFont(-1,-1,-1,-1,-1,"black","white");
llist.Insert(" text.");
llist.LineBreak();
llist.SetFont(-1,-1,wxSLANT);
llist.Insert("Slanted");
llist.SetFont(-1,-1,wxNORMAL);
llist.Insert(" and normal text and ");
llist.SetFont(-1,-1,wxSLANT);
llist.Insert("slanted");
llist.SetFont(-1,-1,wxNORMAL);
llist.Insert(" again.");
llist.LineBreak();
// add some more text for testing:
llist.Insert("And here the source for the test program:");
llist.LineBreak();
llist.SetFont(wxTELETYPE,16);
char buffer[1024];
FILE *in = fopen("wxLayout.cpp","r");
if(in)
{
for(;;)
{
fgets(buffer,1024,in);
if(feof(in))
break;
llist.Insert(buffer);
llist.LineBreak();
}
}
m_lwin->Refresh();
m_lwin->UpdateScrollbars();
llist.SetEditable();
llist.SetCursor(wxPoint(0,0));
}
void
MyFrame::Clear(void)
{
m_lwin->Clear(wxROMAN,16,wxNORMAL,wxNORMAL, false);
m_lwin->UpdateScrollbars();
}
/* test the editing */
void MyFrame::Edit(void)
{
wxLayoutList & llist = m_lwin->GetLayoutList();
m_lwin->SetEventId(ID_CLICK);
llist.MoveCursor(0);
llist.MoveCursor(5);
llist.MoveCursor(0,2);
llist.Delete(2);
llist.MoveCursor(2);
llist.Insert("not");
llist.LineBreak();
m_lwin->Refresh();
}
void MyFrame::OnCommand( wxCommandEvent &event )
{
cerr << "id:" << event.GetId() << endl;
switch (event.GetId())
{
case ID_QUIT:
Close( TRUE );
break;
case ID_PRINT:
m_lwin->Print();
break;
case ID_DPRINT:
{
wxLayoutList llist;
AddSampleText(llist);
wxPostScriptDC dc("layout.ps",true,this);
if (dc.Ok() && dc.StartDoc((char *)_("Printing message...")))
{
//dc.SetUserScale(1.0, 1.0);
llist.Draw(dc); //,false,wxPoint(0,0),true);
dc.EndDoc();
}
}
break;
case ID_EDIT:
Edit();
break;
case ID_ADD_SAMPLE:
AddSampleText(m_lwin->GetLayoutList());
break;
case ID_CLEAR:
Clear();
break;
case ID_WXLAYOUT_DEBUG:
m_lwin->GetLayoutList().Debug();
break;
case ID_CLICK:
cerr << "Received click event." << endl;
break;
case ID_TEST:
{
Clear();
m_lwin->GetLayoutList().LineBreak();
m_lwin->GetLayoutList().Insert("abc");
m_lwin->GetLayoutList().LineBreak();
m_lwin->GetLayoutList().Insert("def");
break;
}
case ID_HTML:
{
wxLayoutExportObject *export;
wxLayoutList::iterator i = m_lwin->GetLayoutList().begin();
while((export = wxLayoutExport(m_lwin->GetLayoutList(),
i,WXLO_EXPORT_AS_HTML)) != NULL)
{
if(export->type == WXLO_EXPORT_HTML)
cout << *(export->content.text);
else
cout << "<!--UNKNOWN OBJECT>";
delete export;
}
}
break;
case ID_TEXT:
{
wxLayoutExportObject *export;
wxLayoutList::iterator i = m_lwin->GetLayoutList().begin();
while((export = wxLayoutExport(m_lwin->GetLayoutList(),
i,WXLO_EXPORT_AS_TEXT)) != NULL)
{
if(export->type == WXLO_EXPORT_TEXT)
cout << *(export->content.text);
else
cout << "<!--UNKNOWN OBJECT>";
delete export;
}
}
break;
}
};
void MyFrame::OnPrint(wxCommandEvent& WXUNUSED(event))
{
#ifdef __WXMSW__
wxGetApp().SetPrintMode(wxPRINT_WINDOWS);
#else
wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
#endif
wxPrinter printer;
wxLayoutPrintout printout( m_lwin->GetLayoutList(),"My printout");
if (!printer.Print(this, &printout, TRUE))
wxMessageBox("There was a problem printing.\nPerhaps your current printer is not set correctly?", "Printing", wxOK);
}
void MyFrame::OnPrintPS(wxCommandEvent& WXUNUSED(event))
{
wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
wxPostScriptPrinter printer;
wxLayoutPrintout printout( m_lwin->GetLayoutList(),"My printout");
printer.Print(this, &printout, TRUE);
}
void MyFrame::OnPrintPreview(wxCommandEvent& WXUNUSED(event))
{
#ifdef __WXMSW__
wxGetApp().SetPrintMode(wxPRINT_WINDOWS);
#else
wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
#endif
wxPrintData printData;
printData.SetOrientation(orientation);
// Pass two printout objects: for preview, and possible printing.
wxPrintPreview *preview = new wxPrintPreview(new wxLayoutPrintout( m_lwin->GetLayoutList()), new wxLayoutPrintout( m_lwin->GetLayoutList()), & printData);
if (!preview->Ok())
{
delete preview;
wxMessageBox("There was a problem previewing.\nPerhaps your current printer is not set correctly?", "Previewing", wxOK);
return;
}
wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", wxPoint(100, 100), wxSize(600, 650));
frame->Centre(wxBOTH);
frame->Initialize();
frame->Show(TRUE);
}
void MyFrame::OnPrintPreviewPS(wxCommandEvent& WXUNUSED(event))
{
wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
wxPrintData printData;
printData.SetOrientation(orientation);
// Pass two printout objects: for preview, and possible printing.
wxPrintPreview *preview = new wxPrintPreview(new wxLayoutPrintout( m_lwin->GetLayoutList()), new wxLayoutPrintout( m_lwin->GetLayoutList()), & printData);
wxPreviewFrame *frame = new wxPreviewFrame(preview, this, "Demo Print Preview", wxPoint(100, 100), wxSize(600, 650));
frame->Centre(wxBOTH);
frame->Initialize();
frame->Show(TRUE);
}
void MyFrame::OnPrintSetup(wxCommandEvent& WXUNUSED(event))
{
#ifdef __WXMSW__
wxGetApp().SetPrintMode(wxPRINT_WINDOWS);
#else
wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
#endif
wxPrintData data;
data.SetOrientation(orientation);
#ifdef __WXMSW__
wxPrintDialog printerDialog(this, & data);
#else
wxGenericPrintDialog printerDialog(this, & data);
#endif
printerDialog.GetPrintData().SetSetupDialog(TRUE);
printerDialog.ShowModal();
orientation = printerDialog.GetPrintData().GetOrientation();
}
void MyFrame::OnPageSetup(wxCommandEvent& WXUNUSED(event))
{
#ifdef __WXMSW__
wxGetApp().SetPrintMode(wxPRINT_WINDOWS);
#else
wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
#endif
wxPageSetupData data;
data.SetOrientation(orientation);
#ifdef __WXMSW__
wxPageSetupDialog pageSetupDialog(this, & data);
#else
wxGenericPageSetupDialog pageSetupDialog(this, & data);
#endif
pageSetupDialog.ShowModal();
data = pageSetupDialog.GetPageSetupData();
orientation = data.GetOrientation();
}
void MyFrame::OnPrintSetupPS(wxCommandEvent& WXUNUSED(event))
{
wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
wxPrintData data;
data.SetOrientation(orientation);
wxGenericPrintDialog printerDialog(this, & data);
printerDialog.GetPrintData().SetSetupDialog(TRUE);
printerDialog.ShowModal();
orientation = printerDialog.GetPrintData().GetOrientation();
}
void MyFrame::OnPageSetupPS(wxCommandEvent& WXUNUSED(event))
{
wxGetApp().SetPrintMode(wxPRINT_POSTSCRIPT);
wxPageSetupData data;
data.SetOrientation(orientation);
wxGenericPageSetupDialog pageSetupDialog(this, & data);
pageSetupDialog.ShowModal();
orientation = pageSetupDialog.GetPageSetupData().GetOrientation();
}
//-----------------------------------------------------------------------------
// MyApp
//-----------------------------------------------------------------------------
MyApp::MyApp(void) :
wxApp( )
{
};
bool MyApp::OnInit(void)
{
wxFrame *frame = new MyFrame();
frame->Show( TRUE );
wxSetAFMPath("/usr/local/src/wxWindows/misc/afm/");
return TRUE;
};

67
user/wxLayout/wxLayout.h Normal file
View File

@@ -0,0 +1,67 @@
/* -*- c++ -*- */
#ifndef __WXLAYOUTH__
#define __WXLAYOUTH__
#ifdef __GNUG__
#pragma interface
#endif
#include "wx/wx.h"
#include "wxllist.h"
#include "wxlwindow.h"
#include "wxlparser.h"
//-----------------------------------------------------------------------------
// derived classes
//-----------------------------------------------------------------------------
class MyFrame;
class MyApp;
//-----------------------------------------------------------------------------
// MyFrame
//-----------------------------------------------------------------------------
class MyFrame: public wxFrame
{
DECLARE_DYNAMIC_CLASS(MyFrame)
public:
MyFrame(void);
void Edit(void);
void AddSampleText(wxLayoutList &llist);
void Clear(void);
void OnCommand( wxCommandEvent &event );
void OnPrint(wxCommandEvent& event);
void OnPrintPreview(wxCommandEvent& event);
void OnPrintSetup(wxCommandEvent& event);
void OnPageSetup(wxCommandEvent& event);
void OnPrintPS(wxCommandEvent& event);
void OnPrintPreviewPS(wxCommandEvent& event);
void OnPrintSetupPS(wxCommandEvent& event);
void OnPageSetupPS(wxCommandEvent& event);
DECLARE_EVENT_TABLE()
private:
wxLayoutWindow *m_lwin;
};
//-----------------------------------------------------------------------------
// MyApp
//-----------------------------------------------------------------------------
class MyApp: public wxApp
{
public:
MyApp(void);
virtual bool OnInit(void);
};
#endif // __WXCONVERTH__

1081
user/wxLayout/wxllist.cpp Normal file

File diff suppressed because it is too large Load Diff

338
user/wxLayout/wxllist.h Normal file
View File

@@ -0,0 +1,338 @@
/*-*- c++ -*-********************************************************
* wxLayoutList.h - a formatted text rendering engine for wxWindows *
* *
* (C) 1998 by Karsten Ball<6C>der (Ballueder@usa.net) *
* *
* $Id$
*******************************************************************/
#ifndef WXLLIST_H
#define WXLLIST_H
#ifdef __GNUG__
# pragma interface "wxllist.h"
#endif
#include "kbList.h"
#include "wx/wx.h"
#include "wx/print.h"
#include "wx/printdlg.h"
#include "wx/generic/printps.h"
#include "wx/generic/prntdlgg.h"
// skip the following defines if embedded in M application
#ifdef M_BASEDIR
# ifdef DEBUG
//# define WXLAYOUT_DEBUG
# endif
#else
// for testing only:
# define WXLAYOUT_DEBUG
// The wxLayout classes can be compiled with std::string instead of wxString
//# define USE_STD_STRING
#endif
#ifdef USE_STD_STRING
# include <string>
typedef std::string String;
# define Str(str)(str.c_str())
#else
typedef wxString String;
# define Str(str) str
#endif
/// Types of currently supported layout objects.
enum wxLayoutObjectType
{ WXLO_TYPE_INVALID = 0, WXLO_TYPE_TEXT, WXLO_TYPE_CMD, WXLO_TYPE_ICON, WXLO_TYPE_LINEBREAK };
/// Type used for coordinates in drawing.
typedef long CoordType;
class wxLayoutList;
class wxLayoutObjectBase;
class wxDC;
class wxColour;
class wxFont;
/** The base class defining the interface to each object which can be
part of the layout. Each object needs to draw itself and calculate
its size.
*/
class wxLayoutObjectBase
{
public:
/// return the type of this object
virtual wxLayoutObjectType GetType(void) const { return WXLO_TYPE_INVALID; } ;
/** Draws an object.
@param dc the wxDC to draw on
@param position where to draw the top left corner
@param baseLine the baseline for alignment, from top of box
@draw if set to false, do not draw but just calculate sizes
*/
virtual void Draw(wxDC &dc, wxPoint position, CoordType baseLine,
bool draw = true) {};
/** Calculates and returns the size of the object. May need to be
called twice to work.
@param baseLine pointer where to store the baseline position of
this object (i.e. the height from the top of the box to the
baseline)
@return the size of the object's box in pixels
*/
virtual wxPoint GetSize(CoordType *baseLine) const { return
wxPoint(0,0); };
/// returns the number of cursor positions occupied by this object
virtual CoordType CountPositions(void) const { return 1; }
/// constructor
wxLayoutObjectBase() { m_UserData = NULL; }
/// note: any user data will be freed at the time the object is deleted
virtual ~wxLayoutObjectBase() { if(m_UserData) delete m_UserData; }
#ifdef WXLAYOUT_DEBUG
virtual void Debug(void);
#endif
/** Tells the object about some user data. This data is associated
with the object and will be deleted at destruction time.
*/
void SetUserData(void *data) { m_UserData = data; }
/** Return the user data. */
void * GetUserData(void) const { return m_UserData; }
private:
/// optional data for application's use
void * m_UserData;
};
/// Define a list type of wxLayoutObjectBase pointers.
KBLIST_DEFINE(wxLayoutObjectList, wxLayoutObjectBase);
/// object for text block
class wxLayoutObjectText : public wxLayoutObjectBase
{
public:
virtual wxLayoutObjectType GetType(void) const { return WXLO_TYPE_TEXT; }
virtual void Draw(wxDC &dc, wxPoint position, CoordType baseLine,
bool draw = true);
/** This returns the height and in baseLine the position of the
text's baseline within it's box. This is needed to properly
align text objects.
*/
virtual wxPoint GetSize(CoordType *baseLine) const;
#ifdef WXLAYOUT_DEBUG
virtual void Debug(void);
#endif
wxLayoutObjectText(const String &txt);
virtual CoordType CountPositions(void) const { return strlen(m_Text.c_str()); }
// for editing:
String & GetText(void) { return m_Text; }
void SetText(String const &text) { m_Text = text; }
private:
String m_Text;
/// size of the box containing text
long m_Width, m_Height;
/// the position of the baseline counted from the top of the box
long m_BaseLine;
};
/// icon/pictures:
class wxLayoutObjectIcon : public wxLayoutObjectBase
{
public:
virtual wxLayoutObjectType GetType(void) const { return WXLO_TYPE_ICON; }
virtual void Draw(wxDC &dc, wxPoint position, CoordType baseLine,
bool draw = true);
virtual wxPoint GetSize(CoordType *baseLine) const;
wxLayoutObjectIcon(wxIcon *icon);
private:
wxIcon *m_Icon;
};
/// for export to html:
struct wxLayoutStyleInfo
{
int size, family, style, weight;
bool underline;
unsigned fg_red, fg_green, fg_blue;
unsigned bg_red, bg_green, bg_blue;
};
/// pseudo-object executing a formatting command in Draw()
class wxLayoutObjectCmd : public wxLayoutObjectBase
{
public:
virtual wxLayoutObjectType GetType(void) const { return WXLO_TYPE_CMD; }
virtual void Draw(wxDC &dc, wxPoint position, CoordType baseLine,
bool draw = true);
wxLayoutObjectCmd(int size, int family, int style, int weight,
bool underline,
wxColour const *fg, wxColour const *bg);
~wxLayoutObjectCmd();
/// caller must free pointer:
wxLayoutStyleInfo *GetStyle(void) const ;
/// return the background colour for setting colour of window
wxColour const *GetBGColour(void) const { return m_ColourBG; }
private:
/// the font to use
wxFont *m_font;
/// foreground colour
wxColour const *m_ColourFG;
/// background colour
wxColour const *m_ColourBG;
};
/// this object doesn't do anything at all
class wxLayoutObjectLineBreak : public wxLayoutObjectBase
{
public:
virtual wxLayoutObjectType GetType(void) const { return WXLO_TYPE_LINEBREAK; }
};
class wxLayoutPrintout;
/**
This class provides a high level abstraction to the wxFText
classes.
It handles most of the character events with its own callback
functions, providing an editing ability. All events which cannot be
handled get passed to the parent window's handlers.
*/
class wxLayoutList : public wxLayoutObjectList
{
public:
wxLayoutList();
/// Destructor.
~wxLayoutList();
/// adds an object:
void AddObject(wxLayoutObjectBase *obj);
void AddText(String const &txt);
void LineBreak(void);
void SetFont(int family, int size, int style,
int weight, int underline,
wxColour const *fg,
wxColour const *bg);
void SetFont(int family=-1, int size = -1, int style=-1,
int weight=-1, int underline = -1,
char const *fg = (const char *) NULL,
char const *bg = (const char *) NULL);
inline void SetFontFamily(int family) { SetFont(family); }
inline void SetFontSize(int size) { SetFont(-1,size); }
inline void SetFontStyle(int style) { SetFont(-1,-1,style); }
inline void SetFontWeight(int weight) { SetFont(-1,-1,-1,weight); }
inline void SetFontUnderline(bool ul) { SetFont(-1,-1,-1,-1,(int)ul); }
inline void SetFontColour(char const *fg, char const *bg = (const char *) NULL) { SetFont(-1,-1,-1,-1,-1,fg,bg); }
/** Draw the list on a given DC.
@param findObject if true, return the object occupying the
position specified by coords
@param coords position where to find the object
@pageNo if > 0, print only that page of a document (for
printing)
@reallyDraw set this to false if you don't want to draw but just calculate the coordinates
@return if findObject == true, the object or NULL
*/
wxLayoutObjectBase *Draw(wxDC &dc, bool findObject = false,
wxPoint const &coords = wxPoint(0,0),
int pageNo = -1, bool reallyDraw = true);
#ifdef WXLAYOUT_DEBUG
void Debug(void);
void ShowCurrentObject();
#endif
/// for access by wxLayoutWindow:
void GetSize(CoordType *max_x, CoordType *max_y,
CoordType *lineHeight);
/**@name Functionality for editing */
//@{
/// set list editable or read only
void SetEditable(bool editable = true) { m_Editable = editable; }
/// return true if list is editable
bool IsEditable(void) const { return m_Editable; }
/// move cursor, returns true if it could move to the desired position
bool MoveCursor(int dx = 0, int dy = 0);
void SetCursor(wxPoint const &p) { m_CursorPosition = p; }
wxPoint GetCursor(void) const { return m_CursorPosition; }
/// delete one or more cursor positions
void Delete(CoordType count = 1);
void Insert(String const &text);
void Insert(wxLayoutObjectBase *obj);
void Clear(int family = wxROMAN, int size=12, int style=wxNORMAL, int weight=wxNORMAL,
int underline=0, char const *fg="black", char const *bg="white");
/// return a pointer to the default settings:
wxLayoutObjectCmd const *GetDefaults(void) const { return m_DefaultSetting ; }
wxLayoutObjectList::iterator FindCurrentObject(CoordType *offset = (CoordType *) NULL);
// get the length of the line with the object pointed to by i, offs
// only used to decide whether we are before or after linebreak
CoordType GetLineLength(wxLayoutObjectList::iterator i,
CoordType offs = 0);
wxLayoutPrintout *MakePrintout(wxString const &name);
//@}
protected:
/// font parameters:
int m_FontFamily, m_FontStyle, m_FontWeight;
int m_FontPtSize;
bool m_FontUnderline;
/// colours:
wxColour const * m_ColourFG;
wxColour const * m_ColourBG;
/// the default setting:
wxLayoutObjectCmd *m_DefaultSetting;
/// needs recalculation?
bool m_dirty;
// the currently updated line:
/// where do we draw next:
wxPoint m_Position;
/// the height of the current line:
CoordType m_LineHeight;
/// maximum drawn x position so far
CoordType m_MaxX;
/// maximum drawn y position:
CoordType m_MaxY;
//---- this is needed for editing:
/// where is the text cursor:
wxPoint m_CursorPosition;
/// which is the last line
CoordType m_MaxLine;
/// can we edit it?
bool m_Editable;
/// find the object to the cursor position and returns the offset
/// in there
wxLayoutObjectList::iterator FindObjectCursor(wxPoint *cpos, CoordType *offset = (CoordType *) NULL);
};
class wxLayoutPrintout: public wxPrintout
{
public:
wxLayoutPrintout(wxLayoutList &llist, wxString const & title = "My printout"):wxPrintout(title)
{ m_llist = &llist; m_maxPage = 0; }
bool OnPrintPage(int page);
bool HasPage(int page);
bool OnBeginDocument(int startPage, int endPage);
void GetPageInfo(int *minPage, int *maxPage, int *selPageFrom, int
*selPageTo);
private:
wxLayoutList *m_llist;
int m_maxPage;
};
#endif // WXLLIST_H

186
user/wxLayout/wxlparser.cpp Normal file
View File

@@ -0,0 +1,186 @@
/*-*- c++ -*-********************************************************
* wxlparser.h : parsers, import/export for wxLayoutList *
* *
* (C) 1998 by Karsten Ball<6C>der (Ballueder@usa.net) *
* *
* $Id$
*******************************************************************/
#ifdef __GNUG__
# pragma implementation "wxlparser.h"
#endif
#include "wxllist.h"
#include "wxlparser.h"
#define BASE_SIZE 12
void wxLayoutImportText(wxLayoutList &list, String const &str)
{
char * cptr = (char *)str.c_str(); // string gets changed only temporarily
const char * begin = cptr;
char backup;
for(;;)
{
begin = cptr++;
while(*cptr && *cptr != '\n')
cptr++;
backup = *cptr;
*cptr = '\0';
list.Insert(begin);
*cptr = backup;
if(backup == '\n')
list.LineBreak();
else if(backup == '\0') // reached end of string
break;
cptr++;
}
}
static
String wxLayoutExportCmdAsHTML(wxLayoutObjectCmd const & cmd,
wxLayoutStyleInfo **lastStylePtr)
{
static char buffer[20];
String html;
wxLayoutStyleInfo *si = cmd.GetStyle();
wxLayoutStyleInfo *last_si = NULL;
int size, sizecount;
if(lastStylePtr != NULL)
last_si = *lastStylePtr;
html += "<font ";
html +="color=";
sprintf(buffer,"\"#%02X%02X%02X\"", si->fg_red,si->fg_green,si->fg_blue);
html += buffer;
html += " bgcolor=";
sprintf(buffer,"\"#%02X%02X%02X\"", si->bg_red,si->bg_green,si->bg_blue);
html += buffer;
switch(si->family)
{
case wxSWISS:
case wxMODERN:
html += " face=\"Arial,Helvetica\""; break;
case wxROMAN:
html += " face=\"Times New Roman, Times\""; break;
case wxTELETYPE:
html += " face=\"Courier New, Courier\""; break;
default:
;
}
size = BASE_SIZE; sizecount = 0;
while(size < si->size && sizecount < 5)
{
sizecount ++;
size = (size*12)/10;
}
while(size > si->size && sizecount > -5)
{
sizecount --;
size = (size*10)/12;
}
html += "size=";
sprintf(buffer,"%+1d", sizecount);
html += buffer;
html +=">";
if(last_si != NULL)
html ="</font>"+html; // terminate any previous font command
if((si->weight == wxBOLD) && ( (!last_si) || (last_si->weight != wxBOLD)))
html += "<b>";
else
if(si->weight != wxBOLD && ( last_si && (last_si->weight == wxBOLD)))
html += "</b>";
if(si->style == wxSLANT)
si->style = wxITALIC; // the same for html
if((si->style == wxITALIC) && ( (!last_si) || (last_si->style != wxITALIC)))
html += "<i>";
else
if(si->style != wxITALIC && ( last_si && (last_si->style == wxITALIC)))
html += "</i>";
if(si->underline && ( (!last_si) || ! last_si->underline))
html += "<u>";
else if(si->underline == false && ( last_si && last_si->underline))
html += "</u>";
if(last_si)
delete last_si;
*lastStylePtr = si;
return html;
}
#define WXLO_IS_TEXT(type) \
( (type == WXLO_TYPE_TEXT || type == WXLO_TYPE_LINEBREAK) \
|| (type == WXLO_TYPE_CMD \
&& mode == WXLO_EXPORT_AS_HTML))
wxLayoutExportObject *wxLayoutExport(wxLayoutList &list,
wxLayoutList::iterator &from,
wxLayoutExportMode mode)
{
if(from == list.end())
return NULL;
wxLayoutObjectType type = (*from)->GetType();
wxLayoutExportObject * export = new wxLayoutExportObject();
static wxLayoutStyleInfo *s_si = NULL;
if( mode == WXLO_EXPORT_AS_OBJECTS || ! WXLO_IS_TEXT(type)) // simple case
{
export->type = WXLO_EXPORT_OBJECT;
export->content.object = *from;
from++;
return export;
}
String *str = new String();
// text must be concatenated
while(from != list.end() && WXLO_IS_TEXT(type))
{
switch(type)
{
case WXLO_TYPE_TEXT:
*str += ((wxLayoutObjectText *)*from)->GetText();
break;
case WXLO_TYPE_LINEBREAK:
if(mode == WXLO_EXPORT_AS_HTML)
*str += "<br>";
*str += '\n';
break;
case WXLO_TYPE_CMD:
//wxASSERT(mode == WXLO_EXPORT_AS_HTML,"reached cmd object in text mode")
assert(mode == WXLO_EXPORT_AS_HTML);
*str += wxLayoutExportCmdAsHTML(*(wxLayoutObjectCmd const
*)*from, &s_si);
break;
default: // ignore icons
;
}
from++;
if(from != list.end())
type = (*from)->GetType();
}
export->type = (mode == WXLO_EXPORT_AS_HTML) ? WXLO_EXPORT_HTML : WXLO_EXPORT_TEXT;
export->content.text = str;
return export;
}

57
user/wxLayout/wxlparser.h Normal file
View File

@@ -0,0 +1,57 @@
/*-*- c++ -*-********************************************************
* wxlparser.h : parsers, import/export for wxLayoutList *
* *
* (C) 1998 by Karsten Ball<6C>der (Ballueder@usa.net) *
* *
* $Id$
*******************************************************************/
#ifndef WXLPARSER_H
# define WXLPARSER_H
#ifdef __GNUG__
# pragma interface "wxlparser.h"
#endif
#ifndef NULL
# define NULL 0
#endif
enum wxLayoutExportType
{
WXLO_EXPORT_TEXT,
WXLO_EXPORT_HTML,
WXLO_EXPORT_OBJECT
};
enum wxLayoutExportMode
{
WXLO_EXPORT_AS_TEXT,
WXLO_EXPORT_AS_TEXT_AND_COMMANDS,
WXLO_EXPORT_AS_HTML,
WXLO_EXPORT_AS_OBJECTS
};
struct wxLayoutExportObject
{
wxLayoutExportType type;
union
{
String *text;
wxLayoutObjectBase *object;
}content;
~wxLayoutExportObject()
{
if(type == WXLO_EXPORT_TEXT || type == WXLO_EXPORT_HTML)
delete content.text;
}
};
/// import text into a wxLayoutList (including linefeeds):
void wxLayoutImportText(wxLayoutList &list, String const &str);
wxLayoutExportObject *wxLayoutExport(wxLayoutList &list,
wxLayoutList::iterator &from,
wxLayoutExportMode WXLO_EXPORT_AS_TEXT);
#endif //WXLPARSER_H

194
user/wxLayout/wxlwindow.cpp Normal file
View File

@@ -0,0 +1,194 @@
/*-*- c++ -*-********************************************************
* wxLwindow.h : a scrolled Window for displaying/entering rich text*
* *
* (C) 1998 by Karsten Ball<6C>der (Ballueder@usa.net) *
* *
* $Id$
*******************************************************************/
#ifdef __GNUG__
# pragma implementation "wxlwindow.h"
#endif
#include "wxlwindow.h"
#define VAR(x) cout << #x"=" << x << endl;
BEGIN_EVENT_TABLE(wxLayoutWindow,wxScrolledWindow)
EVT_PAINT (wxLayoutWindow::OnPaint)
EVT_CHAR (wxLayoutWindow::OnChar)
EVT_LEFT_DOWN(wxLayoutWindow::OnMouse)
END_EVENT_TABLE()
wxLayoutWindow::wxLayoutWindow(wxWindow *parent)
: wxScrolledWindow(parent, -1, wxDefaultPosition, wxDefaultSize,
wxHSCROLL | wxVSCROLL | wxBORDER)
{
m_ScrollbarsSet = false;
m_EventId = -1;
}
#ifdef __WXMSW__
long
wxLayoutWindow::MSWGetDlgCode()
{
// if we don't return this, we won't get OnChar() events
return DLGC_WANTCHARS | DLGC_WANTARROWS | DLGC_WANTMESSAGE;
}
#endif //MSW
void
wxLayoutWindow::OnMouse(wxMouseEvent& event)
{
SetFocus();
if(m_EventId == -1) // nothing to do
return;
m_FindPos.x = event.GetX();
m_FindPos.y = event.GetY();
m_FoundObject = (wxLayoutObjectBase *) NULL;
#ifdef WXLAYOUT_DEBUG
//doesn't work, undefined functions
//wxLogTrace("OnMouse: (%d, %d)", m_FindPos.x, m_FindPos.y);
#endif
Refresh();
if(m_FoundObject)
{
if(m_EventId != -1)
{
wxCommandEvent commandEvent(wxEVENT_TYPE_MENU_COMMAND, m_EventId);
commandEvent.SetEventObject( this );
commandEvent.SetClientData((char *)m_FoundObject);
m_ClickPosition = wxPoint(event.GetX(), event.GetY());
GetEventHandler()->ProcessEvent(commandEvent);
}
}
}
/*
* some simple keyboard handling
*/
void
wxLayoutWindow::OnChar(wxKeyEvent& event)
{
if(! m_llist.IsEditable()) // do nothing
{
event.Skip();
return;
}
long keyCode = event.KeyCode();
wxPoint p;
CoordType help;
switch(event.KeyCode())
{
case WXK_RIGHT:
m_llist.MoveCursor(1);
break;
case WXK_LEFT:
m_llist.MoveCursor(-1);
break;
case WXK_UP:
m_llist.MoveCursor(0,-1);
break;
case WXK_DOWN:
m_llist.MoveCursor(0,1);
break;
case WXK_PRIOR:
m_llist.MoveCursor(0,-20);
break;
case WXK_NEXT:
m_llist.MoveCursor(0,20);
break;
case WXK_HOME:
p = m_llist.GetCursor();
p.x = 0;
m_llist.SetCursor(p);
break;
case WXK_END:
p = m_llist.GetCursor();
p.x = m_llist.GetLineLength(m_llist.FindCurrentObject((CoordType *) NULL));
m_llist.SetCursor(p);
break;
case WXK_DELETE :
if(event.ControlDown()) // delete to end of line
{
help = m_llist.GetLineLength(
m_llist.FindCurrentObject((CoordType *) NULL))
- m_llist.GetCursor().x;
m_llist.Delete(help ? help : 1);
}
else
m_llist.Delete(1);
break;
case WXK_BACK: // backspace
if(m_llist.MoveCursor(-1))
m_llist.Delete(1);
break;
case WXK_RETURN:
m_llist.LineBreak();
break;
#ifdef WXLAYOUT_DEBUG
case WXK_F1:
m_llist.Debug();
break;
#endif
default:
if(keyCode < 256 && keyCode >= 32)
{
String tmp;
tmp += keyCode;
m_llist.Insert(tmp);
}
break;
}
Refresh();
UpdateScrollbars();
}
void
wxLayoutWindow::OnPaint( wxPaintEvent &WXUNUSED(event)w) // or: OnDraw(wxDC& dc)
{
wxPaintDC dc( this ); // only when used as OnPaint for OnDraw we
PrepareDC( dc ); // can skip the first two lines
if(m_EventId != -1) // look for keyclicks
m_FoundObject = m_llist.Draw(dc,true,m_FindPos);
else
m_llist.Draw(dc);
if(! m_ScrollbarsSet)
{
m_ScrollbarsSet = true; // avoid recursion
UpdateScrollbars();
}
}
void
wxLayoutWindow::UpdateScrollbars(void)
{
CoordType
max_x, max_y, lineHeight;
m_llist.GetSize(&max_x, &max_y, &lineHeight);
SetScrollbars(10, lineHeight, max_x/10+1, max_y/lineHeight+1);
EnableScrolling(true,true);
}
void
wxLayoutWindow::Print(void)
{
VAR(wxThePrintSetupData);
wxPostScriptDC dc("layout.ps",true,this);
if (dc.Ok() && dc.StartDoc((char *)_("Printing message...")))
{
//dc.SetUserScale(1.0, 1.0);
m_llist.Draw(dc);
dc.EndDoc();
}
}

70
user/wxLayout/wxlwindow.h Normal file
View File

@@ -0,0 +1,70 @@
/*-*- c++ -*-********************************************************
* wxLwindow.h : a scrolled Window for displaying/entering rich text*
* *
* (C) 1998 by Karsten Ball<6C>der (Ballueder@usa.net) *
* *
* $Id$
*******************************************************************/
#ifndef WXLWINDOW_H
#define WXLWINDOW_H
#ifdef __GNUG__
# pragma interface "wxlwindow.h"
#endif
#ifndef USE_PCH
# include <wx/wx.h>
#endif
#include "wxllist.h"
class wxLayoutWindow : public wxScrolledWindow
{
public:
wxLayoutWindow(wxWindow *parent);
wxLayoutList & GetLayoutList(void) { return m_llist; }
// clears the window and sets default parameters:
void Clear(int family = wxROMAN, int size=12, int style=wxNORMAL, int weight=wxNORMAL,
int underline=0, char const *fg="black", char const
*bg="white")
{
GetLayoutList().Clear(family,size,style,weight,underline,fg,bg);
SetBackgroundColour( *GetLayoutList().GetDefaults()->GetBGColour());
}
// callbacks
// NB: these functions are used as event handlers and must not be virtual
//void OnDraw(wxDC &dc);
void OnPaint(wxPaintEvent &WXUNUSED(event));
void OnMouse(wxMouseEvent& event);
void OnChar(wxKeyEvent& event);
#ifdef __WXMSW__
virtual long MSWGetDlgCode();
#endif //MSW
void UpdateScrollbars(void);
void Print(void);
void SetEventId(int id) { m_EventId = id; }
// what for? Caller doesn't even know object's positions in window
//wxPoint const &GetClickPosition(void) const { return m_ClickPosition; }
virtual ~wxLayoutWindow() {}
private:
/// for sending events
wxWindow *m_Parent;
int m_EventId;
/// the layout list to be displayed
wxLayoutList m_llist;
/// have we already set the scrollbars?
bool m_ScrollbarsSet;
/// if we want to find an object:
wxPoint m_FindPos;
wxLayoutObjectBase *m_FoundObject;
wxPoint m_ClickPosition;
DECLARE_EVENT_TABLE()
};
#endif