Simplified Brain Screen C++ API

pros::screen

Note

The default color for the pen is white, while the default eraser color is black.

Drawing Functions

set_pen

Set the pen color for subsequent graphics operations

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void set_pen(const std::uint32_t color);
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
void initialize() {
  pros::screen::set_pen(COLOR_RED);
}

void opcontrol() {
   int iter = 0;
   while(1){
      // This should print in red.
      pros::screen::print(TEXT_MEDIUM, 1, "%d", iter++);
   }
}
Parameters  
color The pen color to set (it is recommended to use values from the enum defined in colors.h)

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


set_eraser

Set the eraser color for subsequent graphics operations

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void set_eraser(const std::uint32_t color);
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void initialize() {
  pros::screen::set_eraser(COLOR_RED);
}

void opcontrol() {
   while(1){
      // This should turn the screen red.
      pros::screen::erase();
   }
}
Parameters  
color The background color to set (it is recommended to use values from the enum defined in colors.h)

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


get_pen

Get the current pen color.

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void get_pen(const std::uint32_t color);
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void initialize() {
  pros::screen::set_pen(COLOR_RED);
}

void opcontrol() {
   while(1){
      // Should print number equivalent to COLOR_RED defined in colors.h.
      pros::screen::print(TEXT_MEDIUM, 1, "%d", pros::screen::get_pen());
   }
}

Returns: The current pen color of the screen object in the form of a value from the enum defined in colors.h.


get_eraser

Get the current eraser color.

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void get_eraser(const std::uint32_t color);
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void initialize() {
  pros::screen::set_pen(COLOR_RED);
}

void opcontrol() {
   while(1){
      // Should print number equivalent to COLOR_RED defined in colors.h.
      pros::screen::print(TEXT_MEDIUM, 1, "%d", pros::screen::get_eraser());
   }
}

Returns: The current eraser color of the screen object in the form of a value from the enum defined in colors.h.


erase

Clear entire display with eraser color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void erase();
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void initialize() {
  pros::screen::set_eraser(COLOR_RED);
}

void opcontrol() {
   while(1){
      // This should turn the screen red.
      pros::screen::erase();
   }
}

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


scroll

Scroll lines on the display upwards.

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void scroll(const std::int16_t start_line, const std::int16_t lines);
1
2
3
4
5
void opcontrol() {
   pros::screen::print(TEXT_MEDIUM, 4, "Line Here");
   // Scroll 3 lines
   pros::screen::scroll(4, 3);
}
Parameters  
start_line The line from which scrolling will start
lines The number of lines to scroll up

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


scroll_area

Scroll lines within a region on the display

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void scroll_area(const std::int16_t x0, const std::int16_t y0, const std::int16_t x1, const std::int16_t y1, std::int16_t lines);
1
2
3
4
5
void opcontrol() {
   pros::screen::print(TEXT_MEDIUM, 1, "Line Here");
   // Scrolls area of screen upwards slightly. including line of text
   pros::screen::scroll(0,0, 400, 200, 3);
}
Parameters  
x0 The x coordinate of the top left corner of the rectangular region
y0 The y coordinate of the top left corner of the rectangular region
x1 The x coordinate of the bottom right corner of the rectangular region
y1 The y coordinate of the bottom right corner of the rectangular region
lines The number of lines to scroll up

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


copy_area

Copy a screen region (designated by a rectangle) to an off-screen buffer from the screen

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void copy_area(const std::int16_t x0, const std::int16_t y0, const std::int16_t x1, const std::int16_t y1, uint32_t* buf, const std::int32_t stride);
1
2
3
4
5
6
7
8
void opcontrol() {
   uint32_t* buf = malloc(sizeof(uint32_t) * 400 * 200);
   pros::screen::print(TEXT_MEDIUM, 1, "Line Here");

   // Copies area of the screen including text
   pros::screen::copy_area(0, 0, 400, 200, (uint32_t*)buf, 400 + 1);
   // Equation for stride is x2 - x1 + 1
}
Parameters  
x0 The x coordinate of the top left corner of the rectangular region
y0 The y coordinate of the top left corner of the rectangular region
x1 The x coordinate of the bottom right corner of the rectangular region
y1 The y coordinate of the bottom right corner of the rectangular region
buf Off-screen buffer containing screen data
stride Off-screen buffer width in pixels, such that image size is stride-padding

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


draw_pixel

