/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 9 - 2 0 2 1 ĠJetBrains Ġs . r . o . Ċ Ġ* Ċ Ġ* Ġ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 . Ċ Ġ* Ċ Ġ* Ġ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 Ġorg . jetbrains . project or . client . common . canvas Ċ Ċ import Ġkotlinx . browser . document Ċ import Ġorg . jetbrains . project or . client . common . canvas . Canvas . Image Source Ċ import Ġorg . jetbrains . project or . client . common . canvas . Canvas . Snapshot Ċ import Ġorg . jetbrains . project or . util . logging . Logger Ċ import Ġorg . w 3 c . dom .* Ċ Ċ class ĠDom Canvas ( private Ġval Ġmy Canvas : ĠHTML Canvas Element ) Ġ: ĠCanvas Ġ{ ĊĊĠ Ġoverride Ġval Ġcontext 2 d : ĠContext 2 d Ġ= ĠDom Context 2 d ( my Canvas . getContext (" 2 d ") Ġas ĠCanvas Rendering Context 2 D ) ĊĊĠ Ġoverride Ġvar Ġwidth : ĠInt ĊĠĠĠ Ġget () Ġ= Ġmy Canvas . width ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ Ġmy Canvas . width Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠ Ġoverride Ġvar Ġheight : ĠInt ĊĠĠĠ Ġget () Ġ= Ġmy Canvas . height ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ Ġmy Canvas . height Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠ Ġoverride Ġvar Ġfont Variant L ig atures : ĠString ĊĠĠĠ Ġget () Ġ= Ġmy Canvas . style . font Variant L ig atures ĊĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠ Ġmy Canvas . style . font Variant L ig atures Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĠ Ġoverride Ġval Ġimage Source : ĠImage Source Ġ= ĠDom Image Source ( my Canvas ) ĊĊĠ Ġoverride Ġfun Ġtake Snapshot (): ĠSnapshot Ġ{ ĊĠĠĠ Ġval Ġcopy Ġ= Ġdocument . createElement (" canvas ") Ġas ĠHTML Canvas Element ĊĊĠĠĠ Ġcopy . apply Ġ{ ĊĠĠĠĠĠ Ġwidth Ġ= Ġmy Canvas . width ĊĠĠĠĠĠ Ġheight Ġ= Ġmy Canvas . height ĊĠĠĠĠĠ Ġif Ġ( my Canvas . width Ġ!= Ġ 0 Ġ&& Ġmy Canvas . height Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ( getContext (" 2 d ") Ġas ĠCanvas Rendering Context 2 D ). drawImage ( my Canvas , Ġ 0 . 0 , Ġ 0 . 0 ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġreturn Ġobject Ġ: ĠDom Image Source ( copy ), ĠSnapshot Ġ{} ĊĠ Ġ} ĊĊĠ Ġopen Ġclass ĠDom Image Source ( val Ġcanvas Element : ĠCanvas Image Source ) Ġ: ĠImage Source Ġ{ ĊĠĠĠ Ġoverride Ġfun ĠisEmpty (): ĠBoolean Ġ{ ĊĠĠĠĠĠ Ġreturn Ġcanvas Element . isEmpty () ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠ Ġprivate Ġval Ġlogger Ġ= ĠLogger < Dom Canvas >() ĊĊĠĠĠ Ġfun ĠCanvas Image Source . isEmpty (): ĠBoolean Ġ= ĊĠĠĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠHTML Image Element Ġ-> Ġwidth Ġ== Ġ 0 Ġ|| Ġheight Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġis ĠHTML Canvas Element Ġ-> Ġwidth Ġ== Ġ 0 Ġ|| Ġheight Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġis ĠHTML Video Element Ġ-> Ġwidth Ġ== Ġ 0 Ġ|| Ġheight Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġis ĠImage Bitmap Ġ-> Ġwidth Ġ== Ġ 0 Ġ|| Ġheight Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġis ĠImage Data Ġ-> Ġwidth Ġ== Ġ 0 Ġ|| Ġheight Ġ== Ġ 0 ĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġlogger . error Ġ{ Ġ" Unknown Ġtype Ġ${ this :: class }" Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