BitMiracle.LibJpeg.Classic.jpeg_compress_struct.jpeg_calc_jpeg_dimensions C# (CSharp) Method

jpeg_calc_jpeg_dimensions() private method

private jpeg_calc_jpeg_dimensions ( ) : void
return void
        private void jpeg_calc_jpeg_dimensions()
        {
            /* Sanity check on input image dimensions to prevent overflow in
             * following calculation.
             * We do check jpeg_width and jpeg_height in initial_setup below,
             * but image_width and image_height can come from arbitrary data,
             * and we need some space for multiplication by block_size.
             */
            if (((long)m_image_width >> 24) != 0 || ((long)m_image_height >> 24) != 0)
                ERREXIT(J_MESSAGE_CODE.JERR_IMAGE_TOO_BIG, (uint)JpegConstants.JPEG_MAX_DIMENSION);

            /* Compute actual JPEG image dimensions and DCT scaling choices. */
            if (scale_num >= scale_denom * block_size)
            {
                /* Provide block_size/1 scaling */
                jpeg_width = m_image_width * block_size;
                jpeg_height = m_image_height * block_size;
                min_DCT_h_scaled_size = 1;
                min_DCT_v_scaled_size = 1;
            }
            else if (scale_num * 2 >= scale_denom * block_size)
            {
                /* Provide block_size/2 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 2L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 2L);
                min_DCT_h_scaled_size = 2;
                min_DCT_v_scaled_size = 2;
            }
            else if (scale_num * 3 >= scale_denom * block_size)
            {
                /* Provide block_size/3 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 3L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 3L);
                min_DCT_h_scaled_size = 3;
                min_DCT_v_scaled_size = 3;
            }
            else if (scale_num * 4 >= scale_denom * block_size)
            {
                /* Provide block_size/4 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 4L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 4L);
                min_DCT_h_scaled_size = 4;
                min_DCT_v_scaled_size = 4;
            }
            else if (scale_num * 5 >= scale_denom * block_size)
            {
                /* Provide block_size/5 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 5L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 5L);
                min_DCT_h_scaled_size = 5;
                min_DCT_v_scaled_size = 5;
            }
            else if (scale_num * 6 >= scale_denom * block_size)
            {
                /* Provide block_size/6 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 6L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 6L);
                min_DCT_h_scaled_size = 6;
                min_DCT_v_scaled_size = 6;
            }
            else if (scale_num * 7 >= scale_denom * block_size)
            {
                /* Provide block_size/7 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 7L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 7L);
                min_DCT_h_scaled_size = 7;
                min_DCT_v_scaled_size = 7;
            }
            else if (scale_num * 8 >= scale_denom * block_size)
            {
                /* Provide block_size/8 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 8L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 8L);
                min_DCT_h_scaled_size = 8;
                min_DCT_v_scaled_size = 8;
            }
            else if (scale_num * 9 >= scale_denom * block_size)
            {
                /* Provide block_size/9 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 9L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 9L);
                min_DCT_h_scaled_size = 9;
                min_DCT_v_scaled_size = 9;
            }
            else if (scale_num * 10 >= scale_denom * block_size)
            {
                /* Provide block_size/10 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 10L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 10L);
                min_DCT_h_scaled_size = 10;
                min_DCT_v_scaled_size = 10;
            }
            else if (scale_num * 11 >= scale_denom * block_size)
            {
                /* Provide block_size/11 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 11L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 11L);
                min_DCT_h_scaled_size = 11;
                min_DCT_v_scaled_size = 11;
            }
            else if (scale_num * 12 >= scale_denom * block_size)
            {
                /* Provide block_size/12 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 12L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 12L);
                min_DCT_h_scaled_size = 12;
                min_DCT_v_scaled_size = 12;
            }
            else if (scale_num * 13 >= scale_denom * block_size)
            {
                /* Provide block_size/13 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 13L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 13L);
                min_DCT_h_scaled_size = 13;
                min_DCT_v_scaled_size = 13;
            }
            else if (scale_num * 14 >= scale_denom * block_size)
            {
                /* Provide block_size/14 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 14L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 14L);
                min_DCT_h_scaled_size = 14;
                min_DCT_v_scaled_size = 14;
            }
            else if (scale_num * 15 >= scale_denom * block_size)
            {
                /* Provide block_size/15 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 15L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 15L);
                min_DCT_h_scaled_size = 15;
                min_DCT_v_scaled_size = 15;
            }
            else
            {
                /* Provide block_size/16 scaling */
                jpeg_width = (int)JpegUtils.jdiv_round_up((long)m_image_width * block_size, 16L);
                jpeg_height = (int)JpegUtils.jdiv_round_up((long)m_image_height * block_size, 16L);
                min_DCT_h_scaled_size = 16;
                min_DCT_v_scaled_size = 16;
            }
        }