Xenomorph V 0.6 - 16th Jul. 2004 Mail: kraemer@subsymbolics.com WWW: xenomorph.sourceforge.net
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
INSTALL
This package should contain a x86 version of Xenomorph, built with GCC 3.2
on SuSE Linux 8.1.
If your system does not like the executable, you will have to compile your own.
You will need Trolltech QT 3.x for this. It is available from www.trolltech.com.
However, there are also commercial versions of QT3.x for Windows and Apple OSX.
In order to get Xenomorph running, it needs multithreading support (qt-mt library)
which is already enabled in the binary versions for OSX and Windows.
You can also use the QT development version delivered by your System's vendor.
If you are using GCC 3.x, this is highly recommended, since the standard source
of QT3 does not compile with this compiler.
ATTENTION: Xenomorph versions 0.1 to 0.5 did not compile with GCC3. Since version 0.51, it should work with all GCC compilers.
COMPILING QT3
!!!! This will most likely not work with GCC 3.x. In that case, use the QT
development system from your system's CD/DVD until Trolltech delivers a GCC3
version.
To compile QT3/X11 on UNIX, do the following:
Get the QT3 development toolkit from www.trolltech.com.
Unpack the file, set $QTDIR to the directory
Set $QMAKESPEC to $QTDIR/mkspecs/linux-g++ (if you are on Linux and GCC is
available) or to the corresponding platform/compiler directory
Execute './configure -thread' to build the Makefile for multithreading-QT
Start 'make' and go for a Coffee
You don't need to install QT on your system, so no need for 'make install'.
Define the QT environment
The QT environment is built with $QTDIR and $QMAKESPEC defining QT's path, and the system's type and compiler. It makes sens to include this settings somewhere where they are executed, for instance in $HOME/.bashrc The following settings are taken from my SuSE Linux 8.1 release, containing QT 3.0.5 and GNU C/C++
- You need to set $QTDIR to you system's QT directory: export QTDIR=/usr/lib/qt-3.0.5/
- QT needs to know what System/Compiler you are using. For instance, on Linux: export QMAKESPEC=$QTDIR/mkspecs/linux-g++ This is a directory containing the Makefile settings. It makes sense to modify the code optimization by editing $QMAKESPEC/qmake.conf and changing -O2 to -O4
- Then include $QTDIR/bin in $PATH export PATH=$QTDIR/bin:$PATH
- The shared QT libraries should reside in $LD_LIBRARY_PATH export LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
- Extend the INCLUDEPATH: export INCLUDEPATH=$QTDIR/include:$INCLUDEPATH
COMPILING Xenomorph
Go into the xenomorph directory
Run ./configure or type 'qmake -o Makefile xenomorph.pro'
In case of a X11 build, you are done now, just start make and then ./install
The remaining part of this section is just for the QT/Embedded build. The only reason to do this is to have a version for a PDA, nobody uses QT/E on desktops.
- The linker needs libqte-mt instead of libqt-mt, so change this in the LIBS section of the Makefile: -lqte-mt
- Extend the C/CXXFLAGS by -DQWS and -fno-rtti,
- Remove all X11 links and inclusions from the Makefile.
ATTENTION: If you are building a QT/EMBEDDED version, don't start xenomorph from X11, it may corrupt your display completely. Start by typing 'make' - It should be done really fast - now start ./install - you're done now
You need a running framebuffer.
* On Linux, this is done with the vga=xxx setting on the lilo loading prompt
If you change it in lilo.conf, be sure to have an alternative setting WITHOUT framebuffer
since if the framebuffer fails, you may be locked out of the system.
After the next reboot, the Framebuffer Penguin should display on the text screen,
otherwise something went wrong, maybe you will have to compile a new kernel.
* You will also need a setting for $QWS_MOUSE_PROTO. MouseMan is a good one for USB mouses,
PS/2 mouses are used by default.
Kill GPM if it runs, since it will corrupt the graphics.
In any case, don't start the application from X11, this may corrupt your display
If it is the first framebuffer application on your system, it needs to run the QWS server.
Do this by ./xenomorph -qws
That's all. If something does not work, please mail to: ewald72@yahoo.com
INSTALLATION
Just run ./install
Or do it manually: Copy xenomorph (the executable) to a directory inside of your path.
Now copy the .KERNELS subdirectory to your home directory: cp -r .KERNELS $HOME
If you had xenomorph installed before on your system, it could make sense to remove the $HOME/.KERNELS directory before installing. It contains the filter kernel descriptions and could cause problems if later versions of xenomorph re-organize the subdirectory hierarchy.
That's all. Xenomorph will run without external filters if it is not able to find the .KERNELS directory. It won't be very useful this way.
KNOWN PROBLEMS:
In most cases, if a compilation does not work, it is because of one of three reasons: - QT3 does not compile with the GNU C++ compiler version 3.x - in this case, use the binary QT version delivered with your system. - QT3 is not compiled for multithreading support. You need libqt-mt, not libqt Most vendor-supplied QT version contain libqt-mt. If QT was built by yourself, you will have to recompile with './configure -thread' and starting make - You have installed the QT runtime environment, but not the development system. This means the tools like qmake and the header-files are missing. Your system's CD/DVD will most likely contain the complete development environment. - The environment variables are not properly installed - check $QTDIR, $PATH, $QMAKESPEC $LD_LIBRARY_PATH and $INCLUDEPATH
VERSION 0.2 CHANGES
- A bug in the colour scaling algorithm was removed.
- Automatic colour scaling included. It scales the rgb ranges to the grayvalue-ranges.
- The 'Open new display' checkbox allows to filter without opening a new window.
- The filter language was extended. The statements 'V' and 'K' are deprecated (xenomorph still understands them). Use the new statement 'P' instead: P 0.5 0 0 <KERNEL_NAME> 0 0 0 1 This statement means to multiply pixel 0 0 of the input image with pixels 0 0 and 0 1 of the the filter output of <KERNEL_NAME> (used on the same image). The whole product is weighted with 0.5. This allows 'filter on filter' definitions.
- Every filter now has three caches (for red green blue). This allows filter-on-filter building without the fear of inefficiency due to pixel recalculations.
VERSION 0.3 CHANGES
- It is possible to use Xenomorph with a single-button mouse (Apple OSX)
- Soft morphology operators (dilation with rank 0.75 and erosion with rank 0.25) and their high-lefel operations (soft opening, closing and edge extraction) Soft morphology operators are slower than the 'hard' ones because they require real sorting (the hard operators use min/max). However, the soft operators are MUCH better. For instance, take a look at the differences between hard and soft opening or closing.
- The rank-selection has been optimized to use a weighted sum if the selection does not map exactly to an integer. For instance, take a look at the sequence 0 1 1 and rank 0.25 Xenomorph 0.1 & 0.2 would deliver zero Xenomorph 0.3 delivers 0.5 Please note that all filters delivered with versions 0.1 and 0.2 use rank 0, 0.5 or 1 with non-even sequences (3x3, 9x9, etc) so that this difference does not have any effect on existent filters. Version 0.3 provides soft-morphology operators which use rank 0.25 (soft erosion) and 0.75 (soft dilation). Please use this filters with version 0.3 only.
- Morphology operations with rank from ]0;1[ will be slightly faster in version 0.3. Dilation and erosion will have the same speed.
VERSION 0.4 CHANGES
- A bug in the filter cache system was removed. In versions 0.2 and 0.3 this bug caused artefacts at the image borders. They were visible when using the OPENING operator.
- The caches have been extended - Every filter takes a many caches as needed. They are cleared after the filtering is done. With this setting it is possible to use the same filter many times in recursive definitions.
- The filter menu is arranged in a more lucid way
- Faster FP<->INT conversion
VERSION 0.5 CHANGES
- The filter menu can be teared off. That means you can 'copy' a menu or a submenu to an external window. For instance, it makes sense to tear off the 'Soft Morphology' submenu because it's on a very deep branch of the menu tree.
VERSION 0.51 CHANGES
- This is just a patched version of 0.5 to compile with GCC 3.x - nothing changed
VERSION 0.6 CHANGES
- Removed the 'deprecated' compiler messages
- Hidden filters support
- Rank filters
