/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 Ġ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 Ġcom . android . tools . layout inspector Ċ Ċ import Ġjava . awt . Point Ċ import Ġjava . awt . color . Color Space Ċ import Ġjava . awt . image . Buffered Image Ċ import Ġjava . awt . image . Data Buffer Ċ import Ġjava . awt . image . Data Buffer Int Ċ import Ġjava . awt . image . Data Buffer Short Ċ import Ġjava . awt . image . Direct Color Model Ċ import Ġjava . awt . image . Raster Ċ import Ġjava . awt . image . Single Pixel Packed Sample Model Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . nio . Byte Order Ċ Ċ /** Ċ Ġ* ĠThe Ġbitmap Ġheader Ġcontains Ġthe Ġwidth Ġand Ġheight Ġas Ġints , Ġand Ġthe Ġtype Ġas Ġa Ġbyte . Ċ Ġ* ĠSee Ġ[ Bitmap Type ]. Ċ Ġ*/ Ċ const Ġval ĠBIT MAP _ HEADER _ SIZE Ġ= Ġ 9 Ċ Ċ enum Ġclass ĠBitmap Type ( val Ġbyte Val : ĠByte , Ġval Ġpixel Size : ĠInt ) Ġ{ ĊĠĠĠ ĠRGB _ 5 6 5 ( 1 , Ġ 2 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Image ( bytes : ĠByteBuffer , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠBufferedImage Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġshort Array Ġ= ĠShort Array ( width Ġ* Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbytes . order ( Byte Order . LIT TLE _ ENDIAN ). as Short Buffer (). get ( short Array ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠData Buffer Short ( short Array , Ġwidth Ġ* Ġheight ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSingle Pixel Packed Sample Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠData Buffer . TYPE _ USH ORT , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwidth , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheight , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint ArrayOf ( 0 x 1 f . sh l ( 1 1 ), Ġ 0 x 3 f . sh l ( 5 ), Ġ 0 x 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġraster Ġ= ĠR aster . create Writable Raster ( model , Ġbuffer , ĠPoint ( 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcolor Model Ġ= ĠDirect Color Model ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 1 6 , Ġ 0 x 1 f . sh l ( 1 1 ), Ġ 0 x 3 f . sh l ( 5 ), Ġ 0 x 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Suppress (" Un des irable Class Usage ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBufferedImage ( color Model , Ġraster , Ġfalse , Ġnull ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠAB GR _ 8 8 8 8 ( 2 , Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Image ( bytes : ĠByteBuffer , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠBufferedImage Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrgba Bytes Ġ= Ġint ArrayOf ( 0 xff , Ġ 0 xff 0 0 , Ġ 0 xff 0 0 0 0 , Ġ 0 xff 0 0 0 0 0 0 . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Image 8 8 8 8 ( width , Ġheight , Ġbytes , Ġrgba Bytes ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ ĠAR GB _ 8 8 8 8 ( 3 , Ġ 4 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Image ( bytes : ĠByteBuffer , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠBufferedImage Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrgba Bytes Ġ= Ġint ArrayOf ( 0 xff 0 0 0 0 , Ġ 0 xff 0 0 , Ġ 0 xff , Ġ 0 xff 0 0 0 0 0 0 . toInt ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcreate Image 8 8 8 8 ( width , Ġheight , Ġbytes , Ġrgba Bytes ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}; ĊĊĠĠĠ Ġabstract Ġfun Ġcreate Image ( bytes : ĠByteBuffer , Ġwidth : ĠInt , Ġheight : ĠInt ): ĠBufferedImage ĊĊĠĠĠ Ġprotected Ġfun Ġcreate Image 8 8 8 8 ( ĊĠĠĠĠĠĠĠ Ġwidth : ĠInt , ĊĠĠĠĠĠĠĠ Ġheight : ĠInt , ĊĠĠĠĠĠĠĠ Ġbytes : ĠByteBuffer , ĊĠĠĠĠĠĠĠ Ġrgba Bytes : ĠInt Array ĊĠĠĠ Ġ): ĠBufferedImage Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠintArray Ġ= ĠInt Array ( width Ġ* Ġheight ) ĊĠĠĠĠĠĠĠ Ġbytes . order ( Byte Order . LIT TLE _ ENDIAN ). as Int Buffer (). get ( int Array ) ĊĠĠĠĠĠĠĠ Ġval Ġbuffer Ġ= ĠData Buffer Int ( int Array , Ġwidth Ġ* Ġheight ) ĊĠĠĠĠĠĠĠ Ġval Ġmodel Ġ= ĠSingle Pixel Packed Sample Model ( Data Buffer . TYPE _ INT , Ġwidth , Ġheight , Ġrgba Bytes ) ĊĠĠĠĠĠĠĠ Ġval Ġraster Ġ= ĠR aster . create Writable Raster ( model , Ġbuffer , ĠPoint ( 0 , Ġ 0 )) ĊĠĠĠĠĠĠĠ Ġval Ġcolor Model Ġ= ĠDirect Color Model ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠColor Space . getInstance ( Color Space . CS _ s RGB ), ĊĠĠĠĠĠĠĠĠĠĠĠĠ 3 2 , Ġrgba Bytes [ 0 ], Ġrgba Bytes [ 1 ], Ġrgba Bytes [ 2 ], Ġrgba Bytes [ 3 ], Ġfalse , ĠData Buffer . TYPE _ INT ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" Un des irable Class Usage ") ĊĠĠĠĠĠĠĠ Ġreturn ĠBufferedImage ( color Model , Ġraster , Ġfalse , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġfrom Byte Val ( byte : ĠByte ) Ġ= Ġvalues (). find Ġ{ Ġit . byte Val Ġ== Ġbyte Ġ} Ġ?: ĊĠĠĠĠĠĠĠ Ġthrow ĠUnknown Bitmap Type Exception ( byte ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ class ĠUnknown Bitmap Type Exception ( type : ĠByte ): ĠException (" Unknown Ġbitmap Ġtype Ġ$ type ") Ċ