The only part of your hard drive that LaserBoy can see is inside of its own 
directory. There you will find a set of named folders where the appropriate
file types must go.

You can create folders inside of the ild directory and navigate into them,
but only this one folder deep.

You can create folders inside of the dxf directory and place multiple dxf
files in them and LaserBoy will open them in alpha-numeric order as a
frame set.

LaserBoy opens and checks to see if it is the current version. If it is not,
a message will appear.

Please always get the current version !!!
http://laserboy.org/code/LaserBoy_Current.zip

LaserBoy opens showing the stats of the frame set it always opens with,
in.ild.

In general, the [Enter] key hides and shows all of the menus. It also is required
to enter any information at a prompt that requires more than one keystroke to
complete.

In any situation where you are asked to enter the name of a file or effect
that already exists, LaserBoy will ignore any key input that doesn't lead to a
selection and it will fill in the characters for you as your input eliminates any
other choices until you have narrowed it down to only one possibility.

The [Esc] key backs you out of any menu or input prompt to wherever you
were before. From the main menu [Esc] takes you to a choice of terminating the
application. It shows a bright red screen and asks you if you really want to exit
the program. Hitting the y key terminates the application. Hitting [Esc] again
takes you back to the main menu. Clicking on the X in the upper right corner of
the window has no effect.

Left and right arrow keys move you through the frame set forward and backward.



From the main menu:

The 9 key takes you to the first frame in the set and the 0 key takes you to the
last.

The [Tab] key takes you to system value settings. All of these settings will
prompt you to enter a value. The [Tab] menu is generally available from most
menus. And when you [Esc] from it, it will return you to whatever menu you
were already in.

The x menu, system switch settings will all be either set or unset with a key hit.

The u key takes you to a menu of user interface visual attributes you can
enable or disable.

The [Space] bar selects or unselects the current frame. You can see if a frame
is selected by looking at the stats on the right side of the screen. The number
of vertices is in cyan. The number of individual lit segments is in magenta and
the frame type 2D or 3D and its number in the frame set is in yellow. If a frame
is selected the background field of the frame type and number will be dark red.

The ( key, (shift 9) sets the current frame series select and the ) key, (shift 0)
sets the current frame as the last series select, selecting all frames between
the two.

