

                              Desktop Mirror
                              ==============


Documentation for !Mirror desktop utility version 2.01 05-Feb-2000.

Issue: 2.01  05-Feb-2000, replaces:     0.10 18-Mar-1991
                                        1.00 24-Mar-1991
                                        2.00 28-Feb-1994

Author: David J Ruck

Copyright  DEEJ Technology PLC 1991-2000 



Overview
========

!Mirror is designed to be used alongside desktop drawing programs such as
!DRAW, !PAINT, !Euclid and many others, to aid the drawing of pictures
containing vertical or horizontal symmetry.

All major drawing, painting and CAD applications allow the user to draw one
half of an object, copy and reflect it to produce the other half. Often
however, it is not possible to see if the correct shape has been obtained
until both halves of the object are assembled. At this point any corrections
will have to be done to both halves, or the copying and flipping repeated.

!Mirror enables the whole object to be seen continuously by showing a
reflection of the half being drawn, this can greatly speed the drawing of
symmetrical objects.



Using !Mirror
=============

When !Mirror is started, it will install its icon on the icon bar. Clicking
on the icon will create a mirror window. The window does not have vertical
and horizontal scroll bars, but can be resized using the icon on the right
of the title bar in the standard RISC OS manner. 

!Mirror can reflect in any of four directions using the mirror window menu.
An adjacent area equal to the size of the window in the selected direction
(left/right/up/down) will be shown reflected in the window. The window is
continuously updated, so that drawing operations and most desktop actions
will be shown in reflection as they happen. However, some demanding window
redrawing operations such as resizing or scrolling may cause the mirror not
to be updated for a few moments.

The above example shows a mirror window placed over a draw diagram, it is
reflecting the half of the drawing to the left, giving the impression of the
whole object as it will look when the left side has been copied and
horizontally flipped.

To enable the mirror window to reflect the area immediately adjacent to it
in all directions, when the up direction is selected the windows title bar
will move to the bottom of the window. Although this looks strange, the
title bar can be moved and resized as normal.

Clicking on the !Mirror iconbar icon will bring up further mirror windows,
the number allowed is dependant on the available memory, an error will be
given if there is not enough. When mirrors are set up to reflect upon
themselves, correct optical behaviour is not guaranteed, in fact some
strange but interesting effects may occur!

When resizing a mirror window, !Mirror will try to prevent running out of
memory by limiting the expansion in one or both directions. Changing to a
mode with more resolution or colours will cause the mirror windows to
require more memory, if there is insufficient the windows will be closed.



Technical Details
=================

!Mirror works using standard RISC OS sprite operations, enabling it to be
used in any mode. The program responds to Wimp_Poll idle events by grabbing
a sprite from the area adjacent to the window in the chosen direction,
flipping the sprite either horizontally or vertically and plotting it in the
window.

Reflecting areas off-screen results in the area appearing in the black.

The title bar at the bottom of the window when reflecting upwards, is
possible because the window does not actually have a title bar - it consist
of icons inside the window made to look like a title bar. This is done for
the other directions as well, as it is not usually possible to have a resize
icon without vertical and horizontal scroll bars. 

The appearance of the icon bar is dependant on the Sprites file within the
application directory, rather than the Wimps tool sprite pool, the current
set is chosen to mach Acorn's NewLook. Alternate sprites can be used by
merging a tool sprites file with the mirror sprites file, care should be
taken not to delete any sprites as this may cause the program to
malfunction.



History
=======

2.01 05-Feb-2000    3D window border removed on RISC OS 4
                    Titlebar does not invert on RISC OS 4


End of !Mirror.!Help
