~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)