package Ġcom . zp . z photo _ lib . ui . crop Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Matrix Ċ Ċ internal Ġclass ĠRotate Bitmap ( bitmap : ĠBitmap ?, Ġrotation : ĠInt ) Ġ{ ĊĊĠĠĠ Ġvar Ġbitmap : ĠBitmap ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġrotation Ġ= Ġ 0 ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . bitmap Ġ= Ġbitmap ĊĠĠĠĠĠĠĠ Ġthis . rotation Ġ= Ġrotation Ġ% Ġ 3 6 0 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Rotate Matrix () Ġ= ĠMatrix (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠBy Ġdefault Ġthis Ġis Ġan Ġidentity Ġmatrix ĊĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ!= Ġnull Ġ&& Ġrotation Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠWe Ġwant Ġto Ġdo Ġthe Ġrotation Ġat Ġorigin , Ġbut Ġsince Ġthe Ġbounding ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġrectangle Ġwill Ġbe Ġchanged Ġafter Ġrotation , Ġso Ġthe Ġdelta Ġvalues ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġare Ġbased Ġon Ġold Ġ& Ġnew Ġwidth / height Ġrespectively . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcx Ġ= Ġbitmap !!. width Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcy Ġ= Ġbitmap !!. height Ġ/ Ġ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpre Translate ((- cx ). toFloat (), Ġ(- cy ). toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Rotate ( rotation . toFloat ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpost Translate (( getWidth () Ġ/ Ġ 2 ). toFloat (), Ġ( getHeight () Ġ/ Ġ 2 ). toFloat ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Orientation Changed () Ġ= Ġrotation Ġ/ Ġ 9 0 Ġ% Ġ 2 Ġ!= Ġ 0 ĊĊĠĠĠ Ġfun Ġget Height (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ== Ġnull ) Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Orientation Changed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap !!. width ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap !!. height ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġget Width (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ== Ġnull ) Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is Orientation Changed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap !!. height ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap !!. width ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġre cycle () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( bitmap Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap !!. recycle () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbitmap Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ }