/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . compose . ui . graphics Ċ Ċ import Ġandroidx . compose . ui . geometry . Offset Ċ import Ġandroidx . compose . ui . graphics . color space . Color Spaces Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ import Ġorg . junit . Assert . assertEquals Ċ import Ġorg . junit . Assert . assertTrue Ċ import Ġorg . junit . Test Ċ Ċ class ĠDesktop Image Bitmap Test Ġ: ĠDesktop Graphics Test () Ġ{ ĊĠĠĠ Ġprivate Ġval Ġcanvas : ĠCanvas Ġ= Ġinit Canvas ( width Px Ġ= Ġ 1 6 , Ġheight Px Ġ= Ġ 1 6 ) ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdraw On Image Bitmap Alpha 8 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Ġ= ĠImage Bitmap ( width Ġ= Ġ 8 , Ġheight Ġ= Ġ 8 , Ġconfig Ġ= ĠImage Bitmap Config . Alpha 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġasset Canvas Ġ= ĠCanvas ( asset ) ĊĠĠĠĠĠĠĠ Ġasset Canvas . drawImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage From Resource (" android x / compose / desktop / test . png "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset ( 4 f , Ġ 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPaint () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcanvas . drawImage ( asset , ĠOffset ( 4 f , Ġ 4 f ), ĠPaint ()) ĊĊĠĠĠĠĠĠĠ Ġscreenshot Rule . snap ( surface ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdraw On Image Bitmap Display P 3 () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Ġ= ĠImage Bitmap ( width Ġ= Ġ 8 , Ġheight Ġ= Ġ 8 , Ġcolor Space Ġ= ĠColor Spaces . Display P 3 ) ĊĠĠĠĠĠĠĠ Ġval Ġasset Canvas Ġ= ĠCanvas ( asset ) ĊĠĠĠĠĠĠĠ Ġasset Canvas . drawImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage From Resource (" android x / compose / desktop / test . png "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset ( 4 f , Ġ 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPaint () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcanvas . drawImage ( asset , ĠOffset ( 4 f , Ġ 4 f ), ĠPaint ()) ĊĊĠĠĠĠĠĠĠ Ġscreenshot Rule . snap ( surface ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġdraw On Image Bitmap () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Ġ= ĠImage Bitmap ( width Ġ= Ġ 8 , Ġheight Ġ= Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġval Ġasset Canvas Ġ= ĠCanvas ( asset ) ĊĠĠĠĠĠĠĠ Ġasset Canvas . drawImage ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage From Resource (" android x / compose / desktop / test . png "), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠOffset ( 4 f , Ġ 4 f ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPaint () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġcanvas . drawImage ( asset , ĠOffset ( 4 f , Ġ 4 f ), ĠPaint ()) ĊĊĠĠĠĠĠĠĠ Ġscreenshot Rule . snap ( surface ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ( expected Ġ= ĠRuntimeException :: class ) ĊĠĠĠ Ġfun Ġ` cannot Ġdraw Ġon Ġloaded ĠImage Bitmap `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Ġ= Ġimage From Resource (" android x / compose / desktop / test . png ") ĊĠĠĠĠĠĠĠ ĠCanvas ( asset ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` attributes Ġof Ġloaded Ġasset `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Ġ= Ġimage From Resource (" android x / compose / desktop / test . png ") ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 , Ġasset . width ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 8 , Ġasset . height ) ĊĠĠĠĠĠĠĠ ĠassertTrue ( asset . has Alpha ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Image Bitmap Config . Argb 8 8 8 8 , Ġasset . config ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Color Spaces . S rgb , Ġasset . color Space ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` read Ġpixels Ġof Ġloaded Ġasset `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Ġ= Ġimage From Resource (" android x / compose / desktop / test . png ") ĊĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠInt Array ( 5 ) ĊĠĠĠĠĠĠĠ Ġasset . read Pixels ( array , Ġstart X Ġ= Ġ 0 , Ġstart Y Ġ= Ġ 0 , Ġwidth Ġ= Ġ 1 , Ġheight Ġ= Ġ 1 , Ġbuffer Offset Ġ= Ġ 0 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( array . map (:: to HexString )). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ffff 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 0 0 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġasset . read Pixels ( array , Ġstart X Ġ= Ġ 3 , Ġstart Y Ġ= Ġ 3 , Ġwidth Ġ= Ġ 2 , Ġheight Ġ= Ġ 2 , Ġbuffer Offset Ġ= Ġ 1 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( array . map (:: to HexString )). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ffff 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ffff 0 0 ff ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ffffff 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ff 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 0 0 0 0 0 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` read Ġpixels Ġof Ġloaded Ġasset Ġwith Ġdifferent Ġstride `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġasset Ġ= Ġimage From Resource (" android x / compose / desktop / test . png ") ĊĊĠĠĠĠĠĠĠ Ġval Ġarray Ġ= ĠInt Array ( 6 ) ĊĠĠĠĠĠĠĠ Ġasset . read Pixels ( array , Ġstart X Ġ= Ġ 3 , Ġstart Y Ġ= Ġ 3 , Ġwidth Ġ= Ġ 2 , Ġheight Ġ= Ġ 2 , Ġstride Ġ= Ġ 3 ) ĊĠĠĠĠĠĠĠ ĠassertThat ( array . map (:: to HexString )). isEqualTo ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ffff 0 0 ff ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ffffff 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" ff 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 8 0 0 0 0 0 0 0 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" 0 0 0 0 0 0 0 0 " ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġto HexString ( num : ĠInt ) Ġ= Ġ"% 0 8 x ". format ( num ) Ċ } Ċ