991013: new version, copy the updated resource file
(/usr/local/lib/Imp++/IMP++). Or better:
have somebody with superuser privileges create a link
/usr/lib/X11/app-defaults/IMP++ -> /usr/local/lib/Imp++/IMP++
(use whatever force you deem necessary) and the X server
on your machine will automagically be using the latest resource file.
introduction
A test version of imp++ is now available. You start it with the command
imp++. Imp++ is still in its infancy, and very few functions are
supplied in the current (991004) version.
Before starting imp++ you should copy the file
/usr/local/lib/Imp++/IMP++ to your home directory (or make the X server
aware of the file in some other way - linking
/usr/lib/X11/app-defaults/IMP++ or setting either of XAPPLRESDIR or
XENVIRONMENT).
running imp++
From the user's point of view, imp++ is very similar to imp. One difference is
how the windows that are used to define function parameters work: imp++
can handle several simultaneous such windows (and any number [HAHA] of
interactions like region editing and contrast/brightness can execute
simultaneously as well). An example of a parameter window (this one is for
LinearFilter):

What's new here is the character sequence "(*)": this signifies a hidden
option menu that you can bring up by pressing mouse button 1 or 3. The option
menu contains all "variables" of the type of the parameter (all linear filters
in this case). By default, each parameter is represented by a name (such as
the label filter), a text field, and the "option menu tag" (*). The
text field may be editable or not; if it is editable, you may enter an
expression that evaluates to a value of the correct type. It is possible to
enter a full filter description, for instance.
creating and using add-ons
Unlike old imp, imp++ uses dynamic linking, at run-time, of functions (apart
from those that are supplied with imp). So if you write your own functions or
use packages written for imp++, dynamic linking will be used. One consequence
of this is that you can write a function, add it to a library, start imp++,
test the function, rewrite it, and test the new version without terminatig
imp++. And there is no need for an imp++ of one's own anymore.
Like imp, imp++ reads your function declarations at start-up, but imp++ can
read many different declaration files. Use the environment variable IMPMODDIR
to define directories where the declaration files (called "impmodfunctions.h")
are located. IMPMODDIR is like PATH, so directories are separated by a
semicolon.
For those who have written C functions for imp and for those unfortunate souls
who persist in doing so: imp++ tries to stay compatible with imp so
most of your old imp functions should work almost without modification:
the exceptions are
- Feature calculations - not yet implemented in imp++, but the programmer's
interface will change drastically, so your old functions will have to be
rewritten.
Solution: Undefined...
- The infamous ENUM variables have been mercifully put to sleep and
replaced by "integers with keywords".
Solution: replace ENUM
with INT
and add
keywords (KEYWORD(1,"Ett") KEYWORD(2,"Två")
, etc) instead.
And replace ENUMVALUE ( *aa)
with the much simpler
*aa
in the C code.
- The keyword
TEMPORARY
(for images or region sets that were
invisible to the interface) has been - at least temporarily - removed.
Solution: write a very simple C++ interface function - I will provide
examples.
- The old way of allocating memory for images in the Wh... functions does
not work anymore (more to the point: you can allocate memory but imp++ will
no nothing about it).
Solution: write a very simple C++ interface function - I will provide
examples.
Currently, only one imp++ package - consisting of a single function - exists:
FilterEditor. If you want to test it, define IMPMODDIR:
setenv IMPMODDIR /usr/local/lib/Imp++/Fred
and FilterEditor will be added to the menu bar of imp++ (under
Special).
The directory /usr/local/lib/Imp++/Additions
contains what is
needed to
get started writing imp++ functions - or adding old imp functions to imp++:
a Makefile, example C++ (imptest.C) and C files (whcanny.c and
whbandaverage.c), declarations of the functions (impcppfunctions.h
and impcfunctions.h). The Makefile uses the program impctocpp to "translate"
(i.e., create the necessary functions in cfuncs.C) from C to C++. As mentioned
above, imp++ reads declarations in impmodfunctions.h: this file is created
by the Makefile if either of impcppfunctions.h or impcfunctions.h has
changed. The first line in impmodfunctions.h
- USING ("myimplib.so");
- informs imp++ about the name of the
library file.
plans for the immediate future
In the next couple of weeks, I intend to bring the functionality of imp++
close to that of imp. Old imp functions will be added and I will probably
rewrite most functions that involves interactive image manipulation.
One important reason why this test version is made available is that I want
feedback from other users than myself. I am aware of quite a few bugs in
imp++, but please report any bugs and quirks you encounter.
I will add information (any kind: bugs, corrected bugs, new test releases,
...) here - there will probably be no other sources of information about the
progress of imp++ ...
what's new?
- 991117: added information about how to plug in plug-ins (in latest news)
- 991013: updated version: some new functions, image handler, corrected a
few bugs in Fred.
- 991004: info: don't try impish just yet (for you own good)
- 991004: first test version
- 991003: The menu Binary is new; it contains regionset
manipulation functions: regionset in, regionset out.
- 991003: median image does not always work
- 991003: map (image) as display doesn't work
- 991003: don't know about FFT ??
- 991003: no pop-up image handler yet, some of the functions that will
end up there are temporarily placed under Display.
- 991003: Test contains "debugging tools" (
typevar
)
and a few of my test functions (for testing the innards of imp++)
- 991003: No Help I'm afraid.
Last modified: Wed Nov 6 11:58:21 MET 2002
by Bo Nordin