Lines Matching refs:fb

94 static uint8_t draw_char_vtmono(const struct char_framebuffer *fb,  in draw_char_vtmono()  argument
98 const struct cfb_font *fptr = &(fb->fonts[fb->font_idx]); in draw_char_vtmono()
101 (((fb->screen_info & SCREEN_INFO_MONO_MSB_FIRST) != 0) != font_is_msbfirst); in draw_char_vtmono()
123 const size_t fb_index = (fb_y / 8U) * fb->x_res + fb_x; in draw_char_vtmono()
130 if (fb_x < 0 || fb->x_res <= fb_x || fb_y < 0 || fb->y_res <= fb_y) { in draw_char_vtmono()
191 fb->buf[fb_index] &= ~bg_mask; in draw_char_vtmono()
197 fb->buf[fb_index] |= byte; in draw_char_vtmono()
212 static inline void draw_point(struct char_framebuffer *fb, int16_t x, int16_t y) in draw_point() argument
214 const bool need_reverse = ((fb->screen_info & SCREEN_INFO_MONO_MSB_FIRST) != 0); in draw_point()
215 const size_t index = ((y / 8) * fb->x_res); in draw_point()
218 if (x < 0 || x >= fb->x_res) { in draw_point()
222 if (y < 0 || y >= fb->y_res) { in draw_point()
230 fb->buf[index + x] |= m; in draw_point()
233 static void draw_line(struct char_framebuffer *fb, int16_t x0, int16_t y0, int16_t x1, int16_t y1) in draw_line() argument
243 draw_point(fb, x0, y0); in draw_line()
266 const struct char_framebuffer *fb = &char_fb; in draw_text() local
269 if (!fb->fonts || !fb->buf) { in draw_text()
273 fptr = &(fb->fonts[fb->font_idx]); in draw_text()
280 if ((fb->screen_info & SCREEN_INFO_MONO_VTILED)) { in draw_text()
284 if ((x + fptr->width > fb->x_res) && wrap) { in draw_text()
288 x += fb->kerning + draw_char_vtmono(fb, str[i], x, y, wrap); in draw_text()
299 struct char_framebuffer *fb = &char_fb; in cfb_draw_point() local
301 draw_point(fb, pos->x, pos->y); in cfb_draw_point()
309 struct char_framebuffer *fb = &char_fb; in cfb_draw_line() local
311 draw_line(fb, start->x, start->y, end->x, end->y); in cfb_draw_line()
319 struct char_framebuffer *fb = &char_fb; in cfb_draw_rect() local
321 draw_line(fb, start->x, start->y, end->x, start->y); in cfb_draw_rect()
322 draw_line(fb, end->x, start->y, end->x, end->y); in cfb_draw_rect()
323 draw_line(fb, end->x, end->y, start->x, end->y); in cfb_draw_rect()
324 draw_line(fb, start->x, end->y, start->x, start->y); in cfb_draw_rect()
342 const struct char_framebuffer *fb = &char_fb; in cfb_invert_area() local
343 const bool need_reverse = ((fb->screen_info & SCREEN_INFO_MONO_MSB_FIRST) != 0); in cfb_invert_area()
345 if (x >= fb->x_res || y >= fb->y_res) { in cfb_invert_area()
351 if ((fb->screen_info & SCREEN_INFO_MONO_VTILED)) { in cfb_invert_area()
352 if (x > fb->x_res) { in cfb_invert_area()
353 x = fb->x_res; in cfb_invert_area()
356 if (y > fb->y_res) { in cfb_invert_area()
357 y = fb->y_res; in cfb_invert_area()
360 if (x + width > fb->x_res) { in cfb_invert_area()
361 width = fb->x_res - x; in cfb_invert_area()
364 if (y + height > fb->y_res) { in cfb_invert_area()
365 height = fb->y_res - y; in cfb_invert_area()
375 const size_t index = ((j / 8) * fb->x_res) + i; in cfb_invert_area()
384 uint8_t b = fb->buf[index]; in cfb_invert_area()
399 fb->buf[index] = (b ^ (~m)); in cfb_invert_area()
403 fb->buf[index] = ~fb->buf[index]; in cfb_invert_area()
407 uint8_t b = fb->buf[index]; in cfb_invert_area()
413 fb->buf[index] = (b ^ (~m)); in cfb_invert_area()
426 static int cfb_invert(const struct char_framebuffer *fb) in cfb_invert() argument
428 for (size_t i = 0; i < fb->x_res * fb->y_res / 8U; i++) { in cfb_invert()
429 fb->buf[i] = ~fb->buf[i]; in cfb_invert()
437 const struct char_framebuffer *fb = &char_fb; in cfb_framebuffer_clear() local
439 if (!fb->buf) { in cfb_framebuffer_clear()
443 memset(fb->buf, 0, fb->size); in cfb_framebuffer_clear()
454 struct char_framebuffer *fb = &char_fb; in cfb_framebuffer_invert() local
456 fb->inverted = !fb->inverted; in cfb_framebuffer_invert()
464 const struct char_framebuffer *fb = &char_fb; in cfb_framebuffer_finalize() local
469 if (!fb->buf) { in cfb_framebuffer_finalize()
474 .buf_size = fb->size, in cfb_framebuffer_finalize()
475 .width = fb->x_res, in cfb_framebuffer_finalize()
476 .height = fb->y_res, in cfb_framebuffer_finalize()
477 .pitch = fb->x_res, in cfb_framebuffer_finalize()
480 if (!(fb->pixel_format & PIXEL_FORMAT_MONO10) != !(fb->inverted)) { in cfb_framebuffer_finalize()
481 cfb_invert(fb); in cfb_framebuffer_finalize()
482 err = api->write(dev, 0, 0, &desc, fb->buf); in cfb_framebuffer_finalize()
483 cfb_invert(fb); in cfb_framebuffer_finalize()
487 return api->write(dev, 0, 0, &desc, fb->buf); in cfb_framebuffer_finalize()
493 const struct char_framebuffer *fb = &char_fb; in cfb_get_display_parameter() local
497 return fb->y_res; in cfb_get_display_parameter()
499 return fb->x_res; in cfb_get_display_parameter()
501 return fb->ppt; in cfb_get_display_parameter()
503 if (fb->screen_info & SCREEN_INFO_MONO_VTILED) { in cfb_get_display_parameter()
504 return fb->y_res / fb->ppt; in cfb_get_display_parameter()
506 return fb->y_res; in cfb_get_display_parameter()
508 if (fb->screen_info & SCREEN_INFO_MONO_VTILED) { in cfb_get_display_parameter()
509 return fb->x_res; in cfb_get_display_parameter()
511 return fb->x_res / fb->ppt; in cfb_get_display_parameter()
518 struct char_framebuffer *fb = &char_fb; in cfb_framebuffer_set_font() local
520 if (idx >= fb->numof_fonts) { in cfb_framebuffer_set_font()
524 fb->font_idx = idx; in cfb_framebuffer_set_font()
532 const struct char_framebuffer *fb = &char_fb; in cfb_get_font_size() local
534 if (idx >= fb->numof_fonts) { in cfb_get_font_size()
558 const struct char_framebuffer *fb = &char_fb; in cfb_get_numof_fonts() local
560 return fb->numof_fonts; in cfb_get_numof_fonts()
566 struct char_framebuffer *fb = &char_fb; in cfb_framebuffer_init() local
573 STRUCT_SECTION_COUNT(cfb_font, &fb->numof_fonts); in cfb_framebuffer_init()
575 LOG_DBG("number of fonts %d", fb->numof_fonts); in cfb_framebuffer_init()
577 fb->x_res = cfg.x_resolution; in cfb_framebuffer_init()
578 fb->y_res = cfg.y_resolution; in cfb_framebuffer_init()
579 fb->ppt = 8U; in cfb_framebuffer_init()
580 fb->pixel_format = cfg.current_pixel_format; in cfb_framebuffer_init()
581 fb->screen_info = cfg.screen_info; in cfb_framebuffer_init()
582 fb->kerning = 0; in cfb_framebuffer_init()
583 fb->inverted = false; in cfb_framebuffer_init()
585 fb->fonts = TYPE_SECTION_START(cfb_font); in cfb_framebuffer_init()
586 fb->font_idx = 0U; in cfb_framebuffer_init()
588 fb->size = fb->x_res * fb->y_res / fb->ppt; in cfb_framebuffer_init()
589 fb->buf = k_malloc(fb->size); in cfb_framebuffer_init()
590 if (!fb->buf) { in cfb_framebuffer_init()
594 memset(fb->buf, 0, fb->size); in cfb_framebuffer_init()
601 struct char_framebuffer *fb = &char_fb; in cfb_framebuffer_deinit() local
603 if (fb->buf) { in cfb_framebuffer_deinit()
604 k_free(fb->buf); in cfb_framebuffer_deinit()
605 fb->buf = NULL; in cfb_framebuffer_deinit()