home *** CD-ROM | disk | FTP | other *** search
- 1: FUNCTIONS
-
- The Turtle Library contains the following functions for drawing with a Turtle
- in a RastPort:
-
-
- CreateTurtle(RastPort:A0, xPos:D0.W ,yPos:D1.W ,Angle:D2.W ,Flags:D3.B):
- This function takes the initial position, angle and flags of the Turtle
- to be created and its RastPort. It returns a pointer to a TurtleHandle
- structure, which is used by all Turtle functions.
-
- ReturnTurtle(TurtleHandle:A0)
- If you do not need a Turtle any more you should return it to the system
- by calling this function.
-
- TurnLeft(TurtleHandle:A0, Angle:D0.W)
- This function turns a Turtle to the left. Angle may be positive or
- negative. It is an integer value and given in degrees, not in radians.
-
- TurnRight(TurtleHandle:A0, Angle:D0.W)
- Same as TurnLeft(), but turns the Turtle to the right.
-
- PenUp(TurtleHandle:A0)
- This function lifts the Turtle "pen" from the RastPort, so subsequent
- calls to Forward() will only move the Turtle to its new positions but
- will not draw any lines.
-
- PenDown(TurtleHandle:A0)
- This function lowers the "pen" on the RastPort, so Forward() will draw
- lines again.
-
- HideTurtle(TurtleHandle:A0)
- If this function is called the Turtle triangle indicating its position
- and direction is not drawn any more. This will greatly speed up drawing.
-
- ShowTurtle(TurtleHandle:A0)
- After a call to ShowTurtle() the Turtle triangle is drawn again.
-
- SetAngle(TurtleHandle:A0, Angle:D0.W)
- By calling this function you can set the direction of the Turtle.
-
- SetPosition(TurtleHandle:A0, xPos:D0.W ,yPos:D1.W)
- By calling SetPosition() you can set the position of the Turtle.
-
- ResetTurtle(TurtleHandle:A0)
- A call to ResetTurtle() resets the Turtle to its initial state.
-
- Forward(TurtleHandle:A0, Distance:D0.L)
- Forward() moves the turtle Distance steps forward. Distance may also be
- negative. It is a FFP floating point variable.
-
-
-
- 2: TURTLEHANDLE STRUCTURE
-
- The TurtleHandle structure looks this way:
-
- struct TurtleHandle
- {
- struct RastPort *RPort;
- FLOAT xPosition, yPosition;
- SHORT Angle;
- SHORT xStart, yStart, aStart;
- UBYTE Flags, FlagStart;
- Point PointArray[3];
- };
-
- RPort is a pointer to the RastPort the Turtle draws in.
- xPosition and yPosition contain the actual position of the Turtle.
- They are FFP floating point numbers.
- Angle is the direction of the Turtle (in degrees, NOT in radians).
- It is a 16 bit integer number in the range from 0 to 359.
- Flags is the current state of the Turtle flags.
- xStart, yStart, aStart and FlagStart are the initial values for position,
- direction and flags.
- PointArray[] contains the three vertices of the Turtle triangle.
-
- Never change the Turtle position and angle and the triangle vertices in the
- TurtleHandle if the Turtle triangle is visible. If you do you will find
- strange Turtle triangles in your RastPort. Better use the library functions.
-
- The values for the initial positions may be altered freely.
-
-
-
- 3: TURTLE FLAGS
-
- There are the following flags in the TurtleHandle.Flags variable:
-
- HIDETURTLE
- PENUP
- TXCOMP
- TYCOMP
- (TCX320Y200, TCX640Y200, TCX320Y400, TCX640Y400)
- TURTLEVALID.
-
- If the HIDETURTLE flag is set the Turtle triangle will not be drawn. Never
- clear it yourself but use the HideTurtle() function instead because the
- Turtle triangle will not be erased from the screen. Checking and setting
- may be done without any danger (although I cannot see why you should set
- it directly - just call ShowTurtle() ).
-
- If the PENUP flag is set Forward() will not draw any lines. You can check
- it, set it and clear it if you really like (but better use the PenUp() and
- PenDown() functions).
-
- If the TXCOMP or TYCOMP flags is set the Turtle triangle is compressed
- along the x axis/ y axis. They are intended to make the Turtle triangle
- look reasonable in all screen resolutions. Normally you use the resolution
- flags (e. g. TCX320Y200) when calling CreateTurtle(). If you do have to
- change them (why???) call HideTurtle(), change your flags and call
- ShowTurtle().
-
-
-
- 4: OTHER THINGS
-
- The Turtle library needs the MathTrans library. So you should have this
- library in the LIBS: directory, too.
-
- Of course you can have more than one Turtle in a RastPort.
-
- The Turtle draws with the colors of its RastPort.
-
- If you have a Turtle in a RastPort it is not affected by moving its cursor
- or by other drawing operations.
-
- The Turtle triangle is drawn and erased in COMPLEMENT mode. So take care
- not to draw over it or you will find strange looking remnants of the
- triangle in your RastPort.
-
- There is no clipping done by the Turtle routines. If you have a RastPort
- that does not support clipping you must perform it yourself.
-
-
-
- 5: INCLUDES
-
- The turtle.fd file contains the function definitions.
- The turtle.h include file contains the structure and flag definitions for
- the C language.
- The turtle.i file contains the structure and flag definitions for assembler
- language and the turtle.offsets file the offsets .
- The turtle.proto file contains the prototypes for the Turtle library (for
- use with Lattice C V5.0).
- The turtle.lib file contains the stub routines for calling the library
- functions (if you do not wish to use #pragmas). They work with both the
- Lattice -rr and the -rs option. They should also work with Aztec C but
- I do not own the Aztec program so I could not test them.
-
-
-
- 6: SOURCE CODE
-
- The library was written with Devpac Assembler V2.0. If you wish to reassemble
- it with other assemblers you should change the include directory after the
- INCDIR directive in line 9.
-
- The demo program was written with Lattice C V5.04. Compile with "lc -ff
- turtledemo", link with "blink from lib:cback.o turtledemo.o to turtledemo
- lib lib:lcmffp.lib lib:lc.lib". If you with to recompile it with other
- compilers you must specify the program to use FFP floating point numbers.
-
-
-
- If you want to write me, this is my address:
-
- Thomas Albers
- Brandenburger Str. 18
- 2930 Varel
- West Germany
-
-
- Have fun! - Thomas
-
-