
    AHj                       d dl mZ d dlmZmZmZ d dlmZ d dlm	Z	m
Z
mZ d dlmZ d dlmZ d dlmZmZ  G d d	      Z G d
 d      Zedk(  rd dlmZ g dZ ee      D  cg c]%  \  } }|  ee      dz
  z   ej6                  |      f' c}} Z e ede             d dlmZ d dlmZm Z  d dl!m"Z"  G d de      Z# e#       Z$e$jK                          yyc c}} w )    )annotations)cospisin)Sequence)ConsoleConsoleOptionsRenderResult)Segment)Style)ColorGradientc                  ,    e Zd ZdZddZ	 	 	 	 	 	 ddZy)VerticalGradientzDraw a vertical gradient.c                l    t        j                  |      | _        t        j                  |      | _        y N)r   parse_color1_color2)selfcolor1color2s      T/root/tools/cai/cai_env/lib/python3.12/site-packages/textual/renderables/gradient.py__init__zVerticalGradient.__init__   s"    {{6*{{6*    c           
   #    K   |j                   }|j                  xs |j                  }| j                  }| j                  }t        ddd      j                  }t        j                  }|j                  }	|j                  }
t        |      D ]=  } |||dkD  r |	|||dz
  z        j                  n|
      }t        |dz   d|       ? y w)Nr       
)	max_widthheight
max_heightr   r   r   
rich_colorr   
from_colorblendranger   )r   consoleoptionswidthr!   r   r   default_colorr$   r%   rich_color1y
line_colors                r   __rich_console__z!VerticalGradient.__rich_console__   s      !!57#5#5aA11%%
''v 		:A# z &!vz"23>>$J US[M,j99		:s   C
CN)r   strr   r/   returnNoner'   r   r(   r	   r0   r
   __name__
__module____qualname____doc__r   r.    r   r   r   r      s'    #+::)7:	:r   r   c                  8    e Zd ZdZ	 	 	 	 	 	 ddZ	 	 	 	 	 	 ddZy)LinearGradientzRender a linear gradient with a rotation.

    Args:
        angle: Angle of rotation in degrees.
        stops: List of stop consisting of pairs of offset (between 0 and 1) and color.

    c           	         || _         |D cg c].  \  }}|t        |t              rt        j                  |      n|f0 c}}| _        t        | j
                   | _        y c c}}w r   )angle
isinstancer/   r   r   _stopsr   _color_gradient)r   r<   stopsstopcolors        r   r   zLinearGradient.__init__4   s\     
  %
e E3)?5;;u%UK
  (5	
s   3A!c              #    K   |j                   }|j                  xs |j                  }| j                   t        z  dz  }t        |      }t        |      }|dz  }|}	t        j                         }
t        }| j                  j                  }t        j                  }t        |      D ]  }t        |      dz  |	z
  }d|z
  }|||z  ||z  z
  z   |z  }|||z  |dz   |z  z
  z   |z  }||z
  }|||z  ||z  z
  z   |z  }||z
  |z  }t        |      dk  r" |d|z   | ||       ||                   nGt        |      D cg c]*  } |d | ||||z  z          ||||z  z                     , c}E d {    |
  y c c}w 7 w)Ng     f@   r   g      ?g-C6?u   ▀)r    r!   r"   r<   r   r   r   r   liner?   get_rich_colorr   r$   r&   floatabs)r   r'   r(   r)   r!   angle_radians	sin_angle	cos_anglecenter_xcenter_ynew_line_Segment	get_colorr$   line_ypoint_ypoint_xx1x2end_x1delta_xxs                         r   r.   zLinearGradient.__rich_console__>   s     !!57#5#5b(50&	&	19<<>((77	%%
Fm "	FFma'(2G(lGg	1Gi4GGHEQBGi/7S=I2MMNB h&G'I"5)8K"KLPUUF{e+G7|f$EM!"!" " #5\	  "%b1w;&67%b1w;&67	 	 	 NE"	.	 	s   D?F	/F0F	6F7F	N)r<   rG   r@   z#Sequence[tuple[float, Color | str]]r0   r1   r2   r3   r8   r   r   r:   r:   +   sA    66#F6	655)75	5r   r:   __main__)print)z#881177z#aa3355z#cc6666z#ee9944z#eedd00z#99dd55z#44dd88z#22ccbbz#00bbccz#0099ccz#3366bbz#663399r      )time)AppComposeResultStaticc                  &    e Zd ZdZddZd ZddZy)GradientAppz
        Screen {
            background: transparent;
            align: center middle;
        }

        Static {
            padding: 2 4;
            background: $panel;
            width: 50;
        }

        c              #  &   K   t        d       y w)NzGradients are fast now :-) r_   r   s    r   composezGradientApp.compose   s     677s   c                8    t        t               dz  t              S )NZ   )r:   r\   r@   rd   s    r   renderzGradientApp.render   s    !$&2+u55r   c                <    | j                  d| j                         y )Ng?)set_intervalrefreshrd   s    r   on_mountzGradientApp.on_mount   s    fdll3r   N)r0   r^   )r0   r1   )r4   r5   r6   CSSre   rh   rl   r8   r   r   rb   rb      s    	8	6	4r   rb   N)&
__future__r   mathr   r   r   typingr   rich.consoler   r	   r
   rich.segmentr   
rich.styler   textual.colorr   r   r   r:   r4   richrZ   COLORS	enumeratelenr   r@   r\   textual.appr]   r^   textual.widgetsr`   rb   apprun)ics   00r   <module>r      s    "    > >    ): :<H HV zF BK6ARSAa3v;?#[U[[^4SE	.U
#$.&4c 40 -CGGIi $ Ts   #*C