input_impl ( tu_file *in ) : m_compressor_opened ( false ) // Constructor. Read the header data from in, and // prepare to read data. { setup_jpeg_err ( &m_jerr ); m_cinfo.err = &m_jerr; // Initialize decompression object. jpeg_create_decompress ( &m_cinfo ); setup_rw_source ( &m_cinfo, in ); start_image(); }
RImage *bilinear (int argc, char **argv, int width, int height, int relief) { int color[4][3]; RImage *image; unsigned char *cptr; int i, j, k; argc--; argv++; if (!start_image ("bilinear", argc, 4, 5, width, height, &image)) { return (RImage *)0; } for (i=0; i<4; i++) { if (!parse_color (argv[i], color[i])) { error ("can't parse color: \"%s\"\n", argv[i]); return 0; } } cptr = image->data; for (i=0; i<height; i++) { int b = 0xff * i / height; int t = 0xff - b; for (j=0; j<width; j++) { int r = 0xff * j / width; int l = 0xff - r; int f[4]; f[0] = (l*t) >> 8; f[1] = (r*t) >> 8; f[2] = (l*b) >> 8; f[3] = (r*b) >> 8; for (k=0; k<3; k++) { *cptr++ = ( f[0] * color[0][k] + f[1] * color[1][k] + f[2] * color[2][k] + f[3] * color[3][k] ) >> 8; } if (RRGBAFormat==image->format) cptr++; } } return image; }
static void update_scroll(struct mb_display *disp) { if (disp->scroll < scroll_steps(disp)) { struct mb_image img; int i; for (i = 0; i < 5; i++) { const struct mb_image *i1 = current_img(disp); const struct mb_image *i2 = next_img(disp); img.row[i] = ((i1->row[i] >> disp->scroll) | (i2->row[i] << (scroll_steps(disp) - disp->scroll))); } disp->scroll++; start_image(disp, &img); } else { if (disp->first) {