The ` and ~ (to the left of the digit 1, top row) start the frame set animation
forward or backward. Look in the [Tab] menu for option h frames per second
and look in the x menu for option 2 animate at approximate frame rate.
If this is not set, the frames will advance as fast as your computer can
render them.

The - and _ key, (right of the digit 0 top row), will start an animated 3D
rotation of the current frame, forward or backward 1 degree around all 3 axis.
The setting for frames per second and animate at approximate frame rate apply.

The = and + key also orbit the view as above plus advance the frame,
forward or backward.



The view keys menu:

If you look at menu v you will see tables of keys that effect your view of the art.

The digits 1, 2, 3, 4, 5, 6, 7 all orbit the view around the art. For each key
hit of 1, 2, 3 or 4, the camera orbits in some number of degrees around each axis
or all three axis. The number of degrees of rotation is set in the [Tab] menu,
option c rotate degree per key hit. The shift key plus 1, 2, 3 or 4 rotates in
the opposite direction.

The keys 5, 6, & 7 snap to the cardinal views of front, side and top of the 3D
cube of space. Shift plus 5, 6 & 7 snap to the logical opposites of back, other
side and bottom views.

The 8 key is like the 4 key but it also advances the frame. So you can press
and hold it to see an animation in full rotation. Shift 8 does this in reverse.

The q, w, e & r keys, right below 1, 2, 3, 4, pan the camera left-right, up-down,
both-at-the-same-time and return to center. Shift on q, w & e pans in the opposite
direction. The amount of pan motion per key hit is in some number of points,
set in menu [Tab] option 0 (digit zero), a or b ( in different ways they set
the same value. Points are relative to the signed 16-bit number space in which
this vector art exists. So from one side of the 3D cube of space to the other,
along any of the cardinal axis, there are 65535 points.

The keys a, s, d & f, right below q, w, e, r zoom the camera. The a key stretches
the X axis; the s key Y and the d key does both. Shift plus key shrinks them.
The f key returns the camera zoom to normal; a factor of 1.0. Option d in the
[Tab] menu determines the percentage of zoom per key tap.

The one thing you might notice is that pan and zoom have nothing to do with the Z
axis. That is because these controls effect the way the art is displayed on the
screen. The screen simply has no Z axis. It is important to understand that
none of the keys described above have any effect on the numerical values that
define the art. They only effect the way the art is displayed on the (2D) screen.

You can however impose the current view on the art itself so that what you see is
actually what is stored in the frame data.

A big issue here is that the view of the art must all fit inside of the 3D cube
of numerically defined space. Note that it is very easy to set the view so that
this is not the case.

If any of the art, in the straight on front, no zoom, no pan view, is outside of
the defined 3D space, trying to apply the view simply will not work.
LaserBoy will not remove or change the coordinate values of any vertices in
the frame. It will tell you it is out of bounds.

However, if you go into the x switch settings menu and turn on option
3 destructive clipping in move scale rotate, it will do exactly that. It will
remove all vector data that is outside of the cube of short integer space,
after a pan, zoom or rotate is applied to the data.

It's also important to think about applying the effects of rotation, pan and
zoom individually. Don't try to do all of them in the same step.

The "current view" displayed in menu v shows the rotational angle on each axis,
the offset and the scale that the display math is using to make the 2D raster
picture on the screen from the 3D vector art in the RAM.

Below that are shown the letter options for applying these factors to the art
itself. Once the factors are applied to the art they are set back to normal so
that you can see the art as it really is; from the front of space with no pan
or zoom. Lower case letters o, t & g apply the view to the current frame only.
Upper case applies the view to the whole frame set.

In menu u you can turn on and off some visual elements that enhance the display
on the screen. The fixed bounds and origin in conjunction with the floating
bounds and axis makes all of this make a lot more sense visually.

All of the listed keys in the view menu work in the main menu except for the
keys that apply the view to the art. Those only work when you are in menu v.

The number keys 1, 2, 3, 4, 5, 6,  7 & 8 work the same way in menus k and l (L)
to enhance the ability to draw and manipulate vector art in 3D space; again,
only effecting the way the art is displayed on the 2D computer screen.


LaserBoy Effects:

Perhaps one of the most powerful things LaserBoy can do is call a function on
the current frame, a group of selected frames or a whole frame set to do math
on it and create a new frame set as a result. The very first version of LaserBoy,
written in 2003, was designed to do just that.

There are two ways to call an effect function by name. From main, in the
o output file menu, choose 1 ild. Choose a directory. Choose from
options 4, 5 or 6. Or from main choose option n.

Effects that work on selected frames require that some frames are selected.
Some of them take a specific number of frames. Some don't.

You will see a list of available effects by name. Type the name and [Enter].
You will be prompted to enter a file name for the new ild frame set that will
be the result of the effect. If you [Enter] nothing, no file will be saved and
the resulting frame set will be loaded into memory in place of the current
frame set. If you type a name, a new ild file will be saved in the directory
you chose to get here. You will then be prompted to load (or not) the resulting
frame set into the memory, replacing the current one.

All of the effects work in 3D and with no loss of color information. Some effects
require a view of the Z axis, so you might need to rotate the view
away from the front of space to see them.

If you are really curious as to how these effects actually work, you can look in
the src directory for the files:

LaserBoy_frame_effects.cpp
LaserBoy_frame_set_effects.cpp
LaserBoy_selected_frames_effects.cpp


Drawing in LaserBoy:

In both menus k and l (L) you will see two cursrs that move along the vertices.
The open square I called the egg and the other 8 legged thing is called the spider.
These are to mark the beginning and the end of a selected portion of the art
(in consecutive vertices). Each frame in the set of currently loaded frames has
its own locations for its egg and spider.

As you move the vertex cursors back and forth through the drawing with the
[{ and ]} keys, you can see what vertex number each one is on in the information
below the palettes. The vertex number is in cyan. the segment index is in magenta
and the palette color index is in white.

You can put the egg on the same vertex as the spider with the (capital) K key.
You can put the spider on the same vertex as the egg with the (capital) L key.
If both cursors are on the same vertex, that single vector is selected
(the line from there back to its anchor vertex).

The first thing that might be confusing is selecting a single vector. A vector is
the line that exists between two vertices. In order to select a single vector,
BOTH the egg and the spider must be on the destination end of the vector!
The color and the blanking status of a vector is stored in the destination end
of the vector.

The least amount of information you can have in a frame is two vertices;
an anchor and a destination of a single vector.

In menu k a lot of the functionality only effects the vertex under the spider.
You can move it in X, Y and Z by hitting the keys x y & z. Upper case moves it
in the opposite direction. You can also rotate the vector around its own anchor
in the X, Y or Z (keys d, g, f) plane or and you can change the length or
magnitude of the vector (m key).

Look in the [Tab] menu for:

0 move points per key hit
a move as % of space
b move as 1 / [n] of space
c rotate degrees per key hit
d scale percent per key hit

Points are relative to signed short integer space (-32767 to +32767). The value of
the displacement step is always an integer.

Some of these functions don't make any sense on the zeroth vertex. That is the
only vertex in the whole drawing that can only be an anchor. It can never have
a color or be blank or not blank.

The . (dot) will add a new vertex based on the one that is immediately before it
in the drawing. If the spider is on the last vertex, it will make a new vector on
the end of the drawing that is identical to the previous one (unless you run into
the edge of space). If the spider is somewhere inside the drawing, it will split
the vector in half.

To make a new empty frame, from main hit 9 to go to the first frame in the set.
Hit j to enter the frame set transforms menu. Hit 9 to add a blank frame to the
beginning of the frame set. If you only want one blank frame loaded, you can
select the new blank frame with the [space] bar and hit 3 to trim the set to only
selected frames. Hit [Esc] to return to the main menu to enter either menu
k to draw individual vertices or menu m to render segments by coordinates
to create content in the new frame.

When you make a new empty frame it actually has 2 vertices at the origin
(no magnitude) and the vector they make is blank!

The first thing you might want to do is move the spider to the last vertex
(number 1) and unblank the vector (capital B). Then pick a color with the p key.
Capital P moves the color cursor backwards. Once you have the color you want,
color the vector with the c key. Now you can see it!

You can move both the anchor and the destination of this first vector anywhere
you want by moving the spider to that vertex and using the x, y, z keys.
Then you can just pop and place vectors by moving the spider to the last
vertex and hitting the . and moving the new vertex where you want it.

If you are editing an existing drawing, you can move the spider to a vertex of
a desired color and hit the (capital) C key to set the palette color index to
that color.

You might find it makes a lot of sense to "pop and rotate" vectors. Add a new
vector with the . key and rotate it into place with the f or F key. That way every
vector in the drawing will be the same magnitude regardless of its direction!
That makes for an image that scans nicely and gives you even intensity
(especially useful around curves).

You can also use the \ and the | keys to place the egg at the beginning and the
spider at the end of the drawing, selecting the whole thing.

The keys u i and o select lit segments within the drawing. The u or U key selects
a single lit segment, forward or backward in the segment order of the frame.
The o or O key extends  or retracts selected segments after  the current selection.
The i or I key retracts or extends  selected segments before the current selection.

Lit segments are seperated by blank vectors. It is possible that lit segments
may be bonded together with lit black. The fonts included with LaserBoy have
glyphs that are multiple lit segments bonded with lit black. LaserBoy sees this
as one lit segment, to differentiate it from others in the same frame separated
by blank vectors.

You can open a bitmap file into the display background and trace vectors over it.
From the main menu, choose i to input a file. Choose 6 for bmp. Choose 8 to load
it into the display background. Chose y or any other key to answer if you want
the bitmap to be scaled to fit the screen. Hitting the ; (semicolon) key will cause
the bitmap to disappear and reappear. Hitting the : (colon key) will make the
bitmap display as a negative.

You may also have a directory inside of the bmp directory with a set of bitmap files
in it; such as frames from an animation. With option 9 in the bmp input menu, you
can open that directory and it will load the first bitmap as the background image.
Only in menus k and l (L) you can Q load the next or W load the previous bitmap
in the directory in alpha-numeric order.

Once you have a frame that has something in it, you can copy, move scale and rotate
a set of selected vectors in menu l (L). The egg and spider work exactly the same as
they do in menu k, including the [{ ]} u  i  o \ | keys for selection.

When rotating or scaling a selection of vectors, there are two different ways to do it.
One is relative to the calculated center of the selection referred to as "itself" in the
menu. The other is relative to the "fulcrum". The fulcrum is the 3D red, green and blue
cross hairs sitting at the origin, by default. You can move this fulcrum in X, Y and Z
with the a s d keys. You can set the X Y X coordinates with the j k l keys.
It is not bound to the limits of short int space. It can be placed outside of that.
You can also place it at the same location as the egg or spider with the , or . key.

You can copy a selected set of vectors to the end of the the vectors in the frame
with the c key. This will also change the positions of the egg and spider to the copy
of the set, at the end of the vectors in the frame. So you can copy move, copy move
or copy rotate copy, etc...

In both menus k and l (L), you can copy the current frame with the ` key
(top row left of the digit 1). This also copies the locations of the egg and spider.
So you can copy, move, scale or rotate something copy, move, etc... to make an
animated set of frames.

In the [Tab] menu, option o bitmap background size factor can be set to whatever
you you want.

When you pan, zoom or rotate the camera view of LB Space, the background bitmap is
rendered as the XY plane at zero Z.

Look in ./LaserBoy/txt for math.txt and text.txt for instructions and examples
of ASCII text file formats to import.

