+
    ƒŸ>j%  ã                  óþ   € ^ RI Ht ^ RIHt ^ RIHtHtHtHtH	t	 ^ RI
t
^RIHtHt ^RIHtHtHtHt ]! RR7       ! R	 R
4      4       t]	]
P(                  ]]]3,          3,          t ! R R4      tR R ltR R ltR# )é    )Úannotations)Ú	dataclass)ÚListÚOptionalÚSequenceÚTupleÚUnionN)ÚOdometerConfigÚOdometerEngine)ÚOdometerThemeÚ	TokenKindÚtotal_string_widthÚvisible_tokens_for_digitsT)Úfrozenc                  óH   € ] tR t^t$ R]R&   R]R&   RtR]R&   RtR]R&   R	tR# )
ÚBlitOpúpygame.SurfaceÚsurfacezTuple[int, int]ÚdestNzOptional[pygame.Rect]ÚareaÚclip© )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__annotations__r   r   Ú__static_attributes__r   ó    Ú´D:\Dyzine Tek Dropbox\Chris Cummings\Dyzine Tek, LLC\Engineering\Digital Signage\Overhead Bank Signage\DyzineFrame\Cursor OHD Project\DyzineFrame\reusable_odometer\render\widget.pyr   r      s$   ‡ àÓØ
ÓØ"&€DÐ
Ó&Ø"&€DÐ
×&r   r   c                  ó  € ] tR t^tR)R R llt]R R l4       t]R R l4       tRR	R
R	RR/R R lltR R lt	R R lt
R R ltR R ltR R ltR R ltR*RR/R R llltR R ltR  R! ltR" R# ltR$ R% lt]R& R' l4       tR(tR# )+ÚOdometerWidgetNc               ó$   € V ^8„  d   QhRRRRRR/# )é   Úthemer   ÚconfigzOptional[OdometerConfig]Úinitial_target_penniesÚintr   )Úformats   "r    Ú__annotate__ÚOdometerWidget.__annotate__   s(   € ÷ 5ñ 5àð5ð )ð5ð !$ñ	5r   c                	ó¦   € Wn         T;'       g    \        4       V n        \        V P                  VR 7      V n        RV n        RV n        RV n        R# ))r'   NF)r%   r
   r&   r   ÚengineÚ_static_surfaceÚ_static_surface_keyÚ_has_received_live_target)Úselfr%   r&   r'   s   &&&&r    Ú__init__ÚOdometerWidget.__init__   sK   € ð Œ
Ø×0Ð0¤Ó 0ˆŒÜ$Ø�K‰KØ#9ô
ˆŒð :>ˆÔØ>BˆÔ Ø/4ˆÖ&r   c               ó   € V ^8„  d   QhRR/# ©r$   Úreturnr(   r   )r)   s   "r    r*   r+   )   s   € ÷ +ñ + ñ +r   c                	ó.   € V P                   P                  # ©N)r-   Údisplay_pennies©r1   s   &r    r9   ÚOdometerWidget.display_pennies(   s   € à�{‰{×*Ñ*Ð*r   c               ó   € V ^8„  d   QhRR/# r5   r   )r)   s   "r    r*   r+   -   s   € ÷ *ñ * ñ *r   c                	ó.   € V P                   P                  # r8   )r-   Útarget_penniesr:   s   &r    r>   ÚOdometerWidget.target_pennies,   s   € à�{‰{×)Ñ)Ð)r   Ú	immediateFÚfirst_value_immediateÚ	mark_liveTc          
     ó,   € V ^8„  d   QhRRRRRRRRRR/# )	r$   Úvaluer(   r@   ÚboolrA   rB   r6   ÚNoner   )r)   s   "r    r*   r+   0   s<   € ÷ 2ñ 2àð2ð ð	2ð
  $ð2ð ð2ð 
ñ2r   c               	óð   € T;'       g    T;'       d    V P                   '       * pV'       d   V P                  P                  V4       MV P                  P                  V4       V'       d
   R V n         R# R# )TN)r0   r-   Údisplay_immediate_penniesÚset_target_pennies)r1   rD   r@   rA   rB   Úuse_immediates   &&$$$ r    rI   Ú!OdometerWidget.set_target_pennies0   sc   € ð "÷ 
