|
|
@ -40,7 +40,7 @@ namespace KIPIJPEGLossLessPlugin
|
|
|
|
* or recompression of the image.
|
|
|
|
* or recompression of the image.
|
|
|
|
* Thanks to Guido Vollbeding for the initial design and code of this feature.
|
|
|
|
* Thanks to Guido Vollbeding for the initial design and code of this feature.
|
|
|
|
*
|
|
|
|
*
|
|
|
|
*Qt::Horizontal flipping is done in-place, using a single top-to-bottom
|
|
|
|
* Horizontal flipping is done in-place, using a single top-to-bottom
|
|
|
|
* pass through the virtual source array. It will thus be much the
|
|
|
|
* pass through the virtual source array. It will thus be much the
|
|
|
|
* fastest option for images larger than main memory.
|
|
|
|
* fastest option for images larger than main memory.
|
|
|
|
*
|
|
|
|
*
|
|
|
@ -75,7 +75,7 @@ namespace KIPIJPEGLossLessPlugin
|
|
|
|
LOCAL(void)
|
|
|
|
LOCAL(void)
|
|
|
|
do_flip_h (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
|
|
|
|
do_flip_h (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
|
|
|
|
jvirt_barray_ptr *src_coef_arrays)
|
|
|
|
jvirt_barray_ptr *src_coef_arrays)
|
|
|
|
/*Qt::Horizontal flip; done in-place, so no separate dest array is required */
|
|
|
|
/* Horizontal flip; done in-place, so no separate dest array is required */
|
|
|
|
{
|
|
|
|
{
|
|
|
|
JDIMENSION MCU_cols, comp_width, blk_x, blk_y;
|
|
|
|
JDIMENSION MCU_cols, comp_width, blk_x, blk_y;
|
|
|
|
int ci, k, offset_y;
|
|
|
|
int ci, k, offset_y;
|
|
|
@ -84,7 +84,7 @@ do_flip_h (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
|
|
|
|
JCOEF temp1, temp2;
|
|
|
|
JCOEF temp1, temp2;
|
|
|
|
jpeg_component_info *compptr;
|
|
|
|
jpeg_component_info *compptr;
|
|
|
|
|
|
|
|
|
|
|
|
/*Qt::Horizontal mirroring of DCT blocks is accomplished by swapping
|
|
|
|
/* Horizontal mirroring of DCT blocks is accomplished by swapping
|
|
|
|
* pairs of blocks in-place. Within a DCT block, we perform horizontal
|
|
|
|
* pairs of blocks in-place. Within a DCT block, we perform horizontal
|
|
|
|
* mirroring by changing the signs of odd-numbered columns.
|
|
|
|
* mirroring by changing the signs of odd-numbered columns.
|
|
|
|
* Partial iMCUs at the right edge are left untouched.
|
|
|
|
* Partial iMCUs at the right edge are left untouched.
|
|
|
@ -125,7 +125,7 @@ LOCAL(void)
|
|
|
|
do_flip_v (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
|
|
|
|
do_flip_v (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
|
|
|
|
jvirt_barray_ptr *src_coef_arrays,
|
|
|
|
jvirt_barray_ptr *src_coef_arrays,
|
|
|
|
jvirt_barray_ptr *dst_coef_arrays)
|
|
|
|
jvirt_barray_ptr *dst_coef_arrays)
|
|
|
|
/*Qt::Vertical flip */
|
|
|
|
/* Vertical flip */
|
|
|
|
{
|
|
|
|
{
|
|
|
|
JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y;
|
|
|
|
JDIMENSION MCU_rows, comp_height, dst_blk_x, dst_blk_y;
|
|
|
|
int ci, i, j, offset_y;
|
|
|
|
int ci, i, j, offset_y;
|
|
|
@ -242,7 +242,7 @@ do_rot_90 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
|
|
|
|
jvirt_barray_ptr *dst_coef_arrays)
|
|
|
|
jvirt_barray_ptr *dst_coef_arrays)
|
|
|
|
/* 90 degree rotation is equivalent to
|
|
|
|
/* 90 degree rotation is equivalent to
|
|
|
|
* 1. Transposing the image;
|
|
|
|
* 1. Transposing the image;
|
|
|
|
* 2.Qt::Horizontal mirroring.
|
|
|
|
* 2. Horizontal mirroring.
|
|
|
|
* These two steps are merged into a single processing routine.
|
|
|
|
* These two steps are merged into a single processing routine.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -305,7 +305,7 @@ do_rot_270 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
|
|
|
|
jvirt_barray_ptr *src_coef_arrays,
|
|
|
|
jvirt_barray_ptr *src_coef_arrays,
|
|
|
|
jvirt_barray_ptr *dst_coef_arrays)
|
|
|
|
jvirt_barray_ptr *dst_coef_arrays)
|
|
|
|
/* 270 degree rotation is equivalent to
|
|
|
|
/* 270 degree rotation is equivalent to
|
|
|
|
* 1.Qt::Horizontal mirroring;
|
|
|
|
* 1. Horizontal mirroring;
|
|
|
|
* 2. Transposing the image.
|
|
|
|
* 2. Transposing the image.
|
|
|
|
* These two steps are merged into a single processing routine.
|
|
|
|
* These two steps are merged into a single processing routine.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
@ -369,8 +369,8 @@ do_rot_180 (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
|
|
|
|
jvirt_barray_ptr *src_coef_arrays,
|
|
|
|
jvirt_barray_ptr *src_coef_arrays,
|
|
|
|
jvirt_barray_ptr *dst_coef_arrays)
|
|
|
|
jvirt_barray_ptr *dst_coef_arrays)
|
|
|
|
/* 180 degree rotation is equivalent to
|
|
|
|
/* 180 degree rotation is equivalent to
|
|
|
|
* 1.Qt::Vertical mirroring;
|
|
|
|
* 1. Vertical mirroring;
|
|
|
|
* 2.Qt::Horizontal mirroring.
|
|
|
|
* 2. Horizontal mirroring.
|
|
|
|
* These two steps are merged into a single processing routine.
|
|
|
|
* These two steps are merged into a single processing routine.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
{
|
|
|
|
{
|
|
|
@ -473,9 +473,9 @@ do_transverse (j_decompress_ptr srcinfo, j_compress_ptr dstinfo,
|
|
|
|
* 1. 180 degree rotation;
|
|
|
|
* 1. 180 degree rotation;
|
|
|
|
* 2. Transposition;
|
|
|
|
* 2. Transposition;
|
|
|
|
* or
|
|
|
|
* or
|
|
|
|
* 1.Qt::Horizontal mirroring;
|
|
|
|
* 1. Horizontal mirroring;
|
|
|
|
* 2. Transposition;
|
|
|
|
* 2. Transposition;
|
|
|
|
* 3.Qt::Horizontal mirroring.
|
|
|
|
* 3. Horizontal mirroring.
|
|
|
|
* These steps are merged into a single processing routine.
|
|
|
|
* These steps are merged into a single processing routine.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
{
|
|
|
|
{
|
|
|
|