package Ġcom . microsoft . fluent ui . util Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ import Ġandroid . graphics . Rect Ċ import Ġandroid . view . View Ċ import Ġcom . microsoft . device . dual screen . layout . Screen Helper Ċ import Ġjava . lang . Exception Ċ Ċ /** Ċ Ġ* Ġ[ D uo Support Utils ] Ġis Ġhelper Ġobject Ġfor ĠSurface ĠD uo ĠDevice ĠSupport Ċ Ġ*/ Ċ object ĠD uo Support Utils Ġ{ ĊĠĠĠ Ġconst Ġval ĠD UO _ H INGE _ WIDTH Ġ= Ġ 8 4 ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Device Surface D uo ( activity : ĠActivity ) Ġ= ĠScreen Helper . is Device Surface D uo ( activity ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Dual Screen Mode ( activity : ĠActivity ) Ġ= ĠScreen Helper . is Dual Mode ( activity ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Rotation ( activity : ĠActivity ) Ġ= ĠScreen Helper . getCurrent Rotation ( activity ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget H inge ( activity : ĠActivity ) Ġ= ĠScreen Helper . get H inge ( activity ) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Screen Rect angles ( activity : ĠActivity ) Ġ= ĠScreen Helper . get Screen Rect angles ( activity ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġ[ is Window Double Por trait ] Ġto Ġcheck Ġif Ġthe Ġdevice Ġis Ġin Ġlandscape Ġmode Ġand Ġapp Ġis Ġsp anned . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Window Double Por trait ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ! is ĠActivity ) Ġthrow ĠActivity Context NotFoundException () ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . is Land scape Ġ&& Ġis Dual Screen Mode ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġ[ is Window Double Land scape ] Ġto Ġcheck Ġif Ġthe Ġdevice Ġis Ġin Ġpor trait Ġmode Ġand Ġapp Ġis Ġsp anned . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġis Window Double Land scape ( context : ĠContext ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ! is ĠActivity ) Ġthrow ĠActivity Context NotFoundException () ĊĠĠĠĠĠĠĠ Ġreturn Ġcontext . is Por trait Ġ&& Ġis Dual Screen Mode ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Rect ( view : ĠView ): ĠRect Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġscreen Pos Ġ= ĠInt Array ( 2 ) ĊĠĠĠĠĠĠĠ Ġview . getLocation On Screen ( screen Pos ) ĊĠĠĠĠĠĠĠ Ġreturn ĠRect ( screen Pos [ 0 ], Ġscreen Pos [ 1 ], Ġview . width , Ġview . height ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġ[ more On Left ] Ġto Ġcheck Ġif Ġa Ġgiven Ġ[ View ] Ġor Ġ[ Rect ] Ġis Ġmore Ġto Ġthe Ġleft Ġof Ġthe ĠSurface ĠD uo Ġh inge Ġor Ġis Ġmore Ġto Ġthe Ġright . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe ĠView Ġor ĠRect Ġis Ġmore Ġon Ġleft Ġof Ġthe Ġh inge , Ġfalse Ġotherwise . Ġ( false Ġimplies Ġmore Ġto Ġthe Ġright Ġof Ġthe Ġh inge ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmore On Left ( context : ĠContext , Ġrect : ĠRect ) Ġ= Ġis Window Double Por trait ( context ) Ġ&& Ġ(( get H inge ( context Ġas ĠActivity ) !!. left Ġ- Ġrect . left ) Ġ>= Ġ( rect . right Ġ- Ġget H inge ( context ) !!. right )) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmore On Left ( context : ĠContext , Ġview : ĠView ) Ġ= Ġmore On Left ( context , Ġget Rect ( view )) ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġ[ more On Top ] Ġto Ġcheck Ġif Ġa Ġgiven Ġ[ View ] Ġor Ġ[ Rect ] Ġis Ġmore Ġon Ġthe Ġtop Ġof ĠSurface ĠD uo Ġh inge Ġor Ġis Ġmore Ġon Ġthe Ġbottom . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe ĠView Ġor ĠRect Ġis Ġmore Ġon Ġtop Ġof Ġthe Ġh inge , Ġfalse Ġotherwise . Ġ( false Ġimplies Ġmore Ġon Ġthe Ġbottom Ġof Ġthe Ġh inge ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmore On Top ( context : ĠContext , Ġrect : ĠRect ) Ġ= Ġis Window Double Land scape ( context ) Ġ&& Ġ(( get H inge ( context Ġas ĠActivity ) !!. top Ġ- Ġrect . top ) Ġ>= Ġ( rect . bottom Ġ- Ġget H inge ( context ) !!. bottom )) ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġmore On Top ( context : ĠContext , Ġview : ĠView ) Ġ= Ġmore On Top ( context , Ġget Rect ( view )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġ[ intersect H inge ] Ġto Ġcheck Ġif Ġa Ġgiven Ġ[ View ] Ġor Ġ[ Rect ] Ġintersect s Ġwith Ġthe ĠSurface ĠD uo Ġh inge . ĊĠĠĠĠ Ġ* Ġ@ return Ġtrue Ġif Ġthe ĠView Ġor ĠRect Ġintersect s Ġwith Ġthe Ġh inge , Ġfalse Ġotherwise . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġintersect H inge ( context : ĠContext , Ġanchor Rect : ĠRect ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ! is ĠActivity ) Ġthrow ĠActivity Context NotFoundException () ĊĠĠĠĠĠĠĠ Ġreturn Ġis Device Surface D uo ( context ) Ġ&& Ġget H inge ( context ) !!. intersect ( anchor Rect ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġintersect H inge ( context : ĠContext , Ġanchor : ĠView ) Ġ= Ġintersect H inge ( context , Ġget Rect ( anchor )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġwidth Ġof Ġh inge / display Ġmask . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget H inge Width ( context : ĠContext ): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( context Ġ! is ĠActivity ) Ġthrow ĠActivity Context NotFoundException () ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Device Surface D uo ( context )) Ġreturn Ġ 0 ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( context . is Land scape ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget H inge ( context ) !!. width () ĊĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget H inge ( context ) !!. height () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUse Ġ[ get Single Screen Width Pixels ] Ġto Ġget Ġthe Ġpixels Ġof Ġa Ġsingle Ġscreen Ġon ĠSurface ĠD uo Ġdevice ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Static ĊĠĠĠ Ġfun Ġget Single Screen Width Pixels ( context : ĠContext ) Ġ= Ġif Ġ( is Window Double Por trait ( context )) Ġ( context . display Size . x Ġ- Ġget H inge Width ( context )) Ġ/ Ġ 2 Ġelse Ġcontext . display Size . x ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠException Ġthrown Ġwhen Ġthe Ġ[ Context ] Ġis Ġnot Ġactivity Ġcontext . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠActivity Context NotFoundException Ġ: ĠException (" Activity ĠContext Ġis Ġrequired .") Ċ }