Compare commits

..

916 Commits

Author SHA1 Message Date
Bryan Petty
0ff060feed This commit was manufactured by cvs2svn to create tag 'wxPy_2_4_0'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/tags/wxPy_2_4_0@18275 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 21:11:04 +00:00
Robin Dunn
3376ead7b5 Setup the environment for testing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18274 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 21:11:04 +00:00
Robin Dunn
736333bf45 Cleanup
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18273 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 21:03:53 +00:00
Robin Dunn
a5c0a4ca9c Added Robb's email address
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18272 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 21:03:39 +00:00
Robin Dunn
8a243ef08e Script to build wxPythonDocs tarball
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18271 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 21:02:00 +00:00
Robin Dunn
7ae404f97a removed makedocs.bat, will do in bash instead
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18270 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 20:56:41 +00:00
Mattia Barbon
667e69a3c6 Last samples/Unicode fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18269 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 20:25:28 +00:00
David Webster
bbeb9cc4e8 final pre-release OS/2 updates.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18268 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 19:32:13 +00:00
David Webster
63c1d521d4 final pre-release OS/2 updates.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 18:34:27 +00:00
Robin Dunn
63e0edead7 Updated PyCrust
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18266 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 18:19:42 +00:00
David Webster
3cc4d9a7c3 ctl3d32.lib no longer relevant
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18265 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 16:58:43 +00:00
Stefan Csomor
7ade29f1f8 makefile for mac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18264 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 14:32:49 +00:00
Chris Elliott
721e57e874 fix bug with FINAL in borland makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 12:54:45 +00:00
Julian Smart
a4b19428bb Fixed missing checkbox alignment
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 12:34:06 +00:00
Julian Smart
11b2a58e92 Updated change log
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18261 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 11:11:01 +00:00
Julian Smart
b99b7c9272 Applied patch [ 651713 ] changes to convertrc
David J. Cooke (davidjcooke)

amendments to convertrc: add support for
CONTROL... syntax for static, edit, combobox,
buttons, but NOT scrollbar; add support for
embedded quotes in stringtable; other minor changes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18260 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 11:03:05 +00:00
Julian Smart
56ad7f8d5f Applied [ 652962 ] wxProgressDialog::Show(FALSE) bug
This fixes the problem where the application windows
were not being enabled prior to the progress dialog
being hidden in the situation where wxPD_AUTO_HIDE
was not used or was used but the end count was never
reached. This causes random applications to be
activated and brought to the front on Windows.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18259 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 10:57:48 +00:00
Julian Smart
821a27d77d Applied part of patch [ 652965 ] Enables toolbar simple in wxUniv
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18258 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 10:50:49 +00:00
Julian Smart
0d75432b09 Applied patch [ 652894 ] Checklistbox doesn't need owner draw
Updated wxUniv readme about setup[0].h


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18257 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 10:45:09 +00:00
Julian Smart
693d703b42 Copy wxUniv setup0.h to setup.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18256 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 10:36:17 +00:00
Julian Smart
c625623299 Removed redundant setup.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 10:26:25 +00:00
Julian Smart
e815a4feaf Backported wxHTML fixes
Applied patch [ 654023 ] Enables HtmlHelp (native)

Also fixed the bad event table in helpfrm.cpp.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 10:23:20 +00:00
Julian Smart
4febf1174f Applied [ 654253 ] wxGTK: fix to wxGetMousePosition()
wxGetMousePosition() returns -999, -999 when the mouse
pointer is not over a GTK window. This is apparently
because it uses the current window as a handle to get
to the X display. This is not necessary, however;
GDK_DISPLAY() can be used. With
this patch wxGetMousePosition() works regardless of
where on the screen the mouse is.

Jay Berkenbilt (jay_berkenbilt) modified by JACS


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 09:44:35 +00:00
Václav Slavík
9704351e8e backported wxFileSystem fixes to 2.4 branch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18249 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 00:20:33 +00:00
Václav Slavík
44aca7b8ad backported wxFileSystem changes to 2.4
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18248 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-16 00:10:27 +00:00
Mattia Barbon
e2bc35e0b3 Fixed all remaining samples/Unicode compilation errors.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-15 17:25:36 +00:00
Mattia Barbon
424fc76cad More samples/Unicode fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18239 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-15 10:23:11 +00:00
Václav Slavík
cfeff0e610 backported Czech translation to 2.4
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18238 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-15 00:33:29 +00:00
Gilles Depeyrot
c5c470e6ec fix FindMenu broken by implementation of double ampersands in menu and menu
item titles (finding "&File" was no longer working)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18237 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-14 21:44:48 +00:00
Václav Slavík
4780bb00a5 fixed typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-14 21:16:27 +00:00
Mattia Barbon
540afe043f More samples/Unicode fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-14 18:20:07 +00:00
Mattia Barbon
bb240b5157 Fixed compilation of some more samples in Unicode mode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-14 14:23:10 +00:00
Mattia Barbon
74fbdb9e3b Fixed missing reference to wxTreeCtrlnameStr when linking treectrl sample
by adding #include "wx/treectrl.h" to data.cpp.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-14 14:16:14 +00:00
Julian Smart
3fe5213e43 Added missing SetOrientation accessor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-14 09:29:02 +00:00
Robin Dunn
0b07750580 Fixed the spelling of Robb's name [me bad!]
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-14 00:50:19 +00:00
Robin Dunn
1c3c514dfa Added wxPython.lib.multisash by Gerrit van Dyk which is a nice
implementation of allowing the user to split a window any number of
times either horizontally or vertically, and to close the split off
windows when desired.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18223 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-14 00:42:48 +00:00
Robin Dunn
2466a3a892 Added wxPython.lib.gridmovers by Gerrit van Dyk which facilitates the
dragging of columns and/or rows in a wxGrid.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18217 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-13 23:35:43 +00:00
Robin Dunn
26e3a24354 Added wxPython.lib.popupctl by Gerrit van Dyk which is a combobox-like
gizmo for poping up arbitrary controls.  It is currently using
wxDialog because of some issues with wxPopupWindow...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18216 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-13 22:57:55 +00:00
Robin Dunn
2a29de09fc Added comment about derivation problem.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18215 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-13 22:04:22 +00:00
Robin Dunn
13b14ee5ad Added wxPython.lib.evtmgr by Rob Schecter, which is an easier, more
"Pythonic" and more OO method of registering handlers for wxWindows
events using the Publish/Subscribe pattern.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18214 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-13 22:01:38 +00:00
Mattia Barbon
522b6f2994 Make some of the samples compile in Unicode mode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18213 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-13 21:38:55 +00:00
Mattia Barbon
02525259a1 Unicode compilation fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-13 21:36:19 +00:00
Mattia Barbon
642246664c Add WXDLLEXPORT to friend declaration for GCC 3.2.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18211 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-13 21:35:15 +00:00
Mattia Barbon
2cdf28e928 Updated .po files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18208 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-13 21:19:17 +00:00
Julian Smart
918392e70f Committing old changes (sorry, can't remember what)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18205 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-12 22:02:36 +00:00
Stefan Csomor
7079cf814e turned combobox off for wxMac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18204 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-12 16:09:55 +00:00
Chris Elliott
30becbd63d fix for cygwin WXDLLEXPORT bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18202 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-12 11:57:31 +00:00
Robin Dunn
823ef93f89 Fixes for the helpviewer and regenerated batch files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18201 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-12 07:04:43 +00:00
Robin Dunn
b32d67f03d Added HelpViewer tool
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18200 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-12 06:40:20 +00:00
Robin Dunn
57327441a0 Renamed some helpers to avoid "GNU C++ internal naming strategy" warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18199 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-12 06:29:23 +00:00
Robin Dunn
245f9233fc Throbber fixes, other tweaks to the demo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18198 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-12 06:14:56 +00:00
Robin Dunn
a8e8c0adf2 Win32 installer first prompts to uninstall old version
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18197 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-12 04:59:17 +00:00
Robin Dunn
3e87f7c085 SWIGged updates for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18196 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-12 03:56:58 +00:00
Julian Smart
f8a1c24cca Applied patch [ 651287 ] adds missing wxTreeCtrl::GetEditControl
Peter Stieber


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18195 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-11 17:51:07 +00:00
Vadim Zeitlin
9c2a975b3c changed the version to 2.4.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18194 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-11 15:16:06 +00:00
Robin Dunn
6c85e4ea6c SWIGged updates for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18191 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 22:45:08 +00:00
Robin Dunn
ef84703240 Added a version save isinsnace function
Added wxPoint2DDouble


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18190 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 22:37:10 +00:00
Robin Dunn
9b126063b3 Changed version number, added some experimental stuff (which isn't
currently active) for canvas, wxArt2D, etc.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18189 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 22:08:05 +00:00
Robin Dunn
92bcb27d52 Cleanup
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18188 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 22:06:54 +00:00
Robin Dunn
19d9393211 img2py can now output a "catalog" of the images in the .py file, also
added header comments to the files.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18187 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 22:06:33 +00:00
Robin Dunn
02160d547f Demo enhancement from Will Sadkin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18186 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 22:04:51 +00:00
Robin Dunn
523c689abb Added Throbber class from Cliff Wells
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18185 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 22:03:35 +00:00
Robin Dunn
516a7db375 Make the RPM builder and .spec a little simpler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18184 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 22:01:24 +00:00
Julian Smart
1f6665c4a7 FromString should not fail on wxMac if facename empty.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18177 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 16:10:02 +00:00
Chris Elliott
d0041c5d85 fix bug with WXDLLEXPORT
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18173 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-10 09:35:41 +00:00
Julian Smart
ac0ab0af7c Backported some helpview fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18168 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 18:37:20 +00:00
Vadim Zeitlin
9c3ae8f70d backported nicer icon (without extra pixels which become garbage when scaled down to 16*16) from the trunk
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18164 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 16:45:37 +00:00
Chris Elliott
611024d19f fix bug with treectrl sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18157 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 15:13:53 +00:00
Julian Smart
c338913066 Added horse3.ani
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18156 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 15:10:14 +00:00
Julian Smart
d985da38ab Removed redundant m_server init
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18155 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 14:45:36 +00:00
Julian Smart
5fc426be1c Reverted the _n__ fix for now.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18153 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 14:35:09 +00:00
Julian Smart
28e1cf0c92 The wxMAKE_UNIQUE_ASSERT_NAME fix for VC++ does not work for MetroWerks CW.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18152 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 14:20:06 +00:00
Roman Rolinsky
9edfe06a3c source moved to tree.py
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18151 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 11:27:18 +00:00
Julian Smart
d1207a5142 Applied patch [ 632115 ] Fixed internationalization on tooltips
wxMac's wxTooltip assumed that text was always PC encoded,
and always converted the string using
wxMacMakeMacStringFromPC(). This worked fine for English
characters, but multi-byte encoded languages such as Japanese
(SJIS) because garbled. I've added a check for
"wxApp::s_macDefaultEncodingIsPC" before performing the
conversion similar to other controls.

Nilesh Agarwalla


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18150 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 11:22:43 +00:00
Roman Rolinsky
e2c61e5080 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18149 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 11:20:48 +00:00
Julian Smart
5a8bec2332 Applied patch [ 649284 ] Fix wxODBC to work with MySQL 2.x
The current sample/db fails to build indexes with
MyODBC v2.50.39

This is due to two problems:

(1) wxDb::ModifyColumn() created a SQL statement that
was not correctly formed for MySQL. This problem
caused wxDbTable::CreateIndex() to fail to set the
columns that are going to indexes to be NOT NULL. I
fixed this by added a special case for MySQL.

(2) When creating an Index on a VARCHAR column,
MySQL requires a key length to be specified.
wxDbTable::CreateIndex() current does not do this. I
fixed this problem by adding code to do this.

The attached patch file patches dbtable.cpp and db.cpp
on the 2.5 branch.

gor Mikolic-Torreira


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18145 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 10:50:14 +00:00
Julian Smart
e95a9bf0fd Applied patch [ 649590 ] fixes bug 611264: wxFileDialog entry
In bug 611264 I reported that typing a filename into a
multiple selection file dialog failed. The file
returned was "..".

I discovered that this was because the previous
directory folder came up automatically selected when
the dialog was created. Then, I discovered a related
bug. If any file or folder was selected, then that was
the file which was returned regardless of what was
typed in.

To fix the problem I added an EVT_TEXT handler which
deselects everything that is selected when the user
types. The handler does not deselect anything unless
the user actually types something.

This patch implements the fix.

John Skiff


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18144 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 10:44:13 +00:00
Julian Smart
c7c772d6f2 Applied patch [ 650078 ] Add better checking to wxComboBox
This patch adds extra checks, checks to see and report
if the provided item index is valid.

An other thing:
- IMHO wxComboBox::GetSelection() was wrong, I
corrected this (now it behaves the same as wxMSW,
don't know about wxGTK and others...).

Hans Van Leemputten (hansvl)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18142 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 10:26:21 +00:00
Julian Smart
a7cc2111b8 Applied patch [ 648042 ] Erase background error
When erasing the background with a transparent
background the logical origin of the provided DC is (re)
set, but not restored to the old value. Restoring the old
value is needed because the DC is/can be shared with
the real draw code...

This patch solves problems like mentioned in bug report
#635217 and problems like controls (like radio controls
etc) that disappear when moving the mouse over them or
clicking on them...

Hans Van Leemputten


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18141 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 10:20:44 +00:00
Julian Smart
f540de4447 Applied patch [ 642172 ] Fix menu accelerators in ownerdrw
Fixed bug when updating menu text to inform the
ownerdrw code of the new menu accelerator attached to
the menu item.
Improved the layout of the owenerdrw menu ownerdrw to
correctly account for menu accelerators, submenu
arrows etc.

Scott Pleiter

(Note from JACS: I've also changed the sample to show the Quit item
correctly aligned; it needs to have the font set before wxWin knows
it's an ownerdrawn item.)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18140 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 10:15:00 +00:00
Roman Rolinsky
bca584ff5e *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18139 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:49:05 +00:00
Roman Rolinsky
343ecf673b changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18138 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:48:01 +00:00
Roman Rolinsky
4acfbf894d Changes from global variables to 'g' object defined in globals.py
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18137 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:46:58 +00:00
Julian Smart
ee950b94e2 Applied patch [ 642162 ] restore wxWizard wxEVT_WIZARD_FINISHED
Restore the wxWizard wxEVT_WIZARD_FINISHED
event, which was sent when the FINISHED button was
pressed and the wizard was finished. When the
wxWizard is modal this event is not needed. However,
when the wizard is non-modal this is the only way to
determine that the wizard has finished.

Scott Pleiter


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18136 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:46:16 +00:00
Roman Rolinsky
e5c923ce11 Undo/Redo support classes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18135 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:45:57 +00:00
Roman Rolinsky
d1c6feb36f Undo/Redo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18134 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:45:12 +00:00
Roman Rolinsky
d596568d78 Separated XML_Tree to tree.py, Panel and friends to panel.py
added Undo/Redo commands

added 'container' submenu

other fixes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18133 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:44:30 +00:00
Roman Rolinsky
f22fe04411 SawFish customization for better focus handling
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18132 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:42:36 +00:00
Roman Rolinsky
4efd2698e9 Global variables collected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18131 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:41:42 +00:00
Roman Rolinsky
1fc853e5e7 Separated xrced.py in 3 files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18130 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:41:04 +00:00
Roman Rolinsky
d150c524ed Undo/Redo images
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18129 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:38:30 +00:00
Julian Smart
114bf539c7 Applied patch [ 642157 ] [MSW] HMENU resource leak from wxMenuBar
Latest CVS - When a wxMenuBar is detached
from a frame and deleted the HMENU resource leaks.
This patch fixes the leak.

Scott Pleiter


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18128 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:29:00 +00:00
Julian Smart
0f4008d545 Applied patch [ 638561 ] Allow SetFont(wxNullFont) in wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18125 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-09 09:14:39 +00:00
Julian Smart
8cec24b7b4 Applied patch [ 637982 ] wxComboBox needs margin
wxComboBox doesn't have a margin between the text and
the dropdown button when the default size is used.
Since wxTextctrl currently returns a rather long minmal
size, this error is only visible if a long text (around
20 chars) is used. This patch introduces a margin
(analog wxSpinctrl).

Otto Wyss


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18121 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-08 22:07:09 +00:00
Václav Slavík
ad9b9a0f7b Fixed EVT_TREE_SEL_CHANGED and _CHANGING under MSLU (patch 631815) (backported from the trunk)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18109 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-08 13:23:46 +00:00
Václav Slavík
c89124b7c0 XRC assigns ID to wxStaticBox created by including wxStaticBoxSizer (did what patch 632470 was supposed to do) (backported from the trunk)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18107 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-08 13:22:17 +00:00
Václav Slavík
348ffb021f Unicode compilation fixes for treectrl sample (backported to 2.4)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18105 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-08 13:21:49 +00:00
Stefan Neis
7d4d26e6f0 Added information on how to circumvent make's problems with auto-generated
.d files.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18095 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-07 15:21:40 +00:00
Julian Smart
0850f7534a Correction to path/URL code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18092 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-07 09:18:44 +00:00
Vadim Zeitlin
454bf1cbe0 added semicolons after HASH_MAP (backported from trunk)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18091 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-07 02:30:36 +00:00
Vadim Zeitlin
a80f274b76 removed trailing semicolons at the end of HASH_MAP macros (backported from trunk)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18089 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-07 01:33:37 +00:00
Vadim Zeitlin
4aabda8557 fixed 3 infinite loops (backported from the trunk)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18081 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-06 23:57:27 +00:00
Julian Smart
af2a45e596 Applied fix for VC++ 7 which treats __LINE__ slightly differently, apparently.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18073 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-06 22:49:58 +00:00
Vadim Zeitlin
9cb97b123e compilation fix for wxUSE_INTL == 0 (backported from trunk)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18072 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-06 21:26:06 +00:00
Julian Smart
51bc5688a0 Removed apparently erroneous manipulation of filename/URL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18066 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-06 20:12:48 +00:00
Stefan Neis
67c7e6f7b8 Changed GSocket_Select to use unix code for wxBase, previous code wasn't
detecting loss of connection.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18063 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-06 16:57:30 +00:00
Stefan Neis
49f54610cc Updated to more OS/2 friendly version.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18062 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-06 16:54:11 +00:00
Julian Smart
6f163e3d7b Added note about opening .dsp files in VC++ .NET
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18061 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-06 14:16:27 +00:00
Stefan Csomor
c8a85f4c87 print session additions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18056 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-05 15:13:12 +00:00
Julian Smart
cf8bac5170 Further version changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18055 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-05 12:14:53 +00:00
Julian Smart
ea2093eb26 Changed version to 2.4.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18053 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-05 11:55:25 +00:00
Julian Smart
2fcfadb4f5 Clean up CVS dirs and other rubbish
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18048 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-05 10:14:03 +00:00
Julian Smart
855a407f92 Test for stream validity in wxImage::GetImageCount()
Use horse3.ani in image sample.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18047 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-05 10:10:04 +00:00
Vadim Zeitlin
3801f213a8 allow TABbing into multiline text controls even if they're not editable (backported from the trunk)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18045 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-05 01:07:33 +00:00
Vadim Zeitlin
027f7d8921 compilation fix after recent patch (backported from trunk)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18043 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-04 23:18:16 +00:00
Vadim Zeitlin
03bef50de5 refresh the dir label when changing directory (bug 630091)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18038 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-04 12:17:24 +00:00
Vadim Zeitlin
0c9b6a3c59 fixed CVS repository path
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18037 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-04 12:15:06 +00:00
Gilles Depeyrot
1a0b595dcd - implemented handling of double ampersands '&' in wxGTK menu item texts in
order to allow embedding an ampersand character in the menu item text
- documented use of double ampersands for menu item texts


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18036 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-03 21:19:23 +00:00
Roger Gammans
a81052ed96 * Change wxDbLogExtendedErrorMsg() prototype to allow building
as a DLL on with mingw32


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18035 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-03 19:00:49 +00:00
Stefan Csomor
ed46dceab3 always reusing the session from printdata, that way print to pdf etc is preserved
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18034 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-03 14:54:41 +00:00
Stefan Csomor
fdb1afcd50 fixing internal m_isOk status
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18033 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-03 14:51:51 +00:00
Stefan Csomor
143de0ca83 adding the print session to the print data
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18032 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-03 14:39:32 +00:00
Julian Smart
27e208b84d Attempt to clarify the wxMac install doc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18031 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-03 14:25:22 +00:00
Julian Smart
21905d7265 Fixed a bug in virtual filesystem by converting to
native filename when necessary.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18030 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-03 13:55:44 +00:00
Julian Smart
26d08cc602 Added references to wxTreeItemId::IsOk
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18029 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-03 13:33:39 +00:00
Robin Dunn
c606ab69eb Compilation fix (gcc 3.2)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18028 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 22:44:23 +00:00
Vadim Zeitlin
d056288d67 Unicode compilation fixes for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18027 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 21:23:13 +00:00
Roman Rolinsky
8f92c81ebd basePath fix: must be directory name
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18026 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 20:06:21 +00:00
Vadim Zeitlin
8f6df1fa78 test that wxUSE_RESOURCES == 1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18025 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 19:53:20 +00:00
Vadim Zeitlin
4d384f006c use GetSize() instead of hardcoded 10248768 -- but then it doesn't really matter as the code still doesn't work
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18024 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 19:51:33 +00:00
Václav Slavík
7d0946bee1 fix object_ref lookup in case when object_ref node didn't specify class
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18023 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 18:15:12 +00:00
Vadim Zeitlin
4c0c84886b added Find(T *), replaced wxObject with T
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18022 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 17:15:36 +00:00
Vadim Zeitlin
6d76da42e1 tried to make docs about pseudo-templaet wxNode more clear
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18021 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 17:05:58 +00:00
David Webster
e29c3411d3 OS/2 bug fixed.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18020 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 14:11:38 +00:00
David Webster
9905679b18 no message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18019 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 14:08:35 +00:00
Julian Smart
5b6a40fb0e Moved wxUSE_CMDLINE_PARSER to more sensible place
Added it to wxMac's setup0.h
Removed semicolon from HASHMAP decl


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18018 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-02 11:42:23 +00:00
Vadim Zeitlin
3f3ccd46c6 fixed a typo I accidentally introduced in my last commit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18017 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-12-01 23:51:02 +00:00
Vadim Zeitlin
054cab527c typo in wxWCharBuffer definition fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18016 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 22:22:25 +00:00
Vadim Zeitlin
ebf126595a removed (ugly) workarounds unneeded any more because of 1.23.2.3 change in wx/buffer.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18015 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 22:19:24 +00:00
Vadim Zeitlin
748b03e9c0 1. reverted previous (1.23.2.1) change -- copy ctor and operator=() now
take const arguments again
2. added operator=(char *)
3. both wxCharBuffer and wxWCharBuffer are now created from the same macro


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18014 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 22:18:34 +00:00
Vadim Zeitlin
934a9da8db make install should now install *.cur/*.ico/*.bmp files under Win32
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18013 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 21:36:27 +00:00
Václav Slavík
bdac73ce95 install MGL header w/ wxMGL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18012 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 19:25:39 +00:00
Václav Slavík
ce25ec0551 fixed mgl.t to not include parser.o
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18011 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 19:22:48 +00:00
Václav Slavík
12c2f18f3b make it possible to use shared version of MGL with wxMGL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18010 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 19:15:08 +00:00
Václav Slavík
8444bc2a0f added wxMGL spec file
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18009 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 19:14:09 +00:00
Václav Slavík
a5716ecb20 added 'make dist' for wxMGL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18008 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 19:13:25 +00:00
Vadim Zeitlin
3605c20da2 wx/msw/gccpriv.h is used by wxBase too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18007 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 13:40:42 +00:00
Václav Slavík
6b0558e07d better translatable message
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18006 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 13:20:29 +00:00
Julian Smart
08ed73f47b Removed __SALFORDC__ lines which apparently mess up with __SALFORDC__
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18005 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 10:51:34 +00:00
Vadim Zeitlin
ea54a476a4 Dutch translations update from Dimitri
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18004 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-30 00:49:41 +00:00
Václav Slavík
5c3290a9de use traditional Chinese for zh_TW on Windows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18003 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-29 23:43:20 +00:00
Julian Smart
de9e98335d Must insert WM_QUIT back into the message queue if eaten
by wxYieldForCommandsOnly. Cures the taskbar sample GPF.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18002 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-29 17:40:38 +00:00
Chris Elliott
d10de62799 remove false assert
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18001 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-29 16:44:55 +00:00
Stefan Neis
bd747ce4af Moved OS/2 specific library check to a different location:
- after "Checks for programs", so newer autoconf version will be happy.
        - still before "Check for headers" as this is necessary!


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@18000 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-29 12:19:46 +00:00
Vadim Zeitlin
1ae0c8d334 use libjpeg and libz in tests for libtiff or they fail (patch 644149)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17999 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-28 21:52:14 +00:00
Vadim Zeitlin
82f9014293 fixed loss of client data in wxChoice::SetString()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17998 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-28 21:27:30 +00:00
Mattia Barbon
7a884e16cb Fix MinGW GCC 3.2/Unicode compilation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17997 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-28 18:18:10 +00:00
Mattia Barbon
f27187f468 Applied patch from Ian Brown. Fixes coredump under Solaris.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17996 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-28 18:13:00 +00:00
Vadim Zeitlin
fd5630b45c fixed wrong usage example in wxLogChain section
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17991 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-28 13:28:33 +00:00
Vadim Zeitlin
efb5bca6cc added files needed for building using configure (e.g. with cygwin) to wxBase distribution
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17990 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-28 13:12:00 +00:00
Julian Smart
b7f3131ac8 Copy helpview XPMs
char -> wxChar in glcanvas


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17989 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-28 11:27:33 +00:00
Julian Smart
ece34aec85 Rewrote script to allow selection of individual platforms
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17988 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-28 11:15:35 +00:00
Julian Smart
7daa1f1866 Added missing files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17987 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-28 11:14:15 +00:00
Chris Elliott
3548d6186b add WXLIBBASE variable to make.env
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17986 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 14:08:32 +00:00
Julian Smart
9264d711e6 Include version-script.in in distributions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17985 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 14:01:42 +00:00
Julian Smart
c1ecde9821 Corrected typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17984 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 11:38:08 +00:00
Julian Smart
ce78ea2a46 Fixed some dist things:
Added missing sample Makefile.in's
Added helpview, emulator
Maybe it's a better idea not to recursively
copy the dialoged tree, CVS directories and all!


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17983 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 10:25:57 +00:00
David Webster
88ecce35e8 Weekly updates.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17982 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 05:50:21 +00:00
Robin Dunn
ba75150d36 Typo fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17981 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 03:12:24 +00:00
Robin Dunn
6427c15c98 Demo tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17980 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 02:37:52 +00:00
Robin Dunn
c4f0ba3f89 SWIGged updates for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17979 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 02:29:28 +00:00
Robin Dunn
3e69c7670f Don't cache NULL attr objects
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17978 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 02:27:14 +00:00
Robin Dunn
d5c363173a Corrected a couple problems in wxStreamBuffer that show up when
reading from a wxMemoryStream


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17977 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-27 02:00:23 +00:00
Robin Dunn
fddf5d878a Changes so xrced always looks in the module's location for extra files.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17976 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-26 22:30:02 +00:00
Václav Slavík
dfd2ef2854 version-script.in was missing in make dist
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17975 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-26 22:17:49 +00:00
Chris Elliott
679215afbf fix bug with building contrib libraries for gcc 3.2 (2.95 stillOK)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17974 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-26 16:44:24 +00:00
Stefan Csomor
34b75f4706 added UPP for OTNotifier (needed for carbon)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17973 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-25 21:08:46 +00:00
Gilles Depeyrot
d0c22ffa5b added XML file typing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17972 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-25 20:58:28 +00:00
Ron Lee
0ce85b3d22 added -ffunction-sections for broken hppa linker.
bumped debian version for release.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17971 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-25 13:08:22 +00:00
Ron Lee
463318d6e8 update config.guess, adds support for mips (released on Debian)
and a couple of other new platforms.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17970 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-25 12:12:56 +00:00
Julian Smart
719d607331 Use rpmbuild, not rpm
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17969 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-25 09:52:36 +00:00
Julian Smart
5f053923e2 Corrected redirection typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17968 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-25 08:50:50 +00:00
Vadim Zeitlin
866a1da2da define (empty) ~wxDataObject everywhere: apparently it's needed for AIX and not only Darwin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17967 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-25 01:51:04 +00:00
Julian Smart
14ee3dc323 Corrected some .dsp,.dsw filenames
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17966 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-24 21:31:35 +00:00
Stefan Csomor
305f6124d4 m_meta was removed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17965 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-24 18:37:28 +00:00
Julian Smart
e425da62de Updated the OS2-specific configury
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17964 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-24 17:29:16 +00:00
Stefan Csomor
6c4a74f67e added code for always getting back the real font name even though only a family was given.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17963 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-24 17:05:52 +00:00
Stefan Csomor
4d9bcf27a8 switched drawing algorithm, since apparently DrawThemeTextBox has some problems not squeezing the text under certain OS versions. also added the OS Truncating algorithm which does add ellipsis (...) when the text does not fit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17962 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-24 17:03:35 +00:00
Stefan Neis
50c7b3cd58 Added work-arounds for current problems with OS/2's PM port.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17961 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-24 16:13:02 +00:00
Stefan Neis
21b132347d Compilation fix for EMX.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17960 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-24 16:09:42 +00:00
Julian Smart
17ffbcef2e Fixed some wxNotebook refresh problems on wxUniv/WIN32
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17959 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-24 11:52:33 +00:00
Julian Smart
f9829ca9f6 Updated date on readme
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17958 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-24 10:52:50 +00:00
Julian Smart
a6d9a74902 Corrected label typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17957 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-23 20:50:25 +00:00
Václav Slavík
20e2e78607 use wxConvLibc for argv[] again
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17956 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-23 20:47:21 +00:00
Julian Smart
00bb90a5ef Added a Refresh() to SetSelection() so programmatic tab changing works
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17955 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-23 20:12:45 +00:00
Stefan Neis
57350623b6 Added yet another include for EMX.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17954 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-23 18:36:54 +00:00
Vadim Zeitlin
2b46f72b18 updated french translation from Stephane Junique
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17953 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-23 15:43:49 +00:00
Stefan Csomor
1502cb12e1 changes for supporting more menu shortcuts
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17952 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-23 08:02:50 +00:00
Robin Dunn
c77f5e912d SWIGged updates for wxMac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17951 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-23 05:36:39 +00:00
Julian Smart
35c9aadc34 wxTabEvent and tab styles now in keeping with wxNotebook, for future
reference.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17950 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-23 00:00:21 +00:00
Julian Smart
dbad89ddf6 wxTabEvent should derive from wxNotifyEvent, not wxCommandEvent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17949 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 23:06:23 +00:00
Vadim Zeitlin
23c618498b don't return wxDefaultSize from GetBestSize() under any circumstances (reverted part of 1.123.2.2 change)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17948 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 22:51:57 +00:00
Robin Dunn
8a69a46a6c demo tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17947 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 22:32:36 +00:00
Robin Dunn
e3ecd8d90b Ran autoconf on the configure.in that was recently checked in
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17946 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 22:30:07 +00:00
Robin Dunn
05dce81b01 Added new wxTreeCtrl methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17945 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 22:27:46 +00:00
Robin Dunn
790072cb11 SWIGged updates foe wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17944 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 22:25:28 +00:00
Vadim Zeitlin
adf499e8bd fixed SetBestSize() by restoring its old behaviour (undid 1.94.2.1 change and added comments about why the actual code is right)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17943 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 21:37:10 +00:00
Robin Dunn
04328e6e30 Fixed a typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17942 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 21:33:21 +00:00
Robin Dunn
43989cd7fd Added some missing wxSTC_CMD_* #defines, also changed a bit how stc.h
is generated so all the wxSTC_CMD_*'s are grouped together.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17941 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 20:49:48 +00:00
Robin Dunn
5e119f2478 Whitespace-only changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17940 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 19:06:12 +00:00
Robin Dunn
8f968c7be2 SWIGged updates for wxMac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17938 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 18:52:13 +00:00
Robin Dunn
06c2fab604 Add libstdc++ for building on Jaguar
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17937 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 18:47:37 +00:00
Julian Smart
aa9bb779bb Added missing wxTreeCtrl accessors.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17936 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 16:49:51 +00:00
Vadim Zeitlin
a5801aa78e use #include "wx/sizer.h" instead of <wx/sizer.h>
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17935 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 12:18:25 +00:00
Vadim Zeitlin
97d5c8bff8 added missing combobox ctor param doc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17934 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 11:54:38 +00:00
Julian Smart
619659372c Fixed a Latex error but giving up with others
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17933 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 08:59:23 +00:00
Julian Smart
e22cbf697e A script to suppress some common Lacheck warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17932 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 08:49:58 +00:00
Gilles Depeyrot
bdc68939fb remove OnSize handler which is in fact not needed now that width caching is
based on caching the client width changes


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17931 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-22 07:13:39 +00:00
Robert Roebling
93f1e6d330 Reimplemented wxMatchWild() which should fix the
problems it had under Unicode and the fact that
   it behaved differently on different platforms.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17930 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-21 21:49:20 +00:00
Gilles Depeyrot
9814147718 recompute width cache if client width has changed to take into account the fact
that derived OnSize is run before cache has been cleared in own OnSize


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17929 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-21 21:30:28 +00:00
Vadim Zeitlin
af68a70285 described --enable-debug and not only debug_info/flag
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17928 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-21 17:19:38 +00:00
Julian Smart
437753d80c Border removed, other sillinesses fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17927 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-21 17:01:15 +00:00
Jouk Jansen
6fb932d8cc Committing in .
OpenVMS compile support update

 Modified Files:
  Tag: WX_2_4_BRANCH
 	wxWindows/src/html/descrip.mms
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17926 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-21 14:59:39 +00:00
Robert Roebling
d992c3caa5 This should add Unicode mode to the list of
compile modes after running configure.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17925 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-20 20:52:26 +00:00
Julian Smart
769caa0789 Fixed libsrc_dir variable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17924 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-20 19:44:16 +00:00
Robert Roebling
ae361aca86 GTK2 fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17923 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-20 17:45:14 +00:00
Julian Smart
d01e3d8d9e Fixed ALL CAPS text bug in wxX11
Removed compiler warning in text sample


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17922 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-20 15:14:02 +00:00
Julian Smart
49cbccdd3f Removed silly comment
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17921 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-20 08:29:46 +00:00
Robin Dunn
8ca8f1340c Fixed compilation error
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17920 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-20 01:12:36 +00:00
Václav Slavík
50297bd752 this is ugly as hell, but what
else can I do to make following cases different:
a) wxSetlocale returns
b) wxSetlocale returns NULL
?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17919 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 23:19:30 +00:00
Robert Roebling
9b9a7d8baa Tried another fix for my wxTextCtrl crash. Stefan's
attempt had no effect and I didn't see any side
    effects of my change either.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17918 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 22:41:07 +00:00
Robert Roebling
52b79074ce Actually destroy the toolbar tool controls when
destryoing the toolbar as we otherwise leave
    ghosts around.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17917 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 21:56:10 +00:00
Stefan Csomor
24affeb7e1 guarded frame setting when window is deleted
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17916 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 21:35:09 +00:00
Robin Dunn
dd8838213d little demo tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17915 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 18:55:39 +00:00
Robin Dunn
67167e345d Added space and tab to key names recognised for accelerators
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17914 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 18:54:46 +00:00
Julian Smart
26227372e3 option -> proportion
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17913 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 18:23:28 +00:00
Chris Elliott
045d7116f4 small clarification to doc for get next sibling
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17912 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 13:03:27 +00:00
Chris Elliott
be5827b6e7 small amendment to doc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17911 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 12:56:06 +00:00
Chris Elliott
7a3ea24b51 missing source file added to makefiles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17910 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 10:18:31 +00:00
Robin Dunn
b9f92f36bc SWIGged updates for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17909 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 09:22:56 +00:00
Robin Dunn
b181a4bfb1 SWIGged updates for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17908 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 02:47:43 +00:00
Robin Dunn
f455ea7dc9 Typo fixed and other tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17907 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 02:44:14 +00:00
Robin Dunn
5c704db5e1 More wxUSE_PROLOGIO==0 changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17906 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 02:43:41 +00:00
Robin Dunn
28f350310d Change wxPython's version numbers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17905 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 02:41:30 +00:00
Robin Dunn
3aeb16e92d Changes needed to allow wxPython's OGL to compile when wxUSE_PROLOGIO==0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17904 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 02:40:02 +00:00
Robin Dunn
9dd12fa0af Changes needed to allow OGL to compile when wxUSE_PROLOGIO==0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17903 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-19 02:13:32 +00:00
Václav Slavík
73a0aac054 Fixed subtle memory allocation bug. Mysterious crashes in glibc may go away now.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17902 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-18 23:12:11 +00:00
Václav Slavík
bae090fcff fixed thread-safe versions of wxMB2WC and wxWC2MB
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17901 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-18 23:05:15 +00:00
Václav Slavík
72856fe8cd fix xrcdemo makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17900 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-18 23:02:33 +00:00
Julian Smart
1b420e0e7c Check whether m_toolCapture is NULL before using it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17899 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-18 22:39:58 +00:00
Václav Slavík
afb297caee use gtk2 as toolkit name instead of gtk if built against GTK+ 2.0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17898 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-18 18:08:03 +00:00
Chris Elliott
2e64c8e7bc update sample to test for const char * cast to int in imagbmp.cpp bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17897 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-18 16:07:14 +00:00
Chris Elliott
3edae636f9 fix const char * cast to int in imagbmp.cpp bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17896 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-18 16:04:19 +00:00
Julian Smart
185bb8af9a Helpview mods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17895 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-18 14:46:49 +00:00
Julian Smart
39560cbe68 Added Eric Dowty's wxRemoteHtmlController class and test app,
with mods to helpview for full control


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17894 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-18 14:43:32 +00:00
Václav Slavík
01e3574ea2 ugly 'fix' for wxHtmlHelpFrame's misbehviour under wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17893 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 23:23:11 +00:00
Mattia Barbon
486ed00cfe Currently just setting wxUSE_PROLOGIO=0 in include/wx/msw/setup0.h
causes a link failure (when compiling a DLL) because the wxr parser
references compiled-out subroutines.
  This patch fixes that. It is "correct" based on the fact that Win32
compilers can cope with C++ comments in C sources, hence #including
setup.h works.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17892 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 20:22:03 +00:00
Julian Smart
151ed6057f No change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17891 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 19:20:08 +00:00
Stefan Csomor
f67135ca25 added missing include for Apple Dev Tools
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17890 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 19:01:41 +00:00
Julian Smart
5bac9640f9 No change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17889 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 18:00:13 +00:00
Vadim Zeitlin
3d8ac780e2 don't crash when auto sizing empty grid
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17888 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 14:30:24 +00:00
Vadim Zeitlin
51196589e2 added a detailed comment about wxUSE_GLCANVAS
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17887 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 13:22:29 +00:00
Vadim Zeitlin
0ed7a79cbc updated after removing PrologIO &c (patch 639519)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17886 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 13:15:11 +00:00
Vadim Zeitlin
4e790786bb reset m_textCtrl after finishing editing a label (part of patch 639394)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17885 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 13:08:24 +00:00
Vadim Zeitlin
5654877f78 fixed setting client data in Set() (closes patch 637749)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17884 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 13:00:48 +00:00
Mattia Barbon
a1e086943a Use descriptive name instead of a string constant.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17883 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 10:08:08 +00:00
Mattia Barbon
1169ba95f0 In some Cygwin versions (mine, for example...) wchar.h requires
sys/types.h.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17882 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 10:06:08 +00:00
Stefan Csomor
1354418055 menu handling added (gtk-way)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17881 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 00:11:13 +00:00
Stefan Csomor
414ea21e24 menu handling added
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17880 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-17 00:03:23 +00:00
Stefan Csomor
a5235cf098 copied DoGetBestSize from gtk
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17879 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-16 21:47:22 +00:00
Robin Dunn
16587f5357 SWIGged updates for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17878 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-16 01:54:11 +00:00
Robin Dunn
9a13e426cc Add missing libdir for libGLU.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17877 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-16 01:53:20 +00:00
Robin Dunn
f38c82258a Turn off the DISABLE_STYLE_IF_BROKEN_THEME flag to test using style
settings with pixmap themes again.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17876 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-16 01:31:44 +00:00
Julian Smart
530bdadcbe Typo corrected
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17875 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-15 19:06:51 +00:00
Julian Smart
1ec8142197 Some fixes by Paul A. Thiessen
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17874 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-14 20:54:22 +00:00
Julian Smart
24e0bc7209 Fixed broken .dsp files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17873 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-14 20:49:21 +00:00
Stefan Csomor
88b41be334 added missing generic files
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17872 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-14 20:19:30 +00:00
Robert Roebling
b595f70996 Typo in font dialog.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17871 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-14 17:45:40 +00:00
David Webster
a4b1f32cdf Add Generic MDI Frames as Native
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17870 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-14 16:08:44 +00:00
Gilles Depeyrot
30165730d8 corrected wxStatFs definition for HPUX
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17869 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-14 13:51:57 +00:00
Gilles Depeyrot
ff103774e6 use local variable since shl_findsym modifies the handle argument
to indicate where the symbol was found


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17868 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-14 13:48:32 +00:00
Julian Smart
f76db005a8 Archive top-level directories renamed, except for wxAll and docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17867 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-14 12:24:24 +00:00
Julian Smart
4d31c9cfff Corrected frame icon, added version and date
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17866 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-14 10:33:40 +00:00
Gilles Depeyrot
1dab51b3ac updated according to latest changes to file list
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17865 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 21:43:04 +00:00
Stefan Csomor
1cc446e91b added settcmn.cpp and removed first slash from prefix file in order to keep it upwards compatible with CW8
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17864 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 20:10:32 +00:00
Julian Smart
58e14084c2 Corrected ftp site typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17863 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 16:40:28 +00:00
Julian Smart
dcbcbc4065 Applied [ 625315 ] More const functions in geometry.h
Functions in geometry.h should be const if they don't
change member variables.

John Labenski


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17862 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 16:05:36 +00:00
Roman Rolinsky
cafe0fd75e Added fix for unicode build (no convertion needed)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17861 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 14:32:35 +00:00
Julian Smart
915438c6ea Fixed tilde problem by using \verb
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17860 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 13:36:28 +00:00
Ron Lee
53c2cc7d4b added missing include (Debian bug #168887)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17859 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 08:32:19 +00:00
Robin Dunn
3fdbab8395 SWIGged updates for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17858 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 05:09:16 +00:00
Robin Dunn
753c7aa54a New methods to match CVS changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17857 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 05:07:51 +00:00
Robin Dunn
fb873a1847 No real changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17856 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 05:05:34 +00:00
Robin Dunn
f6238d1f84 Demo tweaks
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17855 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 05:04:46 +00:00
Robin Dunn
26b756a164 Unicode fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17854 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 04:52:53 +00:00
Vadim Zeitlin
38ad0cc850 fixed VC++ warning (in release only)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17853 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 01:12:55 +00:00
Vadim Zeitlin
6eaddc4352 use native filedlg implementation for wxUniv for now
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17852 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 00:12:24 +00:00
Vadim Zeitlin
74d6a72f02 fixed link for wxUSE_WCHAR_T == 0
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17851 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-13 00:11:06 +00:00
Václav Slavík
21b2e8833c Unicode fix for wxEditableListBox
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17850 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-12 23:28:35 +00:00
Václav Slavík
2877ca7efe fixed bold font setting in wxGenericTreeCtrl to account for font face and encoding
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17849 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-12 23:27:54 +00:00
Václav Slavík
a228573797 wxGTK was confused about swiss, roman, serif and sans serif fonts, fixed now
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17848 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-12 23:26:13 +00:00
Robert Roebling
f31cebc32c Make sans serif default font for X11.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17847 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-12 19:04:20 +00:00
Robert Roebling
1fe3ac8f61 Add contrib dir to make win-dist (zip-archive).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17846 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-12 18:28:53 +00:00
Robert Roebling
20951f66bf Fixed sockets under X11.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17845 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-12 18:19:01 +00:00
Vadim Zeitlin
6011930cb0 renamed setup.h to setup0.h for consistency with the other ports
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17844 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 23:04:51 +00:00
Vadim Zeitlin
a68010a153 added a few missing functions (Abort, FileExits, GetFileSize)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17843 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 22:54:20 +00:00
Vadim Zeitlin
e3e500d8c2 VC++ compilation warnings fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17842 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 22:51:12 +00:00
Václav Slavík
959880045d fixed stupid code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17841 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 21:47:08 +00:00
Václav Slavík
704899c217 Unicode fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17840 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 21:46:16 +00:00
Vadim Zeitlin
0dcaf1ea0e removed inexisting default arg in Create() too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17839 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 21:11:32 +00:00
Vadim Zeitlin
bd126f0e8f use ISO8859-1 instead of UTF-8 in non Unicode build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17838 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 20:40:30 +00:00
Vadim Zeitlin
9e0bac7652 removed inexisting default arg in ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17837 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 20:32:21 +00:00
Gilles Depeyrot
0415aa8563 updated project files according to latest changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17836 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 19:41:01 +00:00
Robert Roebling
ed15d90624 Compile fix for Unicode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17835 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 19:07:23 +00:00
Julian Smart
b4b8452ecd Version changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17834 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 17:15:30 +00:00
Julian Smart
fd89740e89 Corrected typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17833 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 13:27:08 +00:00
Vadim Zeitlin
28c4610ed5 select the newly added page
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17832 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 13:16:15 +00:00
Julian Smart
2b331055b9 Fixed [ 625792 ] Installation not set WXWIN as documented
(changed docs)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17831 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 10:00:35 +00:00
Julian Smart
368e6e1002 Fixed bug [ 635990 ] wxFindWindowAtPointer - mousepos not set
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17830 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 09:55:19 +00:00
Julian Smart
9a7f62c35e Some wxX11 fixes for non-Unicode mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17829 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 09:48:37 +00:00
Julian Smart
45a52767bd Applied frame.cpp part of [ 606958 ] Mac Menubar proposal
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17828 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 09:07:58 +00:00
Julian Smart
888eaa3d8c Applied patch [ 631639 ] Print should be generic
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17827 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 08:57:55 +00:00
Julian Smart
e583ba068d Applied patch [ 633415 ] New setup.h for wxUniversal
A setup.h on the lines of the MSW setup.h, by Otto Wyss


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17826 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 08:49:00 +00:00
Julian Smart
c97945a001 Fixed PDF RTF problem; changed date
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17825 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 08:39:03 +00:00
Julian Smart
7b3e550c25 Applied patch [ 631715 ] Dragimage should be generic
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17824 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 08:35:48 +00:00
Ron Lee
63459a582a updates for scrolling/sizing methods.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17823 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 07:49:42 +00:00
Ron Lee
1917819470 Some code just *really* likes to be typo'd I guess.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17822 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 05:29:18 +00:00
Václav Slavík
4581a29d2d more wxHTML Unicode fixes (removed wxPrivate_ReadString), wxSearchEngine-->wxHtmlSearchEngine
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17821 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 00:15:57 +00:00
Václav Slavík
987b309827 fixed wxSYS_DEFAULT_GUI_FONT (I wonder how could it work for anybody before...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17820 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 00:03:19 +00:00
Václav Slavík
4a9150f9c8 honor facename and weitght with Pango
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17819 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 00:02:40 +00:00
Václav Slavík
9cb9c214f6 more wxHTML Unicode fixes (removed wxPrivate_ReadString), wxSearchEngine-->wxHtmlSearchEngine
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17818 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-11 00:01:23 +00:00
Václav Slavík
5a96f6be9c moved wxHtmlFilterHTML to public header, so that it can be used elsewhere
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17817 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 23:58:51 +00:00
Vadim Zeitlin
bc86e2c68f corrected the links
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17816 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 21:42:06 +00:00
Mattia Barbon
6df6345a73 MinGW has tchar.h, but it does not include wchar.h as wxchar.h expects,
hence we include it explicitly.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17815 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 21:07:42 +00:00
Mattia Barbon
eb8a028c10 Checks for wxUSE_WX_RESOURCES and wxUSE_PROLOGIO.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17814 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 20:57:46 +00:00
Mattia Barbon
3769cf4948 Don't add checkbox characters ("[ ] ") twice.
Remove now unused function.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17813 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 18:26:04 +00:00
Julian Smart
4aaf7903fb Updated version
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17812 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 15:55:19 +00:00
Julian Smart
7716ac56a5 Changed version numbers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17811 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 15:48:56 +00:00
Václav Slavík
cd83a3c3db _really_ fixed internat.cpp crash (?) instead of commenting the code out and hapilly forgetting about it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17810 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 15:01:56 +00:00
Julian Smart
5267017927 Brian Bommarito
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17809 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 14:49:47 +00:00
Julian Smart
7d9c68a4de Updated version number
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17808 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 14:47:29 +00:00
Robert Roebling
6b362ffce5 Typo.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17807 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 14:32:56 +00:00
Robert Roebling
1ecc9552dc Updated German translation.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17806 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 14:09:13 +00:00
Julian Smart
911bdf159b Updated version number
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17805 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 13:20:13 +00:00
Julian Smart
4f5ceafdcb MS HTML Help file now generated using wx.css, and
standard HTML help generated as before.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17804 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 11:09:49 +00:00
Julian Smart
cffd3ee7c4 Added new .ini file for use with styles for better CHM look
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17803 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 10:59:53 +00:00
Robert Roebling
e593d8f008 Documented the new ways to set the scrolling area
in a wxScrolledWindow.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17802 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 10:45:08 +00:00
Robert Roebling
f2e9222d6e Further corrections to GTK's scrolling widget.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17801 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 10:25:02 +00:00
Ron Lee
b7b023c234 SetScrollbars needs to actually SetVirtualSize too, now that setting
the hints doesn't automatically do it.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17800 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 09:37:23 +00:00
Robin Dunn
bb499f2fb6 SWIGged update for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17799 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 00:59:00 +00:00
Vadim Zeitlin
6d979490a5 if the page changed due to pressing Ctrl-TAB was vetoed, the current tab was still changed (although the current page stayed the same!)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17798 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 00:56:40 +00:00
Robin Dunn
ee29e26938 On wxGTK the Primary Selection is now set when something is selected
in wxSTC, and the middle mouse button will paste from the
PrimarySelection.  Regular Cut/Copy/Paste explicitly uses the normal
clipboard selection.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17797 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 00:53:30 +00:00
Vadim Zeitlin
58072c4313 setting one radio button to TRUE should reset all the others in the same group to FALSE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17795 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 00:47:11 +00:00
Václav Slavík
bff010281d Uncommented code that was commented out by mistake
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17794 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-10 00:05:39 +00:00
Václav Slavík
a574cf21c5 Unicode fixes to xrcdemo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17793 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 23:18:16 +00:00
Václav Slavík
1dc2721af8 removed wxXmlResource::GetFirstRoot for reasons explained at wx-dev
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17792 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 23:18:02 +00:00
Vadim Zeitlin
bf1e895f19 fixes for compilation with WXWIN_COMPATIBILITY_2_2 == 0 and gcc warning fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17791 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 23:13:08 +00:00
Robin Dunn
c7c0e05cf0 Also set listType for the notification
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17790 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 21:49:08 +00:00
Robert Roebling
a14f68f247 Made XPM writing code Unicode safe.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17788 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 21:43:23 +00:00
Robin Dunn
759c8b5299 The generic buttons can create their own disabled bitmap if needed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17787 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 21:37:31 +00:00
Mattia Barbon
b867e68cef Align wx version in configure with version in wx/version.h.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17786 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 21:01:09 +00:00
Robert Roebling
5ce5f94ea2 Compile fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17785 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 20:21:21 +00:00
Václav Slavík
e2c7efa04b added wxHtmlParser::StopParsing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17784 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 19:30:02 +00:00
Václav Slavík
fabe27dcb5 added wxHtmlParser::StopParsing and use it in ExtractCharsetInformation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17783 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 19:29:00 +00:00
Robert Roebling
a84d0043c6 Compile fix for GTK.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17782 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 19:27:01 +00:00
Robert Roebling
d76fec130d Added anti-aliasing and printing in Unicode to wxX11.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17781 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 17:35:40 +00:00
Robert Roebling
f17fb6a086 Fix client dc for rename of pango_x.cpp.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17780 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 15:49:46 +00:00
Robert Roebling
01598df990 Fourth try to add pang_x.cpp
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 15:48:44 +00:00
Robert Roebling
3049550ceb Added support for Unicode rendering through Pango to wxX11.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17778 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 15:20:42 +00:00
Robert Roebling
bbd230a11d Unicode compile fixes.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17777 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 13:51:26 +00:00
Ron Lee
9064852f8e Added a examples of virtual size use for setting scrollbars
both 'manually' and via sizer layout to scroll sample.
Tweaked it for various 2.4 idioms that have arisen since
it was written.

Replaced GenericScrolledWin's DoSetVirtualSize, it really is
needed for everything to work for both the user and lib.
Don't call it from default scrolledwindow OnSize handlers
unless AutoLayout is enabled though, and use the larger of
best and client size.  Hopefully this will fix any earlier
troubles this caused with M.

Purged (many) stray tabs &co from sizer.cpp

Changed DoGetBestSize to return wxDefaultSize when no useful
best size can be determined.  If GetBestSize is intended to
return the minimum undistorted size a window can take, we
must be able to discriminate between valid and 'best guess'
sizes, else the best guess windows can only grow.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17776 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 13:29:26 +00:00
Robert Roebling
8b1632ebe7 UNicode compile fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17775 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 10:53:27 +00:00
Václav Slavík
0cc3981cd9 Unicode fixes to wxHTML
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17774 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 01:04:10 +00:00
Václav Slavík
ca351a69c3 Unicode compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17773 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 01:03:03 +00:00
Václav Slavík
410cab65fd <meta> tag handler no longer used by wxHTML
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17772 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 00:51:19 +00:00
Václav Slavík
9b0668e1a2 convertion --> conversion
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17771 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 00:48:46 +00:00
Václav Slavík
7962c237dd Unicode fixes for OLE files (I don't know if I used correct conversion objects!)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17770 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 00:32:30 +00:00
Václav Slavík
f3654dd181 <meta> handler no longer used by wxHTML
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17769 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 00:31:28 +00:00
Václav Slavík
6fb39fe84b Unicode compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17768 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 00:26:54 +00:00
Václav Slavík
867be82e3a <meta> tag handler no longer needed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17767 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 00:23:46 +00:00
Václav Slavík
36435f9c0f compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17766 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 00:18:55 +00:00
Václav Slavík
2dfc97eea1 another approach to Unicodification of wxHTML handlers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17765 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-09 00:07:36 +00:00
Robin Dunn
85f726f26a Fixed name clash in wxIEHtmlWin, other minor tweaks.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17764 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-08 22:33:39 +00:00
Vadim Zeitlin
b8a141538a Hungarian translation update from Janos
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17763 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-08 16:51:30 +00:00
Vadim Zeitlin
5f88717aa8 fixed typo: _() was used instead of _T()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17762 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-08 11:12:26 +00:00
Václav Slavík
2301d67573 compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17761 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 23:26:17 +00:00
Václav Slavík
a9e11379a1 fix ANSI build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17760 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 23:26:05 +00:00
Václav Slavík
128995861e added MSDN-like stylesheet for wxWindows documentation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17759 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 23:25:58 +00:00
Václav Slavík
1d6704b6a9 no real changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17758 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 23:24:42 +00:00
Vadim Zeitlin
3a582e90c0 cleaned up (well, removed) the mess in wxComboBox::SetValue()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17757 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 21:19:26 +00:00
Vadim Zeitlin
f385722728 made SameAs() and operator==() const, added operator!=() and docs for it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17756 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 13:16:29 +00:00
Vadim Zeitlin
d480da3f17 fixed/expanded InsertItems() and Set() docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17754 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 12:35:24 +00:00
Vadim Zeitlin
5df61649d9 added wxListView docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17753 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 12:32:30 +00:00
Václav Slavík
d399635e06 Unicode compilation fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17752 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 12:04:36 +00:00
Václav Slavík
b6241cc22d compilation fix and replaced wxFAIL_MSG with wxLogError (this is runtime error)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17751 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 12:03:29 +00:00
Vadim Zeitlin
55f8e9befc added a note about deleting the menus
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17750 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 11:59:51 +00:00
Ron Lee
aff6c6037d Added GetAdjustedBestSize which returns the largest of
BestSize and any user specified Min size hints.

Put it to use with wxADJUST_MINSIZE, which now has a chance
of working;  a) if the item gets smaller, and b) with controls
(like wxButton) for whom BestSize and the user MinSize share
only the most tenuous relationship.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17749 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-07 08:04:19 +00:00
Gilles Depeyrot
664785bce9 updated PB project (added missing headers, updated build script, ...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17748 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 22:31:09 +00:00
Gilles Depeyrot
1c8be62219 added wxUSE_PROLOGIO and changed default value of wxUSE_WX_RESOURCES
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17747 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 21:49:36 +00:00
Gilles Depeyrot
344ec96065 Only compile parser.o if PROLOGIO/RESOURCES are enabled.
Removed it from *.t for platforms where configure would add it.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17746 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 21:45:42 +00:00
Vadim Zeitlin
080b9373ff corrected wxDEFAULT_DIALOG_STYLE desc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17745 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 15:24:16 +00:00
Vadim Zeitlin
53630547cf fixed GTK2-only bug in SetLogicalFunction()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17744 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 15:20:47 +00:00
Chris Elliott
20ea7ff9d7 fix bug in nmake -f makefile.vc in widgets sample, where cannot delete old objects
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17743 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 15:02:31 +00:00
Ron Lee
80cf014b43 Surely it was not intended for SetBestSize to ignore a fully specified
size if passed one.    In any case, this method seems removable to me,
anyone care to confirm or deny that?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17742 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 14:21:51 +00:00
Václav Slavík
052a4b0f2f wxTextFile defaults to iso-8859-1, not wxConvLibc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17741 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 13:12:53 +00:00
Václav Slavík
1aa3e8d8f6 added wxConvISO8859_1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17740 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 13:12:42 +00:00
Václav Slavík
4383c2b97a added wxXmlResource::SetFlags as per wxWorkshop team's request
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17739 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 11:10:59 +00:00
Robert Roebling
385112a8b3 Fixed wxMemoryStream to make it work without
any associated stream.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17738 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 10:46:30 +00:00
Robert Roebling
0fce57ac76 Unicode copmile fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17737 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 10:45:44 +00:00
Robert Roebling
0e808f5d5a Updated internat sample for Unicode, correction.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17736 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 10:44:23 +00:00
Robin Dunn
7ed43ac2e8 SWIGged update for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17735 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-06 04:23:54 +00:00
Robin Dunn
8c3de19796 Fix to allow wxShapeRegion to display text, from George Seally
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17734 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 23:08:31 +00:00
Robin Dunn
8f5c320767 wxSizer.Show, IsShown, etc.
Wrappers for and use new wxInputStream methods
Other tweaks, fixes, etc. to go along with recent CVS changes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17733 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 23:03:34 +00:00
Julian Smart
9ac8b5637a Added 32x32 versions of wxWindows icon and a .ico containing
16x16 and 32x32 versions


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17732 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 17:41:23 +00:00
Julian Smart
d7f50f5f27 Added a 16x16 wxWindows blocks icon
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17731 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 15:09:09 +00:00
Julian Smart
cb702cedd1 Use wxFileNameFromPath, not FileNameFromPath
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17730 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 14:53:23 +00:00
Vadim Zeitlin
2383b3b5f2 added missing winundef.h include after windows.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17729 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 14:40:26 +00:00
Julian Smart
ceecd70a6b Added further accelerators, though Up/Down/Left/Right are still
not working for some reason.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17728 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 13:42:23 +00:00
Vadim Zeitlin
8f05d8f9d5 don't fall back to GTK 1.x if --with-gtk2 was specified; don't try to build in Unicode when using GTK 1.x
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17727 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 13:36:49 +00:00
Ron Lee
6fb2eb9c0c #include missing menu header
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17726 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 11:29:44 +00:00
Ron Lee
d06d0bc30a Only compile parser.o if PROLOGIO/RESOURCES are enabled.
Removed it from *.t for platforms where configure would add it,
it should possibly be removed from more, and this probably
breaks the msw project files somehow too, but I'm not sure where
to fix that.

There were some other changes apparent in the diff...  seemingly
a result of earlier changes to tmake templates -- I'm committing
them too, on the pretence that they are either right, or we've a
problem in the tmake stuff to fix.  Nothing has broken for me yet..


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17725 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 10:03:08 +00:00
Jouk Jansen
d6c9911e4d Committing in .
One OpenVMS define to make linking possible.

 Modified Files:
  Tag: WX_2_4_BRANCH
 	wxWindows/src/motif/utils.cpp
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17724 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 09:11:27 +00:00
Vadim Zeitlin
70e8d9f69c fix for compilation with wxUSE_WCHAR_T==0 (bug 615084)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17723 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 01:22:25 +00:00
Vadim Zeitlin
b905c12598 attemps to fix compilation after applying the last patch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17722 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 00:57:38 +00:00
Vadim Zeitlin
bab7e01267 wxUpdateUIEvent derives from wxCommandEvent, not wxEvent
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17721 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 00:46:27 +00:00
Vadim Zeitlin
6886d3e782 generate EVT_CONTEXT_MENU under GTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17720 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-05 00:45:11 +00:00
Vadim Zeitlin
8edcec6652 removed LVN_HOTTRACK case completely -- why comment it out if we don't ever need it at all?
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17719 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 23:26:54 +00:00
Vadim Zeitlin
611c1e0e6f added #if wxUSE_PROLOGIO test
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17718 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 23:22:44 +00:00
Vadim Zeitlin
35891ce060 added wxUSE_PROLOGIO
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17717 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 23:16:49 +00:00
Vadim Zeitlin
b9a9ef0453 undid the last commit -- do use wxUSE_PROLOGIO guard
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17716 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 23:11:23 +00:00
Vadim Zeitlin
8bbb50ba61 fix bug in key handling code: toupper() shouldn't be applied to the values outside of the ASCII range (patch 631236)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17715 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 23:05:00 +00:00
Vadim Zeitlin
5b47d4f175 set APPVER to 4.0 if WIN95==1: fixes bug 629884
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17714 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 23:01:13 +00:00
Vadim Zeitlin
21cb83e8c9 replaced buffer copy and strcmp() with strncmp() (patch 632155)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17713 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 22:48:27 +00:00
Vadim Zeitlin
01f12b1adf fixed __BORLANDC__ misspelling (patch 632095)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17712 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 22:46:28 +00:00
Vadim Zeitlin
7ec0705909 some harmless compilation warning fixes (patch 631520)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17711 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 22:42:57 +00:00
Vadim Zeitlin
964a710a54 fixed headers included for wxUniv (patch 630713)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17710 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 22:41:56 +00:00
Vadim Zeitlin
9f9cebfb6c conversion to/from DOS date/time (patch 627575)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17709 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 22:38:15 +00:00
Vadim Zeitlin
66cf613e7b show column width in the column event handlers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17708 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 22:25:55 +00:00
Vadim Zeitlin
6df55f5e46 set the column width in wxListEvent itself too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17707 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 22:24:13 +00:00
Julian Smart
f5acd489cb wxMSW: Added context menu for rich edit control, as per standard EDIT control
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17706 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 21:49:57 +00:00
Vadim Zeitlin
d3f6d73cf8 added IsModified() test
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17705 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 21:46:59 +00:00
Vadim Zeitlin
aa4ebcb98d fixes to wxPipeInputStream
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17704 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 21:33:28 +00:00
Robert Roebling
f4c049b60e Small correction for wxButton mouse events under GTK 2.0.
Minor doc updates.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17703 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 20:13:23 +00:00
Vadim Zeitlin
94bccc31db compilation fixes in WXWIN_COMPATIBILITY_2_2==0 mode
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17702 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 19:31:59 +00:00
Vadim Zeitlin
c79c41ca66 don't give env var expansion warning under Windows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17701 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 19:09:27 +00:00
Vadim Zeitlin
fa1837fe14 replaced global semaphore in gtk_notebook_page_change_callback() with a per-object one
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17700 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 19:06:04 +00:00
Vadim Zeitlin
93f4047227 removed TABs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17699 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 18:52:18 +00:00
Vadim Zeitlin
ae5dcdf0e6 work around for cygwin broken wchar.h: include extern C ourselves
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17698 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 17:47:18 +00:00
Vadim Zeitlin
fe164e5138 removed unneeded #include wchar.h (it should only be done from wxchar.h which has workaround for cygwin bug in wchar.h)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17697 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 17:40:13 +00:00
Vadim Zeitlin
05ae76ec1d added Update() and RefreshRect()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17696 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 17:25:51 +00:00
Vadim Zeitlin
85e5952bfe use wxSTREAM_NO_ERROR instead of deprecated wxSTREAM_NOERROR (fixes compilation without WXWIN_COMPATIBILITY_2_2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17695 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 17:16:04 +00:00
Vadim Zeitlin
405fff1bad replaced IsAvailable() with CanRead() in wxPipeStream
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17694 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 00:40:59 +00:00
Vadim Zeitlin
5a86eeac8c added wxInputStream::CanRead() and assorted other stream changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17693 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-04 00:39:44 +00:00
Václav Slavík
aaa7e220f7 *** empty log message ***
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17692 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 23:58:38 +00:00
Vadim Zeitlin
282eb70450 suppressed VC++ warning
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17691 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 21:37:51 +00:00
Robert Roebling
3f5a4243c9 Correct cursor thing in wxSplitterWindow (which manifested
itself only in GTK 2.0)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17690 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 21:37:05 +00:00
Vadim Zeitlin
9b9fb7c234 added Unix makefile
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17689 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 21:17:59 +00:00
Vadim Zeitlin
6186e29350 fix app exit code: it is returned by OnExit(), not OnRun()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17688 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 21:11:11 +00:00
Vadim Zeitlin
caaff22c06 replaced type unsafe wxHash with hash_map<>
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17687 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 21:03:02 +00:00
Vadim Zeitlin
e1e57f73b3 added wxPoll() implementation (based on patch 626861)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17686 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 20:58:52 +00:00
Vadim Zeitlin
e0724c9d18 added configure test for poll()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17685 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 20:56:21 +00:00
Robert Roebling
892a61dd37 Added more uniode compile fixes.
Made prologio and resources optional.
  Added native GTK 2.0 size grip to status bar.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17684 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 19:09:08 +00:00
Václav Slavík
af4efc1d0c Turkish translation update (I checked it into poEdit by mistake and didn't realize it was wxWindows catalog)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17683 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 17:19:28 +00:00
Václav Slavík
d402f19c82 make sure wxDefaultArtProvider is linked-in
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17682 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 17:19:10 +00:00
Robert Roebling
5f79bebb29 More wxT() macros.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17681 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 16:19:32 +00:00
Robert Roebling
fc6f3208b2 Some more Unicode fixes. What does wxTextStream do with
a char in Unicode mode?


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17680 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 15:48:13 +00:00
Robert Roebling
c60cc91708 Bunch of compile fixes for wxX11 in Unicode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17679 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 13:48:04 +00:00
Robert Roebling
0f7730c502 Added wxString::FromAscii() for char
Used it in protocol.cpp which probably assumes ASCII anyway.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17678 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 13:07:41 +00:00
Robert Roebling
638104abce Unicodification.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17677 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 12:36:09 +00:00
Robert Roebling
e4c937788a Added first tests for wxX11 for Unicode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17676 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 12:19:26 +00:00
Vadim Zeitlin
a7c3dae3a1 fixed bug in wxToolTip::SetTip() which didn't do anything before
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17675 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 09:52:51 +00:00
Stefan Csomor
56e770d6b7 added export attribute for classes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17674 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 09:32:52 +00:00
Stefan Csomor
0c59640539 adjusted to other platforms
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17673 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 09:21:07 +00:00
Stefan Csomor
ebfb098877 corrected class export
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17672 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 09:18:16 +00:00
Vadim Zeitlin
e92b5a2c94 removed duplicates from encoding names/descriptions arrays
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17671 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 00:25:51 +00:00
Vadim Zeitlin
e3a3ef96f1 removed default conv argument in wxString(const char *) ctor in Unicode build
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17670 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-03 00:01:52 +00:00
Václav Slavík
0c3f3a52e4 added support for versioned symbols on Linux
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17668 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-02 19:05:43 +00:00
Václav Slavík
cac85ffa8b applied patch #630001 (fixes \ escapement)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17667 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-02 12:26:02 +00:00
Stefan Csomor
bc4103a66e constrain tooltip rectangle to window (access to screen is very expensive under OSX)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17666 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-01 18:36:41 +00:00
Stefan Csomor
160c7ecbad added BI_RLE4 implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17665 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-11-01 12:56:48 +00:00
Vadim Zeitlin
d29e4f03d9 restored the old values of the wxFontEncoding enum elements and also made Chinese/Japanese encodings synonyms for the MS ones, not the new values
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17664 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-31 20:43:48 +00:00
Robert Roebling
b598e25cad Blind Compile fix for GTK 2.0 non-Unicode mode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17663 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-31 19:49:11 +00:00
Stefan Csomor
ef807ad05c added support for file types popup upon save, an Get/SetFilterIndex
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17662 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-31 14:04:44 +00:00
Stefan Csomor
75ff83b629 refresh only upon resize not on move only
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17661 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-31 08:48:44 +00:00
Robert Roebling
9f98d38391 Enable Unicode input methods via GTK's and XIM
under GTK 2.0.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-30 19:56:03 +00:00
Robert Roebling
cf24909108 Compile fix after latest cleanup.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17659 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-30 18:01:24 +00:00
Robert Roebling
1599228964 Mixed up KOI and Chinese. (Wrong order in lists).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17658 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 22:40:45 +00:00
Robert Roebling
54b25889d2 Replaced lots of ANSI/ASCII strings with their
Unicode equivalents, i.e. I put wxT() arounf
    them in lots of places.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17657 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 21:48:06 +00:00
Vadim Zeitlin
0ab495989d no changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17656 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 20:42:34 +00:00
Vadim Zeitlin
0bfca7f379 added LED sample (patch 622939)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17655 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 14:41:38 +00:00
Ron Lee
d87f50a85e typo fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17654 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 04:46:38 +00:00
Vadim Zeitlin
94d07a6abd removed erroneous spaces from an example code snippet (bug 624580)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17653 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 00:40:11 +00:00
Vadim Zeitlin
fc9d18d36f clarify where should WXWIN point to (bug 621118)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17652 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 00:36:45 +00:00
Vadim Zeitlin
a926f0f996 fix for setting m_winLastFocused correctly in some situations (see bug 622297)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17651 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 00:34:15 +00:00
Vadim Zeitlin
a824bcf272 corrected misleading comment for WXWIN_COMPATINILITY_2_2 (closes 625817)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17650 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 00:31:48 +00:00
Vadim Zeitlin
5dc4c9e92d let Ctrl-C work even in a readonly text control
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17649 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 00:28:33 +00:00
Vadim Zeitlin
824b2f9451 dy parameter in ScrollList() is the number of pixels, not lines (closes bug 628778)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17648 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 00:14:38 +00:00
Vadim Zeitlin
6e76ef7230 compilation fix for !wxUSE_CHOICE (patch 629092)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17647 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 00:06:11 +00:00
Vadim Zeitlin
dab0267b99 enable wxProgressDialog for wxUniv, it should work
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17646 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 00:04:28 +00:00
Vadim Zeitlin
0c3eefe809 fix for wxUniv compilation (patch 630082)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17645 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-29 00:02:07 +00:00
David Webster
1351c353d3 Weekly updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17644 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-28 23:24:17 +00:00
Vadim Zeitlin
5f60853843 documented DeleteChildren
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17643 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-28 20:20:35 +00:00
Vadim Zeitlin
d8c159fbfd don't crash if IsVisible() is called for the hidden virtual root
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17642 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-28 20:17:53 +00:00
Vadim Zeitlin
3095762276 don't overrun 80 char buffer boundaries in HandleTooltipNotify()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17641 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-28 20:03:50 +00:00
Vadim Zeitlin
186af62077 support for tooltips longer than 80 characters
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17640 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-28 19:42:57 +00:00
Chris Elliott
8f3c90b718 mdi GetActiveChild patch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17639 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-28 15:23:31 +00:00
Chris Elliott
f371aaacb4 documents CreateButtonSizer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17638 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-28 14:14:27 +00:00
Robert Roebling
51148dfb8e Moved AA information to the right place.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17637 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-28 01:51:46 +00:00
Robert Roebling
d089223aa3 Lots of minor GTK2 updates.
Added wxFont SetNoAntiAliasing which cannot cause
    problems with existing apps since it doesn't
    changing the current style flags.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17636 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-28 00:21:00 +00:00
Chris Elliott
87c6ba105c makeuniv.b32 has escaped a previous purge
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17635 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-27 16:29:21 +00:00
Vadim Zeitlin
a35b6da53a draw the sashes without wxSP_3DSASH flag nicer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17634 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-26 21:25:45 +00:00
Vadim Zeitlin
110904ad7e fixed wxConfig::Read() return value (bug introduced by the last commit)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17633 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-26 21:11:47 +00:00
Vadim Zeitlin
a068a1ce8d clarified the return value of MB2WC/WC2MB
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17632 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-26 20:18:46 +00:00
Vadim Zeitlin
ed0fb5f1dc fixed bug which prevented the env vars in wxConfig values from being expanded
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17631 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-25 21:10:38 +00:00
Vadim Zeitlin
f1c2a09edf compilation fix for wxUniv (patch 628810)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17630 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-25 20:15:12 +00:00
Ron Lee
1f7d25a152 Don't install duplicate image handlers.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17629 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-25 12:26:48 +00:00
Vadim Zeitlin
4d2912d600 fix for conversion buffer size problems
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17628 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-25 00:15:05 +00:00
Robert Roebling
f481b72d90 Added GB2312, BIG5, EUC-JP and Shift-JIS encodings to
known encodings so that message catalogs written in
    these encodings can be loaded. I did't find the code
    where I can specify that GB2312 is actually the same
    as the Windows code page.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17627 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 23:15:36 +00:00
Vadim Zeitlin
7fb7ed97e9 bumped up version to 2.3.4
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17626 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 23:05:55 +00:00
Václav Slavík
b4bcb03448 reverted 'doesn't compile, let's remove it' fix for mingw32 compilation problem -- works now with a definition in missing.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17625 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 19:42:42 +00:00
Stefan Csomor
6e2e9a9abd changed wxDisplaySize to return the entire size
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17624 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 19:13:47 +00:00
Vadim Zeitlin
42b2b3947f trying to keep the list of changes as brief as possible
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17623 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 16:16:32 +00:00
Vadim Zeitlin
ef5941b3d8 added SetToWeek() test
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17622 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 16:13:40 +00:00
Vadim Zeitlin
936284fe41 fixed several bugs in wxDateTime week number calculations which required passing WeekFlags argument to more functions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17621 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 16:11:02 +00:00
Václav Slavík
47cfa2bd4c Mingw compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17620 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 16:10:00 +00:00
Julian Smart
a693d65e54 MinGW fix for XP fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17619 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 11:35:21 +00:00
Julian Smart
9a713b1149 Applied patch [ 623736 ] Build and use FL as DLL
This patch allows FL to be build as a DLL with the VC
project files, I was only able to at chief it with the VC
projects because the make file for building libs doesn't
have any rule to build DLLs (at least I didn't see how to
do it).

However the FL demo applications can be build using FL
in DLL form with MSVC project files and VC make files
(as mentioned before the FL DLL it self can only be build
using VC projects).

This patch includes 2 files; 1 to change current FL files
to work in DLL form and 1 extra include file that needs to
be added in the FL include directory.

Small note: if you want to use FL as a DLL you need to
use wxWin as a DLL.

Thanks,
Hans.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17618 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 11:21:47 +00:00
Julian Smart
0ea0ed4778 Applied patch [ 619424 ] texutils.cpp patch for !wxUSE_IOSTEAMH
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17617 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 11:06:18 +00:00
Julian Smart
ce72acc2c6 Added note about wxSizer::Show and wxListCtrl crash fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17616 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 11:04:17 +00:00
Julian Smart
ed9cd416f1 Applied patch [ 614042 ] Add wxSizer::Hide() & Show()
By Carl Godkin
Also documented wxSizer::Show.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17615 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-24 11:01:47 +00:00
Robin Dunn
2beacbf5e9 Applied patch from Niki Spahiev
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17614 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-23 20:43:50 +00:00
Robert Roebling
f8300041bd Lots of small changes to prevent glibc from crashing
when converting ansi strings to unicode. After
   this, you can use and display east asian locales
   in wxGTK, which looks sorta funny...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17613 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-23 17:32:15 +00:00
Julian Smart
8dcb2ef2ee Added FINAL=$(FINAL) to some BC++ makefile targets to
make the sublibraries compile properly


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17612 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-23 12:51:37 +00:00
Vadim Zeitlin
d5f0a2b396 implemented GetTimes() for the directories
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17611 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 22:16:49 +00:00
Julian Smart
829fe079bc Patch [ 626532 ] Fix default item/tab traversal problem
This patch fixes a problem that occurs when you have a
panel containing controls inside a dialog/frame with a
default item (i.e. default button). Currently,
<Return/Enter> is processed incorreclty as a <tab>
even if there is a default item in a parent. This patch
causes a window not to handle the VK_RETURN key if
it is not a top level window and doesn't have a default
item of it's own.

Derry Bryson


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17610 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 21:38:25 +00:00
Julian Smart
6a9f0d173e Applied patch [ 626545 ] Correct num bytes allocated for bitmap
This corrects the calculation of the number of bytes to
allocate for the bitmap in wxPrinterDC::DoDrawBitmap
(). It was allocating more memory than necessary.

By Derry Bryson


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17609 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 21:34:22 +00:00
Vadim Zeitlin
8f40c2b250 updated Indonesian translations
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17608 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 18:21:49 +00:00
Stefan Csomor
8dfed6e742 changed notebook icon code to only trigger under 10.2 and later (it is not working/buggy under 10.1.X)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17607 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 15:41:00 +00:00
Stefan Csomor
97138ef264 added system version getter
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17606 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 15:38:17 +00:00
Jouk Jansen
7f42651bb1 Committing in .
OpenVMS specific changes:
   setup.h_vms : updated configuration for OpenVMS
   threadspsx.cpp : the type long on OpenVMS is 32 bits. therefor some
                    casts are changed to long long, for OpenVMS only.

 Modified Files:
  Tag: WX_2_4_BRANCH
 	wxWindows/setup.h_vms wxWindows/src/unix/threadpsx.cpp
 ----------------------------------------------------------------------


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17605 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 07:11:32 +00:00
Robin Dunn
6a8dabe2ae SWIGged updates for wxMac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17604 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 06:20:16 +00:00
Robin Dunn
5de6e36941 SWIGged update for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17603 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 05:07:14 +00:00
Vadim Zeitlin
8b26aa07de a hack to fix multiple problems with showing modal dialogs from OnIdle()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17602 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-22 00:30:26 +00:00
Robin Dunn
e771b7e4ac Allow WM_SYSKEYDOWN to still be processed by MSWDefWindowProc, even if
it was handled by an event handler.  This allows the magic Windows
keys (such as Alt-space for the system menu, Alt or F10 to activate
the menu bar, Alt-F4 to send WM_CLOSE, etc.) to still work properly.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17601 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 22:19:07 +00:00
Robin Dunn
3fe4f9bf40 Document major user visible changes
Build and such for recent CVS updates


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 21:31:06 +00:00
Robin Dunn
f63cfda54f Changed how the images are encoding in images.py, and have also
checked in the images themselves.
Also changed how it detects if the platform is wxGTK.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17599 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 21:29:26 +00:00
Robin Dunn
36060e25b0 SWIGged code updates for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 21:13:36 +00:00
Robin Dunn
dccca5634f Fixed wxSWIG so that it won't convert None to NULL for parameters that
are C++ references, it still does for pointer parameters.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17597 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 21:10:11 +00:00
Robin Dunn
699c00400a Added GetSelectedCells, GetSelectionBlockTopLeft,
GetSelectionBlockBottomRight, GetSelectedRows, GetSelectedCols nethods
to wxGrid.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17596 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 21:08:16 +00:00
Robin Dunn
2b3a3838ee Added Python == and != operators for some basic classes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17595 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 21:04:49 +00:00
Robin Dunn
f0a3fd5400 Added wxRealPoint::operator!= for consistency
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17594 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 20:08:59 +00:00
Julian Smart
1553df7c3e Removed tabs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17593 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 13:34:44 +00:00
Julian Smart
4b2452426b Two fixes for wxListCtrl under XP.
1) Do not use lParam for LVN_HOTTRACK since this doesn't
have valid data.
2) Check for item validity in HDN_GETDISPINFOW notification and
return TRUE to stop further processing of this strange message.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17592 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 12:41:52 +00:00
Chris Elliott
8a8578cebb fix for sourceforge bug report 625765
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17591 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-21 08:57:48 +00:00
Václav Slavík
4a5fc54878 more compilation fixes (tex2rtf now builds again)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17590 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 22:17:49 +00:00
Vadim Zeitlin
8677ac53d2 show something in the summary when --enable-debug was explicitly given too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17589 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 21:45:40 +00:00
Robert Roebling
08314c6f4f Added header filename to pragma.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17588 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 18:21:36 +00:00
Vadim Zeitlin
ccee086514 fixed (?) file format
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17587 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 14:45:28 +00:00
Václav Slavík
2f4ed3b275 fixed syntax errors in documentation (once again...)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17586 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 13:47:12 +00:00
Václav Slavík
9891e5609d use iso-8859-1 as default encoding
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17585 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 13:46:51 +00:00
Václav Slavík
601a6d1cc5 compilation fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17584 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 13:46:38 +00:00
Václav Slavík
5896402ea4 compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17583 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 13:46:23 +00:00
Václav Slavík
d1274ec7b9 don't use <font face> if not requested
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17582 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 13:45:40 +00:00
Robert Roebling
7fcfab5e21 Use UTF8 for writing file configuation data in
Unicode mode. I assume that the registry
    also will use Unicode in Unicode mode.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17581 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 12:45:51 +00:00
Robert Roebling
09cb4267da Corrected GetCharWidth() and GetCharHeight()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17580 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 11:20:32 +00:00
Robert Roebling
cd12eca16a New code for char and key events under GTK 2.0. This
uses the built-in input method which is required
    even for getting European characters. Key down
    events probably don't work anymore. It is still
    impossible to receive Unicode characters due to
    the limitations of wxKeyEvent.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17579 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 10:15:31 +00:00
Robert Roebling
ba97061f8e Corrected GetTextExtent() although I dont reall
know what was wrong.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17578 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 10:12:48 +00:00
Robert Roebling
d51bad0347 Don't use libc for converting the command line
params to Unicode as it will crash.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17577 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-20 10:10:56 +00:00
Vadim Zeitlin
3a6fb21d40 implemented missing wxNativeFontInfo methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17576 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-19 21:23:18 +00:00
Vadim Zeitlin
9e99b53208 added wxRB_SINGLE style as temp workaround for MSW native radiobutton bug
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17575 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-19 13:24:09 +00:00
Václav Slavík
02b0f5f67e added wxScrolledWindow to XRC
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17574 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-18 20:54:12 +00:00
Stefan Csomor
00a71a011f added toggle support (and some corrections ;-)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17573 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-18 19:47:34 +00:00
Stefan Csomor
30438673e3 notebook images support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17572 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-18 17:22:44 +00:00
Gilles Depeyrot
f95c44324e corrected Mac OS X related configuration check (removed spurious if)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17571 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-18 16:26:11 +00:00
Stefan Csomor
6302278380 added proper accessor for getting region boundaries
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17570 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-18 08:48:07 +00:00
Stefan Csomor
5a751e2699 key handler does not interfere with menuevent keystrokes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17569 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-18 07:16:49 +00:00
Stefan Csomor
92340b2ae8 bracketed fstream include
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17568 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-18 06:48:35 +00:00
Robin Dunn
7c630a2d4f SWIGged updates for wxMac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17567 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-18 06:24:40 +00:00
Robin Dunn
431aa4766e Use true reference counting with wxMemoryBuffer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-18 05:11:08 +00:00
Václav Slavík
1adbd752e1 wxCheckBox and wxCheckList docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17565 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 22:07:44 +00:00
Stefan Csomor
a4d52e98b7 turned off several branches for cursor setting idle code, I'll have to turn on some of them
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17564 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 20:40:21 +00:00
Stefan Csomor
a1bc5f4446 picture support on tabs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17563 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 20:38:38 +00:00
Stefan Csomor
e22babff50 changed code for better debugging
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17562 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 20:34:20 +00:00
Stefan Csomor
c033876ec0 pict generation code takes into account mask, getting rid of a memory leak
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17561 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 20:32:29 +00:00
Stefan Csomor
728d6d7d3a attempt to keep the number of control updates lower during idle times
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17560 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 20:30:44 +00:00
Vadim Zeitlin
5364b91a46 added Indonesian translation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17559 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 19:58:09 +00:00
Gilles Depeyrot
f420fdcfe2 Under Mac OS X, when building non bundle applications, resources are bundled
both with shared library and applications since the carb resource *must* be
included in the application in order for it to be recognized as a Carbon
application


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17558 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 19:20:40 +00:00
Roman Rolinsky
90fa618ee0 Notes about 0.0.8-1.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17557 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 18:49:29 +00:00
Roman Rolinsky
18ede604de Using MyDocument objects for writing XML (myxml module).
Added new controls.

Panel.OnCut code is merged with Panel.OnDelete to Panel.OnCutDelete.

Encoding support (beta).

Moved "del conf" line from App class to main function - for some weird
reason it doesn't work in App.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17556 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 18:41:53 +00:00
Roman Rolinsky
2667e31153 Updated control parameters for wxDialog, wxGauge, wxSpinButton.
Implemented wxSpinCtrl, wxGenericDirCtrl, wxUnknown.

Added encoding support and new classes xxxEncoding, xxxMainNode (represents Document
object).

etc.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17555 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 18:37:55 +00:00
Robin Dunn
171c9b26e3 wxFAIL used wxFalse in its message like '"wxFalse" failed' which
doesn't make much sense...  So I changed the token passed to wxASSERT
to "wxAssertFailure" to try and make it a little better.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17554 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 18:37:51 +00:00
Roman Rolinsky
8ab3e5a672 Customised XML writing - include encoding header attribute
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17553 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 18:33:41 +00:00
Robin Dunn
049d5d2cca Fix a couple asserts so they won't deref NULL pointers if that's what
was passed in.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17552 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 18:23:50 +00:00
Vadim Zeitlin
7c603b9907 added include wx/defs.h
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17551 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 18:02:55 +00:00
Vadim Zeitlin
6af4efb2f9 fixes for gcc 3.x -Wshadow warnings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17550 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 16:43:43 +00:00
Vadim Zeitlin
5b7745fa47 gcc 3.x -Wshadow warning fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17549 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 16:38:49 +00:00
Vadim Zeitlin
01a88a5b8b compilation fix (missing header)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17548 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 16:32:27 +00:00
Vadim Zeitlin
635f9b534e added wxLongLongSuffix and wxLongLongFmtSpec for CW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17547 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-17 16:30:36 +00:00
Robin Dunn
1553a6f2f2 SWIGged updates for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17546 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-16 23:24:51 +00:00
Robin Dunn
d73361fed5 Various changes to reflect current CVS.
Added a separate wxRadioButton demo.
Various tweaks.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17545 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-16 22:51:31 +00:00
Robin Dunn
a5b317c973 Reverted last change. The page size must be set when it is added in
case the notebook has already been sized by the time the new page is
added.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17544 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-16 22:48:18 +00:00
Robin Dunn
d3a5c14ab4 FileExists --> wxFileExists
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17543 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-16 22:46:42 +00:00
Vadim Zeitlin
9df4bbf74c Mac compilation warning fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17542 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-16 22:43:09 +00:00
Václav Slavík
acc4028ecd fix binary incompatiblities in wxHtmlHelpController's cached data bytestream
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17541 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 22:46:25 +00:00
Stefan Csomor
e3dbaff33f wxNO_FULL_REPAINT_ON_RESIZE implementation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17540 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 16:16:21 +00:00
Julian Smart
91ae025ee2 Fixed wxUSE_THREADS typo
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17539 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 16:02:54 +00:00
Julian Smart
6f45003cae Fixed SString.h for gcc 2.96
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17538 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 15:39:35 +00:00
Stefan Csomor
cab1dfd13b added wxBitmap::ConvertToImage code for native icons and pictures
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17537 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 15:03:20 +00:00
Stefan Csomor
665bb65698 line ending commands under condition of PC endings (added also to WriteText)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17536 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 15:01:09 +00:00
David Webster
74587a6b43 More duplicate symbol fixes for VisualAge builds.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17535 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 14:15:17 +00:00
David Webster
32b26030fe More dll updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17534 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 14:12:23 +00:00
Vadim Zeitlin
714e26a551 fixed gauge overflow
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17533 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 13:55:06 +00:00
Vadim Zeitlin
a61aefe37f don't divide by 0 in SetValue/Range(); minor code cleanup
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17532 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-15 13:25:41 +00:00
Václav Slavík
349ac76e9a given an assert when trying to do something stupid
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17531 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-14 22:40:40 +00:00
Václav Slavík
4f3f29fe0a documented wxXmlResourceHandler::IsOfClass
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17530 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-14 22:31:50 +00:00
David Webster
bb4f30c0d8 Weekly OS/2 updates
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17529 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-14 21:31:38 +00:00
David Webster
047c8f9bd7 Fixups for duplicate symbols errors under VisualAge C++ for OS/2.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17528 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-14 20:44:36 +00:00
David Webster
fd9ac68eb7 VISUALAGE OS/2 fixups needed for new Png lib.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17527 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-14 20:42:24 +00:00
David Webster
a6e369b062 Getting rid of ctl3d32.lib for command-line builds (not used anymore per Julian).
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17526 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-14 19:39:58 +00:00
Stefan Csomor
f9c7ec45b8 added kHighLevelEvent to the group of events that don't need correction of modifiers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17525 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-14 18:35:06 +00:00
Vadim Zeitlin
64b2a65697 added HasSelection() (forgot to commit yesterday)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17524 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-14 17:25:17 +00:00
Vadim Zeitlin
252b2c1c34 Only set WXUSINGDLL=0 when not set (patch 620174)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17523 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-14 12:48:08 +00:00
Vadim Zeitlin
800e14138e call Layout() from Show(TRUE) to ensure that all dialogs are correctly laid out initially
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17522 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 22:37:51 +00:00
Robert Roebling
a46cc43fed Combox gets its own SetFocus()
wxDialog() set the focus to itself when shown. This will
    the propagate to some control in the dialog. I am not
    sure if this will override preceding user's call to
    SetFocus() in one of the child windows.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17521 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 21:03:47 +00:00
Robert Roebling
944b29b835 Give wxComboBox an extra SetFocus() method.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17520 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 21:01:15 +00:00
Vadim Zeitlin
82898ed9df added more tests for SetValue/WriteText
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17519 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 19:27:20 +00:00
Vadim Zeitlin
9007386bc8 each of SetValue(), WriteText() and AppendText() now generates exactly one EVT_TEXT() event for all kinds of controls (plain EDIT, rich, rich version 2)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17518 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 19:24:00 +00:00
Vadim Zeitlin
e924448838 more typos in #ifs fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17517 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 19:13:55 +00:00
Vadim Zeitlin
b0b7a18d2d handle files with .cc extension properly (patch 622687)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17516 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 19:08:33 +00:00
Vadim Zeitlin
a45376e42f typos in #ifs fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17515 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 18:37:44 +00:00
Robert Roebling
daa820fd8b Enable direct access to XML data in XRC.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17514 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 16:19:15 +00:00
Robert Roebling
fbf9b66e03 Shouldn't the fontmapper recognize 8859 as iso-8859?
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17513 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 14:00:03 +00:00
Robert Roebling
441534fce3 Forgot to convert a string in colour name lookup.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17512 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 13:22:12 +00:00
Vadim Zeitlin
e328b2a64d fix for cygwin warnings (modified patch 622146)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17511 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 12:17:42 +00:00
Vadim Zeitlin
69b0c112e7 fix for spelling error (patch 621869) and use _() instead of _T() for the user visible strings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17510 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 12:07:59 +00:00
Vadim Zeitlin
06cdbdacb2 clarifications of ENDSCROLL event docs (patch 622424)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17509 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 12:05:57 +00:00
Robert Roebling
366f5f1fd0 Commited wheel mouse event patch for GTK.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17508 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 11:13:19 +00:00
Vadim Zeitlin
86181cbde1 added wxLL and wxLongLongFmtSpec macros; documented them; added a test in the sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17507 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 11:02:48 +00:00
Robert Roebling
775462816e Another compiler fix for GCC 3.2 Another compiler fix for GCC 3.2..
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17506 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 11:02:38 +00:00
Vadim Zeitlin
b1210f9b69 fix VC++ warnings (which could be errors for the other compilers) with returning wx(W)CharBuffer
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17505 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 10:06:58 +00:00
Vadim Zeitlin
37a911e683 another compilation fix: Unix2DosFilename -> wxUnix2DosFilename
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17504 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 09:50:36 +00:00
Robert Roebling
3b6b0309b1 Compile fix for GCC 3.2. Don't know why.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17503 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 08:17:48 +00:00
Robert Roebling
56089cb7e4 Compile fix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17502 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-13 08:02:41 +00:00
Vadim Zeitlin
16ca2afc73 only define Foo equivalents for wxFoo file functions if WXWIN_COMPATIBILITY_2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17501 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-12 22:19:26 +00:00
Václav Slavík
9fd7ddfcc5 some more XRC docs
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17500 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 22:24:47 +00:00
Václav Slavík
68a8e04526 more whitespaces as style deliminers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17499 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 22:23:58 +00:00
Václav Slavík
2bdb21c40b updated MGL installation instructions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17498 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 22:23:12 +00:00
Václav Slavík
b5cee9c500 don't add files to resources twice
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17497 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 22:22:16 +00:00
Václav Slavík
edb22d6af1 added wxHtmlContainerCell::GetBackgroundColour (needed for e.g. widgets rendering)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17496 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 22:22:06 +00:00
Vadim Zeitlin
da266dd05c added non const accessors to wx(W)CharBuffer; minor changes to wxMemoryBuffer; made copy ctor and assignment operator argument non const
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17492 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 15:26:43 +00:00
Chris Elliott
1e4d96486a make mdi.cpp resize for wxUniv/ Borland as well as wx11/gcc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17490 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 09:09:39 +00:00
Chris Elliott
54946ca676 wxUniversal now in makefile.b32 - use make -f makefile.b32 WXUSINGUNIV=1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17489 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 08:54:09 +00:00
Chris Elliott
2b6484e38e wxUniversal now in makefile.b32 - use make -f makefile.b32 WXUSINGUNIV=1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17488 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 08:38:11 +00:00
Chris Elliott
eb2aa24703 fix for wxUniversal and BCC
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17487 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-11 08:24:41 +00:00
Robin Dunn
3d9d1df8d1 No real change, just added some whitespace for readability and testing
the new syncmail code


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17486 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-10 20:06:13 +00:00
Robin Dunn
e1c77fa8f1 Add some test code, and testing if CVS is allowing commits again.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17485 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-10 17:51:13 +00:00
Vadim Zeitlin
d329818b2a added/documented wxWizard::HasNext/PrevPage()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17484 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-08 20:37:56 +00:00
Julian Smart
bd5dd71130 Added IPC server capability to helpview, if you compile
with hvUSE_IPC
Added client demo using raw IPC classes (not yet using
a kind of help controller, as we eventually should)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17483 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-08 15:27:13 +00:00
Robin Dunn
aa4497caf2 SWIGged updates for wxMac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17482 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-08 03:41:51 +00:00
Vadim Zeitlin
c7195026a0 no changes, finally
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17481 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 23:11:41 +00:00
Vadim Zeitlin
6bc69f3752 handle the errors in MB2WC/WC2MB gracefully in wxString ctors
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17480 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 23:11:27 +00:00
Vadim Zeitlin
c9bd8aeb25 fixed the use of size_t parameters in UTF8 tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17479 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 23:10:57 +00:00
Robin Dunn
ac153e89cc Don't do the OnAssert overloading if not __WXDEBUG__
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17478 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 22:34:03 +00:00
Vadim Zeitlin
86f964c3dd more UTF8 tests
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17477 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 22:33:25 +00:00
Vadim Zeitlin
c280423d85 slightly cleaned up the sample code -- but it (still) really needs a rewrite
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17476 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 22:17:16 +00:00
Vadim Zeitlin
e03cdae726 wxTimer::Start() only works from the main thread: mention it in the docs and add an assert in the code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17475 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 22:16:36 +00:00
Mattia Barbon
51b30d5943 Fix wxHashMap::clear
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17474 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 20:37:21 +00:00
Robin Dunn
65da7c0105 wxXmlSubclassFactory for wxPython
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17473 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 20:08:19 +00:00
Julian Smart
762b5367f7 Removed comment about using its own storage - wxTextValidator doesn't.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17472 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-07 07:28:26 +00:00
Václav Slavík
62ac23612f slowly documenting XRC...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17471 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-06 22:32:54 +00:00
Mattia Barbon
621b9ba223 Add some missing headers for non-PCH compilers.
Add a missing IMPLEMENT_DYNAMIC_CLASS (I still wonder how could it
work without it).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17470 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-06 20:46:28 +00:00
Mattia Barbon
82e547d3d6 A couple more s/friend class wxFoo/friend class WXDLLEXPORT wxFoo/ for
MinGW GCC 3.2.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17469 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-06 20:44:41 +00:00
Vadim Zeitlin
3a9dd8d618 added default value of id param in ctor
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17468 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-06 19:45:51 +00:00
Vadim Zeitlin
26f10d1c2b added a section about wxTextCtrl indices
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17467 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-06 19:44:33 +00:00
Vadim Zeitlin
cea0b70615 generate TEXT_ENTER event when Enter is pressed in a combobox
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17466 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-05 23:29:40 +00:00
Vadim Zeitlin
8f41f92614 create the controls inside a panel
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17465 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-05 22:26:44 +00:00
Vadim Zeitlin
4fe82ce139 kbd traversal code now knows that DLGC_WANTALLKEYS implies DLGC_WANTTAB/ARROWS; this fixes the problem with editing a list/tree ctrl item in place -- you could TAB out of it before
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17464 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-05 22:24:12 +00:00
Vadim Zeitlin
51dbcf35ff call SetFocus() in WM_LBUTTONDOWN handler for the wxWindows controls (not standard ones)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17463 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-05 21:33:01 +00:00
Vadim Zeitlin
0debb1231a mention wxNB_MULTILINE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17462 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-05 20:41:26 +00:00
Vadim Zeitlin
bbce9725f5 woodoo workaround for the bug 616803: crash when showing a dialog with notebook with wxNB_MULTILINE style
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17461 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-05 20:37:07 +00:00
Vadim Zeitlin
8ce31375f2 fixed wxfileDialog::SetPath() (which didn't do anything before)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17460 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-05 20:20:57 +00:00
Vadim Zeitlin
d4ffadcd7c reverted the last change -- what was it for?
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17459 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-05 11:45:42 +00:00
Robert Roebling
372b0e766c Applied patch to fix colour probs under wxGTK.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17458 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 20:48:16 +00:00
Robert Roebling
c6de9c117b Added work-around/fix for redraw bug in idle handler.
I now send internal idle calls whereas normal idle
   events still get block by the recursion block.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17457 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 20:10:14 +00:00
Gilles Depeyrot
af0cf516b0 added SIZEOF_INT to Project Builder prefix header
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17456 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 18:45:11 +00:00
Vadim Zeitlin
c20c9f8034 made the configure summary message a bit more pretty
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17455 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 16:47:26 +00:00
David Webster
e722a0b9d9 Need to set the m_isShown flag properly during a call to ::Show.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17454 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 13:53:38 +00:00
Julian Smart
8c92ffaa71 Removed references to wxBuffer from wxSlider, and
ensured that the slider doesn't use a potentially
uninitialised buffer.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17453 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 10:28:06 +00:00
Ron Lee
6bd20f9d73 fixed long lost typo uncovered by Gilles output summary. Is it ever bad
to add more of these things :-)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17451 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 05:24:14 +00:00
Robin Dunn
7a0afd5cfe Turn off the test case for normal use
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17450 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 02:11:56 +00:00
Robin Dunn
7fbab51529 SWIGged updates for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17449 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 02:00:19 +00:00
Robin Dunn
dad0803d48 Removed Command() but left an alias
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17448 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 00:44:55 +00:00
Robin Dunn
3f7406ab30 it helps if you actually return the return value!
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17447 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 00:42:03 +00:00
Robin Dunn
9312e5d6db wxASSERT and others are converted to Python Exceptions.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17446 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-04 00:40:31 +00:00
Gilles Depeyrot
1d4874621e added a configure summary trailer to report on main configuration options
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17445 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-03 20:46:45 +00:00
Robin Dunn
7d1ab59731 Avoid assert when the position to be removed is beyond the end of the
list and just return FALSE as documented


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17444 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-03 19:50:39 +00:00
Vadim Zeitlin
3512d53ddd added a WXWIN_COMPATIBILITY_2_2 test around deprecated Command() method
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17443 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 23:33:01 +00:00
Vadim Zeitlin
a275e42188 delete the hidden TLW parent window from a module to ensure that it is done even if OnInit() returns FALSE; also create it without using wxTLW itself which actually simplifies the code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17442 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 23:32:23 +00:00
Julian Smart
1681cdd7f1 Regenerated configure for -lm patch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17441 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 14:16:32 +00:00
Julian Smart
690df84c1c Applied patch [ 617303 ] add -lm only when it's needed
(will commit configure shortly)


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17440 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 14:09:28 +00:00
Julian Smart
8eca8095e4 Applied patch [ 617262 ] ListCtrl ResetVisibleLinesRange missing
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17439 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 14:03:43 +00:00
Julian Smart
db2995da83 Applied patch [ 616406 ] wxGenericDirCtrl: virtual methods
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17438 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:57:29 +00:00
Julian Smart
f93107bcae Applied patch [ 615769 ] generic wxListCtrl enhancements
implemented a couple of things missing from the generic
wxListCtrl class which make it more similar to the
Windows port

1) implemented wxLIST_FORMAT_RIGHT and wxLIST_FORMAT_CENTER

2) added an ellipsis (...) to the end of the string and
shortened the string to fit inside the allowed width

3) left a margin of 8 pixels between columns so that
the text is not shoved right together

Note this is my first patch to wxWindows. I did read
the patch howto and I think I got it right but please
feel free to bother me about any discrepancies. In
addition, I am not sure if the way I implemented the
new routine to handle the formatting is adequate
performance wise but it doesn't seem to slow things
down too badly on my machine... :-) In addition, if
this routine is accepted, it could also be used for the
header data as well -- thoughts?

Anthony Tuininga


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17437 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:54:09 +00:00
Julian Smart
ace9a61933 Applied patch [ 615993 ] CW7 project file patch for v2.4
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17436 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:49:07 +00:00
Julian Smart
97ea5edb3d Applied [ 612802 ] wxSplitterWindow::Unsplit() in wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17435 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:46:58 +00:00
Julian Smart
d0fd5a294d Applied [ 611204 ] Fixes wxSlider thumb grabbing area
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17434 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:44:21 +00:00
Julian Smart
af2e6a4295 Applied patch [ 613113 ] "GDI Object" leak in wxOwnerDraw
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:42:23 +00:00
Julian Smart
6397b59b65 Applied patch [ 609516 ] AutoSize does not remove scrollbars
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17432 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:38:50 +00:00
Julian Smart
fe3f379193 Applied [ 609518 ] wxImage: const comp. operators
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17431 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:35:52 +00:00
Julian Smart
44b283fef0 Applied patch [ 609361 ] wxDocument::UpdateAllViews()
The sending view won't be updated now.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17430 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:33:36 +00:00
Julian Smart
5aedd93815 Applied patch [ 613433 ] Makes wxFN::Get/SetTimes work w/ Cygwin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17429 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:31:18 +00:00
Julian Smart
742e672095 Applied patch [ 613877 ] Fixes word ordering
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17428 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:27:46 +00:00
Julian Smart
fc0322d338 Applied patch [ 617438 ] ListCtrl-Sample crashing on sort
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17427 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:26:18 +00:00
Julian Smart
dd0d47090a Applied patch [ 610076 ] wxX11&wxGtk fail with --disable-compat22
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17426 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 13:24:33 +00:00
Julian Smart
fdfc424e32 Reordered font setting since on wxX11 a mem DC is not valid
until the bitmap is selected into it.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17425 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 08:11:27 +00:00
Julian Smart
4d1c976da4 Made compilable with --disable-compat22
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17424 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 07:54:15 +00:00
Robin Dunn
9d43a2054e SWIGged updates for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17423 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 00:27:21 +00:00
Robin Dunn
970a937c34 Added wxHtmlFilter
Also some minor tweaks and additions


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17422 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 00:24:38 +00:00
Robin Dunn
8d5e66bc14 Fixes so this sample can be used with wx DLL
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17421 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 00:16:49 +00:00
Robin Dunn
ce500334d8 Added STCDLLEXPORT so wxSTC could be built and used as a DLL.
Fixed DoAddChar handling in unicode mode to translate the char to UTF8
if needed.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17420 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-02 00:15:07 +00:00
Vadim Zeitlin
f50b6e1d9b fixed more bugs in SetDirectory/Path/Filename() and centralized m_static update code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17418 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-01 18:43:23 +00:00
Ron Lee
292cc8c93e The menubar dynamic sizing patch broke any app which adds an empty
menubar and populates it later.  Since this is (or at least was)
a valid way to use wxMenuBar before that, we need to recalculate
the size whenever it might change.  (We probably need to do it
anyway for this to be completely useful).   This patch isn't the
cleanest or most efficient way to do that, but it's a minimal
change on a new feature that at least restores compatibility.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17417 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-01 15:13:44 +00:00
Robert Roebling
5aee9bc480 Put StringMatch() into #if win_comp_2
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17416 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-01 10:30:22 +00:00
Robert Roebling
4ffb82ac32 No leading space in toolbars for GTK 2.0 since they
are drawn as lines.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17415 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-10-01 09:24:37 +00:00
Robert Roebling
58b5a13da5 Very incomplete Unicode support for wxTextStream.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17414 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 20:48:44 +00:00
Robert Roebling
b1b937339c GTK 2.0 is VERY picky about the realize/map/set_parent order.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17413 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 19:30:52 +00:00
Robin Dunn
0fcac944f3 Typo fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17412 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 17:37:23 +00:00
Robin Dunn
03cd51b0b6 wxFileTypeInfo interface changes and a missing method in wxDateTime
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17411 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 17:36:07 +00:00
Robin Dunn
63a8541c13 More wxTimeCtrl patches from Will Sadkin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17410 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 17:33:15 +00:00
Robert Roebling
4a32c38f67 Enable wxMatchWild() for Unicode (under GTK) /
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17409 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 16:57:17 +00:00
Robert Roebling
5d0c8a9857 Use glib for wxMatchWild() under Unicode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17408 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 16:56:13 +00:00
Robert Roebling
9ca0f57c31 Updated PNG to latest releases. I don't really know
if this fixes the "incompatoble lib version" bug,
   and I actually didn't find any such comment.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17407 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 13:23:54 +00:00
Robert Roebling
7fc06f31e1 Removed hack from wxListCtrl that was required
as long as wxGTK sent an incorrect sequence
   of mouse events for dclicks.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17406 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 13:20:25 +00:00
Robert Roebling
0edfce279c Determin menu bar height dynamically.
Minor sample changes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17405 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 10:40:52 +00:00
Robert Roebling
5c3e4ed256 Filter out surplus mouse down event when
a double click event is in the queue.
   This is how MSW does it.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17404 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-30 10:27:34 +00:00
Julian Smart
5ea82140ee Added some more accelerator possibilities, such as Ctrl+Enter, Ctrl+Home
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17403 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-28 20:06:45 +00:00
Ron Lee
4c77c8865a Disallow the possibility of a dangling 'else'.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17402 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-28 07:01:33 +00:00
Stefan Neis
2a9e9415fa Reordered checks to avoid mis-detection of OS/2 v. 4.* as System V Unix.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17401 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 22:34:45 +00:00
Stefan Neis
45dae01189 Added warnings about to apparently common traps in the build process.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17400 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 21:56:57 +00:00
Stefan Neis
f21f85abdb Fix for WXPM compilation using EMX/gcc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17399 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 21:40:37 +00:00
Stefan Neis
192bb0de73 Fixed includes for EMX/gcc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17398 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 20:59:10 +00:00
Stefan Neis
e8d2bf7311 All of miniframe class is in the header file on OS/2.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17397 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 20:44:24 +00:00
Stefan Neis
ff9d0a5c41 Use generic MDI under OS/2.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17396 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 20:37:39 +00:00
Stefan Neis
5559999404 Use generic mdi on OS/2.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17395 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 20:31:50 +00:00
Julian Smart
9e8c78dbf8 Put back OSTYPE, commented out. I don't really mind if
it's removed again, if people feel strongly that
it's confusing. But it might be helpful to someone.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17394 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 18:55:32 +00:00
Chris Elliott
ca93de9778 fix bug with #define FindText
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17393 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 13:58:23 +00:00
Ron Lee
ebfa00d564 Don't mix up the contrib and main static libs now they all
have the same prefix.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17390 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 01:16:30 +00:00
Ron Lee
492b704acd fixed for new contrib files names, bumped the changelog hopeful to
tag and release 2.3.3.2-debs from this commit.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17389 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-27 00:56:19 +00:00
Václav Slavík
fc253b5bd3 fixes for DJGPP-based MSDOS port
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17388 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-26 22:26:28 +00:00
Stefan Csomor
335f8251c4 dynamic allocation of file type arrays etc...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17385 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-26 08:53:28 +00:00
Stefan Csomor
52000d0bbb corrected checks for metrowerks to proper number
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17384 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-26 08:52:09 +00:00
Václav Slavík
e9db9d29b8 fixed restoration of iconized wxHtmlHelpFrame
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17383 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 19:40:43 +00:00
Julian Smart
fcbe4b8952 Avoid including reparent.h in Nano-X mode.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17382 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 19:28:28 +00:00
Mattia Barbon
56b8d9a67c Partially reverted previous change: it breaks building from DOS prompt.
cp still uses forward slashes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17381 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 19:09:42 +00:00
Vadim Zeitlin
66eb448aa2 really fixed handling 32 bit scrollbar positions while dragging the thumb (thanks to Jonathan Marsden)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17380 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 17:53:47 +00:00
Vadim Zeitlin
1f6b7faabc fixed a bug with Printf()ing a string into itself
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17379 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 17:03:26 +00:00
Julian Smart
10acf8094e G95 makefiles:
_Always_ use forward slashes when using copy.
Added OSTYPE to makef95.env to fool makefiles into
thinking that MSYS is being used, even when it is,
but only from DOS.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17378 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 11:20:21 +00:00
Václav Slavík
3d940df52b fixed memory leak in wxMimeTypesManager
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17377 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 11:12:06 +00:00
Václav Slavík
48acff7892 fixed memory leak in wxColour
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17376 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 11:10:51 +00:00
Václav Slavík
3ce501311b implemented subclass factories for XRC
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17375 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 11:10:39 +00:00
Václav Slavík
5e3012152c fixed previewing in wxrcedit
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17374 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-25 11:10:18 +00:00
Robin Dunn
7174c830f7 Tweaks to wxTimeCtrl for wxMac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17373 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-24 19:55:19 +00:00
Robin Dunn
74f4b82837 Update XRCed to 0.0.7-5
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17372 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-24 18:34:21 +00:00
Robin Dunn
4b6cc55fd6 version number update
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17371 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-24 18:15:16 +00:00
Robin Dunn
33ed3832af Some tweaks for wxTimeCtrl for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17370 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-24 18:09:21 +00:00
Robin Dunn
28825fa22a wxTimeCtrl updates from Will Sadkin
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17369 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-24 17:57:49 +00:00
Robin Dunn
b5177a3fe4 Removed duplicate
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17368 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-24 14:48:55 +00:00
Julian Smart
6d49dd8f05 Made the version conflict error message a bit more helpful
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17367 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-24 13:40:18 +00:00
Julian Smart
938bafd72a Set integers to 0, not NULL to remove warning.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17366 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-24 09:29:31 +00:00
Robin Dunn
d0c7b7d2b7 If being asked to Add or Insert zero items just do nothing and return
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17365 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-24 00:35:08 +00:00
Robin Dunn
d9a149b1cc Show some new grid features
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17364 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 21:54:10 +00:00
Robin Dunn
22d9535cee Playing with dialog styles
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17363 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 21:38:59 +00:00
Robin Dunn
e9b885213e Test case for matching GetInsertionPoint and etc. with actual text positions
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17362 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 21:38:37 +00:00
Robin Dunn
17a6d5c37b Incremented version number
Some distrib tweaks


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17361 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 21:37:48 +00:00
Julian Smart
76a3435748 No change on griddemo
Added lwn to publicity doc


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17360 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 21:18:45 +00:00
Robin Dunn
f3cfdd41c8 Don't install wxWindows until the %install step, use --inplace to
facilitate this.

Change the name of the -devel package since it doesn't care about the
python version like the main pacakges do.

Instead of using directory names and wildcards in the %files section
generate an explicit file list with an %attr on each line.  This is
because the %defattr was not completly working for some reason.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17359 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 20:31:24 +00:00
Robin Dunn
1df7d9c158 Added a --inplace flag to wx-config which will assume that it is
executing from the build directory and will then output -I and -L
flags to use the build directory copies of things.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17358 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 20:28:10 +00:00
Vadim Zeitlin
6f793e7d30 simply added a wxLogTrace for debugging
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17357 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 15:26:27 +00:00
Vadim Zeitlin
4a39ae8916 fixed the bug which resulted in the focus being stolen from the panel child even if it had been explicitly set to it
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17356 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 15:25:55 +00:00
Vadim Zeitlin
ecc4fd1e37 SetFilterIndex() is not only for MSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17355 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 14:56:22 +00:00
Vadim Zeitlin
a26c4b2ee7 fixed SetFilterIndex() which was broken by the recent changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17354 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 14:55:55 +00:00
Vadim Zeitlin
07b3c46cb6 added wxFileDialog::SetfilterIndex() test
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17353 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 14:54:50 +00:00
Chris Elliott
27579129e9 just made maxpath a bit shorter
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17352 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 12:15:48 +00:00
Julian Smart
d7561efabf DeleteRows 1st arg is not number of rows
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17351 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-23 09:27:10 +00:00
Vadim Zeitlin
04ffef0afc don't try to process LVN_ITEMCHANGED events with iItem == -1 (this is always the case for virtual list controls and results in error messages)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17350 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 22:12:46 +00:00
Vadim Zeitlin
61c2fbda5b fix after renaming wxListBox::CreateItem() to CreateLboxItem()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17349 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 21:45:17 +00:00
Vadim Zeitlin
34a8dbd28e renamed wxListBox::CreateItem() to CreateLboxItem() to aviod conflict with wxWindow method
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17348 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 21:02:00 +00:00
Vadim Zeitlin
c1094350b3 made wxFont::GetResourceHandle() const as well
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17347 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 20:58:43 +00:00
Vadim Zeitlin
44314d0d50 removed (unimplemented) wxBitmapCheckBox (fixes another part of bug 612658)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17346 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 20:56:25 +00:00
Julian Smart
d4aeebb808 Added wxX11 distribution script
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17345 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 19:07:03 +00:00
Václav Slavík
0357e1513d sanitized library names in contrib hierarchy
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17344 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 15:08:16 +00:00
Vadim Zeitlin
4bfedab037 added missing _T()s; deTABified
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17340 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 14:53:45 +00:00
Julian Smart
556469d8ba Fixed bug [ 413614 ] native wxDragImage w/o mask is broken
by adding ILC_MASK even when there's no mask.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17339 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 14:32:23 +00:00
Julian Smart
91bbbdf8a6 Fixed bug [ 495532 ] wxFileDialog limits multiple file load
"The wxMAXPATH constant prevents the loading of
multiple file names in a multiple selection dialog
when selecting a large number of files.

The number of selected files can easily exceed the
memory allocated to store the selected file names and
paths."

I'm increasing the buffer size to 65536 which should be adequate
for most purposes. There's apparently no way to work around the
fixed buffer size. -- JACS


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17338 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 11:36:52 +00:00
Mattia Barbon
7242785858 Fixed wxRadioBox for Lesstif when compiled to emulate Motif 1.2
(as in Debian 3.0).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17337 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-22 08:46:08 +00:00
Vadim Zeitlin
833adb3bb1 made GetResourceHandle() const everywhere, not just in wxBrush (fixes first part of the bug 612658)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17336 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 23:01:25 +00:00
Vadim Zeitlin
e2531c0c29 removed mdig.cpp (??) from msw/files.lst as well
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17335 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 21:59:53 +00:00
Mattia Barbon
490317bb9f Before this change wxComboBox was unconditionally white, which looked
very ugly. Now the textcontrol and popup background are unconditionally
white, while the rest has parent's background color. I think it
looks better now...


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17334 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:53:58 +00:00
Stefan Csomor
4df9aff134 added new command ids
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17333 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:52:34 +00:00
Stefan Csomor
8ffb0bb9f0 added forcing for bitmap types
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17332 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:51:00 +00:00
Stefan Csomor
7143fe6b26 switched menu handling to command ids
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17331 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:49:35 +00:00
Vadim Zeitlin
c6ec726bd8 fixed some warnings about assigning literal strings to char *
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17330 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:42:40 +00:00
Vadim Zeitlin
ad2e39c11d made ProvideBackground() const
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17329 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:38:05 +00:00
Vadim Zeitlin
a34d639546 really override IsCanvasWindow() in wxPanel (this wasn't the case because of a missing const before)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17328 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:32:53 +00:00
Vadim Zeitlin
1b3947754a fix warning about hiding virtual Select()
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17327 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:31:32 +00:00
Vadim Zeitlin
f637c8e680 compilation fix: removed trailing comma in enum
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17326 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:27:57 +00:00
Vadim Zeitlin
9551c623db removed C++ comment
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17325 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 20:25:56 +00:00
Julian Smart
59a6c6e6c9 Added Makefile.in for Windows samples, so we can build
them using MinGW


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17324 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 17:20:52 +00:00
Stefan Csomor
9ad7df7d60 corrected var overflow under classic
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17323 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 16:26:05 +00:00
Stefan Csomor
c175803628 corrected typos
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17322 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 16:21:15 +00:00
Mattia Barbon
64e8d107f0 Applied Motif patches from Ian Brown
[ 609894 ] motif staticbox improvement
[ 611042 ] fix for motif crash

Everything looks fine with Lesstif from Debian 3.0 (emulated
Motif version is 1.2).


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17321 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 16:20:49 +00:00
Mattia Barbon
93add80831 GCC 3.2 is really picky about friends & dllexport.
Now wxWindows compiles (again) as DLL with MinGW GCC 3.2


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17320 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 16:16:57 +00:00
Julian Smart
b2162f4c83 Fixed bug [ 597643 ] SashWindow-borders cause sticky arrow
Needed an OnSetCursor as per splitter window, for MSW only.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17319 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 14:16:24 +00:00
Václav Slavík
69c18e92a0 fixed stupid bug in my previous check in
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17318 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 13:53:53 +00:00
Ron Lee
63b53115ce Ok, so the patch looks huge, but it's really not that scary.
Most of it is just reformatting to our coding standard to
make debugging possible in the first place.  The (finally)
significant change is in DeleteSubGroup where we now check
correctly for deleting the last group from the root.
Prior to this it was impossible without a crash or worse.
Since it was such a pig to track down, I've left the LogTrace
code in place for now too.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17317 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 12:20:47 +00:00
Vadim Zeitlin
f14f5c6740 don't set Alt/Ctrl modifiers for the AltGr char events
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17316 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 11:44:49 +00:00
Vadim Zeitlin
3f4d464b9b fixed operator++() for wxRegioIterator in wxGTK too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17315 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 10:38:36 +00:00
Stefan Neis
b8595cfb2a Fixed bug introduced in v 1.8 by changed parameter list of SelectBlock, but
mostly hidden by default values of new parameters.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17314 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 01:49:20 +00:00
Stefan Neis
d2121dd382 Fixed yet another part of the typo fixed in 1.232.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17313 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 00:26:08 +00:00
Stefan Neis
e19f4ed3fa Added some sanity checks for empty grids.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17312 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 00:07:20 +00:00
Stefan Neis
07cbd27aaa Fix in wxArrayString::Grow to also handle situation where array is not yet
full but the nIncrement is greater than the space left.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17311 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-21 00:01:26 +00:00
Vadim Zeitlin
6d9a4c4d6f 1. fixed bug in wxRegion::Combine() which was modifying all shared regions,
not just the given one
2. added wxRegionIterator copy ctor and assignment operator
3. fixed wxRegionIterator::operators++() to do what they say
4. generic code cleanup


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17310 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 23:36:23 +00:00
Vadim Zeitlin
b254accad1 base class must have virtual dtors and wxMBConv is no exception
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17309 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 23:01:58 +00:00
Vadim Zeitlin
302adc47d6 use _tcsdup() for compilers with TCHAR support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17308 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 23:00:32 +00:00
Vadim Zeitlin
93fe555876 no changes, really
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17307 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 23:00:08 +00:00
Robin Dunn
9441da1902 Fix in <array>::Grow for when the array is not yet full but the
nIncrement is greater than the space left.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17306 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 21:39:59 +00:00
Robin Dunn
fa0e662ad9 typo fix for the branch too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17305 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 21:38:57 +00:00
Robert Roebling
2bcf7f2fed Added ugly hack for pda's message and
other common dialogs.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17304 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 21:07:22 +00:00
Robert Roebling
7e9dfde99b Fix typo.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17303 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 21:06:47 +00:00
Stefan Csomor
65653bad15 switched hide and show calls to using transition window calls, this supports animation and sound support
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17302 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 19:16:56 +00:00
Stefan Csomor
a14865055c changed resize code to reflect minimum and maximum sizes already when dragging the size rectangle
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17301 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 19:15:16 +00:00
Robin Dunn
63684edb71 Fixed some of the cleanup commands
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17300 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 17:33:03 +00:00
Vadim Zeitlin
a19f8994da apparently MipsPRO compiler needs -KPIC and not -fPIC for the shared libraries creation
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17298 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 13:28:33 +00:00
Vadim Zeitlin
fda7f3a124 compilation fix: missing forward decl for wxTextCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17297 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 12:57:31 +00:00
Vadim Zeitlin
fe25fb0c68 (blind) fixes for building shared libraries under AIX with gcc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17296 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 12:53:45 +00:00
Julian Smart
536d412453 Applied fix for [ 439207 ] Monochrome PNG images come up black
Joel Tesler (jtesler)

A monochrome black and white PNG image comes up all
black. This is referring to a single bit greyscale
pixmap, not a one bit palette pxiamp.

The easiest way to reproduce is to grab
http://www.schaik.com/pngsuite/basn0g01.png and go
into the image sample, and replace horse.png with
this file.

The following patch appears to fix the problem.
However, I do not know what other side effects it
might have.

--- imagpng.cpp~ Fri Jul 6 14:53:33 2001
+++ imagpng.cpp Fri Jul 6 15:17:06 2001
@@ -140,6 +140,8 @@

if (color_type == PNG_COLOR_TYPE_PALETTE)
png_set_expand( png_ptr );
+ if (bit_depth < 8)
+ png_set_expand( png_ptr );

png_set_strip_16( png_ptr );
png_set_packing( png_ptr );


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17295 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 08:53:30 +00:00
Julian Smart
4849c8132b Fixed [ 548055 ] Bug in wxToolBarSimple::Realize()
Cédric RICARD

There is an inversion in wxToolBarSimple::Realize():

The current code is :
if ( GetWindowStyleFlag() & wxTB_HORIZONTAL )
m_maxWidth += maxToolWidth;
else
m_maxHeight += maxToolHeight;

I think it should be :
if ( GetWindowStyleFlag() & wxTB_HORIZONTAL )
m_maxHeight += maxToolHeight;
else
m_maxWidth += maxToolWidth;


Just take an example to see the bug, and have a look
to the rest of the function :

If you create an horizontal tool bar with only 3
tools of 16 pixels length each, when you reach this
code, m_maxWidth is equal to 3*16 pixels. So it have
the good width. You needn't to add other 16 pixels.
But m_maxHeight is equal to 0 ! So you have to take
care of the line you have just created...

This is very logical. In an horizontal tool bar,
m_maxWidth is increased after each new tool. But
m_maxHeight is only increased when an entire line is
finished, or when the last tool is added to take care
of the last line.

And at last, I think you should add a :

SetSize(m_maxWidth, m_maxHeight);

after the previous code. Just try the ToolBar sample
code. It only works if I do that...




git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17294 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 08:21:00 +00:00
Ron Lee
ddbbd35e11 update python version dependency.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17293 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 01:37:43 +00:00
Vadim Zeitlin
326330ac79 don't crash when recreating notebook under wxGTK (bug 571853)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17292 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-20 00:11:49 +00:00
Ron Lee
69cb65e162 bumped version to 2.3.3.1
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17291 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 23:31:22 +00:00
Ron Lee
63d063a1db Persist without manpages, the cure is worse than the affliction.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17290 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 23:25:30 +00:00
Václav Slavík
c0d4a6b3c1 fix for filenames extraction for wxBitmapButton
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17289 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 22:39:25 +00:00
Vadim Zeitlin
2304dc6eaa mention that multiple selection events are not sent to the virtual list controls
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17288 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 21:49:16 +00:00
Vadim Zeitlin
ead7e5c1bf force controls with wxTE_RICH2 style to scroll to the end in AppendText() (fixes bug 564526)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17287 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 20:40:50 +00:00
Robert Roebling
db74b98be8 Added work around for compilation prob in
utilscmns. The whole mess should be
    removed.
  Not sure what I changed in fontmap.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17286 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 20:28:57 +00:00
Robert Roebling
663e452b5e Implement screen size testing (wxSystemSettings) under X11.
Add a hack for the incorrect XDrawLine() call in Xipaq.
  Minor fixes.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17285 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 20:26:11 +00:00
Robert Roebling
2c08b4c50e Actually implement setting_screen size since
we are writing code for it.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17284 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 20:24:29 +00:00
Robert Roebling
73c6d13263 CreateButtonSizer in wxDialog will craete
a PDA size adapted button sizer now.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17283 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 20:23:08 +00:00
Robert Roebling
a44c9d41d7 Adapt wxFileDialog and wxMessageDialog for PDAs.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17282 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 20:22:13 +00:00
Robert Roebling
5ec87fd62f Use renderer for wxListCtrl's header in wxUniversal.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17281 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 20:21:33 +00:00
Vadim Zeitlin
72d490511c use full 32 bit range when dragging a scrollbar (fixes bug 414986)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17280 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 20:07:13 +00:00
Mattia Barbon
8f37ed893c Fix wxListEvent::GetLabel
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17279 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 20:06:20 +00:00
Vadim Zeitlin
1cb08da2e2 define ZEXPORT as empty if the system zlib.h doesn't define it (fixes bug 583681)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17278 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 19:46:57 +00:00
Vadim Zeitlin
51e247cc98 don't allow TABbing away from the list control while the label is being edited (fixes bug 555749)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17277 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 19:42:45 +00:00
Julian Smart
8f5617e6ff Use System DDE topic for wxExecute if no topic found
Try Execute first, then Request


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17276 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 18:23:34 +00:00
Vadim Zeitlin
91916eeab9 more checks to avoid asserts (wxID_PRINT tool might not exist); added _T() around strings
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17275 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 11:54:18 +00:00
Vadim Zeitlin
164d6a95e6 remove the old buttons in Realize() before inserting the new ones in text only mode too
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17274 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 11:53:21 +00:00
Vadim Zeitlin
20b7206cb2 removed unused MSWWindowProc() (so that nobody is tempted to put it back)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17273 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 11:16:14 +00:00
Robin Dunn
79aa7172fb More tweaks for wxTimeCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17270 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 06:10:53 +00:00
Robin Dunn
197daf705d Fixed default size of wxTimeCtrl
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17269 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 05:52:24 +00:00
Robin Dunn
6056c203bd Added missing !
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17268 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 05:31:00 +00:00
Robin Dunn
460ad82472 Added wxTimeCtrl from Will Sadkin.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17267 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 05:13:00 +00:00
Robin Dunn
4547ef2757 SWIGged updates for wxMac
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17266 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 04:27:57 +00:00
Ron Lee
76d321e2d1 oops, add the section extentions.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17265 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 01:41:30 +00:00
Ron Lee
d36d6728e1 link undocumented man page to undocumented binaries.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17264 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-19 00:33:08 +00:00
Václav Slavík
3ec9ba300d added wxID_CLOSE_ALL to XRC (SF patch)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17263 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 23:03:13 +00:00
Robin Dunn
0459ba31a6 Updated build instructions and etc.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17262 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 22:45:04 +00:00
Robin Dunn
e6c9b3243c Set wxPython version number
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17261 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 21:35:55 +00:00
Robin Dunn
2d2fb2f198 SWIGged update for wxGTK
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17260 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 20:44:35 +00:00
Robin Dunn
88becfa938 SWIGged update for wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17259 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 20:40:50 +00:00
Robin Dunn
8de8e59e06 Added wxMenuBar::IsEnabledTop
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17258 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 20:39:41 +00:00
Robin Dunn
5fb99fe76f Allow the developer to choose if SetUseBestVisual is called
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17257 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 20:39:08 +00:00
Robin Dunn
1176111c0d A patch for wxListCtrlAutoWidthMixin from anthony@computronix.com
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17256 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 20:35:36 +00:00
Robin Dunn
02b2d73690 Removed #! from scripts that no longer need to be directly executable
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17255 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 20:30:25 +00:00
Mattia Barbon
c3f482c546 Fix wxListEvent::GetData
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17254 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 19:57:53 +00:00
Robin Dunn
39b68c98df Last checkin was a mistake, undo some debugging code...
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17253 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 18:48:19 +00:00
Robin Dunn
702fe1fccf Delete the selection before inserting text in WriteText. Also, fix
bug in repositioning of the caret after the insertion.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17252 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 18:47:39 +00:00
Robin Dunn
8c2d31e9f3 Delete the selection before inserting text in WriteText. Also, fix
bug in repositioning of the caret after the insertion.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17251 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 18:38:10 +00:00
Robin Dunn
22589ec364 WriteText test case
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17250 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 17:48:54 +00:00
Robin Dunn
ad28a8de8b SetSelection(-1, -1) now selects the entire string as on wxMSW
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17249 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 17:15:40 +00:00
Vadim Zeitlin
639cee3157 define OF() if not defined in the system headers, should help when using the system zlib version
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17248 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 15:39:28 +00:00
Vadim Zeitlin
32742e5755 corrected outdated Unicode information
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17247 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 14:48:56 +00:00
Vadim Zeitlin
2a32fcda98 include afxwin.h #if wxUSE_MFC to get windows.h in this case as well; minor formatting fixes and one char -> wxChar change
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17246 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 14:09:15 +00:00
Vadim Zeitlin
66eea1c2c4 added a note that the tech note is obsolete for wxWin 2.3+
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17245 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-18 12:59:23 +00:00
Vadim Zeitlin
fa4e86eee7 added console makefile for Borland
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17243 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 23:24:39 +00:00
Ron Lee
5a52b2251a Put wxBase files.lst back into debian-dist.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17242 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 21:30:37 +00:00
Václav Slavík
69e9c9b2de added wxMAX/MINIMIZE_BOX to wxDialog XRC handler
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17241 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 19:14:38 +00:00
David Webster
9edd8e7d41 OS/2 changes made in main trunk that didn't make it in time for the branch
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17240 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 18:49:35 +00:00
David Webster
363f292868 OS/2 change to generic mdi didn't quite make it in time for the branching.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17239 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 15:39:45 +00:00
David Webster
465b35f3ca GetTitle needs to be a const method.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17238 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 15:31:18 +00:00
Vadim Zeitlin
5a23b3de1d mention OpenBSD and /usr/include fixes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17237 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 15:29:55 +00:00
Vadim Zeitlin
27c6aa1349 always look in /usr/include for headers but never add it to CPPFLAGS; same for /usr/lib
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17236 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 15:20:44 +00:00
Vadim Zeitlin
c4c97ccbd6 reremoved /usr/include from SEARCH_INCLUDE
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17235 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 15:20:08 +00:00
Stefan Csomor
bf99a7849d made MacSetupCursor virtual in order to allow wxTextCtrl to use MLTE native cursor handling
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17234 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 14:27:56 +00:00
Vadim Zeitlin
77d95b6731 exclude -I/usr/local/include from cppflags only when using gcc
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17233 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 14:10:04 +00:00
Vadim Zeitlin
438a907d06 added AC_SUBST(GCC)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17232 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 14:08:44 +00:00
Vadim Zeitlin
802c95f5b7 more printf() format warnings fixed
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17231 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 13:41:49 +00:00
David Webster
8a5750ee11 Latest TODO file. Not to be confused with files.lst, the configure file.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17230 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 12:48:21 +00:00
Vadim Zeitlin
1c911c5ef2 added __OPENBSD__ which was defined in configure but missing here before
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17229 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 12:30:28 +00:00
Vadim Zeitlin
adad970da3 define __{OPEN/NET}BSD__ + __BSD__ for Open/NetBSD, dont define __FREEBSD__ for them
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17228 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 12:29:24 +00:00
Vadim Zeitlin
b299c11105 test for __BSD__, not only __FREEBSD__ in ping(1) options determination code
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17227 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 12:28:09 +00:00
Vadim Zeitlin
f0e2ef329d workaround for bug in OpenBSD headers
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17226 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 12:24:33 +00:00
Vadim Zeitlin
d55a4efc0f don't use the bitmaps in toolbars with wxTB_NOICONS style
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17225 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 10:40:23 +00:00
Chris Elliott
ae6db164e2 borland make update for wxbase
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17224 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 07:49:59 +00:00
Chris Elliott
2a44fbe1a4 borland makefile for console sample
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17223 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 07:38:26 +00:00
Robin Dunn
5c649b815c Fix for wxPyInputStream, m_lastRead was getting incremented twice.
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17222 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 01:44:24 +00:00
Robin Dunn
965079dde9 Provide implementation for GetTopItem
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17221 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 01:05:56 +00:00
Robin Dunn
00924b9de2 Avoid an assert in wxComboBox when setting default values that don't
exist in the list of choices.


git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17220 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 00:46:37 +00:00
Robin Dunn
e3bd1146c7 Some last minue wxPython changes
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17219 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-17 00:27:21 +00:00
Vadim Zeitlin
d2da899a2e updated/fixed for 2.3.3 release
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17213 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-15 23:51:34 +00:00
Vadim Zeitlin
ddb8d0503e console apps need shell32.lib now too (because of wxVolume)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17212 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-15 23:51:00 +00:00
Vadim Zeitlin
0f48627c76 link to wxbase233.dll, not 232; and also link to shell32.lib
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17211 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-15 23:50:31 +00:00
Vadim Zeitlin
b883a5da0c unicode compilation fix
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17210 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-15 23:50:03 +00:00
Vadim Zeitlin
73f6b0b14e Fit() is called FitToPage() in reality
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17209 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-15 23:49:38 +00:00
Vadim Zeitlin
514d2dbb87 compile the C files using C compiler, not C++ one, otherwise the sample doesn't link
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17208 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-15 20:16:46 +00:00
Bryan Petty
e138d10b74 This commit was manufactured by cvs2svn to create branch
'WX_2_4_BRANCH'.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/branches/WX_2_4_BRANCH@17207 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
2002-09-15 20:16:46 +00:00
79 changed files with 1 additions and 38896 deletions

View File

@@ -1,4 +0,0 @@
tiffM*Data
tiffM5.mcp
Debug
Release

View File

@@ -1,21 +0,0 @@
Copyright (c) 1988-1997 Sam Leffler
Copyright (c) 1991-1997 Silicon Graphics, Inc.
Permission to use, copy, modify, distribute, and sell this software and
its documentation for any purpose is hereby granted without fee, provided
that (i) the above copyright notices and this permission notice appear in
all copies of the software and related documentation, and (ii) the names of
Sam Leffler and Silicon Graphics may not be used in any advertising or
publicity relating to the software without the specific, prior written
permission of Sam Leffler and Silicon Graphics.
THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THIS SOFTWARE.

View File

@@ -1,229 +0,0 @@
#
# File: makefile.vc
# Author: David Webster
# Created: 2000
# Updated:
# Copyright: c) 2000, BHM
#
# "%W% %G%"
#
# Makefile : Builds os2tiff.lib library for OS/2 3.0/4.0
# Suffixes
OBJSUFF=obj
SRCSUFF=cpp
OS2FLAGS=/c /W2 /DOS232 /D__VISAGECPP__ /D__VISAGECPP30__ /DOS2_32 /Tdc /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)
OS2TIFFDIR=$(WXDIR)\src\tiff
OS2TIFFINC=$(WINTIFFDIR)
OS2TIFFLIB=$(WXDIR)\lib\os2tiff.lib
!if "$(WXMAKINGDLL)" != "1"
OS2TIFFLIB=$(WXDIR)\lib\os2tiff.lib
!else
OS2TIFFLIB=$(WXDIR)\lib\os2tiff.dll
!endif
INC=-I$(WXDIR)\src\TIFF -I$(OS2TIFFINC)
!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 $(OS2TIFFDIR)\$D]
!endif
CPPFLAGS=$(OS2FLAGS) $(EXTRADLLFLAGS) $(DEBUG_FLAGS) $(PRECOMP) $(INC) $(OPT) $(CRTFLAG)
LINKFKAGS=$(OS2LINKFLAGS) $(EXTRALNKFLAGS)
{..\tiff}.c{..\tiff\$D}.obj:
@echo $<
icc @<<
$(CPPFLAGS) /Fo$@ /Tp $<
<<
OBJECTS = \
..\tiff\$D\tif_aux.obj \
..\tiff\$D\tif_close.obj \
..\tiff\$D\tif_codec.obj \
..\tiff\$D\tif_compress.obj \
..\tiff\$D\tif_dir.obj \
..\tiff\$D\tif_dirinfo.obj \
..\tiff\$D\tif_dirread.obj \
..\tiff\$D\tif_dirwrite.obj \
..\tiff\$D\tif_dumpmode.obj \
..\tiff\$D\tif_error.obj \
..\tiff\$D\tif_fax3.obj \
..\tiff\$D\tif_fax3sm.obj \
..\tiff\$D\tif_flush.obj \
..\tiff\$D\tif_getimage.obj \
..\tiff\$D\tif_jpeg.obj \
..\tiff\$D\tif_luv.obj \
..\tiff\$D\tif_lzw.obj \
..\tiff\$D\tif_next.obj \
..\tiff\$D\tif_open.obj \
..\tiff\$D\tif_os2.obj \
..\tiff\$D\tif_packbits.obj \
..\tiff\$D\tif_pixarlog.obj \
..\tiff\$D\tif_predict.obj \
..\tiff\$D\tif_print.obj \
..\tiff\$D\tif_read.obj \
..\tiff\$D\tif_strip.obj \
..\tiff\$D\tif_swab.obj \
..\tiff\$D\tif_thunder.obj \
..\tiff\$D\tif_tile.obj \
..\tiff\$D\tif_version.obj \
..\tiff\$D\tif_warning.obj \
..\tiff\$D\tif_write.obj \
..\tiff\$D\tif_zip.obj
LIBOBJECTS = \
tif_aux.obj \
tif_close.obj \
tif_codec.obj \
tif_compress.obj \
tif_dir.obj \
tif_dirinfo.obj \
tif_dirread.obj \
tif_dirwrite.obj \
tif_dumpmode.obj \
tif_error.obj \
tif_fax3.obj \
tif_fax3sm.obj \
tif_flush.obj \
tif_getimage.obj \
tif_jpeg.obj \
tif_luv.obj \
tif_lzw.obj \
tif_next.obj \
tif_open.obj \
tif_os2.obj \
tif_packbits.obj \
tif_pixarlog.obj \
tif_predict.obj \
tif_print.obj \
tif_read.obj \
tif_strip.obj \
tif_swab.obj \
tif_thunder.obj \
tif_tile.obj \
tif_version.obj \
tif_warning.obj \
tif_write.obj \
tif_zip.obj
all: $(OBJECTS) $(OS2TIFFLIB)
!if "$(WXMAKINGDLL)" != "1"
$(WXDIR)\lib\os2tiff.lib: $(LIBOBJECTS)
touch $(WXDIR)\lib\os2tiff.lib
del $(WXDIR)\lib\os2tiff.lib
ilib $(OS2LIBFLAGS) $@ @<<
$**;
<<
del *.obj
!else
# Update the dynamic link library
$(WXDIR)\lib\os2tiff.dll: $(OBJECTS)
icc @<<
/B" $(LINKFLAGS)" /Fe$@
$(LIBS)
$(OBJECTS)
$(WXDIR)\src\os2\os2tiff.def
<<
implib $(WXDIR)\lib\os2tiffd.lib $(WXDIR)\src\os2\os2tiff.def
!endif
clean:
del $(OS2TIFFLIB)
erase /N $(OS2TIFFDIR)\$D
rd $(OS2TIFFDIR)\$D
cleanall: clean
$(LIBOBJECTS):
copy ..\tiff\$D\tif_aux.obj
copy ..\tiff\$D\tif_close.obj
copy ..\tiff\$D\tif_codec.obj
copy ..\tiff\$D\tif_compress.obj
copy ..\tiff\$D\tif_dir.obj
copy ..\tiff\$D\tif_dirinfo.obj
copy ..\tiff\$D\tif_dirread.obj
copy ..\tiff\$D\tif_dirwrite.obj
copy ..\tiff\$D\tif_dumpmode.obj
copy ..\tiff\$D\tif_error.obj
copy ..\tiff\$D\tif_fax3.obj
copy ..\tiff\$D\tif_fax3sm.obj
copy ..\tiff\$D\tif_flush.obj
copy ..\tiff\$D\tif_getimage.obj
copy ..\tiff\$D\tif_jpeg.obj
copy ..\tiff\$D\tif_luv.obj
copy ..\tiff\$D\tif_lzw.obj
copy ..\tiff\$D\tif_next.obj
copy ..\tiff\$D\tif_open.obj
copy ..\tiff\$D\tif_os2.obj
copy ..\tiff\$D\tif_packbits.obj
copy ..\tiff\$D\tif_pixarlog.obj
copy ..\tiff\$D\tif_predict.obj
copy ..\tiff\$D\tif_print.obj
copy ..\tiff\$D\tif_read.obj
copy ..\tiff\$D\tif_strip.obj
copy ..\tiff\$D\tif_swab.obj
copy ..\tiff\$D\tif_thunder.obj
copy ..\tiff\$D\tif_tile.obj
copy ..\tiff\$D\tif_version.obj
copy ..\tiff\$D\tif_warning.obj
copy ..\tiff\$D\tif_write.obj
copy ..\tiff\$D\tif_zip.obj

View File

@@ -1,129 +0,0 @@
# $Header$
#
# Tag Image File Format Library
#
# Copyright (c) 1988-1997 Sam Leffler
# Copyright (c) 1991-1997 Silicon Graphics, Inc.
#
# Permission to use, copy, modify, distribute, and sell this software and
# its documentation for any purpose is hereby granted without fee, provided
# that (i) the above copyright notices and this permission notice appear in
# all copies of the software and related documentation, and (ii) the names of
# Sam Leffler and Silicon Graphics may not be used in any advertising or
# publicity relating to the software without the specific, prior written
# permission of Stanford and Silicon Graphics.
#
# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
#
# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
# OF THIS SOFTWARE.
#
DESTDIR=.
#
INSTALL=install
NULL=
IPATH= -I. -I../jpeg
CONF_LIBRARY=\
${NULL}
COPTS= -Oloop -cwagshf -d1 -b0 -v -DNDEBUG -rr -j135i
CFLAGS= ${COPTS} ${IPATH} ${CONF_LIBRARY}
#
INCS= tiff.h tiffio.h
SRCS= tif_fax3.c \
tif_fax4.c \
tif_aux.c \
tif_atari.c \
tif_ccittrle.c \
tif_close.c \
tif_compress.c \
tif_dir.c \
tif_dirinfo.c \
tif_dirread.c \
tif_dirwrite.c \
tif_dumpmode.c \
tif_error.c \
tif_getimage.c \
tif_jpeg.c \
tif_flush.c \
tif_lzw.c \
tif_next.c \
tif_open.c \
tif_packbits.c \
tif_print.c \
tif_read.c \
tif_swab.c \
tif_strip.c \
tif_thunder.c \
tif_tile.c \
tif_version.c \
tif_warning.c \
tif_write.c \
${NULL}
OBJS= tif_fax3.o \
tif_fax4.o \
tif_aux.o \
tif_atari.o \
tif_ccittrle.o \
tif_close.o \
tif_compress.o \
tif_dir.o \
tif_dirinfo.o \
tif_dirread.o \
tif_dirwrite.o \
tif_dumpmode.o \
tif_error.o \
tif_getimage.o \
tif_jpeg.o \
tif_flush.o \
tif_lzw.o \
tif_next.o \
tif_open.o \
tif_packbits.o \
tif_print.o \
tif_read.o \
tif_swab.o \
tif_strip.o \
tif_thunder.o \
tif_tile.o \
tif_version.o \
tif_warning.o \
tif_write.o \
${NULL}
ALL= tiffrnb.lib
all: ${ALL}
${ALL}: ${OBJS}
${AR} ${ARFLAGS} $@ r $<
${OBJS}: tiffio.h tiff.h tiffcomp.h tiffiop.h tiffconf.h
tif_fax3.o: tif_fax3.c g3states.h t4.h tif_fax3.h
g3states.h: mkg3states.c t4.h
${CC} -o mkg3states.ttp ${CFLAGS} mkg3states.c
./mkg3states -c > g3states.h
install: all installh
-for i in ${ALL}; do \
${INSTALL} -c -m 644 $$i ${DESTDIR}/lib/$$i; \
done
installh: ${INCS}
-for i in ${INCS}; do \
h=`basename $$i`; \
cmp -s $$i ${DESTDIR}/include/$$h || \
${INSTALL} -c -m 444 $$i ${DESTDIR}/include/$$h; \
done
clean:
rm -f ${ALL} ${OBJS} mkg3states.ttp mkg3states.o g3states.h
tags: ${SRCS}
${CTAGS} ${SRCS}

View File

@@ -1,61 +0,0 @@
$Header$
TIFF Software Distribution
--------------------------
This file is just a placeholder; all the documentation is now in
HTML in the html directory. To view the documentation point your
favorite WWW viewer at html/index.html; e.g.
netscape html/index.html
If you don't have an HTML viewer then you can read the HTML source
or fetch a PostScript version of this documentation from the directory
ftp://ftp.sgi.com/graphics/tiff/doc
If you can't hack either of these options then basically what you
want to do is:
% ./configure
% make
% su
# make install
If that doesn't do what you want, or something isn't clear then
sorry, but you're SOL.
Sam Leffler (sam@engr.sgi.com)
Use and Copyright
-----------------
Silicon Graphics has seen fit to allow me to give this work away. It
is free. There is no support or guarantee of any sort as to its
operations, correctness, or whatever. If you do anything useful with
all or parts of it you need to honor the copyright notices. I would
also be interested in knowing about it and, hopefully, be acknowledged.
The legal way of saying that is:
Copyright (c) 1988-1997 Sam Leffler
Copyright (c) 1991-1997 Silicon Graphics, Inc.
Permission to use, copy, modify, distribute, and sell this software and
its documentation for any purpose is hereby granted without fee, provided
that (i) the above copyright notices and this permission notice appear in
all copies of the software and related documentation, and (ii) the names of
Sam Leffler and Silicon Graphics may not be used in any advertising or
publicity relating to the software without the specific, prior written
permission of Sam Leffler and Silicon Graphics.
THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
OF THIS SOFTWARE.

View File

@@ -1,7 +0,0 @@
# $Header$
o tiffcmp read data by strip/tile instead of scanline
o YCbCr sampling support
o extracate colorspace conversion support
o look at isolating all codecs from TIFF library
o JPEG colormode order dependency problem

View File

@@ -1 +0,0 @@
3.6.1-2

File diff suppressed because it is too large Load Diff

View File

@@ -1,102 +0,0 @@
LIBRARY libtiff
EXPORTS TIFFOpen
TIFFGetVersion
TIFFClose
TIFFFlush
TIFFFlushData
TIFFGetField
TIFFVGetField
TIFFGetFieldDefaulted
TIFFVGetFieldDefaulted
TIFFGetTagListEntry
TIFFGetTagListCount
TIFFReadDirectory
TIFFScanlineSize
TIFFStripSize
TIFFVStripSize
TIFFRawStripSize
TIFFTileRowSize
TIFFTileSize
TIFFVTileSize
TIFFFileno
TIFFGetMode
TIFFIsTiled
TIFFIsByteSwapped
TIFFCIELabToRGBInit
TIFFCIELabToXYZ
TIFFXYZToRGB
TIFFYCbCrToRGBInit
TIFFYCbCrtoRGB
TIFFCurrentRow
TIFFCurrentDirectory
TIFFCurrentStrip
TIFFCurrentTile
TIFFDataWidth
TIFFReadBufferSetup
TIFFLastDirectory
TIFFSetDirectory
TIFFSetSubDirectory
TIFFUnlinkDirectory
TIFFSetField
TIFFVSetField
TIFFCheckpointDirectory
TIFFWriteDirectory
TIFFRewriteDirectory
TIFFPrintDirectory
TIFFReadScanline
TIFFWriteScanline
TIFFReadRGBAImage
TIFFReadRGBAImageOriented
TIFFPrintDirectory
TIFFReadScanline
TIFFWriteScanline
TIFFReadRGBAImage
TIFFFdOpen
TIFFClientOpen
TIFFFileName
TIFFError
TIFFWarning
TIFFSetErrorHandler
TIFFSetWarningHandler
TIFFComputeTile
TIFFCheckTile
TIFFNumberOfTiles
TIFFReadTile
TIFFWriteTile
TIFFComputeStrip
TIFFNumberOfStrips
TIFFRGBAImageBegin
TIFFRGBAImageEnd
TIFFReadEncodedStrip
TIFFReadRawStrip
TIFFReadEncodedTile
TIFFReadRawTile
TIFFReadRGBATile
TIFFReadRGBAStrip
TIFFWriteEncodedStrip
TIFFWriteRawStrip
TIFFWriteEncodedTile
TIFFWriteRawTile
TIFFSetWriteOffset
TIFFSwabDouble
TIFFSwabShort
TIFFSwabLong
TIFFSwabArrayOfShort
TIFFSwabArrayOfLong
TIFFSwabArrayOfDouble
TIFFReverseBits
TIFFGetBitRevTable
TIFFDefaultStripSize
TIFFDefaultTileSize
TIFFRasterScanlineSize
_TIFFmalloc
_TIFFrealloc
_TIFFfree
_TIFFmemset
_TIFFmemcpy
_TIFFmemcmp
TIFFCreateDirectory
TIFFDefaultStripSize

View File

@@ -1,54 +0,0 @@
##############################################################################
# Name: src/tiff/makefile.sc
# Purpose: build tiff Digital Mars 8.33 compiler
# Author: Chris Elliott
# Created: 21.01.03
# RCS-ID: $Id$
# Licence: wxWindows licence
##############################################################################
WXDIR = ..\..
include $(WXDIR)\src\makesc.env
LIBTARGET=$(WXDIR)\lib\tiff$(SC_SUFFIX).lib
THISDIR=$(WXDIR)\src\tiff
# variables
OBJECTS = \
$(THISDIR)\tif_aux.obj \
$(THISDIR)\tif_close.obj \
$(THISDIR)\tif_codec.obj \
$(THISDIR)\tif_compress.obj \
$(THISDIR)\tif_dir.obj \
$(THISDIR)\tif_dirinfo.obj \
$(THISDIR)\tif_dirread.obj \
$(THISDIR)\tif_dirwrite.obj \
$(THISDIR)\tif_dumpmode.obj \
$(THISDIR)\tif_error.obj \
$(THISDIR)\tif_fax3.obj \
$(THISDIR)\tif_fax3sm.obj \
$(THISDIR)\tif_flush.obj \
$(THISDIR)\tif_getimage.obj \
$(THISDIR)\tif_jpeg.obj \
$(THISDIR)\tif_luv.obj \
$(THISDIR)\tif_lzw.obj \
$(THISDIR)\tif_next.obj \
$(THISDIR)\tif_open.obj \
$(THISDIR)\tif_packbits.obj \
$(THISDIR)\tif_pixarlog.obj \
$(THISDIR)\tif_predict.obj \
$(THISDIR)\tif_print.obj \
$(THISDIR)\tif_read.obj \
$(THISDIR)\tif_strip.obj \
$(THISDIR)\tif_swab.obj \
$(THISDIR)\tif_thunder.obj \
$(THISDIR)\tif_tile.obj \
$(THISDIR)\tif_version.obj \
$(THISDIR)\tif_warning.obj \
$(THISDIR)\tif_win32.obj \
$(THISDIR)\tif_write.obj \
$(THISDIR)\tif_zip.obj \
include $(WXDIR)\src\makelib.sc

View File

@@ -1,93 +0,0 @@
#
# Simple MS VC++ Makefile
#
# To build:
# C:\libtiff\libtiff> nmake /f makefile.vc all
#
#
# Select _CONSOLE to build a library which reports errors to stderr, or
# _WINDOWED to build such that errors are reported via MessageBox().
#
WINMODE = -DTIF_PLATFORM_CONSOLE
#WINMODE = -DTIF_PLATFORM_WINDOWED
# Uncomment and edit following lines to enable JPEG support
#JPEG_SUPPORT = 1
#JPEGDIR = d:/projects/jpeg-6b
CC = cl
INCL = -I.
LIBS =
EXTRAFLAGS =
!IFDEF JPEG_SUPPORT
INCL = $(INCL) -I$(JPEGDIR)
EXTRAFLAGS = $(EXTRAFLAGS) -DJPEG_SUPPORT
!ENDIF
CFLAGS = /nologo /W3 $(INCL) $(WINMODE) $(EXTRAFLAGS)
OBJ = \
tif_aux.obj \
tif_close.obj \
tif_codec.obj \
tif_color.obj \
tif_compress.obj \
tif_dir.obj \
tif_dirinfo.obj \
tif_dirread.obj \
tif_dirwrite.obj \
tif_dumpmode.obj \
tif_error.obj \
tif_extension.obj \
tif_fax3.obj \
fax3sm_winnt.obj \
tif_getimage.obj \
tif_jpeg.obj \
tif_ojpeg.obj \
tif_flush.obj \
tif_luv.obj \
tif_lzw.obj \
tif_next.obj \
tif_open.obj \
tif_packbits.obj \
tif_pixarlog.obj \
tif_predict.obj \
tif_print.obj \
tif_read.obj \
tif_swab.obj \
tif_strip.obj \
tif_thunder.obj \
tif_tile.obj \
tif_win32.obj \
tif_version.obj \
tif_warning.obj \
tif_write.obj \
tif_zip.obj
VERSION = ..\VERSION
ALPHA = ..\dist\tiff.alpha
default: libtiff.lib
all: libtiff.lib libtiff.dll
libtiff.lib: tiffvers.h $(OBJ)
lib /out:libtiff.lib $(OBJ)
libtiff.dll: $(OBJ)
link /dll /def:libtiff.def /out:libtiff.dll /implib:libtiff_i.lib \
$(OBJ) $(LIBS)
tiffvers.h: $(VERSION) mkversion.c
$(CC) mkversion.c
if exist tiffvers.h del tiffvers.h
.\mkversion.exe -v $(VERSION) tiffvers.h
clean:
del *.obj *.lib libtiff.dll
tif_version.obj: tiffvers.h

View File

@@ -1,165 +0,0 @@
#!/binb/wmake.exe
#
# File: makefile.wat
# Author: Julian Smart
# Created: 1998
# Changelist: 2003-02-25 - Juergen Ulbts - update from wxWindows 2.5.x/HEAD branch
#
# Makefile : Builds TIFF library for Watcom C++, WIN32
# This makefile has to rename files because apparently Watcom C++
# can't deal with greater than 8.3 filenames (can't
# make tif_close.c, for example)
WXDIR = ..\..
EXTRACPPFLAGS=-i=..\zlib
!include $(WXDIR)\src\makewat.env
# set RENAME to 1 to rename the files to the short names -- this is needed
# with older Watcom versions
# RENAME=1
!ifeq RENAME 1
TIFF=
EXTRACPPFLAGS+=-dwxUSE_SHORTNAMES
!else
TIFF=tif_
!endif
WXLIB = $(WXDIR)\lib
LIBTARGET = $(WXLIB)\tiff$(WATCOM_SUFFIX).lib
OBJECTS= &
!ifeq RENAME 1
$(OUTPUTDIR)\_aux.obj &
!else
$(OUTPUTDIR)\tif_aux.obj &
!endif
$(OUTPUTDIR)\$(TIFF)close.obj &
$(OUTPUTDIR)\$(TIFF)codec.obj &
$(OUTPUTDIR)\$(TIFF)compress.obj &
$(OUTPUTDIR)\$(TIFF)dir.obj &
$(OUTPUTDIR)\$(TIFF)dirinfo.obj &
$(OUTPUTDIR)\$(TIFF)dirread.obj &
$(OUTPUTDIR)\$(TIFF)dirwrite.obj &
$(OUTPUTDIR)\$(TIFF)dumpmode.obj &
$(OUTPUTDIR)\$(TIFF)error.obj &
$(OUTPUTDIR)\$(TIFF)fax3.obj &
$(OUTPUTDIR)\$(TIFF)fax3sm.obj &
$(OUTPUTDIR)\$(TIFF)flush.obj &
$(OUTPUTDIR)\$(TIFF)getimage.obj &
$(OUTPUTDIR)\$(TIFF)jpeg.obj &
$(OUTPUTDIR)\$(TIFF)luv.obj &
$(OUTPUTDIR)\$(TIFF)lzw.obj &
$(OUTPUTDIR)\$(TIFF)next.obj &
$(OUTPUTDIR)\$(TIFF)open.obj &
$(OUTPUTDIR)\$(TIFF)packbits.obj &
$(OUTPUTDIR)\$(TIFF)pixarlog.obj &
$(OUTPUTDIR)\$(TIFF)predict.obj &
$(OUTPUTDIR)\$(TIFF)print.obj &
$(OUTPUTDIR)\$(TIFF)read.obj &
$(OUTPUTDIR)\$(TIFF)strip.obj &
$(OUTPUTDIR)\$(TIFF)swab.obj &
$(OUTPUTDIR)\$(TIFF)thunder.obj &
$(OUTPUTDIR)\$(TIFF)tile.obj &
$(OUTPUTDIR)\$(TIFF)version.obj &
$(OUTPUTDIR)\$(TIFF)warning.obj &
$(OUTPUTDIR)\$(TIFF)win32.obj &
$(OUTPUTDIR)\$(TIFF)write.obj &
$(OUTPUTDIR)\$(TIFF)zip.obj
all: $(OUTPUTDIR) $(RENAME) $(LIBTARGET) .SYMBOLIC
!ifeq RENAME 1
rename: .SYMBOLIC
copy tif_predict.h tif_pred.h
copy tif_aux.c _aux.c
copy tif_close.c close.c
copy tif_codec.c codec.c
copy tif_compress.c compress.c
copy tif_dir.c dir.c
copy tif_dirinfo.c dirinfo.c
copy tif_dirread.c dirread.c
copy tif_dirwrite.c dirwrite.c
copy tif_dumpmode.c dumpmode.c
copy tif_error.c error.c
copy tif_fax3.c fax3.c
copy tif_fax3sm.c fax3sm.c
copy tif_flush.c flush.c
copy tif_getimage.c getimage.c
copy tif_jpeg.c jpeg.c
copy tif_luv.c luv.c
copy tif_lzw.c lzw.c
copy tif_next.c next.c
copy tif_open.c open.c
copy tif_packbits.c packbits.c
copy tif_pixarlog.c pixarlog.c
copy tif_predict.c predict.c
copy tif_print.c print.c
copy tif_read.c read.c
copy tif_strip.c strip.c
copy tif_swab.c swab.c
copy tif_thunder.c thunder.c
copy tif_tile.c tile.c
copy tif_version.c version.c
copy tif_warning.c warning.c
copy tif_win32.c win32.c
copy tif_write.c write.c
copy tif_zip.c zip.c
!endif
$(OUTPUTDIR):
@if not exist $^@ mkdir $^@
LBCFILE=$(OUTPUTDIR)\tiff.lbc
$(LIBTARGET) : $(OBJECTS)
%create $(LBCFILE)
@for %i in ( $(OBJECTS) ) do @%append $(LBCFILE) +%i
wlib /q /b /c /n /p=512 $^@ @$(LBCFILE)
clean: .SYMBOLIC
-erase *.obj
-erase $(LIBTARGET)
-erase *.pch
-erase *.err
-erase *.lbc
!ifeq RENAME 1
-erase tif_pred.h
-erase _aux.c
-erase close.c
-erase codec.c
-erase compress.c
-erase dir.c
-erase dirinfo.c
-erase dirread.c
-erase dirwrite.c
-erase dumpmode.c
-erase error.c
-erase fax3.c
-erase fax3sm.c
-erase flush.c
-erase getimage.c
-erase jpeg.c
-erase luv.c
-erase lzw.c
-erase next.c
-erase open.c
-erase packbits.c
-erase pixarlog.c
-erase predict.c
-erase print.c
-erase read.c
-erase strip.c
-erase swab.c
-erase thunder.c
-erase tile.c
-erase version.c
-erase warning.c
-erase win32.c
-erase write.c
-erase zip.c
!endif
cleanall: clean

Binary file not shown.

View File

@@ -1,436 +0,0 @@
/* "$Header$ */
/*
* Copyright (c) 1991-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/* Initialise fax decoder tables
* Decoder support is derived, with permission, from the code
* in Frank Cringle's viewfax program;
* Copyright (C) 1990, 1995 Frank D. Cringle.
*/
#if defined(unix) || defined(__unix)
#include "port.h"
#else
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#endif
#include "tif_fax3.h"
#define streq(a,b) (strcmp(a,b) == 0)
/* NB: can't use names in tif_fax3.h 'cuz they are declared const */
TIFFFaxTabEnt MainTable[128];
TIFFFaxTabEnt WhiteTable[4096];
TIFFFaxTabEnt BlackTable[8192];
struct proto {
uint16 code; /* right justified, lsb-first, zero filled */
uint16 val; /* (pixel count)<<4 + code width */
};
static struct proto Pass[] = {
{ 0x0008, 4 },
{ 0, 0 }
};
static struct proto Horiz[] = {
{ 0x0004, 3 },
{ 0, 0 }
};
static struct proto V0[] = {
{ 0x0001, 1 },
{ 0, 0 }
};
static struct proto VR[] = {
{ 0x0006, (1<<4)+3 },
{ 0x0030, (2<<4)+6 },
{ 0x0060, (3<<4)+7 },
{ 0, 0 }
};
static struct proto VL[] = {
{ 0x0002, (1<<4)+3 },
{ 0x0010, (2<<4)+6 },
{ 0x0020, (3<<4)+7 },
{ 0, 0 }
};
static struct proto Ext[] = {
{ 0x0040, 7 },
{ 0, 0 }
};
static struct proto EOLV[] = {
{ 0x0000, 7 },
{ 0, 0 }
};
static struct proto MakeUpW[] = {
{ 0x001b, 1029 },
{ 0x0009, 2053 },
{ 0x003a, 3078 },
{ 0x0076, 4103 },
{ 0x006c, 5128 },
{ 0x00ec, 6152 },
{ 0x0026, 7176 },
{ 0x00a6, 8200 },
{ 0x0016, 9224 },
{ 0x00e6, 10248 },
{ 0x0066, 11273 },
{ 0x0166, 12297 },
{ 0x0096, 13321 },
{ 0x0196, 14345 },
{ 0x0056, 15369 },
{ 0x0156, 16393 },
{ 0x00d6, 17417 },
{ 0x01d6, 18441 },
{ 0x0036, 19465 },
{ 0x0136, 20489 },
{ 0x00b6, 21513 },
{ 0x01b6, 22537 },
{ 0x0032, 23561 },
{ 0x0132, 24585 },
{ 0x00b2, 25609 },
{ 0x0006, 26630 },
{ 0x01b2, 27657 },
{ 0, 0 }
};
static struct proto MakeUpB[] = {
{ 0x03c0, 1034 },
{ 0x0130, 2060 },
{ 0x0930, 3084 },
{ 0x0da0, 4108 },
{ 0x0cc0, 5132 },
{ 0x02c0, 6156 },
{ 0x0ac0, 7180 },
{ 0x06c0, 8205 },
{ 0x16c0, 9229 },
{ 0x0a40, 10253 },
{ 0x1a40, 11277 },
{ 0x0640, 12301 },
{ 0x1640, 13325 },
{ 0x09c0, 14349 },
{ 0x19c0, 15373 },
{ 0x05c0, 16397 },
{ 0x15c0, 17421 },
{ 0x0dc0, 18445 },
{ 0x1dc0, 19469 },
{ 0x0940, 20493 },
{ 0x1940, 21517 },
{ 0x0540, 22541 },
{ 0x1540, 23565 },
{ 0x0b40, 24589 },
{ 0x1b40, 25613 },
{ 0x04c0, 26637 },
{ 0x14c0, 27661 },
{ 0, 0 }
};
static struct proto MakeUp[] = {
{ 0x0080, 28683 },
{ 0x0180, 29707 },
{ 0x0580, 30731 },
{ 0x0480, 31756 },
{ 0x0c80, 32780 },
{ 0x0280, 33804 },
{ 0x0a80, 34828 },
{ 0x0680, 35852 },
{ 0x0e80, 36876 },
{ 0x0380, 37900 },
{ 0x0b80, 38924 },
{ 0x0780, 39948 },
{ 0x0f80, 40972 },
{ 0, 0 }
};
static struct proto TermW[] = {
{ 0x00ac, 8 },
{ 0x0038, 22 },
{ 0x000e, 36 },
{ 0x0001, 52 },
{ 0x000d, 68 },
{ 0x0003, 84 },
{ 0x0007, 100 },
{ 0x000f, 116 },
{ 0x0019, 133 },
{ 0x0005, 149 },
{ 0x001c, 165 },
{ 0x0002, 181 },
{ 0x0004, 198 },
{ 0x0030, 214 },
{ 0x000b, 230 },
{ 0x002b, 246 },
{ 0x0015, 262 },
{ 0x0035, 278 },
{ 0x0072, 295 },
{ 0x0018, 311 },
{ 0x0008, 327 },
{ 0x0074, 343 },
{ 0x0060, 359 },
{ 0x0010, 375 },
{ 0x000a, 391 },
{ 0x006a, 407 },
{ 0x0064, 423 },
{ 0x0012, 439 },
{ 0x000c, 455 },
{ 0x0040, 472 },
{ 0x00c0, 488 },
{ 0x0058, 504 },
{ 0x00d8, 520 },
{ 0x0048, 536 },
{ 0x00c8, 552 },
{ 0x0028, 568 },
{ 0x00a8, 584 },
{ 0x0068, 600 },
{ 0x00e8, 616 },
{ 0x0014, 632 },
{ 0x0094, 648 },
{ 0x0054, 664 },
{ 0x00d4, 680 },
{ 0x0034, 696 },
{ 0x00b4, 712 },
{ 0x0020, 728 },
{ 0x00a0, 744 },
{ 0x0050, 760 },
{ 0x00d0, 776 },
{ 0x004a, 792 },
{ 0x00ca, 808 },
{ 0x002a, 824 },
{ 0x00aa, 840 },
{ 0x0024, 856 },
{ 0x00a4, 872 },
{ 0x001a, 888 },
{ 0x009a, 904 },
{ 0x005a, 920 },
{ 0x00da, 936 },
{ 0x0052, 952 },
{ 0x00d2, 968 },
{ 0x004c, 984 },
{ 0x00cc, 1000 },
{ 0x002c, 1016 },
{ 0, 0 }
};
static struct proto TermB[] = {
{ 0x03b0, 10 },
{ 0x0002, 19 },
{ 0x0003, 34 },
{ 0x0001, 50 },
{ 0x0006, 67 },
{ 0x000c, 84 },
{ 0x0004, 100 },
{ 0x0018, 117 },
{ 0x0028, 134 },
{ 0x0008, 150 },
{ 0x0010, 167 },
{ 0x0050, 183 },
{ 0x0070, 199 },
{ 0x0020, 216 },
{ 0x00e0, 232 },
{ 0x0030, 249 },
{ 0x03a0, 266 },
{ 0x0060, 282 },
{ 0x0040, 298 },
{ 0x0730, 315 },
{ 0x00b0, 331 },
{ 0x01b0, 347 },
{ 0x0760, 363 },
{ 0x00a0, 379 },
{ 0x0740, 395 },
{ 0x00c0, 411 },
{ 0x0530, 428 },
{ 0x0d30, 444 },
{ 0x0330, 460 },
{ 0x0b30, 476 },
{ 0x0160, 492 },
{ 0x0960, 508 },
{ 0x0560, 524 },
{ 0x0d60, 540 },
{ 0x04b0, 556 },
{ 0x0cb0, 572 },
{ 0x02b0, 588 },
{ 0x0ab0, 604 },
{ 0x06b0, 620 },
{ 0x0eb0, 636 },
{ 0x0360, 652 },
{ 0x0b60, 668 },
{ 0x05b0, 684 },
{ 0x0db0, 700 },
{ 0x02a0, 716 },
{ 0x0aa0, 732 },
{ 0x06a0, 748 },
{ 0x0ea0, 764 },
{ 0x0260, 780 },
{ 0x0a60, 796 },
{ 0x04a0, 812 },
{ 0x0ca0, 828 },
{ 0x0240, 844 },
{ 0x0ec0, 860 },
{ 0x01c0, 876 },
{ 0x0e40, 892 },
{ 0x0140, 908 },
{ 0x01a0, 924 },
{ 0x09a0, 940 },
{ 0x0d40, 956 },
{ 0x0340, 972 },
{ 0x05a0, 988 },
{ 0x0660, 1004 },
{ 0x0e60, 1020 },
{ 0, 0 }
};
static struct proto EOLH[] = {
{ 0x0000, 11 },
{ 0, 0 }
};
static void
FillTable(TIFFFaxTabEnt *T, int Size, struct proto *P, int State)
{
int limit = 1 << Size;
while (P->val) {
int width = P->val & 15;
int param = P->val >> 4;
int incr = 1 << width;
int code;
for (code = P->code; code < limit; code += incr) {
TIFFFaxTabEnt *E = T+code;
E->State = State;
E->Width = width;
E->Param = param;
}
P++;
}
}
static char* storage_class = "";
static char* const_class = "";
static int packoutput = 1;
static char* prebrace = "";
static char* postbrace = "";
void
WriteTable(FILE* fd, const TIFFFaxTabEnt* T, int Size, const char* name)
{
int i;
char* sep;
fprintf(fd, "%s %s TIFFFaxTabEnt %s[%d] = {",
storage_class, const_class, name, Size);
if (packoutput) {
sep = "\n";
for (i = 0; i < Size; i++) {
fprintf(fd, "%s%s%d,%d,%d%s",
sep, prebrace, T->State, T->Width, (int) T->Param, postbrace);
if (((i+1) % 12) == 0)
sep = ",\n";
else
sep = ",";
T++;
}
} else {
sep = "\n ";
for (i = 0; i < Size; i++) {
fprintf(fd, "%s%s%3d,%3d,%4d%s",
sep, prebrace, T->State, T->Width, (int) T->Param, postbrace);
if (((i+1) % 6) == 0)
sep = ",\n ";
else
sep = ",";
T++;
}
}
fprintf(fd, "\n};\n");
}
/* initialise the huffman code tables */
int
main(int argc, char* argv[])
{
FILE* fd;
char* outputfile;
int c;
extern int optind;
extern char* optarg;
while ((c = getopt(argc, argv, "c:s:bp")) != -1)
switch (c) {
case 'c':
const_class = optarg;
break;
case 's':
storage_class = optarg;
break;
case 'p':
packoutput = 0;
break;
case 'b':
prebrace = "{";
postbrace = "}";
break;
case '?':
fprintf(stderr,
"usage: %s [-c const] [-s storage] [-p] [-b] file\n",
argv[0]);
return (-1);
}
outputfile = optind < argc ? argv[optind] : "g3states.h";
fd = fopen(outputfile, "w");
if (fd == NULL) {
fprintf(stderr, "%s: %s: Cannot create output file.\n",
argv[0], outputfile);
return (-2);
}
FillTable(MainTable, 7, Pass, S_Pass);
FillTable(MainTable, 7, Horiz, S_Horiz);
FillTable(MainTable, 7, V0, S_V0);
FillTable(MainTable, 7, VR, S_VR);
FillTable(MainTable, 7, VL, S_VL);
FillTable(MainTable, 7, Ext, S_Ext);
FillTable(MainTable, 7, EOLV, S_EOL);
FillTable(WhiteTable, 12, MakeUpW, S_MakeUpW);
FillTable(WhiteTable, 12, MakeUp, S_MakeUp);
FillTable(WhiteTable, 12, TermW, S_TermW);
FillTable(WhiteTable, 12, EOLH, S_EOL);
FillTable(BlackTable, 13, MakeUpB, S_MakeUpB);
FillTable(BlackTable, 13, MakeUp, S_MakeUp);
FillTable(BlackTable, 13, TermB, S_TermB);
FillTable(BlackTable, 13, EOLH, S_EOL);
fprintf(fd, "/* WARNING, this file was automatically generated by the\n");
fprintf(fd, " mkg3states program */\n");
fprintf(fd, "#include \"tiff.h\"\n");
fprintf(fd, "#include \"tif_fax3.h\"\n");
WriteTable(fd, MainTable, 128, "TIFFFaxMainTable");
WriteTable(fd, WhiteTable, 4096, "TIFFFaxWhiteTable");
WriteTable(fd, BlackTable, 8192, "TIFFFaxBlackTable");
fclose(fd);
return (0);
}

View File

@@ -1,72 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1991-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#include "tiffcomp.h"
/*
* Hack program to construct tables used to find
* runs of zeros and ones in Group 3 Fax encoding.
*/
dumparray(name, runs)
char *name;
unsigned char runs[256];
{
register int i;
register char *sep;
printf("static u_char %s[256] = {\n", name);
sep = " ";
for (i = 0; i < 256; i++) {
printf("%s%d", sep, runs[i]);
if (((i + 1) % 16) == 0) {
printf(", /* 0x%02x - 0x%02x */\n", i-15, i);
sep = " ";
} else
sep = ", ";
}
printf("\n};\n");
}
main()
{
unsigned char runs[2][256];
memset(runs[0], 0, 256*sizeof (char));
memset(runs[1], 0, 256*sizeof (char));
{ register int run, runlen, i;
runlen = 1;
for (run = 0x80; run != 0xff; run = (run>>1)|0x80) {
for (i = run-1; i >= 0; i--) {
runs[1][run|i] = runlen;
runs[0][(~(run|i)) & 0xff] = runlen;
}
runlen++;
}
runs[1][0xff] = runs[0][0] = 8;
}
dumparray("bruns", runs[0]);
dumparray("wruns", runs[1]);
}

View File

@@ -1,148 +0,0 @@
/* "$Header$ */
/*
* Copyright (c) 1995-1997 Sam Leffler
* Copyright (c) 1995-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* Generate a library version string for systems that
* do not have a shell (by default this is done with
* awk and echo from the Makefile).
*
* This was written by Peter Greenham for Acorn systems.
*
* Syntax: mkversion [-v version-file] [<outfile>]
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
static void
usage(void)
{
fprintf(stderr,
"usage: mkversion [-v version-file]\n"
" [-r releasedate-file] [outfile]\n");
exit(-1);
}
static FILE*
openFile(char* filename)
{
FILE* fd = fopen(filename, "r");
if (fd == NULL) {
fprintf(stderr, "mkversion: %s: Could not open for reading.\n",
filename);
exit(-1);
}
return (fd);
}
int
main(int argc, char* argv[])
{
char* versionFile = "../VERSION";
char* releaseDateFile = "../RELEASE-DATE";
char version[128];
char rawReleaseDate[128];
char tiffLibVersion[128];
FILE* fd;
char* cp;
argc--, argv++;
while (argc > 0 && argv[0][0] == '-') {
if (strcmp(argv[0], "-v") == 0) {
if (argc < 1)
usage();
argc--, argv++;
versionFile = argv[0];
} else if (strcmp(argv[0], "-r") == 0) {
if (argc < 1)
usage();
argc--, argv++;
releaseDateFile = argv[0];
} else
usage();
argc--, argv++;
}
/*
* Read the VERSION file.
*/
fd = openFile(versionFile);
if (fgets(version, sizeof (version)-1, fd) == NULL) {
fprintf(stderr, "mkversion: No version information in %s.\n",
versionFile);
exit(-1);
}
cp = strchr(version, '\n');
if (cp)
*cp = '\0';
fclose(fd);
/*
* Read the RELEASE-DATE, and translate format to emit TIFFLIB_VERSION.
*/
fd = openFile(releaseDateFile);
if (fgets(rawReleaseDate, sizeof (rawReleaseDate)-1, fd) == NULL) {
fprintf(stderr, "mkversion: No release date information in %s.\n",
releaseDateFile);
exit(-1);
}
fclose(fd);
sprintf( tiffLibVersion, "#define TIFFLIB_VERSION %4.4s%2.2s%2.2s",
rawReleaseDate+6,
rawReleaseDate+0,
rawReleaseDate+3 );
/*
* Emit the tiffvers.h file.
*/
if (argc > 0) {
fd = fopen(argv[0], "w");
if (fd == NULL) {
fprintf(stderr, "mkversion: %s: Could not open for writing.\n",
argv[0]);
exit(-1);
}
} else
fd = stdout;
fprintf(fd, "#define TIFFLIB_VERSION_STR \"LIBTIFF, Version %s\\n", version);
fprintf(fd, "Copyright (c) 1988-1996 Sam Leffler\\n");
fprintf(fd, "Copyright (c) 1991-1996 Silicon Graphics, Inc.\"\n");
fprintf( fd,
"/*\n"
" * This define can be used in code that requires\n"
" * compilation-related definitions specific to a\n"
" * version or versions of the library. Runtime\n"
" * version checking should be done based on the\n"
" * string returned by TIFFGetVersion.\n"
" */\n" );
fprintf(fd, "%s\n", tiffLibVersion );
if (fd != stdout)
fclose(fd);
return (0);
}

View File

@@ -1,61 +0,0 @@
/*
* Warning, this file was automatically created by the TIFF configure script
* Actually, it has been modified to use wxWidgets' values.
* VERSION: v3.5.2
* DATE: Son Nov 28 15:15:07 GMT 1999
* TARGET:
* CCOMPILER:
*/
#ifndef _PORT_
#define _PORT_ 1
#ifdef __cplusplus
extern "C" {
#endif
#include "wx/setup.h"
#include <sys/types.h>
#define HOST_FILLORDER FILLORDER_LSB2MSB
/* wxWidgets defines WORDS_BIGENDIAN */
#ifdef WORDS_BIGENDIAN
#define HOST_BIGENDIAN 1
#else
#define HOST_BIGENDIAN 0
#endif
/* wxWidgets defines its own reading and writing routines */
/* #define HAVE_MMAP 1 */
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
#include <fcntl.h>
typedef double dblparam_t;
#ifdef __STRICT_ANSI__
#define INLINE __inline__
#else
#define INLINE inline
#endif
#define GLOBALDATA(TYPE,NAME) extern TYPE NAME
/* wxWidgets defines wxUSE_LIBJPEG */
#if wxUSE_LIBJPEG
#define JPEG_SUPPORT
#endif
/* wxWidgets defines wxUSE_ZLIB */
#if wxUSE_ZLIB
#define ZIP_SUPPORT
#endif
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -1,285 +0,0 @@
/* $Id$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _T4_
#define _T4_
/*
* CCITT T.4 1D Huffman runlength codes and
* related definitions. Given the small sizes
* of these tables it does not seem
* worthwhile to make code & length 8 bits.
*/
typedef struct tableentry {
unsigned short length; /* bit length of g3 code */
unsigned short code; /* g3 code */
short runlen; /* run length in bits */
} tableentry;
#define EOL 0x001 /* EOL code value - 0000 0000 0000 1 */
/* status values returned instead of a run length */
#define G3CODE_EOL -1 /* NB: ACT_EOL - ACT_WRUNT */
#define G3CODE_INVALID -2 /* NB: ACT_INVALID - ACT_WRUNT */
#define G3CODE_EOF -3 /* end of input data */
#define G3CODE_INCOMP -4 /* incomplete run code */
/*
* Note that these tables are ordered such that the
* index into the table is known to be either the
* run length, or (run length / 64) + a fixed offset.
*
* NB: The G3CODE_INVALID entries are only used
* during state generation (see mkg3states.c).
*/
#ifdef G3CODES
const tableentry TIFFFaxWhiteCodes[] = {
{ 8, 0x35, 0 }, /* 0011 0101 */
{ 6, 0x7, 1 }, /* 0001 11 */
{ 4, 0x7, 2 }, /* 0111 */
{ 4, 0x8, 3 }, /* 1000 */
{ 4, 0xB, 4 }, /* 1011 */
{ 4, 0xC, 5 }, /* 1100 */
{ 4, 0xE, 6 }, /* 1110 */
{ 4, 0xF, 7 }, /* 1111 */
{ 5, 0x13, 8 }, /* 1001 1 */
{ 5, 0x14, 9 }, /* 1010 0 */
{ 5, 0x7, 10 }, /* 0011 1 */
{ 5, 0x8, 11 }, /* 0100 0 */
{ 6, 0x8, 12 }, /* 0010 00 */
{ 6, 0x3, 13 }, /* 0000 11 */
{ 6, 0x34, 14 }, /* 1101 00 */
{ 6, 0x35, 15 }, /* 1101 01 */
{ 6, 0x2A, 16 }, /* 1010 10 */
{ 6, 0x2B, 17 }, /* 1010 11 */
{ 7, 0x27, 18 }, /* 0100 111 */
{ 7, 0xC, 19 }, /* 0001 100 */
{ 7, 0x8, 20 }, /* 0001 000 */
{ 7, 0x17, 21 }, /* 0010 111 */
{ 7, 0x3, 22 }, /* 0000 011 */
{ 7, 0x4, 23 }, /* 0000 100 */
{ 7, 0x28, 24 }, /* 0101 000 */
{ 7, 0x2B, 25 }, /* 0101 011 */
{ 7, 0x13, 26 }, /* 0010 011 */
{ 7, 0x24, 27 }, /* 0100 100 */
{ 7, 0x18, 28 }, /* 0011 000 */
{ 8, 0x2, 29 }, /* 0000 0010 */
{ 8, 0x3, 30 }, /* 0000 0011 */
{ 8, 0x1A, 31 }, /* 0001 1010 */
{ 8, 0x1B, 32 }, /* 0001 1011 */
{ 8, 0x12, 33 }, /* 0001 0010 */
{ 8, 0x13, 34 }, /* 0001 0011 */
{ 8, 0x14, 35 }, /* 0001 0100 */
{ 8, 0x15, 36 }, /* 0001 0101 */
{ 8, 0x16, 37 }, /* 0001 0110 */
{ 8, 0x17, 38 }, /* 0001 0111 */
{ 8, 0x28, 39 }, /* 0010 1000 */
{ 8, 0x29, 40 }, /* 0010 1001 */
{ 8, 0x2A, 41 }, /* 0010 1010 */
{ 8, 0x2B, 42 }, /* 0010 1011 */
{ 8, 0x2C, 43 }, /* 0010 1100 */
{ 8, 0x2D, 44 }, /* 0010 1101 */
{ 8, 0x4, 45 }, /* 0000 0100 */
{ 8, 0x5, 46 }, /* 0000 0101 */
{ 8, 0xA, 47 }, /* 0000 1010 */
{ 8, 0xB, 48 }, /* 0000 1011 */
{ 8, 0x52, 49 }, /* 0101 0010 */
{ 8, 0x53, 50 }, /* 0101 0011 */
{ 8, 0x54, 51 }, /* 0101 0100 */
{ 8, 0x55, 52 }, /* 0101 0101 */
{ 8, 0x24, 53 }, /* 0010 0100 */
{ 8, 0x25, 54 }, /* 0010 0101 */
{ 8, 0x58, 55 }, /* 0101 1000 */
{ 8, 0x59, 56 }, /* 0101 1001 */
{ 8, 0x5A, 57 }, /* 0101 1010 */
{ 8, 0x5B, 58 }, /* 0101 1011 */
{ 8, 0x4A, 59 }, /* 0100 1010 */
{ 8, 0x4B, 60 }, /* 0100 1011 */
{ 8, 0x32, 61 }, /* 0011 0010 */
{ 8, 0x33, 62 }, /* 0011 0011 */
{ 8, 0x34, 63 }, /* 0011 0100 */
{ 5, 0x1B, 64 }, /* 1101 1 */
{ 5, 0x12, 128 }, /* 1001 0 */
{ 6, 0x17, 192 }, /* 0101 11 */
{ 7, 0x37, 256 }, /* 0110 111 */
{ 8, 0x36, 320 }, /* 0011 0110 */
{ 8, 0x37, 384 }, /* 0011 0111 */
{ 8, 0x64, 448 }, /* 0110 0100 */
{ 8, 0x65, 512 }, /* 0110 0101 */
{ 8, 0x68, 576 }, /* 0110 1000 */
{ 8, 0x67, 640 }, /* 0110 0111 */
{ 9, 0xCC, 704 }, /* 0110 0110 0 */
{ 9, 0xCD, 768 }, /* 0110 0110 1 */
{ 9, 0xD2, 832 }, /* 0110 1001 0 */
{ 9, 0xD3, 896 }, /* 0110 1001 1 */
{ 9, 0xD4, 960 }, /* 0110 1010 0 */
{ 9, 0xD5, 1024 }, /* 0110 1010 1 */
{ 9, 0xD6, 1088 }, /* 0110 1011 0 */
{ 9, 0xD7, 1152 }, /* 0110 1011 1 */
{ 9, 0xD8, 1216 }, /* 0110 1100 0 */
{ 9, 0xD9, 1280 }, /* 0110 1100 1 */
{ 9, 0xDA, 1344 }, /* 0110 1101 0 */
{ 9, 0xDB, 1408 }, /* 0110 1101 1 */
{ 9, 0x98, 1472 }, /* 0100 1100 0 */
{ 9, 0x99, 1536 }, /* 0100 1100 1 */
{ 9, 0x9A, 1600 }, /* 0100 1101 0 */
{ 6, 0x18, 1664 }, /* 0110 00 */
{ 9, 0x9B, 1728 }, /* 0100 1101 1 */
{ 11, 0x8, 1792 }, /* 0000 0001 000 */
{ 11, 0xC, 1856 }, /* 0000 0001 100 */
{ 11, 0xD, 1920 }, /* 0000 0001 101 */
{ 12, 0x12, 1984 }, /* 0000 0001 0010 */
{ 12, 0x13, 2048 }, /* 0000 0001 0011 */
{ 12, 0x14, 2112 }, /* 0000 0001 0100 */
{ 12, 0x15, 2176 }, /* 0000 0001 0101 */
{ 12, 0x16, 2240 }, /* 0000 0001 0110 */
{ 12, 0x17, 2304 }, /* 0000 0001 0111 */
{ 12, 0x1C, 2368 }, /* 0000 0001 1100 */
{ 12, 0x1D, 2432 }, /* 0000 0001 1101 */
{ 12, 0x1E, 2496 }, /* 0000 0001 1110 */
{ 12, 0x1F, 2560 }, /* 0000 0001 1111 */
{ 12, 0x1, G3CODE_EOL }, /* 0000 0000 0001 */
{ 9, 0x1, G3CODE_INVALID }, /* 0000 0000 1 */
{ 10, 0x1, G3CODE_INVALID }, /* 0000 0000 01 */
{ 11, 0x1, G3CODE_INVALID }, /* 0000 0000 001 */
{ 12, 0x0, G3CODE_INVALID }, /* 0000 0000 0000 */
};
const tableentry TIFFFaxBlackCodes[] = {
{ 10, 0x37, 0 }, /* 0000 1101 11 */
{ 3, 0x2, 1 }, /* 010 */
{ 2, 0x3, 2 }, /* 11 */
{ 2, 0x2, 3 }, /* 10 */
{ 3, 0x3, 4 }, /* 011 */
{ 4, 0x3, 5 }, /* 0011 */
{ 4, 0x2, 6 }, /* 0010 */
{ 5, 0x3, 7 }, /* 0001 1 */
{ 6, 0x5, 8 }, /* 0001 01 */
{ 6, 0x4, 9 }, /* 0001 00 */
{ 7, 0x4, 10 }, /* 0000 100 */
{ 7, 0x5, 11 }, /* 0000 101 */
{ 7, 0x7, 12 }, /* 0000 111 */
{ 8, 0x4, 13 }, /* 0000 0100 */
{ 8, 0x7, 14 }, /* 0000 0111 */
{ 9, 0x18, 15 }, /* 0000 1100 0 */
{ 10, 0x17, 16 }, /* 0000 0101 11 */
{ 10, 0x18, 17 }, /* 0000 0110 00 */
{ 10, 0x8, 18 }, /* 0000 0010 00 */
{ 11, 0x67, 19 }, /* 0000 1100 111 */
{ 11, 0x68, 20 }, /* 0000 1101 000 */
{ 11, 0x6C, 21 }, /* 0000 1101 100 */
{ 11, 0x37, 22 }, /* 0000 0110 111 */
{ 11, 0x28, 23 }, /* 0000 0101 000 */
{ 11, 0x17, 24 }, /* 0000 0010 111 */
{ 11, 0x18, 25 }, /* 0000 0011 000 */
{ 12, 0xCA, 26 }, /* 0000 1100 1010 */
{ 12, 0xCB, 27 }, /* 0000 1100 1011 */
{ 12, 0xCC, 28 }, /* 0000 1100 1100 */
{ 12, 0xCD, 29 }, /* 0000 1100 1101 */
{ 12, 0x68, 30 }, /* 0000 0110 1000 */
{ 12, 0x69, 31 }, /* 0000 0110 1001 */
{ 12, 0x6A, 32 }, /* 0000 0110 1010 */
{ 12, 0x6B, 33 }, /* 0000 0110 1011 */
{ 12, 0xD2, 34 }, /* 0000 1101 0010 */
{ 12, 0xD3, 35 }, /* 0000 1101 0011 */
{ 12, 0xD4, 36 }, /* 0000 1101 0100 */
{ 12, 0xD5, 37 }, /* 0000 1101 0101 */
{ 12, 0xD6, 38 }, /* 0000 1101 0110 */
{ 12, 0xD7, 39 }, /* 0000 1101 0111 */
{ 12, 0x6C, 40 }, /* 0000 0110 1100 */
{ 12, 0x6D, 41 }, /* 0000 0110 1101 */
{ 12, 0xDA, 42 }, /* 0000 1101 1010 */
{ 12, 0xDB, 43 }, /* 0000 1101 1011 */
{ 12, 0x54, 44 }, /* 0000 0101 0100 */
{ 12, 0x55, 45 }, /* 0000 0101 0101 */
{ 12, 0x56, 46 }, /* 0000 0101 0110 */
{ 12, 0x57, 47 }, /* 0000 0101 0111 */
{ 12, 0x64, 48 }, /* 0000 0110 0100 */
{ 12, 0x65, 49 }, /* 0000 0110 0101 */
{ 12, 0x52, 50 }, /* 0000 0101 0010 */
{ 12, 0x53, 51 }, /* 0000 0101 0011 */
{ 12, 0x24, 52 }, /* 0000 0010 0100 */
{ 12, 0x37, 53 }, /* 0000 0011 0111 */
{ 12, 0x38, 54 }, /* 0000 0011 1000 */
{ 12, 0x27, 55 }, /* 0000 0010 0111 */
{ 12, 0x28, 56 }, /* 0000 0010 1000 */
{ 12, 0x58, 57 }, /* 0000 0101 1000 */
{ 12, 0x59, 58 }, /* 0000 0101 1001 */
{ 12, 0x2B, 59 }, /* 0000 0010 1011 */
{ 12, 0x2C, 60 }, /* 0000 0010 1100 */
{ 12, 0x5A, 61 }, /* 0000 0101 1010 */
{ 12, 0x66, 62 }, /* 0000 0110 0110 */
{ 12, 0x67, 63 }, /* 0000 0110 0111 */
{ 10, 0xF, 64 }, /* 0000 0011 11 */
{ 12, 0xC8, 128 }, /* 0000 1100 1000 */
{ 12, 0xC9, 192 }, /* 0000 1100 1001 */
{ 12, 0x5B, 256 }, /* 0000 0101 1011 */
{ 12, 0x33, 320 }, /* 0000 0011 0011 */
{ 12, 0x34, 384 }, /* 0000 0011 0100 */
{ 12, 0x35, 448 }, /* 0000 0011 0101 */
{ 13, 0x6C, 512 }, /* 0000 0011 0110 0 */
{ 13, 0x6D, 576 }, /* 0000 0011 0110 1 */
{ 13, 0x4A, 640 }, /* 0000 0010 0101 0 */
{ 13, 0x4B, 704 }, /* 0000 0010 0101 1 */
{ 13, 0x4C, 768 }, /* 0000 0010 0110 0 */
{ 13, 0x4D, 832 }, /* 0000 0010 0110 1 */
{ 13, 0x72, 896 }, /* 0000 0011 1001 0 */
{ 13, 0x73, 960 }, /* 0000 0011 1001 1 */
{ 13, 0x74, 1024 }, /* 0000 0011 1010 0 */
{ 13, 0x75, 1088 }, /* 0000 0011 1010 1 */
{ 13, 0x76, 1152 }, /* 0000 0011 1011 0 */
{ 13, 0x77, 1216 }, /* 0000 0011 1011 1 */
{ 13, 0x52, 1280 }, /* 0000 0010 1001 0 */
{ 13, 0x53, 1344 }, /* 0000 0010 1001 1 */
{ 13, 0x54, 1408 }, /* 0000 0010 1010 0 */
{ 13, 0x55, 1472 }, /* 0000 0010 1010 1 */
{ 13, 0x5A, 1536 }, /* 0000 0010 1101 0 */
{ 13, 0x5B, 1600 }, /* 0000 0010 1101 1 */
{ 13, 0x64, 1664 }, /* 0000 0011 0010 0 */
{ 13, 0x65, 1728 }, /* 0000 0011 0010 1 */
{ 11, 0x8, 1792 }, /* 0000 0001 000 */
{ 11, 0xC, 1856 }, /* 0000 0001 100 */
{ 11, 0xD, 1920 }, /* 0000 0001 101 */
{ 12, 0x12, 1984 }, /* 0000 0001 0010 */
{ 12, 0x13, 2048 }, /* 0000 0001 0011 */
{ 12, 0x14, 2112 }, /* 0000 0001 0100 */
{ 12, 0x15, 2176 }, /* 0000 0001 0101 */
{ 12, 0x16, 2240 }, /* 0000 0001 0110 */
{ 12, 0x17, 2304 }, /* 0000 0001 0111 */
{ 12, 0x1C, 2368 }, /* 0000 0001 1100 */
{ 12, 0x1D, 2432 }, /* 0000 0001 1101 */
{ 12, 0x1E, 2496 }, /* 0000 0001 1110 */
{ 12, 0x1F, 2560 }, /* 0000 0001 1111 */
{ 12, 0x1, G3CODE_EOL }, /* 0000 0000 0001 */
{ 9, 0x1, G3CODE_INVALID }, /* 0000 0000 1 */
{ 10, 0x1, G3CODE_INVALID }, /* 0000 0000 01 */
{ 11, 0x1, G3CODE_INVALID }, /* 0000 0000 001 */
{ 12, 0x0, G3CODE_INVALID }, /* 0000 0000 0000 */
};
#else
extern const tableentry TIFFFaxWhiteCodes[];
extern const tableentry TIFFFaxBlackCodes[];
#endif
#endif /* _T4_ */

View File

@@ -1,519 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library RISC OS specific Routines.
* Developed out of the Unix version.
* Peter Greenham, May 1995
*/
#include "tiffiop.h"
#include <stdio.h>
#include <stdlib.h>
/*
Low-level file handling
~~~~~~~~~~~~~~~~~~~~~~~
The functions in osfcn.h are unavailable when compiling under C, as it's a
C++ header. Therefore they have been implemented here.
Now, why have I done it this way?
The definitive API library for RISC OS is Jonathan Coxhead's OSLib, which
uses heavily optimised ARM assembler or even plain inline SWI calls for
maximum performance and minimum runtime size. However, I don't want to make
LIBTIFF need that to survive. Therefore I have also emulated the functions
using macros to _swi() and _swix() defined in the swis.h header, and
borrowing types from kernel.h, which is less efficient but doesn't need any
third-party libraries.
*/
#ifdef INCLUDE_OSLIB
#include "osfile.h"
#include "osgbpb.h"
#include "osargs.h"
#include "osfind.h"
#else
/* OSLIB EMULATION STARTS */
#include "kernel.h"
#include "swis.h"
/* From oslib:types.h */
typedef unsigned int bits;
typedef unsigned char byte;
#ifndef TRUE
#define TRUE 1
#endif
#ifndef FALSE
#define FALSE 0
#endif
#ifndef NULL
#define NULL 0
#endif
#ifndef SKIP
#define SKIP 0
#endif
/* From oslib:os.h */
typedef _kernel_oserror os_error;
typedef byte os_f;
/* From oslib:osfile.h */
#undef OS_File
#define OS_File 0x8
/* From oslib:osgbpb.h */
#undef OS_GBPB
#define OS_GBPB 0xC
#undef OSGBPB_Write
#define OSGBPB_Write 0x2
#undef OSGBPB_Read
#define OSGBPB_Read 0x4
extern os_error *xosgbpb_write (os_f file,
byte *data,
int size,
int *unwritten);
extern int osgbpb_write (os_f file,
byte *data,
int size);
#define xosgbpb_write(file, data, size, unwritten) \
(os_error*) _swix(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_IN(4)|_OUT(3), \
OSGBPB_WriteAt, \
file, \
data, \
size, \
unwritten)
#define osgbpb_write(file, data, size) \
_swi(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_RETURN(3), \
OSGBPB_Write, \
file, \
data, \
size)
extern os_error *xosgbpb_read (os_f file,
byte *buffer,
int size,
int *unread);
extern int osgbpb_read (os_f file,
byte *buffer,
int size);
#define xosgbpb_read(file, buffer, size, unread) \
(os_error*) _swix(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_OUT(3), \
OSGBPB_Read, \
file, \
buffer, \
size, \
unread)
#define osgbpb_read(file, buffer, size) \
_swi(OS_GBPB, _IN(0)|_IN(1)|_IN(2)|_IN(3)|_RETURN(3), \
OSGBPB_Read, \
file, \
buffer, \
size)
/* From oslib:osfind.h */
#undef OS_Find
#define OS_Find 0xD
#undef OSFind_Openin
#define OSFind_Openin 0x40
#undef OSFind_Openout
#define OSFind_Openout 0x80
#undef OSFind_Openup
#define OSFind_Openup 0xC0
#undef OSFind_Close
#define OSFind_Close 0x0
#define xosfind_open(reason, file_name, path, file) \
(os_error*) _swix(OS_Find, _IN(0)|_IN(1)|_IN(2)|_OUT(0), \
reason, file_name, path, file)
#define osfind_open(reason, file_name, path) \
(os_f) _swi(OS_Find, _IN(0)|_IN(1)|_IN(2)|_RETURN(0), \
reason, file_name, path)
extern os_error *xosfind_openin (bits flags,
char *file_name,
char *path,
os_f *file);
extern os_f osfind_openin (bits flags,
char *file_name,
char *path);
#define xosfind_openin(flags, file_name, path, file) \
xosfind_open(flags | OSFind_Openin, file_name, path, file)
#define osfind_openin(flags, file_name, path) \
osfind_open(flags | OSFind_Openin, file_name, path)
extern os_error *xosfind_openout (bits flags,
char *file_name,
char *path,
os_f *file);
extern os_f osfind_openout (bits flags,
char *file_name,
char *path);
#define xosfind_openout(flags, file_name, path, file) \
xosfind_open(flags | OSFind_Openout, file_name, path, file)
#define osfind_openout(flags, file_name, path) \
osfind_open(flags | OSFind_Openout, file_name, path)
extern os_error *xosfind_openup (bits flags,
char *file_name,
char *path,
os_f *file);
extern os_f osfind_openup (bits flags,
char *file_name,
char *path);
#define xosfind_openup(flags, file_name, path, file) \
xosfind_open(flags | OSFind_Openup, file_name, path, file)
#define osfind_openup(flags, file_name, path) \
osfind_open(flags | OSFind_Openup, file_name, path)
extern os_error *xosfind_close (os_f file);
extern void osfind_close (os_f file);
#define xosfind_close(file) \
(os_error*) _swix(OS_Find, _IN(0)|_IN(1), \
OSFind_Close, \
file)
#define osfind_close(file) \
(void) _swi(OS_Find, _IN(0)|_IN(1), \
OSFind_Close, \
file)
/* From oslib:osargs.h */
#undef OS_Args
#define OS_Args 0x9
#undef OSArgs_ReadPtr
#define OSArgs_ReadPtr 0x0
#undef OSArgs_SetPtr
#define OSArgs_SetPtr 0x1
#undef OSArgs_ReadExt
#define OSArgs_ReadExt 0x2
extern os_error *xosargs_read_ptr (os_f file,
int *ptr);
extern int osargs_read_ptr (os_f file);
#define xosargs_read_ptr(file, ptr) \
(os_error*) _swix(OS_Args, _IN(0)|_IN(1)|_OUT(2), \
OSArgs_ReadPtr, \
file, \
ptr)
#define osargs_read_ptr(file) \
_swi(OS_Args, _IN(0)|_IN(1)|_RETURN(2), \
OSArgs_ReadPtr, \
file)
extern os_error *xosargs_set_ptr (os_f file,
int ptr);
extern void osargs_set_ptr (os_f file,
int ptr);
#define xosargs_set_ptr(file, ptr) \
(os_error*) _swix(OS_Args, _IN(0)|_IN(1)|_IN(2), \
OSArgs_SetPtr, \
file, \
ptr)
#define osargs_set_ptr(file, ptr) \
(void) _swi(OS_Args, _IN(0)|_IN(1)|_IN(2), \
OSArgs_SetPtr, \
file, \
ptr)
extern os_error *xosargs_read_ext (os_f file,
int *ext);
extern int osargs_read_ext (os_f file);
#define xosargs_read_ext(file, ext) \
(os_error*) _swix(OS_Args, _IN(0)|_IN(1)|_OUT(2), \
OSArgs_ReadExt, \
file, \
ext)
#define osargs_read_ext(file) \
_swi(OS_Args, _IN(0)|_IN(1)|_RETURN(2), \
OSArgs_ReadExt, \
file)
/* OSLIB EMULATION ENDS */
#endif
#ifndef __osfcn_h
/* Will be set or not during tiffcomp.h */
/* You get this to compile under C++? Please say how! */
extern int open(const char* name, int flags, int mode)
{
/* From what I can tell, should return <0 for failure */
os_error* e = (os_error*) 1; /* Cheeky way to use a pointer eh? :-) */
os_f file = (os_f) -1;
flags = flags;
switch(mode)
{
case O_RDONLY:
{
e = xosfind_openin(SKIP, name, SKIP, &file);
break;
}
case O_WRONLY:
case O_RDWR|O_CREAT:
case O_RDWR|O_CREAT|O_TRUNC:
{
e = xosfind_openout(SKIP, name, SKIP, &file);
break;
}
case O_RDWR:
{
e = xosfind_openup(SKIP, name, SKIP, &file);
break;
}
}
if (e)
{
file = (os_f) -1;
}
return (file);
}
extern int close(int fd)
{
return ((int) xosfind_close((os_f) fd));
}
extern int write(int fd, const char *buf, int nbytes)
{
/* Returns number of bytes written */
return (nbytes - osgbpb_write((os_f) fd, (const byte*) buf, nbytes));
}
extern int read(int fd, char *buf, int nbytes)
{
/* Returns number of bytes read */
return (nbytes - osgbpb_read((os_f) fd, (byte*) buf, nbytes));
}
extern off_t lseek(int fd, off_t offset, int whence)
{
int absolute = 0;
switch (whence)
{
case SEEK_SET:
{
absolute = (int) offset;
break;
}
case SEEK_CUR:
{
absolute = osargs_read_ptr((os_f) fd) + (int) offset;
break;
}
case SEEK_END:
{
absolute = osargs_read_ext((os_f) fd) + (int) offset;
break;
}
}
osargs_set_ptr((os_f) fd, absolute);
return ((off_t) osargs_read_ptr((os_f) fd));
}
#endif
static tsize_t
_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return ((tsize_t) read((int) fd, buf, (size_t) size));
}
static tsize_t
_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return ((tsize_t) write((int) fd, buf, (size_t) size));
}
static toff_t
_tiffSeekProc(thandle_t fd, toff_t off, int whence)
{
return ((toff_t) lseek((int) fd, (off_t) off, whence));
}
static int
_tiffCloseProc(thandle_t fd)
{
return (close((int) fd));
}
static toff_t
_tiffSizeProc(thandle_t fd)
{
return (lseek((int) fd, SEEK_END, SEEK_SET));
}
#ifdef HAVE_MMAP
#error "I didn't know Acorn had that!"
#endif
/* !HAVE_MMAP */
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
(void) fd; (void) pbase; (void) psize;
return (0);
}
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
(void) fd; (void) base; (void) size;
}
/*
* Open a TIFF file descriptor for read/writing.
*/
TIFF*
TIFFFdOpen(int fd, const char* name, const char* mode)
{
TIFF* tif;
tif = TIFFClientOpen(name, mode,
(thandle_t) fd,
_tiffReadProc, _tiffWriteProc,
_tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
_tiffMapProc, _tiffUnmapProc);
if (tif)
{
tif->tif_fd = fd;
}
return (tif);
}
/*
* Open a TIFF file for read/writing.
*/
TIFF*
TIFFOpen(const char* name, const char* mode)
{
static const char module[] = "TIFFOpen";
int m, fd;
m = _TIFFgetMode(mode, module);
if (m == -1)
{
return ((TIFF*) 0);
}
fd = open(name, 0, m);
if (fd < 0)
{
TIFFError(module, "%s: Cannot open", name);
return ((TIFF *)0);
}
return (TIFFFdOpen(fd, name, mode));
}
void*
_TIFFmalloc(tsize_t s)
{
return (malloc((size_t) s));
}
void
_TIFFfree(tdata_t p)
{
free(p);
}
void*
_TIFFrealloc(tdata_t p, tsize_t s)
{
return (realloc(p, (size_t) s));
}
void
_TIFFmemset(tdata_t p, int v, tsize_t c)
{
memset(p, v, (size_t) c);
}
void
_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
{
memcpy(d, s, (size_t) c);
}
int
_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
{
return (memcmp(p1, p2, (size_t) c));
}
static void
acornWarningHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
{
fprintf(stderr, "%s: ", module);
}
fprintf(stderr, "Warning, ");
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFwarningHandler = acornWarningHandler;
static void
acornErrorHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
{
fprintf(stderr, "%s: ", module);
}
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFerrorHandler = acornErrorHandler;

View File

@@ -1,274 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library Macintosh-specific routines.
*
* These routines use only Toolbox and high-level File Manager traps.
* They make no calls to the THINK C "unix" compatibility library. Also,
* malloc is not used directly but it is still referenced internally by
* the ANSI library in rare cases. Heap fragmentation by the malloc ring
* buffer is therefore minimized.
*
* O_RDONLY and O_RDWR are treated identically here. The tif_mode flag is
* checked in TIFFWriteCheck().
*
* Create below fills in a blank creator signature and sets the file type
* to 'TIFF'. It is much better for the application to do this by Create'ing
* the file first and TIFFOpen'ing it later.
* ---------
* This code has been "Carbonized", and may not work with older MacOS versions.
* If so, grab the tif_apple.c out of an older libtiff distribution, like
* 3.5.5 from www.libtiff.org.
*/
#include "tiffiop.h"
#include <Errors.h>
#include <Files.h>
#include <Memory.h>
#include <Script.h>
#if defined(__PPCC__) || defined(__SC__) || defined(__MRC__) || defined(applec)
#define CtoPstr c2pstr
#endif
static tsize_t
_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return (FSRead((short) fd, (long*) &size, (char*) buf) == noErr ?
size : (tsize_t) -1);
}
static tsize_t
_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return (FSWrite((short) fd, (long*) &size, (char*) buf) == noErr ?
size : (tsize_t) -1);
}
static toff_t
_tiffSeekProc(thandle_t fd, toff_t off, int whence)
{
long fpos, size;
if (GetEOF((short) fd, &size) != noErr)
return EOF;
(void) GetFPos((short) fd, &fpos);
switch (whence) {
case SEEK_CUR:
if (off + fpos > size)
SetEOF((short) fd, off + fpos);
if (SetFPos((short) fd, fsFromMark, off) != noErr)
return EOF;
break;
case SEEK_END:
if (off > 0)
SetEOF((short) fd, off + size);
if (SetFPos((short) fd, fsFromStart, off + size) != noErr)
return EOF;
break;
case SEEK_SET:
if (off > size)
SetEOF((short) fd, off);
if (SetFPos((short) fd, fsFromStart, off) != noErr)
return EOF;
break;
}
return (toff_t)(GetFPos((short) fd, &fpos) == noErr ? fpos : EOF);
}
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
return (0);
}
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
}
static int
_tiffCloseProc(thandle_t fd)
{
return (FSClose((short) fd));
}
static toff_t
_tiffSizeProc(thandle_t fd)
{
long size;
if (GetEOF((short) fd, &size) != noErr) {
TIFFError("_tiffSizeProc", "%s: Cannot get file size");
return (-1L);
}
return ((toff_t) size);
}
/*
* Open a TIFF file descriptor for read/writing.
*/
TIFF*
TIFFFdOpen(int fd, const char* name, const char* mode)
{
TIFF* tif;
tif = TIFFClientOpen(name, mode, (thandle_t) fd,
_tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
_tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
if (tif)
tif->tif_fd = fd;
return (tif);
}
static void ourc2pstr( char* inString )
{
int sLen = strlen( inString );
BlockMoveData( inString, &inString[1], sLen );
inString[0] = sLen;
}
/*
* Open a TIFF file for read/writing.
*/
TIFF*
TIFFOpen(const char* name, const char* mode)
{
static const char module[] = "TIFFOpen";
Str255 pname;
FInfo finfo;
short fref;
OSErr err;
FSSpec fSpec;
strcpy((char*) pname, name);
ourc2pstr((char*) pname);
err = FSMakeFSSpec( 0, 0, pname, &fSpec );
switch (_TIFFgetMode(mode, module)) {
default:
return ((TIFF*) 0);
case O_RDWR | O_CREAT | O_TRUNC:
if (FSpGetFInfo(&fSpec, &finfo) == noErr)
FSpDelete(&fSpec);
/* fall through */
case O_RDWR | O_CREAT:
if ((err = FSpGetFInfo(&fSpec, &finfo)) == fnfErr) {
if (FSpCreate(&fSpec, ' ', 'TIFF', smSystemScript) != noErr)
goto badCreate;
if (FSpOpenDF(&fSpec, fsRdWrPerm, &fref) != noErr)
goto badOpen;
} else if (err == noErr) {
if (FSpOpenDF(&fSpec, fsRdWrPerm, &fref) != noErr)
goto badOpen;
} else
goto badOpen;
break;
case O_RDONLY:
if (FSpOpenDF(&fSpec, fsRdPerm, &fref) != noErr)
goto badOpen;
break;
case O_RDWR:
if (FSpOpenDF(&fSpec, fsRdWrPerm, &fref) != noErr)
goto badOpen;
break;
}
return (TIFFFdOpen((int) fref, name, mode));
badCreate:
TIFFError(module, "%s: Cannot create", name);
return ((TIFF*) 0);
badOpen:
TIFFError(module, "%s: Cannot open", name);
return ((TIFF*) 0);
}
void
_TIFFmemset(tdata_t p, int v, tsize_t c)
{
memset(p, v, (size_t) c);
}
void
_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
{
memcpy(d, s, (size_t) c);
}
int
_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
{
return (memcmp(p1, p2, (size_t) c));
}
tdata_t
_TIFFmalloc(tsize_t s)
{
return (NewPtr((size_t) s));
}
void
_TIFFfree(tdata_t p)
{
DisposePtr(p);
}
tdata_t
_TIFFrealloc(tdata_t p, tsize_t s)
{
Ptr n = p;
SetPtrSize(p, (size_t) s);
if (MemError() && (n = NewPtr((size_t) s)) != NULL) {
BlockMove(p, n, GetPtrSize(p));
DisposePtr(p);
}
return ((tdata_t) n);
}
static void
appleWarningHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
fprintf(stderr, "Warning, ");
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFwarningHandler = appleWarningHandler;
static void
appleErrorHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFerrorHandler = appleErrorHandler;

View File

@@ -1,243 +0,0 @@
/* "$Header$" */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library ATARI-specific Routines.
*/
#include "tiffiop.h"
#if defined(__TURBOC__)
#include <tos.h>
#include <stdio.h>
#else
#include <osbind.h>
#include <fcntl.h>
#endif
#ifndef O_ACCMODE
#define O_ACCMODE 3
#endif
#include <errno.h>
#define AEFILNF -33
static tsize_t
_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
{
long r;
r = Fread((int) fd, size, buf);
if (r < 0) {
errno = (int)-r;
r = -1;
}
return r;
}
static tsize_t
_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
{
long r;
r = Fwrite((int) fd, size, buf);
if (r < 0) {
errno = (int)-r;
r = -1;
}
return r;
}
static toff_t
_tiffSeekProc(thandle_t fd, off_t off, int whence)
{
char buf[256];
long current_off, expected_off, new_off;
if (whence == SEEK_END || off <= 0)
return Fseek(off, (int) fd, whence);
current_off = Fseek(0, (int) fd, SEEK_CUR); /* find out where we are */
if (whence == SEEK_SET)
expected_off = off;
else
expected_off = off + current_off;
new_off = Fseek(off, (int) fd, whence);
if (new_off == expected_off)
return new_off;
/* otherwise extend file -- zero filling the hole */
if (new_off < 0) /* error? */
new_off = Fseek(0, (int) fd, SEEK_END); /* go to eof */
_TIFFmemset(buf, 0, sizeof(buf));
while (expected_off > new_off) {
off = expected_off - new_off;
if (off > sizeof(buf))
off = sizeof(buf);
if ((current_off = Fwrite((int) fd, off, buf)) != off)
return (current_off > 0) ?
new_off + current_off : new_off;
new_off += off;
}
return new_off;
}
static int
_tiffCloseProc(thandle_t fd)
{
long r;
r = Fclose((int) fd);
if (r < 0) {
errno = (int)-r;
r = -1;
}
return (int)r;
}
static toff_t
_tiffSizeProc(thandle_t fd)
{
long pos, eof;
pos = Fseek(0, (int) fd, SEEK_CUR);
eof = Fseek(0, (int) fd, SEEK_END);
Fseek(pos, (int) fd, SEEK_SET);
return eof;
}
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
return (0);
}
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
}
/*
* Open a TIFF file descriptor for read/writing.
*/
TIFF*
TIFFFdOpen(int fd, const char* name, const char* mode)
{
TIFF* tif;
tif = TIFFClientOpen(name, mode,
(thandle_t) fd,
_tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
_tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
if (tif)
tif->tif_fd = fd;
return (tif);
}
/*
* Open a TIFF file for read/writing.
*/
TIFF*
TIFFOpen(const char* name, const char* mode)
{
static const char module[] = "TIFFOpen";
int m;
long fd;
m = _TIFFgetMode(mode, module);
if (m == -1)
return ((TIFF*)0);
if (m & O_TRUNC) {
fd = Fcreate(name, 0);
} else {
fd = Fopen(name, m & O_ACCMODE);
if (fd == AEFILNF && m & O_CREAT)
fd = Fcreate(name, 0);
}
if (fd < 0)
errno = (int)fd;
if (fd < 0) {
TIFFError(module, "%s: Cannot open", name);
return ((TIFF*)0);
}
return (TIFFFdOpen(fd, name, mode));
}
#include <stdlib.h>
tdata_t
_TIFFmalloc(tsize_t s)
{
return (malloc((size_t) s));
}
void
_TIFFfree(tdata_t p)
{
free(p);
}
tdata_t
_TIFFrealloc(tdata_t p, tsize_t s)
{
return (realloc(p, (size_t) s));
}
void
_TIFFmemset(tdata_t p, int v, size_t c)
{
memset(p, v, (size_t) c);
}
void
_TIFFmemcpy(tdata_t d, const tdata_t s, size_t c)
{
memcpy(d, s, (size_t) c);
}
int
_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
{
return (memcmp(p1, p2, (size_t) c));
}
static void
atariWarningHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
fprintf(stderr, "Warning, ");
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFwarningHandler = atariWarningHandler;
static void
atariErrorHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFerrorHandler = atariErrorHandler;

View File

@@ -1,248 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1991-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*
* Auxiliary Support Routines.
*/
#include "tiffiop.h"
#include "tif_predict.h"
#include <math.h>
static int
TIFFDefaultTransferFunction(TIFFDirectory* td)
{
uint16 **tf = td->td_transferfunction;
tsize_t i, n, nbytes;
tf[0] = tf[1] = tf[2] = 0;
if (td->td_bitspersample >= sizeof(tsize_t) * 8 - 2)
return 0;
n = 1<<td->td_bitspersample;
nbytes = n * sizeof (uint16);
if (!(tf[0] = (uint16 *)_TIFFmalloc(nbytes)))
return 0;
tf[0][0] = 0;
for (i = 1; i < n; i++) {
double t = (double)i/((double) n-1.);
tf[0][i] = (uint16)floor(65535.*pow(t, 2.2) + .5);
}
if (td->td_samplesperpixel - td->td_extrasamples > 1) {
if (!(tf[1] = (uint16 *)_TIFFmalloc(nbytes)))
goto bad;
_TIFFmemcpy(tf[1], tf[0], nbytes);
if (!(tf[2] = (uint16 *)_TIFFmalloc(nbytes)))
goto bad;
_TIFFmemcpy(tf[2], tf[0], nbytes);
}
return 1;
bad:
if (tf[0])
_TIFFfree(tf[0]);
if (tf[1])
_TIFFfree(tf[1]);
if (tf[2])
_TIFFfree(tf[2]);
tf[0] = tf[1] = tf[2] = 0;
return 0;
}
static int
TIFFDefaultRefBlackWhite(TIFFDirectory* td)
{
int i;
if (!(td->td_refblackwhite = (float *)_TIFFmalloc(6*sizeof (float))))
return 0;
for (i = 0; i < 3; i++) {
td->td_refblackwhite[2*i+0] = 0;
td->td_refblackwhite[2*i+1] = (float)((1L<<td->td_bitspersample)-1L);
}
return 1;
}
/*
* Like TIFFGetField, but return any default
* value if the tag is not present in the directory.
*
* NB: We use the value in the directory, rather than
* explcit values so that defaults exist only one
* place in the library -- in TIFFDefaultDirectory.
*/
int
TIFFVGetFieldDefaulted(TIFF* tif, ttag_t tag, va_list ap)
{
TIFFDirectory *td = &tif->tif_dir;
if (TIFFVGetField(tif, tag, ap))
return (1);
switch (tag) {
case TIFFTAG_SUBFILETYPE:
*va_arg(ap, uint32 *) = td->td_subfiletype;
return (1);
case TIFFTAG_BITSPERSAMPLE:
*va_arg(ap, uint16 *) = td->td_bitspersample;
return (1);
case TIFFTAG_THRESHHOLDING:
*va_arg(ap, uint16 *) = td->td_threshholding;
return (1);
case TIFFTAG_FILLORDER:
*va_arg(ap, uint16 *) = td->td_fillorder;
return (1);
case TIFFTAG_ORIENTATION:
*va_arg(ap, uint16 *) = td->td_orientation;
return (1);
case TIFFTAG_SAMPLESPERPIXEL:
*va_arg(ap, uint16 *) = td->td_samplesperpixel;
return (1);
case TIFFTAG_ROWSPERSTRIP:
*va_arg(ap, uint32 *) = td->td_rowsperstrip;
return (1);
case TIFFTAG_MINSAMPLEVALUE:
*va_arg(ap, uint16 *) = td->td_minsamplevalue;
return (1);
case TIFFTAG_MAXSAMPLEVALUE:
*va_arg(ap, uint16 *) = td->td_maxsamplevalue;
return (1);
case TIFFTAG_PLANARCONFIG:
*va_arg(ap, uint16 *) = td->td_planarconfig;
return (1);
case TIFFTAG_RESOLUTIONUNIT:
*va_arg(ap, uint16 *) = td->td_resolutionunit;
return (1);
case TIFFTAG_PREDICTOR:
{
TIFFPredictorState* sp = (TIFFPredictorState*) tif->tif_data;
*va_arg(ap, uint16*) = (uint16) sp->predictor;
return (1);
}
case TIFFTAG_DOTRANGE:
*va_arg(ap, uint16 *) = 0;
*va_arg(ap, uint16 *) = (1<<td->td_bitspersample)-1;
return (1);
case TIFFTAG_INKSET:
*va_arg(ap, uint16 *) = td->td_inkset;
return (1);
case TIFFTAG_NUMBEROFINKS:
*va_arg(ap, uint16 *) = td->td_ninks;
return (1);
case TIFFTAG_EXTRASAMPLES:
*va_arg(ap, uint16 *) = td->td_extrasamples;
*va_arg(ap, uint16 **) = td->td_sampleinfo;
return (1);
case TIFFTAG_MATTEING:
*va_arg(ap, uint16 *) =
(td->td_extrasamples == 1 &&
td->td_sampleinfo[0] == EXTRASAMPLE_ASSOCALPHA);
return (1);
case TIFFTAG_TILEDEPTH:
*va_arg(ap, uint32 *) = td->td_tiledepth;
return (1);
case TIFFTAG_DATATYPE:
*va_arg(ap, uint16 *) = td->td_sampleformat-1;
return (1);
case TIFFTAG_SAMPLEFORMAT:
*va_arg(ap, uint16 *) = td->td_sampleformat;
return(1);
case TIFFTAG_IMAGEDEPTH:
*va_arg(ap, uint32 *) = td->td_imagedepth;
return (1);
case TIFFTAG_YCBCRCOEFFICIENTS:
if (!td->td_ycbcrcoeffs) {
td->td_ycbcrcoeffs = (float *)
_TIFFmalloc(3*sizeof (float));
if (!td->td_ycbcrcoeffs)
return (0);
/* defaults are from CCIR Recommendation 601-1 */
td->td_ycbcrcoeffs[0] = 0.299f;
td->td_ycbcrcoeffs[1] = 0.587f;
td->td_ycbcrcoeffs[2] = 0.114f;
}
*va_arg(ap, float **) = td->td_ycbcrcoeffs;
return (1);
case TIFFTAG_YCBCRSUBSAMPLING:
*va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[0];
*va_arg(ap, uint16 *) = td->td_ycbcrsubsampling[1];
return (1);
case TIFFTAG_YCBCRPOSITIONING:
*va_arg(ap, uint16 *) = td->td_ycbcrpositioning;
return (1);
case TIFFTAG_WHITEPOINT:
if (!td->td_whitepoint) {
td->td_whitepoint = (float *)
_TIFFmalloc(2 * sizeof (float));
if (!td->td_whitepoint)
return (0);
/* TIFF 6.0 specification says that it is no default
value for the WhitePoint, but AdobePhotoshop TIFF
Technical Note tells that it should be CIE D50. */
td->td_whitepoint[0] =
D50_X0 / (D50_X0 + D50_Y0 + D50_Z0);
td->td_whitepoint[1] =
D50_Y0 / (D50_X0 + D50_Y0 + D50_Z0);
}
*va_arg(ap, float **) = td->td_whitepoint;
return (1);
case TIFFTAG_TRANSFERFUNCTION:
if (!td->td_transferfunction[0] &&
!TIFFDefaultTransferFunction(td)) {
TIFFError(tif->tif_name, "No space for \"TransferFunction\" tag");
return (0);
}
*va_arg(ap, uint16 **) = td->td_transferfunction[0];
if (td->td_samplesperpixel - td->td_extrasamples > 1) {
*va_arg(ap, uint16 **) = td->td_transferfunction[1];
*va_arg(ap, uint16 **) = td->td_transferfunction[2];
}
return (1);
case TIFFTAG_REFERENCEBLACKWHITE:
if (!td->td_refblackwhite && !TIFFDefaultRefBlackWhite(td))
return (0);
*va_arg(ap, float **) = td->td_refblackwhite;
return (1);
}
return (0);
}
/*
* Like TIFFGetField, but return any default
* value if the tag is not present in the directory.
*/
int
TIFFGetFieldDefaulted(TIFF* tif, ttag_t tag, ...)
{
int ok;
va_list ap;
va_start(ap, tag);
ok = TIFFVGetFieldDefaulted(tif, tag, ap);
va_end(ap);
return (ok);
}

View File

@@ -1,80 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*/
#include "tiffiop.h"
void
TIFFClose(TIFF* tif)
{
if (tif->tif_mode != O_RDONLY)
/*
* Flush buffered data and directory (if dirty).
*/
TIFFFlush(tif);
(*tif->tif_cleanup)(tif);
TIFFFreeDirectory(tif);
if (tif->tif_dirlist)
_TIFFfree(tif->tif_dirlist);
/* Clean up client info links */
while( tif->tif_clientinfo )
{
TIFFClientInfoLink *link = tif->tif_clientinfo;
tif->tif_clientinfo = link->next;
_TIFFfree( link->name );
_TIFFfree( link );
}
if (tif->tif_rawdata && (tif->tif_flags&TIFF_MYBUFFER))
_TIFFfree(tif->tif_rawdata);
if (isMapped(tif))
TIFFUnmapFileContents(tif, tif->tif_base, tif->tif_size);
(void) TIFFCloseFile(tif);
if (tif->tif_nfields > 0)
{
int i;
for (i = 0; i < tif->tif_nfields; i++)
{
TIFFFieldInfo *fld = tif->tif_fieldinfo[i];
if (fld->field_bit == FIELD_CUSTOM &&
strncmp("Tag ", fld->field_name, 4) == 0)
{
_TIFFfree(fld->field_name);
_TIFFfree(fld);
}
}
_TIFFfree(tif->tif_fieldinfo);
}
_TIFFfree(tif);
}

View File

@@ -1,150 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library
*
* Builtin Compression Scheme Configuration Support.
*/
#include "tiffiop.h"
static int NotConfigured(TIFF*, int);
#ifndef LZW_SUPPORT
#define TIFFInitLZW NotConfigured
#endif
#ifndef PACKBITS_SUPPORT
#define TIFFInitPackbits NotConfigured
#endif
#ifndef THUNDER_SUPPORT
#define TIFFInitThunderScan NotConfigured
#endif
#ifndef NEXT_SUPPORT
#define TIFFInitNeXT NotConfigured
#endif
#ifndef JPEG_SUPPORT
#define TIFFInitJPEG NotConfigured
#endif
#ifndef OJPEG_SUPPORT
#define TIFFInitOJPEG NotConfigured
#endif
#ifndef CCITT_SUPPORT
#define TIFFInitCCITTRLE NotConfigured
#define TIFFInitCCITTRLEW NotConfigured
#define TIFFInitCCITTFax3 NotConfigured
#define TIFFInitCCITTFax4 NotConfigured
#endif
#ifndef JBIG_SUPPORT
#define TIFFInitJBIG NotConfigured
#endif
#ifndef ZIP_SUPPORT
#define TIFFInitZIP NotConfigured
#endif
#ifndef PIXARLOG_SUPPORT
#define TIFFInitPixarLog NotConfigured
#endif
#ifndef LOGLUV_SUPPORT
#define TIFFInitSGILog NotConfigured
#endif
/*
* Compression schemes statically built into the library.
*/
#ifdef VMS
const TIFFCodec _TIFFBuiltinCODECS[] = {
#else
TIFFCodec _TIFFBuiltinCODECS[] = {
#endif
{ "None", COMPRESSION_NONE, TIFFInitDumpMode },
{ "LZW", COMPRESSION_LZW, TIFFInitLZW },
{ "PackBits", COMPRESSION_PACKBITS, TIFFInitPackBits },
{ "ThunderScan", COMPRESSION_THUNDERSCAN,TIFFInitThunderScan },
{ "NeXT", COMPRESSION_NEXT, TIFFInitNeXT },
{ "JPEG", COMPRESSION_JPEG, TIFFInitJPEG },
{ "Old-style JPEG", COMPRESSION_OJPEG, TIFFInitOJPEG },
{ "CCITT RLE", COMPRESSION_CCITTRLE, TIFFInitCCITTRLE },
{ "CCITT RLE/W", COMPRESSION_CCITTRLEW, TIFFInitCCITTRLEW },
{ "CCITT Group 3", COMPRESSION_CCITTFAX3, TIFFInitCCITTFax3 },
{ "CCITT Group 4", COMPRESSION_CCITTFAX4, TIFFInitCCITTFax4 },
{ "ISO JBIG", COMPRESSION_JBIG, TIFFInitJBIG },
{ "Deflate", COMPRESSION_DEFLATE, TIFFInitZIP },
{ "AdobeDeflate", COMPRESSION_ADOBE_DEFLATE , TIFFInitZIP },
{ "PixarLog", COMPRESSION_PIXARLOG, TIFFInitPixarLog },
{ "SGILog", COMPRESSION_SGILOG, TIFFInitSGILog },
{ "SGILog24", COMPRESSION_SGILOG24, TIFFInitSGILog },
{ NULL }
};
static int
_notConfigured(TIFF* tif)
{
const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
TIFFError(tif->tif_name,
"%s compression support is not configured", c->name);
return (0);
}
static int
NotConfigured(TIFF* tif, int scheme)
{
(void) scheme;
tif->tif_decodestatus = FALSE;
tif->tif_setupdecode = _notConfigured;
tif->tif_encodestatus = FALSE;
tif->tif_setupencode = _notConfigured;
return (1);
}
/************************************************************************/
/* TIFFIsCODECConfigured() */
/************************************************************************/
/**
* Check whether we have working codec for the specific coding scheme.
*
* @return returns 1 if the codec is configured and working. Otherwise
* 0 will be returned.
*/
int
TIFFIsCODECConfigured(uint16 scheme)
{
const TIFFCodec* codec = TIFFFindCODEC(scheme);
if(codec == NULL) {
return 0;
}
if(codec->init == NULL) {
return 0;
}
if(codec->init != NotConfigured){
return 1;
}
return 0;
}

View File

@@ -1,268 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* CIE L*a*b* to CIE XYZ and CIE XYZ to RGB conversion routines are taken
* from the VIPS library (http://www.vips.ecs.soton.ac.uk) with
* the permission of John Cupitt, the VIPS author.
*/
/*
* TIFF Library.
*
* Color space conversion routines.
*/
#include "tiffiop.h"
#include <math.h>
/*
* Convert color value from the CIE L*a*b* 1976 space to CIE XYZ.
*/
void
TIFFCIELabToXYZ(TIFFCIELabToRGB *cielab, uint32 l, int32 a, int32 b,
float *X, float *Y, float *Z)
{
float L = (float)l * 100.0F / 255.0F;
float cby, tmp;
if( L < 8.856F ) {
*Y = (L * cielab->Y0) / 903.292F;
cby = 7.787F * (*Y / cielab->Y0) + 16.0F / 116.0F;
} else {
cby = (L + 16.0F) / 116.0F;
*Y = cielab->Y0 * cby * cby * cby;
}
tmp = (float)a / 500.0F + cby;
if( tmp < 0.2069F )
*X = cielab->X0 * (tmp - 0.13793F) / 7.787F;
else
*X = cielab->X0 * tmp * tmp * tmp;
tmp = cby - (float)b / 200.0F;
if( tmp < 0.2069F )
*Z = cielab->Z0 * (tmp - 0.13793F) / 7.787F;
else
*Z = cielab->Z0 * tmp * tmp * tmp;
}
#define RINT(R) ((uint32)((R)>0?((R)+0.5):((R)-0.5)))
/*
* Convert color value from the XYZ space to RGB.
*/
void
TIFFXYZToRGB(TIFFCIELabToRGB *cielab, float X, float Y, float Z,
uint32 *r, uint32 *g, uint32 *b)
{
int i;
float Yr, Yg, Yb;
float *matrix = &cielab->display.d_mat[0][0];
/* Multiply through the matrix to get luminosity values. */
Yr = matrix[0] * X + matrix[1] * Y + matrix[2] * Z;
Yg = matrix[3] * X + matrix[4] * Y + matrix[5] * Z;
Yb = matrix[6] * X + matrix[7] * Y + matrix[8] * Z;
/* Clip input */
Yr = TIFFmax( Yr, cielab->display.d_Y0R );
Yg = TIFFmax( Yg, cielab->display.d_Y0G );
Yb = TIFFmax( Yb, cielab->display.d_Y0B );
/* Turn luminosity to colour value. */
i = TIFFmin(cielab->range,
(int)((Yr - cielab->display.d_Y0R) / cielab->rstep));
*r = RINT(cielab->Yr2r[i]);
i = TIFFmin(cielab->range,
(int)((Yg - cielab->display.d_Y0G) / cielab->gstep));
*g = RINT(cielab->Yg2g[i]);
i = TIFFmin(cielab->range,
(int)((Yb - cielab->display.d_Y0B) / cielab->bstep));
*b = RINT(cielab->Yb2b[i]);
/* Clip output. */
*r = TIFFmin( *r, cielab->display.d_Vrwr );
*g = TIFFmin( *g, cielab->display.d_Vrwg );
*b = TIFFmin( *b, cielab->display.d_Vrwb );
}
#undef RINT
/*
* Allocate conversion state structures and make look_up tables for
* the Yr,Yb,Yg <=> r,g,b conversions.
*/
int
TIFFCIELabToRGBInit(TIFFCIELabToRGB* cielab,
TIFFDisplay *display, float *refWhite)
{
int i;
float gamma;
cielab->range = CIELABTORGB_TABLE_RANGE;
_TIFFmemcpy(&cielab->display, display, sizeof(TIFFDisplay));
/* Red */
gamma = 1.0F / cielab->display.d_gammaR ;
cielab->rstep =
(cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range;
for(i = 0; i <= cielab->range; i++) {
cielab->Yr2r[i] = cielab->display.d_Vrwr
* ((float)pow((double)i / cielab->range, gamma));
}
/* Green */
gamma = 1.0F / cielab->display.d_gammaG ;
cielab->gstep =
(cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range;
for(i = 0; i <= cielab->range; i++) {
cielab->Yg2g[i] = cielab->display.d_Vrwg
* ((float)pow((double)i / cielab->range, gamma));
}
/* Blue */
gamma = 1.0F / cielab->display.d_gammaB ;
cielab->bstep =
(cielab->display.d_YCR - cielab->display.d_Y0R) / cielab->range;
for(i = 0; i <= cielab->range; i++) {
cielab->Yb2b[i] = cielab->display.d_Vrwb
* ((float)pow((double)i / cielab->range, gamma));
}
/* Init reference white point */
cielab->X0 = refWhite[0];
cielab->Y0 = refWhite[1];
cielab->Z0 = refWhite[2];
return 0;
}
/*
* Convert color value from the YCbCr space to CIE XYZ.
* The colorspace conversion algorithm comes from the IJG v5a code;
* see below for more information on how it works.
*/
#define SHIFT 16
#define FIX(x) ((int32)((x) * (1L<<SHIFT) + 0.5))
#define ONE_HALF ((int32)(1<<(SHIFT-1)))
#define Code2V(c, RB, RW, CR) ((((c)-(int32)(RB))*(float)(CR))/(float)((RW)-(RB)))
#define CLAMP(f,min,max) ((f)<(min)?(min):(f)>(max)?(max):(f))
void
TIFFYCbCrtoRGB(TIFFYCbCrToRGB *ycbcr, uint32 Y, int32 Cb, int32 Cr,
uint32 *r, uint32 *g, uint32 *b)
{
/* XXX: Only 8-bit YCbCr input supported for now */
Y = CLAMP(Y, 0, 255), Cb = CLAMP(Cb, 0, 255), Cr = CLAMP(Cr, 0, 255);
*r = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cr_r_tab[Cr]];
*g = ycbcr->clamptab[ycbcr->Y_tab[Y]
+ (int)((ycbcr->Cb_g_tab[Cb] + ycbcr->Cr_g_tab[Cr]) >> SHIFT)];
*b = ycbcr->clamptab[ycbcr->Y_tab[Y] + ycbcr->Cb_b_tab[Cb]];
}
/*
* Initialize the YCbCr->RGB conversion tables. The conversion
* is done according to the 6.0 spec:
*
* R = Y + Cr*(2 - 2*LumaRed)
* B = Y + Cb*(2 - 2*LumaBlue)
* G = Y
* - LumaBlue*Cb*(2-2*LumaBlue)/LumaGreen
* - LumaRed*Cr*(2-2*LumaRed)/LumaGreen
*
* To avoid floating point arithmetic the fractional constants that
* come out of the equations are represented as fixed point values
* in the range 0...2^16. We also eliminate multiplications by
* pre-calculating possible values indexed by Cb and Cr (this code
* assumes conversion is being done for 8-bit samples).
*/
int
TIFFYCbCrToRGBInit(TIFFYCbCrToRGB* ycbcr, float *luma, float *refBlackWhite)
{
TIFFRGBValue* clamptab;
int i;
#define LumaRed luma[0]
#define LumaGreen luma[1]
#define LumaBlue luma[2]
clamptab = (TIFFRGBValue*)(
(tidata_t) ycbcr+TIFFroundup(sizeof (TIFFYCbCrToRGB), sizeof (long)));
_TIFFmemset(clamptab, 0, 256); /* v < 0 => 0 */
ycbcr->clamptab = (clamptab += 256);
for (i = 0; i < 256; i++)
clamptab[i] = (TIFFRGBValue) i;
_TIFFmemset(clamptab+256, 255, 2*256); /* v > 255 => 255 */
ycbcr->Cr_r_tab = (int*) (clamptab + 3*256);
ycbcr->Cb_b_tab = ycbcr->Cr_r_tab + 256;
ycbcr->Cr_g_tab = (int32*) (ycbcr->Cb_b_tab + 256);
ycbcr->Cb_g_tab = ycbcr->Cr_g_tab + 256;
ycbcr->Y_tab = ycbcr->Cb_g_tab + 256;
{ float f1 = 2-2*LumaRed; int32 D1 = FIX(f1);
float f2 = LumaRed*f1/LumaGreen; int32 D2 = -FIX(f2);
float f3 = 2-2*LumaBlue; int32 D3 = FIX(f3);
float f4 = LumaBlue*f3/LumaGreen; int32 D4 = -FIX(f4);
int x;
#undef LumaBlue
#undef LumaGreen
#undef LumaRed
/*
* i is the actual input pixel value in the range 0..255
* Cb and Cr values are in the range -128..127 (actually
* they are in a range defined by the ReferenceBlackWhite
* tag) so there is some range shifting to do here when
* constructing tables indexed by the raw pixel data.
*/
for (i = 0, x = -128; i < 256; i++, x++) {
int32 Cr = (int32)Code2V(x, refBlackWhite[4] - 128.0F,
refBlackWhite[5] - 128.0F, 127);
int32 Cb = (int32)Code2V(x, refBlackWhite[2] - 128.0F,
refBlackWhite[3] - 128.0F, 127);
ycbcr->Cr_r_tab[i] = (int32)((D1*Cr + ONE_HALF)>>SHIFT);
ycbcr->Cb_b_tab[i] = (int32)((D3*Cb + ONE_HALF)>>SHIFT);
ycbcr->Cr_g_tab[i] = D2*Cr;
ycbcr->Cb_g_tab[i] = D4*Cb + ONE_HALF;
ycbcr->Y_tab[i] =
(int32)Code2V(x + 128, refBlackWhite[0], refBlackWhite[1], 255);
}
}
return 0;
}
#undef CLAMP
#undef Code2V
#undef SHIFT
#undef ONE_HALF
#undef FIX

View File

@@ -1,235 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library
*
* Compression Scheme Configuration Support.
*/
#include "tiffiop.h"
static int
TIFFNoEncode(TIFF* tif, char* method)
{
const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
if (c) {
if (! strncmp(c->name, "LZW", 3) ){
TIFFError(tif->tif_name,
"%s %s encoding is no longer implemented due to Unisys patent enforcement",
c->name, method);
} else {
TIFFError(tif->tif_name, "%s %s encoding is not implemented",
c->name, method);
}
}
else {
TIFFError(tif->tif_name,
"Compression scheme %u %s encoding is not implemented",
tif->tif_dir.td_compression, method);
}
return (-1);
}
int
_TIFFNoRowEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
{
(void) pp; (void) cc; (void) s;
return (TIFFNoEncode(tif, "scanline"));
}
int
_TIFFNoStripEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
{
(void) pp; (void) cc; (void) s;
return (TIFFNoEncode(tif, "strip"));
}
int
_TIFFNoTileEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
{
(void) pp; (void) cc; (void) s;
return (TIFFNoEncode(tif, "tile"));
}
static int
TIFFNoDecode(TIFF* tif, char* method)
{
const TIFFCodec* c = TIFFFindCODEC(tif->tif_dir.td_compression);
if (c)
TIFFError(tif->tif_name, "%s %s decoding is not implemented",
c->name, method);
else
TIFFError(tif->tif_name,
"Compression scheme %u %s decoding is not implemented",
tif->tif_dir.td_compression, method);
return (-1);
}
int
_TIFFNoRowDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
{
(void) pp; (void) cc; (void) s;
return (TIFFNoDecode(tif, "scanline"));
}
int
_TIFFNoStripDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
{
(void) pp; (void) cc; (void) s;
return (TIFFNoDecode(tif, "strip"));
}
int
_TIFFNoTileDecode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
{
(void) pp; (void) cc; (void) s;
return (TIFFNoDecode(tif, "tile"));
}
int
_TIFFNoSeek(TIFF* tif, uint32 off)
{
(void) off;
TIFFError(tif->tif_name,
"Compression algorithm does not support random access");
return (0);
}
int
_TIFFNoPreCode(TIFF* tif, tsample_t s)
{
(void) tif; (void) s;
return (1);
}
static int _TIFFtrue(TIFF* tif) { (void) tif; return (1); }
static void _TIFFvoid(TIFF* tif) { (void) tif; }
void
_TIFFSetDefaultCompressionState(TIFF* tif)
{
tif->tif_decodestatus = TRUE;
tif->tif_setupdecode = _TIFFtrue;
tif->tif_predecode = _TIFFNoPreCode;
tif->tif_decoderow = _TIFFNoRowDecode;
tif->tif_decodestrip = _TIFFNoStripDecode;
tif->tif_decodetile = _TIFFNoTileDecode;
tif->tif_encodestatus = TRUE;
tif->tif_setupencode = _TIFFtrue;
tif->tif_preencode = _TIFFNoPreCode;
tif->tif_postencode = _TIFFtrue;
tif->tif_encoderow = _TIFFNoRowEncode;
tif->tif_encodestrip = _TIFFNoStripEncode;
tif->tif_encodetile = _TIFFNoTileEncode;
tif->tif_close = _TIFFvoid;
tif->tif_seek = _TIFFNoSeek;
tif->tif_cleanup = _TIFFvoid;
tif->tif_defstripsize = _TIFFDefaultStripSize;
tif->tif_deftilesize = _TIFFDefaultTileSize;
tif->tif_flags &= ~TIFF_NOBITREV;
}
int
TIFFSetCompressionScheme(TIFF* tif, int scheme)
{
const TIFFCodec *c = TIFFFindCODEC((uint16) scheme);
_TIFFSetDefaultCompressionState(tif);
/*
* Don't treat an unknown compression scheme as an error.
* This permits applications to open files with data that
* the library does not have builtin support for, but which
* may still be meaningful.
*/
return (c ? (*c->init)(tif, scheme) : 1);
}
/*
* Other compression schemes may be registered. Registered
* schemes can also override the builtin versions provided
* by this library.
*/
typedef struct _codec {
struct _codec* next;
TIFFCodec* info;
} codec_t;
static codec_t* registeredCODECS = NULL;
const TIFFCodec*
TIFFFindCODEC(uint16 scheme)
{
const TIFFCodec* c;
codec_t* cd;
for (cd = registeredCODECS; cd; cd = cd->next)
if (cd->info->scheme == scheme)
return ((const TIFFCodec*) cd->info);
for (c = _TIFFBuiltinCODECS; c->name; c++)
if (c->scheme == scheme)
return (c);
return ((const TIFFCodec*) 0);
}
TIFFCodec*
TIFFRegisterCODEC(uint16 scheme, const char* name, TIFFInitMethod init)
{
codec_t* cd = (codec_t*)
_TIFFmalloc(sizeof (codec_t) + sizeof (TIFFCodec) + strlen(name)+1);
if (cd != NULL) {
cd->info = (TIFFCodec*) ((tidata_t) cd + sizeof (codec_t));
cd->info->name = (char*)
((tidata_t) cd->info + sizeof (TIFFCodec));
strcpy(cd->info->name, name);
cd->info->scheme = scheme;
cd->info->init = init;
cd->next = registeredCODECS;
registeredCODECS = cd;
} else {
TIFFError("TIFFRegisterCODEC",
"No space to register compression scheme %s", name);
return NULL;
}
return (cd->info);
}
void
TIFFUnRegisterCODEC(TIFFCodec* c)
{
codec_t* cd;
codec_t** pcd;
for (pcd = &registeredCODECS; (cd = *pcd); pcd = &cd->next)
if (cd->info == c) {
*pcd = cd->next;
_TIFFfree(cd);
return;
}
TIFFError("TIFFUnRegisterCODEC",
"Cannot remove compression scheme %s; not registered", c->name);
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,267 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _TIFFDIR_
#define _TIFFDIR_
/*
* ``Library-private'' Directory-related Definitions.
*/
/*
* Internal format of a TIFF directory entry.
*/
typedef struct {
#define FIELD_SETLONGS 4
/* bit vector of fields that are set */
u_long td_fieldsset[FIELD_SETLONGS];
uint32 td_imagewidth, td_imagelength, td_imagedepth;
uint32 td_tilewidth, td_tilelength, td_tiledepth;
uint32 td_subfiletype;
uint16 td_bitspersample;
uint16 td_sampleformat;
uint16 td_compression;
uint16 td_photometric;
uint16 td_threshholding;
uint16 td_fillorder;
uint16 td_orientation;
uint16 td_samplesperpixel;
uint32 td_rowsperstrip;
uint16 td_minsamplevalue, td_maxsamplevalue;
double td_sminsamplevalue, td_smaxsamplevalue;
float td_xresolution, td_yresolution;
uint16 td_resolutionunit;
uint16 td_planarconfig;
float td_xposition, td_yposition;
uint16 td_pagenumber[2];
uint16* td_colormap[3];
uint16 td_halftonehints[2];
uint16 td_extrasamples;
uint16* td_sampleinfo;
double td_stonits;
char* td_documentname;
char* td_artist;
char* td_datetime;
char* td_hostcomputer;
char* td_imagedescription;
char* td_make;
char* td_model;
char* td_copyright;
char* td_pagename;
tstrip_t td_stripsperimage;
tstrip_t td_nstrips; /* size of offset & bytecount arrays */
uint32* td_stripoffset;
uint32* td_stripbytecount;
#if SUBIFD_SUPPORT
uint16 td_nsubifd;
uint32* td_subifd;
#endif
#ifdef YCBCR_SUPPORT
float* td_ycbcrcoeffs;
uint16 td_ycbcrsubsampling[2];
uint16 td_ycbcrpositioning;
#endif
#ifdef COLORIMETRY_SUPPORT
float* td_whitepoint;
float* td_primarychromas;
float* td_refblackwhite;
uint16* td_transferfunction[3];
#endif
#ifdef CMYK_SUPPORT
uint16 td_inkset;
uint16 td_ninks;
uint16 td_dotrange[2];
int td_inknameslen;
char* td_inknames;
char* td_targetprinter;
#endif
#ifdef ICC_SUPPORT
uint32 td_profileLength;
void *td_profileData;
#endif
#ifdef PHOTOSHOP_SUPPORT
uint32 td_photoshopLength;
void *td_photoshopData;
#endif
#ifdef IPTC_SUPPORT
uint32 td_richtiffiptcLength;
void *td_richtiffiptcData;
#endif
/* Begin Pixar Tag values. */
uint32 td_imagefullwidth, td_imagefulllength;
char* td_textureformat;
char* td_wrapmodes;
float td_fovcot;
float* td_matrixWorldToScreen;
float* td_matrixWorldToCamera;
/* End Pixar Tag Values. */
uint32 td_xmlpacketLength;
void *td_xmlpacketData;
int td_customValueCount;
TIFFTagValue *td_customValues;
} TIFFDirectory;
/*
* Field flags used to indicate fields that have
* been set in a directory, and to reference fields
* when manipulating a directory.
*/
/*
* FIELD_IGNORE is used to signify tags that are to
* be processed but otherwise ignored. This permits
* antiquated tags to be quietly read and discarded.
* Note that a bit *is* allocated for ignored tags;
* this is understood by the directory reading logic
* which uses this fact to avoid special-case handling
*/
#define FIELD_IGNORE 0
/* multi-item fields */
#define FIELD_IMAGEDIMENSIONS 1
#define FIELD_TILEDIMENSIONS 2
#define FIELD_RESOLUTION 3
#define FIELD_POSITION 4
/* single-item fields */
#define FIELD_SUBFILETYPE 5
#define FIELD_BITSPERSAMPLE 6
#define FIELD_COMPRESSION 7
#define FIELD_PHOTOMETRIC 8
#define FIELD_THRESHHOLDING 9
#define FIELD_FILLORDER 10
#define FIELD_DOCUMENTNAME 11
#define FIELD_IMAGEDESCRIPTION 12
#define FIELD_MAKE 13
#define FIELD_MODEL 14
#define FIELD_ORIENTATION 15
#define FIELD_SAMPLESPERPIXEL 16
#define FIELD_ROWSPERSTRIP 17
#define FIELD_MINSAMPLEVALUE 18
#define FIELD_MAXSAMPLEVALUE 19
#define FIELD_PLANARCONFIG 20
#define FIELD_PAGENAME 21
#define FIELD_RESOLUTIONUNIT 22
#define FIELD_PAGENUMBER 23
#define FIELD_STRIPBYTECOUNTS 24
#define FIELD_STRIPOFFSETS 25
#define FIELD_COLORMAP 26
#define FIELD_ARTIST 27
#define FIELD_DATETIME 28
#define FIELD_HOSTCOMPUTER 29
/* unused - was FIELD_SOFTWARE 30 */
#define FIELD_EXTRASAMPLES 31
#define FIELD_SAMPLEFORMAT 32
#define FIELD_SMINSAMPLEVALUE 33
#define FIELD_SMAXSAMPLEVALUE 34
#define FIELD_IMAGEDEPTH 35
#define FIELD_TILEDEPTH 36
#define FIELD_HALFTONEHINTS 37
#define FIELD_YCBCRCOEFFICIENTS 38
#define FIELD_YCBCRSUBSAMPLING 39
#define FIELD_YCBCRPOSITIONING 40
#define FIELD_REFBLACKWHITE 41
#define FIELD_WHITEPOINT 42
#define FIELD_PRIMARYCHROMAS 43
#define FIELD_TRANSFERFUNCTION 44
#define FIELD_INKSET 45
#define FIELD_INKNAMES 46
#define FIELD_DOTRANGE 47
#define FIELD_TARGETPRINTER 48
#define FIELD_SUBIFD 49
#define FIELD_NUMBEROFINKS 50
#define FIELD_ICCPROFILE 51
#define FIELD_PHOTOSHOP 52
#define FIELD_RICHTIFFIPTC 53
#define FIELD_STONITS 54
/* Begin PIXAR */
#define FIELD_IMAGEFULLWIDTH 55
#define FIELD_IMAGEFULLLENGTH 56
#define FIELD_TEXTUREFORMAT 57
#define FIELD_WRAPMODES 58
#define FIELD_FOVCOT 59
#define FIELD_MATRIX_WORLDTOSCREEN 60
#define FIELD_MATRIX_WORLDTOCAMERA 61
#define FIELD_COPYRIGHT 62
#define FIELD_XMLPACKET 63
/* FIELD_CUSTOM (see tiffio.h) 65 */
/* end of support for well-known tags; codec-private tags follow */
#define FIELD_CODEC 66 /* base of codec-private tags */
/*
* Pseudo-tags don't normally need field bits since they
* are not written to an output file (by definition).
* The library also has express logic to always query a
* codec for a pseudo-tag so allocating a field bit for
* one is a waste. If codec wants to promote the notion
* of a pseudo-tag being ``set'' or ``unset'' then it can
* do using internal state flags without polluting the
* field bit space defined for real tags.
*/
#define FIELD_PSEUDO 0
#define FIELD_LAST (32*FIELD_SETLONGS-1)
#define TIFFExtractData(tif, type, v) \
((uint32) ((tif)->tif_header.tiff_magic == TIFF_BIGENDIAN ? \
((v) >> (tif)->tif_typeshift[type]) & (tif)->tif_typemask[type] : \
(v) & (tif)->tif_typemask[type]))
#define TIFFInsertData(tif, type, v) \
((uint32) ((tif)->tif_header.tiff_magic == TIFF_BIGENDIAN ? \
((v) & (tif)->tif_typemask[type]) << (tif)->tif_typeshift[type] : \
(v) & (tif)->tif_typemask[type]))
#define BITn(n) (((u_long)1L)<<((n)&0x1f))
#define BITFIELDn(tif, n) ((tif)->tif_dir.td_fieldsset[(n)/32])
#define TIFFFieldSet(tif, field) (BITFIELDn(tif, field) & BITn(field))
#define TIFFSetFieldBit(tif, field) (BITFIELDn(tif, field) |= BITn(field))
#define TIFFClrFieldBit(tif, field) (BITFIELDn(tif, field) &= ~BITn(field))
#define FieldSet(fields, f) (fields[(f)/32] & BITn(f))
#define ResetFieldBit(fields, f) (fields[(f)/32] &= ~BITn(f))
#if defined(__cplusplus)
extern "C" {
#endif
extern void _TIFFSetupFieldInfo(TIFF*);
extern void _TIFFPrintFieldInfo(TIFF*, FILE*);
extern TIFFDataType _TIFFSampleToTagType(TIFF*);
extern const TIFFFieldInfo* _TIFFFindOrRegisterFieldInfo( TIFF *tif,
ttag_t tag,
TIFFDataType dt );
extern TIFFFieldInfo* _TIFFCreateAnonFieldInfo( TIFF *tif, ttag_t tag,
TIFFDataType dt );
#define _TIFFMergeFieldInfo TIFFMergeFieldInfo
#define _TIFFFindFieldInfo TIFFFindFieldInfo
#define _TIFFFieldWithTag TIFFFieldWithTag
#if defined(__cplusplus)
}
#endif
#endif /* _TIFFDIR_ */

View File

@@ -1,486 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*
* Core Directory Tag Support.
*/
#include "tiffiop.h"
#include <stdlib.h>
#include <assert.h>
#include <stdio.h>
/*
* NB: NB: THIS ARRAY IS ASSUMED TO BE SORTED BY TAG.
* If a tag can have both LONG and SHORT types
* then the LONG must be placed before the SHORT for
* writing to work properly.
*
* NOTE: The second field (field_readcount) and third field (field_writecount)
* sometimes use the values TIFF_VARIABLE (-1), TIFF_VARIABLE2 (-3)
* and TIFFTAG_SPP (-2). The macros should be used but would throw off
* the formatting of the code, so please interprete the -1, -2 and -3
* values accordingly.
*/
#ifndef VMS
static
#endif
const TIFFFieldInfo tiffFieldInfo[] = {
{ TIFFTAG_SUBFILETYPE, 1, 1, TIFF_LONG, FIELD_SUBFILETYPE,
TRUE, FALSE, "SubfileType" },
/* XXX SHORT for compatibility w/ old versions of the library */
{ TIFFTAG_SUBFILETYPE, 1, 1, TIFF_SHORT, FIELD_SUBFILETYPE,
TRUE, FALSE, "SubfileType" },
{ TIFFTAG_OSUBFILETYPE, 1, 1, TIFF_SHORT, FIELD_SUBFILETYPE,
TRUE, FALSE, "OldSubfileType" },
{ TIFFTAG_IMAGEWIDTH, 1, 1, TIFF_LONG, FIELD_IMAGEDIMENSIONS,
FALSE, FALSE, "ImageWidth" },
{ TIFFTAG_IMAGEWIDTH, 1, 1, TIFF_SHORT, FIELD_IMAGEDIMENSIONS,
FALSE, FALSE, "ImageWidth" },
{ TIFFTAG_IMAGELENGTH, 1, 1, TIFF_LONG, FIELD_IMAGEDIMENSIONS,
TRUE, FALSE, "ImageLength" },
{ TIFFTAG_IMAGELENGTH, 1, 1, TIFF_SHORT, FIELD_IMAGEDIMENSIONS,
TRUE, FALSE, "ImageLength" },
/* XXX LONG for compatibility with some broken TIFF writers */
{ TIFFTAG_BITSPERSAMPLE, -1,-1, TIFF_LONG, FIELD_BITSPERSAMPLE,
FALSE, FALSE, "BitsPerSample" },
{ TIFFTAG_BITSPERSAMPLE, -1,-1, TIFF_SHORT, FIELD_BITSPERSAMPLE,
FALSE, FALSE, "BitsPerSample" },
/* XXX LONG for compatibility with some broken TIFF writers */
{ TIFFTAG_COMPRESSION, -1, 1, TIFF_LONG, FIELD_COMPRESSION,
FALSE, FALSE, "Compression" },
{ TIFFTAG_COMPRESSION, -1, 1, TIFF_SHORT, FIELD_COMPRESSION,
FALSE, FALSE, "Compression" },
/* XXX LONG for compatibility with some broken TIFF writers */
{ TIFFTAG_PHOTOMETRIC, 1, 1, TIFF_LONG, FIELD_PHOTOMETRIC,
FALSE, FALSE, "PhotometricInterpretation" },
{ TIFFTAG_PHOTOMETRIC, 1, 1, TIFF_SHORT, FIELD_PHOTOMETRIC,
FALSE, FALSE, "PhotometricInterpretation" },
{ TIFFTAG_THRESHHOLDING, 1, 1, TIFF_SHORT, FIELD_THRESHHOLDING,
TRUE, FALSE, "Threshholding" },
{ TIFFTAG_CELLWIDTH, 1, 1, TIFF_SHORT, FIELD_IGNORE,
TRUE, FALSE, "CellWidth" },
{ TIFFTAG_CELLLENGTH, 1, 1, TIFF_SHORT, FIELD_IGNORE,
TRUE, FALSE, "CellLength" },
{ TIFFTAG_FILLORDER, 1, 1, TIFF_SHORT, FIELD_FILLORDER,
FALSE, FALSE, "FillOrder" },
{ TIFFTAG_DOCUMENTNAME, -1,-1, TIFF_ASCII, FIELD_DOCUMENTNAME,
TRUE, FALSE, "DocumentName" },
{ TIFFTAG_IMAGEDESCRIPTION, -1,-1, TIFF_ASCII, FIELD_IMAGEDESCRIPTION,
TRUE, FALSE, "ImageDescription" },
{ TIFFTAG_MAKE, -1,-1, TIFF_ASCII, FIELD_MAKE,
TRUE, FALSE, "Make" },
{ TIFFTAG_MODEL, -1,-1, TIFF_ASCII, FIELD_MODEL,
TRUE, FALSE, "Model" },
{ TIFFTAG_STRIPOFFSETS, -1,-1, TIFF_LONG, FIELD_STRIPOFFSETS,
FALSE, FALSE, "StripOffsets" },
{ TIFFTAG_STRIPOFFSETS, -1,-1, TIFF_SHORT, FIELD_STRIPOFFSETS,
FALSE, FALSE, "StripOffsets" },
{ TIFFTAG_ORIENTATION, 1, 1, TIFF_SHORT, FIELD_ORIENTATION,
FALSE, FALSE, "Orientation" },
{ TIFFTAG_SAMPLESPERPIXEL, 1, 1, TIFF_SHORT, FIELD_SAMPLESPERPIXEL,
FALSE, FALSE, "SamplesPerPixel" },
{ TIFFTAG_ROWSPERSTRIP, 1, 1, TIFF_LONG, FIELD_ROWSPERSTRIP,
FALSE, FALSE, "RowsPerStrip" },
{ TIFFTAG_ROWSPERSTRIP, 1, 1, TIFF_SHORT, FIELD_ROWSPERSTRIP,
FALSE, FALSE, "RowsPerStrip" },
{ TIFFTAG_STRIPBYTECOUNTS, -1,-1, TIFF_LONG, FIELD_STRIPBYTECOUNTS,
FALSE, FALSE, "StripByteCounts" },
{ TIFFTAG_STRIPBYTECOUNTS, -1,-1, TIFF_SHORT, FIELD_STRIPBYTECOUNTS,
FALSE, FALSE, "StripByteCounts" },
{ TIFFTAG_MINSAMPLEVALUE, -2,-1, TIFF_SHORT, FIELD_MINSAMPLEVALUE,
TRUE, FALSE, "MinSampleValue" },
{ TIFFTAG_MAXSAMPLEVALUE, -2,-1, TIFF_SHORT, FIELD_MAXSAMPLEVALUE,
TRUE, FALSE, "MaxSampleValue" },
{ TIFFTAG_XRESOLUTION, 1, 1, TIFF_RATIONAL, FIELD_RESOLUTION,
FALSE, FALSE, "XResolution" },
{ TIFFTAG_YRESOLUTION, 1, 1, TIFF_RATIONAL, FIELD_RESOLUTION,
FALSE, FALSE, "YResolution" },
{ TIFFTAG_PLANARCONFIG, 1, 1, TIFF_SHORT, FIELD_PLANARCONFIG,
FALSE, FALSE, "PlanarConfiguration" },
{ TIFFTAG_PAGENAME, -1,-1, TIFF_ASCII, FIELD_PAGENAME,
TRUE, FALSE, "PageName" },
{ TIFFTAG_XPOSITION, 1, 1, TIFF_RATIONAL, FIELD_POSITION,
TRUE, FALSE, "XPosition" },
{ TIFFTAG_YPOSITION, 1, 1, TIFF_RATIONAL, FIELD_POSITION,
TRUE, FALSE, "YPosition" },
{ TIFFTAG_FREEOFFSETS, -1,-1, TIFF_LONG, FIELD_IGNORE,
FALSE, FALSE, "FreeOffsets" },
{ TIFFTAG_FREEBYTECOUNTS, -1,-1, TIFF_LONG, FIELD_IGNORE,
FALSE, FALSE, "FreeByteCounts" },
{ TIFFTAG_GRAYRESPONSEUNIT, 1, 1, TIFF_SHORT, FIELD_IGNORE,
TRUE, FALSE, "GrayResponseUnit" },
{ TIFFTAG_GRAYRESPONSECURVE,-1,-1, TIFF_SHORT, FIELD_IGNORE,
TRUE, FALSE, "GrayResponseCurve" },
{ TIFFTAG_RESOLUTIONUNIT, 1, 1, TIFF_SHORT, FIELD_RESOLUTIONUNIT,
FALSE, FALSE, "ResolutionUnit" },
{ TIFFTAG_PAGENUMBER, 2, 2, TIFF_SHORT, FIELD_PAGENUMBER,
TRUE, FALSE, "PageNumber" },
{ TIFFTAG_COLORRESPONSEUNIT, 1, 1, TIFF_SHORT, FIELD_IGNORE,
TRUE, FALSE, "ColorResponseUnit" },
{ TIFFTAG_TRANSFERFUNCTION, -1,-1, TIFF_SHORT, FIELD_TRANSFERFUNCTION,
TRUE, FALSE, "TransferFunction" },
{ TIFFTAG_SOFTWARE, -1,-1, TIFF_ASCII, FIELD_CUSTOM,
TRUE, FALSE, "Software" },
{ TIFFTAG_DATETIME, 20,20, TIFF_ASCII, FIELD_DATETIME,
TRUE, FALSE, "DateTime" },
{ TIFFTAG_ARTIST, -1,-1, TIFF_ASCII, FIELD_ARTIST,
TRUE, FALSE, "Artist" },
{ TIFFTAG_HOSTCOMPUTER, -1,-1, TIFF_ASCII, FIELD_HOSTCOMPUTER,
TRUE, FALSE, "HostComputer" },
{ TIFFTAG_WHITEPOINT, 2, 2, TIFF_RATIONAL,FIELD_WHITEPOINT,
TRUE, FALSE, "WhitePoint" },
{ TIFFTAG_PRIMARYCHROMATICITIES,6,6,TIFF_RATIONAL,FIELD_PRIMARYCHROMAS,
TRUE, FALSE, "PrimaryChromaticities" },
{ TIFFTAG_COLORMAP, -1,-1, TIFF_SHORT, FIELD_COLORMAP,
TRUE, FALSE, "ColorMap" },
{ TIFFTAG_HALFTONEHINTS, 2, 2, TIFF_SHORT, FIELD_HALFTONEHINTS,
TRUE, FALSE, "HalftoneHints" },
{ TIFFTAG_TILEWIDTH, 1, 1, TIFF_LONG, FIELD_TILEDIMENSIONS,
FALSE, FALSE, "TileWidth" },
{ TIFFTAG_TILEWIDTH, 1, 1, TIFF_SHORT, FIELD_TILEDIMENSIONS,
FALSE, FALSE, "TileWidth" },
{ TIFFTAG_TILELENGTH, 1, 1, TIFF_LONG, FIELD_TILEDIMENSIONS,
FALSE, FALSE, "TileLength" },
{ TIFFTAG_TILELENGTH, 1, 1, TIFF_SHORT, FIELD_TILEDIMENSIONS,
FALSE, FALSE, "TileLength" },
{ TIFFTAG_TILEOFFSETS, -1, 1, TIFF_LONG, FIELD_STRIPOFFSETS,
FALSE, FALSE, "TileOffsets" },
{ TIFFTAG_TILEBYTECOUNTS, -1, 1, TIFF_LONG, FIELD_STRIPBYTECOUNTS,
FALSE, FALSE, "TileByteCounts" },
{ TIFFTAG_TILEBYTECOUNTS, -1, 1, TIFF_SHORT, FIELD_STRIPBYTECOUNTS,
FALSE, FALSE, "TileByteCounts" },
{ TIFFTAG_SUBIFD, -1,-1, TIFF_LONG, FIELD_SUBIFD,
TRUE, TRUE, "SubIFD" },
{ TIFFTAG_INKSET, 1, 1, TIFF_SHORT, FIELD_INKSET,
FALSE, FALSE, "InkSet" },
{ TIFFTAG_INKNAMES, -1,-1, TIFF_ASCII, FIELD_INKNAMES,
TRUE, TRUE, "InkNames" },
{ TIFFTAG_NUMBEROFINKS, 1, 1, TIFF_SHORT, FIELD_NUMBEROFINKS,
TRUE, FALSE, "NumberOfInks" },
{ TIFFTAG_DOTRANGE, 2, 2, TIFF_SHORT, FIELD_DOTRANGE,
FALSE, FALSE, "DotRange" },
{ TIFFTAG_DOTRANGE, 2, 2, TIFF_BYTE, FIELD_DOTRANGE,
FALSE, FALSE, "DotRange" },
{ TIFFTAG_TARGETPRINTER, -1,-1, TIFF_ASCII, FIELD_TARGETPRINTER,
TRUE, FALSE, "TargetPrinter" },
{ TIFFTAG_EXTRASAMPLES, -1,-1, TIFF_SHORT, FIELD_EXTRASAMPLES,
FALSE, FALSE, "ExtraSamples" },
/* XXX for bogus Adobe Photoshop v2.5 files */
{ TIFFTAG_EXTRASAMPLES, -1,-1, TIFF_BYTE, FIELD_EXTRASAMPLES,
FALSE, FALSE, "ExtraSamples" },
{ TIFFTAG_SAMPLEFORMAT, -1,-1, TIFF_SHORT, FIELD_SAMPLEFORMAT,
FALSE, FALSE, "SampleFormat" },
{ TIFFTAG_SMINSAMPLEVALUE, -2,-1, TIFF_ANY, FIELD_SMINSAMPLEVALUE,
TRUE, FALSE, "SMinSampleValue" },
{ TIFFTAG_SMAXSAMPLEVALUE, -2,-1, TIFF_ANY, FIELD_SMAXSAMPLEVALUE,
TRUE, FALSE, "SMaxSampleValue" },
{ TIFFTAG_YCBCRCOEFFICIENTS, 3, 3, TIFF_RATIONAL, FIELD_YCBCRCOEFFICIENTS,
FALSE, FALSE, "YCbCrCoefficients" },
{ TIFFTAG_YCBCRSUBSAMPLING, 2, 2, TIFF_SHORT, FIELD_YCBCRSUBSAMPLING,
FALSE, FALSE, "YCbCrSubsampling" },
{ TIFFTAG_YCBCRPOSITIONING, 1, 1, TIFF_SHORT, FIELD_YCBCRPOSITIONING,
FALSE, FALSE, "YCbCrPositioning" },
{ TIFFTAG_REFERENCEBLACKWHITE,6,6,TIFF_RATIONAL, FIELD_REFBLACKWHITE,
TRUE, FALSE, "ReferenceBlackWhite" },
/* XXX temporarily accept LONG for backwards compatibility */
{ TIFFTAG_REFERENCEBLACKWHITE,6,6,TIFF_LONG, FIELD_REFBLACKWHITE,
TRUE, FALSE, "ReferenceBlackWhite" },
{ TIFFTAG_XMLPACKET, -1,-3, TIFF_UNDEFINED, FIELD_XMLPACKET,
FALSE, TRUE, "XMLPacket" },
/* begin SGI tags */
{ TIFFTAG_MATTEING, 1, 1, TIFF_SHORT, FIELD_EXTRASAMPLES,
FALSE, FALSE, "Matteing" },
{ TIFFTAG_DATATYPE, -2,-1, TIFF_SHORT, FIELD_SAMPLEFORMAT,
FALSE, FALSE, "DataType" },
{ TIFFTAG_IMAGEDEPTH, 1, 1, TIFF_LONG, FIELD_IMAGEDEPTH,
FALSE, FALSE, "ImageDepth" },
{ TIFFTAG_IMAGEDEPTH, 1, 1, TIFF_SHORT, FIELD_IMAGEDEPTH,
FALSE, FALSE, "ImageDepth" },
{ TIFFTAG_TILEDEPTH, 1, 1, TIFF_LONG, FIELD_TILEDEPTH,
FALSE, FALSE, "TileDepth" },
{ TIFFTAG_TILEDEPTH, 1, 1, TIFF_SHORT, FIELD_TILEDEPTH,
FALSE, FALSE, "TileDepth" },
/* end SGI tags */
/* begin Pixar tags */
{ TIFFTAG_PIXAR_IMAGEFULLWIDTH, 1, 1, TIFF_LONG, FIELD_IMAGEFULLWIDTH,
TRUE, FALSE, "ImageFullWidth" },
{ TIFFTAG_PIXAR_IMAGEFULLLENGTH, 1, 1, TIFF_LONG, FIELD_IMAGEFULLLENGTH,
TRUE, FALSE, "ImageFullLength" },
{ TIFFTAG_PIXAR_TEXTUREFORMAT, -1,-1, TIFF_ASCII, FIELD_TEXTUREFORMAT,
TRUE, FALSE, "TextureFormat" },
{ TIFFTAG_PIXAR_WRAPMODES, -1,-1, TIFF_ASCII, FIELD_WRAPMODES,
TRUE, FALSE, "TextureWrapModes" },
{ TIFFTAG_PIXAR_FOVCOT, 1, 1, TIFF_FLOAT, FIELD_FOVCOT,
TRUE, FALSE, "FieldOfViewCotan" },
{ TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN, 16,16, TIFF_FLOAT,
FIELD_MATRIX_WORLDTOSCREEN, TRUE, FALSE, "MatrixWorldToScreen" },
{ TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA, 16,16, TIFF_FLOAT,
FIELD_MATRIX_WORLDTOCAMERA, TRUE, FALSE, "MatrixWorldToCamera" },
{ TIFFTAG_COPYRIGHT, -1,-1, TIFF_ASCII, FIELD_COPYRIGHT,
TRUE, FALSE, "Copyright" },
/* end Pixar tags */
#ifdef IPTC_SUPPORT
#ifdef PHOTOSHOP_SUPPORT
{ TIFFTAG_RICHTIFFIPTC, -1,-1, TIFF_LONG, FIELD_RICHTIFFIPTC,
FALSE, TRUE, "RichTIFFIPTC" },
#else
{ TIFFTAG_RICHTIFFIPTC, -1,-3, TIFF_UNDEFINED, FIELD_RICHTIFFIPTC,
FALSE, TRUE, "RichTIFFIPTC" },
#endif
#endif
{ TIFFTAG_PHOTOSHOP, -1,-3, TIFF_BYTE, FIELD_PHOTOSHOP,
FALSE, TRUE, "Photoshop" },
{ TIFFTAG_ICCPROFILE, -1,-3, TIFF_UNDEFINED, FIELD_ICCPROFILE,
FALSE, TRUE, "ICC Profile" },
{ TIFFTAG_STONITS, 1, 1, TIFF_DOUBLE, FIELD_STONITS,
FALSE, FALSE, "StoNits" },
};
#define N(a) (sizeof (a) / sizeof (a[0]))
void
_TIFFSetupFieldInfo(TIFF* tif)
{
if (tif->tif_fieldinfo) {
int i;
for (i = 0; i < tif->tif_nfields; i++)
{
TIFFFieldInfo *fld = tif->tif_fieldinfo[i];
if (fld->field_bit == FIELD_CUSTOM &&
strncmp("Tag ", fld->field_name, 4) == 0)
{
_TIFFfree(fld->field_name);
_TIFFfree(fld);
}
}
_TIFFfree(tif->tif_fieldinfo);
tif->tif_nfields = 0;
}
_TIFFMergeFieldInfo(tif, tiffFieldInfo, N(tiffFieldInfo));
}
static int
tagCompare(const void* a, const void* b)
{
const TIFFFieldInfo* ta = *(const TIFFFieldInfo**) a;
const TIFFFieldInfo* tb = *(const TIFFFieldInfo**) b;
/* NB: be careful of return values for 16-bit platforms */
if (ta->field_tag != tb->field_tag)
return (ta->field_tag < tb->field_tag ? -1 : 1);
else
return ((int)tb->field_type - (int)ta->field_type);
}
void
_TIFFMergeFieldInfo(TIFF* tif, const TIFFFieldInfo info[], int n)
{
TIFFFieldInfo** tp;
int i;
if (tif->tif_nfields > 0) {
tif->tif_fieldinfo = (TIFFFieldInfo**)
_TIFFrealloc(tif->tif_fieldinfo,
(tif->tif_nfields+n) * sizeof (TIFFFieldInfo*));
} else {
tif->tif_fieldinfo = (TIFFFieldInfo**)
_TIFFmalloc(n * sizeof (TIFFFieldInfo*));
}
assert(tif->tif_fieldinfo != NULL);
tp = &tif->tif_fieldinfo[tif->tif_nfields];
for (i = 0; i < n; i++)
tp[i] = (TIFFFieldInfo*) &info[i]; /* XXX */
/* Sort the field info by tag number */
qsort(tif->tif_fieldinfo, (size_t) (tif->tif_nfields += n),
sizeof (TIFFFieldInfo*), tagCompare);
}
void
_TIFFPrintFieldInfo(TIFF* tif, FILE* fd)
{
int i;
fprintf(fd, "%s: \n", tif->tif_name);
for (i = 0; i < tif->tif_nfields; i++) {
const TIFFFieldInfo* fip = tif->tif_fieldinfo[i];
fprintf(fd, "field[%2d] %5lu, %2d, %2d, %d, %2d, %5s, %5s, %s\n"
, i
, (unsigned long) fip->field_tag
, fip->field_readcount, fip->field_writecount
, fip->field_type
, fip->field_bit
, fip->field_oktochange ? "TRUE" : "FALSE"
, fip->field_passcount ? "TRUE" : "FALSE"
, fip->field_name
);
}
}
/*
* Return size of TIFFDataType in bytes
*/
int
TIFFDataWidth(TIFFDataType type)
{
switch(type)
{
case 0: /* nothing */
case 1: /* TIFF_BYTE */
case 2: /* TIFF_ASCII */
case 6: /* TIFF_SBYTE */
case 7: /* TIFF_UNDEFINED */
return 1;
case 3: /* TIFF_SHORT */
case 8: /* TIFF_SSHORT */
return 2;
case 4: /* TIFF_LONG */
case 9: /* TIFF_SLONG */
case 11: /* TIFF_FLOAT */
case 13: /* TIFF_IFD */
return 4;
case 5: /* TIFF_RATIONAL */
case 10: /* TIFF_SRATIONAL */
case 12: /* TIFF_DOUBLE */
return 8;
default:
return 0; /* will return 0 for unknown types */
}
}
/*
* Return nearest TIFFDataType to the sample type of an image.
*/
TIFFDataType
_TIFFSampleToTagType(TIFF* tif)
{
uint32 bps = TIFFhowmany8(tif->tif_dir.td_bitspersample);
switch (tif->tif_dir.td_sampleformat) {
case SAMPLEFORMAT_IEEEFP:
return (bps == 4 ? TIFF_FLOAT : TIFF_DOUBLE);
case SAMPLEFORMAT_INT:
return (bps <= 1 ? TIFF_SBYTE :
bps <= 2 ? TIFF_SSHORT : TIFF_SLONG);
case SAMPLEFORMAT_UINT:
return (bps <= 1 ? TIFF_BYTE :
bps <= 2 ? TIFF_SHORT : TIFF_LONG);
case SAMPLEFORMAT_VOID:
return (TIFF_UNDEFINED);
}
/*NOTREACHED*/
return (TIFF_UNDEFINED);
}
const TIFFFieldInfo*
_TIFFFindFieldInfo(TIFF* tif, ttag_t tag, TIFFDataType dt)
{
static const TIFFFieldInfo *last = NULL;
int i, n;
if (last && last->field_tag == tag &&
(dt == TIFF_ANY || dt == last->field_type))
return (last);
/* NB: if table gets big, use sorted search (e.g. binary search) */
if(dt != TIFF_ANY) {
TIFFFieldInfo key = {0, 0, 0, 0, 0, 0, 0, 0};
key.field_tag = tag;
key.field_type = dt;
return((const TIFFFieldInfo *) bsearch(&key,
tif->tif_fieldinfo,
tif->tif_nfields,
sizeof(TIFFFieldInfo),
tagCompare));
} else for (i = 0, n = tif->tif_nfields; i < n; i++) {
const TIFFFieldInfo* fip = tif->tif_fieldinfo[i];
if (fip->field_tag == tag &&
(dt == TIFF_ANY || fip->field_type == dt))
return (last = fip);
}
return ((const TIFFFieldInfo *)0);
}
const TIFFFieldInfo*
_TIFFFieldWithTag(TIFF* tif, ttag_t tag)
{
const TIFFFieldInfo* fip = _TIFFFindFieldInfo(tif, tag, TIFF_ANY);
if (!fip) {
TIFFError("TIFFFieldWithTag",
"Internal error, unknown tag 0x%x", (u_int) tag);
assert(fip != NULL);
/*NOTREACHED*/
}
return (fip);
}
const TIFFFieldInfo*
_TIFFFindOrRegisterFieldInfo( TIFF *tif, ttag_t tag, TIFFDataType dt )
{
const TIFFFieldInfo *fld;
fld = _TIFFFindFieldInfo( tif, tag, dt );
if( fld == NULL )
{
fld = _TIFFCreateAnonFieldInfo( tif, tag, dt );
_TIFFMergeFieldInfo( tif, fld, 1 );
}
return fld;
}
TIFFFieldInfo*
_TIFFCreateAnonFieldInfo(TIFF *tif, ttag_t tag, TIFFDataType field_type)
{
TIFFFieldInfo *fld;
fld = (TIFFFieldInfo *) _TIFFmalloc(sizeof (TIFFFieldInfo));
if (fld == NULL)
return NULL;
_TIFFmemset( fld, 0, sizeof(TIFFFieldInfo) );
fld->field_tag = tag;
fld->field_readcount = TIFF_VARIABLE;
fld->field_writecount = TIFF_VARIABLE;
fld->field_type = field_type;
fld->field_bit = FIELD_CUSTOM;
fld->field_oktochange = TRUE;
fld->field_passcount = TRUE;
fld->field_name = (char *) _TIFFmalloc(32);
if (fld->field_name == NULL) {
_TIFFfree(fld);
return NULL;
}
/* note that this name is a special sign to TIFFClose() and
* _TIFFSetupFieldInfo() to free the field
*/
sprintf(fld->field_name, "Tag %d", (int) tag);
return fld;
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,118 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*
* "Null" Compression Algorithm Support.
*/
#include "tiffiop.h"
#include <assert.h>
/*
* Encode a hunk of pixels.
*/
static int
DumpModeEncode(TIFF* tif, tidata_t pp, tsize_t cc, tsample_t s)
{
(void) s;
while (cc > 0) {
tsize_t n;
n = cc;
if (tif->tif_rawcc + n > tif->tif_rawdatasize)
n = tif->tif_rawdatasize - tif->tif_rawcc;
assert( n > 0 );
/*
* Avoid copy if client has setup raw
* data buffer to avoid extra copy.
*/
if (tif->tif_rawcp != pp)
_TIFFmemcpy(tif->tif_rawcp, pp, n);
tif->tif_rawcp += n;
tif->tif_rawcc += n;
pp += n;
cc -= n;
if (tif->tif_rawcc >= tif->tif_rawdatasize &&
!TIFFFlushData1(tif))
return (-1);
}
return (1);
}
/*
* Decode a hunk of pixels.
*/
static int
DumpModeDecode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
{
(void) s;
if (tif->tif_rawcc < cc) {
TIFFError(tif->tif_name,
"DumpModeDecode: Not enough data for scanline %d",
tif->tif_row);
return (0);
}
/*
* Avoid copy if client has setup raw
* data buffer to avoid extra copy.
*/
if (tif->tif_rawcp != buf)
_TIFFmemcpy(buf, tif->tif_rawcp, cc);
tif->tif_rawcp += cc;
tif->tif_rawcc -= cc;
return (1);
}
/*
* Seek forwards nrows in the current strip.
*/
static int
DumpModeSeek(TIFF* tif, uint32 nrows)
{
tif->tif_rawcp += nrows * tif->tif_scanlinesize;
tif->tif_rawcc -= nrows * tif->tif_scanlinesize;
return (1);
}
/*
* Initialize dump mode.
*/
int
TIFFInitDumpMode(TIFF* tif, int scheme)
{
(void) scheme;
tif->tif_decoderow = DumpModeDecode;
tif->tif_decodestrip = DumpModeDecode;
tif->tif_decodetile = DumpModeDecode;
tif->tif_encoderow = DumpModeEncode;
tif->tif_encodestrip = DumpModeEncode;
tif->tif_encodetile = DumpModeEncode;
tif->tif_seek = DumpModeSeek;
return (1);
}

View File

@@ -1,49 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*/
#include "tiffiop.h"
TIFFErrorHandler
TIFFSetErrorHandler(TIFFErrorHandler handler)
{
TIFFErrorHandler prev = _TIFFerrorHandler;
_TIFFerrorHandler = handler;
return (prev);
}
void
TIFFError(const char* module, const char* fmt, ...)
{
if (_TIFFerrorHandler) {
va_list ap;
va_start(ap, fmt);
(*_TIFFerrorHandler)(module, fmt, ap);
va_end(ap);
}
}

View File

@@ -1,112 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*
* Various routines support external extension of the tag set, and other
* application extension capabilities.
*/
#include "tiffiop.h"
#include <assert.h>
int TIFFGetTagListCount( TIFF *tif )
{
TIFFDirectory* td = &tif->tif_dir;
return td->td_customValueCount;
}
ttag_t TIFFGetTagListEntry( TIFF *tif, int tag_index )
{
TIFFDirectory* td = &tif->tif_dir;
if( tag_index < 0 || tag_index >= td->td_customValueCount )
return (ttag_t) -1;
else
return td->td_customValues[tag_index].info->field_tag;
}
/*
** This provides read/write access to the TIFFTagMethods within the TIFF
** structure to application code without giving access to the private
** TIFF structure.
*/
TIFFTagMethods *TIFFAccessTagMethods( TIFF *tif )
{
return &(tif->tif_tagmethods);
}
void *TIFFGetClientInfo( TIFF *tif, const char *name )
{
TIFFClientInfoLink *link = tif->tif_clientinfo;
while( link != NULL && strcmp(link->name,name) != 0 )
link = link->next;
if( link != NULL )
return link->data;
else
return NULL;
}
void TIFFSetClientInfo( TIFF *tif, void *data, const char *name )
{
TIFFClientInfoLink *link = tif->tif_clientinfo;
/*
** Do we have an existing link with this name? If so, just
** set it.
*/
while( link != NULL && strcmp(link->name,name) != 0 )
link = link->next;
if( link != NULL )
{
link->data = data;
return;
}
/*
** Create a new link.
*/
link = (TIFFClientInfoLink *) _TIFFmalloc(sizeof(TIFFClientInfoLink));
assert (link != NULL);
link->next = tif->tif_clientinfo;
link->name = (char *) _TIFFmalloc(strlen(name)+1);
assert (link->name != NULL);
strcpy(link->name, name);
link->data = data;
tif->tif_clientinfo = link;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,525 +0,0 @@
/* $Id$ */
/*
* Copyright (c) 1990-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _FAX3_
#define _FAX3_
/*
* TIFF Library.
*
* CCITT Group 3 (T.4) and Group 4 (T.6) Decompression Support.
*
* Decoder support is derived, with permission, from the code
* in Frank Cringle's viewfax program;
* Copyright (C) 1990, 1995 Frank D. Cringle.
*/
#include "tiff.h"
/*
* To override the default routine used to image decoded
* spans one can use the pseduo tag TIFFTAG_FAXFILLFUNC.
* The routine must have the type signature given below;
* for example:
*
* fillruns(unsigned char* buf, uint32* runs, uint32* erun, uint32 lastx)
*
* where buf is place to set the bits, runs is the array of b&w run
* lengths (white then black), erun is the last run in the array, and
* lastx is the width of the row in pixels. Fill routines can assume
* the run array has room for at least lastx runs and can overwrite
* data in the run array as needed (e.g. to append zero runs to bring
* the count up to a nice multiple).
*/
typedef void (*TIFFFaxFillFunc)(unsigned char*, uint32*, uint32*, uint32);
/*
* The default run filler; made external for other decoders.
*/
#if defined(__cplusplus)
extern "C" {
#endif
extern void _TIFFFax3fillruns(unsigned char*, uint32*, uint32*, uint32);
#if defined(__cplusplus)
}
#endif
/* finite state machine codes */
#define S_Null 0
#define S_Pass 1
#define S_Horiz 2
#define S_V0 3
#define S_VR 4
#define S_VL 5
#define S_Ext 6
#define S_TermW 7
#define S_TermB 8
#define S_MakeUpW 9
#define S_MakeUpB 10
#define S_MakeUp 11
#define S_EOL 12
typedef struct { /* state table entry */
unsigned char State; /* see above */
unsigned char Width; /* width of code in bits */
uint32 Param; /* unsigned 32-bit run length in bits */
} TIFFFaxTabEnt;
extern const TIFFFaxTabEnt TIFFFaxMainTable[];
extern const TIFFFaxTabEnt TIFFFaxWhiteTable[];
extern const TIFFFaxTabEnt TIFFFaxBlackTable[];
/*
* The following macros define the majority of the G3/G4 decoder
* algorithm using the state tables defined elsewhere. To build
* a decoder you need some setup code and some glue code. Note
* that you may also need/want to change the way the NeedBits*
* macros get input data if, for example, you know the data to be
* decoded is properly aligned and oriented (doing so before running
* the decoder can be a big performance win).
*
* Consult the decoder in the TIFF library for an idea of what you
* need to define and setup to make use of these definitions.
*
* NB: to enable a debugging version of these macros define FAX3_DEBUG
* before including this file. Trace output goes to stdout.
*/
#ifndef EndOfData
#define EndOfData() (cp >= ep)
#endif
/*
* Need <=8 or <=16 bits of input data. Unlike viewfax we
* cannot use/assume a word-aligned, properly bit swizzled
* input data set because data may come from an arbitrarily
* aligned, read-only source such as a memory-mapped file.
* Note also that the viewfax decoder does not check for
* running off the end of the input data buffer. This is
* possible for G3-encoded data because it prescans the input
* data to count EOL markers, but can cause problems for G4
* data. In any event, we don't prescan and must watch for
* running out of data since we can't permit the library to
* scan past the end of the input data buffer.
*
* Finally, note that we must handle remaindered data at the end
* of a strip specially. The coder asks for a fixed number of
* bits when scanning for the next code. This may be more bits
* than are actually present in the data stream. If we appear
* to run out of data but still have some number of valid bits
* remaining then we makeup the requested amount with zeros and
* return successfully. If the returned data is incorrect then
* we should be called again and get a premature EOF error;
* otherwise we should get the right answer.
*/
#ifndef NeedBits8
#define NeedBits8(n,eoflab) do { \
if (BitsAvail < (n)) { \
if (EndOfData()) { \
if (BitsAvail == 0) /* no valid bits */ \
goto eoflab; \
BitsAvail = (n); /* pad with zeros */ \
} else { \
BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail; \
BitsAvail += 8; \
} \
} \
} while (0)
#endif
#ifndef NeedBits16
#define NeedBits16(n,eoflab) do { \
if (BitsAvail < (n)) { \
if (EndOfData()) { \
if (BitsAvail == 0) /* no valid bits */ \
goto eoflab; \
BitsAvail = (n); /* pad with zeros */ \
} else { \
BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail; \
if ((BitsAvail += 8) < (n)) { \
if (EndOfData()) { \
/* NB: we know BitsAvail is non-zero here */ \
BitsAvail = (n); /* pad with zeros */ \
} else { \
BitAcc |= ((uint32) bitmap[*cp++])<<BitsAvail; \
BitsAvail += 8; \
} \
} \
} \
} \
} while (0)
#endif
#define GetBits(n) (BitAcc & ((1<<(n))-1))
#define ClrBits(n) do { \
BitsAvail -= (n); \
BitAcc >>= (n); \
} while (0)
#ifdef FAX3_DEBUG
static const char* StateNames[] = {
"Null ",
"Pass ",
"Horiz ",
"V0 ",
"VR ",
"VL ",
"Ext ",
"TermW ",
"TermB ",
"MakeUpW",
"MakeUpB",
"MakeUp ",
"EOL ",
};
#define DEBUG_SHOW putchar(BitAcc & (1 << t) ? '1' : '0')
#define LOOKUP8(wid,tab,eoflab) do { \
int t; \
NeedBits8(wid,eoflab); \
TabEnt = tab + GetBits(wid); \
printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail, \
StateNames[TabEnt->State], TabEnt->Param); \
for (t = 0; t < TabEnt->Width; t++) \
DEBUG_SHOW; \
putchar('\n'); \
fflush(stdout); \
ClrBits(TabEnt->Width); \
} while (0)
#define LOOKUP16(wid,tab,eoflab) do { \
int t; \
NeedBits16(wid,eoflab); \
TabEnt = tab + GetBits(wid); \
printf("%08lX/%d: %s%5d\t", (long) BitAcc, BitsAvail, \
StateNames[TabEnt->State], TabEnt->Param); \
for (t = 0; t < TabEnt->Width; t++) \
DEBUG_SHOW; \
putchar('\n'); \
fflush(stdout); \
ClrBits(TabEnt->Width); \
} while (0)
#define SETVAL(x) do { \
*pa++ = RunLength + (x); \
printf("SETVAL: %d\t%d\n", RunLength + (x), a0); \
a0 += x; \
RunLength = 0; \
} while (0)
#else
#define LOOKUP8(wid,tab,eoflab) do { \
NeedBits8(wid,eoflab); \
TabEnt = tab + GetBits(wid); \
ClrBits(TabEnt->Width); \
} while (0)
#define LOOKUP16(wid,tab,eoflab) do { \
NeedBits16(wid,eoflab); \
TabEnt = tab + GetBits(wid); \
ClrBits(TabEnt->Width); \
} while (0)
/*
* Append a run to the run length array for the
* current row and reset decoding state.
*/
#define SETVAL(x) do { \
*pa++ = RunLength + (x); \
a0 += (x); \
RunLength = 0; \
} while (0)
#endif
/*
* Synchronize input decoding at the start of each
* row by scanning for an EOL (if appropriate) and
* skipping any trash data that might be present
* after a decoding error. Note that the decoding
* done elsewhere that recognizes an EOL only consumes
* 11 consecutive zero bits. This means that if EOLcnt
* is non-zero then we still need to scan for the final flag
* bit that is part of the EOL code.
*/
#define SYNC_EOL(eoflab) do { \
if (EOLcnt == 0) { \
for (;;) { \
NeedBits16(11,eoflab); \
if (GetBits(11) == 0) \
break; \
ClrBits(1); \
} \
} \
for (;;) { \
NeedBits8(8,eoflab); \
if (GetBits(8)) \
break; \
ClrBits(8); \
} \
while (GetBits(1) == 0) \
ClrBits(1); \
ClrBits(1); /* EOL bit */ \
EOLcnt = 0; /* reset EOL counter/flag */ \
} while (0)
/*
* Cleanup the array of runs after decoding a row.
* We adjust final runs to insure the user buffer is not
* overwritten and/or undecoded area is white filled.
*/
#define CLEANUP_RUNS() do { \
if (RunLength) \
SETVAL(0); \
if (a0 != lastx) { \
badlength(a0, lastx); \
while (a0 > lastx && pa > thisrun) \
a0 -= *--pa; \
if (a0 < lastx) { \
if (a0 < 0) \
a0 = 0; \
if ((pa-thisrun)&1) \
SETVAL(0); \
SETVAL(lastx - a0); \
} else if (a0 > lastx) { \
SETVAL(lastx); \
SETVAL(0); \
} \
} \
} while (0)
/*
* Decode a line of 1D-encoded data.
*
* The line expanders are written as macros so that they can be reused
* but still have direct access to the local variables of the "calling"
* function.
*
* Note that unlike the original version we have to explicitly test for
* a0 >= lastx after each black/white run is decoded. This is because
* the original code depended on the input data being zero-padded to
* insure the decoder recognized an EOL before running out of data.
*/
#define EXPAND1D(eoflab) do { \
for (;;) { \
for (;;) { \
LOOKUP16(12, TIFFFaxWhiteTable, eof1d); \
switch (TabEnt->State) { \
case S_EOL: \
EOLcnt = 1; \
goto done1d; \
case S_TermW: \
SETVAL(TabEnt->Param); \
goto doneWhite1d; \
case S_MakeUpW: \
case S_MakeUp: \
a0 += TabEnt->Param; \
RunLength += TabEnt->Param; \
break; \
default: \
unexpected("WhiteTable", a0); \
goto done1d; \
} \
} \
doneWhite1d: \
if (a0 >= lastx) \
goto done1d; \
for (;;) { \
LOOKUP16(13, TIFFFaxBlackTable, eof1d); \
switch (TabEnt->State) { \
case S_EOL: \
EOLcnt = 1; \
goto done1d; \
case S_TermB: \
SETVAL(TabEnt->Param); \
goto doneBlack1d; \
case S_MakeUpB: \
case S_MakeUp: \
a0 += TabEnt->Param; \
RunLength += TabEnt->Param; \
break; \
default: \
unexpected("BlackTable", a0); \
goto done1d; \
} \
} \
doneBlack1d: \
if (a0 >= lastx) \
goto done1d; \
if( *(pa-1) == 0 && *(pa-2) == 0 ) \
pa -= 2; \
} \
eof1d: \
prematureEOF(a0); \
CLEANUP_RUNS(); \
goto eoflab; \
done1d: \
CLEANUP_RUNS(); \
} while (0)
/*
* Update the value of b1 using the array
* of runs for the reference line.
*/
#define CHECK_b1 do { \
if (pa != thisrun) while (b1 <= a0 && b1 < lastx) { \
b1 += pb[0] + pb[1]; \
pb += 2; \
} \
} while (0)
/*
* Expand a row of 2D-encoded data.
*/
#define EXPAND2D(eoflab) do { \
while (a0 < lastx) { \
LOOKUP8(7, TIFFFaxMainTable, eof2d); \
switch (TabEnt->State) { \
case S_Pass: \
CHECK_b1; \
b1 += *pb++; \
RunLength += b1 - a0; \
a0 = b1; \
b1 += *pb++; \
break; \
case S_Horiz: \
if ((pa-thisrun)&1) { \
for (;;) { /* black first */ \
LOOKUP16(13, TIFFFaxBlackTable, eof2d); \
switch (TabEnt->State) { \
case S_TermB: \
SETVAL(TabEnt->Param); \
goto doneWhite2da; \
case S_MakeUpB: \
case S_MakeUp: \
a0 += TabEnt->Param; \
RunLength += TabEnt->Param; \
break; \
default: \
goto badBlack2d; \
} \
} \
doneWhite2da:; \
for (;;) { /* then white */ \
LOOKUP16(12, TIFFFaxWhiteTable, eof2d); \
switch (TabEnt->State) { \
case S_TermW: \
SETVAL(TabEnt->Param); \
goto doneBlack2da; \
case S_MakeUpW: \
case S_MakeUp: \
a0 += TabEnt->Param; \
RunLength += TabEnt->Param; \
break; \
default: \
goto badWhite2d; \
} \
} \
doneBlack2da:; \
} else { \
for (;;) { /* white first */ \
LOOKUP16(12, TIFFFaxWhiteTable, eof2d); \
switch (TabEnt->State) { \
case S_TermW: \
SETVAL(TabEnt->Param); \
goto doneWhite2db; \
case S_MakeUpW: \
case S_MakeUp: \
a0 += TabEnt->Param; \
RunLength += TabEnt->Param; \
break; \
default: \
goto badWhite2d; \
} \
} \
doneWhite2db:; \
for (;;) { /* then black */ \
LOOKUP16(13, TIFFFaxBlackTable, eof2d); \
switch (TabEnt->State) { \
case S_TermB: \
SETVAL(TabEnt->Param); \
goto doneBlack2db; \
case S_MakeUpB: \
case S_MakeUp: \
a0 += TabEnt->Param; \
RunLength += TabEnt->Param; \
break; \
default: \
goto badBlack2d; \
} \
} \
doneBlack2db:; \
} \
CHECK_b1; \
break; \
case S_V0: \
CHECK_b1; \
SETVAL(b1 - a0); \
b1 += *pb++; \
break; \
case S_VR: \
CHECK_b1; \
SETVAL(b1 - a0 + TabEnt->Param); \
b1 += *pb++; \
break; \
case S_VL: \
CHECK_b1; \
SETVAL(b1 - a0 - TabEnt->Param); \
b1 -= *--pb; \
break; \
case S_Ext: \
*pa++ = lastx - a0; \
extension(a0); \
goto eol2d; \
case S_EOL: \
*pa++ = lastx - a0; \
NeedBits8(4,eof2d); \
if (GetBits(4)) \
unexpected("EOL", a0); \
ClrBits(4); \
EOLcnt = 1; \
goto eol2d; \
default: \
badMain2d: \
unexpected("MainTable", a0); \
goto eol2d; \
badBlack2d: \
unexpected("BlackTable", a0); \
goto eol2d; \
badWhite2d: \
unexpected("WhiteTable", a0); \
goto eol2d; \
eof2d: \
prematureEOF(a0); \
CLEANUP_RUNS(); \
goto eoflab; \
} \
} \
if (RunLength) { \
if (RunLength + a0 < lastx) { \
/* expect a final V0 */ \
NeedBits8(1,eof2d); \
if (!GetBits(1)) \
goto badMain2d; \
ClrBits(1); \
} \
SETVAL(0); \
} \
eol2d: \
CLEANUP_RUNS(); \
} while (0)
#endif /* _FAX3_ */

File diff suppressed because it is too large Load Diff

View File

@@ -1,67 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*/
#include "tiffiop.h"
int
TIFFFlush(TIFF* tif)
{
if (tif->tif_mode != O_RDONLY) {
if (!TIFFFlushData(tif))
return (0);
if ((tif->tif_flags & TIFF_DIRTYDIRECT) &&
!TIFFWriteDirectory(tif))
return (0);
}
return (1);
}
/*
* Flush buffered data to the file.
*
* Frank Warmerdam'2000: I modified this to return 1 if TIFF_BEENWRITING
* is not set, so that TIFFFlush() will proceed to write out the directory.
* The documentation says returning 1 is an error indicator, but not having
* been writing isn't exactly a an error. Hopefully this doesn't cause
* problems for other people.
*/
int
TIFFFlushData(TIFF* tif)
{
if ((tif->tif_flags & TIFF_BEENWRITING) == 0)
return (0);
if (tif->tif_flags & TIFF_POSTENCODE) {
tif->tif_flags &= ~TIFF_POSTENCODE;
if (!(*tif->tif_postencode)(tif))
return (0);
}
return (TIFFFlushData1(tif));
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,745 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#include "tiffiop.h"
#ifdef LZW_SUPPORT
/*
* TIFF Library.
* Rev 5.0 Lempel-Ziv & Welch Compression Support
*
* This code is derived from the compress program whose code is
* derived from software contributed to Berkeley by James A. Woods,
* derived from original work by Spencer Thomas and Joseph Orost.
*
* The original Berkeley copyright notice appears below in its entirety.
*/
#include "tif_predict.h"
#include <assert.h>
#include <stdio.h>
/*
* NB: The 5.0 spec describes a different algorithm than Aldus
* implements. Specifically, Aldus does code length transitions
* one code earlier than should be done (for real LZW).
* Earlier versions of this library implemented the correct
* LZW algorithm, but emitted codes in a bit order opposite
* to the TIFF spec. Thus, to maintain compatibility w/ Aldus
* we interpret MSB-LSB ordered codes to be images written w/
* old versions of this library, but otherwise adhere to the
* Aldus "off by one" algorithm.
*
* Future revisions to the TIFF spec are expected to "clarify this issue".
*/
#define LZW_COMPAT /* include backwards compatibility code */
/*
* Each strip of data is supposed to be terminated by a CODE_EOI.
* If the following #define is included, the decoder will also
* check for end-of-strip w/o seeing this code. This makes the
* library more robust, but also slower.
*/
#define LZW_CHECKEOS /* include checks for strips w/o EOI code */
#define MAXCODE(n) ((1L<<(n))-1)
/*
* The TIFF spec specifies that encoded bit
* strings range from 9 to 12 bits.
*/
#define BITS_MIN 9 /* start with 9 bits */
#define BITS_MAX 12 /* max of 12 bit strings */
/* predefined codes */
#define CODE_CLEAR 256 /* code to clear string table */
#define CODE_EOI 257 /* end-of-information code */
#define CODE_FIRST 258 /* first free code entry */
#define CODE_MAX MAXCODE(BITS_MAX)
#define HSIZE 9001L /* 91% occupancy */
#define HSHIFT (13-8)
#ifdef LZW_COMPAT
/* NB: +1024 is for compatibility with old files */
#define CSIZE (MAXCODE(BITS_MAX)+1024L)
#else
#define CSIZE (MAXCODE(BITS_MAX)+1L)
#endif
/*
* State block for each open TIFF file using LZW
* compression/decompression. Note that the predictor
* state block must be first in this data structure.
*/
typedef struct {
TIFFPredictorState predict; /* predictor super class */
u_short nbits; /* # of bits/code */
u_short maxcode; /* maximum code for lzw_nbits */
u_short free_ent; /* next free entry in hash table */
long nextdata; /* next bits of i/o */
long nextbits; /* # of valid bits in lzw_nextdata */
} LZWBaseState;
#define lzw_nbits base.nbits
#define lzw_maxcode base.maxcode
#define lzw_free_ent base.free_ent
#define lzw_nextdata base.nextdata
#define lzw_nextbits base.nextbits
/*
* Encoding-specific state.
*/
typedef uint16 hcode_t; /* codes fit in 16 bits */
/*
* Decoding-specific state.
*/
typedef struct code_ent {
struct code_ent *next;
u_short length; /* string len, including this token */
u_char value; /* data value */
u_char firstchar; /* first token of string */
} code_t;
typedef int (*decodeFunc)(TIFF*, tidata_t, tsize_t, tsample_t);
typedef struct {
LZWBaseState base;
/* Decoding specific data */
long dec_nbitsmask; /* lzw_nbits 1 bits, right adjusted */
long dec_restart; /* restart count */
#ifdef LZW_CHECKEOS
long dec_bitsleft; /* available bits in raw data */
#endif
decodeFunc dec_decode; /* regular or backwards compatible */
code_t* dec_codep; /* current recognized code */
code_t* dec_oldcodep; /* previously recognized code */
code_t* dec_free_entp; /* next free entry */
code_t* dec_maxcodep; /* max available entry */
code_t* dec_codetab; /* kept separate for small machines */
} LZWCodecState;
#define LZWState(tif) ((LZWBaseState*) (tif)->tif_data)
#define DecoderState(tif) ((LZWCodecState*) LZWState(tif))
static int LZWDecode(TIFF*, tidata_t, tsize_t, tsample_t);
#ifdef LZW_COMPAT
static int LZWDecodeCompat(TIFF*, tidata_t, tsize_t, tsample_t);
#endif
/*
* LZW Decoder.
*/
#ifdef LZW_CHECKEOS
/*
* This check shouldn't be necessary because each
* strip is suppose to be terminated with CODE_EOI.
*/
#define NextCode(_tif, _sp, _bp, _code, _get) { \
if ((_sp)->dec_bitsleft < nbits) { \
TIFFWarning(_tif->tif_name, \
"LZWDecode: Strip %d not terminated with EOI code", \
_tif->tif_curstrip); \
_code = CODE_EOI; \
} else { \
_get(_sp,_bp,_code); \
(_sp)->dec_bitsleft -= nbits; \
} \
}
#else
#define NextCode(tif, sp, bp, code, get) get(sp, bp, code)
#endif
static int
LZWSetupDecode(TIFF* tif)
{
LZWCodecState* sp = DecoderState(tif);
static const char module[] = "LZWSetupDecode";
int code;
assert(sp != NULL);
if (sp->dec_codetab == NULL) {
sp->dec_codetab = (code_t*)_TIFFmalloc(CSIZE*sizeof (code_t));
if (sp->dec_codetab == NULL) {
TIFFError(module, "No space for LZW code table");
return (0);
}
/*
* Pre-load the table.
*/
code = 255;
do {
sp->dec_codetab[code].value = (u_char) code;
sp->dec_codetab[code].firstchar = (u_char) code;
sp->dec_codetab[code].length = 1;
sp->dec_codetab[code].next = NULL;
} while (code--);
}
return (1);
}
/*
* Setup state for decoding a strip.
*/
static int
LZWPreDecode(TIFF* tif, tsample_t s)
{
LZWCodecState *sp = DecoderState(tif);
(void) s;
assert(sp != NULL);
/*
* Check for old bit-reversed codes.
*/
if (tif->tif_rawdata[0] == 0 && (tif->tif_rawdata[1] & 0x1)) {
#ifdef LZW_COMPAT
if (!sp->dec_decode) {
TIFFWarning(tif->tif_name,
"Old-style LZW codes, convert file");
/*
* Override default decoding methods with
* ones that deal with the old coding.
* Otherwise the predictor versions set
* above will call the compatibility routines
* through the dec_decode method.
*/
tif->tif_decoderow = LZWDecodeCompat;
tif->tif_decodestrip = LZWDecodeCompat;
tif->tif_decodetile = LZWDecodeCompat;
/*
* If doing horizontal differencing, must
* re-setup the predictor logic since we
* switched the basic decoder methods...
*/
(*tif->tif_setupdecode)(tif);
sp->dec_decode = LZWDecodeCompat;
}
sp->lzw_maxcode = MAXCODE(BITS_MIN);
#else /* !LZW_COMPAT */
if (!sp->dec_decode) {
TIFFError(tif->tif_name,
"Old-style LZW codes not supported");
sp->dec_decode = LZWDecode;
}
return (0);
#endif/* !LZW_COMPAT */
} else {
sp->lzw_maxcode = MAXCODE(BITS_MIN)-1;
sp->dec_decode = LZWDecode;
}
sp->lzw_nbits = BITS_MIN;
sp->lzw_nextbits = 0;
sp->lzw_nextdata = 0;
sp->dec_restart = 0;
sp->dec_nbitsmask = MAXCODE(BITS_MIN);
#ifdef LZW_CHECKEOS
sp->dec_bitsleft = tif->tif_rawcc << 3;
#endif
sp->dec_free_entp = sp->dec_codetab + CODE_FIRST;
/*
* Zero entries that are not yet filled in. We do
* this to guard against bogus input data that causes
* us to index into undefined entries. If you can
* come up with a way to safely bounds-check input codes
* while decoding then you can remove this operation.
*/
_TIFFmemset(sp->dec_free_entp, 0, (CSIZE-CODE_FIRST)*sizeof (code_t));
sp->dec_oldcodep = &sp->dec_codetab[-1];
sp->dec_maxcodep = &sp->dec_codetab[sp->dec_nbitsmask-1];
return (1);
}
/*
* Decode a "hunk of data".
*/
#define GetNextCode(sp, bp, code) { \
nextdata = (nextdata<<8) | *(bp)++; \
nextbits += 8; \
if (nextbits < nbits) { \
nextdata = (nextdata<<8) | *(bp)++; \
nextbits += 8; \
} \
code = (hcode_t)((nextdata >> (nextbits-nbits)) & nbitsmask); \
nextbits -= nbits; \
}
static void
codeLoop(TIFF* tif)
{
TIFFError(tif->tif_name,
"LZWDecode: Bogus encoding, loop in the code table; scanline %d",
tif->tif_row);
}
static int
LZWDecode(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
{
LZWCodecState *sp = DecoderState(tif);
char *op = (char*) op0;
long occ = (long) occ0;
char *tp;
u_char *bp;
hcode_t code;
int len;
long nbits, nextbits, nextdata, nbitsmask;
code_t *codep, *free_entp, *maxcodep, *oldcodep;
(void) s;
assert(sp != NULL);
/*
* Restart interrupted output operation.
*/
if (sp->dec_restart) {
long residue;
codep = sp->dec_codep;
residue = codep->length - sp->dec_restart;
if (residue > occ) {
/*
* Residue from previous decode is sufficient
* to satisfy decode request. Skip to the
* start of the decoded string, place decoded
* values in the output buffer, and return.
*/
sp->dec_restart += occ;
do {
codep = codep->next;
} while (--residue > occ && codep);
if (codep) {
tp = op + occ;
do {
*--tp = codep->value;
codep = codep->next;
} while (--occ && codep);
}
return (1);
}
/*
* Residue satisfies only part of the decode request.
*/
op += residue, occ -= residue;
tp = op;
do {
int t;
--tp;
t = codep->value;
codep = codep->next;
*tp = (char) t;
} while (--residue && codep);
sp->dec_restart = 0;
}
bp = (u_char *)tif->tif_rawcp;
nbits = sp->lzw_nbits;
nextdata = sp->lzw_nextdata;
nextbits = sp->lzw_nextbits;
nbitsmask = sp->dec_nbitsmask;
oldcodep = sp->dec_oldcodep;
free_entp = sp->dec_free_entp;
maxcodep = sp->dec_maxcodep;
while (occ > 0) {
NextCode(tif, sp, bp, code, GetNextCode);
if (code == CODE_EOI)
break;
if (code == CODE_CLEAR) {
free_entp = sp->dec_codetab + CODE_FIRST;
nbits = BITS_MIN;
nbitsmask = MAXCODE(BITS_MIN);
maxcodep = sp->dec_codetab + nbitsmask-1;
NextCode(tif, sp, bp, code, GetNextCode);
if (code == CODE_EOI)
break;
*op++ = (char)code, occ--;
oldcodep = sp->dec_codetab + code;
continue;
}
codep = sp->dec_codetab + code;
/*
* Add the new entry to the code table.
*/
if (free_entp < &sp->dec_codetab[0] ||
free_entp >= &sp->dec_codetab[CSIZE]) {
TIFFError(tif->tif_name,
"LZWDecode: Corrupted LZW table at scanline %d",
tif->tif_row);
return (0);
}
free_entp->next = oldcodep;
if (free_entp->next < &sp->dec_codetab[0] ||
free_entp->next >= &sp->dec_codetab[CSIZE]) {
TIFFError(tif->tif_name,
"LZWDecode: Corrupted LZW table at scanline %d",
tif->tif_row);
return (0);
}
free_entp->firstchar = free_entp->next->firstchar;
free_entp->length = free_entp->next->length+1;
free_entp->value = (codep < free_entp) ?
codep->firstchar : free_entp->firstchar;
if (++free_entp > maxcodep) {
if (++nbits > BITS_MAX) /* should not happen */
nbits = BITS_MAX;
nbitsmask = MAXCODE(nbits);
maxcodep = sp->dec_codetab + nbitsmask-1;
}
oldcodep = codep;
if (code >= 256) {
/*
* Code maps to a string, copy string
* value to output (written in reverse).
*/
if(codep->length == 0) {
TIFFError(tif->tif_name,
"LZWDecode: Wrong length of decoded string: "
"data probably corrupted at scanline %d",
tif->tif_row);
return (0);
}
if (codep->length > occ) {
/*
* String is too long for decode buffer,
* locate portion that will fit, copy to
* the decode buffer, and setup restart
* logic for the next decoding call.
*/
sp->dec_codep = codep;
do {
codep = codep->next;
} while (codep && codep->length > occ);
if (codep) {
sp->dec_restart = occ;
tp = op + occ;
do {
*--tp = codep->value;
codep = codep->next;
} while (--occ && codep);
if (codep)
codeLoop(tif);
}
break;
}
len = codep->length;
tp = op + len;
do {
int t;
--tp;
t = codep->value;
codep = codep->next;
*tp = (char) t;
} while (codep && tp > op);
if (codep) {
codeLoop(tif);
break;
}
op += len, occ -= len;
} else
*op++ = (char)code, occ--;
}
tif->tif_rawcp = (tidata_t) bp;
sp->lzw_nbits = (u_short) nbits;
sp->lzw_nextdata = nextdata;
sp->lzw_nextbits = nextbits;
sp->dec_nbitsmask = nbitsmask;
sp->dec_oldcodep = oldcodep;
sp->dec_free_entp = free_entp;
sp->dec_maxcodep = maxcodep;
if (occ > 0) {
TIFFError(tif->tif_name,
"LZWDecode: Not enough data at scanline %d (short %d bytes)",
tif->tif_row, occ);
return (0);
}
return (1);
}
#ifdef LZW_COMPAT
/*
* Decode a "hunk of data" for old images.
*/
#define GetNextCodeCompat(sp, bp, code) { \
nextdata |= (u_long) *(bp)++ << nextbits; \
nextbits += 8; \
if (nextbits < nbits) { \
nextdata |= (u_long) *(bp)++ << nextbits; \
nextbits += 8; \
} \
code = (hcode_t)(nextdata & nbitsmask); \
nextdata >>= nbits; \
nextbits -= nbits; \
}
static int
LZWDecodeCompat(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
{
LZWCodecState *sp = DecoderState(tif);
char *op = (char*) op0;
long occ = (long) occ0;
char *tp;
u_char *bp;
int code, nbits;
long nextbits, nextdata, nbitsmask;
code_t *codep, *free_entp, *maxcodep, *oldcodep;
(void) s;
assert(sp != NULL);
/*
* Restart interrupted output operation.
*/
if (sp->dec_restart) {
long residue;
codep = sp->dec_codep;
residue = codep->length - sp->dec_restart;
if (residue > occ) {
/*
* Residue from previous decode is sufficient
* to satisfy decode request. Skip to the
* start of the decoded string, place decoded
* values in the output buffer, and return.
*/
sp->dec_restart += occ;
do {
codep = codep->next;
} while (--residue > occ);
tp = op + occ;
do {
*--tp = codep->value;
codep = codep->next;
} while (--occ);
return (1);
}
/*
* Residue satisfies only part of the decode request.
*/
op += residue, occ -= residue;
tp = op;
do {
*--tp = codep->value;
codep = codep->next;
} while (--residue);
sp->dec_restart = 0;
}
bp = (u_char *)tif->tif_rawcp;
nbits = sp->lzw_nbits;
nextdata = sp->lzw_nextdata;
nextbits = sp->lzw_nextbits;
nbitsmask = sp->dec_nbitsmask;
oldcodep = sp->dec_oldcodep;
free_entp = sp->dec_free_entp;
maxcodep = sp->dec_maxcodep;
while (occ > 0) {
NextCode(tif, sp, bp, code, GetNextCodeCompat);
if (code == CODE_EOI)
break;
if (code == CODE_CLEAR) {
free_entp = sp->dec_codetab + CODE_FIRST;
nbits = BITS_MIN;
nbitsmask = MAXCODE(BITS_MIN);
maxcodep = sp->dec_codetab + nbitsmask;
NextCode(tif, sp, bp, code, GetNextCodeCompat);
if (code == CODE_EOI)
break;
*op++ = (char) code, occ--;
oldcodep = sp->dec_codetab + code;
continue;
}
codep = sp->dec_codetab + code;
/*
* Add the new entry to the code table.
*/
if (free_entp < &sp->dec_codetab[0] ||
free_entp >= &sp->dec_codetab[CSIZE]) {
TIFFError(tif->tif_name,
"LZWDecodeCompat: Corrupted LZW table at scanline %d",
tif->tif_row);
return (0);
}
free_entp->next = oldcodep;
if (free_entp->next < &sp->dec_codetab[0] ||
free_entp->next >= &sp->dec_codetab[CSIZE]) {
TIFFError(tif->tif_name,
"LZWDecodeCompat: Corrupted LZW table at scanline %d",
tif->tif_row);
return (0);
}
free_entp->firstchar = free_entp->next->firstchar;
free_entp->length = free_entp->next->length+1;
free_entp->value = (codep < free_entp) ?
codep->firstchar : free_entp->firstchar;
if (++free_entp > maxcodep) {
if (++nbits > BITS_MAX) /* should not happen */
nbits = BITS_MAX;
nbitsmask = MAXCODE(nbits);
maxcodep = sp->dec_codetab + nbitsmask;
}
oldcodep = codep;
if (code >= 256) {
/*
* Code maps to a string, copy string
* value to output (written in reverse).
*/
if(codep->length == 0) {
TIFFError(tif->tif_name,
"LZWDecodeCompat: Wrong length of decoded "
"string: data probably corrupted at scanline %d",
tif->tif_row);
return (0);
}
if (codep->length > occ) {
/*
* String is too long for decode buffer,
* locate portion that will fit, copy to
* the decode buffer, and setup restart
* logic for the next decoding call.
*/
sp->dec_codep = codep;
do {
codep = codep->next;
} while (codep->length > occ);
sp->dec_restart = occ;
tp = op + occ;
do {
*--tp = codep->value;
codep = codep->next;
} while (--occ);
break;
}
op += codep->length, occ -= codep->length;
tp = op;
do {
*--tp = codep->value;
} while( (codep = codep->next) != NULL);
} else
*op++ = (char) code, occ--;
}
tif->tif_rawcp = (tidata_t) bp;
sp->lzw_nbits = (u_short) nbits;
sp->lzw_nextdata = nextdata;
sp->lzw_nextbits = nextbits;
sp->dec_nbitsmask = nbitsmask;
sp->dec_oldcodep = oldcodep;
sp->dec_free_entp = free_entp;
sp->dec_maxcodep = maxcodep;
if (occ > 0) {
TIFFError(tif->tif_name,
"LZWDecodeCompat: Not enough data at scanline %d (short %d bytes)",
tif->tif_row, occ);
return (0);
}
return (1);
}
#endif /* LZW_COMPAT */
static void
LZWCleanup(TIFF* tif)
{
if (tif->tif_data) {
if (DecoderState(tif)->dec_codetab)
_TIFFfree(DecoderState(tif)->dec_codetab);
_TIFFfree(tif->tif_data);
tif->tif_data = NULL;
}
}
static int
LZWSetupEncode(TIFF* tif)
{
TIFFError(tif->tif_name,
"LZW compression is not available to due to Unisys patent enforcement");
return (0);
}
int
TIFFInitLZW(TIFF* tif, int scheme)
{
assert(scheme == COMPRESSION_LZW);
/*
* Allocate state block so tag methods have storage to record values.
*/
tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (LZWCodecState));
if (tif->tif_data == NULL)
goto bad;
DecoderState(tif)->dec_codetab = NULL;
DecoderState(tif)->dec_decode = NULL;
/*
* Install codec methods.
*/
tif->tif_setupencode = LZWSetupEncode;
tif->tif_setupdecode = LZWSetupDecode;
tif->tif_predecode = LZWPreDecode;
tif->tif_decoderow = LZWDecode;
tif->tif_decodestrip = LZWDecode;
tif->tif_decodetile = LZWDecode;
tif->tif_cleanup = LZWCleanup;
/*
* Setup predictor setup.
*/
(void) TIFFPredictorInit(tif);
return (1);
bad:
TIFFError("TIFFInitLZW", "No space for LZW state block");
return (0);
}
/*
* Copyright (c) 1985, 1986 The Regents of the University of California.
* All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* James A. Woods, derived from original work by Spencer Thomas
* and Joseph Orost.
*
* Redistribution and use in source and binary forms are permitted
* provided that the above copyright notice and this paragraph are
* duplicated in all such forms and that any documentation,
* advertising materials, and other materials related to such
* distribution and use acknowledge that the software was developed
* by the University of California, Berkeley. The name of the
* University may not be used to endorse or promote products derived
* from this software without specific prior written permission.
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
*/
#endif /* LZW_SUPPORT */

View File

@@ -1,179 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library MSDOS-specific Routines.
*/
#if defined(__WATCOMC__) || defined(__BORLANDC__) || defined(_MSC_VER)
#include <io.h> /* for open, close, etc. function prototypes */
#include <stdio.h>
#endif
#include "tiffiop.h"
static tsize_t
_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return (read((int) fd, buf, size));
}
static tsize_t
_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return (write((int) fd, buf, size));
}
static toff_t
_tiffSeekProc(thandle_t fd, toff_t off, int whence)
{
return (lseek((int) fd, (off_t) off, whence));
}
static int
_tiffCloseProc(thandle_t fd)
{
return (close((int) fd));
}
#include <sys/stat.h>
static toff_t
_tiffSizeProc(thandle_t fd)
{
struct stat sb;
return (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
}
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
return (0);
}
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
}
/*
* Open a TIFF file descriptor for read/writing.
*/
TIFF*
TIFFFdOpen(int fd, const char* name, const char* mode)
{
TIFF* tif;
tif = TIFFClientOpen(name, mode,
(void*) fd,
_tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
_tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
if (tif)
tif->tif_fd = fd;
return (tif);
}
/*
* Open a TIFF file for read/writing.
*/
TIFF*
TIFFOpen(const char* name, const char* mode)
{
static const char module[] = "TIFFOpen";
int m, fd;
m = _TIFFgetMode(mode, module);
if (m == -1)
return ((TIFF*)0);
fd = open(name, m|O_BINARY, 0666);
if (fd < 0) {
TIFFError(module, "%s: Cannot open", name);
return ((TIFF*)0);
}
return (TIFFFdOpen(fd, name, mode));
}
#ifdef __GNUC__
extern char* malloc();
extern char* realloc();
#else
#include <malloc.h>
#endif
tdata_t
_TIFFmalloc(tsize_t s)
{
return (malloc((size_t) s));
}
void
_TIFFfree(tdata_t p)
{
free(p);
}
tdata_t
_TIFFrealloc(tdata_t p, tsize_t s)
{
return (realloc(p, (size_t) s));
}
void
_TIFFmemset(tdata_t p, int v, tsize_t c)
{
memset(p, v, (size_t) c);
}
void
_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
{
memcpy(d, s, (size_t) c);
}
int
_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
{
return (memcmp(p1, p2, (size_t) c));
}
static void
msdosWarningHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
fprintf(stderr, "Warning, ");
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFwarningHandler = msdosWarningHandler;
static void
msdosErrorHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFerrorHandler = msdosErrorHandler;

View File

@@ -1,142 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#include "tiffiop.h"
#ifdef NEXT_SUPPORT
/*
* TIFF Library.
*
* NeXT 2-bit Grey Scale Compression Algorithm Support
*/
#define SETPIXEL(op, v) { \
switch (npixels++ & 3) { \
case 0: op[0] = (u_char) ((v) << 6); break; \
case 1: op[0] |= (v) << 4; break; \
case 2: op[0] |= (v) << 2; break; \
case 3: *op++ |= (v); break; \
} \
}
#define LITERALROW 0x00
#define LITERALSPAN 0x40
#define WHITE ((1<<2)-1)
static int
NeXTDecode(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
{
register u_char *bp, *op;
register tsize_t cc;
register int n;
tidata_t row;
tsize_t scanline;
(void) s;
/*
* Each scanline is assumed to start off as all
* white (we assume a PhotometricInterpretation
* of ``min-is-black'').
*/
for (op = buf, cc = occ; cc-- > 0;)
*op++ = 0xff;
bp = (u_char *)tif->tif_rawcp;
cc = tif->tif_rawcc;
scanline = tif->tif_scanlinesize;
for (row = buf; (long)occ > 0; occ -= scanline, row += scanline) {
n = *bp++, cc--;
switch (n) {
case LITERALROW:
/*
* The entire scanline is given as literal values.
*/
if (cc < scanline)
goto bad;
_TIFFmemcpy(row, bp, scanline);
bp += scanline;
cc -= scanline;
break;
case LITERALSPAN: {
int off;
/*
* The scanline has a literal span
* that begins at some offset.
*/
off = (bp[0] * 256) + bp[1];
n = (bp[2] * 256) + bp[3];
if (cc < 4+n || off+n > scanline)
goto bad;
_TIFFmemcpy(row+off, bp+4, n);
bp += 4+n;
cc -= 4+n;
break;
}
default: {
register int npixels = 0, grey;
u_long imagewidth = tif->tif_dir.td_imagewidth;
/*
* The scanline is composed of a sequence
* of constant color ``runs''. We shift
* into ``run mode'' and interpret bytes
* as codes of the form <color><npixels>
* until we've filled the scanline.
*/
op = row;
for (;;) {
grey = (n>>6) & 0x3;
n &= 0x3f;
while (n-- > 0)
SETPIXEL(op, grey);
if (npixels >= (int) imagewidth)
break;
if (cc == 0)
goto bad;
n = *bp++, cc--;
}
break;
}
}
}
tif->tif_rawcp = (tidata_t) bp;
tif->tif_rawcc = cc;
return (1);
bad:
TIFFError(tif->tif_name, "NeXTDecode: Not enough data for scanline %ld",
(long) tif->tif_row);
return (0);
}
int
TIFFInitNeXT(TIFF* tif, int scheme)
{
(void) scheme;
tif->tif_decoderow = NeXTDecode;
tif->tif_decodestrip = NeXTDecode;
tif->tif_decodetile = NeXTDecode;
return (1);
}
#endif /* NEXT_SUPPORT */

File diff suppressed because it is too large Load Diff

View File

@@ -1,495 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*/
#include "tiffiop.h"
void _TIFFSetDefaultCompressionState(TIFF* tif);
static const long typemask[13] = {
(long)0L, /* TIFF_NOTYPE */
(long)0x000000ffL, /* TIFF_BYTE */
(long)0xffffffffL, /* TIFF_ASCII */
(long)0x0000ffffL, /* TIFF_SHORT */
(long)0xffffffffL, /* TIFF_LONG */
(long)0xffffffffL, /* TIFF_RATIONAL */
(long)0x000000ffL, /* TIFF_SBYTE */
(long)0x000000ffL, /* TIFF_UNDEFINED */
(long)0x0000ffffL, /* TIFF_SSHORT */
(long)0xffffffffL, /* TIFF_SLONG */
(long)0xffffffffL, /* TIFF_SRATIONAL */
(long)0xffffffffL, /* TIFF_FLOAT */
(long)0xffffffffL, /* TIFF_DOUBLE */
};
static const int bigTypeshift[13] = {
0, /* TIFF_NOTYPE */
24, /* TIFF_BYTE */
0, /* TIFF_ASCII */
16, /* TIFF_SHORT */
0, /* TIFF_LONG */
0, /* TIFF_RATIONAL */
24, /* TIFF_SBYTE */
24, /* TIFF_UNDEFINED */
16, /* TIFF_SSHORT */
0, /* TIFF_SLONG */
0, /* TIFF_SRATIONAL */
0, /* TIFF_FLOAT */
0, /* TIFF_DOUBLE */
};
static const int litTypeshift[13] = {
0, /* TIFF_NOTYPE */
0, /* TIFF_BYTE */
0, /* TIFF_ASCII */
0, /* TIFF_SHORT */
0, /* TIFF_LONG */
0, /* TIFF_RATIONAL */
0, /* TIFF_SBYTE */
0, /* TIFF_UNDEFINED */
0, /* TIFF_SSHORT */
0, /* TIFF_SLONG */
0, /* TIFF_SRATIONAL */
0, /* TIFF_FLOAT */
0, /* TIFF_DOUBLE */
};
/*
* Initialize the shift & mask tables, and the
* byte swapping state according to the file
* contents and the machine architecture.
*/
static void
TIFFInitOrder(TIFF* tif, int magic, int bigendian)
{
tif->tif_typemask = typemask;
if (magic == TIFF_BIGENDIAN) {
tif->tif_typeshift = bigTypeshift;
if (!bigendian)
tif->tif_flags |= TIFF_SWAB;
} else {
tif->tif_typeshift = litTypeshift;
if (bigendian)
tif->tif_flags |= TIFF_SWAB;
}
}
int
_TIFFgetMode(const char* mode, const char* module)
{
int m = -1;
switch (mode[0]) {
case 'r':
m = O_RDONLY;
if (mode[1] == '+')
m = O_RDWR;
break;
case 'w':
case 'a':
m = O_RDWR|O_CREAT;
if (mode[0] == 'w')
m |= O_TRUNC;
break;
default:
TIFFError(module, "\"%s\": Bad mode", mode);
break;
}
return (m);
}
TIFF*
TIFFClientOpen(
const char* name, const char* mode,
thandle_t clientdata,
TIFFReadWriteProc readproc,
TIFFReadWriteProc writeproc,
TIFFSeekProc seekproc,
TIFFCloseProc closeproc,
TIFFSizeProc sizeproc,
TIFFMapFileProc mapproc,
TIFFUnmapFileProc unmapproc
)
{
static const char module[] = "TIFFClientOpen";
TIFF *tif;
int m, bigendian;
const char* cp;
m = _TIFFgetMode(mode, module);
if (m == -1)
goto bad2;
tif = (TIFF *)_TIFFmalloc(sizeof (TIFF) + strlen(name) + 1);
if (tif == NULL) {
TIFFError(module, "%s: Out of memory (TIFF structure)", name);
goto bad2;
}
_TIFFmemset(tif, 0, sizeof (*tif));
tif->tif_name = (char *)tif + sizeof (TIFF);
strcpy(tif->tif_name, name);
tif->tif_mode = m &~ (O_CREAT|O_TRUNC);
tif->tif_curdir = (tdir_t) -1; /* non-existent directory */
tif->tif_curoff = 0;
tif->tif_curstrip = (tstrip_t) -1; /* invalid strip */
tif->tif_row = (uint32) -1; /* read/write pre-increment */
tif->tif_clientdata = clientdata;
if (!readproc || !writeproc || !seekproc || !closeproc
|| !sizeproc || !mapproc || !unmapproc) {
TIFFError(module, "One of the client procedures are NULL pointer");
goto bad3;
}
tif->tif_readproc = readproc;
tif->tif_writeproc = writeproc;
tif->tif_seekproc = seekproc;
tif->tif_closeproc = closeproc;
tif->tif_sizeproc = sizeproc;
tif->tif_mapproc = mapproc;
tif->tif_unmapproc = unmapproc;
_TIFFSetDefaultCompressionState(tif); /* setup default state */
/*
* Default is to return data MSB2LSB and enable the
* use of memory-mapped files and strip chopping when
* a file is opened read-only.
*/
tif->tif_flags = FILLORDER_MSB2LSB;
if (m == O_RDONLY )
tif->tif_flags |= TIFF_MAPPED;
#ifdef STRIPCHOP_DEFAULT
if (m == O_RDONLY || m == O_RDWR)
tif->tif_flags |= STRIPCHOP_DEFAULT;
#endif
{ union { int32 i; char c[4]; } u; u.i = 1; bigendian = u.c[0] == 0; }
/*
* Process library-specific flags in the open mode string.
* The following flags may be used to control intrinsic library
* behaviour that may or may not be desirable (usually for
* compatibility with some application that claims to support
* TIFF but only supports some braindead idea of what the
* vendor thinks TIFF is):
*
* 'l' use little-endian byte order for creating a file
* 'b' use big-endian byte order for creating a file
* 'L' read/write information using LSB2MSB bit order
* 'B' read/write information using MSB2LSB bit order
* 'H' read/write information using host bit order
* 'M' enable use of memory-mapped files when supported
* 'm' disable use of memory-mapped files
* 'C' enable strip chopping support when reading
* 'c' disable strip chopping support
*
* The use of the 'l' and 'b' flags is strongly discouraged.
* These flags are provided solely because numerous vendors,
* typically on the PC, do not correctly support TIFF; they
* only support the Intel little-endian byte order. This
* support is not configured by default because it supports
* the violation of the TIFF spec that says that readers *MUST*
* support both byte orders. It is strongly recommended that
* you not use this feature except to deal with busted apps
* that write invalid TIFF. And even in those cases you should
* bang on the vendors to fix their software.
*
* The 'L', 'B', and 'H' flags are intended for applications
* that can optimize operations on data by using a particular
* bit order. By default the library returns data in MSB2LSB
* bit order for compatibiltiy with older versions of this
* library. Returning data in the bit order of the native cpu
* makes the most sense but also requires applications to check
* the value of the FillOrder tag; something they probabyl do
* not do right now.
*
* The 'M' and 'm' flags are provided because some virtual memory
* systems exhibit poor behaviour when large images are mapped.
* These options permit clients to control the use of memory-mapped
* files on a per-file basis.
*
* The 'C' and 'c' flags are provided because the library support
* for chopping up large strips into multiple smaller strips is not
* application-transparent and as such can cause problems. The 'c'
* option permits applications that only want to look at the tags,
* for example, to get the unadulterated TIFF tag information.
*/
for (cp = mode; *cp; cp++)
switch (*cp) {
case 'b':
if ((m&O_CREAT) && !bigendian)
tif->tif_flags |= TIFF_SWAB;
break;
case 'l':
if ((m&O_CREAT) && bigendian)
tif->tif_flags |= TIFF_SWAB;
break;
case 'B':
tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
FILLORDER_MSB2LSB;
break;
case 'L':
tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
FILLORDER_LSB2MSB;
break;
case 'H':
tif->tif_flags = (tif->tif_flags &~ TIFF_FILLORDER) |
HOST_FILLORDER;
break;
case 'M':
if (m == O_RDONLY)
tif->tif_flags |= TIFF_MAPPED;
break;
case 'm':
if (m == O_RDONLY)
tif->tif_flags &= ~TIFF_MAPPED;
break;
case 'C':
if (m == O_RDONLY)
tif->tif_flags |= TIFF_STRIPCHOP;
break;
case 'c':
if (m == O_RDONLY)
tif->tif_flags &= ~TIFF_STRIPCHOP;
break;
}
/*
* Read in TIFF header.
*/
if (!ReadOK(tif, &tif->tif_header, sizeof (TIFFHeader))) {
if (tif->tif_mode == O_RDONLY) {
TIFFError(name, "Cannot read TIFF header");
goto bad;
}
/*
* Setup header and write.
*/
tif->tif_header.tiff_magic = tif->tif_flags & TIFF_SWAB
? (bigendian ? TIFF_LITTLEENDIAN : TIFF_BIGENDIAN)
: (bigendian ? TIFF_BIGENDIAN : TIFF_LITTLEENDIAN);
tif->tif_header.tiff_version = TIFF_VERSION;
if (tif->tif_flags & TIFF_SWAB)
TIFFSwabShort(&tif->tif_header.tiff_version);
tif->tif_header.tiff_diroff = 0; /* filled in later */
/*
* This seek shouldn't be necessary, but I have had some
* crazy problems with a failed fseek() on Solaris leaving
* the current file pointer out of whack when an fwrite()
* is done.
*/
TIFFSeekFile( tif, 0, SEEK_SET );
if (!WriteOK(tif, &tif->tif_header, sizeof (TIFFHeader))) {
TIFFError(name, "Error writing TIFF header");
goto bad;
}
/*
* Setup the byte order handling.
*/
TIFFInitOrder(tif, tif->tif_header.tiff_magic, bigendian);
/*
* Setup default directory.
*/
if (!TIFFDefaultDirectory(tif))
goto bad;
tif->tif_diroff = 0;
tif->tif_dirlist = NULL;
tif->tif_dirnumber = 0;
return (tif);
}
/*
* Setup the byte order handling.
*/
if (tif->tif_header.tiff_magic != TIFF_BIGENDIAN &&
tif->tif_header.tiff_magic != TIFF_LITTLEENDIAN) {
TIFFError(name, "Not a TIFF file, bad magic number %d (0x%x)",
tif->tif_header.tiff_magic,
tif->tif_header.tiff_magic);
goto bad;
}
TIFFInitOrder(tif, tif->tif_header.tiff_magic, bigendian);
/*
* Swap header if required.
*/
if (tif->tif_flags & TIFF_SWAB) {
TIFFSwabShort(&tif->tif_header.tiff_version);
TIFFSwabLong(&tif->tif_header.tiff_diroff);
}
/*
* Now check version (if needed, it's been byte-swapped).
* Note that this isn't actually a version number, it's a
* magic number that doesn't change (stupid).
*/
if (tif->tif_header.tiff_version != TIFF_VERSION) {
TIFFError(name,
"Not a TIFF file, bad version number %d (0x%x)",
tif->tif_header.tiff_version,
tif->tif_header.tiff_version);
goto bad;
}
tif->tif_flags |= TIFF_MYBUFFER;
tif->tif_rawcp = tif->tif_rawdata = 0;
tif->tif_rawdatasize = 0;
/*
* Setup initial directory.
*/
switch (mode[0]) {
case 'r':
tif->tif_nextdiroff = tif->tif_header.tiff_diroff;
/*
* Try to use a memory-mapped file if the client
* has not explicitly suppressed usage with the
* 'm' flag in the open mode (see above).
*/
if ((tif->tif_flags & TIFF_MAPPED) &&
!TIFFMapFileContents(tif, (tdata_t*) &tif->tif_base, &tif->tif_size))
tif->tif_flags &= ~TIFF_MAPPED;
if (TIFFReadDirectory(tif)) {
tif->tif_rawcc = -1;
tif->tif_flags |= TIFF_BUFFERSETUP;
return (tif);
}
break;
case 'a':
/*
* New directories are automatically append
* to the end of the directory chain when they
* are written out (see TIFFWriteDirectory).
*/
if (!TIFFDefaultDirectory(tif))
goto bad;
return (tif);
}
bad:
tif->tif_mode = O_RDONLY; /* XXX avoid flush */
TIFFClose(tif);
return ((TIFF*)0);
bad2:
(void) (*closeproc)(clientdata);
bad3:
return ((TIFF*)0);
}
/*
* Query functions to access private data.
*/
/*
* Return open file's name.
*/
const char *
TIFFFileName(TIFF* tif)
{
return (tif->tif_name);
}
/*
* Return open file's I/O descriptor.
*/
int
TIFFFileno(TIFF* tif)
{
return (tif->tif_fd);
}
/*
* Return read/write mode.
*/
int
TIFFGetMode(TIFF* tif)
{
return (tif->tif_mode);
}
/*
* Return nonzero if file is organized in
* tiles; zero if organized as strips.
*/
int
TIFFIsTiled(TIFF* tif)
{
return (isTiled(tif));
}
/*
* Return current row being read/written.
*/
uint32
TIFFCurrentRow(TIFF* tif)
{
return (tif->tif_row);
}
/*
* Return index of the current directory.
*/
tdir_t
TIFFCurrentDirectory(TIFF* tif)
{
return (tif->tif_curdir);
}
/*
* Return current strip.
*/
tstrip_t
TIFFCurrentStrip(TIFF* tif)
{
return (tif->tif_curstrip);
}
/*
* Return current tile.
*/
ttile_t
TIFFCurrentTile(TIFF* tif)
{
return (tif->tif_curtile);
}
/*
* Return nonzero if the file has byte-swapped data.
*/
int
TIFFIsByteSwapped(TIFF* tif)
{
return ((tif->tif_flags & TIFF_SWAB) != 0);
}
/*
* Return nonzero if the data is returned up-sampled.
*/
int
TIFFIsUpSampled(TIFF* tif)
{
return (isUpSampled(tif));
}
/*
* Return nonzero if the data is returned in MSB-to-LSB bit order.
*/
int
TIFFIsMSB2LSB(TIFF* tif)
{
return (isFillOrder(tif, FILLORDER_MSB2LSB));
}

View File

@@ -1,338 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* modifed for use with OS/2 by David Webster
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library OS/2-specific Routines. Adapted from tif_win32.c 2/16/00 by
* David Webster (dwebster@bhmi.com), Baldwin, Hackett, and Meeks, Inc., Omaha, NE USA
*/
#define INCL_PM
#define INCL_BASE
#include <os2.h>
#include <stdio.h>
#include <stdlib.h>
#include "tiffiop.h"
/* Some windows datatypes */
typedef ULONG DWORD;
typedef ULONG HANDLE;
typedef PCHAR LPTSTR;
typedef const PCHAR LPCTSTR;
typedef CHAR TCHAR;
#define GlobalAlloc(a,b) malloc(b)
#define LocalAlloc(a,b) malloc(b)
#define GlobalFree(b) free(b)
#define LocalFree(b) free(b)
#define GlobalReAlloc(p, s, t) realloc(p, s)
#define CopyMemory(p, v, s) memcpy(p, v, s)
#define FillMemory(p, c, s) memset(p, c, s)
#define GlobalSize(p) sizeof(p)
#define wsprintf sprintf
#define wvsprintf vsprintf
#define lstrlen strlen
static tsize_t LINKAGEMODE
_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
{
DWORD dwSizeRead;
if (!DosRead((HFILE)fd, buf, size, &dwSizeRead))
return(0);
return ((tsize_t) dwSizeRead);
}
static tsize_t LINKAGEMODE
_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
{
DWORD dwSizeWritten;
if (!DosWrite((HFILE)fd, buf, size, &dwSizeWritten))
return(0);
return ((tsize_t) dwSizeWritten);
}
static toff_t LINKAGEMODE
_tiffSeekProc(thandle_t fd, toff_t off, int whence)
{
DWORD dwMoveMethod;
ULONG ibActual;
switch(whence)
{
case 0:
dwMoveMethod = FILE_BEGIN;
break;
case 1:
dwMoveMethod = FILE_CURRENT;
break;
case 2:
dwMoveMethod = FILE_END;
break;
default:
dwMoveMethod = FILE_BEGIN;
break;
}
DosSetFilePtr((HFILE)fd, off, dwMoveMethod, &ibActual);
return((toff_t)ibActual);
}
static int LINKAGEMODE
_tiffCloseProc(thandle_t fd)
{
return (DosClose((HFILE)fd) ? 0 : -1);
}
static toff_t LINKAGEMODE
_tiffSizeProc(thandle_t fd)
{
FILESTATUS3 vStatus;
DosQueryFileInfo((HFILE)fd, FIL_STANDARD, &vStatus, sizeof(FILESTATUS3));
return (vStatus.cbFile);
}
static int LINKAGEMODE
_tiffDummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
return (0);
}
/*
* From "Hermann Josef Hill" <lhill@rhein-zeitung.de>:
*
* Windows uses both a handle and a pointer for file mapping,
* but according to the SDK documentation and Richter's book
* "Advanced Windows Programming" it is safe to free the handle
* after obtaining the file mapping pointer
*
* This removes a nasty OS dependency and cures a problem
* with Visual C++ 5.0
*/
static int LINKAGEMODE
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
return(0);
}
static void LINKAGEMODE
_tiffDummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
}
static void LINKAGEMODE
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
}
/*
* Open a TIFF file descriptor for read/writing.
* Note that TIFFFdOpen and TIFFOpen recognise the character 'u' in the mode
* string, which forces the file to be opened unmapped.
*/
TIFF*
TIFFFdOpen(int ifd, const char* name, const char* mode)
{
TIFF* tif;
BOOL fSuppressMap = (mode[1] == 'u' || mode[2] == 'u');
tif = TIFFClientOpen(name, mode,
(thandle_t)ifd,
_tiffReadProc, _tiffWriteProc,
_tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
fSuppressMap ? _tiffDummyMapProc : _tiffMapProc,
fSuppressMap ? _tiffDummyUnmapProc : _tiffUnmapProc);
if (tif)
tif->tif_fd = ifd;
return (tif);
}
/*
* Open a TIFF file for read/writing.
*/
TIFF*
TIFFOpen(const char* name, const char* mode)
{
static const char module[] = "TIFFOpen";
thandle_t fd;
int m;
DWORD dwOpenMode;
DWORD dwOpenFlags;
DWORD dwAction;
APIRET ulrc;
m = _TIFFgetMode(mode, module);
switch(m)
{
case O_RDONLY:
dwOpenMode = OPEN_ACCESS_READONLY;
dwOpenFlags = OPEN_ACTION_FAIL_IF_NEW;
break;
case O_RDWR:
dwOpenMode = OPEN_ACCESS_READWRITE;
dwOpenFlags = OPEN_ACTION_FAIL_IF_NEW;
break;
case O_RDWR|O_CREAT:
dwOpenMode = OPEN_ACCESS_READWRITE;
dwOpenFlags = OPEN_ACTION_CREATE_IF_NEW;
break;
case O_RDWR|O_TRUNC:
dwOpenMode = OPEN_ACCESS_READWRITE;
dwOpenFlags = OPEN_ACTION_FAIL_IF_NEW | OPEN_ACTION_OPEN_IF_EXISTS;
break;
case O_RDWR|O_CREAT|O_TRUNC:
dwOpenMode = OPEN_ACCESS_READWRITE;
dwOpenFlags = OPEN_ACTION_CREATE_IF_NEW | OPEN_ACTION_REPLACE_IF_EXISTS;
break;
default:
return ((TIFF*)0);
}
ulrc = DosOpen( name, (HFILE*)&fd, &dwAction, FILE_ARCHIVED|FILE_NORMAL
,1000L, dwOpenFlags, dwOpenMode, NULL
);
if (fd != NO_ERROR) {
TIFFError(module, "%s: Cannot open", name);
return ((TIFF *)0);
}
return (TIFFFdOpen((int)fd, name, mode));
}
tdata_t
_TIFFmalloc(tsize_t s)
{
return ((tdata_t)GlobalAlloc(GMEM_FIXED, s));
}
void
_TIFFfree(tdata_t p)
{
GlobalFree(p);
return;
}
tdata_t
_TIFFrealloc(tdata_t p, tsize_t s)
{
void* pvTmp;
if ((pvTmp = GlobalReAlloc(p, s, 0)) == NULL) {
if ((pvTmp = GlobalAlloc(sGMEM_FIXED, s)) != NULL) {
CopyMemory(pvTmp, p, GlobalSize(p));
GlobalFree(p);
}
}
return ((tdata_t)pvTmp);
}
void
_TIFFmemset(void* p, int v, tsize_t c)
{
FillMemory(p, c, (BYTE)v);
}
void
_TIFFmemcpy(void* d, const tdata_t s, tsize_t c)
{
CopyMemory(d, s, c);
}
int
_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
{
register const *pb1 = (const int*)p1;
register const *pb2 = (const int*)p2;
register DWORD dwTmp = c;
register int iTmp;
for (iTmp = 0; dwTmp-- && !iTmp; iTmp = (int)*pb1++ - (int)*pb2++)
;
return (iTmp);
}
static void LINKAGEMODE
Os2WarningHandler(const char* module, const char* fmt, va_list ap)
{
#ifndef TIF_PLATFORM_CONSOLE
LPTSTR szTitle;
LPTSTR szTmp;
LPCTSTR szTitleText = "%s Warning";
LPCTSTR szDefaultModule = "TIFFLIB";
szTmp = (module == NULL) ? (LPTSTR)szDefaultModule : (LPTSTR)module;
if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, (lstrlen(szTmp) +
lstrlen(szTitleText) + lstrlen(fmt) + 128)*sizeof(TCHAR))) == NULL)
return;
wsprintf(szTitle, szTitleText, szTmp);
szTmp = szTitle + (lstrlen(szTitle)+2)*sizeof(TCHAR);
wvsprintf(szTmp, fmt, ap);
WinMessageBox( HWND_DESKTOP
,WinQueryFocus(HWND_DESKTOP)
,szTmp
,szTitle
,0
,MB_OK | MB_INFORMATION
);
LocalFree(szTitle);
return;
#else
if (module != NULL)
fprintf(stderr, "%s: ", module);
fprintf(stderr, "Warning, ");
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
#endif
}
TIFFErrorHandler _TIFFwarningHandler = Os2WarningHandler;
static void LINKAGEMODE
Os2ErrorHandler(const char* module, const char* fmt, va_list ap)
{
#ifndef TIF_PLATFORM_CONSOLE
LPTSTR szTitle;
LPTSTR szTmp;
LPCTSTR szTitleText = "%s Error";
LPCTSTR szDefaultModule = "TIFFLIB";
szTmp = (module == NULL) ? (LPTSTR)szDefaultModule : (LPTSTR)module;
if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, (lstrlen(szTmp) +
lstrlen(szTitleText) + lstrlen(fmt) + 128)*sizeof(TCHAR))) == NULL)
return;
wsprintf(szTitle, szTitleText, szTmp);
szTmp = szTitle + (lstrlen(szTitle)+2)*sizeof(TCHAR);
wvsprintf(szTmp, fmt, ap);
WinMessageBox( HWND_DESKTOP
,WinQueryFocus(HWND_DESKTOP)
,szTmp
,szTitle
,0
,MB_OK | MB_ICONEXCLAMATION
);
LocalFree(szTitle);
return;
#else
if (module != NULL)
fprintf(stderr, "%s: ", module);
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
#endif
}
TIFFErrorHandler _TIFFerrorHandler = Os2ErrorHandler;

View File

@@ -1,300 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#include "tiffiop.h"
#ifdef PACKBITS_SUPPORT
/*
* TIFF Library.
*
* PackBits Compression Algorithm Support
*/
#include <assert.h>
#include <stdio.h>
static int
PackBitsPreEncode(TIFF* tif, tsample_t s)
{
(void) s;
/*
* Calculate the scanline/tile-width size in bytes.
*/
if (isTiled(tif))
tif->tif_data = (tidata_t) TIFFTileRowSize(tif);
else
tif->tif_data = (tidata_t) TIFFScanlineSize(tif);
return (1);
}
/*
* NB: tidata is the type representing *(tidata_t);
* if tidata_t is made signed then this type must
* be adjusted accordingly.
*/
typedef unsigned char tidata;
/*
* Encode a run of pixels.
*/
static int
PackBitsEncode(TIFF* tif, tidata_t buf, tsize_t cc, tsample_t s)
{
u_char* bp = (u_char*) buf;
tidata_t op, ep, lastliteral;
long n, slop;
int b;
enum { BASE, LITERAL, RUN, LITERAL_RUN } state;
(void) s;
op = tif->tif_rawcp;
ep = tif->tif_rawdata + tif->tif_rawdatasize;
state = BASE;
lastliteral = 0;
while (cc > 0) {
/*
* Find the longest string of identical bytes.
*/
b = *bp++, cc--, n = 1;
for (; cc > 0 && b == *bp; cc--, bp++)
n++;
again:
if (op + 2 >= ep) { /* insure space for new data */
/*
* Be careful about writing the last
* literal. Must write up to that point
* and then copy the remainder to the
* front of the buffer.
*/
if (state == LITERAL || state == LITERAL_RUN) {
slop = op - lastliteral;
tif->tif_rawcc += lastliteral - tif->tif_rawcp;
if (!TIFFFlushData1(tif))
return (-1);
op = tif->tif_rawcp;
while (slop-- > 0)
*op++ = *lastliteral++;
lastliteral = tif->tif_rawcp;
} else {
tif->tif_rawcc += op - tif->tif_rawcp;
if (!TIFFFlushData1(tif))
return (-1);
op = tif->tif_rawcp;
}
}
switch (state) {
case BASE: /* initial state, set run/literal */
if (n > 1) {
state = RUN;
if (n > 128) {
*op++ = (tidata) -127;
*op++ = (tidataval_t) b;
n -= 128;
goto again;
}
*op++ = (tidataval_t)(-(n-1));
*op++ = (tidataval_t) b;
} else {
lastliteral = op;
*op++ = 0;
*op++ = (tidataval_t) b;
state = LITERAL;
}
break;
case LITERAL: /* last object was literal string */
if (n > 1) {
state = LITERAL_RUN;
if (n > 128) {
*op++ = (tidata) -127;
*op++ = (tidataval_t) b;
n -= 128;
goto again;
}
*op++ = (tidataval_t)(-(n-1)); /* encode run */
*op++ = (tidataval_t) b;
} else { /* extend literal */
if (++(*lastliteral) == 127)
state = BASE;
*op++ = (tidataval_t) b;
}
break;
case RUN: /* last object was run */
if (n > 1) {
if (n > 128) {
*op++ = (tidata) -127;
*op++ = (tidataval_t) b;
n -= 128;
goto again;
}
*op++ = (tidataval_t)(-(n-1));
*op++ = (tidataval_t) b;
} else {
lastliteral = op;
*op++ = 0;
*op++ = (tidataval_t) b;
state = LITERAL;
}
break;
case LITERAL_RUN: /* literal followed by a run */
/*
* Check to see if previous run should
* be converted to a literal, in which
* case we convert literal-run-literal
* to a single literal.
*/
if (n == 1 && op[-2] == (tidata) -1 &&
*lastliteral < 126) {
state = (((*lastliteral) += 2) == 127 ?
BASE : LITERAL);
op[-2] = op[-1]; /* replicate */
} else
state = RUN;
goto again;
}
}
tif->tif_rawcc += op - tif->tif_rawcp;
tif->tif_rawcp = op;
return (1);
}
/*
* Encode a rectangular chunk of pixels. We break it up
* into row-sized pieces to insure that encoded runs do
* not span rows. Otherwise, there can be problems with
* the decoder if data is read, for example, by scanlines
* when it was encoded by strips.
*/
static int
PackBitsEncodeChunk(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
{
#if defined(__hpux) && defined(__LP64__)
tsize_t rowsize = (tsize_t)(unsigned long) tif->tif_data;
#else
tsize_t rowsize = (tsize_t) tif->tif_data;
#endif
assert(rowsize > 0);
#ifdef YCBCR_SUPPORT
/*
* YCBCR data isn't really separable into rows, so we
* might as well encode the whole tile/strip as one chunk.
*/
if( tif->tif_dir.td_photometric == PHOTOMETRIC_YCBCR ) {
#if defined(__hpux) && defined(__LP64__)
rowsize = (tsize_t)(unsigned long) tif->tif_data;
#else
rowsize = (tsize_t) tif->tif_data;
#endif
}
#endif
while ((long)cc > 0) {
int chunk = rowsize;
if( cc < chunk )
chunk = cc;
if (PackBitsEncode(tif, bp, chunk, s) < 0)
return (-1);
bp += chunk;
cc -= chunk;
}
return (1);
}
static int
PackBitsDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
{
char *bp;
tsize_t cc;
long n;
int b;
(void) s;
bp = (char*) tif->tif_rawcp;
cc = tif->tif_rawcc;
while (cc > 0 && (long)occ > 0) {
n = (long) *bp++, cc--;
/*
* Watch out for compilers that
* don't sign extend chars...
*/
if (n >= 128)
n -= 256;
if (n < 0) { /* replicate next byte -n+1 times */
if (n == -128) /* nop */
continue;
n = -n + 1;
if( occ < n )
{
TIFFWarning(tif->tif_name,
"PackBitsDecode: discarding %d bytes "
"to avoid buffer overrun",
n - occ);
n = occ;
}
occ -= n;
b = *bp++, cc--;
while (n-- > 0)
*op++ = (tidataval_t) b;
} else { /* copy next n+1 bytes literally */
if (occ < n + 1)
{
TIFFWarning(tif->tif_name,
"PackBitsDecode: discarding %d bytes "
"to avoid buffer overrun",
n - occ + 1);
n = occ - 1;
}
_TIFFmemcpy(op, bp, ++n);
op += n; occ -= n;
bp += n; cc -= n;
}
}
tif->tif_rawcp = (tidata_t) bp;
tif->tif_rawcc = cc;
if (occ > 0) {
TIFFError(tif->tif_name,
"PackBitsDecode: Not enough data for scanline %ld",
(long) tif->tif_row);
return (0);
}
return (1);
}
int
TIFFInitPackBits(TIFF* tif, int scheme)
{
(void) scheme;
tif->tif_decoderow = PackBitsDecode;
tif->tif_decodestrip = PackBitsDecode;
tif->tif_decodetile = PackBitsDecode;
tif->tif_preencode = PackBitsPreEncode;
tif->tif_encoderow = PackBitsEncode;
tif->tif_encodestrip = PackBitsEncodeChunk;
tif->tif_encodetile = PackBitsEncodeChunk;
return (1);
}
#endif /* PACKBITS_SUPPORT */

File diff suppressed because it is too large Load Diff

View File

@@ -1,464 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*
* Predictor Tag Support (used by multiple codecs).
*/
#include "tiffiop.h"
#include "tif_predict.h"
#include <assert.h>
#define PredictorState(tif) ((TIFFPredictorState*) (tif)->tif_data)
static void horAcc8(TIFF*, tidata_t, tsize_t);
static void horAcc16(TIFF*, tidata_t, tsize_t);
static void swabHorAcc16(TIFF*, tidata_t, tsize_t);
static void horDiff8(TIFF*, tidata_t, tsize_t);
static void horDiff16(TIFF*, tidata_t, tsize_t);
static int PredictorDecodeRow(TIFF*, tidata_t, tsize_t, tsample_t);
static int PredictorDecodeTile(TIFF*, tidata_t, tsize_t, tsample_t);
static int PredictorEncodeRow(TIFF*, tidata_t, tsize_t, tsample_t);
static int PredictorEncodeTile(TIFF*, tidata_t, tsize_t, tsample_t);
static int
PredictorSetup(TIFF* tif)
{
TIFFPredictorState* sp = PredictorState(tif);
TIFFDirectory* td = &tif->tif_dir;
if (sp->predictor == 1) /* no differencing */
return (1);
if (sp->predictor != 2) {
TIFFError(tif->tif_name, "\"Predictor\" value %d not supported",
sp->predictor);
return (0);
}
if (td->td_bitspersample != 8 && td->td_bitspersample != 16) {
TIFFError(tif->tif_name,
"Horizontal differencing \"Predictor\" not supported with %d-bit samples",
td->td_bitspersample);
return (0);
}
sp->stride = (td->td_planarconfig == PLANARCONFIG_CONTIG ?
td->td_samplesperpixel : 1);
/*
* Calculate the scanline/tile-width size in bytes.
*/
if (isTiled(tif))
sp->rowsize = TIFFTileRowSize(tif);
else
sp->rowsize = TIFFScanlineSize(tif);
return (1);
}
static int
PredictorSetupDecode(TIFF* tif)
{
TIFFPredictorState* sp = PredictorState(tif);
TIFFDirectory* td = &tif->tif_dir;
if (!(*sp->setupdecode)(tif) || !PredictorSetup(tif))
return (0);
if (sp->predictor == 2) {
switch (td->td_bitspersample) {
case 8: sp->pfunc = horAcc8; break;
case 16: sp->pfunc = horAcc16; break;
}
/*
* Override default decoding method with
* one that does the predictor stuff.
*/
sp->coderow = tif->tif_decoderow;
tif->tif_decoderow = PredictorDecodeRow;
sp->codestrip = tif->tif_decodestrip;
tif->tif_decodestrip = PredictorDecodeTile;
sp->codetile = tif->tif_decodetile;
tif->tif_decodetile = PredictorDecodeTile;
/*
* If the data is horizontally differenced
* 16-bit data that requires byte-swapping,
* then it must be byte swapped before the
* accumulation step. We do this with a
* special-purpose routine and override the
* normal post decoding logic that the library
* setup when the directory was read.
*/
if (tif->tif_flags&TIFF_SWAB) {
if (sp->pfunc == horAcc16) {
sp->pfunc = swabHorAcc16;
tif->tif_postdecode = _TIFFNoPostDecode;
} /* else handle 32-bit case... */
}
}
return (1);
}
static int
PredictorSetupEncode(TIFF* tif)
{
TIFFPredictorState* sp = PredictorState(tif);
TIFFDirectory* td = &tif->tif_dir;
if (!(*sp->setupencode)(tif) || !PredictorSetup(tif))
return (0);
if (sp->predictor == 2) {
switch (td->td_bitspersample) {
case 8: sp->pfunc = horDiff8; break;
case 16: sp->pfunc = horDiff16; break;
}
/*
* Override default encoding method with
* one that does the predictor stuff.
*/
sp->coderow = tif->tif_encoderow;
tif->tif_encoderow = PredictorEncodeRow;
sp->codestrip = tif->tif_encodestrip;
tif->tif_encodestrip = PredictorEncodeTile;
sp->codetile = tif->tif_encodetile;
tif->tif_encodetile = PredictorEncodeTile;
}
return (1);
}
#define REPEAT4(n, op) \
switch (n) { \
default: { int i; for (i = n-4; i > 0; i--) { op; } } \
case 4: op; \
case 3: op; \
case 2: op; \
case 1: op; \
case 0: ; \
}
static void
horAcc8(TIFF* tif, tidata_t cp0, tsize_t cc)
{
TIFFPredictorState* sp = PredictorState(tif);
tsize_t stride = sp->stride;
char* cp = (char*) cp0;
if (cc > stride) {
cc -= stride;
/*
* Pipeline the most common cases.
*/
if (stride == 3) {
u_int cr = cp[0];
u_int cg = cp[1];
u_int cb = cp[2];
do {
cc -= 3, cp += 3;
cp[0] = (char) (cr += cp[0]);
cp[1] = (char) (cg += cp[1]);
cp[2] = (char) (cb += cp[2]);
} while ((int32) cc > 0);
} else if (stride == 4) {
u_int cr = cp[0];
u_int cg = cp[1];
u_int cb = cp[2];
u_int ca = cp[3];
do {
cc -= 4, cp += 4;
cp[0] = (char) (cr += cp[0]);
cp[1] = (char) (cg += cp[1]);
cp[2] = (char) (cb += cp[2]);
cp[3] = (char) (ca += cp[3]);
} while ((int32) cc > 0);
} else {
do {
REPEAT4(stride, cp[stride] = (char) (cp[stride] + *cp); cp++)
cc -= stride;
} while ((int32) cc > 0);
}
}
}
static void
swabHorAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
{
TIFFPredictorState* sp = PredictorState(tif);
tsize_t stride = sp->stride;
uint16* wp = (uint16*) cp0;
tsize_t wc = cc / 2;
if (wc > stride) {
TIFFSwabArrayOfShort(wp, wc);
wc -= stride;
do {
REPEAT4(stride, wp[stride] += wp[0]; wp++)
wc -= stride;
} while ((int32) wc > 0);
}
}
static void
horAcc16(TIFF* tif, tidata_t cp0, tsize_t cc)
{
tsize_t stride = PredictorState(tif)->stride;
uint16* wp = (uint16*) cp0;
tsize_t wc = cc / 2;
if (wc > stride) {
wc -= stride;
do {
REPEAT4(stride, wp[stride] += wp[0]; wp++)
wc -= stride;
} while ((int32) wc > 0);
}
}
/*
* Decode a scanline and apply the predictor routine.
*/
static int
PredictorDecodeRow(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
{
TIFFPredictorState *sp = PredictorState(tif);
assert(sp != NULL);
assert(sp->coderow != NULL);
assert(sp->pfunc != NULL);
if ((*sp->coderow)(tif, op0, occ0, s)) {
(*sp->pfunc)(tif, op0, occ0);
return (1);
} else
return (0);
}
/*
* Decode a tile/strip and apply the predictor routine.
* Note that horizontal differencing must be done on a
* row-by-row basis. The width of a "row" has already
* been calculated at pre-decode time according to the
* strip/tile dimensions.
*/
static int
PredictorDecodeTile(TIFF* tif, tidata_t op0, tsize_t occ0, tsample_t s)
{
TIFFPredictorState *sp = PredictorState(tif);
assert(sp != NULL);
assert(sp->codetile != NULL);
if ((*sp->codetile)(tif, op0, occ0, s)) {
tsize_t rowsize = sp->rowsize;
assert(rowsize > 0);
assert(sp->pfunc != NULL);
while ((long)occ0 > 0) {
(*sp->pfunc)(tif, op0, (tsize_t) rowsize);
occ0 -= rowsize;
op0 += rowsize;
}
return (1);
} else
return (0);
}
static void
horDiff8(TIFF* tif, tidata_t cp0, tsize_t cc)
{
TIFFPredictorState* sp = PredictorState(tif);
tsize_t stride = sp->stride;
char* cp = (char*) cp0;
if (cc > stride) {
cc -= stride;
/*
* Pipeline the most common cases.
*/
if (stride == 3) {
int r1, g1, b1;
int r2 = cp[0];
int g2 = cp[1];
int b2 = cp[2];
do {
r1 = cp[3]; cp[3] = r1-r2; r2 = r1;
g1 = cp[4]; cp[4] = g1-g2; g2 = g1;
b1 = cp[5]; cp[5] = b1-b2; b2 = b1;
cp += 3;
} while ((int32)(cc -= 3) > 0);
} else if (stride == 4) {
int r1, g1, b1, a1;
int r2 = cp[0];
int g2 = cp[1];
int b2 = cp[2];
int a2 = cp[3];
do {
r1 = cp[4]; cp[4] = r1-r2; r2 = r1;
g1 = cp[5]; cp[5] = g1-g2; g2 = g1;
b1 = cp[6]; cp[6] = b1-b2; b2 = b1;
a1 = cp[7]; cp[7] = a1-a2; a2 = a1;
cp += 4;
} while ((int32)(cc -= 4) > 0);
} else {
cp += cc - 1;
do {
REPEAT4(stride, cp[stride] -= cp[0]; cp--)
} while ((int32)(cc -= stride) > 0);
}
}
}
static void
horDiff16(TIFF* tif, tidata_t cp0, tsize_t cc)
{
TIFFPredictorState* sp = PredictorState(tif);
tsize_t stride = sp->stride;
int16 *wp = (int16*) cp0;
tsize_t wc = cc/2;
if (wc > stride) {
wc -= stride;
wp += wc - 1;
do {
REPEAT4(stride, wp[stride] -= wp[0]; wp--)
wc -= stride;
} while ((int32) wc > 0);
}
}
static int
PredictorEncodeRow(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
{
TIFFPredictorState *sp = PredictorState(tif);
assert(sp != NULL);
assert(sp->pfunc != NULL);
assert(sp->coderow != NULL);
/* XXX horizontal differencing alters user's data XXX */
(*sp->pfunc)(tif, bp, cc);
return ((*sp->coderow)(tif, bp, cc, s));
}
static int
PredictorEncodeTile(TIFF* tif, tidata_t bp0, tsize_t cc0, tsample_t s)
{
TIFFPredictorState *sp = PredictorState(tif);
tsize_t cc = cc0, rowsize;
u_char* bp = bp0;
assert(sp != NULL);
assert(sp->pfunc != NULL);
assert(sp->codetile != NULL);
rowsize = sp->rowsize;
assert(rowsize > 0);
while ((long)cc > 0) {
(*sp->pfunc)(tif, bp, (tsize_t) rowsize);
cc -= rowsize;
bp += rowsize;
}
return ((*sp->codetile)(tif, bp0, cc0, s));
}
#define FIELD_PREDICTOR (FIELD_CODEC+0) /* XXX */
static const TIFFFieldInfo predictFieldInfo[] = {
{ TIFFTAG_PREDICTOR, 1, 1, TIFF_SHORT, FIELD_PREDICTOR,
FALSE, FALSE, "Predictor" },
};
#define N(a) (sizeof (a) / sizeof (a[0]))
static int
PredictorVSetField(TIFF* tif, ttag_t tag, va_list ap)
{
TIFFPredictorState *sp = PredictorState(tif);
switch (tag) {
case TIFFTAG_PREDICTOR:
sp->predictor = (uint16) va_arg(ap, int);
TIFFSetFieldBit(tif, FIELD_PREDICTOR);
break;
default:
return (*sp->vsetparent)(tif, tag, ap);
}
tif->tif_flags |= TIFF_DIRTYDIRECT;
return (1);
}
static int
PredictorVGetField(TIFF* tif, ttag_t tag, va_list ap)
{
TIFFPredictorState *sp = PredictorState(tif);
switch (tag) {
case TIFFTAG_PREDICTOR:
*va_arg(ap, uint16*) = sp->predictor;
break;
default:
return (*sp->vgetparent)(tif, tag, ap);
}
return (1);
}
static void
PredictorPrintDir(TIFF* tif, FILE* fd, long flags)
{
TIFFPredictorState* sp = PredictorState(tif);
(void) flags;
if (TIFFFieldSet(tif,FIELD_PREDICTOR)) {
fprintf(fd, " Predictor: ");
switch (sp->predictor) {
case 1: fprintf(fd, "none "); break;
case 2: fprintf(fd, "horizontal differencing "); break;
}
fprintf(fd, "%u (0x%x)\n", sp->predictor, sp->predictor);
}
if (sp->printdir)
(*sp->printdir)(tif, fd, flags);
}
int
TIFFPredictorInit(TIFF* tif)
{
TIFFPredictorState* sp = PredictorState(tif);
/*
* Merge codec-specific tag information and
* override parent get/set field methods.
*/
_TIFFMergeFieldInfo(tif, predictFieldInfo, N(predictFieldInfo));
sp->vgetparent = tif->tif_tagmethods.vgetfield;
tif->tif_tagmethods.vgetfield =
PredictorVGetField;/* hook for predictor tag */
sp->vsetparent = tif->tif_tagmethods.vsetfield;
tif->tif_tagmethods.vsetfield =
PredictorVSetField;/* hook for predictor tag */
sp->printdir = tif->tif_tagmethods.printdir;
tif->tif_tagmethods.printdir =
PredictorPrintDir; /* hook for predictor tag */
sp->setupdecode = tif->tif_setupdecode;
tif->tif_setupdecode = PredictorSetupDecode;
sp->setupencode = tif->tif_setupencode;
tif->tif_setupencode = PredictorSetupEncode;
sp->predictor = 1; /* default value */
sp->pfunc = NULL; /* no predictor routine */
return (1);
}

View File

@@ -1,61 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1995-1997 Sam Leffler
* Copyright (c) 1995-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _TIFFPREDICT_
#define _TIFFPREDICT_
/*
* ``Library-private'' Support for the Predictor Tag
*/
/*
* Codecs that want to support the Predictor tag must place
* this structure first in their private state block so that
* the predictor code can cast tif_data to find its state.
*/
typedef struct {
int predictor; /* predictor tag value */
int stride; /* sample stride over data */
tsize_t rowsize; /* tile/strip row size */
TIFFPostMethod pfunc; /* horizontal differencer/accumulator */
TIFFCodeMethod coderow; /* parent codec encode/decode row */
TIFFCodeMethod codestrip; /* parent codec encode/decode strip */
TIFFCodeMethod codetile; /* parent codec encode/decode tile */
TIFFVGetMethod vgetparent; /* super-class method */
TIFFVSetMethod vsetparent; /* super-class method */
TIFFPrintMethod printdir; /* super-class method */
TIFFBoolMethod setupdecode; /* super-class method */
TIFFBoolMethod setupencode; /* super-class method */
} TIFFPredictorState;
#if defined(__cplusplus)
extern "C" {
#endif
extern int TIFFPredictorInit(TIFF*);
#if defined(__cplusplus)
}
#endif
#endif /* _TIFFPREDICT_ */

View File

@@ -1,613 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*
* Directory Printing Support
*/
#include "tiffiop.h"
#include <stdio.h>
#include <ctype.h>
static const char *photoNames[] = {
"min-is-white", /* PHOTOMETRIC_MINISWHITE */
"min-is-black", /* PHOTOMETRIC_MINISBLACK */
"RGB color", /* PHOTOMETRIC_RGB */
"palette color (RGB from colormap)", /* PHOTOMETRIC_PALETTE */
"transparency mask", /* PHOTOMETRIC_MASK */
"separated", /* PHOTOMETRIC_SEPARATED */
"YCbCr", /* PHOTOMETRIC_YCBCR */
"7 (0x7)",
"CIE L*a*b*", /* PHOTOMETRIC_CIELAB */
};
#define NPHOTONAMES (sizeof (photoNames) / sizeof (photoNames[0]))
static const char *orientNames[] = {
"0 (0x0)",
"row 0 top, col 0 lhs", /* ORIENTATION_TOPLEFT */
"row 0 top, col 0 rhs", /* ORIENTATION_TOPRIGHT */
"row 0 bottom, col 0 rhs", /* ORIENTATION_BOTRIGHT */
"row 0 bottom, col 0 lhs", /* ORIENTATION_BOTLEFT */
"row 0 lhs, col 0 top", /* ORIENTATION_LEFTTOP */
"row 0 rhs, col 0 top", /* ORIENTATION_RIGHTTOP */
"row 0 rhs, col 0 bottom", /* ORIENTATION_RIGHTBOT */
"row 0 lhs, col 0 bottom", /* ORIENTATION_LEFTBOT */
};
#define NORIENTNAMES (sizeof (orientNames) / sizeof (orientNames[0]))
/*
* Print the contents of the current directory
* to the specified stdio file stream.
*/
void
TIFFPrintDirectory(TIFF* tif, FILE* fd, long flags)
{
register TIFFDirectory *td;
char *sep;
uint16 i;
long l, n;
fprintf(fd, "TIFF Directory at offset 0x%lx\n", tif->tif_diroff);
td = &tif->tif_dir;
if (TIFFFieldSet(tif,FIELD_SUBFILETYPE)) {
fprintf(fd, " Subfile Type:");
sep = " ";
if (td->td_subfiletype & FILETYPE_REDUCEDIMAGE) {
fprintf(fd, "%sreduced-resolution image", sep);
sep = "/";
}
if (td->td_subfiletype & FILETYPE_PAGE) {
fprintf(fd, "%smulti-page document", sep);
sep = "/";
}
if (td->td_subfiletype & FILETYPE_MASK)
fprintf(fd, "%stransparency mask", sep);
fprintf(fd, " (%lu = 0x%lx)\n",
(long) td->td_subfiletype, (long) td->td_subfiletype);
}
if (TIFFFieldSet(tif,FIELD_IMAGEDIMENSIONS)) {
fprintf(fd, " Image Width: %lu Image Length: %lu",
(u_long) td->td_imagewidth, (u_long) td->td_imagelength);
if (TIFFFieldSet(tif,FIELD_IMAGEDEPTH))
fprintf(fd, " Image Depth: %lu",
(u_long) td->td_imagedepth);
fprintf(fd, "\n");
}
/* Begin Pixar */
if (TIFFFieldSet(tif,FIELD_IMAGEFULLWIDTH) ||
TIFFFieldSet(tif,FIELD_IMAGEFULLLENGTH)) {
fprintf(fd, " Pixar Full Image Width: %lu Full Image Length: %lu\n",
(u_long) td->td_imagefullwidth,
(u_long) td->td_imagefulllength);
}
if (TIFFFieldSet(tif,FIELD_TEXTUREFORMAT))
_TIFFprintAsciiTag(fd, "Texture Format", td->td_textureformat);
if (TIFFFieldSet(tif,FIELD_WRAPMODES))
_TIFFprintAsciiTag(fd, "Texture Wrap Modes", td->td_wrapmodes);
if (TIFFFieldSet(tif,FIELD_FOVCOT))
fprintf(fd, " Field of View Cotangent: %g\n", td->td_fovcot);
if (TIFFFieldSet(tif,FIELD_MATRIX_WORLDTOSCREEN)) {
typedef float Matrix[4][4];
Matrix* m = (Matrix*)td->td_matrixWorldToScreen;
fprintf(fd, " Matrix NP:\n\t%g %g %g %g\n\t%g %g %g %g\n\t%g %g %g %g\n\t%g %g %g %g\n",
(*m)[0][0], (*m)[0][1], (*m)[0][2], (*m)[0][3],
(*m)[1][0], (*m)[1][1], (*m)[1][2], (*m)[1][3],
(*m)[2][0], (*m)[2][1], (*m)[2][2], (*m)[2][3],
(*m)[3][0], (*m)[3][1], (*m)[3][2], (*m)[3][3]);
}
if (TIFFFieldSet(tif,FIELD_MATRIX_WORLDTOCAMERA)) {
typedef float Matrix[4][4];
Matrix* m = (Matrix*)td->td_matrixWorldToCamera;
fprintf(fd, " Matrix Nl:\n\t%g %g %g %g\n\t%g %g %g %g\n\t%g %g %g %g\n\t%g %g %g %g\n",
(*m)[0][0], (*m)[0][1], (*m)[0][2], (*m)[0][3],
(*m)[1][0], (*m)[1][1], (*m)[1][2], (*m)[1][3],
(*m)[2][0], (*m)[2][1], (*m)[2][2], (*m)[2][3],
(*m)[3][0], (*m)[3][1], (*m)[3][2], (*m)[3][3]);
}
/* End Pixar */
if (TIFFFieldSet(tif,FIELD_TILEDIMENSIONS)) {
fprintf(fd, " Tile Width: %lu Tile Length: %lu",
(u_long) td->td_tilewidth, (u_long) td->td_tilelength);
if (TIFFFieldSet(tif,FIELD_TILEDEPTH))
fprintf(fd, " Tile Depth: %lu",
(u_long) td->td_tiledepth);
fprintf(fd, "\n");
}
if (TIFFFieldSet(tif,FIELD_RESOLUTION)) {
fprintf(fd, " Resolution: %g, %g",
td->td_xresolution, td->td_yresolution);
if (TIFFFieldSet(tif,FIELD_RESOLUTIONUNIT)) {
switch (td->td_resolutionunit) {
case RESUNIT_NONE:
fprintf(fd, " (unitless)");
break;
case RESUNIT_INCH:
fprintf(fd, " pixels/inch");
break;
case RESUNIT_CENTIMETER:
fprintf(fd, " pixels/cm");
break;
default:
fprintf(fd, " (unit %u = 0x%x)",
td->td_resolutionunit,
td->td_resolutionunit);
break;
}
}
fprintf(fd, "\n");
}
if (TIFFFieldSet(tif,FIELD_POSITION))
fprintf(fd, " Position: %g, %g\n",
td->td_xposition, td->td_yposition);
if (TIFFFieldSet(tif,FIELD_BITSPERSAMPLE))
fprintf(fd, " Bits/Sample: %u\n", td->td_bitspersample);
if (TIFFFieldSet(tif,FIELD_SAMPLEFORMAT)) {
fprintf(fd, " Sample Format: ");
switch (td->td_sampleformat) {
case SAMPLEFORMAT_VOID:
fprintf(fd, "void\n");
break;
case SAMPLEFORMAT_INT:
fprintf(fd, "signed integer\n");
break;
case SAMPLEFORMAT_UINT:
fprintf(fd, "unsigned integer\n");
break;
case SAMPLEFORMAT_IEEEFP:
fprintf(fd, "IEEE floating point\n");
break;
case SAMPLEFORMAT_COMPLEXINT:
fprintf(fd, "complex signed integer\n");
break;
case SAMPLEFORMAT_COMPLEXIEEEFP:
fprintf(fd, "complex IEEE floating point\n");
break;
default:
fprintf(fd, "%u (0x%x)\n",
td->td_sampleformat, td->td_sampleformat);
break;
}
}
if (TIFFFieldSet(tif,FIELD_COMPRESSION)) {
const TIFFCodec* c = TIFFFindCODEC(td->td_compression);
fprintf(fd, " Compression Scheme: ");
if (c)
fprintf(fd, "%s\n", c->name);
else
fprintf(fd, "%u (0x%x)\n",
td->td_compression, td->td_compression);
}
if (TIFFFieldSet(tif,FIELD_PHOTOMETRIC)) {
fprintf(fd, " Photometric Interpretation: ");
if (td->td_photometric < NPHOTONAMES)
fprintf(fd, "%s\n", photoNames[td->td_photometric]);
else {
switch (td->td_photometric) {
case PHOTOMETRIC_LOGL:
fprintf(fd, "CIE Log2(L)\n");
break;
case PHOTOMETRIC_LOGLUV:
fprintf(fd, "CIE Log2(L) (u',v')\n");
break;
default:
fprintf(fd, "%u (0x%x)\n",
td->td_photometric, td->td_photometric);
break;
}
}
}
if (TIFFFieldSet(tif,FIELD_EXTRASAMPLES) && td->td_extrasamples) {
fprintf(fd, " Extra Samples: %u<", td->td_extrasamples);
sep = "";
for (i = 0; i < td->td_extrasamples; i++) {
switch (td->td_sampleinfo[i]) {
case EXTRASAMPLE_UNSPECIFIED:
fprintf(fd, "%sunspecified", sep);
break;
case EXTRASAMPLE_ASSOCALPHA:
fprintf(fd, "%sassoc-alpha", sep);
break;
case EXTRASAMPLE_UNASSALPHA:
fprintf(fd, "%sunassoc-alpha", sep);
break;
default:
fprintf(fd, "%s%u (0x%x)", sep,
td->td_sampleinfo[i], td->td_sampleinfo[i]);
break;
}
sep = ", ";
}
fprintf(fd, ">\n");
}
if (TIFFFieldSet(tif,FIELD_STONITS)) {
fprintf(fd, " Sample to Nits conversion factor: %.4e\n",
td->td_stonits);
}
#ifdef CMYK_SUPPORT
if (TIFFFieldSet(tif,FIELD_INKSET)) {
fprintf(fd, " Ink Set: ");
switch (td->td_inkset) {
case INKSET_CMYK:
fprintf(fd, "CMYK\n");
break;
default:
fprintf(fd, "%u (0x%x)\n",
td->td_inkset, td->td_inkset);
break;
}
}
if (TIFFFieldSet(tif,FIELD_INKNAMES)) {
char* cp;
fprintf(fd, " Ink Names: ");
i = td->td_samplesperpixel;
sep = "";
for (cp = td->td_inknames; i > 0; cp = strchr(cp,'\0')+1, i--) {
fprintf(fd, "%s", sep);
_TIFFprintAscii(fd, cp);
sep = ", ";
}
}
if (TIFFFieldSet(tif,FIELD_NUMBEROFINKS))
fprintf(fd, " Number of Inks: %u\n", td->td_ninks);
if (TIFFFieldSet(tif,FIELD_DOTRANGE))
fprintf(fd, " Dot Range: %u-%u\n",
td->td_dotrange[0], td->td_dotrange[1]);
if (TIFFFieldSet(tif,FIELD_TARGETPRINTER))
_TIFFprintAsciiTag(fd, "Target Printer", td->td_targetprinter);
#endif
if (TIFFFieldSet(tif,FIELD_THRESHHOLDING)) {
fprintf(fd, " Thresholding: ");
switch (td->td_threshholding) {
case THRESHHOLD_BILEVEL:
fprintf(fd, "bilevel art scan\n");
break;
case THRESHHOLD_HALFTONE:
fprintf(fd, "halftone or dithered scan\n");
break;
case THRESHHOLD_ERRORDIFFUSE:
fprintf(fd, "error diffused\n");
break;
default:
fprintf(fd, "%u (0x%x)\n",
td->td_threshholding, td->td_threshholding);
break;
}
}
if (TIFFFieldSet(tif,FIELD_FILLORDER)) {
fprintf(fd, " FillOrder: ");
switch (td->td_fillorder) {
case FILLORDER_MSB2LSB:
fprintf(fd, "msb-to-lsb\n");
break;
case FILLORDER_LSB2MSB:
fprintf(fd, "lsb-to-msb\n");
break;
default:
fprintf(fd, "%u (0x%x)\n",
td->td_fillorder, td->td_fillorder);
break;
}
}
#ifdef YCBCR_SUPPORT
if (TIFFFieldSet(tif,FIELD_YCBCRSUBSAMPLING))
{
/*
* For hacky reasons (see tif_jpeg.c - JPEGFixupTestSubsampling),
* we need to fetch this rather than trust what is in our
* structures.
*/
uint16 subsampling[2];
TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING,
subsampling + 0, subsampling + 1 );
fprintf(fd, " YCbCr Subsampling: %u, %u\n",
subsampling[0], subsampling[1] );
}
if (TIFFFieldSet(tif,FIELD_YCBCRPOSITIONING)) {
fprintf(fd, " YCbCr Positioning: ");
switch (td->td_ycbcrpositioning) {
case YCBCRPOSITION_CENTERED:
fprintf(fd, "centered\n");
break;
case YCBCRPOSITION_COSITED:
fprintf(fd, "cosited\n");
break;
default:
fprintf(fd, "%u (0x%x)\n",
td->td_ycbcrpositioning, td->td_ycbcrpositioning);
break;
}
}
if (TIFFFieldSet(tif,FIELD_YCBCRCOEFFICIENTS))
fprintf(fd, " YCbCr Coefficients: %g, %g, %g\n",
td->td_ycbcrcoeffs[0],
td->td_ycbcrcoeffs[1],
td->td_ycbcrcoeffs[2]);
#endif
if (TIFFFieldSet(tif,FIELD_HALFTONEHINTS))
fprintf(fd, " Halftone Hints: light %u dark %u\n",
td->td_halftonehints[0], td->td_halftonehints[1]);
if (TIFFFieldSet(tif,FIELD_ARTIST))
_TIFFprintAsciiTag(fd, "Artist", td->td_artist);
if (TIFFFieldSet(tif,FIELD_DATETIME))
_TIFFprintAsciiTag(fd, "Date & Time", td->td_datetime);
if (TIFFFieldSet(tif,FIELD_HOSTCOMPUTER))
_TIFFprintAsciiTag(fd, "Host Computer", td->td_hostcomputer);
if (TIFFFieldSet(tif,FIELD_COPYRIGHT))
_TIFFprintAsciiTag(fd, "Copyright", td->td_copyright);
if (TIFFFieldSet(tif,FIELD_DOCUMENTNAME))
_TIFFprintAsciiTag(fd, "Document Name", td->td_documentname);
if (TIFFFieldSet(tif,FIELD_IMAGEDESCRIPTION))
_TIFFprintAsciiTag(fd, "Image Description", td->td_imagedescription);
if (TIFFFieldSet(tif,FIELD_MAKE))
_TIFFprintAsciiTag(fd, "Make", td->td_make);
if (TIFFFieldSet(tif,FIELD_MODEL))
_TIFFprintAsciiTag(fd, "Model", td->td_model);
if (TIFFFieldSet(tif,FIELD_ORIENTATION)) {
fprintf(fd, " Orientation: ");
if (td->td_orientation < NORIENTNAMES)
fprintf(fd, "%s\n", orientNames[td->td_orientation]);
else
fprintf(fd, "%u (0x%x)\n",
td->td_orientation, td->td_orientation);
}
if (TIFFFieldSet(tif,FIELD_SAMPLESPERPIXEL))
fprintf(fd, " Samples/Pixel: %u\n", td->td_samplesperpixel);
if (TIFFFieldSet(tif,FIELD_ROWSPERSTRIP)) {
fprintf(fd, " Rows/Strip: ");
if (td->td_rowsperstrip == (uint32) -1)
fprintf(fd, "(infinite)\n");
else
fprintf(fd, "%lu\n", (u_long) td->td_rowsperstrip);
}
if (TIFFFieldSet(tif,FIELD_MINSAMPLEVALUE))
fprintf(fd, " Min Sample Value: %u\n", td->td_minsamplevalue);
if (TIFFFieldSet(tif,FIELD_MAXSAMPLEVALUE))
fprintf(fd, " Max Sample Value: %u\n", td->td_maxsamplevalue);
if (TIFFFieldSet(tif,FIELD_SMINSAMPLEVALUE))
fprintf(fd, " SMin Sample Value: %g\n",
td->td_sminsamplevalue);
if (TIFFFieldSet(tif,FIELD_SMAXSAMPLEVALUE))
fprintf(fd, " SMax Sample Value: %g\n",
td->td_smaxsamplevalue);
if (TIFFFieldSet(tif,FIELD_PLANARCONFIG)) {
fprintf(fd, " Planar Configuration: ");
switch (td->td_planarconfig) {
case PLANARCONFIG_CONTIG:
fprintf(fd, "single image plane\n");
break;
case PLANARCONFIG_SEPARATE:
fprintf(fd, "separate image planes\n");
break;
default:
fprintf(fd, "%u (0x%x)\n",
td->td_planarconfig, td->td_planarconfig);
break;
}
}
if (TIFFFieldSet(tif,FIELD_PAGENAME))
_TIFFprintAsciiTag(fd, "Page Name", td->td_pagename);
if (TIFFFieldSet(tif,FIELD_PAGENUMBER))
fprintf(fd, " Page Number: %u-%u\n",
td->td_pagenumber[0], td->td_pagenumber[1]);
if (TIFFFieldSet(tif,FIELD_COLORMAP)) {
fprintf(fd, " Color Map: ");
if (flags & TIFFPRINT_COLORMAP) {
fprintf(fd, "\n");
n = 1L<<td->td_bitspersample;
for (l = 0; l < n; l++)
fprintf(fd, " %5lu: %5u %5u %5u\n",
l,
td->td_colormap[0][l],
td->td_colormap[1][l],
td->td_colormap[2][l]);
} else
fprintf(fd, "(present)\n");
}
#ifdef COLORIMETRY_SUPPORT
if (TIFFFieldSet(tif,FIELD_WHITEPOINT))
fprintf(fd, " White Point: %g-%g\n",
td->td_whitepoint[0], td->td_whitepoint[1]);
if (TIFFFieldSet(tif,FIELD_PRIMARYCHROMAS))
fprintf(fd, " Primary Chromaticities: %g,%g %g,%g %g,%g\n",
td->td_primarychromas[0], td->td_primarychromas[1],
td->td_primarychromas[2], td->td_primarychromas[3],
td->td_primarychromas[4], td->td_primarychromas[5]);
if (TIFFFieldSet(tif,FIELD_REFBLACKWHITE)) {
fprintf(fd, " Reference Black/White:\n");
for (i = 0; i < td->td_samplesperpixel; i++)
fprintf(fd, " %2d: %5g %5g\n",
i,
td->td_refblackwhite[2*i+0],
td->td_refblackwhite[2*i+1]);
}
if (TIFFFieldSet(tif,FIELD_TRANSFERFUNCTION)) {
fprintf(fd, " Transfer Function: ");
if (flags & TIFFPRINT_CURVES) {
fprintf(fd, "\n");
n = 1L<<td->td_bitspersample;
for (l = 0; l < n; l++) {
fprintf(fd, " %2lu: %5u",
l, td->td_transferfunction[0][l]);
for (i = 1; i < td->td_samplesperpixel; i++)
fprintf(fd, " %5u",
td->td_transferfunction[i][l]);
fputc('\n', fd);
}
} else
fprintf(fd, "(present)\n");
}
#endif
#ifdef ICC_SUPPORT
if (TIFFFieldSet(tif,FIELD_ICCPROFILE))
fprintf(fd, " ICC Profile: <present>, %lu bytes\n",
(u_long) td->td_profileLength);
#endif
#ifdef PHOTOSHOP_SUPPORT
if (TIFFFieldSet(tif,FIELD_PHOTOSHOP))
fprintf(fd, " Photoshop Data: <present>, %lu bytes\n",
(u_long) td->td_photoshopLength);
#endif
#ifdef IPTC_SUPPORT
if (TIFFFieldSet(tif,FIELD_RICHTIFFIPTC))
fprintf(fd, " RichTIFFIPTC Data: <present>, %lu bytes\n",
(u_long) td->td_richtiffiptcLength);
#endif
#if SUBIFD_SUPPORT
if (TIFFFieldSet(tif, FIELD_SUBIFD)) {
fprintf(fd, " SubIFD Offsets:");
for (i = 0; i < td->td_nsubifd; i++)
fprintf(fd, " %5lu", (long) td->td_subifd[i]);
fputc('\n', fd);
}
#endif
/*
** Custom tag support.
*/
{
int i;
short count;
count = (short) TIFFGetTagListCount( tif );
for( i = 0; i < count; i++ )
{
ttag_t tag = TIFFGetTagListEntry( tif, i );
const TIFFFieldInfo *fld;
fld = TIFFFieldWithTag( tif, tag );
if( fld == NULL )
continue;
if( fld->field_passcount )
{
short value_count;
int j;
void *raw_data;
if( TIFFGetField( tif, tag, &value_count, &raw_data ) != 1 )
continue;
fprintf(fd, " %s: ", fld->field_name );
for( j = 0; j < value_count; j++ )
{
if( fld->field_type == TIFF_BYTE )
fprintf( fd, "%d",
(int) ((char *) raw_data)[j] );
else if( fld->field_type == TIFF_SHORT )
fprintf( fd, "%d",
(int) ((short *) raw_data)[j] );
else if( fld->field_type == TIFF_LONG )
fprintf( fd, "%d",
(int) ((long *) raw_data)[j] );
else if( fld->field_type == TIFF_RATIONAL )
fprintf( fd, "%f",
((float *) raw_data)[j] );
else if( fld->field_type == TIFF_ASCII )
{
fprintf( fd, "%s",
(char *) raw_data );
break;
}
else if( fld->field_type == TIFF_DOUBLE )
fprintf( fd, "%f",
((double *) raw_data)[j] );
else if( fld->field_type == TIFF_FLOAT )
fprintf( fd, "%f",
((float *) raw_data)[j] );
else
{
fprintf( fd,
"<unsupported data type in TIFFPrint>" );
break;
}
if( j < value_count-1 )
fprintf( fd, "," );
}
fprintf( fd, "\n" );
}
else if( !fld->field_passcount
&& fld->field_type == TIFF_ASCII )
{
char *data;
if( TIFFGetField( tif, tag, &data ) )
fprintf(fd, " %s: %s\n", fld->field_name, data );
}
}
}
if (tif->tif_tagmethods.printdir)
(*tif->tif_tagmethods.printdir)(tif, fd, flags);
if ((flags & TIFFPRINT_STRIPS) &&
TIFFFieldSet(tif,FIELD_STRIPOFFSETS)) {
tstrip_t s;
fprintf(fd, " %lu %s:\n",
(long) td->td_nstrips,
isTiled(tif) ? "Tiles" : "Strips");
for (s = 0; s < td->td_nstrips; s++)
fprintf(fd, " %3lu: [%8lu, %8lu]\n",
(u_long) s,
(u_long) td->td_stripoffset[s],
(u_long) td->td_stripbytecount[s]);
}
}
void
_TIFFprintAscii(FILE* fd, const char* cp)
{
for (; *cp != '\0'; cp++) {
const char* tp;
if (isprint(*cp)) {
fputc(*cp, fd);
continue;
}
for (tp = "\tt\bb\rr\nn\vv"; *tp; tp++)
if (*tp++ == *cp)
break;
if (*tp)
fprintf(fd, "\\%c", *tp);
else
fprintf(fd, "\\%03o", *cp & 0xff);
}
}
void
_TIFFprintAsciiTag(FILE* fd, const char* name, const char* value)
{
fprintf(fd, " %s: \"", name);
_TIFFprintAscii(fd, value);
fprintf(fd, "\"\n");
}

View File

@@ -1,637 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
* Scanline-oriented Read Support
*/
#include "tiffiop.h"
#include <stdio.h>
#include <assert.h>
int TIFFFillStrip(TIFF*, tstrip_t);
int TIFFFillTile(TIFF*, ttile_t);
static int TIFFStartStrip(TIFF*, tstrip_t);
static int TIFFStartTile(TIFF*, ttile_t);
static int TIFFCheckRead(TIFF*, int);
#define NOSTRIP ((tstrip_t) -1) /* undefined state */
#define NOTILE ((ttile_t) -1) /* undefined state */
/*
* Seek to a random row+sample in a file.
*/
static int
TIFFSeek(TIFF* tif, uint32 row, tsample_t sample)
{
register TIFFDirectory *td = &tif->tif_dir;
tstrip_t strip;
if (row >= td->td_imagelength) { /* out of range */
TIFFError(tif->tif_name, "%lu: Row out of range, max %lu",
(u_long) row, (u_long) td->td_imagelength);
return (0);
}
if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
if (sample >= td->td_samplesperpixel) {
TIFFError(tif->tif_name,
"%lu: Sample out of range, max %lu",
(u_long) sample, (u_long) td->td_samplesperpixel);
return (0);
}
strip = sample*td->td_stripsperimage + row/td->td_rowsperstrip;
} else
strip = row / td->td_rowsperstrip;
if (strip != tif->tif_curstrip) { /* different strip, refill */
if (!TIFFFillStrip(tif, strip))
return (0);
} else if (row < tif->tif_row) {
/*
* Moving backwards within the same strip: backup
* to the start and then decode forward (below).
*
* NB: If you're planning on lots of random access within a
* strip, it's better to just read and decode the entire
* strip, and then access the decoded data in a random fashion.
*/
if (!TIFFStartStrip(tif, strip))
return (0);
}
if (row != tif->tif_row) {
/*
* Seek forward to the desired row.
*/
if (!(*tif->tif_seek)(tif, row - tif->tif_row))
return (0);
tif->tif_row = row;
}
return (1);
}
int
TIFFReadScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
{
int e;
if (!TIFFCheckRead(tif, 0))
return (-1);
if( (e = TIFFSeek(tif, row, sample)) != 0) {
/*
* Decompress desired row into user buffer.
*/
e = (*tif->tif_decoderow)
(tif, (tidata_t) buf, tif->tif_scanlinesize, sample);
/* we are now poised at the beginning of the next row */
tif->tif_row = row + 1;
if (e)
(*tif->tif_postdecode)(tif, (tidata_t) buf,
tif->tif_scanlinesize);
}
return (e > 0 ? 1 : -1);
}
/*
* Read a strip of data and decompress the specified
* amount into the user-supplied buffer.
*/
tsize_t
TIFFReadEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t buf, tsize_t size)
{
TIFFDirectory *td = &tif->tif_dir;
uint32 nrows;
tsize_t stripsize;
tstrip_t sep_strip, strips_per_sep;
if (!TIFFCheckRead(tif, 0))
return (-1);
if (strip >= td->td_nstrips) {
TIFFError(tif->tif_name, "%ld: Strip out of range, max %ld",
(long) strip, (long) td->td_nstrips);
return (-1);
}
/*
* Calculate the strip size according to the number of
* rows in the strip (check for truncated last strip on any
* of the separations).
*/
if( td->td_rowsperstrip >= td->td_imagelength )
strips_per_sep = 1;
else
strips_per_sep = (td->td_imagelength+td->td_rowsperstrip-1)
/ td->td_rowsperstrip;
sep_strip = strip % strips_per_sep;
if (sep_strip != strips_per_sep-1 ||
(nrows = td->td_imagelength % td->td_rowsperstrip) == 0)
nrows = td->td_rowsperstrip;
stripsize = TIFFVStripSize(tif, nrows);
if (size == (tsize_t) -1)
size = stripsize;
else if (size > stripsize)
size = stripsize;
if (TIFFFillStrip(tif, strip)
&& (*tif->tif_decodestrip)(tif, (tidata_t) buf, size,
(tsample_t)(strip / td->td_stripsperimage)) > 0 ) {
(*tif->tif_postdecode)(tif, (tidata_t) buf, size);
return (size);
} else
return ((tsize_t) -1);
}
static tsize_t
TIFFReadRawStrip1(TIFF* tif,
tstrip_t strip, tdata_t buf, tsize_t size, const char* module)
{
TIFFDirectory *td = &tif->tif_dir;
if (!isMapped(tif)) {
tsize_t cc;
if (!SeekOK(tif, td->td_stripoffset[strip])) {
TIFFError(module,
"%s: Seek error at scanline %lu, strip %lu",
tif->tif_name,
(u_long) tif->tif_row, (u_long) strip);
return (-1);
}
cc = TIFFReadFile(tif, buf, size);
if (cc != size) {
TIFFError(module,
"%s: Read error at scanline %lu; got %lu bytes, expected %lu",
tif->tif_name,
(u_long) tif->tif_row,
(u_long) cc,
(u_long) size);
return (-1);
}
} else {
if (td->td_stripoffset[strip] + size > tif->tif_size) {
TIFFError(module,
"%s: Read error at scanline %lu, strip %lu; got %lu bytes, expected %lu",
tif->tif_name,
(u_long) tif->tif_row,
(u_long) strip,
(u_long) tif->tif_size - td->td_stripoffset[strip],
(u_long) size);
return (-1);
}
_TIFFmemcpy(buf, tif->tif_base + td->td_stripoffset[strip], size);
}
return (size);
}
/*
* Read a strip of data from the file.
*/
tsize_t
TIFFReadRawStrip(TIFF* tif, tstrip_t strip, tdata_t buf, tsize_t size)
{
static const char module[] = "TIFFReadRawStrip";
TIFFDirectory *td = &tif->tif_dir;
tsize_t bytecount;
if (!TIFFCheckRead(tif, 0))
return ((tsize_t) -1);
if (strip >= td->td_nstrips) {
TIFFError(tif->tif_name, "%lu: Strip out of range, max %lu",
(u_long) strip, (u_long) td->td_nstrips);
return ((tsize_t) -1);
}
bytecount = td->td_stripbytecount[strip];
if (bytecount <= 0) {
TIFFError(tif->tif_name,
"%lu: Invalid strip byte count, strip %lu",
(u_long) bytecount, (u_long) strip);
return ((tsize_t) -1);
}
if (size != (tsize_t)-1 && size < bytecount)
bytecount = size;
return (TIFFReadRawStrip1(tif, strip, buf, bytecount, module));
}
/*
* Read the specified strip and setup for decoding.
* The data buffer is expanded, as necessary, to
* hold the strip's data.
*/
int
TIFFFillStrip(TIFF* tif, tstrip_t strip)
{
static const char module[] = "TIFFFillStrip";
TIFFDirectory *td = &tif->tif_dir;
tsize_t bytecount;
bytecount = td->td_stripbytecount[strip];
if (bytecount <= 0) {
TIFFError(tif->tif_name,
"%lu: Invalid strip byte count, strip %lu",
(u_long) bytecount, (u_long) strip);
return (0);
}
if (isMapped(tif) &&
(isFillOrder(tif, td->td_fillorder) || (tif->tif_flags & TIFF_NOBITREV))) {
/*
* The image is mapped into memory and we either don't
* need to flip bits or the compression routine is going
* to handle this operation itself. In this case, avoid
* copying the raw data and instead just reference the
* data from the memory mapped file image. This assumes
* that the decompression routines do not modify the
* contents of the raw data buffer (if they try to,
* the application will get a fault since the file is
* mapped read-only).
*/
if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
_TIFFfree(tif->tif_rawdata);
tif->tif_flags &= ~TIFF_MYBUFFER;
if ( td->td_stripoffset[strip] + bytecount > tif->tif_size) {
/*
* This error message might seem strange, but it's
* what would happen if a read were done instead.
*/
TIFFError(module,
"%s: Read error on strip %lu; got %lu bytes, expected %lu",
tif->tif_name,
(u_long) strip,
(u_long) tif->tif_size - td->td_stripoffset[strip],
(u_long) bytecount);
tif->tif_curstrip = NOSTRIP;
return (0);
}
tif->tif_rawdatasize = bytecount;
tif->tif_rawdata = tif->tif_base + td->td_stripoffset[strip];
} else {
/*
* Expand raw data buffer, if needed, to
* hold data strip coming from file
* (perhaps should set upper bound on
* the size of a buffer we'll use?).
*/
if (bytecount > tif->tif_rawdatasize) {
tif->tif_curstrip = NOSTRIP;
if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
TIFFError(module,
"%s: Data buffer too small to hold strip %lu",
tif->tif_name, (u_long) strip);
return (0);
}
if (!TIFFReadBufferSetup(tif, 0,
TIFFroundup(bytecount, 1024)))
return (0);
}
if (TIFFReadRawStrip1(tif, strip, (u_char *)tif->tif_rawdata,
bytecount, module) != bytecount)
return (0);
if (!isFillOrder(tif, td->td_fillorder) &&
(tif->tif_flags & TIFF_NOBITREV) == 0)
TIFFReverseBits(tif->tif_rawdata, bytecount);
}
return (TIFFStartStrip(tif, strip));
}
/*
* Tile-oriented Read Support
* Contributed by Nancy Cam (Silicon Graphics).
*/
/*
* Read and decompress a tile of data. The
* tile is selected by the (x,y,z,s) coordinates.
*/
tsize_t
TIFFReadTile(TIFF* tif,
tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t s)
{
if (!TIFFCheckRead(tif, 1) || !TIFFCheckTile(tif, x, y, z, s))
return (-1);
return (TIFFReadEncodedTile(tif,
TIFFComputeTile(tif, x, y, z, s), buf, (tsize_t) -1));
}
/*
* Read a tile of data and decompress the specified
* amount into the user-supplied buffer.
*/
tsize_t
TIFFReadEncodedTile(TIFF* tif, ttile_t tile, tdata_t buf, tsize_t size)
{
TIFFDirectory *td = &tif->tif_dir;
tsize_t tilesize = tif->tif_tilesize;
if (!TIFFCheckRead(tif, 1))
return (-1);
if (tile >= td->td_nstrips) {
TIFFError(tif->tif_name, "%ld: Tile out of range, max %ld",
(long) tile, (u_long) td->td_nstrips);
return (-1);
}
if (size == (tsize_t) -1)
size = tilesize;
else if (size > tilesize)
size = tilesize;
if (TIFFFillTile(tif, tile) && (*tif->tif_decodetile)(tif,
(tidata_t) buf, size, (tsample_t)(tile/td->td_stripsperimage))) {
(*tif->tif_postdecode)(tif, (tidata_t) buf, size);
return (size);
} else
return (-1);
}
static tsize_t
TIFFReadRawTile1(TIFF* tif,
ttile_t tile, tdata_t buf, tsize_t size, const char* module)
{
TIFFDirectory *td = &tif->tif_dir;
if (!isMapped(tif)) {
tsize_t cc;
if (!SeekOK(tif, td->td_stripoffset[tile])) {
TIFFError(module,
"%s: Seek error at row %ld, col %ld, tile %ld",
tif->tif_name,
(long) tif->tif_row,
(long) tif->tif_col,
(long) tile);
return ((tsize_t) -1);
}
cc = TIFFReadFile(tif, buf, size);
if (cc != size) {
TIFFError(module,
"%s: Read error at row %ld, col %ld; got %lu bytes, expected %lu",
tif->tif_name,
(long) tif->tif_row,
(long) tif->tif_col,
(u_long) cc,
(u_long) size);
return ((tsize_t) -1);
}
} else {
if (td->td_stripoffset[tile] + size > tif->tif_size) {
TIFFError(module,
"%s: Read error at row %ld, col %ld, tile %ld; got %lu bytes, expected %lu",
tif->tif_name,
(long) tif->tif_row,
(long) tif->tif_col,
(long) tile,
(u_long) tif->tif_size - td->td_stripoffset[tile],
(u_long) size);
return ((tsize_t) -1);
}
_TIFFmemcpy(buf, tif->tif_base + td->td_stripoffset[tile], size);
}
return (size);
}
/*
* Read a tile of data from the file.
*/
tsize_t
TIFFReadRawTile(TIFF* tif, ttile_t tile, tdata_t buf, tsize_t size)
{
static const char module[] = "TIFFReadRawTile";
TIFFDirectory *td = &tif->tif_dir;
tsize_t bytecount;
if (!TIFFCheckRead(tif, 1))
return ((tsize_t) -1);
if (tile >= td->td_nstrips) {
TIFFError(tif->tif_name, "%lu: Tile out of range, max %lu",
(u_long) tile, (u_long) td->td_nstrips);
return ((tsize_t) -1);
}
bytecount = td->td_stripbytecount[tile];
if (size != (tsize_t) -1 && size < bytecount)
bytecount = size;
return (TIFFReadRawTile1(tif, tile, buf, bytecount, module));
}
/*
* Read the specified tile and setup for decoding.
* The data buffer is expanded, as necessary, to
* hold the tile's data.
*/
int
TIFFFillTile(TIFF* tif, ttile_t tile)
{
static const char module[] = "TIFFFillTile";
TIFFDirectory *td = &tif->tif_dir;
tsize_t bytecount;
bytecount = td->td_stripbytecount[tile];
if (bytecount <= 0) {
TIFFError(tif->tif_name,
"%lu: Invalid tile byte count, tile %lu",
(u_long) bytecount, (u_long) tile);
return (0);
}
if (isMapped(tif) &&
(isFillOrder(tif, td->td_fillorder) || (tif->tif_flags & TIFF_NOBITREV))) {
/*
* The image is mapped into memory and we either don't
* need to flip bits or the compression routine is going
* to handle this operation itself. In this case, avoid
* copying the raw data and instead just reference the
* data from the memory mapped file image. This assumes
* that the decompression routines do not modify the
* contents of the raw data buffer (if they try to,
* the application will get a fault since the file is
* mapped read-only).
*/
if ((tif->tif_flags & TIFF_MYBUFFER) && tif->tif_rawdata)
_TIFFfree(tif->tif_rawdata);
tif->tif_flags &= ~TIFF_MYBUFFER;
if ( td->td_stripoffset[tile] + bytecount > tif->tif_size) {
tif->tif_curtile = NOTILE;
return (0);
}
tif->tif_rawdatasize = bytecount;
tif->tif_rawdata = tif->tif_base + td->td_stripoffset[tile];
} else {
/*
* Expand raw data buffer, if needed, to
* hold data tile coming from file
* (perhaps should set upper bound on
* the size of a buffer we'll use?).
*/
if (bytecount > tif->tif_rawdatasize) {
tif->tif_curtile = NOTILE;
if ((tif->tif_flags & TIFF_MYBUFFER) == 0) {
TIFFError(module,
"%s: Data buffer too small to hold tile %ld",
tif->tif_name, (long) tile);
return (0);
}
if (!TIFFReadBufferSetup(tif, 0,
TIFFroundup(bytecount, 1024)))
return (0);
}
if (TIFFReadRawTile1(tif, tile, (u_char *)tif->tif_rawdata,
bytecount, module) != bytecount)
return (0);
if (!isFillOrder(tif, td->td_fillorder) &&
(tif->tif_flags & TIFF_NOBITREV) == 0)
TIFFReverseBits(tif->tif_rawdata, bytecount);
}
return (TIFFStartTile(tif, tile));
}
/*
* Setup the raw data buffer in preparation for
* reading a strip of raw data. If the buffer
* is specified as zero, then a buffer of appropriate
* size is allocated by the library. Otherwise,
* the client must guarantee that the buffer is
* large enough to hold any individual strip of
* raw data.
*/
int
TIFFReadBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
{
static const char module[] = "TIFFReadBufferSetup";
if (tif->tif_rawdata) {
if (tif->tif_flags & TIFF_MYBUFFER)
_TIFFfree(tif->tif_rawdata);
tif->tif_rawdata = NULL;
}
if (bp) {
tif->tif_rawdatasize = size;
tif->tif_rawdata = (tidata_t) bp;
tif->tif_flags &= ~TIFF_MYBUFFER;
} else {
tif->tif_rawdatasize = TIFFroundup(size, 1024);
tif->tif_rawdata = (tidata_t) _TIFFmalloc(tif->tif_rawdatasize);
tif->tif_flags |= TIFF_MYBUFFER;
}
if (tif->tif_rawdata == NULL) {
TIFFError(module,
"%s: No space for data buffer at scanline %ld",
tif->tif_name, (long) tif->tif_row);
tif->tif_rawdatasize = 0;
return (0);
}
return (1);
}
/*
* Set state to appear as if a
* strip has just been read in.
*/
static int
TIFFStartStrip(TIFF* tif, tstrip_t strip)
{
TIFFDirectory *td = &tif->tif_dir;
if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
if (!(*tif->tif_setupdecode)(tif))
return (0);
tif->tif_flags |= TIFF_CODERSETUP;
}
tif->tif_curstrip = strip;
tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
tif->tif_rawcp = tif->tif_rawdata;
tif->tif_rawcc = td->td_stripbytecount[strip];
return ((*tif->tif_predecode)(tif,
(tsample_t)(strip / td->td_stripsperimage)));
}
/*
* Set state to appear as if a
* tile has just been read in.
*/
static int
TIFFStartTile(TIFF* tif, ttile_t tile)
{
TIFFDirectory *td = &tif->tif_dir;
if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
if (!(*tif->tif_setupdecode)(tif))
return (0);
tif->tif_flags |= TIFF_CODERSETUP;
}
tif->tif_curtile = tile;
tif->tif_row =
(tile % TIFFhowmany(td->td_imagewidth, td->td_tilewidth)) *
td->td_tilelength;
tif->tif_col =
(tile % TIFFhowmany(td->td_imagelength, td->td_tilelength)) *
td->td_tilewidth;
tif->tif_rawcp = tif->tif_rawdata;
tif->tif_rawcc = td->td_stripbytecount[tile];
return ((*tif->tif_predecode)(tif,
(tsample_t)(tile/td->td_stripsperimage)));
}
static int
TIFFCheckRead(TIFF* tif, int tiles)
{
if (tif->tif_mode == O_WRONLY) {
TIFFError(tif->tif_name, "File not open for reading");
return (0);
}
if (tiles ^ isTiled(tif)) {
TIFFError(tif->tif_name, tiles ?
"Can not read tiles from a stripped image" :
"Can not read scanlines from a tiled image");
return (0);
}
return (1);
}
void
_TIFFNoPostDecode(TIFF* tif, tidata_t buf, tsize_t cc)
{
(void) tif; (void) buf; (void) cc;
}
void
_TIFFSwab16BitData(TIFF* tif, tidata_t buf, tsize_t cc)
{
(void) tif;
assert((cc & 1) == 0);
TIFFSwabArrayOfShort((uint16*) buf, cc/2);
}
void
_TIFFSwab32BitData(TIFF* tif, tidata_t buf, tsize_t cc)
{
(void) tif;
assert((cc & 3) == 0);
TIFFSwabArrayOfLong((uint32*) buf, cc/4);
}
void
_TIFFSwab64BitData(TIFF* tif, tidata_t buf, tsize_t cc)
{
(void) tif;
assert((cc & 7) == 0);
TIFFSwabArrayOfDouble((double*) buf, cc/8);
}

View File

@@ -1,254 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1991-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*
* Strip-organized Image Support Routines.
*/
#include "tiffiop.h"
static uint32
summarize(TIFF* tif, size_t summand1, size_t summand2, const char* where)
{
uint32 bytes = summand1 + summand2;
if (bytes - summand1 != summand2) {
TIFFError(tif->tif_name, "Integer overflow in %s", where);
bytes = 0;
}
return (bytes);
}
static uint32
multiply(TIFF* tif, size_t nmemb, size_t elem_size, const char* where)
{
uint32 bytes = nmemb * elem_size;
if (elem_size && bytes / elem_size != nmemb) {
TIFFError(tif->tif_name, "Integer overflow in %s", where);
bytes = 0;
}
return (bytes);
}
/*
* Compute which strip a (row,sample) value is in.
*/
tstrip_t
TIFFComputeStrip(TIFF* tif, uint32 row, tsample_t sample)
{
TIFFDirectory *td = &tif->tif_dir;
tstrip_t strip;
strip = row / td->td_rowsperstrip;
if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
if (sample >= td->td_samplesperpixel) {
TIFFError(tif->tif_name,
"%u: Sample out of range, max %u",
sample, td->td_samplesperpixel);
return ((tstrip_t) 0);
}
strip += sample*td->td_stripsperimage;
}
return (strip);
}
/*
* Compute how many strips are in an image.
*/
tstrip_t
TIFFNumberOfStrips(TIFF* tif)
{
TIFFDirectory *td = &tif->tif_dir;
tstrip_t nstrips;
nstrips = (td->td_rowsperstrip == (uint32) -1 ?
(td->td_imagelength != 0 ? 1 : 0) :
TIFFhowmany(td->td_imagelength, td->td_rowsperstrip));
if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
nstrips = multiply(tif, nstrips, td->td_samplesperpixel,
"TIFFNumberOfStrips");
return (nstrips);
}
/*
* Compute the # bytes in a variable height, row-aligned strip.
*/
tsize_t
TIFFVStripSize(TIFF* tif, uint32 nrows)
{
TIFFDirectory *td = &tif->tif_dir;
if (nrows == (uint32) -1)
nrows = td->td_imagelength;
#ifdef YCBCR_SUPPORT
if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
td->td_photometric == PHOTOMETRIC_YCBCR &&
!isUpSampled(tif)) {
/*
* Packed YCbCr data contain one Cb+Cr for every
* HorizontalSampling*VerticalSampling Y values.
* Must also roundup width and height when calculating
* since images that are not a multiple of the
* horizontal/vertical subsampling area include
* YCbCr data for the extended image.
*/
uint16 ycbcrsubsampling[2];
tsize_t w, scanline, samplingarea;
TIFFGetField( tif, TIFFTAG_YCBCRSUBSAMPLING,
ycbcrsubsampling + 0,
ycbcrsubsampling + 1 );
w = TIFFroundup(td->td_imagewidth, ycbcrsubsampling[0]);
scanline = TIFFhowmany8(multiply(tif, w, td->td_bitspersample,
"TIFFVStripSize"));
samplingarea = ycbcrsubsampling[0]*ycbcrsubsampling[1];
nrows = TIFFroundup(nrows, ycbcrsubsampling[1]);
/* NB: don't need TIFFhowmany here 'cuz everything is rounded */
scanline = multiply(tif, nrows, scanline, "TIFFVStripSize");
return ((tsize_t)
summarize(tif, scanline,
multiply(tif, 2, scanline / samplingarea,
"TIFFVStripSize"), "TIFFVStripSize"));
} else
#endif
return ((tsize_t) multiply(tif, nrows, TIFFScanlineSize(tif),
"TIFFVStripSize"));
}
/*
* Compute the # bytes in a raw strip.
*/
tsize_t
TIFFRawStripSize(TIFF* tif, tstrip_t strip)
{
TIFFDirectory* td = &tif->tif_dir;
tsize_t bytecount = td->td_stripbytecount[strip];
if (bytecount <= 0) {
TIFFError(tif->tif_name,
"%lu: Invalid strip byte count, strip %lu",
(u_long) bytecount, (u_long) strip);
bytecount = (tsize_t) -1;
}
return bytecount;
}
/*
* Compute the # bytes in a (row-aligned) strip.
*
* Note that if RowsPerStrip is larger than the
* recorded ImageLength, then the strip size is
* truncated to reflect the actual space required
* to hold the strip.
*/
tsize_t
TIFFStripSize(TIFF* tif)
{
TIFFDirectory* td = &tif->tif_dir;
uint32 rps = td->td_rowsperstrip;
if (rps > td->td_imagelength)
rps = td->td_imagelength;
return (TIFFVStripSize(tif, rps));
}
/*
* Compute a default strip size based on the image
* characteristics and a requested value. If the
* request is <1 then we choose a strip size according
* to certain heuristics.
*/
uint32
TIFFDefaultStripSize(TIFF* tif, uint32 request)
{
return (*tif->tif_defstripsize)(tif, request);
}
uint32
_TIFFDefaultStripSize(TIFF* tif, uint32 s)
{
if ((int32) s < 1) {
/*
* If RowsPerStrip is unspecified, try to break the
* image up into strips that are approximately 8Kbytes.
*/
tsize_t scanline = TIFFScanlineSize(tif);
s = (uint32)(8*1024) / (scanline == 0 ? 1 : scanline);
if (s == 0) /* very wide images */
s = 1;
}
return (s);
}
/*
* Return the number of bytes to read/write in a call to
* one of the scanline-oriented i/o routines. Note that
* this number may be 1/samples-per-pixel if data is
* stored as separate planes.
*/
tsize_t
TIFFScanlineSize(TIFF* tif)
{
TIFFDirectory *td = &tif->tif_dir;
tsize_t scanline;
scanline = multiply (tif, td->td_bitspersample, td->td_imagewidth,
"TIFFScanlineSize");
if (td->td_planarconfig == PLANARCONFIG_CONTIG)
scanline = multiply (tif, scanline, td->td_samplesperpixel,
"TIFFScanlineSize");
return ((tsize_t) TIFFhowmany8(scanline));
}
/*
* Return the number of bytes required to store a complete
* decoded and packed raster scanline (as opposed to the
* I/O size returned by TIFFScanlineSize which may be less
* if data is store as separate planes).
*/
tsize_t
TIFFRasterScanlineSize(TIFF* tif)
{
TIFFDirectory *td = &tif->tif_dir;
tsize_t scanline;
scanline = multiply (tif, td->td_bitspersample, td->td_imagewidth,
"TIFFRasterScanlineSize");
if (td->td_planarconfig == PLANARCONFIG_CONTIG) {
scanline = multiply (tif, scanline, td->td_samplesperpixel,
"TIFFRasterScanlineSize");
return ((tsize_t) TIFFhowmany8(scanline));
} else
return ((tsize_t) multiply (tif, TIFFhowmany8(scanline),
td->td_samplesperpixel,
"TIFFRasterScanlineSize"));
}

View File

@@ -1,217 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library Bit & Byte Swapping Support.
*
* XXX We assume short = 16-bits and long = 32-bits XXX
*/
#include "tiffiop.h"
#ifndef TIFFSwabShort
void
TIFFSwabShort(uint16* wp)
{
register u_char* cp = (u_char*) wp;
u_char t;
t = cp[1]; cp[1] = cp[0]; cp[0] = t;
}
#endif
#ifndef TIFFSwabLong
void
TIFFSwabLong(uint32* lp)
{
register u_char* cp = (u_char*) lp;
u_char t;
t = cp[3]; cp[3] = cp[0]; cp[0] = t;
t = cp[2]; cp[2] = cp[1]; cp[1] = t;
}
#endif
#ifndef TIFFSwabArrayOfShort
void
TIFFSwabArrayOfShort(uint16* wp, register u_long n)
{
register u_char* cp;
register u_char t;
/* XXX unroll loop some */
while (n-- > 0) {
cp = (u_char*) wp;
t = cp[1]; cp[1] = cp[0]; cp[0] = t;
wp++;
}
}
#endif
#ifndef TIFFSwabArrayOfLong
void
TIFFSwabArrayOfLong(register uint32* lp, register u_long n)
{
register unsigned char *cp;
register unsigned char t;
/* XXX unroll loop some */
while (n-- > 0) {
cp = (unsigned char *)lp;
t = cp[3]; cp[3] = cp[0]; cp[0] = t;
t = cp[2]; cp[2] = cp[1]; cp[1] = t;
lp++;
}
}
#endif
#ifndef TIFFSwabDouble
void
TIFFSwabDouble(double *dp)
{
register uint32* lp = (uint32*) dp;
uint32 t;
TIFFSwabArrayOfLong(lp, 2);
t = lp[0]; lp[0] = lp[1]; lp[1] = t;
}
#endif
#ifndef TIFFSwabArrayOfDouble
void
TIFFSwabArrayOfDouble(double* dp, register u_long n)
{
register uint32* lp = (uint32*) dp;
register uint32 t;
TIFFSwabArrayOfLong(lp, n + n);
while (n-- > 0) {
t = lp[0]; lp[0] = lp[1]; lp[1] = t;
lp += 2;
}
}
#endif
/*
* Bit reversal tables. TIFFBitRevTable[<byte>] gives
* the bit reversed value of <byte>. Used in various
* places in the library when the FillOrder requires
* bit reversal of byte values (e.g. CCITT Fax 3
* encoding/decoding). TIFFNoBitRevTable is provided
* for algorithms that want an equivalent table that
* do not reverse bit values.
*/
static const unsigned char TIFFBitRevTable[256] = {
0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
};
static const unsigned char TIFFNoBitRevTable[256] = {
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
};
const unsigned char*
TIFFGetBitRevTable(int reversed)
{
return (reversed ? TIFFBitRevTable : TIFFNoBitRevTable);
}
void
TIFFReverseBits(register u_char* cp, register u_long n)
{
for (; n > 8; n -= 8) {
cp[0] = TIFFBitRevTable[cp[0]];
cp[1] = TIFFBitRevTable[cp[1]];
cp[2] = TIFFBitRevTable[cp[2]];
cp[3] = TIFFBitRevTable[cp[3]];
cp[4] = TIFFBitRevTable[cp[4]];
cp[5] = TIFFBitRevTable[cp[5]];
cp[6] = TIFFBitRevTable[cp[6]];
cp[7] = TIFFBitRevTable[cp[7]];
cp += 8;
}
while (n-- > 0)
*cp = TIFFBitRevTable[*cp], cp++;
}

View File

@@ -1,156 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#include "tiffiop.h"
#ifdef THUNDER_SUPPORT
/*
* TIFF Library.
*
* ThunderScan 4-bit Compression Algorithm Support
*/
/*
* ThunderScan uses an encoding scheme designed for
* 4-bit pixel values. Data is encoded in bytes, with
* each byte split into a 2-bit code word and a 6-bit
* data value. The encoding gives raw data, runs of
* pixels, or pixel values encoded as a delta from the
* previous pixel value. For the latter, either 2-bit
* or 3-bit delta values are used, with the deltas packed
* into a single byte.
*/
#define THUNDER_DATA 0x3f /* mask for 6-bit data */
#define THUNDER_CODE 0xc0 /* mask for 2-bit code word */
/* code values */
#define THUNDER_RUN 0x00 /* run of pixels w/ encoded count */
#define THUNDER_2BITDELTAS 0x40 /* 3 pixels w/ encoded 2-bit deltas */
#define DELTA2_SKIP 2 /* skip code for 2-bit deltas */
#define THUNDER_3BITDELTAS 0x80 /* 2 pixels w/ encoded 3-bit deltas */
#define DELTA3_SKIP 4 /* skip code for 3-bit deltas */
#define THUNDER_RAW 0xc0 /* raw data encoded */
static const int twobitdeltas[4] = { 0, 1, 0, -1 };
static const int threebitdeltas[8] = { 0, 1, 2, 3, 0, -3, -2, -1 };
#define SETPIXEL(op, v) { \
lastpixel = (v) & 0xf; \
if (npixels++ & 1) \
*op++ |= lastpixel; \
else \
op[0] = (tidataval_t) (lastpixel << 4); \
}
static int
ThunderDecode(TIFF* tif, tidata_t op, tsize_t maxpixels)
{
register u_char *bp;
register tsize_t cc;
u_int lastpixel;
tsize_t npixels;
bp = (u_char *)tif->tif_rawcp;
cc = tif->tif_rawcc;
lastpixel = 0;
npixels = 0;
while (cc > 0 && npixels < maxpixels) {
int n, delta;
n = *bp++, cc--;
switch (n & THUNDER_CODE) {
case THUNDER_RUN: /* pixel run */
/*
* Replicate the last pixel n times,
* where n is the lower-order 6 bits.
*/
if (npixels & 1) {
op[0] |= lastpixel;
lastpixel = *op++; npixels++; n--;
} else
lastpixel |= lastpixel << 4;
npixels += n;
if (npixels < maxpixels) {
for (; n > 0; n -= 2)
*op++ = (tidataval_t) lastpixel;
}
if (n == -1)
*--op &= 0xf0;
lastpixel &= 0xf;
break;
case THUNDER_2BITDELTAS: /* 2-bit deltas */
if ((delta = ((n >> 4) & 3)) != DELTA2_SKIP)
SETPIXEL(op, lastpixel + twobitdeltas[delta]);
if ((delta = ((n >> 2) & 3)) != DELTA2_SKIP)
SETPIXEL(op, lastpixel + twobitdeltas[delta]);
if ((delta = (n & 3)) != DELTA2_SKIP)
SETPIXEL(op, lastpixel + twobitdeltas[delta]);
break;
case THUNDER_3BITDELTAS: /* 3-bit deltas */
if ((delta = ((n >> 3) & 7)) != DELTA3_SKIP)
SETPIXEL(op, lastpixel + threebitdeltas[delta]);
if ((delta = (n & 7)) != DELTA3_SKIP)
SETPIXEL(op, lastpixel + threebitdeltas[delta]);
break;
case THUNDER_RAW: /* raw data */
SETPIXEL(op, n);
break;
}
}
tif->tif_rawcp = (tidata_t) bp;
tif->tif_rawcc = cc;
if (npixels != maxpixels) {
TIFFError(tif->tif_name,
"ThunderDecode: %s data at scanline %ld (%lu != %lu)",
npixels < maxpixels ? "Not enough" : "Too much",
(long) tif->tif_row, (long) npixels, (long) maxpixels);
return (0);
}
return (1);
}
static int
ThunderDecodeRow(TIFF* tif, tidata_t buf, tsize_t occ, tsample_t s)
{
tidata_t row = buf;
(void) s;
while ((long)occ > 0) {
if (!ThunderDecode(tif, row, tif->tif_dir.td_imagewidth))
return (0);
occ -= tif->tif_scanlinesize;
row += tif->tif_scanlinesize;
}
return (1);
}
int
TIFFInitThunderScan(TIFF* tif, int scheme)
{
(void) scheme;
tif->tif_decoderow = ThunderDecodeRow;
tif->tif_decodestrip = ThunderDecodeRow;
return (1);
}
#endif /* THUNDER_SUPPORT */

View File

@@ -1,257 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1991-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*
* Tiled Image Support Routines.
*/
#include "tiffiop.h"
static uint32
summarize(TIFF* tif, size_t summand1, size_t summand2, const char* where)
{
uint32 bytes = summand1 + summand2;
if (bytes - summand1 != summand2) {
TIFFError(tif->tif_name, "Integer overflow in %s", where);
bytes = 0;
}
return (bytes);
}
static uint32
multiply(TIFF* tif, size_t nmemb, size_t elem_size, const char* where)
{
uint32 bytes = nmemb * elem_size;
if (elem_size && bytes / elem_size != nmemb) {
TIFFError(tif->tif_name, "Integer overflow in %s", where);
bytes = 0;
}
return (bytes);
}
/*
* Compute which tile an (x,y,z,s) value is in.
*/
ttile_t
TIFFComputeTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
{
TIFFDirectory *td = &tif->tif_dir;
uint32 dx = td->td_tilewidth;
uint32 dy = td->td_tilelength;
uint32 dz = td->td_tiledepth;
ttile_t tile = 1;
if (td->td_imagedepth == 1)
z = 0;
if (dx == (uint32) -1)
dx = td->td_imagewidth;
if (dy == (uint32) -1)
dy = td->td_imagelength;
if (dz == (uint32) -1)
dz = td->td_imagedepth;
if (dx != 0 && dy != 0 && dz != 0) {
uint32 xpt = TIFFhowmany(td->td_imagewidth, dx);
uint32 ypt = TIFFhowmany(td->td_imagelength, dy);
uint32 zpt = TIFFhowmany(td->td_imagedepth, dz);
if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
tile = (xpt*ypt*zpt)*s +
(xpt*ypt)*(z/dz) +
xpt*(y/dy) +
x/dx;
else
tile = (xpt*ypt)*(z/dz) + xpt*(y/dy) + x/dx;
}
return (tile);
}
/*
* Check an (x,y,z,s) coordinate
* against the image bounds.
*/
int
TIFFCheckTile(TIFF* tif, uint32 x, uint32 y, uint32 z, tsample_t s)
{
TIFFDirectory *td = &tif->tif_dir;
if (x >= td->td_imagewidth) {
TIFFError(tif->tif_name, "Col %ld out of range, max %lu",
(long) x, (u_long) td->td_imagewidth);
return (0);
}
if (y >= td->td_imagelength) {
TIFFError(tif->tif_name, "Row %ld out of range, max %lu",
(long) y, (u_long) td->td_imagelength);
return (0);
}
if (z >= td->td_imagedepth) {
TIFFError(tif->tif_name, "Depth %ld out of range, max %lu",
(long) z, (u_long) td->td_imagedepth);
return (0);
}
if (td->td_planarconfig == PLANARCONFIG_SEPARATE &&
s >= td->td_samplesperpixel) {
TIFFError(tif->tif_name, "Sample %d out of range, max %u",
(int) s, td->td_samplesperpixel);
return (0);
}
return (1);
}
/*
* Compute how many tiles are in an image.
*/
ttile_t
TIFFNumberOfTiles(TIFF* tif)
{
TIFFDirectory *td = &tif->tif_dir;
uint32 dx = td->td_tilewidth;
uint32 dy = td->td_tilelength;
uint32 dz = td->td_tiledepth;
ttile_t ntiles;
if (dx == (uint32) -1)
dx = td->td_imagewidth;
if (dy == (uint32) -1)
dy = td->td_imagelength;
if (dz == (uint32) -1)
dz = td->td_imagedepth;
ntiles = (dx == 0 || dy == 0 || dz == 0) ? 0 :
multiply(tif, multiply(tif, TIFFhowmany(td->td_imagewidth, dx),
TIFFhowmany(td->td_imagelength, dy),
"TIFFNumberOfTiles"),
TIFFhowmany(td->td_imagedepth, dz), "TIFFNumberOfTiles");
if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
ntiles = multiply(tif, ntiles, td->td_samplesperpixel,
"TIFFNumberOfTiles");
return (ntiles);
}
/*
* Compute the # bytes in each row of a tile.
*/
tsize_t
TIFFTileRowSize(TIFF* tif)
{
TIFFDirectory *td = &tif->tif_dir;
tsize_t rowsize;
if (td->td_tilelength == 0 || td->td_tilewidth == 0)
return ((tsize_t) 0);
rowsize = multiply(tif, td->td_bitspersample, td->td_tilewidth,
"TIFFTileRowSize");
if (td->td_planarconfig == PLANARCONFIG_CONTIG)
rowsize = multiply(tif, rowsize, td->td_samplesperpixel,
"TIFFTileRowSize");
return ((tsize_t) TIFFhowmany8(rowsize));
}
/*
* Compute the # bytes in a variable length, row-aligned tile.
*/
tsize_t
TIFFVTileSize(TIFF* tif, uint32 nrows)
{
TIFFDirectory *td = &tif->tif_dir;
tsize_t tilesize;
if (td->td_tilelength == 0 || td->td_tilewidth == 0 ||
td->td_tiledepth == 0)
return ((tsize_t) 0);
#ifdef YCBCR_SUPPORT
if (td->td_planarconfig == PLANARCONFIG_CONTIG &&
td->td_photometric == PHOTOMETRIC_YCBCR &&
!isUpSampled(tif)) {
/*
* Packed YCbCr data contain one Cb+Cr for every
* HorizontalSampling*VerticalSampling Y values.
* Must also roundup width and height when calculating
* since images that are not a multiple of the
* horizontal/vertical subsampling area include
* YCbCr data for the extended image.
*/
tsize_t w =
TIFFroundup(td->td_tilewidth, td->td_ycbcrsubsampling[0]);
tsize_t rowsize =
TIFFhowmany8(multiply(tif, w, td->td_bitspersample,
"TIFFVTileSize"));
tsize_t samplingarea =
td->td_ycbcrsubsampling[0]*td->td_ycbcrsubsampling[1];
nrows = TIFFroundup(nrows, td->td_ycbcrsubsampling[1]);
/* NB: don't need TIFFhowmany here 'cuz everything is rounded */
tilesize = multiply(tif, nrows, rowsize, "TIFFVTileSize");
tilesize = summarize(tif, tilesize,
multiply(tif, 2, tilesize / samplingarea,
"TIFFVTileSize"),
"TIFFVTileSize");
} else
#endif
tilesize = multiply(tif, nrows, TIFFTileRowSize(tif),
"TIFFVTileSize");
return ((tsize_t)
multiply(tif, tilesize, td->td_tiledepth, "TIFFVTileSize"));
}
/*
* Compute the # bytes in a row-aligned tile.
*/
tsize_t
TIFFTileSize(TIFF* tif)
{
return (TIFFVTileSize(tif, tif->tif_dir.td_tilelength));
}
/*
* Compute a default tile size based on the image
* characteristics and a requested value. If a
* request is <1 then we choose a size according
* to certain heuristics.
*/
void
TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
{
(*tif->tif_deftilesize)(tif, tw, th);
}
void
_TIFFDefaultTileSize(TIFF* tif, uint32* tw, uint32* th)
{
(void) tif;
if (*(int32*) tw < 1)
*tw = 256;
if (*(int32*) th < 1)
*th = 256;
/* roundup to a multiple of 16 per the spec */
if (*tw & 0xf)
*tw = TIFFroundup(*tw, 16);
if (*th & 0xf)
*th = TIFFroundup(*th, 16);
}

View File

@@ -1,228 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library UNIX-specific Routines.
*/
#include "tiffiop.h"
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
static tsize_t
_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return ((tsize_t) read((int) fd, buf, (size_t) size));
}
static tsize_t
_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return ((tsize_t) write((int) fd, buf, (size_t) size));
}
static toff_t
_tiffSeekProc(thandle_t fd, toff_t off, int whence)
{
#if USE_64BIT_API == 1
return ((toff_t) lseek64((int) fd, (off64_t) off, whence));
#else
return ((toff_t) lseek((int) fd, (off_t) off, whence));
#endif
}
static int
_tiffCloseProc(thandle_t fd)
{
return (close((int) fd));
}
#include <sys/stat.h>
static toff_t
_tiffSizeProc(thandle_t fd)
{
#ifdef _AM29K
long fsize;
return ((fsize = lseek((int) fd, 0, SEEK_END)) < 0 ? 0 : fsize);
#else
#if USE_64BIT_API == 1
struct stat64 sb;
return (toff_t) (fstat64((int) fd, &sb) < 0 ? 0 : sb.st_size);
#else
struct stat sb;
return (toff_t) (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
#endif
#endif
}
#ifdef HAVE_MMAP
#include <sys/mman.h>
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
toff_t size = _tiffSizeProc(fd);
if (size != (toff_t) -1) {
*pbase = (tdata_t)
mmap(0, size, PROT_READ, MAP_SHARED, (int) fd, 0);
if (*pbase != (tdata_t) -1) {
*psize = size;
return (1);
}
}
return (0);
}
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
(void) fd;
(void) munmap(base, (off_t) size);
}
#else /* !HAVE_MMAP */
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
(void) fd; (void) pbase; (void) psize;
return (0);
}
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
(void) fd; (void) base; (void) size;
}
#endif /* !HAVE_MMAP */
/*
* Open a TIFF file descriptor for read/writing.
*/
TIFF*
TIFFFdOpen(int fd, const char* name, const char* mode)
{
TIFF* tif;
tif = TIFFClientOpen(name, mode,
(thandle_t) fd,
_tiffReadProc, _tiffWriteProc,
_tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
_tiffMapProc, _tiffUnmapProc);
if (tif)
tif->tif_fd = fd;
return (tif);
}
/*
* Open a TIFF file for read/writing.
*/
TIFF*
TIFFOpen(const char* name, const char* mode)
{
static const char module[] = "TIFFOpen";
int m, fd;
m = _TIFFgetMode(mode, module);
if (m == -1)
return ((TIFF*)0);
/* for cygwin */
#ifdef O_BINARY
m |= O_BINARY;
#endif
#ifdef _AM29K
fd = open(name, m);
#else
#if USE_64BIT_API == 1
fd = open(name, m | O_LARGEFILE, 0666);
#else
fd = open(name, m, 0666);
#endif
#endif
if (fd < 0) {
TIFFError(module, "%s: Cannot open", name);
return ((TIFF *)0);
}
return (TIFFFdOpen(fd, name, mode));
}
void*
_TIFFmalloc(tsize_t s)
{
return (malloc((size_t) s));
}
void
_TIFFfree(tdata_t p)
{
free(p);
}
void*
_TIFFrealloc(tdata_t p, tsize_t s)
{
return (realloc(p, (size_t) s));
}
void
_TIFFmemset(tdata_t p, int v, tsize_t c)
{
memset(p, v, (size_t) c);
}
void
_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
{
memcpy(d, s, (size_t) c);
}
int
_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
{
return (memcmp(p1, p2, (size_t) c));
}
static void
unixWarningHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
fprintf(stderr, "Warning, ");
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFwarningHandler = unixWarningHandler;
static void
unixErrorHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
TIFFErrorHandler _TIFFerrorHandler = unixErrorHandler;

View File

@@ -1,33 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1992-1997 Sam Leffler
* Copyright (c) 1992-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#include "tiffiop.h"
static const char TIFFVersion[] = TIFFLIB_VERSION_STR;
const char*
TIFFGetVersion(void)
{
return (TIFFVersion);
}

View File

@@ -1,588 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library VMS-specific Routines.
*/
#include <stdlib.h>
#include <unixio.h>
#include "tiffiop.h"
#if !HAVE_IEEEFP
#include <math.h>
#endif
#ifdef VAXC
#define NOSHARE noshare
#else
#define NOSHARE
#endif
#ifdef __alpha
/* Dummy entry point for backwards compatibility */
void TIFFModeCCITTFax3(void){}
#endif
static tsize_t
_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return (read((int) fd, buf, size));
}
static tsize_t
_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return (write((int) fd, buf, size));
}
static toff_t
_tiffSeekProc(thandle_t fd, toff_t off, int whence)
{
return ((toff_t) lseek((int) fd, (off_t) off, whence));
}
static int
_tiffCloseProc(thandle_t fd)
{
return (close((int) fd));
}
#include <sys/stat.h>
static toff_t
_tiffSizeProc(thandle_t fd)
{
struct stat sb;
return (toff_t) (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
}
#ifdef HAVE_MMAP
#include <starlet.h>
#include <fab.h>
#include <secdef.h>
/*
* Table for storing information on current open sections.
* (Should really be a linked list)
*/
#define MAX_MAPPED 100
static int no_mapped = 0;
static struct {
char *base;
char *top;
unsigned short channel;
} map_table[MAX_MAPPED];
/*
* This routine maps a file into a private section. Note that this
* method of accessing a file is by far the fastest under VMS.
* The routine may fail (i.e. return 0) for several reasons, for
* example:
* - There is no more room for storing the info on sections.
* - The process is out of open file quota, channels, ...
* - fd does not describe an opened file.
* - The file is already opened for write access by this process
* or another process
* - There is no free "hole" in virtual memory that fits the
* size of the file
*/
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
char name[256];
struct FAB fab;
unsigned short channel;
char *inadr[2], *retadr[2];
unsigned long status;
long size;
if (no_mapped >= MAX_MAPPED)
return(0);
/*
* We cannot use a file descriptor, we
* must open the file once more.
*/
if (getname((int)fd, name, 1) == NULL)
return(0);
/* prepare the FAB for a user file open */
fab = cc$rms_fab;
fab.fab$l_fop |= FAB$V_UFO;
fab.fab$b_fac = FAB$M_GET;
fab.fab$b_shr = FAB$M_SHRGET;
fab.fab$l_fna = name;
fab.fab$b_fns = strlen(name);
status = sys$open(&fab); /* open file & get channel number */
if ((status&1) == 0)
return(0);
channel = (unsigned short)fab.fab$l_stv;
inadr[0] = inadr[1] = (char *)0; /* just an address in P0 space */
/*
* Map the blocks of the file up to
* the EOF block into virtual memory.
*/
size = _tiffSizeProc(fd);
status = sys$crmpsc(inadr, retadr, 0, SEC$M_EXPREG, 0,0,0, channel,
TIFFhowmany(size,512), 0,0,0);
if ((status&1) == 0){
sys$dassgn(channel);
return(0);
}
*pbase = (tdata_t) retadr[0]; /* starting virtual address */
/*
* Use the size of the file up to the
* EOF mark for UNIX compatibility.
*/
*psize = (toff_t) size;
/* Record the section in the table */
map_table[no_mapped].base = retadr[0];
map_table[no_mapped].top = retadr[1];
map_table[no_mapped].channel = channel;
no_mapped++;
return(1);
}
/*
* This routine unmaps a section from the virtual address space of
* the process, but only if the base was the one returned from a
* call to TIFFMapFileContents.
*/
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
char *inadr[2];
int i, j;
/* Find the section in the table */
for (i = 0;i < no_mapped; i++) {
if (map_table[i].base == (char *) base) {
/* Unmap the section */
inadr[0] = (char *) base;
inadr[1] = map_table[i].top;
sys$deltva(inadr, 0, 0);
sys$dassgn(map_table[i].channel);
/* Remove this section from the list */
for (j = i+1; j < no_mapped; j++)
map_table[j-1] = map_table[j];
no_mapped--;
return;
}
}
}
#else /* !HAVE_MMAP */
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
return (0);
}
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
}
#endif /* !HAVE_MMAP */
/*
* Open a TIFF file descriptor for read/writing.
*/
TIFF*
TIFFFdOpen(int fd, const char* name, const char* mode)
{
TIFF* tif;
tif = TIFFClientOpen(name, mode,
(thandle_t) fd,
_tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
_tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
if (tif)
tif->tif_fd = fd;
return (tif);
}
/*
* Open a TIFF file for read/writing.
*/
TIFF*
TIFFOpen(const char* name, const char* mode)
{
static const char module[] = "TIFFOpen";
int m, fd;
m = _TIFFgetMode(mode, module);
if (m == -1)
return ((TIFF*)0);
if (m&O_TRUNC){
/*
* There is a bug in open in VAXC. If you use
* open w/ m=O_RDWR|O_CREAT|O_TRUNC the
* wrong thing happens. On the other hand
* creat does the right thing.
*/
fd = creat((char *) /* bug in stdio.h */ name, 0666,
"alq = 128", "deq = 64", "mbc = 32",
"fop = tef");
} else if (m&O_RDWR) {
fd = open(name, m, 0666,
"deq = 64", "mbc = 32", "fop = tef", "ctx = stm");
} else
fd = open(name, m, 0666, "mbc = 32", "ctx = stm");
if (fd < 0) {
TIFFError(module, "%s: Cannot open", name);
return ((TIFF*)0);
}
return (TIFFFdOpen(fd, name, mode));
}
tdata_t
_TIFFmalloc(tsize_t s)
{
return (malloc((size_t) s));
}
void
_TIFFfree(tdata_t p)
{
free(p);
}
tdata_t
_TIFFrealloc(tdata_t p, tsize_t s)
{
return (realloc(p, (size_t) s));
}
void
_TIFFmemset(tdata_t p, int v, tsize_t c)
{
memset(p, v, (size_t) c);
}
void
_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
{
memcpy(d, s, (size_t) c);
}
int
_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
{
return (memcmp(p1, p2, (size_t) c));
}
/*
* On the VAX, we need to make those global, writable pointers
* non-shareable, otherwise they would be made shareable by default.
* On the AXP, this brain damage has been corrected.
*
* I (Karsten Spang, krs@kampsax.dk) have dug around in the GCC
* manual and the GAS code and have come up with the following
* construct, but I don't have GCC on my VAX, so it is untested.
* Please tell me if it does not work.
*/
static void
vmsWarningHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
fprintf(stderr, "Warning, ");
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
NOSHARE TIFFErrorHandler _TIFFwarningHandler = vmsWarningHandler
#if defined(VAX) && defined(__GNUC__)
asm("_$$PsectAttributes_NOSHR$$_TIFFwarningHandler")
#endif
;
static void
vmsErrorHandler(const char* module, const char* fmt, va_list ap)
{
if (module != NULL)
fprintf(stderr, "%s: ", module);
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
}
NOSHARE TIFFErrorHandler _TIFFerrorHandler = vmsErrorHandler
#if defined(VAX) && defined(__GNUC__)
asm("_$$PsectAttributes_NOSHR$$_TIFFerrorHandler")
#endif
;
#if !HAVE_IEEEFP
/* IEEE floting point handling */
typedef struct ieeedouble {
u_long mant2; /* fix NDR: full 8-byte swap */
u_long mant : 20,
exp : 11,
sign : 1;
} ieeedouble;
typedef struct ieeefloat {
u_long mant : 23,
exp : 8,
sign : 1;
} ieeefloat;
/*
* NB: These are D_FLOAT's, not G_FLOAT's. A G_FLOAT is
* simply a reverse-IEEE float/double.
*/
typedef struct {
u_long mant1 : 7,
exp : 8,
sign : 1,
mant2 : 16,
mant3 : 16,
mant4 : 16;
} nativedouble;
typedef struct {
u_long mant1 : 7,
exp : 8,
sign : 1,
mant2 : 16;
} nativefloat;
typedef union {
ieeedouble ieee;
nativedouble native;
char b[8];
uint32 l[2];
double d;
} double_t;
typedef union {
ieeefloat ieee;
nativefloat native;
char b[4];
uint32 l;
float f;
} float_t;
#if defined(VAXC) || defined(DECC)
#pragma inline(ieeetod,dtoieee)
#endif
/*
* Convert an IEEE double precision number to native double precision.
* The source is contained in two longwords, the second holding the sign,
* exponent and the higher order bits of the mantissa, and the first
* holding the rest of the mantissa as follows:
* (Note: It is assumed that the number has been eight-byte swapped to
* LSB first.)
*
* First longword:
* 32 least significant bits of mantissa
* Second longword:
* 0-19: 20 most significant bits of mantissa
* 20-30: exponent
* 31: sign
* The exponent is stored as excess 1023.
* The most significant bit of the mantissa is implied 1, and not stored.
* If the exponent and mantissa are zero, the number is zero.
* If the exponent is 0 (i.e. -1023) and the mantissa is non-zero, it is an
* unnormalized number with the most significant bit NOT implied.
* If the exponent is 2047, the number is invalid, in case the mantissa is zero,
* this means overflow (+/- depending of the sign bit), otherwise
* it simply means invalid number.
*
* If the number is too large for the machine or was specified as overflow,
* +/-HUGE_VAL is returned.
*/
INLINE static void
ieeetod(double *dp)
{
double_t source;
long sign,exp,mant;
double dmant;
source.ieee = ((double_t*)dp)->ieee;
sign = source.ieee.sign;
exp = source.ieee.exp;
mant = source.ieee.mant;
if (exp == 2047) {
if (mant) /* Not a Number (NAN) */
*dp = HUGE_VAL;
else /* +/- infinity */
*dp = (sign ? -HUGE_VAL : HUGE_VAL);
return;
}
if (!exp) {
if (!(mant || source.ieee.mant2)) { /* zero */
*dp=0;
return;
} else { /* Unnormalized number */
/* NB: not -1023, the 1 bit is not implied */
exp= -1022;
}
} else {
mant |= 1<<20;
exp -= 1023;
}
dmant = (((double) mant) +
((double) source.ieee.mant2) / (((double) (1<<16)) *
((double) (1<<16)))) / (double) (1<<20);
dmant = ldexp(dmant, exp);
if (sign)
dmant= -dmant;
*dp = dmant;
}
INLINE static void
dtoieee(double *dp)
{
double_t num;
double x;
int exp;
num.d = *dp;
if (!num.d) { /* Zero is just binary all zeros */
num.l[0] = num.l[1] = 0;
return;
}
if (num.d < 0) { /* Sign is encoded separately */
num.d = -num.d;
num.ieee.sign = 1;
} else {
num.ieee.sign = 0;
}
/* Now separate the absolute value into mantissa and exponent */
x = frexp(num.d, &exp);
/*
* Handle cases where the value is outside the
* range for IEEE floating point numbers.
* (Overflow cannot happen on a VAX, but underflow
* can happen for G float.)
*/
if (exp < -1022) { /* Unnormalized number */
x = ldexp(x, -1023-exp);
exp = 0;
} else if (exp > 1023) { /* +/- infinity */
x = 0;
exp = 2047;
} else { /* Get rid of most significant bit */
x *= 2;
x -= 1;
exp += 1022; /* fix NDR: 1.0 -> x=0.5, exp=1 -> ieee.exp = 1023 */
}
num.ieee.exp = exp;
x *= (double) (1<<20);
num.ieee.mant = (long) x;
x -= (double) num.ieee.mant;
num.ieee.mant2 = (long) (x*((double) (1<<16)*(double) (1<<16)));
if (!(num.ieee.mant || num.ieee.exp || num.ieee.mant2)) {
/* Avoid negative zero */
num.ieee.sign = 0;
}
((double_t*)dp)->ieee = num.ieee;
}
/*
* Beware, these do not handle over/under-flow
* during conversion from ieee to native format.
*/
#define NATIVE2IEEEFLOAT(fp) { \
float_t t; \
if (t.ieee.exp = (fp)->native.exp) \
t.ieee.exp += -129 + 127; \
t.ieee.sign = (fp)->native.sign; \
t.ieee.mant = ((fp)->native.mant1<<16)|(fp)->native.mant2; \
*(fp) = t; \
}
#define IEEEFLOAT2NATIVE(fp) { \
float_t t; int v = (fp)->ieee.exp; \
if (v) v += -127 + 129; /* alter bias of exponent */\
t.native.exp = v; /* implicit truncation of exponent */\
t.native.sign = (fp)->ieee.sign; \
v = (fp)->ieee.mant; \
t.native.mant1 = v >> 16; \
t.native.mant2 = v;\
*(fp) = t; \
}
#define IEEEDOUBLE2NATIVE(dp) ieeetod(dp)
#define NATIVE2IEEEDOUBLE(dp) dtoieee(dp)
/*
* These unions are used during floating point
* conversions. The above macros define the
* conversion operations.
*/
void
TIFFCvtIEEEFloatToNative(TIFF* tif, u_int n, float* f)
{
float_t* fp = (float_t*) f;
while (n-- > 0) {
IEEEFLOAT2NATIVE(fp);
fp++;
}
}
void
TIFFCvtNativeToIEEEFloat(TIFF* tif, u_int n, float* f)
{
float_t* fp = (float_t*) f;
while (n-- > 0) {
NATIVE2IEEEFLOAT(fp);
fp++;
}
}
void
TIFFCvtIEEEDoubleToNative(TIFF* tif, u_int n, double* f)
{
double_t* fp = (double_t*) f;
while (n-- > 0) {
IEEEDOUBLE2NATIVE(fp);
fp++;
}
}
void
TIFFCvtNativeToIEEEDouble(TIFF* tif, u_int n, double* f)
{
double_t* fp = (double_t*) f;
while (n-- > 0) {
NATIVE2IEEEDOUBLE(fp);
fp++;
}
}
#endif

View File

@@ -1,49 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*/
#include "tiffiop.h"
TIFFErrorHandler
TIFFSetWarningHandler(TIFFErrorHandler handler)
{
TIFFErrorHandler prev = _TIFFwarningHandler;
_TIFFwarningHandler = handler;
return (prev);
}
void
TIFFWarning(const char* module, const char* fmt, ...)
{
if (_TIFFwarningHandler) {
va_list ap;
va_start(ap, fmt);
(*_TIFFwarningHandler)(module, fmt, ap);
va_end(ap);
}
}

View File

@@ -1,225 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library Windows 3.x-specific Routines.
*/
#include "tiffiop.h"
#if defined(__WATCOMC__) || defined(__BORLANDC__) || defined(_MSC_VER)
#include <io.h> /* for open, close, etc. function prototypes */
#endif
#include <windows.h>
#include <windowsx.h>
#include <memory.h>
static tsize_t
_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return (_hread(fd, buf, size));
}
static tsize_t
_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
{
return (_hwrite(fd, buf, size));
}
static toff_t
_tiffSeekProc(thandle_t fd, toff_t off, int whence)
{
return (_llseek(fd, (off_t) off, whence));
}
static int
_tiffCloseProc(thandle_t fd)
{
return (_lclose(fd));
}
#include <sys/stat.h>
static toff_t
_tiffSizeProc(thandle_t fd)
{
struct stat sb;
return (fstat((int) fd, &sb) < 0 ? 0 : sb.st_size);
}
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
return (0);
}
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
}
/*
* Open a TIFF file descriptor for read/writing.
*/
TIFF*
TIFFFdOpen(int fd, const char* name, const char* mode)
{
TIFF* tif;
tif = TIFFClientOpen(name, mode,
(thandle_t) fd,
_tiffReadProc, _tiffWriteProc, _tiffSeekProc, _tiffCloseProc,
_tiffSizeProc, _tiffMapProc, _tiffUnmapProc);
if (tif)
tif->tif_fd = fd;
return (tif);
}
/*
* Open a TIFF file for read/writing.
*/
TIFF*
TIFFOpen(const char* name, const char* mode)
{
static const char module[] = "TIFFOpen";
int m, fd;
OFSTRUCT of;
int mm = 0;
m = _TIFFgetMode(mode, module);
if (m == -1)
return ((TIFF*)0);
if (m & O_CREAT) {
if ((m & O_TRUNC) || OpenFile(name, &of, OF_EXIST) != HFILE_ERROR)
mm |= OF_CREATE;
}
if (m & O_WRONLY)
mm |= OF_WRITE;
if (m & O_RDWR)
mm |= OF_READWRITE;
fd = OpenFile(name, &of, mm);
if (fd < 0) {
TIFFError(module, "%s: Cannot open", name);
return ((TIFF*)0);
}
return (TIFFFdOpen(fd, name, mode));
}
tdata_t
_TIFFmalloc(tsize_t s)
{
return (tdata_t) GlobalAllocPtr(GHND, (DWORD) s);
}
void
_TIFFfree(tdata_t p)
{
GlobalFreePtr(p);
}
tdata_t
_TIFFrealloc(tdata_t p, tsize_t s)
{
return (tdata_t) GlobalReAllocPtr(p, (DWORD) s, GHND);
}
void
_TIFFmemset(tdata_t p, int v, tsize_t c)
{
char* pp = (char*) p;
while (c > 0) {
tsize_t chunk = 0x10000 - ((uint32) pp & 0xffff);/* What's left in segment */
if (chunk > 0xff00) /* No more than 0xff00 */
chunk = 0xff00;
if (chunk > c) /* No more than needed */
chunk = c;
memset(pp, v, chunk);
pp = (char*) (chunk + (char huge*) pp);
c -= chunk;
}
}
void
_TIFFmemcpy(tdata_t d, const tdata_t s, tsize_t c)
{
if (c > 0xFFFF)
hmemcpy((void _huge*) d, (void _huge*) s, c);
else
(void) memcpy(d, s, (size_t) c);
}
int
_TIFFmemcmp(const tdata_t d, const tdata_t s, tsize_t c)
{
char* dd = (char*) d;
char* ss = (char*) s;
tsize_t chunks, chunkd, chunk;
int result;
while (c > 0) {
chunks = 0x10000 - ((uint32) ss & 0xffff); /* What's left in segment */
chunkd = 0x10000 - ((uint32) dd & 0xffff); /* What's left in segment */
chunk = c; /* Get the largest of */
if (chunk > chunks) /* c, chunks, chunkd, */
chunk = chunks; /* 0xff00 */
if (chunk > chunkd)
chunk = chunkd;
if (chunk > 0xff00)
chunk = 0xff00;
result = memcmp(dd, ss, chunk);
if (result != 0)
return (result);
dd = (char*) (chunk + (char huge*) dd);
ss = (char*) (chunk + (char huge*) ss);
c -= chunk;
}
return (0);
}
static void
win3WarningHandler(const char* module, const char* fmt, va_list ap)
{
char e[512] = { '\0' };
if (module != NULL)
strcat(strcpy(e, module), ":");
vsprintf(e+strlen(e), fmt, ap);
strcat(e, ".");
MessageBox(GetActiveWindow(), e, "LibTIFF Warning",
MB_OK|MB_ICONEXCLAMATION);
}
TIFFErrorHandler _TIFFwarningHandler = win3WarningHandler;
static void
win3ErrorHandler(const char* module, const char* fmt, va_list ap)
{
char e[512] = { '\0' };
if (module != NULL)
strcat(strcpy(e, module), ":");
vsprintf(e+strlen(e), fmt, ap);
strcat(e, ".");
MessageBox(GetActiveWindow(), e, "LibTIFF Error", MB_OK|MB_ICONSTOP);
}
TIFFErrorHandler _TIFFerrorHandler = win3ErrorHandler;

View File

@@ -1,323 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library Win32-specific Routines. Adapted from tif_unix.c 4/5/95 by
* Scott Wagner (wagner@itek.com), Itek Graphix, Rochester, NY USA
*/
#include <windows.h>
#include "tiffiop.h"
static tsize_t
_tiffReadProc(thandle_t fd, tdata_t buf, tsize_t size)
{
DWORD dwSizeRead;
if (!ReadFile(fd, buf, size, &dwSizeRead, NULL))
return(0);
return ((tsize_t) dwSizeRead);
}
static tsize_t
_tiffWriteProc(thandle_t fd, tdata_t buf, tsize_t size)
{
DWORD dwSizeWritten;
if (!WriteFile(fd, buf, size, &dwSizeWritten, NULL))
return(0);
return ((tsize_t) dwSizeWritten);
}
static toff_t
_tiffSeekProc(thandle_t fd, toff_t off, int whence)
{
DWORD dwMoveMethod, dwMoveHigh;
/* we use this as a special code, so avoid accepting it */
if( off == 0xFFFFFFFF )
return 0xFFFFFFFF;
switch(whence)
{
case SEEK_SET:
dwMoveMethod = FILE_BEGIN;
break;
case SEEK_CUR:
dwMoveMethod = FILE_CURRENT;
break;
case SEEK_END:
dwMoveMethod = FILE_END;
break;
default:
dwMoveMethod = FILE_BEGIN;
break;
}
dwMoveHigh = 0;
return ((toff_t)SetFilePointer(fd, (LONG) off, (PLONG)&dwMoveHigh,
dwMoveMethod));
}
static int
_tiffCloseProc(thandle_t fd)
{
return (CloseHandle(fd) ? 0 : -1);
}
static toff_t
_tiffSizeProc(thandle_t fd)
{
return ((toff_t)GetFileSize(fd, NULL));
}
#ifdef __BORLANDC__
#pragma argsused
#endif
static int
_tiffDummyMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
return (0);
}
/*
* From "Hermann Josef Hill" <lhill@rhein-zeitung.de>:
*
* Windows uses both a handle and a pointer for file mapping,
* but according to the SDK documentation and Richter's book
* "Advanced Windows Programming" it is safe to free the handle
* after obtaining the file mapping pointer
*
* This removes a nasty OS dependency and cures a problem
* with Visual C++ 5.0
*/
static int
_tiffMapProc(thandle_t fd, tdata_t* pbase, toff_t* psize)
{
toff_t size;
HANDLE hMapFile;
if ((size = _tiffSizeProc(fd)) == 0xFFFFFFFF)
return (0);
hMapFile = CreateFileMapping(fd, NULL, PAGE_READONLY, 0, size, NULL);
if (hMapFile == NULL)
return (0);
*pbase = MapViewOfFile(hMapFile, FILE_MAP_READ, 0, 0, 0);
CloseHandle(hMapFile);
if (*pbase == NULL)
return (0);
*psize = size;
return(1);
}
#ifdef __BORLANDC__
#pragma argsused
#endif
static void
_tiffDummyUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
}
static void
_tiffUnmapProc(thandle_t fd, tdata_t base, toff_t size)
{
UnmapViewOfFile(base);
}
/*
* Open a TIFF file descriptor for read/writing.
* Note that TIFFFdOpen and TIFFOpen recognise the character 'u' in the mode
* string, which forces the file to be opened unmapped.
*/
TIFF*
TIFFFdOpen(int ifd, const char* name, const char* mode)
{
TIFF* tif;
BOOL fSuppressMap = (mode[1] == 'u' || (mode[1]!=0 && mode[2] == 'u'));
tif = TIFFClientOpen(name, mode,
(thandle_t)ifd,
_tiffReadProc, _tiffWriteProc,
_tiffSeekProc, _tiffCloseProc, _tiffSizeProc,
fSuppressMap ? _tiffDummyMapProc : _tiffMapProc,
fSuppressMap ? _tiffDummyUnmapProc : _tiffUnmapProc);
if (tif)
tif->tif_fd = ifd;
return (tif);
}
/*
* Open a TIFF file for read/writing.
*/
TIFF*
TIFFOpen(const char* name, const char* mode)
{
static const char module[] = "TIFFOpen";
thandle_t fd;
int m;
DWORD dwMode;
m = _TIFFgetMode(mode, module);
switch(m)
{
case O_RDONLY:
dwMode = OPEN_EXISTING;
break;
case O_RDWR:
dwMode = OPEN_ALWAYS;
break;
case O_RDWR|O_CREAT:
dwMode = OPEN_ALWAYS;
break;
case O_RDWR|O_TRUNC:
dwMode = CREATE_ALWAYS;
break;
case O_RDWR|O_CREAT|O_TRUNC:
dwMode = CREATE_ALWAYS;
break;
default:
return ((TIFF*)0);
}
fd = (thandle_t)CreateFile(name, (m == O_RDONLY) ? GENERIC_READ :
(GENERIC_READ | GENERIC_WRITE), FILE_SHARE_READ, NULL, dwMode,
(m == O_RDONLY) ? FILE_ATTRIBUTE_READONLY : FILE_ATTRIBUTE_NORMAL, NULL);
if (fd == INVALID_HANDLE_VALUE) {
TIFFError(module, "%s: Cannot open", name);
return ((TIFF *)0);
}
return (TIFFFdOpen((int)fd, name, mode));
}
tdata_t
_TIFFmalloc(tsize_t s)
{
return ((tdata_t)GlobalAlloc(GMEM_FIXED, s));
}
void
_TIFFfree(tdata_t p)
{
GlobalFree(p);
return;
}
tdata_t
_TIFFrealloc(tdata_t p, tsize_t s)
{
void* pvTmp;
tsize_t old=GlobalSize(p);
if (old>=s)
{
if ((pvTmp = GlobalAlloc(GMEM_FIXED, s)) != NULL) {
CopyMemory(pvTmp, p, s);
GlobalFree(p);
}
}
else
{
if ((pvTmp = GlobalAlloc(GMEM_FIXED, s)) != NULL) {
CopyMemory(pvTmp, p, old);
GlobalFree(p);
}
}
return ((tdata_t)pvTmp);
}
void
_TIFFmemset(void* p, int v, tsize_t c)
{
FillMemory(p, c, (BYTE)v);
}
void
_TIFFmemcpy(void* d, const tdata_t s, tsize_t c)
{
CopyMemory(d, s, c);
}
int
_TIFFmemcmp(const tdata_t p1, const tdata_t p2, tsize_t c)
{
register const BYTE *pb1 = (const BYTE *) p1;
register const BYTE *pb2 = (const BYTE *) p2;
register DWORD dwTmp = c;
register int iTmp;
for (iTmp = 0; dwTmp-- && !iTmp; iTmp = (int)*pb1++ - (int)*pb2++)
;
return (iTmp);
}
static void
Win32WarningHandler(const char* module, const char* fmt, va_list ap)
{
#ifndef TIF_PLATFORM_CONSOLE
LPTSTR szTitle;
LPTSTR szTmp;
LPCTSTR szTitleText = "%s Warning";
LPCTSTR szDefaultModule = "TIFFLIB";
szTmp = (module == NULL) ? (LPTSTR)szDefaultModule : (LPTSTR)module;
if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, (lstrlen(szTmp) +
lstrlen(szTitleText) + lstrlen(fmt) + 128)*sizeof(TCHAR))) == NULL)
return;
wsprintf(szTitle, szTitleText, szTmp);
szTmp = szTitle + (lstrlen(szTitle)+2)*sizeof(TCHAR);
wvsprintf(szTmp, fmt, ap);
MessageBox(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONINFORMATION);
LocalFree(szTitle);
return;
#else
if (module != NULL)
fprintf(stderr, "%s: ", module);
fprintf(stderr, "Warning, ");
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
#endif
}
TIFFErrorHandler _TIFFwarningHandler = Win32WarningHandler;
static void
Win32ErrorHandler(const char* module, const char* fmt, va_list ap)
{
#ifndef TIF_PLATFORM_CONSOLE
LPTSTR szTitle;
LPTSTR szTmp;
LPCTSTR szTitleText = "%s Error";
LPCTSTR szDefaultModule = "TIFFLIB";
szTmp = (module == NULL) ? (LPTSTR)szDefaultModule : (LPTSTR)module;
if ((szTitle = (LPTSTR)LocalAlloc(LMEM_FIXED, (lstrlen(szTmp) +
lstrlen(szTitleText) + lstrlen(fmt) + 128)*sizeof(TCHAR))) == NULL)
return;
wsprintf(szTitle, szTitleText, szTmp);
szTmp = szTitle + (lstrlen(szTitle)+2)*sizeof(TCHAR);
wvsprintf(szTmp, fmt, ap);
MessageBox(GetFocus(), szTmp, szTitle, MB_OK | MB_ICONEXCLAMATION);
LocalFree(szTitle);
return;
#else
if (module != NULL)
fprintf(stderr, "%s: ", module);
vfprintf(stderr, fmt, ap);
fprintf(stderr, ".\n");
#endif
}
TIFFErrorHandler _TIFFerrorHandler = Win32ErrorHandler;

View File

@@ -1,703 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
/*
* TIFF Library.
*
* Scanline-oriented Write Support
*/
#include "tiffiop.h"
#include <assert.h>
#include <stdio.h>
#define REWRITE_HACK
#define STRIPINCR 20 /* expansion factor on strip array */
#define WRITECHECKSTRIPS(tif, module) \
(((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),0,module))
#define WRITECHECKTILES(tif, module) \
(((tif)->tif_flags&TIFF_BEENWRITING) || TIFFWriteCheck((tif),1,module))
#define BUFFERCHECK(tif) \
((((tif)->tif_flags & TIFF_BUFFERSETUP) && tif->tif_rawdata) || \
TIFFWriteBufferSetup((tif), NULL, (tsize_t) -1))
static int TIFFGrowStrips(TIFF*, int, const char*);
static int TIFFAppendToStrip(TIFF*, tstrip_t, tidata_t, tsize_t);
int
TIFFWriteScanline(TIFF* tif, tdata_t buf, uint32 row, tsample_t sample)
{
static const char module[] = "TIFFWriteScanline";
register TIFFDirectory *td;
int status, imagegrew = 0;
tstrip_t strip;
if (!WRITECHECKSTRIPS(tif, module))
return (-1);
/*
* Handle delayed allocation of data buffer. This
* permits it to be sized more intelligently (using
* directory information).
*/
if (!BUFFERCHECK(tif))
return (-1);
td = &tif->tif_dir;
/*
* Extend image length if needed
* (but only for PlanarConfig=1).
*/
if (row >= td->td_imagelength) { /* extend image */
if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
TIFFError(tif->tif_name,
"Can not change \"ImageLength\" when using separate planes");
return (-1);
}
td->td_imagelength = row+1;
imagegrew = 1;
}
/*
* Calculate strip and check for crossings.
*/
if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
if (sample >= td->td_samplesperpixel) {
TIFFError(tif->tif_name,
"%d: Sample out of range, max %d",
sample, td->td_samplesperpixel);
return (-1);
}
strip = sample*td->td_stripsperimage + row/td->td_rowsperstrip;
} else
strip = row / td->td_rowsperstrip;
if (strip != tif->tif_curstrip) {
/*
* Changing strips -- flush any data present.
*/
if (!TIFFFlushData(tif))
return (-1);
tif->tif_curstrip = strip;
/*
* Watch out for a growing image. The value of
* strips/image will initially be 1 (since it
* can't be deduced until the imagelength is known).
*/
if (strip >= td->td_stripsperimage && imagegrew)
td->td_stripsperimage =
TIFFhowmany(td->td_imagelength,td->td_rowsperstrip);
tif->tif_row =
(strip % td->td_stripsperimage) * td->td_rowsperstrip;
if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
if (!(*tif->tif_setupencode)(tif))
return (-1);
tif->tif_flags |= TIFF_CODERSETUP;
}
if (!(*tif->tif_preencode)(tif, sample))
return (-1);
tif->tif_flags |= TIFF_POSTENCODE;
}
/*
* Check strip array to make sure there's space.
* We don't support dynamically growing files that
* have data organized in separate bitplanes because
* it's too painful. In that case we require that
* the imagelength be set properly before the first
* write (so that the strips array will be fully
* allocated above).
*/
if (strip >= td->td_nstrips && !TIFFGrowStrips(tif, 1, module))
return (-1);
/*
* Ensure the write is either sequential or at the
* beginning of a strip (or that we can randomly
* access the data -- i.e. no encoding).
*/
if (row != tif->tif_row) {
if (row < tif->tif_row) {
/*
* Moving backwards within the same strip:
* backup to the start and then decode
* forward (below).
*/
tif->tif_row = (strip % td->td_stripsperimage) *
td->td_rowsperstrip;
tif->tif_rawcp = tif->tif_rawdata;
}
/*
* Seek forward to the desired row.
*/
if (!(*tif->tif_seek)(tif, row - tif->tif_row))
return (-1);
tif->tif_row = row;
}
/* swab if needed - note that source buffer will be altered */
tif->tif_postdecode( tif, (tidata_t) buf, tif->tif_scanlinesize );
status = (*tif->tif_encoderow)(tif, (tidata_t) buf,
tif->tif_scanlinesize, sample);
/* we are now poised at the beginning of the next row */
tif->tif_row = row + 1;
return (status);
}
/*
* Encode the supplied data and write it to the
* specified strip. There must be space for the
* data; we don't check if strips overlap!
*
* NB: Image length must be setup before writing.
*/
tsize_t
TIFFWriteEncodedStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
{
static const char module[] = "TIFFWriteEncodedStrip";
TIFFDirectory *td = &tif->tif_dir;
tsample_t sample;
if (!WRITECHECKSTRIPS(tif, module))
return ((tsize_t) -1);
/*
* Check strip array to make sure there's space.
* We don't support dynamically growing files that
* have data organized in separate bitplanes because
* it's too painful. In that case we require that
* the imagelength be set properly before the first
* write (so that the strips array will be fully
* allocated above).
*/
if (strip >= td->td_nstrips) {
if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
TIFFError(tif->tif_name,
"Can not grow image by strips when using separate planes");
return ((tsize_t) -1);
}
if (!TIFFGrowStrips(tif, 1, module))
return ((tsize_t) -1);
td->td_stripsperimage =
TIFFhowmany(td->td_imagelength, td->td_rowsperstrip);
}
/*
* Handle delayed allocation of data buffer. This
* permits it to be sized according to the directory
* info.
*/
if (!BUFFERCHECK(tif))
return ((tsize_t) -1);
tif->tif_curstrip = strip;
tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
if (!(*tif->tif_setupencode)(tif))
return ((tsize_t) -1);
tif->tif_flags |= TIFF_CODERSETUP;
}
#ifdef REWRITE_HACK
tif->tif_rawcc = 0;
tif->tif_rawcp = tif->tif_rawdata;
if( td->td_stripbytecount[strip] > 0 )
{
/* if we are writing over existing tiles, zero length. */
td->td_stripbytecount[strip] = 0;
/* this forces TIFFAppendToStrip() to do a seek */
tif->tif_curoff = 0;
}
#endif
tif->tif_flags &= ~TIFF_POSTENCODE;
sample = (tsample_t)(strip / td->td_stripsperimage);
if (!(*tif->tif_preencode)(tif, sample))
return ((tsize_t) -1);
/* swab if needed - note that source buffer will be altered */
tif->tif_postdecode( tif, (tidata_t) data, cc );
if (!(*tif->tif_encodestrip)(tif, (tidata_t) data, cc, sample))
return ((tsize_t) 0);
if (!(*tif->tif_postencode)(tif))
return ((tsize_t) -1);
if (!isFillOrder(tif, td->td_fillorder) &&
(tif->tif_flags & TIFF_NOBITREV) == 0)
TIFFReverseBits(tif->tif_rawdata, tif->tif_rawcc);
if (tif->tif_rawcc > 0 &&
!TIFFAppendToStrip(tif, strip, tif->tif_rawdata, tif->tif_rawcc))
return ((tsize_t) -1);
tif->tif_rawcc = 0;
tif->tif_rawcp = tif->tif_rawdata;
return (cc);
}
/*
* Write the supplied data to the specified strip.
* There must be space for the data; we don't check
* if strips overlap!
*
* NB: Image length must be setup before writing.
*/
tsize_t
TIFFWriteRawStrip(TIFF* tif, tstrip_t strip, tdata_t data, tsize_t cc)
{
static const char module[] = "TIFFWriteRawStrip";
TIFFDirectory *td = &tif->tif_dir;
if (!WRITECHECKSTRIPS(tif, module))
return ((tsize_t) -1);
/*
* Check strip array to make sure there's space.
* We don't support dynamically growing files that
* have data organized in separate bitplanes because
* it's too painful. In that case we require that
* the imagelength be set properly before the first
* write (so that the strips array will be fully
* allocated above).
*/
if (strip >= td->td_nstrips) {
if (td->td_planarconfig == PLANARCONFIG_SEPARATE) {
TIFFError(tif->tif_name,
"Can not grow image by strips when using separate planes");
return ((tsize_t) -1);
}
/*
* Watch out for a growing image. The value of
* strips/image will initially be 1 (since it
* can't be deduced until the imagelength is known).
*/
if (strip >= td->td_stripsperimage)
td->td_stripsperimage =
TIFFhowmany(td->td_imagelength,td->td_rowsperstrip);
if (!TIFFGrowStrips(tif, 1, module))
return ((tsize_t) -1);
}
tif->tif_curstrip = strip;
tif->tif_row = (strip % td->td_stripsperimage) * td->td_rowsperstrip;
return (TIFFAppendToStrip(tif, strip, (tidata_t) data, cc) ?
cc : (tsize_t) -1);
}
/*
* Write and compress a tile of data. The
* tile is selected by the (x,y,z,s) coordinates.
*/
tsize_t
TIFFWriteTile(TIFF* tif,
tdata_t buf, uint32 x, uint32 y, uint32 z, tsample_t s)
{
if (!TIFFCheckTile(tif, x, y, z, s))
return (-1);
/*
* NB: A tile size of -1 is used instead of tif_tilesize knowing
* that TIFFWriteEncodedTile will clamp this to the tile size.
* This is done because the tile size may not be defined until
* after the output buffer is setup in TIFFWriteBufferSetup.
*/
return (TIFFWriteEncodedTile(tif,
TIFFComputeTile(tif, x, y, z, s), buf, (tsize_t) -1));
}
/*
* Encode the supplied data and write it to the
* specified tile. There must be space for the
* data. The function clamps individual writes
* to a tile to the tile size, but does not (and
* can not) check that multiple writes to the same
* tile do not write more than tile size data.
*
* NB: Image length must be setup before writing; this
* interface does not support automatically growing
* the image on each write (as TIFFWriteScanline does).
*/
tsize_t
TIFFWriteEncodedTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
{
static const char module[] = "TIFFWriteEncodedTile";
TIFFDirectory *td;
tsample_t sample;
if (!WRITECHECKTILES(tif, module))
return ((tsize_t) -1);
td = &tif->tif_dir;
if (tile >= td->td_nstrips) {
TIFFError(module, "%s: Tile %lu out of range, max %lu",
tif->tif_name, (u_long) tile, (u_long) td->td_nstrips);
return ((tsize_t) -1);
}
/*
* Handle delayed allocation of data buffer. This
* permits it to be sized more intelligently (using
* directory information).
*/
if (!BUFFERCHECK(tif))
return ((tsize_t) -1);
tif->tif_curtile = tile;
#ifdef REWRITE_HACK
tif->tif_rawcc = 0;
tif->tif_rawcp = tif->tif_rawdata;
if( td->td_stripbytecount[tile] > 0 )
{
/* if we are writing over existing tiles, zero length. */
td->td_stripbytecount[tile] = 0;
/* this forces TIFFAppendToStrip() to do a seek */
tif->tif_curoff = 0;
}
#endif
/*
* Compute tiles per row & per column to compute
* current row and column
*/
tif->tif_row = (tile % TIFFhowmany(td->td_imagelength, td->td_tilelength))
* td->td_tilelength;
tif->tif_col = (tile % TIFFhowmany(td->td_imagewidth, td->td_tilewidth))
* td->td_tilewidth;
if ((tif->tif_flags & TIFF_CODERSETUP) == 0) {
if (!(*tif->tif_setupencode)(tif))
return ((tsize_t) -1);
tif->tif_flags |= TIFF_CODERSETUP;
}
tif->tif_flags &= ~TIFF_POSTENCODE;
sample = (tsample_t)(tile/td->td_stripsperimage);
if (!(*tif->tif_preencode)(tif, sample))
return ((tsize_t) -1);
/*
* Clamp write amount to the tile size. This is mostly
* done so that callers can pass in some large number
* (e.g. -1) and have the tile size used instead.
*/
if ( cc < 1 || cc > tif->tif_tilesize)
cc = tif->tif_tilesize;
/* swab if needed - note that source buffer will be altered */
tif->tif_postdecode( tif, (tidata_t) data, cc );
if (!(*tif->tif_encodetile)(tif, (tidata_t) data, cc, sample))
return ((tsize_t) 0);
if (!(*tif->tif_postencode)(tif))
return ((tsize_t) -1);
if (!isFillOrder(tif, td->td_fillorder) &&
(tif->tif_flags & TIFF_NOBITREV) == 0)
TIFFReverseBits((u_char *)tif->tif_rawdata, tif->tif_rawcc);
if (tif->tif_rawcc > 0 && !TIFFAppendToStrip(tif, tile,
tif->tif_rawdata, tif->tif_rawcc))
return ((tsize_t) -1);
tif->tif_rawcc = 0;
tif->tif_rawcp = tif->tif_rawdata;
return (cc);
}
/*
* Write the supplied data to the specified strip.
* There must be space for the data; we don't check
* if strips overlap!
*
* NB: Image length must be setup before writing; this
* interface does not support automatically growing
* the image on each write (as TIFFWriteScanline does).
*/
tsize_t
TIFFWriteRawTile(TIFF* tif, ttile_t tile, tdata_t data, tsize_t cc)
{
static const char module[] = "TIFFWriteRawTile";
if (!WRITECHECKTILES(tif, module))
return ((tsize_t) -1);
if (tile >= tif->tif_dir.td_nstrips) {
TIFFError(module, "%s: Tile %lu out of range, max %lu",
tif->tif_name, (u_long) tile,
(u_long) tif->tif_dir.td_nstrips);
return ((tsize_t) -1);
}
return (TIFFAppendToStrip(tif, tile, (tidata_t) data, cc) ?
cc : (tsize_t) -1);
}
#define isUnspecified(tif, f) \
(TIFFFieldSet(tif,f) && (tif)->tif_dir.td_imagelength == 0)
int
TIFFSetupStrips(TIFF* tif)
{
TIFFDirectory* td = &tif->tif_dir;
if (isTiled(tif))
td->td_stripsperimage =
isUnspecified(tif, FIELD_TILEDIMENSIONS) ?
td->td_samplesperpixel : TIFFNumberOfTiles(tif);
else
td->td_stripsperimage =
isUnspecified(tif, FIELD_ROWSPERSTRIP) ?
td->td_samplesperpixel : TIFFNumberOfStrips(tif);
td->td_nstrips = td->td_stripsperimage;
if (td->td_planarconfig == PLANARCONFIG_SEPARATE)
td->td_stripsperimage /= td->td_samplesperpixel;
td->td_stripoffset = (uint32 *)
_TIFFmalloc(td->td_nstrips * sizeof (uint32));
td->td_stripbytecount = (uint32 *)
_TIFFmalloc(td->td_nstrips * sizeof (uint32));
if (td->td_stripoffset == NULL || td->td_stripbytecount == NULL)
return (0);
/*
* Place data at the end-of-file
* (by setting offsets to zero).
*/
_TIFFmemset(td->td_stripoffset, 0, td->td_nstrips*sizeof (uint32));
_TIFFmemset(td->td_stripbytecount, 0, td->td_nstrips*sizeof (uint32));
TIFFSetFieldBit(tif, FIELD_STRIPOFFSETS);
TIFFSetFieldBit(tif, FIELD_STRIPBYTECOUNTS);
return (1);
}
#undef isUnspecified
/*
* Verify file is writable and that the directory
* information is setup properly. In doing the latter
* we also "freeze" the state of the directory so
* that important information is not changed.
*/
int
TIFFWriteCheck(TIFF* tif, int tiles, const char* module)
{
if (tif->tif_mode == O_RDONLY) {
TIFFError(module, "%s: File not open for writing",
tif->tif_name);
return (0);
}
if (tiles ^ isTiled(tif)) {
TIFFError(tif->tif_name, tiles ?
"Can not write tiles to a stripped image" :
"Can not write scanlines to a tiled image");
return (0);
}
/*
* While we allow compressed TIFF files to be opened in update mode,
* we don't allow writing any image blocks in an existing compressed
* image. Eventually we could do so, by moving blocks that grow
* to the end of the file, but we don't for now.
*/
if (tif->tif_dir.td_stripoffset != NULL
&& tif->tif_dir.td_compression != COMPRESSION_NONE )
{
TIFFError( module,
"%s:\n"
"In place update to compressed TIFF images not "
"supported.",
tif->tif_name );
return (0);
}
/*
* On the first write verify all the required information
* has been setup and initialize any data structures that
* had to wait until directory information was set.
* Note that a lot of our work is assumed to remain valid
* because we disallow any of the important parameters
* from changing after we start writing (i.e. once
* TIFF_BEENWRITING is set, TIFFSetField will only allow
* the image's length to be changed).
*/
if (!TIFFFieldSet(tif, FIELD_IMAGEDIMENSIONS)) {
TIFFError(module,
"%s: Must set \"ImageWidth\" before writing data",
tif->tif_name);
return (0);
}
if (!TIFFFieldSet(tif, FIELD_PLANARCONFIG)) {
TIFFError(module,
"%s: Must set \"PlanarConfiguration\" before writing data",
tif->tif_name);
return (0);
}
if (tif->tif_dir.td_stripoffset == NULL && !TIFFSetupStrips(tif)) {
tif->tif_dir.td_nstrips = 0;
TIFFError(module, "%s: No space for %s arrays",
tif->tif_name, isTiled(tif) ? "tile" : "strip");
return (0);
}
if (isTiled(tif))
tif->tif_tilesize = TIFFTileSize(tif);
else
tif->tif_tilesize = (tsize_t) -1;
tif->tif_scanlinesize = TIFFScanlineSize(tif);
tif->tif_flags |= TIFF_BEENWRITING;
return (1);
}
/*
* Setup the raw data buffer used for encoding.
*/
int
TIFFWriteBufferSetup(TIFF* tif, tdata_t bp, tsize_t size)
{
static const char module[] = "TIFFWriteBufferSetup";
if (tif->tif_rawdata) {
if (tif->tif_flags & TIFF_MYBUFFER) {
_TIFFfree(tif->tif_rawdata);
tif->tif_flags &= ~TIFF_MYBUFFER;
}
tif->tif_rawdata = NULL;
}
if (size == (tsize_t) -1) {
size = (isTiled(tif) ?
tif->tif_tilesize : tif->tif_scanlinesize);
/*
* Make raw data buffer at least 8K
*/
if (size < 8*1024)
size = 8*1024;
bp = NULL; /* NB: force malloc */
}
if (bp == NULL) {
bp = _TIFFmalloc(size);
if (bp == NULL) {
TIFFError(module, "%s: No space for output buffer",
tif->tif_name);
return (0);
}
tif->tif_flags |= TIFF_MYBUFFER;
} else
tif->tif_flags &= ~TIFF_MYBUFFER;
tif->tif_rawdata = (tidata_t) bp;
tif->tif_rawdatasize = size;
tif->tif_rawcc = 0;
tif->tif_rawcp = tif->tif_rawdata;
tif->tif_flags |= TIFF_BUFFERSETUP;
return (1);
}
/*
* Grow the strip data structures by delta strips.
*/
static int
TIFFGrowStrips(TIFF* tif, int delta, const char* module)
{
TIFFDirectory *td = &tif->tif_dir;
uint32 *new_stripoffset, *new_stripbytecount;
assert(td->td_planarconfig == PLANARCONFIG_CONTIG);
new_stripoffset = (uint32*)_TIFFrealloc(td->td_stripoffset,
(td->td_nstrips + delta) * sizeof (uint32));
new_stripbytecount = (uint32*)_TIFFrealloc(td->td_stripbytecount,
(td->td_nstrips + delta) * sizeof (uint32));
if (new_stripoffset == NULL || new_stripbytecount == NULL) {
if (new_stripoffset)
_TIFFfree(new_stripoffset);
if (new_stripbytecount)
_TIFFfree(new_stripbytecount);
td->td_nstrips = 0;
TIFFError(module, "%s: No space to expand strip arrays",
tif->tif_name);
return (0);
}
td->td_stripoffset = new_stripoffset;
td->td_stripbytecount = new_stripbytecount;
_TIFFmemset(td->td_stripoffset + td->td_nstrips,
0, delta*sizeof (uint32));
_TIFFmemset(td->td_stripbytecount + td->td_nstrips,
0, delta*sizeof (uint32));
td->td_nstrips += delta;
return (1);
}
/*
* Append the data to the specified strip.
*
* NB: We don't check that there's space in the
* file (i.e. that strips do not overlap).
*/
static int
TIFFAppendToStrip(TIFF* tif, tstrip_t strip, tidata_t data, tsize_t cc)
{
TIFFDirectory *td = &tif->tif_dir;
static const char module[] = "TIFFAppendToStrip";
if (td->td_stripoffset[strip] == 0 || tif->tif_curoff == 0) {
/*
* No current offset, set the current strip.
*/
if (td->td_stripoffset[strip] != 0) {
if (!SeekOK(tif, td->td_stripoffset[strip])) {
TIFFError(module,
"%s: Seek error at scanline %lu",
tif->tif_name, (u_long) tif->tif_row);
return (0);
}
} else
td->td_stripoffset[strip] =
TIFFSeekFile(tif, (toff_t) 0, SEEK_END);
tif->tif_curoff = td->td_stripoffset[strip];
}
if (!WriteOK(tif, data, cc)) {
TIFFError(module, "%s: Write error at scanline %lu",
tif->tif_name, (u_long) tif->tif_row);
return (0);
}
tif->tif_curoff += cc;
td->td_stripbytecount[strip] += cc;
return (1);
}
/*
* Internal version of TIFFFlushData that can be
* called by ``encodestrip routines'' w/o concern
* for infinite recursion.
*/
int
TIFFFlushData1(TIFF* tif)
{
if (tif->tif_rawcc > 0) {
if (!isFillOrder(tif, tif->tif_dir.td_fillorder) &&
(tif->tif_flags & TIFF_NOBITREV) == 0)
TIFFReverseBits((u_char *)tif->tif_rawdata,
tif->tif_rawcc);
if (!TIFFAppendToStrip(tif,
isTiled(tif) ? tif->tif_curtile : tif->tif_curstrip,
tif->tif_rawdata, tif->tif_rawcc))
return (0);
tif->tif_rawcc = 0;
tif->tif_rawcp = tif->tif_rawdata;
}
return (1);
}
/*
* Set the current write offset. This should only be
* used to set the offset to a known previous location
* (very carefully), or to 0 so that the next write gets
* appended to the end of the file.
*/
void
TIFFSetWriteOffset(TIFF* tif, toff_t off)
{
tif->tif_curoff = off;
}

View File

@@ -1,368 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1995-1997 Sam Leffler
* Copyright (c) 1995-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#include "tiffiop.h"
#ifdef ZIP_SUPPORT
/*
* TIFF Library.
*
* ZIP (aka Deflate) Compression Support
*
* This file is simply an interface to the zlib library written by
* Jean-loup Gailly and Mark Adler. You must use version 1.0 or later
* of the library: this code assumes the 1.0 API and also depends on
* the ability to write the zlib header multiple times (one per strip)
* which was not possible with versions prior to 0.95. Note also that
* older versions of this codec avoided this bug by supressing the header
* entirely. This means that files written with the old library cannot
* be read; they should be converted to a different compression scheme
* and then reconverted.
*
* The data format used by the zlib library is described in the files
* zlib-3.1.doc, deflate-1.1.doc and gzip-4.1.doc, available in the
* directory ftp://ftp.uu.net/pub/archiving/zip/doc. The library was
* last found at ftp://ftp.uu.net/pub/archiving/zip/zlib/zlib-0.99.tar.gz.
*/
#include "tif_predict.h"
#include "zlib.h"
#include <stdio.h>
#include <assert.h>
/*
* Sigh, ZLIB_VERSION is defined as a string so there's no
* way to do a proper check here. Instead we guess based
* on the presence of #defines that were added between the
* 0.95 and 1.0 distributions.
*/
#if !defined(Z_NO_COMPRESSION) || !defined(Z_DEFLATED)
#error "Antiquated ZLIB software; you must use version 1.0 or later"
#endif
/*
* State block for each open TIFF
* file using ZIP compression/decompression.
*/
typedef struct {
TIFFPredictorState predict;
z_stream stream;
int zipquality; /* compression level */
int state; /* state flags */
#define ZSTATE_INIT 0x1 /* zlib setup successfully */
TIFFVGetMethod vgetparent; /* super-class method */
TIFFVSetMethod vsetparent; /* super-class method */
} ZIPState;
#define ZState(tif) ((ZIPState*) (tif)->tif_data)
#define DecoderState(tif) ZState(tif)
#define EncoderState(tif) ZState(tif)
static int ZIPEncode(TIFF*, tidata_t, tsize_t, tsample_t);
static int ZIPDecode(TIFF*, tidata_t, tsize_t, tsample_t);
static int
ZIPSetupDecode(TIFF* tif)
{
ZIPState* sp = DecoderState(tif);
static const char module[] = "ZIPSetupDecode";
assert(sp != NULL);
if (inflateInit(&sp->stream) != Z_OK) {
TIFFError(module, "%s: %s", tif->tif_name, sp->stream.msg);
return (0);
} else {
sp->state |= ZSTATE_INIT;
return (1);
}
}
/*
* Setup state for decoding a strip.
*/
static int
ZIPPreDecode(TIFF* tif, tsample_t s)
{
ZIPState* sp = DecoderState(tif);
(void) s;
assert(sp != NULL);
sp->stream.next_in = tif->tif_rawdata;
sp->stream.avail_in = tif->tif_rawcc;
return (inflateReset(&sp->stream) == Z_OK);
}
static int
ZIPDecode(TIFF* tif, tidata_t op, tsize_t occ, tsample_t s)
{
ZIPState* sp = DecoderState(tif);
static const char module[] = "ZIPDecode";
(void) s;
assert(sp != NULL);
sp->stream.next_out = op;
sp->stream.avail_out = occ;
do {
int state = inflate(&sp->stream, Z_PARTIAL_FLUSH);
if (state == Z_STREAM_END)
break;
if (state == Z_DATA_ERROR) {
TIFFError(module,
"%s: Decoding error at scanline %d, %s",
tif->tif_name, tif->tif_row, sp->stream.msg);
if (inflateSync(&sp->stream) != Z_OK)
return (0);
continue;
}
if (state != Z_OK) {
TIFFError(module, "%s: zlib error: %s",
tif->tif_name, sp->stream.msg);
return (0);
}
} while (sp->stream.avail_out > 0);
if (sp->stream.avail_out != 0) {
TIFFError(module,
"%s: Not enough data at scanline %d (short %d bytes)",
tif->tif_name, tif->tif_row, sp->stream.avail_out);
return (0);
}
return (1);
}
static int
ZIPSetupEncode(TIFF* tif)
{
ZIPState* sp = EncoderState(tif);
static const char module[] = "ZIPSetupEncode";
assert(sp != NULL);
if (deflateInit(&sp->stream, sp->zipquality) != Z_OK) {
TIFFError(module, "%s: %s", tif->tif_name, sp->stream.msg);
return (0);
} else {
sp->state |= ZSTATE_INIT;
return (1);
}
}
/*
* Reset encoding state at the start of a strip.
*/
static int
ZIPPreEncode(TIFF* tif, tsample_t s)
{
ZIPState *sp = EncoderState(tif);
(void) s;
assert(sp != NULL);
sp->stream.next_out = tif->tif_rawdata;
sp->stream.avail_out = tif->tif_rawdatasize;
return (deflateReset(&sp->stream) == Z_OK);
}
/*
* Encode a chunk of pixels.
*/
static int
ZIPEncode(TIFF* tif, tidata_t bp, tsize_t cc, tsample_t s)
{
ZIPState *sp = EncoderState(tif);
static const char module[] = "ZIPEncode";
(void) s;
sp->stream.next_in = bp;
sp->stream.avail_in = cc;
do {
if (deflate(&sp->stream, Z_NO_FLUSH) != Z_OK) {
TIFFError(module, "%s: Encoder error: %s",
tif->tif_name, sp->stream.msg);
return (0);
}
if (sp->stream.avail_out == 0) {
tif->tif_rawcc = tif->tif_rawdatasize;
TIFFFlushData1(tif);
sp->stream.next_out = tif->tif_rawdata;
sp->stream.avail_out = tif->tif_rawdatasize;
}
} while (sp->stream.avail_in > 0);
return (1);
}
/*
* Finish off an encoded strip by flushing the last
* string and tacking on an End Of Information code.
*/
static int
ZIPPostEncode(TIFF* tif)
{
ZIPState *sp = EncoderState(tif);
static const char module[] = "ZIPPostEncode";
int state;
sp->stream.avail_in = 0;
do {
state = deflate(&sp->stream, Z_FINISH);
switch (state) {
case Z_STREAM_END:
case Z_OK:
if ((int)sp->stream.avail_out != (int)tif->tif_rawdatasize)
{
tif->tif_rawcc =
tif->tif_rawdatasize - sp->stream.avail_out;
TIFFFlushData1(tif);
sp->stream.next_out = tif->tif_rawdata;
sp->stream.avail_out = tif->tif_rawdatasize;
}
break;
default:
TIFFError(module, "%s: zlib error: %s",
tif->tif_name, sp->stream.msg);
return (0);
}
} while (state != Z_STREAM_END);
return (1);
}
static void
ZIPCleanup(TIFF* tif)
{
ZIPState* sp = ZState(tif);
if (sp) {
if (sp->state&ZSTATE_INIT) {
/* NB: avoid problems in the library */
if (tif->tif_mode == O_RDONLY)
inflateEnd(&sp->stream);
else
deflateEnd(&sp->stream);
}
_TIFFfree(sp);
tif->tif_data = NULL;
}
}
static int
ZIPVSetField(TIFF* tif, ttag_t tag, va_list ap)
{
ZIPState* sp = ZState(tif);
static const char module[] = "ZIPVSetField";
switch (tag) {
case TIFFTAG_ZIPQUALITY:
sp->zipquality = va_arg(ap, int);
if (tif->tif_mode != O_RDONLY && (sp->state&ZSTATE_INIT)) {
if (deflateParams(&sp->stream,
sp->zipquality, Z_DEFAULT_STRATEGY) != Z_OK) {
TIFFError(module, "%s: zlib error: %s",
tif->tif_name, sp->stream.msg);
return (0);
}
}
return (1);
default:
return (*sp->vsetparent)(tif, tag, ap);
}
/*NOTREACHED*/
}
static int
ZIPVGetField(TIFF* tif, ttag_t tag, va_list ap)
{
ZIPState* sp = ZState(tif);
switch (tag) {
case TIFFTAG_ZIPQUALITY:
*va_arg(ap, int*) = sp->zipquality;
break;
default:
return (*sp->vgetparent)(tif, tag, ap);
}
return (1);
}
static const TIFFFieldInfo zipFieldInfo[] = {
{ TIFFTAG_ZIPQUALITY, 0, 0, TIFF_ANY, FIELD_PSEUDO,
TRUE, FALSE, "" },
};
#define N(a) (sizeof (a) / sizeof (a[0]))
int
TIFFInitZIP(TIFF* tif, int scheme)
{
ZIPState* sp;
assert( (scheme == COMPRESSION_DEFLATE) || (scheme == COMPRESSION_ADOBE_DEFLATE));
/*
* Allocate state block so tag methods have storage to record values.
*/
tif->tif_data = (tidata_t) _TIFFmalloc(sizeof (ZIPState));
if (tif->tif_data == NULL)
goto bad;
sp = ZState(tif);
sp->stream.zalloc = NULL;
sp->stream.zfree = NULL;
sp->stream.opaque = NULL;
sp->stream.data_type = Z_BINARY;
/*
* Merge codec-specific tag information and
* override parent get/set field methods.
*/
_TIFFMergeFieldInfo(tif, zipFieldInfo, N(zipFieldInfo));
sp->vgetparent = tif->tif_tagmethods.vgetfield;
tif->tif_tagmethods.vgetfield = ZIPVGetField; /* hook for codec tags */
sp->vsetparent = tif->tif_tagmethods.vsetfield;
tif->tif_tagmethods.vsetfield = ZIPVSetField; /* hook for codec tags */
/* Default values for codec-specific fields */
sp->zipquality = Z_DEFAULT_COMPRESSION; /* default comp. level */
sp->state = 0;
/*
* Install codec methods.
*/
tif->tif_setupdecode = ZIPSetupDecode;
tif->tif_predecode = ZIPPreDecode;
tif->tif_decoderow = ZIPDecode;
tif->tif_decodestrip = ZIPDecode;
tif->tif_decodetile = ZIPDecode;
tif->tif_setupencode = ZIPSetupEncode;
tif->tif_preencode = ZIPPreEncode;
tif->tif_postencode = ZIPPostEncode;
tif->tif_encoderow = ZIPEncode;
tif->tif_encodestrip = ZIPEncode;
tif->tif_encodetile = ZIPEncode;
tif->tif_cleanup = ZIPCleanup;
/*
* Setup predictor setup.
*/
(void) TIFFPredictorInit(tif);
return (1);
bad:
TIFFError("TIFFInitZIP", "No space for ZIP state block");
return (0);
}
#endif /* ZIP_SUPORT */

View File

@@ -1,680 +0,0 @@
# Microsoft Developer Studio Project File - Name="tiff" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Static Library" 0x0104
CFG=tiff - 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 "tiff.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 "tiff.mak" CFG="tiff - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "tiff - Win32 Release" (based on "Win32 (x86) Static Library")
!MESSAGE "tiff - Win32 Debug" (based on "Win32 (x86) Static Library")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "tiff - 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 "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MD /w /W0 /O1 /Ob2 /I "../include" /D "WIN32" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /c
# ADD BASE RSC /l 0x809
# ADD RSC /l 0x809
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\lib\tiff.lib"
!ELSEIF "$(CFG)" == "tiff - 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 /GX /Z7 /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /YX /FD /c
# ADD CPP /nologo /MDd /w /W0 /Zi /Od /I "../include" /I ".." /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "__WINDOWS__" /D "__WXMSW__" /D DEBUG=1 /D "__WXDEBUG__" /D "__WIN95__" /D "__WIN32__" /D WINVER=0x0400 /D "STRICT" /Yu"wx/wxprec.h" /FD /c
# ADD BASE RSC /l 0x809
# ADD RSC /l 0x809
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LIB32=link.exe -lib
# ADD BASE LIB32 /nologo
# ADD LIB32 /nologo /out:"..\..\lib\tiffd.lib"
!ENDIF
# Begin Target
# Name "tiff - Win32 Release"
# Name "tiff - Win32 Debug"
# Begin Group "tiff Files"
# PROP Default_Filter ""
# Begin Source File
SOURCE=.\tif_aux.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_close.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_codec.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_color.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_compress.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_dir.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_dirinfo.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_dirread.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_dirwrite.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_dumpmode.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_error.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_fax3.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_fax3sm.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_flush.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_getimage.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_jpeg.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_luv.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_lzw.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_next.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_open.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_packbits.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_pixarlog.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_predict.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_print.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_read.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_strip.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_swab.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_thunder.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_tile.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_version.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_warning.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_win32.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_write.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# Begin Source File
SOURCE=.\tif_zip.c
!IF "$(CFG)" == "tiff - Win32 Release"
# ADD CPP /I ".."
# SUBTRACT CPP /YX /Yc /Yu
!ELSEIF "$(CFG)" == "tiff - Win32 Debug"
# SUBTRACT CPP /YX /Yc /Yu
!ENDIF
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h"
# Begin Source File
SOURCE=.\port.h
# End Source File
# Begin Source File
SOURCE=.\t4.h
# End Source File
# Begin Source File
SOURCE=.\tif_dir.h
# End Source File
# Begin Source File
SOURCE=.\tif_fax3.h
# End Source File
# Begin Source File
SOURCE=.\tif_predict.h
# End Source File
# Begin Source File
SOURCE=.\tiff.h
# End Source File
# Begin Source File
SOURCE=.\tiffcomp.h
# End Source File
# Begin Source File
SOURCE=.\tiffconf.h
# End Source File
# Begin Source File
SOURCE=.\tiffio.h
# End Source File
# Begin Source File
SOURCE=.\tiffiop.h
# End Source File
# Begin Source File
SOURCE=.\uvcode.h
# End Source File
# 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: "tiff"=.\TiffVC.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -1,482 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _TIFF_
#define _TIFF_
/*
* Tag Image File Format (TIFF)
*
* Based on Rev 6.0 from:
* Developer's Desk
* Aldus Corporation
* 411 First Ave. South
* Suite 200
* Seattle, WA 98104
* 206-622-5500
*/
#define TIFF_VERSION 42
#define TIFF_BIGENDIAN 0x4d4d
#define TIFF_LITTLEENDIAN 0x4949
/*
* The so called TIFF types conflict with definitions from inttypes.h
* included from sys/types.h on AIX (at least using VisualAge compiler).
* We try to work around this by detecting this case. Defining
* _TIFF_DATA_TYPEDEFS_ short circuits the later definitions in tiff.h, and
* we will in the holes not provided for by inttypes.h.
*
* See http://bugzilla.remotesensing.org/show_bug.cgi?id=39
*/
#if defined(_H_INTTYPES) && defined(_ALL_SOURCE) && defined(USING_VISUALAGE)
#define _TIFF_DATA_TYPEDEFS_
typedef unsigned char uint8;
typedef unsigned short uint16;
typedef unsigned int uint32;
#endif
/*
* Intrinsic data types required by the file format:
*
* 8-bit quantities int8/uint8
* 16-bit quantities int16/uint16
* 32-bit quantities int32/uint32
* strings unsigned char*
*/
#ifndef _TIFF_DATA_TYPEDEFS_
#define _TIFF_DATA_TYPEDEFS_
#ifdef __STDC__
typedef signed char int8; /* NB: non-ANSI compilers may not grok */
#else
typedef char int8;
#endif
typedef unsigned char uint8;
typedef short int16;
typedef unsigned short uint16; /* sizeof (uint16) must == 2 */
#if defined(__alpha) || (defined(_MIPS_SZLONG) && _MIPS_SZLONG == 64) || defined(__LP64__) || defined(__arch64__)
typedef int int32;
typedef unsigned int uint32; /* sizeof (uint32) must == 4 */
#else
typedef long int32;
typedef unsigned long uint32; /* sizeof (uint32) must == 4 */
#endif
#endif /* _TIFF_DATA_TYPEDEFS_ */
/* For TIFFReassignTagToIgnore */
enum TIFFIgnoreSense /* IGNORE tag table */
{
TIS_STORE,
TIS_EXTRACT,
TIS_EMPTY
};
typedef struct {
uint16 tiff_magic; /* magic number (defines byte order) */
uint16 tiff_version; /* TIFF version number */
uint32 tiff_diroff; /* byte offset to first directory */
} TIFFHeader;
/*
* TIFF Image File Directories are comprised of
* a table of field descriptors of the form shown
* below. The table is sorted in ascending order
* by tag. The values associated with each entry
* are disjoint and may appear anywhere in the file
* (so long as they are placed on a word boundary).
*
* If the value is 4 bytes or less, then it is placed
* in the offset field to save space. If the value
* is less than 4 bytes, it is left-justified in the
* offset field.
*/
typedef struct {
uint16 tdir_tag; /* see below */
uint16 tdir_type; /* data type; see below */
uint32 tdir_count; /* number of items; length in spec */
uint32 tdir_offset; /* byte offset to field data */
} TIFFDirEntry;
/*
* NB: In the comments below,
* - items marked with a + are obsoleted by revision 5.0,
* - items marked with a ! are introduced in revision 6.0.
* - items marked with a % are introduced post revision 6.0.
* - items marked with a $ are obsoleted by revision 6.0.
*/
/*
* Tag data type information.
*
* Note: RATIONALs are the ratio of two 32-bit integer values.
*/
typedef enum {
TIFF_NOTYPE = 0, /* placeholder */
TIFF_BYTE = 1, /* 8-bit unsigned integer */
TIFF_ASCII = 2, /* 8-bit bytes w/ last byte null */
TIFF_SHORT = 3, /* 16-bit unsigned integer */
TIFF_LONG = 4, /* 32-bit unsigned integer */
TIFF_RATIONAL = 5, /* 64-bit unsigned fraction */
TIFF_SBYTE = 6, /* !8-bit signed integer */
TIFF_UNDEFINED = 7, /* !8-bit untyped data */
TIFF_SSHORT = 8, /* !16-bit signed integer */
TIFF_SLONG = 9, /* !32-bit signed integer */
TIFF_SRATIONAL = 10, /* !64-bit signed fraction */
TIFF_FLOAT = 11, /* !32-bit IEEE floating point */
TIFF_DOUBLE = 12, /* !64-bit IEEE floating point */
TIFF_IFD = 13 /* %32-bit unsigned integer (offset) */
} TIFFDataType;
/*
* TIFF Tag Definitions.
*/
#define TIFFTAG_SUBFILETYPE 254 /* subfile data descriptor */
#define FILETYPE_REDUCEDIMAGE 0x1 /* reduced resolution version */
#define FILETYPE_PAGE 0x2 /* one page of many */
#define FILETYPE_MASK 0x4 /* transparency mask */
#define TIFFTAG_OSUBFILETYPE 255 /* +kind of data in subfile */
#define OFILETYPE_IMAGE 1 /* full resolution image data */
#define OFILETYPE_REDUCEDIMAGE 2 /* reduced size image data */
#define OFILETYPE_PAGE 3 /* one page of many */
#define TIFFTAG_IMAGEWIDTH 256 /* image width in pixels */
#define TIFFTAG_IMAGELENGTH 257 /* image height in pixels */
#define TIFFTAG_BITSPERSAMPLE 258 /* bits per channel (sample) */
#define TIFFTAG_COMPRESSION 259 /* data compression technique */
#define COMPRESSION_NONE 1 /* dump mode */
#define COMPRESSION_CCITTRLE 2 /* CCITT modified Huffman RLE */
#define COMPRESSION_CCITTFAX3 3 /* CCITT Group 3 fax encoding */
#define COMPRESSION_CCITT_T4 3 /* CCITT T.4 (TIFF 6 name) */
#define COMPRESSION_CCITTFAX4 4 /* CCITT Group 4 fax encoding */
#define COMPRESSION_CCITT_T6 4 /* CCITT T.6 (TIFF 6 name) */
#define COMPRESSION_LZW 5 /* Lempel-Ziv & Welch */
#define COMPRESSION_OJPEG 6 /* !6.0 JPEG */
#define COMPRESSION_JPEG 7 /* %JPEG DCT compression */
#define COMPRESSION_NEXT 32766 /* NeXT 2-bit RLE */
#define COMPRESSION_CCITTRLEW 32771 /* #1 w/ word alignment */
#define COMPRESSION_PACKBITS 32773 /* Macintosh RLE */
#define COMPRESSION_THUNDERSCAN 32809 /* ThunderScan RLE */
/* codes 32895-32898 are reserved for ANSI IT8 TIFF/IT <dkelly@apago.com) */
#define COMPRESSION_IT8CTPAD 32895 /* IT8 CT w/padding */
#define COMPRESSION_IT8LW 32896 /* IT8 Linework RLE */
#define COMPRESSION_IT8MP 32897 /* IT8 Monochrome picture */
#define COMPRESSION_IT8BL 32898 /* IT8 Binary line art */
/* compression codes 32908-32911 are reserved for Pixar */
#define COMPRESSION_PIXARFILM 32908 /* Pixar companded 10bit LZW */
#define COMPRESSION_PIXARLOG 32909 /* Pixar companded 11bit ZIP */
#define COMPRESSION_DEFLATE 32946 /* Deflate compression */
#define COMPRESSION_ADOBE_DEFLATE 8 /* Deflate compression, as recognized by Adobe */
/* compression code 32947 is reserved for Oceana Matrix <dev@oceana.com> */
#define COMPRESSION_DCS 32947 /* Kodak DCS encoding */
#define COMPRESSION_JBIG 34661 /* ISO JBIG */
#define COMPRESSION_SGILOG 34676 /* SGI Log Luminance RLE */
#define COMPRESSION_SGILOG24 34677 /* SGI Log 24-bit packed */
#define COMPRESSION_JP2000 34712 /* Leadtools JPEG2000 */
#define TIFFTAG_PHOTOMETRIC 262 /* photometric interpretation */
#define PHOTOMETRIC_MINISWHITE 0 /* min value is white */
#define PHOTOMETRIC_MINISBLACK 1 /* min value is black */
#define PHOTOMETRIC_RGB 2 /* RGB color model */
#define PHOTOMETRIC_PALETTE 3 /* color map indexed */
#define PHOTOMETRIC_MASK 4 /* $holdout mask */
#define PHOTOMETRIC_SEPARATED 5 /* !color separations */
#define PHOTOMETRIC_YCBCR 6 /* !CCIR 601 */
#define PHOTOMETRIC_CIELAB 8 /* !1976 CIE L*a*b* */
#define PHOTOMETRIC_ICCLAB 9 /* ICC L*a*b* [Adobe TIFF Technote 4] */
#define PHOTOMETRIC_ITULAB 10 /* ITU L*a*b* */
#define PHOTOMETRIC_LOGL 32844 /* CIE Log2(L) */
#define PHOTOMETRIC_LOGLUV 32845 /* CIE Log2(L) (u',v') */
#define TIFFTAG_THRESHHOLDING 263 /* +thresholding used on data */
#define THRESHHOLD_BILEVEL 1 /* b&w art scan */
#define THRESHHOLD_HALFTONE 2 /* or dithered scan */
#define THRESHHOLD_ERRORDIFFUSE 3 /* usually floyd-steinberg */
#define TIFFTAG_CELLWIDTH 264 /* +dithering matrix width */
#define TIFFTAG_CELLLENGTH 265 /* +dithering matrix height */
#define TIFFTAG_FILLORDER 266 /* data order within a byte */
#define FILLORDER_MSB2LSB 1 /* most significant -> least */
#define FILLORDER_LSB2MSB 2 /* least significant -> most */
#define TIFFTAG_DOCUMENTNAME 269 /* name of doc. image is from */
#define TIFFTAG_IMAGEDESCRIPTION 270 /* info about image */
#define TIFFTAG_MAKE 271 /* scanner manufacturer name */
#define TIFFTAG_MODEL 272 /* scanner model name/number */
#define TIFFTAG_STRIPOFFSETS 273 /* offsets to data strips */
#define TIFFTAG_ORIENTATION 274 /* +image orientation */
#define ORIENTATION_TOPLEFT 1 /* row 0 top, col 0 lhs */
#define ORIENTATION_TOPRIGHT 2 /* row 0 top, col 0 rhs */
#define ORIENTATION_BOTRIGHT 3 /* row 0 bottom, col 0 rhs */
#define ORIENTATION_BOTLEFT 4 /* row 0 bottom, col 0 lhs */
#define ORIENTATION_LEFTTOP 5 /* row 0 lhs, col 0 top */
#define ORIENTATION_RIGHTTOP 6 /* row 0 rhs, col 0 top */
#define ORIENTATION_RIGHTBOT 7 /* row 0 rhs, col 0 bottom */
#define ORIENTATION_LEFTBOT 8 /* row 0 lhs, col 0 bottom */
#define TIFFTAG_SAMPLESPERPIXEL 277 /* samples per pixel */
#define TIFFTAG_ROWSPERSTRIP 278 /* rows per strip of data */
#define TIFFTAG_STRIPBYTECOUNTS 279 /* bytes counts for strips */
#define TIFFTAG_MINSAMPLEVALUE 280 /* +minimum sample value */
#define TIFFTAG_MAXSAMPLEVALUE 281 /* +maximum sample value */
#define TIFFTAG_XRESOLUTION 282 /* pixels/resolution in x */
#define TIFFTAG_YRESOLUTION 283 /* pixels/resolution in y */
#define TIFFTAG_PLANARCONFIG 284 /* storage organization */
#define PLANARCONFIG_CONTIG 1 /* single image plane */
#define PLANARCONFIG_SEPARATE 2 /* separate planes of data */
#define TIFFTAG_PAGENAME 285 /* page name image is from */
#define TIFFTAG_XPOSITION 286 /* x page offset of image lhs */
#define TIFFTAG_YPOSITION 287 /* y page offset of image lhs */
#define TIFFTAG_FREEOFFSETS 288 /* +byte offset to free block */
#define TIFFTAG_FREEBYTECOUNTS 289 /* +sizes of free blocks */
#define TIFFTAG_GRAYRESPONSEUNIT 290 /* $gray scale curve accuracy */
#define GRAYRESPONSEUNIT_10S 1 /* tenths of a unit */
#define GRAYRESPONSEUNIT_100S 2 /* hundredths of a unit */
#define GRAYRESPONSEUNIT_1000S 3 /* thousandths of a unit */
#define GRAYRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */
#define GRAYRESPONSEUNIT_100000S 5 /* hundred-thousandths */
#define TIFFTAG_GRAYRESPONSECURVE 291 /* $gray scale response curve */
#define TIFFTAG_GROUP3OPTIONS 292 /* 32 flag bits */
#define TIFFTAG_T4OPTIONS 292 /* TIFF 6.0 proper name alias */
#define GROUP3OPT_2DENCODING 0x1 /* 2-dimensional coding */
#define GROUP3OPT_UNCOMPRESSED 0x2 /* data not compressed */
#define GROUP3OPT_FILLBITS 0x4 /* fill to byte boundary */
#define TIFFTAG_GROUP4OPTIONS 293 /* 32 flag bits */
#define TIFFTAG_T6OPTIONS 293 /* TIFF 6.0 proper name */
#define GROUP4OPT_UNCOMPRESSED 0x2 /* data not compressed */
#define TIFFTAG_RESOLUTIONUNIT 296 /* units of resolutions */
#define RESUNIT_NONE 1 /* no meaningful units */
#define RESUNIT_INCH 2 /* english */
#define RESUNIT_CENTIMETER 3 /* metric */
#define TIFFTAG_PAGENUMBER 297 /* page numbers of multi-page */
#define TIFFTAG_COLORRESPONSEUNIT 300 /* $color curve accuracy */
#define COLORRESPONSEUNIT_10S 1 /* tenths of a unit */
#define COLORRESPONSEUNIT_100S 2 /* hundredths of a unit */
#define COLORRESPONSEUNIT_1000S 3 /* thousandths of a unit */
#define COLORRESPONSEUNIT_10000S 4 /* ten-thousandths of a unit */
#define COLORRESPONSEUNIT_100000S 5 /* hundred-thousandths */
#define TIFFTAG_TRANSFERFUNCTION 301 /* !colorimetry info */
#define TIFFTAG_SOFTWARE 305 /* name & release */
#define TIFFTAG_DATETIME 306 /* creation date and time */
#define TIFFTAG_ARTIST 315 /* creator of image */
#define TIFFTAG_HOSTCOMPUTER 316 /* machine where created */
#define TIFFTAG_PREDICTOR 317 /* prediction scheme w/ LZW */
#define TIFFTAG_WHITEPOINT 318 /* image white point */
#define TIFFTAG_PRIMARYCHROMATICITIES 319 /* !primary chromaticities */
#define TIFFTAG_COLORMAP 320 /* RGB map for pallette image */
#define TIFFTAG_HALFTONEHINTS 321 /* !highlight+shadow info */
#define TIFFTAG_TILEWIDTH 322 /* !rows/data tile */
#define TIFFTAG_TILELENGTH 323 /* !cols/data tile */
#define TIFFTAG_TILEOFFSETS 324 /* !offsets to data tiles */
#define TIFFTAG_TILEBYTECOUNTS 325 /* !byte counts for tiles */
#define TIFFTAG_BADFAXLINES 326 /* lines w/ wrong pixel count */
#define TIFFTAG_CLEANFAXDATA 327 /* regenerated line info */
#define CLEANFAXDATA_CLEAN 0 /* no errors detected */
#define CLEANFAXDATA_REGENERATED 1 /* receiver regenerated lines */
#define CLEANFAXDATA_UNCLEAN 2 /* uncorrected errors exist */
#define TIFFTAG_CONSECUTIVEBADFAXLINES 328 /* max consecutive bad lines */
#define TIFFTAG_SUBIFD 330 /* subimage descriptors */
#define TIFFTAG_INKSET 332 /* !inks in separated image */
#define INKSET_CMYK 1 /* !cyan-magenta-yellow-black color */
#define INKSET_MULTIINK 2 /* !multi-ink or hi-fi color */
#define TIFFTAG_INKNAMES 333 /* !ascii names of inks */
#define TIFFTAG_NUMBEROFINKS 334 /* !number of inks */
#define TIFFTAG_DOTRANGE 336 /* !0% and 100% dot codes */
#define TIFFTAG_TARGETPRINTER 337 /* !separation target */
#define TIFFTAG_EXTRASAMPLES 338 /* !info about extra samples */
#define EXTRASAMPLE_UNSPECIFIED 0 /* !unspecified data */
#define EXTRASAMPLE_ASSOCALPHA 1 /* !associated alpha data */
#define EXTRASAMPLE_UNASSALPHA 2 /* !unassociated alpha data */
#define TIFFTAG_SAMPLEFORMAT 339 /* !data sample format */
#define SAMPLEFORMAT_UINT 1 /* !unsigned integer data */
#define SAMPLEFORMAT_INT 2 /* !signed integer data */
#define SAMPLEFORMAT_IEEEFP 3 /* !IEEE floating point data */
#define SAMPLEFORMAT_VOID 4 /* !untyped data */
#define SAMPLEFORMAT_COMPLEXINT 5 /* !complex signed int */
#define SAMPLEFORMAT_COMPLEXIEEEFP 6 /* !complex ieee floating */
#define TIFFTAG_SMINSAMPLEVALUE 340 /* !variable MinSampleValue */
#define TIFFTAG_SMAXSAMPLEVALUE 341 /* !variable MaxSampleValue */
#define TIFFTAG_CLIPPATH 343 /* %ClipPath [Adobe TIFF technote 2] */
#define TIFFTAG_XCLIPPATHUNITS 344 /* %XClipPathUnits [Adobe TIFF technote 2] */
#define TIFFTAG_YCLIPPATHUNITS 344 /* %YClipPathUnits [Adobe TIFF technote 2] */
#define TIFFTAG_INDEXED 345 /* %Indexed [Adobe TIFF Technote 3] */
#define TIFFTAG_JPEGTABLES 347 /* %JPEG table stream */
#define TIFFTAG_OPIPROXY 351 /* %OPI Proxy [Adobe TIFF technote] */
/*
* Tags 512-521 are obsoleted by Technical Note #2
* which specifies a revised JPEG-in-TIFF scheme.
*/
#define TIFFTAG_JPEGPROC 512 /* !JPEG processing algorithm */
#define JPEGPROC_BASELINE 1 /* !baseline sequential */
#define JPEGPROC_LOSSLESS 14 /* !Huffman coded lossless */
#define TIFFTAG_JPEGIFOFFSET 513 /* !pointer to SOI marker */
#define TIFFTAG_JPEGIFBYTECOUNT 514 /* !JFIF stream length */
#define TIFFTAG_JPEGRESTARTINTERVAL 515 /* !restart interval length */
#define TIFFTAG_JPEGLOSSLESSPREDICTORS 517 /* !lossless proc predictor */
#define TIFFTAG_JPEGPOINTTRANSFORM 518 /* !lossless point transform */
#define TIFFTAG_JPEGQTABLES 519 /* !Q matrice offsets */
#define TIFFTAG_JPEGDCTABLES 520 /* !DCT table offsets */
#define TIFFTAG_JPEGACTABLES 521 /* !AC coefficient offsets */
#define TIFFTAG_YCBCRCOEFFICIENTS 529 /* !RGB -> YCbCr transform */
#define TIFFTAG_YCBCRSUBSAMPLING 530 /* !YCbCr subsampling factors */
#define TIFFTAG_YCBCRPOSITIONING 531 /* !subsample positioning */
#define YCBCRPOSITION_CENTERED 1 /* !as in PostScript Level 2 */
#define YCBCRPOSITION_COSITED 2 /* !as in CCIR 601-1 */
#define TIFFTAG_REFERENCEBLACKWHITE 532 /* !colorimetry info */
#define TIFFTAG_XMLPACKET 700 /* %XML packet [Adobe XMP technote 9-14-02] (dkelly@apago.com) */
#define TIFFTAG_OPIIMAGEID 32781 /* %OPI ImageID [Adobe TIFF technote] */
/* tags 32952-32956 are private tags registered to Island Graphics */
#define TIFFTAG_REFPTS 32953 /* image reference points */
#define TIFFTAG_REGIONTACKPOINT 32954 /* region-xform tack point */
#define TIFFTAG_REGIONWARPCORNERS 32955 /* warp quadrilateral */
#define TIFFTAG_REGIONAFFINE 32956 /* affine transformation mat */
/* tags 32995-32999 are private tags registered to SGI */
#define TIFFTAG_MATTEING 32995 /* $use ExtraSamples */
#define TIFFTAG_DATATYPE 32996 /* $use SampleFormat */
#define TIFFTAG_IMAGEDEPTH 32997 /* z depth of image */
#define TIFFTAG_TILEDEPTH 32998 /* z depth/data tile */
/* tags 33300-33309 are private tags registered to Pixar */
/*
* TIFFTAG_PIXAR_IMAGEFULLWIDTH and TIFFTAG_PIXAR_IMAGEFULLLENGTH
* are set when an image has been cropped out of a larger image.
* They reflect the size of the original uncropped image.
* The TIFFTAG_XPOSITION and TIFFTAG_YPOSITION can be used
* to determine the position of the smaller image in the larger one.
*/
#define TIFFTAG_PIXAR_IMAGEFULLWIDTH 33300 /* full image size in x */
#define TIFFTAG_PIXAR_IMAGEFULLLENGTH 33301 /* full image size in y */
/* Tags 33302-33306 are used to identify special image modes and data
* used by Pixar's texture formats.
*/
#define TIFFTAG_PIXAR_TEXTUREFORMAT 33302 /* texture map format */
#define TIFFTAG_PIXAR_WRAPMODES 33303 /* s & t wrap modes */
#define TIFFTAG_PIXAR_FOVCOT 33304 /* cotan(fov) for env. maps */
#define TIFFTAG_PIXAR_MATRIX_WORLDTOSCREEN 33305
#define TIFFTAG_PIXAR_MATRIX_WORLDTOCAMERA 33306
/* tag 33405 is a private tag registered to Eastman Kodak */
#define TIFFTAG_WRITERSERIALNUMBER 33405 /* device serial number */
/* tag 33432 is listed in the 6.0 spec w/ unknown ownership */
#define TIFFTAG_COPYRIGHT 33432 /* copyright string */
/* IPTC TAG from RichTIFF specifications */
#define TIFFTAG_RICHTIFFIPTC 33723
/* 34016-34029 are reserved for ANSI IT8 TIFF/IT <dkelly@apago.com) */
#define TIFFTAG_IT8SITE 34016 /* site name */
#define TIFFTAG_IT8COLORSEQUENCE 34017 /* color seq. [RGB,CMYK,etc] */
#define TIFFTAG_IT8HEADER 34018 /* DDES Header */
#define TIFFTAG_IT8RASTERPADDING 34019 /* raster scanline padding */
#define TIFFTAG_IT8BITSPERRUNLENGTH 34020 /* # of bits in short run */
#define TIFFTAG_IT8BITSPEREXTENDEDRUNLENGTH 34021/* # of bits in long run */
#define TIFFTAG_IT8COLORTABLE 34022 /* LW colortable */
#define TIFFTAG_IT8IMAGECOLORINDICATOR 34023 /* BP/BL image color switch */
#define TIFFTAG_IT8BKGCOLORINDICATOR 34024 /* BP/BL bg color switch */
#define TIFFTAG_IT8IMAGECOLORVALUE 34025 /* BP/BL image color value */
#define TIFFTAG_IT8BKGCOLORVALUE 34026 /* BP/BL bg color value */
#define TIFFTAG_IT8PIXELINTENSITYRANGE 34027 /* MP pixel intensity value */
#define TIFFTAG_IT8TRANSPARENCYINDICATOR 34028 /* HC transparency switch */
#define TIFFTAG_IT8COLORCHARACTERIZATION 34029 /* color character. table */
#define TIFFTAG_IT8HCUSAGE 34030 /* HC usage indicator */
#define TIFFTAG_IT8TRAPINDICATOR 34031 /* Trapping indicator (untrapped=0, trapped=1) */
#define TIFFTAG_IT8CMYKEQUIVALENT 34032 /* CMYK color equivalents */
/* tags 34232-34236 are private tags registered to Texas Instruments */
#define TIFFTAG_FRAMECOUNT 34232 /* Sequence Frame Count */
/* tag 34750 is a private tag registered to Adobe? */
#define TIFFTAG_ICCPROFILE 34675 /* ICC profile data */
/* tag 34377 is private tag registered to Adobe for PhotoShop */
#define TIFFTAG_PHOTOSHOP 34377
/* tag 34750 is a private tag registered to Pixel Magic */
#define TIFFTAG_JBIGOPTIONS 34750 /* JBIG options */
/* tags 34908-34914 are private tags registered to SGI */
#define TIFFTAG_FAXRECVPARAMS 34908 /* encoded Class 2 ses. parms */
#define TIFFTAG_FAXSUBADDRESS 34909 /* received SubAddr string */
#define TIFFTAG_FAXRECVTIME 34910 /* receive time (secs) */
/* tags 37439-37443 are registered to SGI <gregl@sgi.com> */
#define TIFFTAG_STONITS 37439 /* Sample value to Nits */
/* tag 34929 is a private tag registered to FedEx */
#define TIFFTAG_FEDEX_EDR 34929 /* unknown use */
/* tag 65535 is an undefined tag used by Eastman Kodak */
#define TIFFTAG_DCSHUESHIFTVALUES 65535 /* hue shift correction data */
/*
* The following are ``pseudo tags'' that can be
* used to control codec-specific functionality.
* These tags are not written to file. Note that
* these values start at 0xffff+1 so that they'll
* never collide with Aldus-assigned tags.
*
* If you want your private pseudo tags ``registered''
* (i.e. added to this file), send mail to sam@sgi.com
* with the appropriate C definitions to add.
*/
#define TIFFTAG_FAXMODE 65536 /* Group 3/4 format control */
#define FAXMODE_CLASSIC 0x0000 /* default, include RTC */
#define FAXMODE_NORTC 0x0001 /* no RTC at end of data */
#define FAXMODE_NOEOL 0x0002 /* no EOL code at end of row */
#define FAXMODE_BYTEALIGN 0x0004 /* byte align row */
#define FAXMODE_WORDALIGN 0x0008 /* word align row */
#define FAXMODE_CLASSF FAXMODE_NORTC /* TIFF Class F */
#define TIFFTAG_JPEGQUALITY 65537 /* Compression quality level */
/* Note: quality level is on the IJG 0-100 scale. Default value is 75 */
#define TIFFTAG_JPEGCOLORMODE 65538 /* Auto RGB<=>YCbCr convert? */
#define JPEGCOLORMODE_RAW 0x0000 /* no conversion (default) */
#define JPEGCOLORMODE_RGB 0x0001 /* do auto conversion */
#define TIFFTAG_JPEGTABLESMODE 65539 /* What to put in JPEGTables */
#define JPEGTABLESMODE_QUANT 0x0001 /* include quantization tbls */
#define JPEGTABLESMODE_HUFF 0x0002 /* include Huffman tbls */
/* Note: default is JPEGTABLESMODE_QUANT | JPEGTABLESMODE_HUFF */
#define TIFFTAG_FAXFILLFUNC 65540 /* G3/G4 fill function */
#define TIFFTAG_PIXARLOGDATAFMT 65549 /* PixarLogCodec I/O data sz */
#define PIXARLOGDATAFMT_8BIT 0 /* regular u_char samples */
#define PIXARLOGDATAFMT_8BITABGR 1 /* ABGR-order u_chars */
#define PIXARLOGDATAFMT_11BITLOG 2 /* 11-bit log-encoded (raw) */
#define PIXARLOGDATAFMT_12BITPICIO 3 /* as per PICIO (1.0==2048) */
#define PIXARLOGDATAFMT_16BIT 4 /* signed short samples */
#define PIXARLOGDATAFMT_FLOAT 5 /* IEEE float samples */
/* 65550-65556 are allocated to Oceana Matrix <dev@oceana.com> */
#define TIFFTAG_DCSIMAGERTYPE 65550 /* imager model & filter */
#define DCSIMAGERMODEL_M3 0 /* M3 chip (1280 x 1024) */
#define DCSIMAGERMODEL_M5 1 /* M5 chip (1536 x 1024) */
#define DCSIMAGERMODEL_M6 2 /* M6 chip (3072 x 2048) */
#define DCSIMAGERFILTER_IR 0 /* infrared filter */
#define DCSIMAGERFILTER_MONO 1 /* monochrome filter */
#define DCSIMAGERFILTER_CFA 2 /* color filter array */
#define DCSIMAGERFILTER_OTHER 3 /* other filter */
#define TIFFTAG_DCSINTERPMODE 65551 /* interpolation mode */
#define DCSINTERPMODE_NORMAL 0x0 /* whole image, default */
#define DCSINTERPMODE_PREVIEW 0x1 /* preview of image (384x256) */
#define TIFFTAG_DCSBALANCEARRAY 65552 /* color balance values */
#define TIFFTAG_DCSCORRECTMATRIX 65553 /* color correction values */
#define TIFFTAG_DCSGAMMA 65554 /* gamma value */
#define TIFFTAG_DCSTOESHOULDERPTS 65555 /* toe & shoulder points */
#define TIFFTAG_DCSCALIBRATIONFD 65556 /* calibration file desc */
/* Note: quality level is on the ZLIB 1-9 scale. Default value is -1 */
#define TIFFTAG_ZIPQUALITY 65557 /* compression quality level */
#define TIFFTAG_PIXARLOGQUALITY 65558 /* PixarLog uses same scale */
/* 65559 is allocated to Oceana Matrix <dev@oceana.com> */
#define TIFFTAG_DCSCLIPRECTANGLE 65559 /* area of image to acquire */
#define TIFFTAG_SGILOGDATAFMT 65560 /* SGILog user data format */
#define SGILOGDATAFMT_FLOAT 0 /* IEEE float samples */
#define SGILOGDATAFMT_16BIT 1 /* 16-bit samples */
#define SGILOGDATAFMT_RAW 2 /* uninterpreted data */
#define SGILOGDATAFMT_8BIT 3 /* 8-bit RGB monitor values */
#define TIFFTAG_SGILOGENCODE 65561 /* SGILog data encoding control*/
#define SGILOGENCODE_NODITHER 0 /* do not dither encoded values*/
#define SGILOGENCODE_RANDITHER 1 /* randomly dither encd values */
#endif /* _TIFF_ */

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -1,12 +0,0 @@
#define NEED_STRDUP
#define WINVER 0x0400
/*
We need to make sure some symbols required for correct use of
Win32 SDK headers (and that some of these headers are included
to begin with). The best way is to simply include one of the
ANSI headers.
*/
#include <stdlib.h>

View File

@@ -1,220 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1990-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _COMPAT_
#define _COMPAT_
/*
* This file contains a hodgepodge of definitions and
* declarations that are needed to provide compatibility
* between the native system and the base implementation
* that the library assumes.
*
* NB: This file is a mess.
*/
/*
* Setup basic type definitions and function declaratations.
*/
/*
* Simplify Acorn RISC OS identifier (to avoid confusion with Acorn RISC iX
* and with defunct Unix Risc OS)
* No need to specify __arm - hey, Acorn might port the OS, no problem here!
*/
#ifdef __acornriscos
#undef __acornriscos
#endif
#if defined(__acorn) && defined(__riscos)
#define __acornriscos
#endif
#if defined(__MWERKS__) || defined(THINK_C)
#include <unix.h>
#include <math.h>
#endif
#include <stdio.h>
#if defined(__PPCC__) || defined(__SC__) || defined(__MRC__)
#include <types.h>
#elif !defined(__MWERKS__) && !defined(THINK_C) && !defined(__acornriscos) && !defined(applec)
#include <sys/types.h>
#endif
#if defined(VMS)
#include <file.h>
#include <unixio.h>
#elif !defined(__acornriscos)
#include <fcntl.h>
#endif
/*
* This maze of checks controls defines or not the
* target system has BSD-style typdedefs declared in
* an include file and/or whether or not to include
* <unistd.h> to get the SEEK_* definitions. Some
* additional includes are also done to pull in the
* appropriate definitions we're looking for.
*/
#if defined(__MWERKS__) || defined(THINK_C) || defined(__PPCC__) || defined(__SC__) || defined(__MRC__)
#include <stdlib.h>
#define BSDTYPES
#define HAVE_UNISTD_H 0
#elif (defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows) || defined(_WIN32)) && !defined(unix)
#define BSDTYPES
#elif defined(OS2_16) || defined(OS2_32)
#define BSDTYPES
#elif defined(__acornriscos)
#include <stdlib.h>
#define BSDTYPES
#define HAVE_UNISTD_H 0
#elif defined(VMS)
#define HAVE_UNISTD_H 0
#else
#define HAVE_UNISTD_H 1
#endif
/*
* The library uses the ANSI C/POSIX SEEK_*
* definitions that should be defined in unistd.h
* (except on system where they are in stdio.h and
* there is no unistd.h).
*/
#if !defined(SEEK_SET) && HAVE_UNISTD_H
#include <unistd.h>
#endif
/*
* The library uses memset, memcpy, and memcmp.
* ANSI C and System V define these in string.h.
*/
#include <string.h>
/*
* The BSD typedefs are used throughout the library.
* If your system doesn't have them in <sys/types.h>,
* then define BSDTYPES in your Makefile.
*/
#if defined(BSDTYPES)
# ifndef _BSDTYPES_DEFINED
# ifndef __u_char_defined
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
# define __u_char_defined
# endif /* __u_char_defined */
# define _BSDTYPES_DEFINED
# endif /* _BSDTYPES_DEFINED */
#endif /* BSDTYPES */
/*
* dblparam_t is the type that a double precision
* floating point value will have on the parameter
* stack (when coerced by the compiler).
*/
/* Note: on MacPowerPC "extended" is undefined. So only use it for 68K-Macs */
#if defined(__SC__) || defined(THINK_C)
typedef extended dblparam_t;
#else
typedef double dblparam_t;
#endif
/*
* If your compiler supports inline functions, then
* set INLINE appropriately to get the known hotspots
* in the library expanded inline.
*/
#if defined(__GNUC__)
#if defined(__STRICT_ANSI__)
#define INLINE __inline__
#else
#define INLINE inline
#endif
#else /* !__GNUC__ */
#define INLINE
#endif
/*
* GLOBALDATA is a macro that is used to define global variables
* private to the library. We use this indirection to hide
* brain-damage in VAXC (and GCC) under VAX/VMS. In these
* environments the macro places the variable in a non-shareable
* program section, which ought to be done by default (sigh!)
*
* Apparently DEC are aware of the problem as this behaviour is the
* default under VMS on AXP.
*
* The GNU C variant is untested.
*/
#if defined(VAX) && defined(VMS)
#if defined(VAXC)
#define GLOBALDATA(TYPE,NAME) extern noshare TYPE NAME
#endif
#if defined(__GNUC__)
#define GLOBALDATA(TYPE,NAME) extern TYPE NAME \
asm("_$$PsectAttributes_NOSHR$$" #NAME)
#endif
#else /* !VAX/VMS */
#define GLOBALDATA(TYPE,NAME) extern TYPE NAME
#endif
#if defined(__acornriscos)
/*
* osfcn.h is part of C++Lib on Acorn C/C++, and as such can't be used
* on C alone. For that reason, the relevant functions are
* implemented in tif_acorn.c, and the elements from the header
* file are included here.
*/
#if defined(__cplusplus)
#include <osfcn.h>
#else
#define O_RDONLY 0
#define O_WRONLY 1
#define O_RDWR 2
#define O_APPEND 8
#define O_CREAT 0x200
#define O_TRUNC 0x400
typedef long off_t;
extern int open(const char *name, int flags, int mode);
extern int close(int fd);
extern int write(int fd, const char *buf, int nbytes);
extern int read(int fd, char *buf, int nbytes);
extern off_t lseek(int fd, off_t offset, int whence);
extern int creat(const char *path, int mode);
#endif /* __cplusplus */
#endif /* __acornriscos */
/* Bit and byte order, the default is MSB to LSB */
#ifdef VMS
#undef HOST_FILLORDER
#undef HOST_BIGENDIAN
#define HOST_FILLORDER FILLORDER_LSB2MSB
#define HOST_BIGENDIAN 0
#endif
#endif /* _COMPAT_ */

View File

@@ -1,153 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _TIFFCONF_
#define _TIFFCONF_
/*
* Library Configuration Definitions.
*
* This file defines the default configuration for the library.
* If the target system does not have make or a way to specify
* #defines on the command line, this file can be edited to
* configure the library. Otherwise, one can override portability
* and configuration-related definitions from a Makefile or command
* line by defining COMPRESSION_SUPPORT (see below).
*/
/*
* General portability-related defines:
*
* HAVE_IEEEFP define as 0 or 1 according to the floating point
* format suported by the machine
* BSDTYPES define this if your system does NOT define the
* usual 4BSD typedefs u_int et. al.
* HAVE_MMAP enable support for memory mapping read-only files;
* this is typically deduced by the configure script
* HOST_FILLORDER native cpu bit order: one of FILLORDER_MSB2LSB
* or FILLODER_LSB2MSB; this is typically set by the
* configure script
* HOST_BIGENDIAN native cpu byte order: 1 if big-endian (Motorola)
* or 0 if little-endian (Intel); this may be used
* in codecs to optimize code
* USE_64BIT_API set to 1 if tif_unix.c should use lseek64(),
* fstat64() and stat64 allowing 2-4GB files.
*/
#ifndef HAVE_IEEEFP
#define HAVE_IEEEFP 1
#endif
#ifndef HOST_FILLORDER
#define HOST_FILLORDER FILLORDER_MSB2LSB
#endif
#ifndef HOST_BIGENDIAN
#define HOST_BIGENDIAN 1
#endif
#ifndef USE_64BIT_API
# define USE_64BIT_API 0
#endif
#ifndef COMPRESSION_SUPPORT
/*
* Compression support defines:
*
* CCITT_SUPPORT enable support for CCITT Group 3 & 4 algorithms
* PACKBITS_SUPPORT enable support for Macintosh PackBits algorithm
* LZW_SUPPORT enable support for LZW algorithm
* THUNDER_SUPPORT enable support for ThunderScan 4-bit RLE algorithm
* NEXT_SUPPORT enable support for NeXT 2-bit RLE algorithm
* OJPEG_SUPPORT enable support for 6.0-style JPEG DCT algorithms
* (requires IJG software)
* JPEG_SUPPORT enable support for post-6.0-style JPEG DCT algorithms
* (requires freely available IJG software, see tif_jpeg.c)
* ZIP_SUPPORT enable support for Deflate algorithm
* (requires freely available zlib software, see tif_zip.c)
* PIXARLOG_SUPPORT enable support for Pixar log-format algorithm
* LOGLUV_SUPPORT enable support for LogLuv high dynamic range encoding
*/
#define CCITT_SUPPORT
#define PACKBITS_SUPPORT
#define LZW_SUPPORT
#define THUNDER_SUPPORT
#define NEXT_SUPPORT
#define LOGLUV_SUPPORT
#endif /* COMPRESSION_SUPPORT */
/*
* If JPEG compression is enabled then we must also include
* support for the colorimetry and YCbCr-related tags.
*/
#ifdef JPEG_SUPPORT
#ifndef YCBCR_SUPPORT
#define YCBCR_SUPPORT
#endif
#ifndef COLORIMETRY_SUPPORT
#define COLORIMETRY_SUPPORT
#endif
#endif /* JPEG_SUPPORT */
/*
* ``Orthogonal Features''
*
* STRIPCHOP_DEFAULT default handling of strip chopping support (whether
* or not to convert single-strip uncompressed images
* to mutiple strips of ~8Kb--to reduce memory use)
* SUBIFD_SUPPORT enable support for SubIFD tag (thumbnails and such)
* DEFAULT_EXTRASAMPLE_AS_ALPHA
* The RGBA interface will treat a fourth sample with
* no EXTRASAMPLE_ value as being ASSOCALPHA. Many
* packages produce RGBA files but don't mark the alpha
* properly.
* CHECK_JPEG_YCBCR_SUBSAMPLING
* Enable picking up YCbCr subsampling info from the
* JPEG data stream to support files lacking the tag.
* See Bug 168 in Bugzilla, and JPEGFixupTestSubsampling()
* for details.
*/
#ifndef STRIPCHOP_DEFAULT
#define STRIPCHOP_DEFAULT TIFF_STRIPCHOP /* default is to enable */
#endif
#ifndef SUBIFD_SUPPORT
#define SUBIFD_SUPPORT 1 /* enable SubIFD tag (330) support */
#endif
#ifndef DEFAULT_EXTRASAMPLE_AS_ALPHA
#define DEFAULT_EXTRASAMPLE_AS_ALPHA 1
#endif
#ifndef CHECK_JPEG_YCBCR_SUBSAMPLING
#define CHECK_JPEG_YCBCR_SUBSAMPLING 1
#endif
/*
* Feature support definitions.
* XXX: These macros are obsoleted. Don't use them in your apps!
* Macros stays here for backward compatibility and should be always defined.
*/
#define COLORIMETRY_SUPPORT
#define YCBCR_SUPPORT
#define CMYK_SUPPORT
#define ICC_SUPPORT
#define PHOTOSHOP_SUPPORT
#define IPTC_SUPPORT
#endif /* _TIFFCONF_ */

View File

@@ -1,477 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _TIFFIO_
#define _TIFFIO_
/*
* TIFF I/O Library Definitions.
*/
#include "tiff.h"
#include "tiffvers.h"
/*
* TIFF is defined as an incomplete type to hide the
* library's internal data structures from clients.
*/
typedef struct tiff TIFF;
/*
* The following typedefs define the intrinsic size of
* data types used in the *exported* interfaces. These
* definitions depend on the proper definition of types
* in tiff.h. Note also that the varargs interface used
* to pass tag types and values uses the types defined in
* tiff.h directly.
*
* NB: ttag_t is unsigned int and not unsigned short because
* ANSI C requires that the type before the ellipsis be a
* promoted type (i.e. one of int, unsigned int, pointer,
* or double) and because we defined pseudo-tags that are
* outside the range of legal Aldus-assigned tags.
* NB: tsize_t is int32 and not uint32 because some functions
* return -1.
* NB: toff_t is not off_t for many reasons; TIFFs max out at
* 32-bit file offsets being the most important, and to ensure
* that it is unsigned, rather than signed.
*/
typedef uint32 ttag_t; /* directory tag */
typedef uint16 tdir_t; /* directory index */
typedef uint16 tsample_t; /* sample number */
typedef uint32 tstrip_t; /* strip number */
typedef uint32 ttile_t; /* tile number */
typedef int32 tsize_t; /* i/o size in bytes */
typedef void* tdata_t; /* image data ref */
typedef uint32 toff_t; /* file offset */
#if !defined(__WIN32__) && (defined(_WIN32) || defined(WIN32))
#define __WIN32__
#endif
/*
* On windows you should define USE_WIN32_FILEIO if you are using tif_win32.c
* or AVOID_WIN32_FILEIO if you are using something else (like tif_unix.c).
*
* By default tif_win32.c is assumed on windows if not using the cygwin
* environment.
*/
#if defined(_WINDOWS) || defined(__WIN32__) || defined(_Windows)
# if !defined(__CYGWIN) && !defined(AVOID_WIN32_FILEIO) && !defined(USE_WIN32_FILIO)
# define USE_WIN32_FILEIO
# endif
#endif
#if defined(USE_WIN32_FILEIO)
#include <windows.h>
#ifdef __WIN32__
DECLARE_HANDLE(thandle_t); /* Win32 file handle */
#else
typedef HFILE thandle_t; /* client data handle */
#endif
#else
typedef void* thandle_t; /* client data handle */
#endif
#ifndef NULL
#define NULL 0
#endif
/*
* Flags to pass to TIFFPrintDirectory to control
* printing of data structures that are potentially
* very large. Bit-or these flags to enable printing
* multiple items.
*/
#define TIFFPRINT_NONE 0x0 /* no extra info */
#define TIFFPRINT_STRIPS 0x1 /* strips/tiles info */
#define TIFFPRINT_CURVES 0x2 /* color/gray response curves */
#define TIFFPRINT_COLORMAP 0x4 /* colormap */
#define TIFFPRINT_JPEGQTABLES 0x100 /* JPEG Q matrices */
#define TIFFPRINT_JPEGACTABLES 0x200 /* JPEG AC tables */
#define TIFFPRINT_JPEGDCTABLES 0x200 /* JPEG DC tables */
/*
* Colour conversion stuff
*/
/* reference white */
#define D65_X0 (95.0470F)
#define D65_Y0 (100.0F)
#define D65_Z0 (108.8827F)
#define D50_X0 (96.4250F)
#define D50_Y0 (100.0F)
#define D50_Z0 (82.4680F)
/* Structure for holding information about a display device. */
typedef unsigned char TIFFRGBValue; /* 8-bit samples */
typedef struct {
float d_mat[3][3]; /* XYZ -> luminance matrix */
float d_YCR; /* Light o/p for reference white */
float d_YCG;
float d_YCB;
uint32 d_Vrwr; /* Pixel values for ref. white */
uint32 d_Vrwg;
uint32 d_Vrwb;
float d_Y0R; /* Residual light for black pixel */
float d_Y0G;
float d_Y0B;
float d_gammaR; /* Gamma values for the three guns */
float d_gammaG;
float d_gammaB;
} TIFFDisplay;
typedef struct { /* YCbCr->RGB support */
TIFFRGBValue* clamptab; /* range clamping table */
int* Cr_r_tab;
int* Cb_b_tab;
int32* Cr_g_tab;
int32* Cb_g_tab;
int32* Y_tab;
} TIFFYCbCrToRGB;
typedef struct { /* CIE Lab 1976->RGB support */
int range; /* Size of conversion table */
#define CIELABTORGB_TABLE_RANGE 1500
float rstep, gstep, bstep;
float X0, Y0, Z0; /* Reference white point */
TIFFDisplay display;
float Yr2r[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yr to r */
float Yg2g[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yg to g */
float Yb2b[CIELABTORGB_TABLE_RANGE + 1]; /* Conversion of Yb to b */
} TIFFCIELabToRGB;
extern int TIFFCIELabToRGBInit(TIFFCIELabToRGB*, TIFFDisplay *, float*);
extern void TIFFCIELabToXYZ(TIFFCIELabToRGB *, uint32, int32, int32,
float *, float *, float *);
extern void TIFFXYZToRGB(TIFFCIELabToRGB *, float, float, float,
uint32 *, uint32 *, uint32 *);
extern int TIFFYCbCrToRGBInit(TIFFYCbCrToRGB*, float*, float*);
extern void TIFFYCbCrtoRGB(TIFFYCbCrToRGB *, uint32, int32, int32,
uint32 *, uint32 *, uint32 *);
/*
* RGBA-style image support.
*/
typedef struct _TIFFRGBAImage TIFFRGBAImage;
/*
* The image reading and conversion routines invoke
* ``put routines'' to copy/image/whatever tiles of
* raw image data. A default set of routines are
* provided to convert/copy raw image data to 8-bit
* packed ABGR format rasters. Applications can supply
* alternate routines that unpack the data into a
* different format or, for example, unpack the data
* and draw the unpacked raster on the display.
*/
typedef void (*tileContigRoutine)
(TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32,
unsigned char*);
typedef void (*tileSeparateRoutine)
(TIFFRGBAImage*, uint32*, uint32, uint32, uint32, uint32, int32, int32,
unsigned char*, unsigned char*, unsigned char*, unsigned char*);
/*
* RGBA-reader state.
*/
struct _TIFFRGBAImage {
TIFF* tif; /* image handle */
int stoponerr; /* stop on read error */
int isContig; /* data is packed/separate */
int alpha; /* type of alpha data present */
uint32 width; /* image width */
uint32 height; /* image height */
uint16 bitspersample; /* image bits/sample */
uint16 samplesperpixel; /* image samples/pixel */
uint16 orientation; /* image orientation */
uint16 req_orientation; /* requested orientation */
uint16 photometric; /* image photometric interp */
uint16* redcmap; /* colormap pallete */
uint16* greencmap;
uint16* bluecmap;
/* get image data routine */
int (*get)(TIFFRGBAImage*, uint32*, uint32, uint32);
union {
void (*any)(TIFFRGBAImage*);
tileContigRoutine contig;
tileSeparateRoutine separate;
} put; /* put decoded strip/tile */
TIFFRGBValue* Map; /* sample mapping array */
uint32** BWmap; /* black&white map */
uint32** PALmap; /* palette image map */
TIFFYCbCrToRGB* ycbcr; /* YCbCr conversion state */
TIFFCIELabToRGB* cielab; /* CIE L*a*b conversion state */
int row_offset;
int col_offset;
};
/*
* Macros for extracting components from the
* packed ABGR form returned by TIFFReadRGBAImage.
*/
#define TIFFGetR(abgr) ((abgr) & 0xff)
#define TIFFGetG(abgr) (((abgr) >> 8) & 0xff)
#define TIFFGetB(abgr) (((abgr) >> 16) & 0xff)
#define TIFFGetA(abgr) (((abgr) >> 24) & 0xff)
/*
* A CODEC is a software package that implements decoding,
* encoding, or decoding+encoding of a compression algorithm.
* The library provides a collection of builtin codecs.
* More codecs may be registered through calls to the library
* and/or the builtin implementations may be overridden.
*/
typedef int (*TIFFInitMethod)(TIFF*, int);
typedef struct {
char* name;
uint16 scheme;
TIFFInitMethod init;
} TIFFCodec;
#include <stdio.h>
#include <stdarg.h>
/* share internal LogLuv conversion routines? */
#ifndef LOGLUV_PUBLIC
#define LOGLUV_PUBLIC 1
#endif
#if defined(__cplusplus)
extern "C" {
#endif
typedef void (*TIFFErrorHandler)(const char*, const char*, va_list);
typedef tsize_t (*TIFFReadWriteProc)(thandle_t, tdata_t, tsize_t);
typedef toff_t (*TIFFSeekProc)(thandle_t, toff_t, int);
typedef int (*TIFFCloseProc)(thandle_t);
typedef toff_t (*TIFFSizeProc)(thandle_t);
typedef int (*TIFFMapFileProc)(thandle_t, tdata_t*, toff_t*);
typedef void (*TIFFUnmapFileProc)(thandle_t, tdata_t, toff_t);
typedef void (*TIFFExtendProc)(TIFF*);
extern const char* TIFFGetVersion(void);
extern const TIFFCodec* TIFFFindCODEC(uint16);
extern TIFFCodec* TIFFRegisterCODEC(uint16, const char*, TIFFInitMethod);
extern void TIFFUnRegisterCODEC(TIFFCodec*);
extern int TIFFIsCODECConfigured(uint16);
extern tdata_t _TIFFmalloc(tsize_t);
extern tdata_t _TIFFrealloc(tdata_t, tsize_t);
extern void _TIFFmemset(tdata_t, int, tsize_t);
extern void _TIFFmemcpy(tdata_t, const tdata_t, tsize_t);
extern int _TIFFmemcmp(const tdata_t, const tdata_t, tsize_t);
extern void _TIFFfree(tdata_t);
extern void TIFFClose(TIFF*);
extern int TIFFFlush(TIFF*);
extern int TIFFFlushData(TIFF*);
extern int TIFFGetField(TIFF*, ttag_t, ...);
extern int TIFFVGetField(TIFF*, ttag_t, va_list);
extern int TIFFGetFieldDefaulted(TIFF*, ttag_t, ...);
extern int TIFFVGetFieldDefaulted(TIFF*, ttag_t, va_list);
extern int TIFFReadDirectory(TIFF*);
extern tsize_t TIFFScanlineSize(TIFF*);
extern tsize_t TIFFRasterScanlineSize(TIFF*);
extern tsize_t TIFFStripSize(TIFF*);
extern tsize_t TIFFRawStripSize(TIFF*, tstrip_t);
extern tsize_t TIFFVStripSize(TIFF*, uint32);
extern tsize_t TIFFTileRowSize(TIFF*);
extern tsize_t TIFFTileSize(TIFF*);
extern tsize_t TIFFVTileSize(TIFF*, uint32);
extern uint32 TIFFDefaultStripSize(TIFF*, uint32);
extern void TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
extern int TIFFFileno(TIFF*);
extern int TIFFGetMode(TIFF*);
extern int TIFFIsTiled(TIFF*);
extern int TIFFIsByteSwapped(TIFF*);
extern int TIFFIsUpSampled(TIFF*);
extern int TIFFIsMSB2LSB(TIFF*);
extern uint32 TIFFCurrentRow(TIFF*);
extern tdir_t TIFFCurrentDirectory(TIFF*);
extern tdir_t TIFFNumberOfDirectories(TIFF*);
extern uint32 TIFFCurrentDirOffset(TIFF*);
extern tstrip_t TIFFCurrentStrip(TIFF*);
extern ttile_t TIFFCurrentTile(TIFF*);
extern int TIFFReadBufferSetup(TIFF*, tdata_t, tsize_t);
extern int TIFFWriteBufferSetup(TIFF*, tdata_t, tsize_t);
extern int TIFFSetupStrips(TIFF *);
extern int TIFFWriteCheck(TIFF*, int, const char *);
extern int TIFFCreateDirectory(TIFF*);
extern int TIFFLastDirectory(TIFF*);
extern int TIFFSetDirectory(TIFF*, tdir_t);
extern int TIFFSetSubDirectory(TIFF*, uint32);
extern int TIFFUnlinkDirectory(TIFF*, tdir_t);
extern int TIFFSetField(TIFF*, ttag_t, ...);
extern int TIFFVSetField(TIFF*, ttag_t, va_list);
extern int TIFFWriteDirectory(TIFF *);
extern int TIFFCheckpointDirectory(TIFF *);
extern int TIFFRewriteDirectory(TIFF *);
extern int TIFFReassignTagToIgnore(enum TIFFIgnoreSense, int);
#if defined(c_plusplus) || defined(__cplusplus)
extern void TIFFPrintDirectory(TIFF*, FILE*, long = 0);
extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t = 0);
extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int = 0);
extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*,
int = ORIENTATION_BOTLEFT, int = 0);
#else
extern void TIFFPrintDirectory(TIFF*, FILE*, long);
extern int TIFFReadScanline(TIFF*, tdata_t, uint32, tsample_t);
extern int TIFFWriteScanline(TIFF*, tdata_t, uint32, tsample_t);
extern int TIFFReadRGBAImage(TIFF*, uint32, uint32, uint32*, int);
extern int TIFFReadRGBAImageOriented(TIFF*, uint32, uint32, uint32*, int, int);
#endif
extern int TIFFReadRGBAStrip(TIFF*, tstrip_t, uint32 * );
extern int TIFFReadRGBATile(TIFF*, uint32, uint32, uint32 * );
extern int TIFFRGBAImageOK(TIFF*, char [1024]);
extern int TIFFRGBAImageBegin(TIFFRGBAImage*, TIFF*, int, char [1024]);
extern int TIFFRGBAImageGet(TIFFRGBAImage*, uint32*, uint32, uint32);
extern void TIFFRGBAImageEnd(TIFFRGBAImage*);
extern TIFF* TIFFOpen(const char*, const char*);
extern TIFF* TIFFFdOpen(int, const char*, const char*);
extern TIFF* TIFFClientOpen(const char*, const char*,
thandle_t,
TIFFReadWriteProc, TIFFReadWriteProc,
TIFFSeekProc, TIFFCloseProc,
TIFFSizeProc,
TIFFMapFileProc, TIFFUnmapFileProc);
extern const char* TIFFFileName(TIFF*);
extern void TIFFError(const char*, const char*, ...);
extern void TIFFWarning(const char*, const char*, ...);
extern TIFFErrorHandler TIFFSetErrorHandler(TIFFErrorHandler);
extern TIFFErrorHandler TIFFSetWarningHandler(TIFFErrorHandler);
extern TIFFExtendProc TIFFSetTagExtender(TIFFExtendProc);
extern ttile_t TIFFComputeTile(TIFF*, uint32, uint32, uint32, tsample_t);
extern int TIFFCheckTile(TIFF*, uint32, uint32, uint32, tsample_t);
extern ttile_t TIFFNumberOfTiles(TIFF*);
extern tsize_t TIFFReadTile(TIFF*,
tdata_t, uint32, uint32, uint32, tsample_t);
extern tsize_t TIFFWriteTile(TIFF*,
tdata_t, uint32, uint32, uint32, tsample_t);
extern tstrip_t TIFFComputeStrip(TIFF*, uint32, tsample_t);
extern tstrip_t TIFFNumberOfStrips(TIFF*);
extern tsize_t TIFFReadEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
extern tsize_t TIFFReadRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
extern tsize_t TIFFReadEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
extern tsize_t TIFFReadRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
extern tsize_t TIFFWriteEncodedStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
extern tsize_t TIFFWriteRawStrip(TIFF*, tstrip_t, tdata_t, tsize_t);
extern tsize_t TIFFWriteEncodedTile(TIFF*, ttile_t, tdata_t, tsize_t);
extern tsize_t TIFFWriteRawTile(TIFF*, ttile_t, tdata_t, tsize_t);
extern int TIFFDataWidth(TIFFDataType); /* table of tag datatype widths */
extern void TIFFSetWriteOffset(TIFF*, toff_t);
extern void TIFFSwabShort(uint16*);
extern void TIFFSwabLong(uint32*);
extern void TIFFSwabDouble(double*);
extern void TIFFSwabArrayOfShort(uint16*, unsigned long);
extern void TIFFSwabArrayOfLong(uint32*, unsigned long);
extern void TIFFSwabArrayOfDouble(double*, unsigned long);
extern void TIFFReverseBits(unsigned char *, unsigned long);
extern const unsigned char* TIFFGetBitRevTable(int);
#ifdef LOGLUV_PUBLIC
#define U_NEU 0.210526316
#define V_NEU 0.473684211
#define UVSCALE 410.
extern double LogL16toY(int);
extern double LogL10toY(int);
extern void XYZtoRGB24(float*, uint8*);
extern int uv_decode(double*, double*, int);
extern void LogLuv24toXYZ(uint32, float*);
extern void LogLuv32toXYZ(uint32, float*);
#if defined(c_plusplus) || defined(__cplusplus)
extern int LogL16fromY(double, int = SGILOGENCODE_NODITHER);
extern int LogL10fromY(double, int = SGILOGENCODE_NODITHER);
extern int uv_encode(double, double, int = SGILOGENCODE_NODITHER);
extern uint32 LogLuv24fromXYZ(float*, int = SGILOGENCODE_NODITHER);
extern uint32 LogLuv32fromXYZ(float*, int = SGILOGENCODE_NODITHER);
#else
extern int LogL16fromY(double, int);
extern int LogL10fromY(double, int);
extern int uv_encode(double, double, int);
extern uint32 LogLuv24fromXYZ(float*, int);
extern uint32 LogLuv32fromXYZ(float*, int);
#endif
#endif /* LOGLUV_PUBLIC */
/*
** New stuff going public in 3.6.x.
*/
extern int TIFFGetTagListCount( TIFF * );
extern ttag_t TIFFGetTagListEntry( TIFF *, int tag_index );
#define TIFF_ANY TIFF_NOTYPE /* for field descriptor searching */
#define TIFF_VARIABLE -1 /* marker for variable length tags */
#define TIFF_SPP -2 /* marker for SamplesPerPixel tags */
#define TIFF_VARIABLE2 -3 /* marker for uint32 var-length tags */
#define FIELD_CUSTOM 65
typedef struct {
ttag_t field_tag; /* field's tag */
short field_readcount; /* read count/TIFF_VARIABLE/TIFF_SPP */
short field_writecount; /* write count/TIFF_VARIABLE */
TIFFDataType field_type; /* type of associated data */
unsigned short field_bit; /* bit in fieldsset bit vector */
unsigned char field_oktochange; /* if true, can change while writing */
unsigned char field_passcount; /* if true, pass dir count on set */
char *field_name; /* ASCII name */
} TIFFFieldInfo;
typedef struct _TIFFTagValue {
const TIFFFieldInfo *info;
int count;
void *value;
} TIFFTagValue;
extern void TIFFMergeFieldInfo(TIFF*, const TIFFFieldInfo[], int);
extern const TIFFFieldInfo* TIFFFindFieldInfo(TIFF*, ttag_t, TIFFDataType);
extern const TIFFFieldInfo* TIFFFieldWithTag(TIFF*, ttag_t);
typedef int (*TIFFVSetMethod)(TIFF*, ttag_t, va_list);
typedef int (*TIFFVGetMethod)(TIFF*, ttag_t, va_list);
typedef void (*TIFFPrintMethod)(TIFF*, FILE*, long);
typedef struct {
TIFFVSetMethod vsetfield; /* tag set routine */
TIFFVGetMethod vgetfield; /* tag get routine */
TIFFPrintMethod printdir; /* directory print routine */
} TIFFTagMethods;
extern TIFFTagMethods *TIFFAccessTagMethods( TIFF * );
extern void *TIFFGetClientInfo( TIFF *, const char * );
extern void TIFFSetClientInfo( TIFF *, void *, const char * );
#if defined(__cplusplus)
}
#endif
#endif /* _TIFFIO_ */

View File

@@ -1,289 +0,0 @@
/* $Header$ */
/*
* Copyright (c) 1988-1997 Sam Leffler
* Copyright (c) 1991-1997 Silicon Graphics, Inc.
*
* Permission to use, copy, modify, distribute, and sell this software and
* its documentation for any purpose is hereby granted without fee, provided
* that (i) the above copyright notices and this permission notice appear in
* all copies of the software and related documentation, and (ii) the names of
* Sam Leffler and Silicon Graphics may not be used in any advertising or
* publicity relating to the software without the specific, prior written
* permission of Sam Leffler and Silicon Graphics.
*
* THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
* EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
* WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
*
* IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
* ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
* OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
* WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
* LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
* OF THIS SOFTWARE.
*/
#ifndef _TIFFIOP_
#define _TIFFIOP_
/*
* ``Library-private'' definitions.
*/
/*
* UNIX systems should run the configure script to generate
* a port.h file that reflects the system capabilities.
* Doing this obviates all the dreck done in tiffcomp.h.
*/
#if defined(unix) || defined(__unix)
#include "port.h"
#include "tiffconf.h"
#else
#include "tiffconf.h"
#include "tiffcomp.h"
#endif
#include "tiffio.h"
#include "tif_dir.h"
#ifndef TRUE
#define TRUE 1
#define FALSE 0
#endif
typedef struct client_info {
struct client_info *next;
void *data;
char *name;
} TIFFClientInfoLink;
/*
* Typedefs for ``method pointers'' used internally.
*/
typedef unsigned char tidataval_t; /* internal image data value type */
typedef tidataval_t* tidata_t; /* reference to internal image data */
typedef void (*TIFFVoidMethod)(TIFF*);
typedef int (*TIFFBoolMethod)(TIFF*);
typedef int (*TIFFPreMethod)(TIFF*, tsample_t);
typedef int (*TIFFCodeMethod)(TIFF*, tidata_t, tsize_t, tsample_t);
typedef int (*TIFFSeekMethod)(TIFF*, uint32);
typedef void (*TIFFPostMethod)(TIFF*, tidata_t, tsize_t);
typedef uint32 (*TIFFStripMethod)(TIFF*, uint32);
typedef void (*TIFFTileMethod)(TIFF*, uint32*, uint32*);
struct tiff {
char* tif_name; /* name of open file */
int tif_fd; /* open file descriptor */
int tif_mode; /* open mode (O_*) */
uint32 tif_flags;
#define TIFF_FILLORDER 0x0003 /* natural bit fill order for machine */
#define TIFF_DIRTYHEADER 0x0004 /* header must be written on close */
#define TIFF_DIRTYDIRECT 0x0008 /* current directory must be written */
#define TIFF_BUFFERSETUP 0x0010 /* data buffers setup */
#define TIFF_CODERSETUP 0x0020 /* encoder/decoder setup done */
#define TIFF_BEENWRITING 0x0040 /* written 1+ scanlines to file */
#define TIFF_SWAB 0x0080 /* byte swap file information */
#define TIFF_NOBITREV 0x0100 /* inhibit bit reversal logic */
#define TIFF_MYBUFFER 0x0200 /* my raw data buffer; free on close */
#define TIFF_ISTILED 0x0400 /* file is tile, not strip- based */
#define TIFF_MAPPED 0x0800 /* file is mapped into memory */
#define TIFF_POSTENCODE 0x1000 /* need call to postencode routine */
#define TIFF_INSUBIFD 0x2000 /* currently writing a subifd */
#define TIFF_UPSAMPLED 0x4000 /* library is doing data up-sampling */
#define TIFF_STRIPCHOP 0x8000 /* enable strip chopping support */
toff_t tif_diroff; /* file offset of current directory */
toff_t tif_nextdiroff; /* file offset of following directory */
toff_t* tif_dirlist; /* list of offsets to already seen */
/* directories to prevent IFD looping */
uint16 tif_dirnumber; /* number of already seen directories */
TIFFDirectory tif_dir; /* internal rep of current directory */
TIFFHeader tif_header; /* file's header block */
const int* tif_typeshift; /* data type shift counts */
const long* tif_typemask; /* data type masks */
uint32 tif_row; /* current scanline */
tdir_t tif_curdir; /* current directory (index) */
tstrip_t tif_curstrip; /* current strip for read/write */
toff_t tif_curoff; /* current offset for read/write */
toff_t tif_dataoff; /* current offset for writing dir */
#if SUBIFD_SUPPORT
uint16 tif_nsubifd; /* remaining subifds to write */
toff_t tif_subifdoff; /* offset for patching SubIFD link */
#endif
/* tiling support */
uint32 tif_col; /* current column (offset by row too) */
ttile_t tif_curtile; /* current tile for read/write */
tsize_t tif_tilesize; /* # of bytes in a tile */
/* compression scheme hooks */
int tif_decodestatus;
TIFFBoolMethod tif_setupdecode;/* called once before predecode */
TIFFPreMethod tif_predecode; /* pre- row/strip/tile decoding */
TIFFBoolMethod tif_setupencode;/* called once before preencode */
int tif_encodestatus;
TIFFPreMethod tif_preencode; /* pre- row/strip/tile encoding */
TIFFBoolMethod tif_postencode; /* post- row/strip/tile encoding */
TIFFCodeMethod tif_decoderow; /* scanline decoding routine */
TIFFCodeMethod tif_encoderow; /* scanline encoding routine */
TIFFCodeMethod tif_decodestrip;/* strip decoding routine */
TIFFCodeMethod tif_encodestrip;/* strip encoding routine */
TIFFCodeMethod tif_decodetile; /* tile decoding routine */
TIFFCodeMethod tif_encodetile; /* tile encoding routine */
TIFFVoidMethod tif_close; /* cleanup-on-close routine */
TIFFSeekMethod tif_seek; /* position within a strip routine */
TIFFVoidMethod tif_cleanup; /* cleanup state routine */
TIFFStripMethod tif_defstripsize;/* calculate/constrain strip size */
TIFFTileMethod tif_deftilesize;/* calculate/constrain tile size */
tidata_t tif_data; /* compression scheme private data */
/* input/output buffering */
tsize_t tif_scanlinesize;/* # of bytes in a scanline */
tsize_t tif_scanlineskew;/* scanline skew for reading strips */
tidata_t tif_rawdata; /* raw data buffer */
tsize_t tif_rawdatasize;/* # of bytes in raw data buffer */
tidata_t tif_rawcp; /* current spot in raw buffer */
tsize_t tif_rawcc; /* bytes unread from raw buffer */
/* memory-mapped file support */
tidata_t tif_base; /* base of mapped file */
toff_t tif_size; /* size of mapped file region (bytes) */
TIFFMapFileProc tif_mapproc; /* map file method */
TIFFUnmapFileProc tif_unmapproc;/* unmap file method */
/* input/output callback methods */
thandle_t tif_clientdata; /* callback parameter */
TIFFReadWriteProc tif_readproc; /* read method */
TIFFReadWriteProc tif_writeproc;/* write method */
TIFFSeekProc tif_seekproc; /* lseek method */
TIFFCloseProc tif_closeproc; /* close method */
TIFFSizeProc tif_sizeproc; /* filesize method */
/* post-decoding support */
TIFFPostMethod tif_postdecode; /* post decoding routine */
/* tag support */
TIFFFieldInfo** tif_fieldinfo; /* sorted table of registered tags */
int tif_nfields; /* # entries in registered tag table */
TIFFTagMethods tif_tagmethods; /* tag get/set/print routines */
TIFFClientInfoLink *tif_clientinfo; /* extra client information. */
};
#define isPseudoTag(t) (t > 0xffff) /* is tag value normal or pseudo */
#define isTiled(tif) (((tif)->tif_flags & TIFF_ISTILED) != 0)
#define isMapped(tif) (((tif)->tif_flags & TIFF_MAPPED) != 0)
#define isFillOrder(tif, o) (((tif)->tif_flags & (o)) != 0)
#define isUpSampled(tif) (((tif)->tif_flags & TIFF_UPSAMPLED) != 0)
#define TIFFReadFile(tif, buf, size) \
((*(tif)->tif_readproc)((tif)->tif_clientdata,buf,size))
#define TIFFWriteFile(tif, buf, size) \
((*(tif)->tif_writeproc)((tif)->tif_clientdata,buf,size))
#define TIFFSeekFile(tif, off, whence) \
((*(tif)->tif_seekproc)((tif)->tif_clientdata,(toff_t)(off),whence))
#define TIFFCloseFile(tif) \
((*(tif)->tif_closeproc)((tif)->tif_clientdata))
#define TIFFGetFileSize(tif) \
((*(tif)->tif_sizeproc)((tif)->tif_clientdata))
#define TIFFMapFileContents(tif, paddr, psize) \
((*(tif)->tif_mapproc)((tif)->tif_clientdata,paddr,psize))
#define TIFFUnmapFileContents(tif, addr, size) \
((*(tif)->tif_unmapproc)((tif)->tif_clientdata,addr,size))
/*
* Default Read/Seek/Write definitions.
*/
#ifndef ReadOK
#define ReadOK(tif, buf, size) \
(TIFFReadFile(tif, (tdata_t) buf, (tsize_t)(size)) == (tsize_t)(size))
#endif
#ifndef SeekOK
#define SeekOK(tif, off) \
(TIFFSeekFile(tif, (toff_t) off, SEEK_SET) == (toff_t) off)
#endif
#ifndef WriteOK
#define WriteOK(tif, buf, size) \
(TIFFWriteFile(tif, (tdata_t) buf, (tsize_t) size) == (tsize_t) size)
#endif
/* NB: the uint32 casts are to silence certain ANSI-C compilers */
#define TIFFhowmany(x, y) ((((uint32)(x))+(((uint32)(y))-1))/((uint32)(y)))
#define TIFFhowmany8(x) (((x)&0x07)?((uint32)(x)>>3)+1:(uint32)(x)>>3)
#define TIFFroundup(x, y) (TIFFhowmany(x,y)*(y))
#define TIFFmax(A,B) ((A)>(B)?(A):(B))
#define TIFFmin(A,B) ((A)<(B)?(A):(B))
#if defined(__cplusplus)
extern "C" {
#endif
extern int _TIFFgetMode(const char*, const char*);
extern int _TIFFNoRowEncode(TIFF*, tidata_t, tsize_t, tsample_t);
extern int _TIFFNoStripEncode(TIFF*, tidata_t, tsize_t, tsample_t);
extern int _TIFFNoTileEncode(TIFF*, tidata_t, tsize_t, tsample_t);
extern int _TIFFNoRowDecode(TIFF*, tidata_t, tsize_t, tsample_t);
extern int _TIFFNoStripDecode(TIFF*, tidata_t, tsize_t, tsample_t);
extern int _TIFFNoTileDecode(TIFF*, tidata_t, tsize_t, tsample_t);
extern void _TIFFNoPostDecode(TIFF*, tidata_t, tsize_t);
extern int _TIFFNoPreCode (TIFF*, tsample_t);
extern int _TIFFNoSeek(TIFF*, uint32);
extern void _TIFFSwab16BitData(TIFF*, tidata_t, tsize_t);
extern void _TIFFSwab32BitData(TIFF*, tidata_t, tsize_t);
extern void _TIFFSwab64BitData(TIFF*, tidata_t, tsize_t);
extern int TIFFFlushData1(TIFF*);
extern void TIFFFreeDirectory(TIFF*);
extern int TIFFDefaultDirectory(TIFF*);
extern int TIFFSetCompressionScheme(TIFF*, int);
extern int TIFFSetDefaultCompressionState(TIFF*);
extern uint32 _TIFFDefaultStripSize(TIFF*, uint32);
extern void _TIFFDefaultTileSize(TIFF*, uint32*, uint32*);
extern void _TIFFsetByteArray(void**, void*, long);
extern void _TIFFsetString(char**, char*);
extern void _TIFFsetShortArray(uint16**, uint16*, long);
extern void _TIFFsetLongArray(uint32**, uint32*, long);
extern void _TIFFsetFloatArray(float**, float*, long);
extern void _TIFFsetDoubleArray(double**, double*, long);
extern void _TIFFprintAscii(FILE*, const char*);
extern void _TIFFprintAsciiTag(FILE*, const char*, const char*);
GLOBALDATA(TIFFErrorHandler,_TIFFwarningHandler);
GLOBALDATA(TIFFErrorHandler,_TIFFerrorHandler);
extern int TIFFInitDumpMode(TIFF*, int);
#ifdef PACKBITS_SUPPORT
extern int TIFFInitPackBits(TIFF*, int);
#endif
#ifdef CCITT_SUPPORT
extern int TIFFInitCCITTRLE(TIFF*, int), TIFFInitCCITTRLEW(TIFF*, int);
extern int TIFFInitCCITTFax3(TIFF*, int), TIFFInitCCITTFax4(TIFF*, int);
#endif
#ifdef THUNDER_SUPPORT
extern int TIFFInitThunderScan(TIFF*, int);
#endif
#ifdef NEXT_SUPPORT
extern int TIFFInitNeXT(TIFF*, int);
#endif
#ifdef LZW_SUPPORT
extern int TIFFInitLZW(TIFF*, int);
#endif
#ifdef OJPEG_SUPPORT
extern int TIFFInitOJPEG(TIFF*, int);
#endif
#ifdef JPEG_SUPPORT
extern int TIFFInitJPEG(TIFF*, int);
#endif
#ifdef JBIG_SUPPORT
extern int TIFFInitJBIG(TIFF*, int);
#endif
#ifdef ZIP_SUPPORT
extern int TIFFInitZIP(TIFF*, int);
#endif
#ifdef PIXARLOG_SUPPORT
extern int TIFFInitPixarLog(TIFF*, int);
#endif
#ifdef LOGLUV_SUPPORT
extern int TIFFInitSGILog(TIFF*, int);
#endif
#ifdef VMS
extern const TIFFCodec _TIFFBuiltinCODECS[];
#else
extern TIFFCodec _TIFFBuiltinCODECS[];
#endif
#if defined(__cplusplus)
}
#endif
#endif /* _TIFFIOP_ */

View File

@@ -1,9 +0,0 @@
#define TIFFLIB_VERSION_STR "LIBTIFF, Version 3.6.1\nCopyright (c) 1988-1996 Sam Leffler\nCopyright (c) 1991-1996 Silicon Graphics, Inc."
/*
* This define can be used in code that requires
* compilation-related definitions specific to a
* version or versions of the library. Runtime
* version checking should be done based on the
* string returned by TIFFGetVersion.
*/
#define TIFFLIB_VERSION 20031226

View File

@@ -1,173 +0,0 @@
/* Version 1.0 generated April 7, 1997 by Greg Ward Larson, SGI */
#define UV_SQSIZ (float)0.003500
#define UV_NDIVS 16289
#define UV_VSTART (float)0.016940
#define UV_NVS 163
static struct {
float ustart;
short nus, ncum;
} uv_row[UV_NVS] = {
(float)0.247663, 4, 0,
(float)0.243779, 6, 4,
(float)0.241684, 7, 10,
(float)0.237874, 9, 17,
(float)0.235906, 10, 26,
(float)0.232153, 12, 36,
(float)0.228352, 14, 48,
(float)0.226259, 15, 62,
(float)0.222371, 17, 77,
(float)0.220410, 18, 94,
(float)0.214710, 21, 112,
(float)0.212714, 22, 133,
(float)0.210721, 23, 155,
(float)0.204976, 26, 178,
(float)0.202986, 27, 204,
(float)0.199245, 29, 231,
(float)0.195525, 31, 260,
(float)0.193560, 32, 291,
(float)0.189878, 34, 323,
(float)0.186216, 36, 357,
(float)0.186216, 36, 393,
(float)0.182592, 38, 429,
(float)0.179003, 40, 467,
(float)0.175466, 42, 507,
(float)0.172001, 44, 549,
(float)0.172001, 44, 593,
(float)0.168612, 46, 637,
(float)0.168612, 46, 683,
(float)0.163575, 49, 729,
(float)0.158642, 52, 778,
(float)0.158642, 52, 830,
(float)0.158642, 52, 882,
(float)0.153815, 55, 934,
(float)0.153815, 55, 989,
(float)0.149097, 58, 1044,
(float)0.149097, 58, 1102,
(float)0.142746, 62, 1160,
(float)0.142746, 62, 1222,
(float)0.142746, 62, 1284,
(float)0.138270, 65, 1346,
(float)0.138270, 65, 1411,
(float)0.138270, 65, 1476,
(float)0.132166, 69, 1541,
(float)0.132166, 69, 1610,
(float)0.126204, 73, 1679,
(float)0.126204, 73, 1752,
(float)0.126204, 73, 1825,
(float)0.120381, 77, 1898,
(float)0.120381, 77, 1975,
(float)0.120381, 77, 2052,
(float)0.120381, 77, 2129,
(float)0.112962, 82, 2206,
(float)0.112962, 82, 2288,
(float)0.112962, 82, 2370,
(float)0.107450, 86, 2452,
(float)0.107450, 86, 2538,
(float)0.107450, 86, 2624,
(float)0.107450, 86, 2710,
(float)0.100343, 91, 2796,
(float)0.100343, 91, 2887,
(float)0.100343, 91, 2978,
(float)0.095126, 95, 3069,
(float)0.095126, 95, 3164,
(float)0.095126, 95, 3259,
(float)0.095126, 95, 3354,
(float)0.088276, 100, 3449,
(float)0.088276, 100, 3549,
(float)0.088276, 100, 3649,
(float)0.088276, 100, 3749,
(float)0.081523, 105, 3849,
(float)0.081523, 105, 3954,
(float)0.081523, 105, 4059,
(float)0.081523, 105, 4164,
(float)0.074861, 110, 4269,
(float)0.074861, 110, 4379,
(float)0.074861, 110, 4489,
(float)0.074861, 110, 4599,
(float)0.068290, 115, 4709,
(float)0.068290, 115, 4824,
(float)0.068290, 115, 4939,
(float)0.068290, 115, 5054,
(float)0.063573, 119, 5169,
(float)0.063573, 119, 5288,
(float)0.063573, 119, 5407,
(float)0.063573, 119, 5526,
(float)0.057219, 124, 5645,
(float)0.057219, 124, 5769,
(float)0.057219, 124, 5893,
(float)0.057219, 124, 6017,
(float)0.050985, 129, 6141,
(float)0.050985, 129, 6270,
(float)0.050985, 129, 6399,
(float)0.050985, 129, 6528,
(float)0.050985, 129, 6657,
(float)0.044859, 134, 6786,
(float)0.044859, 134, 6920,
(float)0.044859, 134, 7054,
(float)0.044859, 134, 7188,
(float)0.040571, 138, 7322,
(float)0.040571, 138, 7460,
(float)0.040571, 138, 7598,
(float)0.040571, 138, 7736,
(float)0.036339, 142, 7874,
(float)0.036339, 142, 8016,
(float)0.036339, 142, 8158,
(float)0.036339, 142, 8300,
(float)0.032139, 146, 8442,
(float)0.032139, 146, 8588,
(float)0.032139, 146, 8734,
(float)0.032139, 146, 8880,
(float)0.027947, 150, 9026,
(float)0.027947, 150, 9176,
(float)0.027947, 150, 9326,
(float)0.023739, 154, 9476,
(float)0.023739, 154, 9630,
(float)0.023739, 154, 9784,
(float)0.023739, 154, 9938,
(float)0.019504, 158, 10092,
(float)0.019504, 158, 10250,
(float)0.019504, 158, 10408,
(float)0.016976, 161, 10566,
(float)0.016976, 161, 10727,
(float)0.016976, 161, 10888,
(float)0.016976, 161, 11049,
(float)0.012639, 165, 11210,
(float)0.012639, 165, 11375,
(float)0.012639, 165, 11540,
(float)0.009991, 168, 11705,
(float)0.009991, 168, 11873,
(float)0.009991, 168, 12041,
(float)0.009016, 170, 12209,
(float)0.009016, 170, 12379,
(float)0.009016, 170, 12549,
(float)0.006217, 173, 12719,
(float)0.006217, 173, 12892,
(float)0.005097, 175, 13065,
(float)0.005097, 175, 13240,
(float)0.005097, 175, 13415,
(float)0.003909, 177, 13590,
(float)0.003909, 177, 13767,
(float)0.002340, 177, 13944,
(float)0.002389, 170, 14121,
(float)0.001068, 164, 14291,
(float)0.001653, 157, 14455,
(float)0.000717, 150, 14612,
(float)0.001614, 143, 14762,
(float)0.000270, 136, 14905,
(float)0.000484, 129, 15041,
(float)0.001103, 123, 15170,
(float)0.001242, 115, 15293,
(float)0.001188, 109, 15408,
(float)0.001011, 103, 15517,
(float)0.000709, 97, 15620,
(float)0.000301, 89, 15717,
(float)0.002416, 82, 15806,
(float)0.003251, 76, 15888,
(float)0.003246, 69, 15964,
(float)0.004141, 62, 16033,
(float)0.005963, 55, 16095,
(float)0.008839, 47, 16150,
(float)0.010490, 40, 16197,
(float)0.016994, 31, 16237,
(float)0.023659, 21, 16268,
};

1
wxPython/demo/setup.sh Executable file
View File

@@ -0,0 +1 @@
export PYTHONPATH=/projects/wx/wxPython