Lines Matching refs:surface

81 void gfx_copyrect(gfx_surface *surface, uint x, uint y, uint width, uint height, uint x2, uint y2) {  in gfx_copyrect()  argument
83 if (x >= surface->width) in gfx_copyrect()
85 if (x2 >= surface->width) in gfx_copyrect()
87 if (y >= surface->height) in gfx_copyrect()
89 if (y2 >= surface->height) in gfx_copyrect()
95 if (x + width > surface->width) in gfx_copyrect()
96 width = surface->width - x; in gfx_copyrect()
97 if (x2 + width > surface->width) in gfx_copyrect()
98 width = surface->width - x2; in gfx_copyrect()
101 if (y + height > surface->height) in gfx_copyrect()
102 height = surface->height - y; in gfx_copyrect()
103 if (y2 + height > surface->height) in gfx_copyrect()
104 height = surface->height - y2; in gfx_copyrect()
106 surface->copyrect(surface, x, y, width, height, x2, y2); in gfx_copyrect()
112 void gfx_fillrect(gfx_surface *surface, uint x, uint y, uint width, uint height, uint color) { in gfx_fillrect() argument
113 LTRACEF("surface %p, x %u y %u w %u h %u c %u\n", surface, x, y, width, height, color); in gfx_fillrect()
115 if (unlikely(x >= surface->width)) in gfx_fillrect()
117 if (y >= surface->height) in gfx_fillrect()
123 if (x + width > surface->width) in gfx_fillrect()
124 width = surface->width - x; in gfx_fillrect()
127 if (y + height > surface->height) in gfx_fillrect()
128 height = surface->height - y; in gfx_fillrect()
130 surface->fillrect(surface, x, y, width, height, color); in gfx_fillrect()
136 void gfx_putpixel(gfx_surface *surface, uint x, uint y, uint color) { in gfx_putpixel() argument
137 if (unlikely(x >= surface->width)) in gfx_putpixel()
139 if (y >= surface->height) in gfx_putpixel()
142 surface->putpixel(surface, x, y, color); in gfx_putpixel()
145 static void putpixel16(gfx_surface *surface, uint x, uint y, uint color) { in putpixel16() argument
146 uint16_t *dest = &((uint16_t *)surface->ptr)[x + y * surface->stride]; in putpixel16()
149 *dest = (uint16_t)(surface->translate_color(color)); in putpixel16()
152 static void putpixel32(gfx_surface *surface, uint x, uint y, uint color) { in putpixel32() argument
153 uint32_t *dest = &((uint32_t *)surface->ptr)[x + y * surface->stride]; in putpixel32()
158 static void putpixel8(gfx_surface *surface, uint x, uint y, uint color) { in putpixel8() argument
159 uint8_t *dest = &((uint8_t *)surface->ptr)[x + y * surface->stride]; in putpixel8()
162 *dest = (uint8_t)(surface->translate_color(color)); in putpixel8()
165 static void copyrect8(gfx_surface *surface, uint x, uint y, uint width, uint height, uint x2, uint … in copyrect8() argument
167 const uint8_t *src = &((const uint8_t *)surface->ptr)[x + y * surface->stride]; in copyrect8()
168 uint8_t *dest = &((uint8_t *)surface->ptr)[x2 + y2 * surface->stride]; in copyrect8()
169 uint stride_diff = surface->stride - width; in copyrect8()
184 src += height * surface->stride + width; in copyrect8()
185 dest += height * surface->stride + width; in copyrect8()
200 static void fillrect8(gfx_surface *surface, uint x, uint y, uint width, uint height, uint color) { in fillrect8() argument
201 uint8_t *dest = &((uint8_t *)surface->ptr)[x + y * surface->stride]; in fillrect8()
202 uint stride_diff = surface->stride - width; in fillrect8()
204 uint8_t color8 = (uint8_t)(surface->translate_color(color)); in fillrect8()
216 static void copyrect16(gfx_surface *surface, uint x, uint y, uint width, uint height, uint x2, uint… in copyrect16() argument
218 const uint16_t *src = &((const uint16_t *)surface->ptr)[x + y * surface->stride]; in copyrect16()
219 uint16_t *dest = &((uint16_t *)surface->ptr)[x2 + y2 * surface->stride]; in copyrect16()
220 uint stride_diff = surface->stride - width; in copyrect16()
235 src += height * surface->stride + width; in copyrect16()
236 dest += height * surface->stride + width; in copyrect16()
251 static void fillrect16(gfx_surface *surface, uint x, uint y, uint width, uint height, uint color) { in fillrect16() argument
252 uint16_t *dest = &((uint16_t *)surface->ptr)[x + y * surface->stride]; in fillrect16()
253 uint stride_diff = surface->stride - width; in fillrect16()
255 uint16_t color16 = (uint16_t)(surface->translate_color(color)); in fillrect16()
267 static void copyrect32(gfx_surface *surface, uint x, uint y, uint width, uint height, uint x2, uint… in copyrect32() argument
269 const uint32_t *src = &((const uint32_t *)surface->ptr)[x + y * surface->stride]; in copyrect32()
270 uint32_t *dest = &((uint32_t *)surface->ptr)[x2 + y2 * surface->stride]; in copyrect32()
271 uint stride_diff = surface->stride - width; in copyrect32()
286 src += height * surface->stride + width; in copyrect32()
287 dest += height * surface->stride + width; in copyrect32()
302 static void fillrect32(gfx_surface *surface, uint x, uint y, uint width, uint height, uint color) { in fillrect32() argument
303 uint32_t *dest = &((uint32_t *)surface->ptr)[x + y * surface->stride]; in fillrect32()
304 uint stride_diff = surface->stride - width; in fillrect32()
316 void gfx_line(gfx_surface *surface, uint x1, uint y1, uint x2, uint y2, uint color) { in gfx_line() argument
317 if (unlikely(x1 >= surface->width)) in gfx_line()
319 if (unlikely(x2 >= surface->width)) in gfx_line()
322 if (y1 >= surface->height) in gfx_line()
324 if (y2 >= surface->height) in gfx_line()
351 surface->putpixel(surface, px, py, color); in gfx_line()
362 surface->putpixel(surface, px, py, color); in gfx_line()
512 void gfx_flush(gfx_surface *surface) { in gfx_flush() argument
513 arch_clean_cache_range((addr_t)surface->ptr, surface->len); in gfx_flush()
515 if (surface->flush) in gfx_flush()
516 surface->flush(0, surface->height-1); in gfx_flush()
522 void gfx_flush_rows(struct gfx_surface *surface, uint start, uint end) { in gfx_flush_rows() argument
529 if (start >= surface->height) in gfx_flush_rows()
531 if (end >= surface->height) in gfx_flush_rows()
532 end = surface->height - 1; in gfx_flush_rows()
534 uint32_t runlen = surface->stride * surface->pixelsize; in gfx_flush_rows()
535 arch_clean_cache_range((addr_t)surface->ptr + start * runlen, (end - start + 1) * runlen); in gfx_flush_rows()
537 if (surface->flush) in gfx_flush_rows()
538 surface->flush(start, end); in gfx_flush_rows()
551 gfx_surface *surface = malloc(sizeof(gfx_surface)); in gfx_create_surface() local
553 surface->free_on_destroy = false; in gfx_create_surface()
554 surface->format = format; in gfx_create_surface()
555 surface->width = width; in gfx_create_surface()
556 surface->height = height; in gfx_create_surface()
557 surface->stride = stride; in gfx_create_surface()
558 surface->alpha = MAX_ALPHA; in gfx_create_surface()
563 surface->translate_color = &ARGB8888_to_RGB565; in gfx_create_surface()
564 surface->copyrect = &copyrect16; in gfx_create_surface()
565 surface->fillrect = &fillrect16; in gfx_create_surface()
566 surface->putpixel = &putpixel16; in gfx_create_surface()
567 surface->pixelsize = 2; in gfx_create_surface()
568 surface->len = (surface->height * surface->stride * surface->pixelsize); in gfx_create_surface()
572 surface->translate_color = NULL; in gfx_create_surface()
573 surface->copyrect = &copyrect32; in gfx_create_surface()
574 surface->fillrect = &fillrect32; in gfx_create_surface()
575 surface->putpixel = &putpixel32; in gfx_create_surface()
576 surface->pixelsize = 4; in gfx_create_surface()
577 surface->len = (surface->height * surface->stride * surface->pixelsize); in gfx_create_surface()
580 surface->translate_color = &ARGB8888_to_Luma; in gfx_create_surface()
581 surface->copyrect = &copyrect8; in gfx_create_surface()
582 surface->fillrect = &fillrect8; in gfx_create_surface()
583 surface->putpixel = &putpixel8; in gfx_create_surface()
584 surface->pixelsize = 1; in gfx_create_surface()
585 surface->len = (surface->height * surface->stride * surface->pixelsize); in gfx_create_surface()
588 surface->translate_color = &ARGB8888_to_RGB332; in gfx_create_surface()
589 surface->copyrect = &copyrect8; in gfx_create_surface()
590 surface->fillrect = &fillrect8; in gfx_create_surface()
591 surface->putpixel = &putpixel8; in gfx_create_surface()
592 surface->pixelsize = 1; in gfx_create_surface()
593 surface->len = (surface->height * surface->stride * surface->pixelsize); in gfx_create_surface()
596 surface->translate_color = &ARGB8888_to_RGB2220; in gfx_create_surface()
597 surface->copyrect = &copyrect8; in gfx_create_surface()
598 surface->fillrect = &fillrect8; in gfx_create_surface()
599 surface->putpixel = &putpixel8; in gfx_create_surface()
600 surface->pixelsize = 1; in gfx_create_surface()
601 surface->len = (surface->height * surface->stride * surface->pixelsize); in gfx_create_surface()
606 free(surface); in gfx_create_surface()
612 ptr = malloc(surface->len); in gfx_create_surface()
614 surface->free_on_destroy = true; in gfx_create_surface()
616 surface->ptr = ptr; in gfx_create_surface()
618 return surface; in gfx_create_surface()
626 gfx_surface *surface; in gfx_create_surface_from_display() local
653surface = gfx_create_surface(fb->image.pixels, fb->image.width, fb->image.height, fb->image.stride… in gfx_create_surface_from_display()
655 surface->flush = fb->flush; in gfx_create_surface_from_display()
657 return surface; in gfx_create_surface_from_display()
666 void gfx_surface_destroy(struct gfx_surface *surface) { in gfx_surface_destroy() argument
667 if (surface->free_on_destroy) in gfx_surface_destroy()
668 free(surface->ptr); in gfx_surface_destroy()
669 free(surface); in gfx_surface_destroy()
680 gfx_surface *surface = gfx_create_surface_from_display(&fb); in gfx_draw_pattern() local
683 for (y = 0; y < surface->height; y++) { in gfx_draw_pattern()
684 for (x = 0; x < surface->width; x++) { in gfx_draw_pattern()
688 scaledx = x * 256 / surface->width; in gfx_draw_pattern()
689 scaledy = y * 256 / surface->height; in gfx_draw_pattern()
691 …gfx_putpixel(surface, x, y, (0xff << 24) | (scaledx * scaledy) << 16 | (scaledx >> 1) << 8 | scale… in gfx_draw_pattern()
695 gfx_flush(surface); in gfx_draw_pattern()
697 gfx_surface_destroy(surface); in gfx_draw_pattern()
708 gfx_surface *surface = gfx_create_surface_from_display(&fb); in gfx_draw_pattern_white() local
711 for (y = 0; y < surface->height; y++) { in gfx_draw_pattern_white()
712 for (x = 0; x < surface->width; x++) { in gfx_draw_pattern_white()
713 gfx_putpixel(surface, x, y, 0xFFFFFFFF); in gfx_draw_pattern_white()
717 gfx_flush(surface); in gfx_draw_pattern_white()
719 gfx_surface_destroy(surface); in gfx_draw_pattern_white()
730 static int gfx_draw_mandelbrot(gfx_surface *surface) { in gfx_draw_mandelbrot() argument
734 dx= 3.0f/((float)surface->width); in gfx_draw_mandelbrot()
735 dy= 3.0f/((float)surface->height); in gfx_draw_mandelbrot()
738 for (y = 0; y < surface->height; y++) { in gfx_draw_mandelbrot()
740 for (x = 0; x < surface->width; x++) { in gfx_draw_mandelbrot()
759 gfx_putpixel(surface, x, y, 0xff << 24 | color); in gfx_draw_mandelbrot()
762 gfx_flush_rows(surface, y - 1, y); in gfx_draw_mandelbrot()
771 static int gfx_draw_rgb_bars(gfx_surface *surface) { in gfx_draw_rgb_bars() argument
774 uint step = surface->height*100 / 256; in gfx_draw_rgb_bars()
777 for (y = 0; y < surface->height; y++) { in gfx_draw_rgb_bars()
779 for (x = 0; x < surface->width/3; x++) { in gfx_draw_rgb_bars()
781 gfx_putpixel(surface, x, y, 0xff << 24 | color << 16); in gfx_draw_rgb_bars()
784 for (; x < 2*(surface->width/3); x++) { in gfx_draw_rgb_bars()
786 gfx_putpixel(surface, x, y, 0xff << 24 | color << 8); in gfx_draw_rgb_bars()
789 for (; x < surface->width; x++) { in gfx_draw_rgb_bars()
791 gfx_putpixel(surface, x, y, 0xff << 24 | color); in gfx_draw_rgb_bars()
817 gfx_surface *surface = gfx_create_surface_from_display(&fb); in cmd_gfx() local
825 gfx_draw_rgb_bars(surface); in cmd_gfx()
831 for (y = 0; y < surface->height; y++) { in cmd_gfx()
832 for (x = 0; x < surface->width; x++) { in cmd_gfx()
834 … gfx_putpixel(surface, x, y, (0xff << 24) | (argv[2].i << 16) | (argv[3].i << 8) | argv[4].i); in cmd_gfx()
838 gfx_draw_mandelbrot(surface); in cmd_gfx()
841 gfx_surface_destroy(surface); in cmd_gfx()
845 gfx_flush(surface); in cmd_gfx()
847 gfx_surface_destroy(surface); in cmd_gfx()