⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 turtle.h

📁 DOS下驱动源程序
💻 H
字号:
/* Function prototypes, macros, structure, and global variables for
 * Turtle Graphics functions.
 */

/* Include only once */
#ifndef TURTLE_H
#define TURTLE_H

/* Initiate and set defaults */
short InitTurtle( struct videoconfig *vc );
short Home( void );

/* Control pen and color */
int   PenDown( int state );
short SetFill( short state );
short PenColor( short atrib );
short BorderColor( short border );

/* Control angle */
short Turn( short angle );
short TurnTo( short angle );

/* Turtle movement */
short Move( double distance );
short MoveTo( double x, double y );
short Poly( int number, double side );

/* Rotate color index or value */
short NextColorIndex( short ciCur );
void  NextColorValue( int fAction );

/* Put a circle with radius <r> at current location. */
#define Circle( r ) _ellipse_w( tc.fFill, tc.xCur-(r), tc.yCur-(r), \
                                          tc.xCur+(r), tc.yCur+(r) )

/* Puts an ellipse with width <w> and height <h> at current location. */
#define Ellipse( w, h ) _ellipse_w( tc.fFill, \
                                    tc.xCur-((w)/2), tc.yCur-((h)/2), \
                                    tc.xCur+((w)/2), tc.yCur+((h)/2) )

/* Puts the center of a rectangle with width <w> and height <h>
 * at current location.
 */
#define Rectangle( w, h ) _rectangle_w( tc.fFill, \
                                        tc.xCur-((w)/2), tc.yCur-((h)/2), \
                                        tc.xCur+((w)/2), tc.yCur+((h)/2) )

/* Gets the imagesize of an image with width <w> and height <h>
 * with left-top at current location. Returns image size.
 */
#define ImageSize( w, h ) _imagesize_w( tc.xCur, tc.yCur, \
                                        tc.xCur+(w), tc.yCur+(h) )

/* Gets an image with width <w> and height <h> with left-top
 * at current location. Returns image buffer.
 */
#define GetImage( w,h,buf) _getimage_w( tc.xCur, tc.yCur, \
                                        tc.xCur+(w), tc.yCur+(h), buf )

/* Puts the top-left corner of a specified image at current location
 * using a specified action (_GPSET, _GPRESET, _GAND, _GOR, _GXOR).
 */
#define PutImage( buf, act )  _putimage_w( tc.xCur, tc.yCur, buf, act )

/* Fills starting at the current location and continues to border. */
#define FillIn() _floodfill_w( tc.xCur, tc.yCur, tc.ciBorder )

/* Returns nonzero if the current location is onscreen. */
#define OnScreen() (!((tc.xCur < -tc.xMax) || (tc.xCur > tc.xMax) || \
                      (tc.yCur < -tc.yMax) || (tc.yCur > tc.yMax)))

/* Returns a long int mixed from red, green, and blue bytes. */
#define RGB( r,g,b) (((long)((b) << 8 | (g)) << 8) | (r))

/* Constants */
#define CIRCUMFERENCE     360
#define HALFCIRCUMFERENCE 180

#define DEFAULT -1
#define LIMITED  0
#define TRUE     1
#define FALSE    0
#define WHITE (tc.cci - 1)

/* Structures for configuration and other data */
typedef struct _TURTLE
{
    double  yxRatio;                /* Y to X aspect ratio          */
    double  xMax, yMax;             /* Maximum x and y              */
    double  yUnit;                  /* Window size of one pixel     */
    double  xCur, yCur;             /* Current position             */
    short   cci;                    /* Count of color indexes       */
    short   ccv;                    /* Count of color values        */
    short   ciCur;                  /* Current color index          */
    short   ciBorder;               /* Current border color index   */
    short   angCur;                 /* Current angle                */
    int     fPenDown;               /* Pen state                    */
    int     fFill;                  /* Fill state                   */
    int     fPalette;               /* Palette availability         */
    short   xsLeft, xsRight;        /* Absolute window corners      */
    short   ysTop, ysBot;
} TURTLE;
extern TURTLE tc;

#endif /* TURTLE_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -