/* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 ĠR az ew are ĠLLC Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ċ Ġ* Ġall Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠNot with standing Ġthe Ġfore going , Ġyou Ġmay Ġnot Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ċ Ġ* Ġdistribute , Ġsublicense , Ġcreate Ġa Ġderivative Ġwork , Ġand / or Ġsell Ġcopies Ġof Ġthe Ċ Ġ* ĠSoftware Ġin Ġany Ġwork Ġthat Ġis Ġdesigned , Ġintended , Ġor Ġmarket ed Ġfor Ġped ag og ical Ġor Ċ Ġ* Ġinstruction al Ġpurposes Ġrelated Ġto Ġprogramming , Ġcoding , Ġapplication Ġdevelopment , Ċ Ġ* Ġor Ġinformation Ġtechnology . Ġ ĠPermission Ġfor Ġsuch Ġuse , Ġcopying , Ġmodification , Ċ Ġ* Ġmer ger , Ġpublication , Ġdistribution , Ġsublic ensing , Ġcreation Ġof Ġderivative Ġworks , Ċ Ġ* Ġor Ġsale Ġis Ġexpress ly Ġwith held . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN Ċ Ġ* ĠTHE ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ package Ġcom . ray w ender lich . android . rw android tutorial Ċ Ċ import Ġandroid . graphics . Bitmap Ċ import Ġandroid . graphics . Canvas Ċ import Ġandroid . graphics . drawable . Bitmap Drawable Ċ import Ġandroid . graphics . drawable . Vector Drawable Ċ import Ġandroid . support . v 4 . content . Context Compat Ċ import Ġandroid . view . View Ċ import Ġandroid . widget . ImageView Ċ import Ġorg . hamcrest . Description Ċ import Ġorg . hamcrest . Type Safe Matcher Ċ Ċ class ĠDrawable Matcher ( val Ġdrawable Res Ids Ġ: ĠList < Int >) Ġ: ĠType Safe Matcher < View >() Ġ{ ĊĊĠ Ġoverride Ġfun Ġdescribe To ( description : ĠDescription ) Ġ{ ĊĠĠĠ Ġdescription . append Text (" with Ġdrawable Ġfrom Ġresource Ġid : Ġ") ĊĠĠĠ Ġdrawable Res Ids . forEach Ġ{ Ġdrawable Res Id Ġ-> ĊĠĠĠĠĠ Ġdescription . append Value ( drawable Res Id ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġoverride Ġfun Ġmatches S af ely ( item : ĠView ?): ĠBoolean Ġ{ ĊĠĠĠ Ġreturn Ġdrawable Res Ids . any Ġ{ Ġdrawable Res Id Ġ-> Ġmatches Drawable ( drawable Res Id , Ġitem ) Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġmatches Drawable ( drawable Res Id : ĠInt , Ġitem : ĠView ?) Ġ: ĠBoolean Ġ{ ĊĠĠĠ Ġif Ġ( item Ġ! is ĠImageView ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġtarget Ġ= Ġitem . drawable Ġ?: Ġreturn Ġfalse ĊĠĠĠ Ġif Ġ( drawable Res Id Ġ< Ġ 0 ) Ġ{ ĊĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĠĠĠ Ġval Ġexpected Drawable Ġ= ĠContext Compat . get Drawable ( item . context , Ġdrawable Res Id ) ĊĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġfalse ĊĊĠĠĠ Ġif Ġ( target Ġis ĠBitmap Drawable ) Ġ{ ĊĠĠĠĠĠ Ġval Ġtarget Bitmap Ġ= Ġ( target ). bitmap ĊĠĠĠĠĠ Ġval Ġother Bitmap Ġ= Ġ( expected Drawable Ġas ĠBitmap Drawable ). bitmap ĊĠĠĠĠĠ Ġreturn Ġtarget Bitmap . same As ( other Bitmap ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( target Ġis ĠVector Drawable ) Ġ{ ĊĠĠĠĠĠ Ġval Ġtarget Bitmap Ġ= Ġvector To Bitmap ( target ) ĊĠĠĠĠĠ Ġval Ġother Bitmap Ġ= Ġvector To Bitmap ( expected Drawable Ġ Ġas ĠVector Drawable ) ĊĠĠĠĠĠ Ġreturn Ġtarget Bitmap . same As ( other Bitmap ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġfalse ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun Ġvector To Bitmap ( vector Drawable : ĠVector Drawable ): ĠBitmap Ġ{ ĊĠĠĠ Ġval Ġbitmap Ġ= ĠBitmap . create Bitmap ( vector Drawable . intrinsic Width , Ġvector Drawable . intrinsic Height , ĠBitmap . Config . ARGB _ 8 8 8 8 ) ĊĠĠĠ Ġval Ġcanvas Ġ= ĠCanvas ( bitmap ) ĊĠĠĠ Ġvector Drawable . setBounds ( 0 , Ġ 0 , Ġcanvas . getWidth (), Ġcanvas . getHeight ()) ĊĠĠĠ Ġvector Drawable . draw ( canvas ) ĊĠĠĠ Ġreturn Ġbitmap ĊĠ Ġ} Ċ } Ċ