MCPcopy Create free account
hub / github.com/crosspoint-reader/crosspoint-reader / takeScreenshot

Method takeScreenshot

src/util/ScreenshotUtil.cpp:70–102  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

68}
69
70void ScreenshotUtil::takeScreenshot(GfxRenderer& renderer) {
71 const uint8_t* fb = renderer.getFrameBuffer();
72 if (!fb) {
73 LOG_ERR("SCR", "Framebuffer not available");
74 return;
75 }
76
77 ScreenshotInfo info = activityManager.getScreenshotInfo();
78 char filename[256];
79 buildFilename(info, filename, sizeof(filename));
80
81 bool saved = saveFramebufferAsBmp(filename, fb, renderer.getDisplayWidth(), renderer.getDisplayHeight());
82 if (saved) {
83 LOG_DBG("SCR", "Screenshot saved to %s", filename);
84 } else {
85 LOG_ERR("SCR", "Failed to save screenshot");
86 return;
87 }
88
89 // Display a border around the screen to indicate a screenshot was taken
90 if (renderer.storeBwBuffer()) {
91 int marginTop, marginRight, marginBottom, marginLeft;
92 renderer.getOrientedViewableTRBL(&marginTop, &marginRight, &marginBottom, &marginLeft);
93 int width = renderer.getScreenWidth() - marginLeft - marginRight - 1;
94 int height = renderer.getScreenHeight() - marginTop - marginBottom - 1;
95 // Add extra margin to the border to make it more visible
96 renderer.drawRect(marginLeft + 1, marginTop + 1, width - 2, height - 2, 2, true);
97 renderer.displayBuffer();
98 delay(1000);
99 renderer.restoreBwBuffer();
100 renderer.displayBuffer(HalDisplay::RefreshMode::HALF_REFRESH);
101 }
102}
103
104bool ScreenshotUtil::saveFramebufferAsBmp(const char* filename, const uint8_t* framebuffer, int width, int height) {
105 if (!framebuffer) {

Callers

nothing calls this directly

Calls 11

storeBwBufferMethod · 0.80
getScreenWidthMethod · 0.80
getScreenHeightMethod · 0.80
drawRectMethod · 0.80
restoreBwBufferMethod · 0.80
getFrameBufferMethod · 0.45
getScreenshotInfoMethod · 0.45
getDisplayWidthMethod · 0.45
getDisplayHeightMethod · 0.45
displayBufferMethod · 0.45

Tested by

no test coverage detected