mirror of https://github.com/MLXXXp/Arduboy2.git
Make color parameter in draw functions optional
Color defaults to WHITE. Also: - Document frame functions and getPixel(). - Change screen buffer from unsigned char to uint8_t
This commit is contained in:
parent
44b6a6df98
commit
ad5da39fdc
|
@ -108,60 +108,64 @@ public:
|
||||||
void display();
|
void display();
|
||||||
|
|
||||||
/// Sets a single pixel on the screen buffer to white or black.
|
/// Sets a single pixel on the screen buffer to white or black.
|
||||||
void drawPixel(int x, int y, uint8_t color);
|
void drawPixel(int x, int y, uint8_t color = WHITE);
|
||||||
|
|
||||||
|
/// Returns the state of the given pixel in the screen buffer.
|
||||||
|
/**
|
||||||
|
* Return value will be 1 if the pixel is on (white) or 0 if the pixel is off (black).
|
||||||
|
*/
|
||||||
uint8_t getPixel(uint8_t x, uint8_t y);
|
uint8_t getPixel(uint8_t x, uint8_t y);
|
||||||
|
|
||||||
/// Draw a circle of a defined radius.
|
/// Draw a circle of a defined radius.
|
||||||
/**
|
/**
|
||||||
* Draws a circle in white or black. X and Y are the center point of the circle.
|
* Draws a circle in white or black. X and Y are the center point of the circle.
|
||||||
*/
|
*/
|
||||||
void drawCircle(int16_t x0, int16_t y0, uint8_t r, uint8_t color);
|
void drawCircle(int16_t x0, int16_t y0, uint8_t r, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws one or more "corners" of a circle.
|
/// Draws one or more "corners" of a circle.
|
||||||
void drawCircleHelper(int16_t x0, int16_t y0, uint8_t r, uint8_t cornername, uint8_t color);
|
void drawCircleHelper(int16_t x0, int16_t y0, uint8_t r, uint8_t cornername, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws a filled-in circle.
|
/// Draws a filled-in circle.
|
||||||
void fillCircle(int16_t x0, int16_t y0, uint8_t r, uint8_t color);
|
void fillCircle(int16_t x0, int16_t y0, uint8_t r, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws one or both vertical halves of a filled-in circle.
|
/// Draws one or both vertical halves of a filled-in circle.
|
||||||
void fillCircleHelper(int16_t x0, int16_t y0, uint8_t r, uint8_t cornername, int16_t delta, uint8_t color);
|
void fillCircleHelper(int16_t x0, int16_t y0, uint8_t r, uint8_t cornername, int16_t delta, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws a line between two points.
|
/// Draws a line between two points.
|
||||||
/**
|
/**
|
||||||
* Uses Bresenham's algorithm.
|
* Uses Bresenham's algorithm.
|
||||||
*/
|
*/
|
||||||
void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint8_t color);
|
void drawLine(int16_t x0, int16_t y0, int16_t x1, int16_t y1, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws a rectangle of a width and height.
|
/// Draws a rectangle of a width and height.
|
||||||
void drawRect(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t color);
|
void drawRect(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws vertical line.
|
/// Draws vertical line.
|
||||||
void drawFastVLine(int16_t x, int16_t y, uint8_t h, uint8_t color);
|
void drawFastVLine(int16_t x, int16_t y, uint8_t h, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws a horizontal line.
|
/// Draws a horizontal line.
|
||||||
void drawFastHLine(int16_t x, int16_t y, uint8_t w, uint8_t color);
|
void drawFastHLine(int16_t x, int16_t y, uint8_t w, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws a filled-in rectangle.
|
/// Draws a filled-in rectangle.
|
||||||
void fillRect(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t color);
|
void fillRect(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Fills the screen buffer with white or black.
|
/// Fills the screen buffer with white or black.
|
||||||
void fillScreen(uint8_t color);
|
void fillScreen(uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws a rectangle with rounded edges.
|
/// Draws a rectangle with rounded edges.
|
||||||
void drawRoundRect(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t r, uint8_t color);
|
void drawRoundRect(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t r, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws a filled-in rectangle with rounded edges.
|
/// Draws a filled-in rectangle with rounded edges.
|
||||||
void fillRoundRect(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t r, uint8_t color);
|
void fillRoundRect(int16_t x, int16_t y, uint8_t w, uint8_t h, uint8_t r, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws the outline of a triangle.
|
/// Draws the outline of a triangle.
|
||||||
void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint8_t color);
|
void drawTriangle(int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws a filled-in triangle.
|
/// Draws a filled-in triangle.
|
||||||
void fillTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint8_t color);
|
void fillTriangle (int16_t x0, int16_t y0, int16_t x1, int16_t y1, int16_t x2, int16_t y2, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws a bitmap from program memory to a specific X/Y
|
/// Draws a bitmap from program memory to a specific X/Y
|
||||||
void drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t color);
|
void drawBitmap(int16_t x, int16_t y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Draws images that are bit-oriented horizontally.
|
/// Draws images that are bit-oriented horizontally.
|
||||||
/**
|
/**
|
||||||
|
@ -170,7 +174,7 @@ public:
|
||||||
* allows them to be directly written to the screen. It is
|
* allows them to be directly written to the screen. It is
|
||||||
* recommended you use drawBitmap when possible.
|
* recommended you use drawBitmap when possible.
|
||||||
*/
|
*/
|
||||||
void drawSlowXYBitmap(int16_t x, int16_t y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t color);
|
void drawSlowXYBitmap(int16_t x, int16_t y, const uint8_t *bitmap, uint8_t w, uint8_t h, uint8_t color = WHITE);
|
||||||
|
|
||||||
/// Get a pointer to the display buffer.
|
/// Get a pointer to the display buffer.
|
||||||
unsigned char* getBuffer();
|
unsigned char* getBuffer();
|
||||||
|
@ -186,13 +190,22 @@ public:
|
||||||
/// Swap the references of two pointers.
|
/// Swap the references of two pointers.
|
||||||
void swap(int16_t& a, int16_t& b);
|
void swap(int16_t& a, int16_t& b);
|
||||||
|
|
||||||
|
/// Sets the frame rate in frames per second.
|
||||||
void setFrameRate(uint8_t rate);
|
void setFrameRate(uint8_t rate);
|
||||||
|
|
||||||
|
/// Returns "true" if it's time for the next frame.
|
||||||
bool nextFrame();
|
bool nextFrame();
|
||||||
|
|
||||||
|
/// Returns "true" if the current frame number is evenly divisible by the specified number.
|
||||||
|
/**
|
||||||
|
* If called with the same value each time, will return "true" if the given
|
||||||
|
* number of frames has elapsed since the last frame in which it was "true".
|
||||||
|
*/
|
||||||
bool everyXFrames(uint8_t frames);
|
bool everyXFrames(uint8_t frames);
|
||||||
|
|
||||||
/// Returns the load on the CPU as a percentage.
|
/// Returns the load on the CPU as a percentage.
|
||||||
/**
|
/**
|
||||||
* This is based on how much of the time your app is spends rendering
|
* This is based on how much of the time your app is spending rendering
|
||||||
* frames. This number can be higher than 100 if your app is rendering
|
* frames. This number can be higher than 100 if your app is rendering
|
||||||
* really slowly.
|
* really slowly.
|
||||||
*/
|
*/
|
||||||
|
@ -213,7 +226,8 @@ protected:
|
||||||
// helper function for sound enable/disable system control
|
// helper function for sound enable/disable system control
|
||||||
void sysCtrlSound(uint8_t buttons, uint8_t led, uint8_t eeVal);
|
void sysCtrlSound(uint8_t buttons, uint8_t led, uint8_t eeVal);
|
||||||
|
|
||||||
unsigned char sBuffer[(HEIGHT*WIDTH)/8];
|
// Screen buffer
|
||||||
|
uint8_t sBuffer[(HEIGHT*WIDTH)/8];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -267,7 +281,7 @@ protected:
|
||||||
uint8_t textColor;
|
uint8_t textColor;
|
||||||
uint8_t textBackground;
|
uint8_t textBackground;
|
||||||
uint8_t textSize;
|
uint8_t textSize;
|
||||||
bool textWrap; // If set, 'wrap' text at right edge of display
|
bool textWrap;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -232,7 +232,7 @@ void ArduboyCore::paint8Pixels(uint8_t pixels)
|
||||||
SPI.transfer(pixels);
|
SPI.transfer(pixels);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ArduboyCore::paintScreen(const unsigned char *image)
|
void ArduboyCore::paintScreen(const uint8_t *image)
|
||||||
{
|
{
|
||||||
for (int i = 0; i < (HEIGHT*WIDTH)/8; i++)
|
for (int i = 0; i < (HEIGHT*WIDTH)/8; i++)
|
||||||
{
|
{
|
||||||
|
@ -242,7 +242,7 @@ void ArduboyCore::paintScreen(const unsigned char *image)
|
||||||
|
|
||||||
// paint from a memory buffer, this should be FAST as it's likely what
|
// paint from a memory buffer, this should be FAST as it's likely what
|
||||||
// will be used by any buffer based subclass
|
// will be used by any buffer based subclass
|
||||||
void ArduboyCore::paintScreen(unsigned char image[])
|
void ArduboyCore::paintScreen(uint8_t image[])
|
||||||
{
|
{
|
||||||
for (int i = 0; i < (HEIGHT*WIDTH)/8; i++)
|
for (int i = 0; i < (HEIGHT*WIDTH)/8; i++)
|
||||||
{
|
{
|
||||||
|
|
|
@ -220,14 +220,14 @@ public:
|
||||||
* Each byte will be 8 vertical pixels, painted in the same order as
|
* Each byte will be 8 vertical pixels, painted in the same order as
|
||||||
* explained above in paint8Pixels.
|
* explained above in paint8Pixels.
|
||||||
*/
|
*/
|
||||||
void static paintScreen(const unsigned char *image);
|
void static paintScreen(const uint8_t *image);
|
||||||
|
|
||||||
/// paints an entire image directly to hardware (from RAM)
|
/// paints an entire image directly to hardware (from RAM)
|
||||||
/*
|
/*
|
||||||
* Each byte will be 8 vertical pixels, painted in the same order as
|
* Each byte will be 8 vertical pixels, painted in the same order as
|
||||||
* explained above in paint8Pixels.
|
* explained above in paint8Pixels.
|
||||||
*/
|
*/
|
||||||
void static paintScreen(unsigned char image[]);
|
void static paintScreen(uint8_t image[]);
|
||||||
|
|
||||||
/// paints a blank (black) screen to hardware
|
/// paints a blank (black) screen to hardware
|
||||||
void static blank();
|
void static blank();
|
||||||
|
|
Loading…
Reference in New Issue