/* Ċ Ġ* Ġ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 . test utils . benchmark Ċ Ċ import Ġandroid . annotation . Target Api Ċ import Ġandroid . graphics . Picture Ċ import Ġandroid . graphics . Render Node Ċ import Ġandroid . os . Build Ċ import Ġandroidx . compose . ui . graphics . Canvas Ċ Ċ // ĠWe Ġmust Ġseparate Ġthe Ġuse Ġof ĠRender Node Ġso Ġthat Ġit Ġisn 't Ġreferenced Ġin Ġany Ċ // Ġway Ġon Ġplatforms Ġthat Ġdon 't Ġhave Ġit . ĠThis Ġextract s ĠRender Node Ġuse Ġto Ġa Ċ // Ġpotentially Ġun loaded Ġclass , ĠRender Node Capture . Ċ interface ĠDraw Capture Ġ{ ĊĠĠĠ Ġfun Ġbegin Recording ( width : ĠInt , Ġheight : ĠInt ): ĠCanvas ĊĠĠĠ Ġfun Ġend Recording () Ċ } Ċ Ċ fun ĠDraw Capture (): ĠDraw Capture Ġ{ ĊĠĠĠ Ġval Ġsupports Render Node Ġ= ĠBuild . VERSION . SDK _ INT Ġ>= Ġ 2 9 ĊĠĠĠ Ġreturn Ġif Ġ( supports Render Node ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRender Node Capture () ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠPicture Capture () ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Target Api ( Build . VERSION _ CODES . Q ) Ċ private Ġclass ĠRender Node Capture Ġ: ĠDraw Capture Ġ{ ĊĠĠĠ Ġprivate Ġval Ġrender Node Ġ= ĠRender Node (" Test ") ĊĊĠĠĠ Ġoverride Ġfun Ġbegin Recording ( width : ĠInt , Ġheight : ĠInt ): ĠCanvas Ġ{ ĊĠĠĠĠĠĠĠ Ġrender Node . setPosition ( 0 , Ġ 0 , Ġwidth , Ġheight ) ĊĠĠĠĠĠĠĠ Ġreturn ĠCanvas ( render Node . begin Recording ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġend Recording () Ġ{ ĊĠĠĠĠĠĠĠ Ġrender Node . end Recording () ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠPicture Capture Ġ: ĠDraw Capture Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpicture Ġ= ĠPicture () ĊĊĠĠĠ Ġoverride Ġfun Ġbegin Recording ( width : ĠInt , Ġheight : ĠInt ): ĠCanvas Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠCanvas ( picture . begin Recording ( width , Ġheight )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġend Recording () Ġ{ ĊĠĠĠĠĠĠĠ Ġpicture . end Recording () ĊĠĠĠ Ġ} Ċ }