/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 1 ĠPat rick ĠGold inger Ċ Ġ* Ċ Ġ* Ġ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 Ġdev . pat rick gold . fl or is board . ime . keyboard Ċ Ċ import Ġandroid . graphics . Rect Ċ Ċ /** Ċ Ġ* ĠAbstract Ġclass Ġdescribing Ġthe Ġsmallest Ġcomputed Ġunit Ġin Ġa Ġcomputed Ġkeyboard . ĠEach Ġkey Ġrepresents Ġexactly Ġone Ġkey Ċ Ġ* Ġdisplayed Ġin Ġthe ĠUI . ĠIt Ġallows Ġto Ġsave Ġthe Ġabsolute Ġlocation Ġwithin Ġthe Ġparent Ġkeyboard , Ġsave Ġtouch Ġand Ġvisual Ċ Ġ* Ġbounds , Ġmanaging Ġthe Ġstate Ġ( enabled , Ġpressed , Ġvisibility ) Ġas Ġwell Ġas Ġlayout Ġs izing Ġfactors . ĠEach Ġkey Ġin Ġthis ĠI ME Ċ Ġ* Ġinherits Ġfrom Ġthis Ġbase Ġkey Ġclass . ĠThis Ġallows Ġfor Ġa Ġinter - oper able Ġusage Ġof Ġa Ġkey Ġwithout Ġknowing Ġthe Ġexact Ċ Ġ* Ġsubclass Ġup front . Ċ Ġ* Ċ Ġ* Ġ@ property Ġdata ĠThe Ġbase Ġkey Ġdata Ġthis Ġkey Ġrepresents . This Ġcan Ġbe Ġanything Ġ- Ġfrom Ġa Ġbasic Ġtext Ġkey Ġto Ġan Ġemoji Ġkey Ċ Ġ* Ġ Ġto Ġa Ġcomplex Ġselector . Ċ Ġ*/ Ċ abstract Ġclass ĠKey ( open Ġval Ġdata : ĠAbstract Key Data ) Ġ{ ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġwhether Ġthis Ġkey Ġis Ġenabled Ġor Ġnot . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġvar Ġis Enabled : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġwhether Ġthis Ġkey Ġis Ġactively Ġpressed Ġor Ġnot . ĠIs Ġused Ġby Ġthe Ġparent Ġkeyboard Ġview Ġto Ġdraw Ġthe Ġkey ĊĠĠĠĠ Ġ* Ġdifferently Ġto Ġindicate Ġthis Ġstate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġvar Ġis Pressed : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġwhether Ġthis Ġkey Ġis Ġvisible Ġor Ġnot . ĠIs Ġused Ġby Ġthe Ġparent Ġkeyboard Ġview Ġto Ġomit Ġthis Ġkey Ġin Ġthe ĊĠĠĠĠ Ġ* Ġlayout Ġand Ġdrawing Ġprocess . ĠA Ġ` false `- value Ġis Ġequivalent Ġto Ġ` VIS IBILITY _ GONE ` Ġon ĠAndroid 's ĠView Ġclass . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġvar Ġis Visible : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġtouch Ġbounds Ġof Ġthis Ġkey . ĠAll Ġbounds Ġdefined Ġhere Ġare Ġabsolute Ġcoordinates Ġwithin Ġthe Ġparent Ġkeyboard . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġval Ġtouch Bounds : ĠRect Ġ= ĠRect () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġvisible Ġbounds Ġof Ġthis Ġkey . ĠAll Ġbounds Ġdefined Ġhere Ġare Ġabsolute Ġcoordinates Ġwithin Ġthe Ġparent Ġkeyboard . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġval Ġvisible Bounds : ĠRect Ġ= ĠRect () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġvisible Ġdrawable Ġbounds Ġof Ġthis Ġkey . ĠAll Ġbounds Ġdefined Ġhere Ġare Ġabsolute Ġcoordinates Ġwithin Ġthe Ġparent ĊĠĠĠĠ Ġ* Ġkeyboard . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġval Ġvisible Drawable Bounds : ĠRect Ġ= ĠRect () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġvisible Ġlabel Ġbounds Ġof Ġthis Ġkey . ĠAll Ġbounds Ġdefined Ġhere Ġare Ġabsolute Ġcoordinates Ġwithin Ġthe Ġparent ĊĠĠĠĠ Ġ* Ġkeyboard . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġval Ġvisible Label Bounds : ĠRect Ġ= ĠRect () ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġhow Ġmuch Ġthis Ġkey Ġis Ġwilling Ġto Ġshrink Ġif Ġtoo Ġmany Ġkeys Ġare Ġin Ġa Ġkeyboard Ġrow . ĠA Ġvalue Ġof Ġ 0 . 0 ĊĠĠĠĠ Ġ* Ġindicates Ġthat Ġthe Ġkey Ġdoes Ġnot Ġwant Ġto Ġshrink Ġin Ġsuch Ġscenario . ĠThis Ġvalue Ġshould Ġnot Ġbe Ġset Ġmanually , Ġonly ĊĠĠĠĠ Ġ* Ġby Ġthe Ġkey 's Ġcompute Ġmethod Ġand Ġis Ġused Ġin Ġthe Ġlayout Ġprocess Ġto Ġdetermine Ġthe Ġreal Ġkey Ġwidth . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġvar Ġf lay Shrink : ĠDouble Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġhow Ġmuch Ġthis Ġkey Ġis Ġwilling Ġto Ġgrow Ġif Ġtoo Ġfew Ġkeys Ġare Ġin Ġa Ġkeyboard Ġrow . ĠA Ġvalue Ġof Ġ 0 . 0 ĊĠĠĠĠ Ġ* Ġindicates Ġthat Ġthe Ġkey Ġdoes Ġnot Ġwant Ġto Ġgrow Ġin Ġsuch Ġscenario . ĠThis Ġvalue Ġshould Ġnot Ġbe Ġset Ġmanually , Ġonly ĊĠĠĠĠ Ġ* Ġby Ġthe Ġkey 's Ġcompute Ġmethod Ġand Ġis Ġused Ġin Ġthe Ġlayout Ġprocess Ġto Ġdetermine Ġthe Ġreal Ġkey Ġwidth . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġvar Ġf lay Grow : ĠDouble Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġthe Ġrelative Ġpro portional Ġwidth Ġthis Ġkey Ġaims Ġto Ġget Ġin Ġrespective Ġto Ġthe Ġkeyboard Ġview 's Ġdesired Ġkey ĊĠĠĠĠ Ġ* Ġwidth . ĠA Ġvalue Ġof Ġ 1 . 0 Ġindicates Ġthat Ġthe Ġkey Ġwants Ġto Ġbe Ġexactly Ġas Ġwide Ġas Ġthe Ġdesired Ġkey Ġwidth , Ġa Ġvalue Ġof ĊĠĠĠĠ Ġ* Ġ 0 . 0 Ġis Ġbasically Ġequivalent Ġto Ġsetting Ġ[ isVisible ] Ġto Ġfalse . ĠThis Ġvalue Ġshould Ġnot Ġbe Ġset Ġmanually , Ġonly ĊĠĠĠĠ Ġ* Ġby Ġthe Ġkey 's Ġcompute Ġmethod Ġand Ġis Ġused Ġin Ġthe Ġlayout Ġprocess Ġto Ġdetermine Ġthe Ġreal Ġkey Ġwidth . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġvar Ġf lay Width Factor : ĠDouble Ġ= Ġ 0 . 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcomputed ĠUI Ġlabel Ġof Ġthis Ġkey . ĠThis Ġvalue Ġis Ġused Ġby Ġthe Ġkeyboard Ġview Ġto Ġtemporarily Ġsave Ġthe Ġlabel Ġstring ĊĠĠĠĠ Ġ* Ġfor ĠUI Ġrendering Ġand Ġshould Ġnot Ġbe Ġset Ġmanually . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġvar Ġlabel : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcomputed ĠUI Ġhint Ġlabel Ġof Ġthis Ġkey . ĠThis Ġvalue Ġis Ġused Ġby Ġthe Ġkeyboard Ġview Ġto Ġtemporarily Ġsave Ġthe Ġhint ĊĠĠĠĠ Ġ* Ġlabel Ġstring Ġfor ĠUI Ġrendering Ġand Ġshould Ġnot Ġbe Ġset Ġmanually . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġvar Ġhint ed Label : ĠString ? Ġ= Ġnull ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcomputed ĠUI Ġdrawable ĠID Ġof Ġthis Ġkey . ĠThis Ġvalue Ġis Ġused Ġby Ġthe Ġkeyboard Ġview Ġto Ġtemporarily Ġsave Ġthe ĊĠĠĠĠ Ġ* Ġdrawable ĠID Ġfor ĠUI Ġrendering Ġand Ġshould Ġnot Ġbe Ġset Ġmanually . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġvar Ġforeground Drawable Id : ĠInt ? Ġ= Ġnull Ċ } Ċ