Draw a single pixel on the screen using the current pen color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void draw_pixel(const std::int16_t x, const std::int16_t y);
1
2
3
4
5
6
7
8
int i = 0;
void opcontrol() {
    while(i < 200){
       pros::screen::draw_pixel(100,i++);
       // Draws a line at x = 100 gradually down the screen, pixel by pixel
       pros::delay(200);
    }
}
Parameters  
x The x coordinate of the pixel
y The y coordinate of the pixel

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


erase_pixel

Erase a pixel from the screen using the current eraser color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void erase_pixel(const std::int16_t x, const std::int16_t y);
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
 void opcontrol() {
    // Color the Screen in Red
    pros::screen::set_pen(COLOR_RED);
    pros::screen::fill_rect(0,0,400,200);
    int i = 0;
    while(i < 200){
       pros::screen::erase_pixel(100,i++);
       // Erases a line at x = 100 gradually down the screen, pixel by pixel
       pros::delay(200);
    }
}
Parameters  
x The x coordinate of the pixel
y The y coordinate of the pixel

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


draw_line

Draw a line on the screen using the current pen color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void draw_line(const std::int16_t x0, const std::int16_t y0, const std::int16_t x1, const std::int16_t y1);
1
2
3
4
5
void opcontrol() {
    // Draw line down the screen at x = 100
    pros::screen::draw_line(100,0,100,200);

}
Parameters  
x0 The x coordinate of the first point of the line
y0 The y coordinate of the first point of the line
x1 The x coordinate of the second point of the line
y1 The y coordinate of the second point of the line

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


erase_line

Erase a line on the screen using the current eraser color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void erase_line(const std::int16_t x0, const std::int16_t y0, const std::int16_t x1, const std::int16_t y1);
1
2
3
4
5
6
7
void opcontrol() {
    // Color the Screen in Red
    pros::screen::set_pen(COLOR_RED);
    pros::screen::fill_rect(0,0,400,200);
    // Erase line down the screen at x = 100
    pros::screen::erase_line(100,0,100,200);
}
Parameters  
x0 The x coordinate of the first point of the line
y0 The y coordinate of the first point of the line
x1 The x coordinate of the second point of the line
y1 The y coordinate of the second point of the line

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


draw_rect

Draw a rectangle on the screen using the current pen color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void draw_rect(const std::int16_t x0, const std::int16_t y0, const std::int16_t x1, const std::int16_t y1);
1
2
3
4
5
void opcontrol() {
    // Color the Screen in Red
    pros::screen::set_pen(COLOR_RED);
    pros::screen::draw_rect(1,1,480,200);
}
Parameters  
x0 The x coordinate of the top left point of the line
y0 The y coordinate of the top left point of the line
x1 The x coordinate of the bottom right point of the line
y1 The y coordinate of the bottom right point of the line

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


erase_rect

Erase a rectangle on the screen using the current eraser color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void erase_rect(const std::int16_t x0, const std::int16_t y0, const std::int16_t x1, const std::int16_t y1);
1
2
3
4
5
void opcontrol() {
    // Draw Box Around Half the Screen in Red
    pros::screen::set_eraser(COLOR_RED);
    pros::screen::erase_rect(5,5,240,200);
}
Parameters  
x0 The x coordinate of the top left point of the line
y0 The y coordinate of the top left point of the line
x1 The x coordinate of the bottom right point of the line
y1 The y coordinate of the bottom right point of the line

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


fill_rect

Fill a rectanglular region on the screen using the current pen color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void fill_rect(const std::int16_t x0, const std::int16_t y0, const std::int16_t x1, const std::int16_t y1);
1
2
3
4
5
void opcontrol() {
    // Fill Around Half the Screen in Red
    pros::screen::set_pen(COLOR_RED);
    pros::screen::fill_rect(5,5,240,200);
}
Parameters  
x0 The x coordinate of the top left point of the line
y0 The y coordinate of the top left point of the line
x1 The x coordinate of the bottom right point of the line
y1 The y coordinate of the bottom right point of the line

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


draw_circle

Draw a circle on the screen using the current pen color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void draw_circle(const std::int16_t x, const std::int16_t y, const std::int16_t radius);
1
2
3
4
5
void opcontrol() {
    // Draw a circle with radius of 100 in red
    pros::screen::set_pen(COLOR_RED);
    pros::screen::draw_circle(240, 200, 100);
}
Parameters  
x The x coordinate of the center of the circle
y The y coordinate of the center of the circle
radius Radius of the circle

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


erase_circle

Erase a circle on the screen using the current eraser color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void erase_circle(const std::int16_t x, const std::int16_t y, const std::int16_t radius);
1
2
3
4
5
6
7
void opcontrol() {
    pros::screen::set_pen(COLOR_RED);
    pros::screen::fill_rect(5,5,240,200);
    // Erase a circle with radius of 100 in COLOR_BLUE
    pros::screen::set_pen(COLOR_BLUE);
    pros::screen::erase_circle(240, 200, 100);
}
Parameters  
x The x coordinate of the center of the circle
y The y coordinate of the center of the circle
radius Radius of the circle

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


fill_circle

Fill a circular region of the screen using the current pen color

This function uses the following values of errno when an error state is reached:

  • EACCESS - Another resource is currently trying to access the screen mutex.
void fill_circle(const std::int16_t x, const std::int16_t y, const std::int16_t radius);
1
2
3
4
5
6
7
void opcontrol() {
    pros::screen::set_pen(COLOR_RED);
    pros::screen::fill_rect(5,5,240,200);
    // Fill a circlular area with radius of 100 in COLOR_BLUE
    pros::screen::set_pen(COLOR_BLUE);
    pros::screen::fill_circle(240, 200, 100);
}
Parameters  
x The x coordinate of the center of the circle
y The y coordinate of the center of the circle
radius Radius of the circle

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


Text Printing Functions

print

Print a formatted string to the screen, with a line and text style specifier.

void print(pros::text_format_e_t txt_fmt, const std::int16_t line, const char* text, Params... args);
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void opcontrol() {
    int i = 0;

    pros::screen::set_pen(COLOR_BLUE);
    while(1){
       // Will print seconds started since program started on line 3
       pros::screen::print(pros::TEXT_MEDIUM, 3, "Seconds Passed: %3d", i++);
       pros::delay(1000);
    }
}
Parameters  
txt_fmt Text format enum that determines if the text is medium, large, medium_center, or large_center.
line The one indexed line number on which to print
text Formatted string for printing variables and text
Optional list of arguments for the format string

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.


print

Print a formatted string to the screen at a coordinate location

void print(pros::text_format_e_t txt_fmt, const std::int16_t x, const std::int16_t y, const char* text, Params... args);
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
void opcontrol() {
    int i = 0;

    pros::screen::set_pen(COLOR_BLUE);
    while(1){
       // Will print seconds started since program started.
       pros::screen::print(pros::TEXT_SMALL, 3, "Seconds Passed: %3d", i++);
       pros::delay(1000);
    }
}
Parameters  
txt_fmt Text format enum that determines if the text is small, medium, or large.
x The x-coordinate to display the string
y The y-coordinate to display the string
text Formatted string for printing variables and text
Optional list of arguments for the format string

Returns: 1 if the operation was successful or PROS_ERR if the operation failed, setting errno.



Enumerated Values

pros::text_format_e_t

Different font sizes that can be used in printing text.

1
2
3
4
5
6
7
typedef enum {
   E_TEXT_SMALL = 0,
   E_TEXT_MEDIUM,
   E_TEXT_LARGE,
   E_TEXT_MEDIUM_CENTER,
   E_TEXT_LARGE_CENTER
} text_format_e_t;
Value  
E_TEXT_SMALL Small text font size (Only available in coordinate printing)
E_TEXT_MEDIUM Normal/Medium text font size
E_TEXT_LARGE Large text font size
E_TEXT_MEDIUM_CENTER Medium centered text (Only available in line printing)
E_TEXT_LARGE_CENTER Large centered text (Only available in line printing)

pros::last_touch_e_t

Enum indicating what the current touch status is for the touchscreen.

1
2
3
4
5
typedef enum {
   E_TOUCH_RELEASED = 0,
   E_TOUCH_PRESSED,
   E_TOUCH_HELD
} last_touch_e_t;
Value  
E_TOUCH_RELEASED Last interaction with screen was a quick press
E_TOUCH_PRESSED Last interaction with screen was a release
E_TOUCH_HELD User is holding screen down

Structures

pros::screen_touch_status_s_t

1
2
3
4
5
6
7
typedef struct screen_touch_status_s {
   last_touch_e_t touch_status; ///< Represents if the screen is being held, released, or pressed.
   int16_t x; ///< Represents the x value of the location of the touch.
   int16_t y; ///< Represents the y value of the location of the touch.
   int32_t press_count; ///< Represents how many times the screen has be pressed.
   int32_t release_count; ///< Represents how many times the user released after a touch on the screen.
} screen_touch_status_s_t;

Typedefs

pros::touch_event_cb_fn_t

typedef void (*touch_event_cb_fn_t)();

A callback function for a screen callback

This will be called each time its corresponding touch type is happens.