home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
workbench
/
pprefs
/
pprefs.doc
< prev
next >
Wrap
Text File
|
1995-02-27
|
13KB
|
290 lines
***************************************************************************
* *
* PPrefs 1.1 Screen Promotion Utility *
* Freely distributable *
* Copyright © 1993 The Naughty Bits *
* *
* Olaf Gschweng *
* Riefstahlstr. 33 *
* 17235 Neustrelitz *
* Germany *
* *
* EMail: gschweng@informatik.uni-rostock.de *
* *
***************************************************************************
DISTRIBUTION CONDITIONS
The programs and files in this distribution may be freely distributed as
long as no charge is made other than to cover time and copying costs. The
files in this distribution must be kept together in original, unchanged
form. If you want to include PPrefs as part of a commercial package you
have to contact the author first.
INTRODUCTION
PPrefs is a screenmode promotion utiltity which allows you to promote every
available screenmode of your system (including those that normally don't
appear in screenmode requesters, e.g. HAM or EHB modes) with another mode.
Besides it can keep exceptions of that normal promotions when you want that
some very special programs get their very special screen or don't get
promoted at all.
Screen promotion could be useful for you if you only have a VGA monitor
that cannot diplay those PAL and NTSC resolutions, or if you don't like
that resyncing of your Multisync monitor (like on my NEC 3D, which stays
black for 1 second) every time you change between screens with different
modes, or if your monitor doesn't handle different positions and sizes for
every mode and you have to manually adjust your monitor all the time or
live with that screen that exceeds your overscan area a bit too much .. ,
or ..
I wrote PPrefs because all the other promotion utilties I tried and used
did not have the flexibility I needed. After trying several of them I used
ForceMonitor but I was not fully satisfied with it. After I bought my
Picasso II gfx card, I needed a good promotion utility even more because I
don't like that ChangeScreen utility included with the Picasso so much.
REQUIREMENTS
PPrefs requires Kickstart 2.0, but should be more useful with Kick 3.0 or
the WB 2.1 :)
You should have asl.library, iffparse.library, mathieeedoubbas.library and
mathieeedoubtrans.library in your LIBS: directory.
INSTALLATION
PPrefs consists of two programs. The program PPrefs itself is a CLI program
that patches the intuition.library/OpenScreen() and OpenScreenTagList()
functions. You should put it in your C: directory or anywhere else on your
Workbench disk, or just put it on top of another thing - you know there are
too many things not lying on top of another .. (sorry, watched Pythons too
much)
The other program is the preferences editor of PPrefs which should be
placed in the Prefs drawer of your WB disk. This GUI is localized, so if
you have 2.1 or above you can also install the catalog to get the editor in
your language. To activate PPrefs you must run PPrefs from a shell. As it
doesn't detach itself you should use the 'Run' command. To install it
permanently, add the following line to the startup-sequence or (preferably)
your user-startup:
Run <NIL: >NIL: PPrefs
To remove it, send it a CTRL_C. But don't do this if another program
patched the OpenScreen or OpenScreenTagList function AFTER PPrefs did - you
must remove the other program first.
THE PREFERENCES EDITOR
Overview
The 2 listview gadgets on the top left side are for the source and
destination mode selection, the other pair below them shows various
informations on the selected modes. The other listview on the right side is
for the exceptions.
Because of the many things to diplay in the window and the resulting small
listviews I decided to build sublists for each monitor - ever tried
clicking on the slider of the mode selector of DPaint 4.5 ? To enter a
sublist just click on the monitor name, to leave it click on the top item
of the sublist.
Note: If you have the OS3.0 standard mode promotion enabled (yes, the
little gadget in IControl that is not mentioned in the docs - remember how
lucky you where as you, just fooling around with your brandnew A4000's
Workbench, found it, and you felt that you looked for something like that
the whole time ...), then the promoted (i.e. scandoubled modes) appear in
the Default: monitor's list. I have it disabled and simply do not need it
anymore.
How to promote
If you want to promote a mode, just single click on it on the source side
so that its properties appear in the listview below. Then select the
desired destination mode on the destination side (again a single click is
enough) - that's all.
If you click on a source mode that is already promoted, its destination
mode will automatically appear on the right side; if it has not been
promoted yet, the right side will show no selection.
Note: The Kickstart 3.0 (i.e. GadTools V39) listviews highlight the
selected entry rather than showing its name on the bottom of the gadget as
they do under 2.0 - so they give you a much better view on what's going on.
How to unpromote
To remove a promotion you have to click on the 'Unpromote' gadget above the
mode listviews. Alternatively you can select the 'Unpromote' menuitem in
the 'Edit' menu. There is also an item to remove all promotions and one to
remove all promotions of a monitor.
The exceptions
If you want to exclude a particular program from the promotion or if you
want its screen(s) to be promoted differently than the normal promotion -
that's where the exceptions come into action.
You can specify this screens by its name or by the name of the program that
opens the screen. You can choose the appropriate list by clicking on the
cycle gadget below the listview. To add an entry click on the 'Add' gadget
and then enter the desired name. (The new entry will be inserted above a
previously selected entry or on the bottom if no entry was selected
before.) The program will now get exactly the mode it wanted whether there
is a promotion for that mode or not. The names can contain wildcards and
are case insensitive.
If you want to give a program a particular screen mode just select its
entry in one of the exception lists and then select the desired mode in the
destination listview.
Options
Under pre-AA chipsets the number of colors a mode is able to display,
varies. So if you want to promote a mode to another one that only can
display less colors than the original mode, it can happen that a program
cannot get the number of colors it wants to get. For this case you can
specify (separately for each promotion and exception) what should be done
here by choosing between keeping the resolution or keeping the colors. The
default is to keep the resolution, so the program gets the mode you wanted
it to get, but only as many colors as available. This may have the effect
that you can't see everything you should - perhaps you should then better
use the other option: to keep the colors and to reduce the resolution of
that screen. In this case PPrefs will activate autoscroll (if needed) so
you can shift the visible area to let you see all of the screen.
Best mode
Under Kick 3.0 (or above:) you will find a "Best xxxx mode" entry in the
monitor list and in every mode list (on the destination side). This lets
PPrefs use the new BestModeID() function to determine a suitable display
mode. If you select the global entry then the mode is searched in the whole
display database - it will take a noticable amount of time before the
screen is opened. If you selected the entry in one of the mode lists the
returned display mode will use the monitor of the selected entry.
###########################################################################
WARNING: It seems that the BestModeID() function is hungry for stack, so be
sure that the program you promote has enough stack!
###########################################################################
There are 4 checkboxes to give you the possibility to influence the
selection of the best mode:
Source mode - this lets PPrefs pass the source mode ID to BestModeID() so
that it can take care about a proper aspect ratio and some special
properties like HAM etc.
Dimensions - this passes the width and height of the requested screen to
BestModeID() to let it take care about the desired size of the screen.
Aspect ratio - this overrides the aspect ratio of the source mode and uses
the width and height of the screen to determine the desired ratio.
No lace - this one lets PPrefs try to find a mode without interlace.
Configuration
If you quit the editor via the 'Use' gadget the configuration will be saved
to ENV:promotion.prefs. You can edit your prefs even if PPrefs is not
currently running. If you 'Save' the prefs, they will also be written to
ENVARC: so they'll survive the next reset. If PPrefs is currently running
it will immediately use the new configuration.
THE PPREFS PROGRAM
The PPrefs program patches the OpenScreen and OpenScreenTagList functions
of intuition.library, so that OpenScreen is completely replaced by
OpenScreenTagList.
It looks for a promotion entry in the screenlist, the tasklist and the
normal promotion array (in that order). If it finds one, it searches for an
appropriate overscan region, checks if it fits entirely on the screen, and
if not, enables AutoScroll. It then will center the screen or at least look
if the left/top coordinates don't exceed the overscan region.
PPrefs has now some commandline options:
NEWLOOK - enable newlook for promoted screens
NOCENTER - don't try to center the screen.
STDOSCAN - set overscan only up to standard (graphics) overscan which is
editable via Preferences - default is maximum overscan which is not
editable but fixed
IF YOU HAVE PROBLEMS WITH PPREFS
I cannot have all the programs you may have and so cannot test PPrefs with
every program available for the Amiga. Of course I tested it with the
programs I use and some problems that I could not imagine appeared with
some of them and I changed PPrefs to work with those programs. So if your
favourite program does not work well with PPrefs - I cannot do anything to
fix this if I don't know about it - you have to tell me!
I have included a special version of PPrefs called PPrefsDBug that prints a
few informations when a screen is opened. To use it, you should abort the
normal PPrefs program and start PPrefsDBug in a shell. When you have a
program that makes problems with PPrefs you should send me the output that
PPrefsDBug makes. You could also use it to determine the mode ID or the
screen/task name of some screens.
If you use the best mode promotion, be sure that the patched program has
enough stack - I really had some serious trouble before I realized that
insufficient stack was the cause for all those mysterious crashes I had.
FUTURE PLANS
-self detaching PPrefs & stack swapping for BestID
-maybe optionally center and setnewlook even for unpromoted screens
-better error handling
THANKS TO
-Matt Dillon and Stefan Becker for making and distributing DICE
-Sylvain Rougier and Pierre Carette for BrowserII - a fantastic program
-Torsten "Tigy" Gebert for his oiginal 'all to VGA' patch that showed me
that there's nothing magic about such a patch; and for testing PPrefs
-Christoph Feck for his PrefsIcons (PPrefs' icon is in the same style)
-Sylvain Rougier for the french translation
HISTORY
1.0 (06.09.93)
-Initial release.
1.0a (13.09.93) (not released)
-added screen centering
-does not use any global data for the taglist extension anymore
1.1 (26.10.93)
-redesigned GUI and font-sensitive code, much nicer now :-O
-added "Best mode" promotion
-exceptions now work for CLI started programs
-added semaphore protection
-screen centering, left/top adjust, overscan handling reworked
_________________ -------------------------------------- _________________
_\___\_o_/___/_ | | _\___\_|_/___/_
_\___(*)___/_ | Olaf "Oil Hog" Gschweng | _\___(|)___/_
/ \ | gschweng@informatik.uni-rostock.de | / \
|---| | | |---|
--------------------------------------