asteroids-cs165/include/uiDraw.h

136 lines
5.8 KiB
C++

/***********************************************************************
* Header File:
* User Interface Draw : put pixels on the screen
* Author:
* Br. Helfrich
* Summary:
* This is the code necessary to draw on the screen. We have a collection
* of procedural functions here because each draw function does not
* retain state. In other words, they are verbs (functions), not nouns
* (variables) or a mixture (objects)
************************************************************************/
#ifndef UI_DRAW_H
#define UI_DRAW_H
#include <string> // To display text on the screen
#include <cmath> // for M_PI, sin() and cos()
#include "point.h" // Where things are drawn
using std::string;
/************************************************************************
* DRAW DIGIT
* Draw a single digit in the old school line drawing style. The
* size of the glyph is 8x11 or x+(0..7), y+(0..10)
*************************************************************************/
void drawDigit(const Point & topLeft, char digit);
/*************************************************************************
* DRAW NUMBER
* Display an integer on the screen using the 7-segment method
*************************************************************************/
void drawNumber(const Point & topLeft, int number);
/*************************************************************************
* DRAW TEXT
* Draw text using a simple bitmap font
************************************************************************/
void drawText(const Point & topLeft, const char * text);
/************************************************************************
* ROTATE
* Rotate a given point (point) around a given origin (center) by a given
* number of degrees (angle).
*************************************************************************/
void rotate(Point & point, const Point & origin, int rotation = 0);
/************************************************************************
* DRAW RECTANGLE
* Draw a rectangle on the screen centered on a given point (center) of
* a given size (width, height), and at a given orientation (rotation)
* measured in degrees (0 - 360)
*************************************************************************/
void drawRect(const Point & center, int width, int height, int rotation);
/************************************************************************
* DRAW CIRCLE
* Draw a circle from a given location (center) of a given size (radius).
*************************************************************************/
void drawCircle(const Point & center, int radius);
/************************************************************************
* DRAW POLYGON
* Draw a polygon from a given location (center) of a given size (radius).
*************************************************************************/
void drawPolygon(const Point & center,
int radius = 20,
int points = 4,
int rotation = 0);
/************************************************************************
* DRAW LINE
* Draw a line on the screen from the beginning to the end.
*************************************************************************/
void drawLine(const Point & begin, const Point & end,
float red = 1.0, float green = 1.0, float blue = 1.0);
/***********************************************************************
* DRAW Lander
* Draw a moon-lander spaceship on the screen at a given point
***********************************************************************/
void drawLander(const Point & point);
/***********************************************************************
* DRAW Lander Flame
* Draw the flames coming out of a moonlander for thrust
***********************************************************************/
void drawLanderFlames(const Point & point,
bool bottom,
bool left,
bool right);
/************************************************************************
* DRAW DOT
* Draw a single point on the screen, 2 pixels by 2 pixels
*************************************************************************/
void drawDot(const Point & point);
/************************************************************************
* DRAW Sacred Bird
* Draw the bird on the screen
*************************************************************************/
void drawSacredBird(const Point & center, float radius);
/************************************************************************
* DRAW Tough Bird
* Draw a tough bird on the screen
*************************************************************************/
void drawToughBird(const Point & center, float radius, int hits);
/************************************************************************
* DRAW Ship
* Draw the spaceship on the screen
*************************************************************************/
void drawShip(const Point & point, int rotation, bool thrust);
/**********************************************************************
* DRAW * ASTEROID
**********************************************************************/
void drawSmallAsteroid( const Point & point, int rotation);
void drawMediumAsteroid(const Point & point, int rotation);
void drawLargeAsteroid( const Point & point, int rotation);
/******************************************************************
* RANDOM
* This function generates a random number. The user specifies
* The parameters
* INPUT: min, max : The number of values (min <= num <= max)
* OUTPUT <return> : Return the integer
****************************************************************/
int random(int min, int max);
double random(double min, double max);
#endif // UI_DRAW_H