~dont_cache() ~defunc('resize', { ~setl('x', ~sparam(1)), ~setl('y', ~sparam(2)), ~setl('max_x', ~sparam(3)), ~setl('max_y', ~sparam(4)), ~setl('enlarge', ~sparam(5)), ~if(~getl('x') > ~getl('max_x') || ~getl('enlarge'), ~setl( 'y', ~integer( ~floor(~getl('y') * (~getl('max_x') / ~getl('x')))), 'x', ~getl('max_x') ) ), ~if(~getl('y') > ~getl('max_y'), ~setl( 'x', ~integer( ~floor(~getl('x') * (~getl('max_y') / ~getl('y')))), 'y', ~getl('max_y') ) ), 'redim to: x~getl('x') y~getl('y') from max_x~getl('max_x') max_y~getl('max_y')' }) Enlarge = 0 :
~resize( 10, 100, 200, 3000, 0)
~resize( 100, 10, 200, 3000, 0)
~resize( 10, 100, 2000, 300, 0)
~resize( 100, 10, 2000, 300, 0)
Enlarge = 1 :
~resize( 10, 100, 200, 3000, 1)
~resize( 100, 10, 200, 3000, 1)
~resize( 10, 100, 2000, 300, 1)
~resize( 100, 10, 2000, 300, 1)
Max
Enlarge = 0 :
~resize( 1000, 10000, 200, 3000, 0)
~resize( 10000, 1000, 200, 3000, 0)
~resize( 1000, 10000, 2000, 300, 0)
~resize( 10000, 1000, 2000, 300, 0)
Enlarge = 1 :
~resize( 1000, 10000, 200, 3000, 1)
~resize( 10000, 1000, 200, 3000, 1)
~resize( 1000, 10000, 2000, 300, 1)
~resize( 10000, 1000, 2000, 300, 1)