summaryrefslogtreecommitdiff
path: root/apps/plugins/jpeg.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/plugins/jpeg.c')
-rw-r--r--apps/plugins/jpeg.c72
1 files changed, 30 insertions, 42 deletions
diff --git a/apps/plugins/jpeg.c b/apps/plugins/jpeg.c
index 7ca59b29cd..5060996639 100644
--- a/apps/plugins/jpeg.c
+++ b/apps/plugins/jpeg.c
@@ -1523,7 +1523,7 @@ void cleanup(void *parameter)
1523{ 1523{
1524 (void)parameter; 1524 (void)parameter;
1525 1525
1526 gray_show_display(false); 1526 gray_show(false);
1527} 1527}
1528 1528
1529/* interactively scroll around the image */ 1529/* interactively scroll around the image */
@@ -1548,13 +1548,12 @@ int scroll_bmp(struct t_disp* pdisp)
1548 move = MIN(10, pdisp->x); 1548 move = MIN(10, pdisp->x);
1549 if (move > 0) 1549 if (move > 0)
1550 { 1550 {
1551 gray_scroll_right(move, false); /* scroll right */ 1551 gray_ub_scroll_right(move); /* scroll right */
1552 pdisp->x -= move; 1552 pdisp->x -= move;
1553 gray_drawgraymap( 1553 gray_ub_gray_bitmap_part(
1554 pdisp->bitmap + pdisp->y * pdisp->stride + pdisp->x, 1554 pdisp->bitmap, pdisp->x, pdisp->y, pdisp->stride,
1555 0, MAX(0, (LCD_HEIGHT-pdisp->height)/2), // x, y 1555 0, MAX(0, (LCD_HEIGHT-pdisp->height)/2), /* x, y */
1556 move, MIN(LCD_HEIGHT, pdisp->height), // w, h 1556 move, MIN(LCD_HEIGHT, pdisp->height)); /* w, h */
1557 pdisp->stride);
1558 } 1557 }
1559 break; 1558 break;
1560 1559
@@ -1563,13 +1562,13 @@ int scroll_bmp(struct t_disp* pdisp)
1563 move = MIN(10, pdisp->width - pdisp->x - LCD_WIDTH); 1562 move = MIN(10, pdisp->width - pdisp->x - LCD_WIDTH);
1564 if (move > 0) 1563 if (move > 0)
1565 { 1564 {
1566 gray_scroll_left(move, false); /* scroll left */ 1565 gray_ub_scroll_left(move); /* scroll left */
1567 pdisp->x += move; 1566 pdisp->x += move;
1568 gray_drawgraymap( 1567 gray_ub_gray_bitmap_part(
1569 pdisp->bitmap + pdisp->y * pdisp->stride + pdisp->x + LCD_WIDTH - move, 1568 pdisp->bitmap, pdisp->x + LCD_WIDTH - move,
1569 pdisp->y, pdisp->stride,
1570 LCD_WIDTH - move, MAX(0, (LCD_HEIGHT-pdisp->height)/2), /* x, y */ 1570 LCD_WIDTH - move, MAX(0, (LCD_HEIGHT-pdisp->height)/2), /* x, y */
1571 move, MIN(LCD_HEIGHT, pdisp->height), /* w, h */ 1571 move, MIN(LCD_HEIGHT, pdisp->height)); /* w, h */
1572 pdisp->stride);
1573 } 1572 }
1574 break; 1573 break;
1575 1574
@@ -1578,16 +1577,12 @@ int scroll_bmp(struct t_disp* pdisp)
1578 move = MIN(8, pdisp->y); 1577 move = MIN(8, pdisp->y);
1579 if (move > 0) 1578 if (move > 0)
1580 { 1579 {
1581 if (move == 8) 1580 gray_ub_scroll_down(move); /* scroll down */
1582 gray_scroll_down8(false); /* scroll down by 8 pixel */
1583 else
1584 gray_scroll_down(move, false); /* scroll down 1..7 pixel */
1585 pdisp->y -= move; 1581 pdisp->y -= move;
1586 gray_drawgraymap( 1582 gray_ub_gray_bitmap_part(
1587 pdisp->bitmap + pdisp->y * pdisp->stride + pdisp->x, 1583 pdisp->bitmap, pdisp->x, pdisp->y, pdisp->stride,
1588 MAX(0, (LCD_WIDTH-pdisp->width)/2), 0, /* x, y */ 1584 MAX(0, (LCD_WIDTH-pdisp->width)/2), 0, /* x, y */
1589 MIN(LCD_WIDTH, pdisp->width), move, /* w, h */ 1585 MIN(LCD_WIDTH, pdisp->width), move); /* w, h */
1590 pdisp->stride);
1591 } 1586 }
1592 break; 1587 break;
1593 1588
@@ -1596,16 +1591,13 @@ int scroll_bmp(struct t_disp* pdisp)
1596 move = MIN(8, pdisp->height - pdisp->y - LCD_HEIGHT); 1591 move = MIN(8, pdisp->height - pdisp->y - LCD_HEIGHT);
1597 if (move > 0) 1592 if (move > 0)
1598 { 1593 {
1599 if (move == 8) 1594 gray_ub_scroll_up(move); /* scroll up */
1600 gray_scroll_up8(false); /* scroll up by 8 pixel */
1601 else
1602 gray_scroll_up(move, false); /* scroll up 1..7 pixel */
1603 pdisp->y += move; 1595 pdisp->y += move;
1604 gray_drawgraymap( 1596 gray_ub_gray_bitmap_part(
1605 pdisp->bitmap + (pdisp->y + LCD_HEIGHT - move) * pdisp->stride + pdisp->x, 1597 pdisp->bitmap, pdisp->x,
1598 pdisp->y + LCD_HEIGHT - move, pdisp->stride,
1606 MAX(0, (LCD_WIDTH-pdisp->width)/2), LCD_HEIGHT - move, /* x, y */ 1599 MAX(0, (LCD_WIDTH-pdisp->width)/2), LCD_HEIGHT - move, /* x, y */
1607 MIN(LCD_WIDTH, pdisp->width), move, /* w, h */ 1600 MIN(LCD_WIDTH, pdisp->width), move); /* w, h */
1608 pdisp->stride);
1609 } 1601 }
1610 break; 1602 break;
1611 1603
@@ -1806,7 +1798,7 @@ int main(char* filename)
1806 int fd; 1798 int fd;
1807 int filesize; 1799 int filesize;
1808 int grayscales; 1800 int grayscales;
1809 int graysize; // helper 1801 long graysize; // helper
1810 unsigned char* buf_jpeg; /* compressed JPEG image */ 1802 unsigned char* buf_jpeg; /* compressed JPEG image */
1811 static struct jpeg jpg; /* too large for stack */ 1803 static struct jpeg jpg; /* too large for stack */
1812 int status; 1804 int status;
@@ -1830,7 +1822,7 @@ int main(char* filename)
1830 /* initialize the grayscale buffer: 1822 /* initialize the grayscale buffer:
1831 * 112 pixels wide, 8 rows (64 pixels) high, (try to) reserve 1823 * 112 pixels wide, 8 rows (64 pixels) high, (try to) reserve
1832 * 32 bitplanes for 33 shades of gray. (uses 28856 bytes)*/ 1824 * 32 bitplanes for 33 shades of gray. (uses 28856 bytes)*/
1833 grayscales = gray_init_buffer(buf, buf_size, 112, 8, 32, &graysize) + 1; 1825 grayscales = gray_init(rb, buf, buf_size, false, 112, 8, 32, &graysize) + 1;
1834 buf += graysize; 1826 buf += graysize;
1835 buf_size -= graysize; 1827 buf_size -= graysize;
1836 if (grayscales < 33 || buf_size <= 0) 1828 if (grayscales < 33 || buf_size <= 0)
@@ -1907,16 +1899,15 @@ int main(char* filename)
1907 rb->lcd_puts(0, 3, print); 1899 rb->lcd_puts(0, 3, print);
1908 rb->lcd_update(); 1900 rb->lcd_update();
1909 1901
1910 gray_clear_display(); 1902 gray_ub_clear_display();
1911 gray_drawgraymap( 1903 gray_ub_gray_bitmap_part(
1912 p_disp->bitmap + p_disp->y * p_disp->stride + p_disp->x, 1904 p_disp->bitmap, p_disp->x, p_disp->y, p_disp->stride,
1913 MAX(0, (LCD_WIDTH - p_disp->width) / 2), 1905 MAX(0, (LCD_WIDTH - p_disp->width) / 2),
1914 MAX(0, (LCD_HEIGHT - p_disp->height) / 2), 1906 MAX(0, (LCD_HEIGHT - p_disp->height) / 2),
1915 MIN(LCD_WIDTH, p_disp->width), 1907 MIN(LCD_WIDTH, p_disp->width),
1916 MIN(LCD_HEIGHT, p_disp->height), 1908 MIN(LCD_HEIGHT, p_disp->height));
1917 p_disp->stride);
1918 1909
1919 gray_show_display(true); /* switch on grayscale overlay */ 1910 gray_show(true); /* switch on grayscale overlay */
1920 1911
1921 /* drawing is now finished, play around with scrolling 1912 /* drawing is now finished, play around with scrolling
1922 * until you press OFF or connect USB 1913 * until you press OFF or connect USB
@@ -1952,12 +1943,12 @@ int main(char* filename)
1952 break; 1943 break;
1953 } 1944 }
1954 1945
1955 gray_show_display(false); /* switch off overlay */ 1946 gray_show(false); /* switch off overlay */
1956 1947
1957 } 1948 }
1958 while (status != PLUGIN_OK && status != PLUGIN_USB_CONNECTED); 1949 while (status != PLUGIN_OK && status != PLUGIN_USB_CONNECTED);
1959 1950
1960 gray_release_buffer(); /* deinitialize */ 1951 gray_release(); /* deinitialize */
1961 1952
1962 return status; 1953 return status;
1963} 1954}
@@ -1973,9 +1964,6 @@ enum plugin_status plugin_start(struct plugin_api* api, void* parameter)
1973 1964
1974 rb = api; /* copy to global api pointer */ 1965 rb = api; /* copy to global api pointer */
1975 1966
1976 /* This plugin uses the grayscale framework, so initialize */
1977 gray_init(api);
1978
1979 return main((char*)parameter); 1967 return main((char*)parameter);
1980} 1968}
1981 1969