Documentation for graphics

This commit is contained in:
Christian Colglazier 2020-09-26 23:31:57 -04:00
parent a349a0d793
commit 8abc2532bc
3 changed files with 168 additions and 19 deletions

View File

@ -19,15 +19,15 @@ Sprite::~Sprite() {
delete[] sprite;
}
void Sprite::AddPixel(int x, int y, bool solid) {
sprite[x][height-y-1] = solid;
void Sprite::AddPixel(int x, int y, bool on) {
sprite[x][height-y-1] = on;
}
void Sprite::AddLine(int x1,
int y1,
int x2,
int y2,
bool solid) {
bool on) {
uint8_t deltaX = abs(x2 - x1);
uint8_t deltaY = abs(y2 - y1);
int8_t signX = ((x1 < x2) ? 1 : -1);
@ -35,9 +35,9 @@ void Sprite::AddLine(int x1,
int16_t error = deltaX - deltaY;
int16_t error2;
AddPixel(x2, y2, solid);
AddPixel(x2, y2, on);
while((x1 != x2) || (y1 != y2)) {
AddPixel(x1, y1, solid);
AddPixel(x1, y1, on);
error2 = error * 2;
if(error2 > -deltaY) {
error -= deltaY;

View File

@ -13,24 +13,154 @@ class Sprite {
bool** sprite;
int x_shift = 0;
int y_shift = 0;
int GetShiftArray(int, int, int);
int GetShiftArrayX(int);
int GetShiftArrayY(int);
/*
* Converts a graphic pixel location to a new one based on
* a given shift.
*
* @param pos pixel position
* @param shift shift amount
* @param array_size max length of dimension
* return new pixel position
*/
int GetShiftArray(int pos,
int shift,
int array_size);
/*
* Converts a x axis position based upon the sprites shift.
*
* @param pos x axis position
* @return new x axis position
*/
int GetShiftArrayX(int pos);
/*
* Converts a y axis position based upon the sprites shift.
*
* @param pos y axis position
* @return new y axis position
*/
int GetShiftArrayY(int pos);
public:
Sprite(int, int);
/*
* Contsturctor for sprite.
*
* @param m_width width
* @param m_height height
*/
Sprite(int m_width,
int m_height);
/*
* Destructor for sprite.
*/
~Sprite();
void AddPixel(int, int, bool);
void AddLine(int, int, int, int, bool);
/*
* Sets a pixel on the sprite.
*
* @param x pixel x coordinate
* @param y pixel y coordinate
* @param on pixel on or off
*/
void AddPixel(int x,
int y,
bool on);
/*
* Adds a line to the sprite.
*
* @param x1 x coordinate of the first point
* @param y1 y coordinate of the first point
* @param x2 x coordinate of the second point
* @param y2 y coordinate of the second point
* @param on line display on or off
*/
void AddLine(int x1,
int y1,
int x2,
int y2,
bool on);
/*
* Returns the height of the sprite.
*
* @return sprite height
*/
int GetHeight();
/*
* Returns the width of the sprite.
*
* @return sprite width
*/
int GetWidth();
/*
* Returns 2d array of booleans representing pixel state of sprite.
*
* @return sprite graphic
*/
bool** GetSprite();
void Draw(DaisyPatch, int, int);
void DrawTile(DaisyPatch, int, int, int, int);
/*
* Draws sprite on display.
*
* @param patch daisy patch board
* @param x starting x coordinate of sprite
* @param y starting y coordinate of sprite
*/
void Draw(DaisyPatch patch,
int x,
int y);
/*
* Draws the sprite on the display where the sprite will form
* a tile pattern when drawn on a canvus larger than the sprite.
*
* @param patch daisy patch board
* @param x1 x coordinate of the first point
* @param y1 y coordinate of the first point
* @param x2 x coordinate of the second point
* @param y2 y coordinate of the second point
*/
void DrawTile(DaisyPatch patch,
int x1,
int y1,
int x2,
int y2);
/*
* Sets sprite pixels to off.
*/
void SetBlank();
void SetXShift(int);
void SetYShift(int);
void AdjustXShift(int);
void AdjustYShift(int);
/*
* Sets the x axis shift.
*
* @param x shift value for the x axis
*/
void SetXShift(int x);
/*
* Sets the y axis shift.
*
* @param y shift value for the x axis
*/
void SetYShift(int y);
/*
* Adjusts x axis shift by the given amount.
*
* @param x shift of x axis
*/
void AdjustXShift(int x);
/*
* Adjusts y axis shift by the given amount.
*
* @param y shift of x axis
*/
void AdjustYShift(int y);
};
#endif // CASCADE_GRAPHICS_SPRITE_H_

View File

@ -11,10 +11,29 @@ class Wave: public Sprite {
private:
WaveShape wave;
const double pi = std::acos(-1);
/*
* Changes pixels of the graphic based on the set wave shape.
*/
void DrawShape();
public:
Wave(WaveShape, int, int);
void SetWaveShape(WaveShape);
/*
* Contstructor for wave shape sprite.
*
* @param m_wave wave shape
* @param width sprite width
* @param height sprite height
*/
Wave(WaveShape m_wave,
int width,
int height);
/*
* Sets the sprites wave shape.
*
* @param m_wave wave shape
*/
void SetWaveShape(WaveShape m_wave);
};
#endif