ð 
Ø!×HÐH¨$×*HÑ*HÔ&Hð 	÷ Ø�K‰K×1Ñ1°%Õ8à�K‰K×*Ñ*¨5Ô1ßØ-1ˆDÖ*ñ r   c               ó    € V ^8„  d   QhRRRR/# )r$   rD   r(   r6   rF   r   )r)   s   "r    r*   r+   B   s   € ÷ Hñ H¨sð H°tñ Hr   c                	ó.   € V P                  VR RR7       R# )TF)r@   rB   N)rI   )r1   rD   s   &&r    rH   Ú(OdometerWidget.display_immediate_penniesB   s   € Ø×Ñ °ÀÐÖGr   c               ó    € V ^8„  d   QhRRRR/# )r$   Ú
dt_secondsÚfloatr6   rF   r   )r)   s   "r    r*   r+   E   s   € ÷ 'ñ ' ð '¨4ñ 'r   c                	ó<   € V P                   P                  V4       R # r8   )r-   Úupdate)r1   rP   s   &&r    rS   ÚOdometerWidget.updateE   s   € Ø�‰×Ñ˜:Ö&r   c               ó   € V ^8„  d   QhRR/# r5   r   )r)   s   "r    r*   r+   H   s   € ÷ )ñ )˜Sñ )r   c                	ó6   € V P                   P                  4       # r8   )r-   Úlag_penniesr:   s   &r    rW   ÚOdometerWidget.lag_penniesH   s   € Ø�{‰{×&Ñ&Ó(Ð(r   c               ó   € V ^8„  d   QhRR/# )r$   r6   rE   r   )r)   s   "r    r*   r+   K   s   € ÷ *ñ *˜dñ *r   c                	ó6   € V P                   P                  4       # r8   )r-   Úis_animatingr:   s   &r    r[   ÚOdometerWidget.is_animatingK   s   € Ø�{‰{×'Ñ'Ó)Ð)r   c               ó    € V ^8„  d   QhRRRR/# )r$   r   r   r6   rF   r   )r)   s   "r    r*   r+   N   s   € ÷ 6ñ 6˜Nð 6¨tñ 6r   c                	óD   € V P                  WP                  4       4       R # r8   ©Ú
_apply_opsÚget_draw_ops)r1   r   s   &&r    ÚdrawÚOdometerWidget.drawN   s   € Ø�‰˜×!2Ñ!2Ó!4Ö5r   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   r   r   Úrect_or_anchorÚ	Placementr6   rF   r   )r)   s   "r    r*   r+   Q   s&   € ÷ Dñ D˜~ð D¸yð DÈTñ Dr   c                	óF   € V P                  WP                  V4      4       R # r8   r_   )r1   r   re   s   &&&r    Údraw_atÚOdometerWidget.draw_atQ   s   € Ø�‰˜×!2Ñ!2°>Ó!BÖCr   Úinclude_staticc               ó$   € V ^8„  d   QhRRRRRR/# )r$   re   úOptional[Placement]rj   rE   r6   úList[BlitOp]r   )r)   s   "r    r*   r+   T   s(   € ÷ &ñ &à+ð&ð ð	&ð
 
ñ&r   c               	óZ  € . pV P                  V4      pV'       d'   V P                  W4      pVe   VP                  V4       V P                  P	                  4       p\        V4      p\        V P                  P                  V4      pVP                  \        ^ VP                  V,
          ^,          4      ,           p	W˜,           p
V P                  W4      p\        V4       EFF  w  pw  rÞV P                  P                  P                  WÞ4      pW¯P                  ,
          pW¿P                  ,
          pTp
VR8X  dÅ   VeÁ   \!        W|4      pV P                  P#                  V4      w  ppV P                  P                  P                  RV4      pVR8”  dA   VP%                  \'        VVVP                  VP                  V P                  VV4      4       Kõ  VP                  \)        VP*                  VV34      4       EK  VP                  \)        VP*                  VV34      4       EKI  	  V# )NÚdigitg�íµ ÷Æ°>)Ú_resolve_containerÚ_build_static_opÚappendr-   Úget_display_digitsr   r   r%   ÚalignedÚxÚmaxÚwÚ_resolve_bottom_yÚ	enumerateÚspec_forÚhÚ_digit_power_from_rtl_indexÚget_column_drawÚextendÚ_scrolling_digit_opsr   r   )r1   re   rj   ÚopsÚ	containerÚ	static_opÚdigitsÚtokensÚstring_wÚx_leftÚx_rightÚbottom_yÚ	rtl_indexÚkindro   Úspecru   ÚyÚpowerÚ
draw_digitÚscrollÚglyphs   &&$                   r    ra   ÚOdometerWidget.get_draw_opsT   s¹  € ð ˆØ×+Ñ+¨NÓ;ˆ	çØ×-Ñ-¨nÓHˆIØÒ$Ø—
‘
˜9Ô%à—‘×/Ñ/Ó1ˆÜ*¨6Ó2ˆÜ% d§j¡j×&8Ñ&8¸&ÓAˆØ—‘œs 1 y§{¡{°XÕ'=À!Õ&CÓDÕDˆØÕ#ˆØ×)Ñ)¨.ÓDˆä(1°&×(9Ñ$ˆI‘}˜Ø—:‘:×%Ñ%×.Ñ.¨tÓ;ˆDØŸ&™&Õ ˆAØŸ6™6Õ!ˆAØˆGà�wŒ 5Ò#4Ü3°FÓF�Ø%)§[¡[×%@Ñ%@ÀÓ%GÑ"�
˜FØŸ
™
×*Ñ*×3Ñ3°G¸ZÓH�Ø˜D”=Ø—J‘JÔ3°A°q¸%¿'¹'À5Ç7Á7ÈDÏJÉJÐXbÐdjÓkÔlÙØ—
‘
œ6 %§-¡-°!°Q°Ó8Ô9Úà�J‰J”v˜dŸl™l¨Q°¨FÓ3×4ñ! ):ð" ˆ
r   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   re   rl   r�   úpygame.Rectr6   zOptional[BlitOp]r   )r)   s   "r    r*   r+   |   s$   € ÷ ?ñ ?Ø1ð?Ø>Ið?à	ñ?r   c                	ól  € Vf#   V P                  4       pVe   \        VR4      # R # . pV P                  P                  e[   V P                  P                  P	                  4       VP
                  8X  d(   VP                  V P                  P                  R34       V P                  P                  e(   VP                  V P                  P                  R34       V'       g   R # \        V4      ^8X  d%   \        V^ ,          ^ ,          VP                  4      # VP                  VP                  V P                  P                  e    \        V P                  P                  4      M^ V P                  P                  e    \        V P                  P                  4      M^ 3pV P                  e   V P                  V8w  dX   \        P                   ! VP
                  \        P"                  4      pV F  w  rxVP%                  Wx4       K  	  W`n        WPn        \        V P                  VP                  4      # ©N)r   r   )Ú_ensure_default_static_surfacer   r%   Ú
backgroundÚget_sizeÚsizerr   ÚframeÚlenÚtopleftrw   r{   Úidr.   r/   ÚpygameÚSurfaceÚSRCALPHAÚblit)	r1   re   r�   r   ÚpartsÚkeyÚcomposedÚsurfÚposs	   &&&      r    rq   ÚOdometerWidget._build_static_op|   s¤  € ð Ò!Ø×9Ñ9Ó;ˆGØÒ"Ü˜g vÓ.Ð.Ùà>@ˆØ�:‰:× Ñ Ò,°·±×1FÑ1F×1OÑ1OÓ1QÐU^×UcÑUcÔ1cØ�L‰L˜$Ÿ*™*×/Ñ/°Ð8Ô9Ø�:‰:×ÑÒ'Ø�L‰L˜$Ÿ*™*×*Ñ*¨FÐ3Ô4ßÙÜˆu‹:˜Œ?Ü˜% �( 1�+ y×'8Ñ'8Ó9Ð9ð �K‰KØ�K‰KØ)-¯©×)>Ñ)>Ò)JŒBˆt�z‰z×$Ñ$Ô%ÐPQØ$(§J¡J×$4Ñ$4Ò$@ŒBˆt�z‰z×ÑÔ Àað	
ˆð ×ÑÒ'¨4×+CÑ+CÀsÔ+JÜ—~’~ i§n¡n´f·o±oÓFˆHÛ"‘	�Ø—‘˜dÖ(ñ #à#+Ô Ø'*Ô$Ü�d×*Ñ*¨I×,=Ñ,=Ó>Ð>r   c               ó   € V ^8„  d   QhRR/# )r$   r6   zOptional[pygame.Surface]r   )r)   s   "r    r*   r+   �   s   € ÷ $ñ $Ð0Hñ $r   c                	óv  € V P                   P                  f   V P                   P                  f   R # V P                   P                  P                  pVR8X  d®   V P                   P                  e&   V P                   P                  P                  4       pMpV P                   P                  eY   V P                   P                  P                  w  r#V P                   P                  P                  4       w  rEW$,           W5,           3pV^ ,          V^,          V P                   P                  P                  ^ ,          V P                   P                  P                  ^,          V P                   P                  e    \        V P                   P                  4      M^ V P                   P                  e    \        V P                   P                  4      M^ 3pV P                  e   V P                  V8X  d   V P                  # \        P                  ! V\        P                  4      pV P                   P                  e•   V P                   P                  P                  4       V8X  d(   VP                  V P                   P                  R4       MDVP                  \        P                  P                  V P                   P                  V4      R4       V P                   P                  eE   VP                  V P                   P                  V P                   P                  P                  4       Wpn        W`n	        V# r•   )r%   r—   rš   ÚlayoutÚscreen_sizer˜   Úframe_anchorr�   r.   r/   rž   rŸ   r    r¡   Ú	transformÚsmoothscale)r1   r™   ÚfxÚfyÚfwÚfhr£   Úlayers   &       r    r–   Ú-OdometerWidget._ensure_default_static_surface�   s;  € Ø�:‰:× Ñ Ò(¨T¯Z©Z×-=Ñ-=Ò-EÙà�z‰z× Ñ ×,Ñ,ˆØ�6Œ>Ø�z‰z×$Ñ$Ò0Ø—z‘z×,Ñ,×5Ñ5Ó7‘Ø—‘×!Ñ!Ò-ØŸ™×*Ñ*×7Ñ7‘�ØŸ™×)Ñ)×2Ñ2Ó4‘�Ø� ¥Ð)�à��GØ��GØ�J‰J×Ñ×*Ñ*¨1Õ-Ø�J‰J×Ñ×*Ñ*¨1Õ-Ø)-¯©×)>Ñ)>Ò)JŒBˆt�z‰z×$Ñ$Ô%ÐPQØ$(§J¡J×$4Ñ$4Ò$@ŒBˆt�z‰z×ÑÔ Àað
ˆð ×ÑÒ+°×0HÑ0HÈCÔ0OØ×'Ñ'Ð'ä—’˜t¤V§_¡_Ó5ˆØ�:‰:× Ñ Ò,Ø�z‰z×$Ñ$×-Ñ-Ó/°4Ô7Ø—
‘
˜4Ÿ:™:×0Ñ0°&Õ9à—
‘
Ü×$Ñ$×0Ñ0°·±×1FÑ1FÈÓMØôð �:‰:×ÑÒ'Ø�J‰J�t—z‘z×'Ñ'¨¯©×):Ñ):×)GÑ)GÔHØ$ÔØ#&Ô Øˆr   c               ó    € V ^8„  d   QhRRRR/# )r$   re   rl   r6   r“   r   )r)   s   "r    r*   r+   Ã   s   € ÷ +ñ +Ð1Dð +Èñ +r   c                	ó®  € Vfá   V P                   P                  eX   \        P                  ! V P                   P                  P
                  V P                   P                  P                  4       4      # V P                   P                  P                  R8w  d6   \        P                  ! RV P                   P                  P                  4      # \        P                  ! RR4      # \        V\        P                  4      '       d   VP                  4       # TpV P                   P                  e9   \        P                  ! W P                   P                  P                  4       4      # V P                   P                  P                  R8w  d5   \        P                  ! W P                   P                  P                  4      # \        P                  ! VR4      # r•   )
r%   rš   rž   ÚRectrª   r¬   r˜   r«   Ú
isinstanceÚcopy)r1   re   Úanchors   && r    rp   Ú!OdometerWidget._resolve_containerÃ   s5  € ØÒ!Ø�z‰z×ÑÒ+Ü—{’{ 4§:¡:×#4Ñ#4×#AÑ#AÀ4Ç:Á:×CSÑCS×C\ÑC\ÓC^Ó_Ð_Ø�z‰z× Ñ ×,Ñ,°Ô6Ü—{’{ 6¨4¯:©:×+<Ñ+<×+HÑ+HÓIÐIÜ—;’;˜v vÓ.Ð.Ü�n¤f§k¡k×2Ò2Ø!×&Ñ&Ó(Ð(ØˆØ�:‰:×ÑÒ'Ü—;’;˜v§z¡z×'7Ñ'7×'@Ñ'@Ó'BÓCÐCØ�:‰:×Ñ×(Ñ(¨FÔ2Ü—;’;˜v§z¡z×'8Ñ'8×'DÑ'DÓEÐEÜ�{Š{˜6 6Ó*Ð*r   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   re   rl   r�   r“   r6   r(   r   )r)   s   "r    r*   r+   Ó   s$   € ÷  ñ  Ø1ð Ø>Ið à	ñ r   c                	ó*  € VfC   V P                   P                  P                  e!   V P                   P                  P                  # V P                   P                  ^ 8w  d(   VP                  V P                   P                  ,           # VP
                  # r8   )r%   rª   Úaligned_anchor_bottomÚanchor_bottom_offsetrŒ   Úbottom)r1   re   r�   s   &&&r    rx   Ú OdometerWidget._resolve_bottom_yÓ   sl   € ð Ò! d§j¡j×&7Ñ&7×&MÑ&MÒ&YØ—:‘:×$Ñ$×:Ñ:Ð:Ø�:‰:×*Ñ*¨aÔ/Ø—;‘; §¡×!@Ñ!@Õ@Ð@Ø×ÑÐr   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   r   r   r€   zSequence[BlitOp]r6   rF   r   )r)   s   "r    r*   r+   Ý   s"   € ÷ 
,ñ 
,˜Nð 
,Ð1Að 
,Àdñ 
,r   c                	ó`  € V P                  4       p V Fo  pVP                  e   V P                  VP                  4       MV P                  V4       V P                  VP                  VP
                  VP                  4       Kq  	  V P                  V4       R #   T P                  T4       i ; ir8   )Úget_clipr   Úset_clipr¡   r   r   r   )r   r€   Úprevious_clipÚops   &&  r    r`   ÚOdometerWidget._apply_opsÜ   s„   € à×(Ñ(Ó*ˆð	,Û�Ø—7‘7Ò&Ø×$Ñ$ R§W¡WÕ-à×$Ñ$ ]Ô3Ø—‘˜RŸZ™Z¨¯©°"·'±'Ö:ñ ð ×Ñ˜]Ö+øˆG×Ñ˜]Õ+ús   ’A5B ÂB-)r0   r.   r/   r&   r-   r%   )Nr   r8   )r   r   r   r   r2   Úpropertyr9   r>   rI   rH   rS   rW   r[   rb   rh   ra   rq   r–   rp   rx   Ústaticmethodr`   r   r   r   r    r"   r"      s±   † ÷5ð  ô+ó ð+ð ô*ó ð*ð2ð  ð	2ð
 ',ð2ð ÷2õ$Hõ'õ)õ*õ6õDñ&ð  $÷	&ð &õP?õB$õL+õ  ð ô
,ó ô
,r   r"   c               ó$   € V ^8„  d   QhRRRRRR/# )r$   r„   z"List[Tuple[TokenKind, int | None]]r‰   r(   r6   r   )r)   s   "r    r*   r*   ê   s$   € ÷ ñ Ø.ðØ;>ðàñr   c                ól   € ^ p\        V4       F"  pW,          ^ ,          R8X  g   K  V^,          pK$  	  V# )r   ro   )Úrange)r„   r‰   r�   Úindexs   &&  r    r|   r|   ê   s7   € ð €EÜ�yÖ!ˆØ�=˜Õ˜wÖ&Ø�Q�JŠEñ "ð €Lr   c               ó8   € V ^8„  d   QhRRRRRRRRRRRRR	R
RR/# )r$   ru   r(   rŒ   rw   r{   r%   r   ro   r�   rQ   r6   rm   r   )r)   s   "r    r*   r*   ô   sX   € ÷ ñ Ø
ðà
ðð ðð ð	ð
 ðð ðð ðð ñr   c                óÒ  € VP                   P                  V,          P                  pVP                   P                  V^,           ^
,          ,          P                  p\        VP	                  4       VP	                  4       V4      p	\        \        Wi,          4      4      ) p
\        P                  ! WW#4      p\        WpW,           3VR7      \        W€W,           V	,           3VR7      .# )é   )r   )
rt   rƒ   r   rv   Ú
get_heightr(   Úroundrž   r·   r   )ru   rŒ   rw   r{   r%   ro   r�   ÚcurrentÚnxtÚstepÚoffset_yr   s   &&&&&&&     r    r   r   ô   s´   € ð �m‰m×"Ñ" 5Õ)×1Ñ1€GØ
�-‰-×
Ñ
 ¨¥	¨RÕ/Õ
0×
8Ñ
8€CÜˆw×!Ñ!Ó# S§^¡^Ó%5°qÓ9€DÜ”E˜&�-Ó(Ó)Ð)€HÜ�;Š;�q˜QÓ"€Däˆw˜A�LÐ)°Ô5Üˆs˜� tÕ+Ð,°4Ô8ðð r   )Ú
__future__r   Údataclassesr   Útypingr   r   r   r   r	   rž   Úcore.enginer
   r   Útheme.alignedr   r   r   r   r   r·   r(   rf   r"   r|   r   r   r   r    Ú<module>rÝ      so   ðÝ "å !ß 9Õ 9ã ç 8ß cÓ cñ �$Ô÷'ð 'ó ð'ð �&—+‘+˜u S¨# X�Ð.Õ/€	÷P,ñ P,õf÷r   