summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--apps/plugins/pictureflow/pictureflow.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/apps/plugins/pictureflow/pictureflow.c b/apps/plugins/pictureflow/pictureflow.c
index 52209e60a2..10f9aadd07 100644
--- a/apps/plugins/pictureflow/pictureflow.c
+++ b/apps/plugins/pictureflow/pictureflow.c
@@ -1730,42 +1730,49 @@ void render_slide(struct slide_data *slide, const int alpha)
1730 dy = (CAM_DIST_R + zo + fmul(xs, sinr)) / CAM_DIST; 1730 dy = (CAM_DIST_R + zo + fmul(xs, sinr)) / CAM_DIST;
1731 1731
1732 const pix_t *ptr = &src[column * bmp->height]; 1732 const pix_t *ptr = &src[column * bmp->height];
1733 const int pixelstep = BUFFER_WIDTH; 1733
1734#if defined(LCD_STRIDEFORMAT) && LCD_STRIDEFORMAT == VERTICAL_STRIDE
1735#define PIXELSTEP_Y 1
1736#define LCDADDR(x, y) (&buffer[LCD_HEIGHT*(x) + (y)])
1737#else
1738#define PIXELSTEP_Y BUFFER_WIDTH
1739#define LCDADDR(x, y) (&buffer[(y)*BUFFER_WIDTH + (x)])
1740#endif
1734 1741
1735 int p = (bmp->height-1-DISPLAY_OFFS) * PFREAL_ONE; 1742 int p = (bmp->height-1-DISPLAY_OFFS) * PFREAL_ONE;
1736 int plim = MAX(0, p - (LCD_HEIGHT/2-1) * dy); 1743 int plim = MAX(0, p - (LCD_HEIGHT/2-1) * dy);
1737 pix_t *pixel = &buffer[((LCD_HEIGHT/2)-1)*BUFFER_WIDTH + x]; 1744 pix_t *pixel = LCDADDR(x, (LCD_HEIGHT/2)-1 );
1738 1745
1739 if (alpha == 256) { 1746 if (alpha == 256) {
1740 while (p >= plim) { 1747 while (p >= plim) {
1741 *pixel = ptr[((unsigned)p) >> PFREAL_SHIFT]; 1748 *pixel = ptr[((unsigned)p) >> PFREAL_SHIFT];
1742 p -= dy; 1749 p -= dy;
1743 pixel -= pixelstep; 1750 pixel -= PIXELSTEP_Y;
1744 } 1751 }
1745 } else { 1752 } else {
1746 while (p >= plim) { 1753 while (p >= plim) {
1747 *pixel = fade_color(ptr[((unsigned)p) >> PFREAL_SHIFT], alpha); 1754 *pixel = fade_color(ptr[((unsigned)p) >> PFREAL_SHIFT], alpha);
1748 p -= dy; 1755 p -= dy;
1749 pixel -= pixelstep; 1756 pixel -= PIXELSTEP_Y;
1750 } 1757 }
1751 } 1758 }
1752 p = (bmp->height-DISPLAY_OFFS) * PFREAL_ONE; 1759 p = (bmp->height-DISPLAY_OFFS) * PFREAL_ONE;
1753 plim = MIN(sh * PFREAL_ONE, p + (LCD_HEIGHT/2) * dy); 1760 plim = MIN(sh * PFREAL_ONE, p + (LCD_HEIGHT/2) * dy);
1754 int plim2 = MIN(MIN(sh + REFLECT_HEIGHT, sh * 2) * PFREAL_ONE, 1761 int plim2 = MIN(MIN(sh + REFLECT_HEIGHT, sh * 2) * PFREAL_ONE,
1755 p + (LCD_HEIGHT/2) * dy); 1762 p + (LCD_HEIGHT/2) * dy);
1756 pixel = &buffer[(LCD_HEIGHT/2)*BUFFER_WIDTH + x]; 1763 pixel = LCDADDR(x, (LCD_HEIGHT/2) );
1757 1764
1758 if (alpha == 256) { 1765 if (alpha == 256) {
1759 while (p < plim) { 1766 while (p < plim) {
1760 *pixel = ptr[((unsigned)p) >> PFREAL_SHIFT]; 1767 *pixel = ptr[((unsigned)p) >> PFREAL_SHIFT];
1761 p += dy; 1768 p += dy;
1762 pixel += pixelstep; 1769 pixel += PIXELSTEP_Y;
1763 } 1770 }
1764 } else { 1771 } else {
1765 while (p < plim) { 1772 while (p < plim) {
1766 *pixel = fade_color(ptr[((unsigned)p) >> PFREAL_SHIFT], alpha); 1773 *pixel = fade_color(ptr[((unsigned)p) >> PFREAL_SHIFT], alpha);
1767 p += dy; 1774 p += dy;
1768 pixel += pixelstep; 1775 pixel += PIXELSTEP_Y;
1769 } 1776 }
1770 } 1777 }
1771 while (p < plim2) { 1778 while (p < plim2) {
@@ -1773,7 +1780,7 @@ void render_slide(struct slide_data *slide, const int alpha)
1773 int lalpha = reftab[ty]; 1780 int lalpha = reftab[ty];
1774 *pixel = fade_color(ptr[sh - 1 - ty], lalpha); 1781 *pixel = fade_color(ptr[sh - 1 - ty], lalpha);
1775 p += dy; 1782 p += dy;
1776 pixel += pixelstep; 1783 pixel += PIXELSTEP_Y;
1777 } 1784 }
1778 1785
1779 if (zo || slide->angle) 1786 if (zo || slide->angle)
@@ -1790,7 +1797,6 @@ void render_slide(struct slide_data *slide, const int alpha)
1790 return; 1797 return;
1791} 1798}
1792 1799
1793
1794/** 1800/**
1795 Jump the the given slide_index 1801 Jump the the given slide_index
1796 */ 1802 */