package Ġorg . open rnd r . extras . image Fit Ċ Ċ import Ġorg . open rnd r . draw . Color Buffer Ċ import Ġorg . open rnd r . draw . Drawer Ċ import Ġorg . open rnd r . math . map Ċ import Ġorg . open rnd r . shape . Rectangle ĊĊ Ċ enum Ġclass ĠFit Method Ġ{ ĊĠĠĠ ĠCover , ĊĠĠĠ ĠCont ain Ċ } Ċ Ċ fun ĠDraw er . image Fit ( img : ĠColor Buffer , Ġx : ĠDouble Ġ= Ġ 0 . 0 , Ġy : ĠDouble Ġ= Ġ 0 . 0 , Ġw : ĠDouble , Ġh : ĠDouble , Ġfit Method : Fit Method Ġ= ĠFit Method . Cover , Ġhorizontal Position : Double Ġ= Ġ 0 . 0 , Ġvertical Position : Double Ġ= Ġ 0 . 0 ) Ġ{ ĊĠĠĠ Ġval Ġsource Width Ġ= Ġimg . width . toDouble () ĊĠĠĠ Ġval Ġsource Height Ġ= Ġimg . height . toDouble () ĊĊĠĠĠ Ġvar Ġtarget X Ġ= Ġx ĊĠĠĠ Ġvar Ġtarget Y Ġ= Ġy ĊĊĠĠĠ Ġvar Ġtarget Width : ĠDouble ĊĠĠĠ Ġvar Ġtarget Height : ĠDouble ĊĊĠĠĠ Ġval Ġsource : ĠRectangle ĊĠĠĠ Ġval Ġtarget : ĠRectangle ĊĊĠĠĠ Ġwhen Ġ( fit Method ) Ġ{ ĊĠĠĠĠĠĠĠ ĠFit Method . Contain Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Width Ġ= Ġw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Height Ġ= Ġh ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( w Ġ<= Ġtarget Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Width Ġ= Ġw ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Height Ġ= Ġ( source Height Ġ/ Ġsource Width ) Ġ* Ġw ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( h Ġ<= Ġtarget Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Height Ġ= Ġh ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Width Ġ= Ġ( source Width Ġ/ Ġsource Height ) Ġ* Ġh ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġx ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġx Ġ+ Ġw Ġ- Ġtarget Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġy ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġy Ġ+ Ġh Ġ- Ġtarget Height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget X Ġ= Ġmap (- 1 . 0 , Ġ 1 . 0 , Ġleft , Ġright , Ġhorizontal Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Y Ġ= Ġmap (- 1 . 0 , Ġ 1 . 0 , Ġtop , Ġbottom , Ġvertical Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠRectangle ( 0 . 0 , Ġ 0 . 0 , Ġsource Width , Ġsource Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Ġ= ĠRectangle ( target X , Ġtarget Y , Ġtarget Width , Ġtarget Height ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠFit Method . Cover Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Width Ġ= Ġsource Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Height Ġ= Ġsource Height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source Width Ġ<= Ġtarget Width ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Width Ġ= Ġsource Width ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Height Ġ= Ġ( h Ġ/ Ġw ) Ġ* Ġsource Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( source Height Ġ<= Ġtarget Height ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Height Ġ= Ġsource Height ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Width Ġ= Ġ( w Ġ/ Ġh ) Ġ* Ġsource Height ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġleft Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġright Ġ= Ġsource Width Ġ- Ġtarget Width ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtop Ġ= Ġ 0 . 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbottom Ġ= Ġsource Height Ġ- Ġtarget Height ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget X Ġ= Ġmap (- 1 . 0 , Ġ 1 . 0 , Ġleft , Ġright , Ġhorizontal Position ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Y Ġ= Ġmap (- 1 . 0 , Ġ 1 . 0 , Ġtop , Ġbottom , Ġvertical Position ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġsource Ġ= ĠRectangle ( target X , Ġtarget Y , Ġtarget Width , Ġtarget Height ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtarget Ġ= ĠRectangle ( x , Ġy , Ġw , Ġh ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġimage ( img , Ġsource , Ġtarget ) Ċ }