home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Club Amiga de Montreal - CAM
/
CAM_CD_1.iso
/
files
/
581b.lha
/
Steal_v1.1
/
Steal.doc.pp
/
Steal.doc
Wrap
Text File
|
1991-10-29
|
8KB
|
169 lines
0. The Boring Part :
====================
Steal should be treated as Public Domain. Anyone can copy the program
if and only if this is not done on commercial grounds. If ever Steal is
published somewhere, I demand that this English document file and all three
source files go along with it. It is allright to copy translations of this
document file too, if any are avalable, but this English version is the
original and should therefore always be distributed together with the program.
The same should be kept in mind for the sources.
Steal is no shareware, but if you like the program I will not protest
if you'd send me some money. My name and address are below.
If anyone feels like changing the source into something he or she
thinks is better, feel free to do so. The only thing I always demand is that
you keep my name in the source and the runtime output, just as it is now. Oh...
If you realy make something wonderful out of it, why don't we share it? Better
versions are always welcome!
For those enhanced versions, for comments, complaints, questions and
money I now list my full address; Better not try to contact me on the phone,
because this is a postage address, rather than a living address.
Rick van Rein
Binnenes 67
9407 CX Assen
( The Netherlands )
1. What's the use of Steal 1.1 ?
================================
Steal is a program that grabs parts out of a display. It is no program
like Snip, neither is it a program to steal whole Screens displays with. This
program is a means to grab out Intuition's structures.
The user can enter a name of an output file that should be used to
write the C listing to, in which all data structures are defined. Note that
BitMaps are not copied; Use some other routine to hack into full displays
please. Yet, Steal does support grabbing away the way an Image looks, so small
pictures can be saved. They will be noted down in an array containing
hexadecimal constants.
A forbidden use of Steal would be, to hack into some commercial package
to Steal away Intuition elements, and then use the things in your own programs.
Note that I do not take any responsibility for people using Steal in this way.
A better use of Steal is, to "de-compile" an Intuition item that we
made by ourselves. I know, this sounds useless, but just imagine: You can write
your original data structures in an ugly way, mount them on the Screen, and
then run Steal to get a neatly formatted C listing, with all fields bearing a
comment on it's contents. This will save you a lot of typing!
Sometimes there will be more convenient ways to build some system
structure. By running Steal in parallel with such a program, one can drag out a
C listing describing this Menu. This probably is the easiest way to define your
own Menus etc.
I will not go into details on how to operate Steal; It's not just a
coincidence that the graphical user interface of the Amiga is called Intuition!
Just try out things that you think are logical - The'll probably behave as
expected. If ever Steal expects you to do something, a report will be printed
in the title bar of Steal's Window.
There is just one last remark to be made: Anything that should be
stolen should be outside Steal's own Window, as Steal waits for an
INACTIVEWINDOW message over the IDCMP whenever it expects something outside the
Window should be selected. Stealing things out of Steal's Window is only
possible by running Steal twice in parallel, with one version stealing things
out of the Window of the second version. Of course, it is possible too to grab
away the whole WorkBench Screen.
2. Stealing a Gadget :
======================
Every Gadget that is visible on the Screen can be grabbed away. This is
also true for the system's Gadgets like the resizing-button. The only exception
to this rule is the dragging bar; Not that Steal doesn't support it for some
reason, but it's Width is zero. Don't ask me why, it's just some bare fact
about the Amiga.
Stealing icons also presented me with some disappointments; It appears
that the WorkBench draws all icons "by hand" instead of using Intuition. This
means that icons are no Gadgets at all. Surprise! I solved it with Icon2Gadget.
Things like this also happen in some other programs; For instance,
Commodore's Preferences program draws the whole Window when starting up; After
that, no rendering is done anymore: Intuition does not get any graphical thing
it may render. The only thing Intuition gets is a list of bare Gadgets
structures, but no Borders, no Images an not even IntuiTexts. It cannot be
expected of a program like Steal to pick up graphical details in such a case.
So, when stealing Preferences' Window, we get an empty Window with some
invisible click-fields in it.
If we try to steal a Gadget, but the position clicked upon is not the
position of a Gadget, an error will be given out.
3. Stealing a Menu :
====================
Stealing MenuBars can be done by clicking on a Window that has a
MenuBar connected to it. If there is no MenuBar, an error will be printed. If a
MenuBar is present in the Window, this bar will be taken out, and a list of all
structures needed for it's graphical presentation will be put in the output
file. All structures will be linked as may be expected.
4. Stealing a Window :
======================
Stealing a Window is done by clicking on the Window to be stolen. If no
Window is at the position pointed at, an error will be the result.
Note that Steal does not write a Window structure to it's output file,
but a NewWindow structure instead, thus following the principle of creating a
file that's ready to be compiled into some datafile that could be used directly
in some OpenXXX-command. Some information will be lost in this way, but most of
the interesting information will still be written out.
When stealing a Window, all Gadgets contained in it will be stolen
along with it, with the exception of the system's special Gadgets. This is not
very unusual, as the system adds these Gadgets automatically.
5. Stealing a Screen :
======================
Again, not the Screen structure itself will be written out, but a
NewScreen is. And again, no great losses of information will be the result. But
there is more to be said about a Screen!
A Screen is a graphical item that contains Windows. Those Windows are
stolen too, and linked into a list, starting from the Screen. Then, there are
MenuBars for every Window; Those are stolen too.
When showing some Screen, we must take care of opening all Windows that
are listed, and the mounting the accompanying MenuBar in it. This cannot be
done automatically, as the NewWindow structure somehow doesn't contain a field
that points at a MenuBar.
6. Bugs and warnings :
======================
This software runs well on Manx's Aztec C 3.4a, and it should just as
well run on any other compiler, though I cannot guarantee this, as I haven't
tried it. The generated C listings are all well typed, so there should be no
difficulties, as far as I can see.
As mentioned above, BitMaps are not supported in Steal 1.1; This causes
problems when stealing a Window that contains pre-drawn Gadgets etc. As a
general rule, accept the fact that everything can be stolen, as long as it
is hanging from IntuitionBase.
You are not expected to change the display during a hack ("Please hold
your breath") and neither is it expected that another program acts like this.
I'll have to sort out a way of disabling these problems, but until now I
haven't.
I wish you lots of fun with hacking into Intuition, and hopefully
you'll learn things thanks to Steal 1.1!
Februari 6, 1991, Rick van Rein.