
    \
ji                         d Z ddlmZ ddlmZmZmZmZ ddlmZm	Z	m
Z
mZmZ  G d de          Z G d de          Z G d	 d
          Z G d d          ZdS )a  Draw a NinePatch image.

NinePatch is a format for storing how to cut up a 9-part resizable
rectangular image within the image pixel data directly.

For more information on the NinePatch format, see
http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch.

    )OrderedGroup)GL_BLENDGL_ENABLE_BITGL_ONE_MINUS_SRC_ALPHAGL_SRC_ALPHA)glBindTextureglBlendFuncglEnableglPopAttribglPushAttribc                       e Zd ZdS )NinePatchExceptionN)__name__
__module____qualname__     N/DATA/AppData/hermes/venv/lib/python3.11/site-packages/pyglet/gui/ninepatch.pyr   r   3   s        Dr   r   c                   ,     e Zd Zd fd	Zd Zd Z xZS )NinePatchGroupr   Nc                 Z    t                                          ||           || _        d S N)super__init__texture)selfr   orderparent	__class__s       r   r   zNinePatchGroup.__init__8   s(    '''r   c                    t          t                     t          t                     t	          t
          t                     t          | j        j                   t          | j        j        | j        j
                   d S r   )r   r   r
   r   r	   r   r   r   targetr   idr   s    r   	set_statezNinePatchGroup.set_state<   sa    ]###L"8999$%%%dl)4<?;;;;;r   c                 "    t                       d S r   )r   r#   s    r   unset_statezNinePatchGroup.unset_stateC   s    r   )r   N)r   r   r   r   r$   r&   __classcell__)r   s   @r   r   r   7   s[             < < <      r   r   c                       e Zd Zd Zd ZdS )
_PixelDatac                     |                                 }d|j        v | _        |                    d|j        dz            | _        |j        | _        |j        | _        d S )NARGBA   )get_image_dataformat	has_alphaget_datawidthdataheight)r   image
image_datas      r   r   z_PixelData.__init__H   sU    ))++

 11''a@@	[
lr   c                     || j         z  |z   dz  }| j        r| j        |dz            dk    rdS | j        ||dz            dk    S )Nr-      r   Fs      )r2   r0   r3   )r   xyps       r   is_blackz_PixelData.is_blackO   sV    ^a1$> 	yQ1$$uy1q5!_44r   N)r   r   r   r   r<   r   r   r   r)   r)   G   s2        # # #5 5 5 5 5r   r)   c                   >    e Zd ZdZdZdZdZdZdZdZ	dZ
dZd Zd ZdS )	NinePatchzA scalable 9-patch image.
    r   c                 Z   t          |          }|j        |j        dz
  | _        dz
  | _        t          ddz
            D ]$}|                    |dz
            r	|| _         n%d| _        t          dz
  dd          D ]'}|                    |dz
            r|z
  | _         n(d| _        t          ddz
            D ]!}|                    d|          r	|| _         n"d| _        t          dz
  dd          D ]$}|                    d|          r|z
  | _         n%d| _        t          ddz
            D ]$}|                    |d          r|dz
  | _	         n%t          dz
  dd          D ])}|                    |d          r| j        |z
  | _
         n*t          ddz
            D ]'}|                    dz
  |          r|dz
  | _         n(t          dz
  dd          D ],}|                    dz
  |          r| j        |z
  | _         n-d}d}| j        dz   }| j        dz   }| j        z
  dz
  }	| j        z
  dz
  }
dz
  }dz
  }fd|||	|fD             \  }}}	}fd|||
|fD             \  }}}
}|                                j        \  }}}}}}}}}}}}||z
  |||z
  |fd|||	|fD             \  }}}	}fd|||
|fD             \  }}}
}g |||||	||||||||	|||||
||
|	|
||
|||||	|||R | _        g | _        t          d	          D ]V}t          d	          D ]D}| j                            ||d
z  z   |dz   |d
z  z   |dz   |dz   d
z  z   ||dz   d
z  z   g           EWdS )zCreate NinePatch cuts of an image

        Arguments:
            image - an ImageData (Texture, TextureRegion, etc)
            texture - force cut ImageDatas to be Textures (or Regions)
              r   c                     g | ]}|z  S r   r   ).0sr2   s     r   
<listcomp>z&NinePatch.__init__.<locals>.<listcomp>   s    >>>!e)>>>r   c                     g | ]}|z  S r   r   )rD   rE   r4   s     r   rF   z&NinePatch.__init__.<locals>.<listcomp>   s    ???!f*???r   c                      g | ]
}|z  z   S r   r   )rD   rE   u_biasu_scales     r   rF   z&NinePatch.__init__.<locals>.<listcomp>   "    III1&7Q;.IIIr   c                      g | ]
}|z  z   S r   r   )rD   rE   v_biasv_scales     r   rF   z&NinePatch.__init__.<locals>.<listcomp>   rK   r   r8   r-   N)r)   r2   r4   ranger<   _stretch_left_stretch_right_stretch_bottom_stretch_top_padding_left_padding_right_padding_bottom_padding_topget_texture
tex_coordsindicesextend)r   r5   
pixel_datar9   r:   u1v1u2v2u3v3u4v4tu1tv1___tu2tv2r4   rI   rJ   rM   rN   r2   s                     @@@@@@r   r   zNinePatch.__init__h   s     &&
" QY
qj q%!)$$ 	# 	#A""1fqj11 %&" "#Duqy!R(( 	$ 	$A""1fqj11 &+ai# #$Dq&1*%% 	% 	%A""1a(( '($ $%D vz1b)) 	" 	"A""1a(( $*QJ! !"D q%!)$$ 	 	A""1a(( %&U" uqy!R(( 	 	A""1a(( &*j1n# q&1*%% 	 	A""519a00 '(1u$ vz1b)) 	 	A""519a00 $(K!O!
 !#!A%T((1,d''!+QYaZ ?>>>b"b"-=>>>BB????r2r2.>???BB  ++--8	c3	c3	c3	c3))IIIIIRR8HIIIBBIIIIIRR8HIIIBB>2 >r >B > >R > >b >" >>!>$&>(*>-/>13>68>:<>>!>$&>(*>-/>13>68>:<> >  "> %'> )+> .0> 24> 79> ;=> > q 	m 	mA1XX m m##QQY!a%1q5AEaRSeWX[CX[\`ade`eij_j[j$kllllm	m 	mr   c                    t          |          }t          |          }|| j        dz   k     s|| j        dz   k     rt          d          t          |          }t          |          }|}|}|| j        z   }|| j        z   }||z   | j        z
  }	||z   | j        z
  }
||z   }||z   }g |||||	||||||||	|||||
||
|	|
||
|||||	|||R S )z-Get 16 2D vertices for the given image regionr@   z)Requested size is smaller than the image.)intr2   r4   r   rP   rR   rQ   rS   )r   r9   r:   r2   r4   x1y1x2y2x3y3x4y4s                r   get_verticeszNinePatch.get_vertices   s   FFFF4:>!!VdkAo%=%=$%PQQQE

V##%%Y,,Z$++YZ3 3B 3 3R 3" 3b 32 3r 33333"$3&(3+-3/133333"$3&(3+-3/13 3 3 3  3 #%3 ')3 ,.3 023 3 	3r   N)r   r   r   __doc__rW   rV   rU   rT   rS   rP   rQ   rR   r   rt   r   r   r   r>   r>   X   so          LONM LMNOgm gm gmR3 3 3 3 3r   r>   N)ru   pyglet.graphicsr   	pyglet.glr   r   r   r   r   r	   r
   r   r   	Exceptionr   r   r)   r>   r   r   r   <module>ry      s*  H  ) ( ( ( ( ( S S S S S S S S S S S S U U U U U U U U U U U U U U	 	 	 	 	 	 	 	    \    5 5 5 5 5 5 5 5"Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3 Q3r   