diff --git a/src/graphics/sprite.cpp b/src/graphics/sprite.cpp index 1a91312..0731a91 100644 --- a/src/graphics/sprite.cpp +++ b/src/graphics/sprite.cpp @@ -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; diff --git a/src/graphics/sprite.h b/src/graphics/sprite.h index 20a40bf..16b43ee 100644 --- a/src/graphics/sprite.h +++ b/src/graphics/sprite.h @@ -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_ diff --git a/src/graphics/wave.h b/src/graphics/wave.h index 96d32db..e216713 100644 --- a/src/graphics/wave.h +++ b/src/graphics/wave.h @@ -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