|
116 | 116 | #define RGB_BUS_ROTATION_270 (3) |
117 | 117 |
|
118 | 118 |
|
119 | | - __attribute__((always_inline)) static inline void rotate0(const uint8_t *src, uint8_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t bytes_per_pixel) |
120 | | - __attribute__((always_inline)) static inline void rotate_8bpp(const uint8_t *src, uint8_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t rotate) |
121 | | - __attribute__((always_inline)) static inline void rotate_16bpp(const uint16_t *src, uint16_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t rotate) |
122 | | - __attribute__((always_inline)) static inline void rotate_24bpp(const uint8_t *src, uint8_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t rotate) |
123 | | - __attribute__((always_inline)) static inline void rotate_32bpp(const uint32_t *src, uint32_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t rotate) |
| 119 | + __attribute__((always_inline)) static inline void rotate0(const uint8_t *src, uint8_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t bytes_per_pixel); |
| 120 | + __attribute__((always_inline)) static inline void rotate_8bpp(const uint8_t *src, uint8_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t rotate); |
| 121 | + __attribute__((always_inline)) static inline void rotate_16bpp(const uint16_t *src, uint16_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t rotate); |
| 122 | + __attribute__((always_inline)) static inline void rotate_24bpp(const uint8_t *src, uint8_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t rotate); |
| 123 | + __attribute__((always_inline)) static inline void rotate_32bpp(const uint32_t *src, uint32_t *dst, uint32_t x_start, uint32_t y_start, uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, uint8_t rotate); |
124 | 124 |
|
125 | 125 |
|
126 | 126 | static void copy_pixels( |
127 | | - uint8_t *to, uint8_t *from, uint32_t x_start, uint32_t y_start, |
| 127 | + void *to, const void *from, uint32_t x_start, uint32_t y_start, |
128 | 128 | uint32_t x_end, uint32_t y_end, uint32_t h_res, uint32_t v_res, |
129 | 129 | uint32_t bytes_per_pixel, uint8_t rotate); |
130 | 130 |
|
|
188 | 188 | self->idle_fb = rgb_panel->fbs[1]; |
189 | 189 |
|
190 | 190 | uint8_t *idle_fb; |
191 | | - copy_func_cb_t func; |
192 | 191 | bool last_update; |
193 | 192 |
|
194 | 193 | uint8_t bytes_per_pixel = self->bytes_per_pixel; |
|
212 | 211 | idle_fb = self->idle_fb; |
213 | 212 |
|
214 | 213 | copy_pixels( |
215 | | - idle_fb, self->partial_buf, |
| 214 | + (void *)idle_fb, (void *)self->partial_buf, |
216 | 215 | self->x_start, self->y_start, |
217 | 216 | self->x_end, self->y_end, |
218 | 217 | self->width, self->height, |
|
322 | 321 |
|
323 | 322 |
|
324 | 323 | void copy_pixels(uint8_t *dst, uint8_t *src, uint32_t x_start, uint32_t y_start, |
325 | | - uint32_t x_end, uint32_t y_end, uint32_t d_width, uint32_t d_height, |
| 324 | + uint32_t x_end, uint32_t y_end, uint32_t dst_width, uint32_t dst_height, |
326 | 325 | uint32_t bytes_per_pixel, uint8_t rotate) |
327 | 326 | { |
328 | 327 | if (rotate == RGB_BUS_ROTATION_0) { |
329 | | - rotate0(src, dst, MIN(x_start, d_width), MIN(y_start, d_height), |
330 | | - MIN(x_end, d_width), MIN(y_end, d_height), |
331 | | - d_width, d_height, bytes_per_pixel); |
| 328 | + rotate0(src, dst, MIN(x_start, dst_width), MIN(y_start, dst_height), |
| 329 | + MIN(x_end, dst_width), MIN(y_end, dst_height), |
| 330 | + dst_width, dst_height, bytes_per_pixel); |
332 | 331 | } else { |
333 | 332 | y_end += 1; |
334 | 333 | if (rotate == RGB_BUS_ROTATION_90 || rotate == RGB_BUS_ROTATION_270) { |
335 | | - x_start = MIN(x_start, d_height); |
336 | | - x_end = MIN(x_end, d_height); |
337 | | - y_start = MIN(y_start, d_width); |
338 | | - y_end = MIN(y_end, d_width); |
| 334 | + x_start = MIN(x_start, dst_height); |
| 335 | + x_end = MIN(x_end, dst_height); |
| 336 | + y_start = MIN(y_start, dst_width); |
| 337 | + y_end = MIN(y_end, dst_width); |
339 | 338 | } else { |
340 | | - x_start = MIN(x_start, d_width); |
341 | | - x_end = MIN(x_end, d_width); |
342 | | - y_start = MIN(y_start, d_height); |
343 | | - y_end = MIN(y_end, d_height); |
| 339 | + x_start = MIN(x_start, dst_width); |
| 340 | + x_end = MIN(x_end, dst_width); |
| 341 | + y_start = MIN(y_start, dst_height); |
| 342 | + y_end = MIN(y_end, dst_height); |
344 | 343 | } |
345 | 344 |
|
346 | 345 | if (bytes_per_pixel == 1) { |
347 | | - rotate_8bpp(src, dst, x_start, y_start, x_end, y_end, d_width, d_height, rotate); |
| 346 | + rotate_8bpp(src, dst, x_start, y_start, x_end, y_end, dst_width, dst_height, rotate); |
348 | 347 | } else if (bytes_per_pixel == 2) { |
349 | | - rotate_16bpp(src, dst, x_start, y_start, x_end, y_end, d_width, d_height, rotate); |
| 348 | + rotate_16bpp(src, dst, x_start, y_start, x_end, y_end, dst_width, dst_height, rotate); |
350 | 349 | } else if (bytes_per_pixel == 3) { |
351 | | - rotate_24bpp(src, dst, x_start, y_start, x_end, y_end, d_width, d_height, rotate); |
| 350 | + rotate_24bpp(src, dst, x_start, y_start, x_end, y_end, dst_width, dst_height, rotate); |
352 | 351 | } else if (bytes_per_pixel == 4) { |
353 | | - rotate_32bpp(src, dst, x_start, y_start, x_end, y_end, d_width, d_height, rotate); |
| 352 | + rotate_32bpp(src, dst, x_start, y_start, x_end, y_end, dst_width, dst_height, rotate); |
354 | 353 | } |
355 | 354 | } |
356 | 355 | } |
|
444 | 443 | for (uint32_t y = y_start; y < y_end; y++) { |
445 | 444 | for (uint32_t x = x_start; x < x_end; x++) { |
446 | 445 | j = y * src_bytes_per_line + x - offset; |
447 | | - i = (d_height - 1 - x) * d_width + y; |
| 446 | + i = (dst_height - 1 - x) * dst_width + y; |
448 | 447 | copy_16bpp(dst + i, src + j); |
449 | 448 | } |
450 | 449 | } |
|
0 commit comments