
    ^j                       d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dlmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZ d dlmZmZmZmZm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&m'Z'm(Z(m)Z)m*Z* 	 d	Z+ ej,                    d          d
k    rI ej-                    .                    d          r'ej/        0                    ej1        d         dd          Z+ ej2        e+          Z3n# e4$ r dZ5 e6e5          w xY wdLdZ7dZ8eZ9d Z:dZ;eZ<dZ=dZ>dZ?dZ@dZAdZBdZCdZDd ZEd ZFd!ZGd"ZHd"ZId#ZJd#ZKd$ZLeZMd ZNdZOd%ZPd&ZQd'ZRd(ZSd(ZTd)ZUd*ZVd+ZWeZXd ZYdZZd%Z[d'Z\d+Z]d,Z^d-Z_d.Z`d/Zad0Zbe^e_z  e`z  eaz  ZceZdd ZedZfd%ZgeZe[z  e\z  e]z  e^z  e_z  e`z  eaz  ZheZid ZjdZkd%Zle'Zmd ZndZod%Zpd&Zqd'Zrd(Zsd)Ztd*Zud+Zvd1Zwd2Zxd3Zyd4Zzd5Z{d6Z|d7Z}d,Z~d8Zd9Zd:Zd;Zd<Zd=Zd>Zd?ZeZdZd%Zd&Zd'ZeZd ZdZd%Zd&Zd'Zd(Zd)Zd*Zd+Zd@ ZeZ G dA dBe
          Z G dC dDe
          Z G dE dFe
          Z G dG dHe
          Z G dI dJe
          Z G dK dLe
          Z G dM dNe
          Zee_         G dO dPe*j                  Z G dQ dRe*j                  Z G dS dTe*j                  Z G dU dVee*j                  Z e*j        dWdXdYdZd[d\d]d+d^d_dZ          Z G d` dae*j                  Z G db dce*j                  Z G dd dee*j                  Z e*j        dfdgdhdidjdkdldmdndodp          Z G dq dre          Z e*j        dsdtdudvdwd[dxdydzd{d^          Z G d| d}e          Z e*j        d~dddZdd-ddddd          Z G d de          Z G d de
          Z e*j        dddddd(ddddd          Z G d de          Z G d de
          ZeZd Z G d de
          ZeZ G d de
          Z G d de
          Z G d de
          Z G d de
          Zee_        eZd Z G d de*j                  Z G d de*j                  Z G d de*j                  Z G d de*j                  Z G d dee*j                  Z G d deee*j                  Z G d de*j                  Z G d dee*j                  Z G d de*j                  Z G d dee*j                  Z G d de*j                  Z G d de*j                  Z G d de*j                  Z G d de
          Z G d de
          Z G d de
          Z G d de
          Zdefd e	eΦ          fdefdefdefde&fde'fdeXfdedfg	Z ej,                    d          d
k    reР                    de'f            G d̈́ de
          Z G dτ de
          Z G dф de*j                  Z G dӄ deԦ          Z G dՄ deʦ          Z G dׄ deee*j                  Z G dل de*j                  Z G dۄ de*j                  Z e*j        ddddZddddd{dd          Z G d de*j                  Z G d de*j                  Z e*j        dddddd'ddddd          Z G d dee*j                  Z G d de
          Z G d de*j                  Z G d de*j                  Z G d de*j                  Z G d deee*j                  Z e*j        d ddddddd^ddd[          Z G d	 d
e*j                  Z G d de*j                  Z G d dee*j                  Z G d dee*j                  Z G d de          Z e*j        ddddddddddd          Z G d dee*j                  Z G d d e*j                  Z e*j        d!d"d#dpdd$d?dvd&d%d&          Z G d' d(eeeeee*j                  Z e*j        d)d*d+d,d-d.d/d0dd1d2          Z G d3 d4eeeeeee*j        	  	        Z G d5 d6eeeeeeee*j        
  
        Z e*j        d7d8d9d:d=d;d<d=d>d)d?          Ze3j        Zee_        e9e*j         e	e*j                  ge_         G d@ dA          Z G dB dCe*j                  Z G dD dEe*j                  Z G dF dGe*j                  Z G dH dIe*j                  Z G dJ dKe*j                  ZdS (M      )annotationsN)_Pointer)HRESULTPOINTER	Structurebyrefc_uint32c_void_p	c_wchar_pcastcreate_unicode_bufferpointersizeofwindll)BOOLFLOATHDCUINTWCHAR)NoReturn)D2D1_COLOR_FD2D1_POINT_2LD2D1_SIZE_UD2D_POINT_2F)	INT16INT32LOGFONTWUINT8UINT16UINT32UINT64c_voidcomdwrite32bit64WINDIRSysWOW64z
dwrite.dllzDirectWrite Not Foundastrbcdreturnintc                    t          |          dz  t          |          dz  z  t          |          dz  z  t          |           z  S )N         )ord)r)   r+   r,   r-   s       X/home/agentuser/manim-venv/lib/python3.11/site-packages/pyglet/font/dwrite/dwrite_lib.pyDWRITE_MAKE_OPENTYPE_TAGr6   1   s;    q66R<#a&&B,&Q14s1vv==    i     d      i,  i^  i  i  iX  i  i   i  i                    r3   r2       @         	   
                                       r1   c                L   g }| j         D ]v}	 |\  }}}n# t          $ r |\  }}Y nw xY wt          | |          }t          |t                    r|rt          |j                  nd}|                    | d|            w| j        j	         dd
                    |           dS )NNULL=(, ))_fields_
ValueErrorgetattr
isinstancer   reprcontentsappend	__class____name__join)selffield_valuesfield_valuenametyp_values          r5   	repr_funcrj      s    L} / /	$&LD#qq 	$ 	$ 	$#ID###	$ d## eX&& 	>,1=D(((vEt--e--....n%BB		,(?(?BBBBs   &&c            
      H    e Zd Zdefdefdefdefdefdefdefdefd	eff	Zd
S )DWRITE_TEXT_METRICSlefttopwidth widthIncludingTrailingWhitespaceheightlayoutWidthlayoutHeightmaxBidiReorderingDepth	lineCountN)ra   
__module____qualname__r   r    rY    r7   r5   rl   rl      s[        			%	+U3	5			!6*	f
HHHr7   rl   c                  N    e Zd Zdefdefdefdefdefdefdefdefd	efd
eff
ZdS )DWRITE_FONT_METRICSdesignUnitsPerEmascentdescentlineGap	capHeightxHeightunderlinePositionunderlineThicknessstrikethroughPositionstrikethroughThicknessN)ra   rv   rw   r   r   rY   rx   r7   r5   rz   rz      se        	V$	6	F	E	f	F	e$	v&	 %(	!6*HHHr7   rz   c                      e Zd Zdefdefdefdefdefdefdefdefd	efd
efdefdefdefdefdefdefdefdefdefdefdefdefdeffZdS )DWRITE_FONT_METRICS1r{   r|   r}   r~   r   r   r   r   r   r   glyphBoxLeftglyphBoxTopglyphBoxRightglyphBoxBottomsubscriptPositionXsubscriptPositionYsubscriptSizeXsubscriptSizeYsuperscriptPositionXsuperscriptPositionYsuperscriptSizeXsuperscriptSizeYhasTypographicMetricsN)ra   rv   rw   r   r   r   rY   rx   r7   r5   r   r      s        	V$	6	F	E	f	F	e$	v&	 %(	!6*			% 	5!	u%	u%	5!	5!	'	'	U#	U#	 $'/HHHr7   r   c                  $    e Zd ZdefdefdeffZdS )DWRITE_CARET_METRICS	slopeRiseslopeRunoffsetN)ra   rv   rw   r   rY   rx   r7   r5   r   r      s-        	e	U	5HHHr7   r   c                  B    e Zd ZdefdefdefdefdefdefdeffZd Zd	S )
DWRITE_GLYPH_METRICSleftSideBearingadvanceWidthrightSideBearingtopSideBearingadvanceHeightbottomSideBearingverticalOriginYc                x    d| j          d| j         d| j         d| j         d| j         d| j         d| j         dS )	Nz%DWRITE_GLYPH_METRICS(leftSideBearing=z, advanceWidth=z, rightSideBearing=z, topSideBearing=z, advanceHeight=z, bottomSideBearing=z, verticalOriginY=rX   )r   r   r   r   r   r   r   rc   s    r5   __repr__zDWRITE_GLYPH_METRICS.__repr__  s    g8L g g]a]n g g$($9g gLPL_g gqu  rDg g%)%;g gOSOcg g g 	hr7   N)ra   rv   rw   r   r    rY   r   rx   r7   r5   r   r      sg        	E"	 	U#	5!	&!	e$	E"Hh h h h hr7   r   c                  &    e Zd ZdefdeffZddZdS )DWRITE_GLYPH_OFFSETadvanceOffsetascenderOffsetr.   r*   c                (    d| j          d| j         dS )NzDWRITE_GLYPH_OFFSET(rW   rX   )r   r   r   s    r5   r   zDWRITE_GLYPH_OFFSET.__repr__  s!    Rd&8RRD<ORRRRr7   Nr.   r*   )ra   rv   rw   r   rY   r   rx   r7   r5   r   r     sE        	% 	5!H
S S S S S Sr7   r   c            
      N    e Zd Zdefdefdedfdedfdedfdedfdedfd	ed
ffZdS )DWRITE_CLUSTER_METRICSro   lengthcanWrapLineAfterr8   isWhitespace	isNewlineisSoftHyphenisRightToLeftpaddingrG   N)ra   rv   rw   r   r   rY   rx   r7   r5   r   r     sa        	%	6	VQ'	#	fa 	#	&!$	FB	HHHr7   r   c            	          e Zd Zd ej         ee          ee ee                    fd ej        e          fd ej         ee                    fd ej         ee                    fgZdS )IDWriteFontFileStreamReadFileFragmentReleaseFileFragmentGetFileSizeGetLastWriteTimeN)	ra   rv   rw   r#   	STDMETHODr   r
   r!   	_methods_rx   r7   r5   r   r   &  s        		wwx((&&''(:K:K	L	L	N		x	 	 	"		wwv	'	'	)		wwv	'	'	)	IIIr7   r   c            
      \    e Zd Zd ej        ee e ee                              fgZ	dS )IDWriteFontFileLoader_LICreateStreamFromKeyN
ra   rv   rw   r#   r   r
   r    r   r   r   rx   r7   r5   r   r   3  F        		x9N1O1O)P)P	Q	Q	SIIIr7   r   c            
      \    e Zd Zd ej        ee e ee                              fgZ	dS )IDWriteFontFileLoaderr   Nr   rx   r7   r5   r   r   :  r   r7   r   c                      e Zd Zd ej        ee ee                    fd ej        eeee          fd ej                    fgZ	dS )IDWriteLocalFontFileLoaderGetFilePathLengthFromKeyGetFilePathFromKeyGetLastWriteTimeFromKeyN)
ra   rv   rw   r#   r   r
   r    r   r   r   rx   r7   r5   r   r   A  sh        	#	x	9	9	;		xF	;	;	=	"		IIIr7   r   l   se i  iJ           b         c                  6   e Zd Zd ej        e          fd ej        e ee           ee	                    fd ej        e ee                    fd ej        eee          fd ej        e ee                    fd ej        eee          fgZ
dS )IDWriteLocalizedStringsGetCountFindLocaleNameGetLocaleNameLengthGetLocaleNameGetStringLength	GetStringN)ra   rv   rw   r#   METHODr    r   r   r   r   r   rx   r7   r5   r   r   O  s        		F					y''&//774==	A	A	C		vwwv	/	/	1		vy&	1	1	3		vwwv	/	/	1		vy&	1	1	3IIIr7   r   c                      e Zd Zd ej         ee           ee                    fd ej         ee                    fd ej                    fgZ	dS )IDWriteFontFileGetReferenceKey	GetLoaderAnalyzeN)
ra   rv   rw   r#   r   r   r
   r    r   r   rx   r7   r5   r   r   _  su        		wwx((''&//	:	:	<		ww455	6	6	8			IIIr7   r   c                     e Zd Zd ej        e          fd ej         ee           ee	                    fd ej        e          fd ej                    fd ej        e
          fd ej        e ee                    fd ej        e          fd ej         ee          e ee          e
          fd	 ej         ee          e ee                    fd
 ej        ee ee          e ee
                    fd ej        e          fd ej                    fd ej                    fd ej                    fd ej                    fgZdS )IDWriteFontFaceGetTypeGetFilesGetIndexGetSimulationsIsSymbolFont
GetMetricsGetGlyphCountGetDesignGlyphMetricsGetGlyphIndicesTryGetFontTableReleaseFontTableGetGlyphRunOutlineGetRecommendedRenderingModeGetGdiCompatibleMetricsGetGdiCompatibleGlyphMetricsN)ra   rv   rw   r#   r   DWRITE_FONT_FACE_TYPEr   r   r    r   r   r"   rz   r   r   r
   r   rx   r7   r5   r   r   j  s       		)	*	*	,		wwv(@(@	A	A	C		F								D					FGG$788	9	9	;		F				 	wwv8L0M0Mt	T	T	V		wwv	@	@	B		vx(GGDMM	R	R	T		F							&			"			'		;IIIr7   r   l   }=N i۟  i8H                    =      c                      e Zd Zd ej         ee                    fd ej                    fd ej         ee                    fd ej                    fd ej        e	          fd ej        e
 ee                    fd ej                    fd ej        e ee           ee                    fd	 ej        e	          fd
 ej                    fd ej                    fd ej        e	          fgZdS )IDWriteFontFace1GetMetrics1GetGdiCompatibleMetrics1GetCaretMetricsGetUnicodeRangesIsMonospacedFontGetDesignGlyphAdvancesGetGdiCompatibleGlyphAdvancesGetKerningPairAdjustmentsHasKerningPairsGetRecommendedRenderingMode1GetVerticalGlyphVariantsHasVerticalGlyphVariantsN)ra   rv   rw   r#   r   r   r   r   r   r   r"   rz   r    r   r   r   rx   r7   r5   r   r     sM       		ww344	5	5	7	#				ww344	5	5	7					D				!	FGG$788	9	9	;	(			$	vwwv	?	?	A		D				'			#			#	D			/IIIr7   r   l   hn1 id  ifN     +               c                      e Zd Zd ej        e          fd ej        e          fd ej        e          fd ej                    fd ej                    fgZdS )IDWriteFontFace2IsColorFontGetColorPaletteCountGetPaletteEntryCountGetPaletteEntriesGetRecommendedRenderingMode2N)	ra   rv   rw   r#   r   r   r    r   r   rx   r7   r5   r  r    s        		D					F					F							'		IIIr7   r  l   u& i	  i"B  6      4            c                     e Zd Zd ej                    fd ej                    fd ej        e          fd ej        e          fd ej        e          fd ej         e	e
                    fd ej         e	e
                    fd ej                    fd	 ej        ee          fd
 ej                    fd ej                    fd ej                    fd ej                    fd ej                    fgZdS )IDWriteFontFace3GetFontFaceReference	GetPanose	GetWeight
GetStretchGetStyleGetFamilyNamesGetFaceNamesGetInformationalStringsHasCharacterGetRecommendedRenderingMode3IsCharacterLocalIsGlyphLocalAreCharactersLocalAreGlyphsLocalN)ra   rv   rw   r#   r   r   DWRITE_FONT_WEIGHTDWRITE_FONT_STRETCHDWRITE_FONT_STYLEr   r   r   r    r   rx   r7   r5   r  r    sR       								&	'	'	)		'	(	(	*		%	&	&	(		ww677	8	8	:		ww677	8	8	:	"				D&	!	!	#	'														7IIIr7   r  c            
      H    e Zd Zdefdefdefdefdefdefdefdefd	efg	Zd
S )DWRITE_GLYPH_IMAGE_DATA	imageDataimageDataSizeuniqueDataIdpixelsPerEm	pixelSizehorizontalLeftOriginhorizontalRightOriginverticalTopOriginverticalBottomOriginN)ra   rv   rw   r
   r    r   r   rY   rx   r7   r5   r+  r+    s]        	h	&!	 		k"	/	 -0	m,	/
HHHr7   r+  i'iN  iD     x   c      >   /   c                      e Zd Zd ej        eee ee                    fd ej	        e          fd ej        eee ee
           ee                    fd ej	        de          fgZdS )IDWriteFontFace4GetGlyphImageFormats_GetGlyphImageFormatsGetGlyphImageDataReleaseGlyphImageDataN)ra   rv   rw   r#   r   r   r    r   DWRITE_GLYPH_IMAGE_FORMATSr   r+  r
   r   rx   r7   r5   r<  r<    s        	 	vvvww7Q/R/R	S	S	U		.	/	/	1		vv'A77KbCcCcwx((
* 
*	+ 
!	D(	#	#	%
IIIr7   r<  c            	      ~    e Zd Zdefdefdefd ee          fd ee          fd ee          fde	fdeffZ
d	 Zd
S )DWRITE_GLYPH_RUNfontFace
fontEmSize
glyphCountglyphIndicesglyphAdvancesglyphOffsets
isSideways	bidiLevelc                    t          d| j         d| j         d| j                    t	          | j                  D ]>}t          d| d| j        |          d| j        |          d| j        |                     ?d S )NzDWRITE_GLYPH_RUN(face: z, fontEmSize: z	, count: zglyph: z
, indice: z, advance: z
, offset: )printrD  rE  rF  rangerG  rH  rI  )rc   is     r5   get_infozDWRITE_GLYPH_RUN.get_info  s    pppT_pp_c_nppqqqt'' 	C 	CA  BA  B  B):1)=  B  B$J\]^J_  B  Bkok|}~k  B  B  C  C  C  C	C 	Cr7   N)ra   rv   rw   r   r   r    r   r   r   r   rY   rP  rx   r7   r5   rC  rC    s        	_%	u	v	)	''%..)	!4556	t	f	HC C C C Cr7   rC  c                      e Zd ZdefdeffZdS )DWRITE_SCRIPT_ANALYSISscriptshapesN)ra   rv   rw   r   DWRITE_SCRIPT_SHAPESrY   rx   r7   r5   rR  rR    s&        	6	'(HHHr7   rR  c                      e Zd ZdefdeffZdS )DWRITE_FONT_FEATUREnameTag	parameterN)ra   rv   rw   DWRITE_FONT_FEATURE_TAGr    rY   rx   r7   r5   rW  rW    s&        	+,	fHHHr7   rW  c                  0    e Zd Zd ee          fdeffZdS )DWRITE_TYPOGRAPHIC_FEATURESfeaturesfeatureCountN)ra   rv   rw   r   rW  r    rY   rx   r7   r5   r\  r\  #  s0        	WW0112	 HHHr7   r\  c                  :    e Zd ZdedfdedfdedfdedffZdd	Zd
S )DWRITE_SHAPING_TEXT_PROPERTIESisShapedAloner8   	reserved1canBreakShapingAfterreservedrI   r.   r*   c                8    d| j          d| j         d| j         dS )NzDWRITE_SHAPING_TEXT_PROPERTIES(rW   rX   )ra  rb  rc  r   s    r5   r   z'DWRITE_SHAPING_TEXT_PROPERTIES.__repr__2  s,    u1Cuut~uuY]Yruuuur7   Nr   )ra   rv   rw   r   rY   r   rx   r7   r5   r`  r`  *  s]        	&!$	fa 	+	VR 	Hv v v v v vr7   r`  c                  :    e Zd ZdedfdedfdedfdedfdedffZd	S )
DWRITE_SHAPING_GLYPH_PROPERTIESjustificationr=   isClusterStartr8   isDiacriticisZeroWidthSpacerd  rE   N)ra   rv   rw   r   rY   rx   r7   r5   rg  rg  6  sG        	&!$	61%	"	VQ'	VQHHHr7   rg  c                  J   e Zd Zd ej        e ee           ee                    fd ej        e ee           ee                    fd ej        e	          fd ej        e ee           ee                    fd ej        e ee          e
          fgZdS )IDWriteTextAnalysisSourceGetTextAtPositionGetTextBeforePositionGetParagraphReadingDirectionr   GetNumberSubstitutionN)ra   rv   rw   r#   r   r    r   r   r   DWRITE_READING_DIRECTIONr
   r   rx   r7   r5   rm  rm  D  s        		vwwy11776??	C	C	E	 	vwwy11776??	C	C	E	'	,	-	-	/		vwwv	0B0B	C	C	E	 	vwwv	9	9	;IIIr7   rm  c            	          e Zd Zd ej        ee ee                    fd ej        eee          fd ej        eee	e	          fd ej        eee          fgZ
dS )IDWriteTextAnalysisSinkSetScriptAnalysisSetLineBreakpointsSetBidiLevelSetNumberSubstitutionN)ra   rv   rw   r#   r   r    r   rR  r
   r   r   rx   r7   r5   rt  rt  S  s        		vvww/E'F'F	G	G	I		vvx	0	0	2		vvue	4	4	6	 	vvx	0	0	2	IIIr7   rt  c                     e Zd Zd ej         ee          ee ee                    fd ej                    fd ej                    fd ej                    fd ej        e	ee
ee ee          e	e e ee                     ee          ee ee           ee           ee           ee           ee                    fd ej        e	 ee           ee          e ee           ee          ee
eee ee          e	 ee           ee          e ee           ee                    fd ej                    fgZdS )	IDWriteTextAnalyzerAnalyzeScriptAnalyzeBidiAnalyzeNumberSubstitutionAnalyzeLineBreakpoints	GetGlyphsGetGlyphPlacementsGetGdiCompatibleGlyphPlacementsN)ra   rv   rw   r#   r   r   rm  r    rt  r   r   r   rR  r
   r\  r   r`  rg  r   r   r   rx   r7   r5   rz  rz  `  s       		ww8996677SjKkKk	l	l	n				$			!				y&/4wwOeGfGf (GGGG<W4X4X,Y,Y[b[bci[j[jvwwv@^8_8_wv0O(P(PRYRYZ`RaRa
c 
c	d
 
	y''&//77;Y3Z3Z\bdkdklrdsdsw>??Z_aegkw566	77KfCgCgwvH[@\@\
^ 
^	_
 
+		'IIIr7   rz  c                  x    e Zd Zd ej                    fd ej        e          fd ej        ee          fgZdS )IDWriteFontListGetFontCollectionGetFontCountGetFontN)	ra   rv   rw   r#   r   r   r    r
   r   rx   r7   r5   r  r  {  sX        					F					vx	(	(	*IIIr7   r  c                      e Zd Zd ej         ee                    fd ej        eee	e
          fd ej                    fgZdS )IDWriteFontFamilyr  GetFirstMatchingFontGetMatchingFontsN)ra   rv   rw   r#   r   r   r   r'  r(  r)  r
   r   rx   r7   r5   r  r    sl        		ww677	8	8	:		)+>@QS[	\	\	^			IIIr7   r  c                  r    e Zd Zd ej                    fd ej                    fd ej                    fgZdS )IDWriteFontFamily1GetFontLocalityGetFont1r  Nra   rv   rw   r#   r   r   rx   r7   r5   r  r    sN        									IIIr7   r  c                     e Zd Zd ej         ee                    fd ej        e          fd ej        e	          fd ej        e
          fd ej        e          fd ej         ee                    fd ej        e ee           ee                    fd ej                    fd	 ej                    fd
 ej        e ee                    fd ej         ee                    fgZdS )IDWriteFontGetFontFamilyr  r  r  r   r  r   r   r   r!  CreateFontFaceN)ra   rv   rw   r#   r   r   r  r   r'  r(  r)  r   r   DWRITE_INFORMATIONAL_STRING_IDr    r   r   rx   r7   r5   r  r    sU       		ww011	2	2	4		&	'	'	)		'	(	(	*		%	&	&	(		D					ww677	8	8	:	"	5ww?V7W7WY`Y`aeYfYf	g	g	i								vwwt}}	-	-	/		ww//	0	0	2+IIIr7   r  c                      e Zd Zd ej                    fd ej                    fd ej                    fd ej                    fgZdS )IDWriteFont1r   r  r   r   Nr  rx   r7   r5   r  r    sa        													IIIr7   r  c            
          e Zd Zd ej        e          fd ej        e ee                    fd ej        e	 ee
           ee                    fd ej                    fgZdS )IDWriteFontCollectionGetFontFamilyCountr  FindFamilyNameGetFontFromFontFaceN)ra   rv   rw   r#   r   r    r   r   r  r   r   r   r   rx   r7   r5   r  r    s        		F					vww'899	:	:	<		y''$--	?	?	A				IIIr7   r  c                  f    e Zd Zd ej                    fd ej         ee                    fgZdS )IDWriteFontCollection1
GetFontSetGetFontFamily1N)ra   rv   rw   r#   r   r   r  r   rx   r7   r5   r  r    sJ        					ww122	3	3	5IIIr7   r  c            
          e Zd Zd ej         ee           ee                    fd ej                    fd ej                    fd ej        e ee	                    fd ej                    fgZ
dS )IDWriteGdiInteropCreateFontFromLOGFONTConvertFontToLOGFONTConvertFontFaceToLOGFONTCreateFontFaceFromHdcCreateBitmapRenderTargetN)ra   rv   rw   r#   r   r   r   r  r   r   r   rx   r7   r5   r  r    s        	 	wwx((''+*>*>	?	?	A				#			 	sGGO44	5	5	7	#		IIIr7   r  c                  P   e Zd Zd ej        e          fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd	 ej                    fd
 ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej        e ee                    fd ej        eee          fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fgZ	dS )IDWriteTextFormatSetTextAlignmentSetParagraphAlignmentSetWordWrappingSetReadingDirectionSetFlowDirectionSetIncrementalTabStopSetTrimmingSetLineSpacingGetTextAlignmentGetParagraphAlignmentGetWordWrappingGetReadingDirectionGetFlowDirectionGetIncrementalTabStopGetTrimmingGetLineSpacingr  GetFontFamilyNameLengthGetFontFamilyNameGetFontWeightGetFontStyleGetFontStretchGetFontSizer   r   N)
ra   rv   rw   r#   r   DWRITE_TEXT_ALIGNMENTr    r   r   r   rx   r7   r5   r  r    s       		,	-	-	/	 												 												 												 												"	vwwv	/	/	1		vy&	1	1	3																		c3IIIr7   r  c                  v    e Zd Zd ej        e          fd ej        e          fd ej                    fgZdS )IDWriteTypographyAddFontFeatureGetFontFeatureCountGetFontFeatureN)	ra   rv   rw   r#   r   rW  r   r    r   rx   r7   r5   r  r     sW        		*	+	+	-		F						IIIr7   r  c                      e Zd ZdefdeffZdS )DWRITE_TEXT_RANGEstartPositionr   Nra   rv   rw   r    rY   rx   r7   r5   r  r  +  s%        	&!	6HHHr7   r  c                  *    e Zd ZdefdefdefdeffZdS )DWRITE_OVERHANG_METRICSrm   rn   rightbottomNra   rv   rw   r   rY   rx   r7   r5   r  r  2  s3        			%	5	HHHr7   r  c                  B    e Zd Zdefdefdefd ee          fdefgZdS )DWRITE_GLYPH_RUN_DESCRIPTION
localeNametext
textLength
clusterMaptextPositionN)ra   rv   rw   r   r    r   r   rY   rx   r7   r5   r  r  ;  sE        	y!		v	wwv'	 HHHr7   r  c                  H    e Zd Zdefd ee          fdefdefdefdefgZ	dS )DWRITE_COLOR_GLYPH_RUNglyphRunglyphRunDescriptionbaselineOriginXbaselineOriginYrunColorpaletteIndexN)
ra   rv   rw   rC  r   r  r   DWRITE_COLOR_Fr   rY   rx   r7   r5   r  r  D  sQ        	%&	(D E EF	E"	E"	^$	 HHHr7   r  r  r  r  r  r  r  _padglyphImageFormatmeasuringModec                      e Zd ZeZdS )DWRITE_COLOR_GLYPH_RUN1N)ra   rv   rw   DWRITE_COLOR_GLYPH_RUN1_FieldsrY   rx   r7   r5   r  r  _  s        -HHHr7   r  c                  6    e Zd ZdefdefdefdefdefdefgZdS )DWRITE_MATRIXm11m12m21m22dxdyNr  rx   r7   r5   r  r  b  s?        					u	uHHHr7   r  c            	          e Zd Zd ej        e ee                    fd ej        e ee                    fd ej        e ee                    fgZ	dS )IDWritePixelSnappingIsPixelSnappingDisabledGetCurrentTransformGetPixelsPerDipN)
ra   rv   rw   r#   r   r
   r   r   r  r   rx   r7   r5   r  r  l  sq        	"MCM(GGENN$K$KL	h8N8N O OP	MCM(GGENNCCDIIIr7   r  c                      e Zd Zd ej        eeee ee	           ee
          e          fd ej        eeeee          fd ej        eeeee          fd ej        eeeeeee          fgZdS )IDWriteTextRendererDrawGlyphRunDrawUnderlineDrawStrikethroughDrawInlineObjectN)ra   rv   rw   r#   r   r
   r   DWRITE_MEASURING_MODEr   rC  r  r   r   rx   r7   r5   r  r  s  s        	CM(E52G!'"233!'">??K K	L 
	xx	B	B	 
	xx	B	B	D		xxtX	N	N	PIIIr7   r  c            
         e Zd Zg d ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd	 ej                    fd
 ej                    fd ej                    fd ej                    fd ej        ee          fd ej                    fd ej        e          fd ej        e          fd ej        e	 e
e           e
e                    fd ej        e	 e
e	          e          fd ej        e	ee	 e
e                    fd ej        e	 e
e           e
e                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej        e	 e
e           e
e                    fd ej                    fd ej                    fd ej        e	 e
e           e
e                    fd ej                    fd ej                    fd ej        e e
e          ee          fd  ej                    fd! ej         e
e                    fd" ej         e
e                    fd# ej         e
e          e	 e
e	                    fd$ ej         e
e                    fd% ej                    fd& ej                    fd' ej                    fZd(S ))IDWriteTextLayoutSetMaxWidthSetMaxHeightSetFontCollectionSetFontFamilyNameSetFontWeightSetFontStyleSetFontStretchSetFontSizeSetUnderlineSetStrikethroughSetDrawingEffectSetInlineObjectSetTypographySetLocaleNameGetMaxWidthGetMaxHeightGetFontCollection2GetFontFamilyNameLength2GetFontFamilyName2GetFontWeight2GetFontStyle2GetFontStretch2GetFontSize2GetUnderlineGetStrikethroughGetDrawingEffectGetInlineObjectGetTypographyGetLocaleNameLength1GetLocaleName1DrawGetLineMetricsr   GetOverhangMetricsGetClusterMetricsDetermineMinWidthHitTestPointHitTestTextPositionHitTestTextRangeN)ra   rv   rw   r#   r   r  r  r   r   r    r   r  r
   r   r'  r   r  rl   r  r   r   rx   r7   r5   r  r    sj       O			O 
		O
 
		O 
		O 
		O 
		O 
		O 
		O" 
		#O& 
		'O* 
		+O. 
		/O2 
	(*;	<	<	>3O6 
		7O: 
	E			;O> 
	E			?OB 
	vww'<==wwGX?Y?Y	Z	Z	\COF 
$	vwwv	9	9	;GOJ 
	vy&'':K2L2L	M	M	OKON 
	vww'9::GGDU<V<V	W	W	YOOR 
		SOV 
		WOZ 
		[O^ 
		_Ob 
	vwwt}}gg6G.H.H	I	I	KcOf 
		gOj 
		kOn 
	vww'89977CT;U;U	V	V	XoOr 
 		sOv 
		wOz 
	x)<!=!=ue	L	L	N{O~ 
		OB 
	ww233	4	4	6COF 
	ww677	8	8	:GOJ 
	ww566	P	P	RKON 
	wwu~~	&	&	(OOR 
		SOV 
		WOZ 
		[OIIIr7   r  c                      e Zd Zd ej                    fd ej                    fd ej                    fd ej        e ee           ee           ee           ee                    fgZ	dS )IDWriteTextLayout1SetPairKerningGetPairKerningSetCharacterSpacingGetCharacterSpacingN)
ra   rv   rw   r#   r   r    r   r   r  r   rx   r7   r5   r!  r!    s        											vwwu~~wwu~~wwu~~wwWhOiOi	j	j	l	IIIr7   r!  c                  h    e Zd Zd ej         ee                    fd ej        e          fgZdS )IDWriteFontFileEnumeratorMoveNextGetCurrentFontFileN)	ra   rv   rw   r#   r   r   r   r
   r   rx   r7   r5   r'  r'    sK        		wwt}}	%	%	'		x	 	 	"IIIr7   r'  c                  ^    e Zd Zd ej        eee e ee                              fgZ	dS )IDWriteFontCollectionLoaderCreateEnumeratorFromKeyN)
ra   rv   rw   r#   r   r
   r    r   r'  r   rx   r7   r5   r+  r+    sH        	"	x67777C\;];]3^3^	_	_	aIIIr7   r+  l   Znp i8  i[K           }      H   c                      e Zd Zd ej        e          fd ej        e          fd ej        e          fd ej        e          fd ej        e          fgZdS )IDWriteRenderingParamsGetGammaGetEnhancedContrastGetClearTypeLevelGetPixelGeometryGetRenderingModeN)ra   rv   rw   r#   r   r   r   r   rx   r7   r5   r4  r4    s        		E					E					E					D					D			IIIr7   r4  c                  $   e Zd Zd ej         ee          e          fd ej         ee          e	e
 ee                    fd ej         ee                    fd ej         ee                    fd ej        ee	 ee                    fd ej        e	e
 ee           ee                    fd ej                    fd ej         ee                    fd	 ej                    fd
 ej        eeeee ee                    fd ej        e	          fd ej         ee                    fd ej        eeeeeee ee                    fd ej         ee                    fd ej         ee                    fd ej        ee
eee ee                    fd ej                    fd ej                    fd ej         ee                    fd ej                    fd ej                    fgZdS )IDWriteFactoryGetSystemFontCollectionCreateCustomFontCollectionRegisterFontCollectionLoaderUnregisterFontCollectionLoaderCreateFontFileReferenceCreateCustomFontFileReferencer  CreateRenderingParamsCreateMonitorRenderingParamsCreateCustomRenderingParamsRegisterFontFileLoaderUnregisterFontFileLoaderCreateTextFormatCreateTypographyGetGdiInteropCreateTextLayoutCreateGdiCompatibleTextLayoutCreateEllipsisTrimmingSignCreateTextAnalyzerCreateNumberSubstitutionCreateGlyphRunAnalysisN)ra   rv   rw   r#   r   r   r  r   r+  r
   r    r   r   r   r4  r   r   r'  r)  r(  r  r  r  r  rz  r   rx   r7   r5   r;  r;    s       	"	ww455t	<	<	>	%	ww:;;XvwwWlOmOm	n	n	p	'	ww:;;	<	<	>	)	ww:;;	<	<	>	"	y(GGO,D,D	E	E	G	(	x1I)J)JGGTcLdLd	e	e	g				 	ww566	7	7	9	'			&	ueUD$@V8W8W	X	X	Z	!	x	 	 	"	#	ww788	9	9	;		y"79KM^`si1B)C)C
E 
E	F 
	ww011	2	2	4		ww011	2	2	4		y&*;UE77SdKeKe	f	f	h	(			%				ww233	4	4	6	#			!		U,IIIr7   r;  i/W0i  iA     n      0   ~   `   j   c                  R    e Zd Zd ej                    fd ej                    fgZdS )IDWriteFactory1GetEudcFontCollectionCreateCustomRenderingParams1Nr  rx   r7   r5   rX  rX  8  s;        	 			'		IIIr7   rX  c                      e Zd ZdefdefgZdS )DWRITE_UNICODE_RANGEfirstlastNr  rx   r7   r5   r\  r\  A  s%        	&	HHHr7   r\  c                      e Zd Zd ej         ee          eeee	e
ee ee           ee           ee                    fgZdS )IDWriteFontFallbackMapCharactersN)ra   rv   rw   r#   r   r   rm  r    r  r   r'  r)  r(  r  r   r   rx   r7   r5   r`  r`  H  su        		ww89966K`bk)+<>QSZSZ[aSbSbw{++wu~~
' 
'	(IIIr7   r`  c                      e Zd Zd ej         ee          e ee          ee	eee
          fd ej        e          fd ej         ee                    fgZdS )IDWriteFontFallbackBuilder
AddMappingAddMappingsCreateFontFallbackN)ra   rv   rw   r#   r   r   r\  r    r   r  r   r`  r   rx   r7   r5   rc  rc  Q  s        		ww344fggi>P>PRX, )U
4 
4	5 
	*	+	+	-		ww233	4	4	6	IIIr7   rc  c            	          e Zd Zd ej         ee                    fd ej         e ee                              fgZdS )IDWriteColorGlyphRunEnumeratorr(  GetCurrentRunN)	ra   rv   rw   r#   r   r   r   r  r   rx   r7   r5   rh  rh  _  sa        		wwt}}	%	%	'		wwww'=>>??	@	@	BIIIr7   rh  c                     e Zd Zd ej         ee                    fd ej         ee                    fd ej        ee ee	          e
ee
e ee                    fd ej                    fd ej                    fgZdS )IDWriteFactory2GetSystemFontFallbackCreateFontFallbackBuilderTranslateColorGlyphRunCreateCustomRenderingParams2CreateGlyphRunAnalysis2N)ra   rv   rw   r#   r   r   r`  rc  r   rC  r
   r  r    rh  r   rx   r7   r5   rk  rk  h  s        	 	ww233	4	4	6	$	ww9::	;	;	=	!	ueWW-=%>%>J_aikqw=>>
@ 
@	A 
(			"		IIIr7   rk  i`9iD  iI        :         2   c                  R   e Zd Zd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd	 ej                    fd
 ej                    fg
ZdS )IDWriteFontSetr  r  FindFontFaceReferenceFindFontFaceGetPropertyValues__GetPropertyValues_GetPropertyValuesGetPropertyOccurrenceCountGetMatchingFonts_r  Nr  rx   r7   r5   rx  rx  {  s        							 															%								'IIIr7   rx  c            	          e Zd Zd ej                    fd ej                    fd ej                    fd ej         ee                    fgZdS )IDWriteFontSetBuilderAddFontFaceReference_AddFontFaceReference
AddFontSetCreateFontSetN)ra   rv   rw   r#   r   r   rx  r   rx   r7   r5   r  r    so        	 										ww~..	/	/	1	IIIr7   r  c                  4    e Zd Zd ej        e          fgZdS )IDWriteFontSetBuilder1AddFontFileN)ra   rv   rw   r#   r   r   r   rx   r7   r5   r  r    s,        			'	'	)IIIr7   r  c                  \   e Zd Zd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej         ee                    fd ej        e ee                    fd ej                    fd	 ej                    fg	Z	d
S )IDWriteFactory3CreateGlyphRunAnalysis3CreateCustomRenderingParams3CreateFontFaceReference_CreateFontFaceReferenceGetSystemFontSetCreateFontSetBuilderCreateFontCollectionFromFontSetGetSystemFontCollection3GetFontDownloadQueueN)
ra   rv   rw   r#   r   r   r  rx  r  r   rx   r7   r5   r  r    s        	"			'			#			"							ww455	6	6	8	*	~ww/E'F'F	G	G	I	#					#IIIr7   r  c                  X    e Zd Zd ej         e ee                              fgZdS )IDWriteColorGlyphRunEnumerator1GetCurrentRun1N)ra   rv   rw   r#   r   r   r  r   rx   r7   r5   r  r    sB        		wwww'>??@@	A	A	CIIIr7   r  iچ_|i  iO        U   y      Z   5   c                      e Zd Zd ej        e ee          ee	e
ee ee                    fd ej                    fd ej                    fgZdS )IDWriteFactory4TranslateColorGlyphRun4ComputeGlyphOrigins_ComputeGlyphOriginsN)ra   rv   rw   r#   r   r   r   rC  r
   rA  r  r    r  r   rx   r7   r5   r  r    s        	"	|WW-=%>%>Jd,hHg@h@h
j 
j	k 
 					IIIr7   r  c                      e Zd Zd ej                    fd ej        eeee ee	                    fd ej                    fgZ
dS )IDWriteInMemoryFontFileLoaderr   CreateInMemoryFontFileReferenceGetFileCountN)ra   rv   rw   r#   r   r;  r
   r   r   r   r   rx   r7   r5   r  r    se        				*	~xxAYAY	Z	Z	\			IIIr7   r  l   9+ i*  i	O  e         c                      e Zd Zd ej         ee                    fd ej         ee                    fd ej                    fd ej                    fd ej                    fgZdS )IDWriteFactory5CreateFontSetBuilder5CreateInMemoryFontFileLoaderCreateHttpFontFileLoaderAnalyzeContainerTypeUnpackFontFileN)	ra   rv   rw   r#   r   r   r  r  r   rx   r7   r5   r  r    s         
!	ww566	7	7	9	'	ww<==	>	>	@	#								IIIr7   r  l   Mf i!  iB     ]      [         #   c            	          e Zd Zd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fd ej                    fgZdS )	IDWriteFactory6CreateFontFaceReference6CreateFontResourceGetSystemFontSet6GetSystemFontCollection6 CreateFontCollectionFromFontSet6CreateFontSetBuilder6CreateTextFormat6Nr  rx   r7   r5   r  r    s         
$									#			+			 					IIIr7   r  c                  R    e Zd Zd ej                    fd ej                    fgZdS )IDWriteFactory7GetSystemFontSet7GetSystemFontCollection7Nr  rx   r7   r5   r  r  
  s=         
			#		IIIr7   r  i5iv  i.M           V         c                      e Zd Zd	dZd
dZdS )Runr.   Nonec                    d| _         d| _        d| _        d| _        t	                      | _        d| _        d| _        d| _        d | _	        d S )Nr   F)

text_starttext_lengthglyph_startglyph_countrR  rS  bidiisNumberSubstitutedrJ  next_runr   s    r5   __init__zRun.__init__  sO    ,..	#( r7   r  r/   boolc                >    || j         k    o|| j         | j        z   k     S N)r  r  rc   r  s     r5   ContainsTextPositionzRun.ContainsTextPosition)  s$    t.d<$/TXTdBd3ddr7   Nr.   r  )r  r/   r.   r  )ra   rv   rw   r  r  rx   r7   r5   r  r    sB        
 
 
 
e e e e e er7   r  c                  x     e Zd ZeegZd fdZd d
Zd!dZd"dZ	d#dZ
d$dZd%dZd$dZd&dZd&dZd'dZ xZS )(TextAnalysisr.   r  c                    t                                                       d| _        d| _        d| _        d| _        g | _        d | _        d| _        d S Nr   )	superr  
_textstart_textlength_glyphstart_glyphcount_ptrs_script_bidirc   r`   s    r5   r  zTextAnalysis.__init__0  sQ    



r7   analyzerrz  r  r   r  r/   c                   || _         d| _        || _        d| _        d| _        | j                                         t                      | _        || j        _	        | j        | _
        |                    | d||            d S r  )_textr  r  r  r  r  clearr  
_start_runr  _current_runr{  )rc   r  r  r  s       r5   GenerateResultszTextAnalysis.GenerateResults<  s{    
&
%%&1# OtQT:::::r7   r  r    r  scriptAnalysisPOINTER(DWRITE_SCRIPT_ANALYSIS)c                   |                      |           |                     |           |dk    rX|                     |          \  }}|d         j        |j        _        |d         j        |j        _        |j        | _        |dk    XdS r  )SetCurrentRunSplitCurrentRunFetchNextRunrS  rT  r  )rc   r  r  r  runs        r5   ru  zTextAnalysis.SetScriptAnalysisK  s    
 	<(((\***1nn"//
;;OC .q 1 8CJ .q 1 8CJ:DL 1nn qr7   
textStringPOINTER(POINTER(WCHAR))POINTER(UINT32)r   c                $    d}t          |          )NzCurrently not implemented.)	Exception)rc   r  r  r  msgs        r5   ro  z"TextAnalysis.GetTextBeforePosition^  s    *nnr7   c                    || j         k    r$t          d           | _        | j        |d<   d|d<   nHt          | j        |d                    }| j                            |           ||d<   | j         |z
  |d<   dS r  )r  r   _no_ptrr  r  r_   )rc   r  r  r  ptrs        r5   rn  zTextAnalysis.GetTextAtPositionc  s     4+++$T??DL LJqMJqMMDJ|}}566CJc"""JqM ,|;JqMqr7   c                    dS r  rx   r   s    r5   rp  z)TextAnalysis.GetParagraphReadingDirectionw      qr7   r  c                \    t          d          | _        | j        |d<   | j        |z
  |d<   dS )N r   )r   _TextAnalysis__local_namer  )rc   r  r  r  s       r5   r   zTextAnalysis.GetLocaleNamez  s2    %bMM)
1(<7
1qr7   c                    dS r  rx   r   s    r5   rq  z"TextAnalysis.GetNumberSubstitution  r  r7   c                P    | j         r| j                             |          rd S d S d S r  )r  r  r  s     r5   r  zTextAnalysis.SetCurrentRun  s>     	!2!G!G!U!U 	F	 	 	 	r7   c                ,   | j         sd S || j         j        k    rd S t          j        | j                   }| j         j        |_        || j         _        || j         j        z
  }|xj        |z  c_        |xj        |z  c_        || j         _        || _         d S r  )r  r  copyr  r  )rc   r  new_run
splitPoints       r5   r  zTextAnalysis.SplitCurrentRun  s      	F4,777F)D-..,5%,"!D$5$@@
j(z)(2%#r7   tuple[Run, int]c                    | j         }|| j         j        k     r#|                     | j         j        |z              n| j         j        | _         ||j        z  }||fS r  )r  r  r  r  r  )rc   r  original_runs      r5   r  zTextAnalysis.FetchNextRun  sc    (*666  !2!=
!JKKKK $ 1 :Dl..
Z''r7   r  )r  rz  r  r   r  r/   r.   r  )r  r    r  r    r  r  r.   r/   )r  r    r  r  r  r  r.   r   )r  r    r  r   r  r  r.   r/   )r.   r/   )r  r    r  r  r  r  r.   r/   )r  r    r.   r  )r  r    r.   r  )ra   rv   rw   rm  rt  _interfaces_r  r  ru  ro  rn  rp  r   rq  r  r  r  __classcell__r`   s   @r5   r  r  -  s       -/FGL	 	 	 	 	 	; ; ; ;   &   
   (            $ $ $ $(
( 
( 
( 
( 
( 
( 
( 
(r7   r  c                  F     e Zd ZegZd fdZddZddZddZddZ	 xZ
S )MyFontFileStreamdatabytesr.   r  c                    t                                                       || _        t          |          | _        g | _        d S r  )r  r  _datalen_sizer  )rc   r  r`   s     r5   r  zMyFontFileStream.__init__  s8    
YY



r7   fragmentStartPOINTER(c_void_p)
fileOffsetr!   fragmentSizefragmentContextr/   c                8   ||z   | j         k    rdS | j        |d          }t          j        t	          |          z                      t          |                    }t          j        |t                    }| j	        
                    |           ||d<   d |d<   dS )Nl   @   r   )r  r  ctypesc_ubyter  from_buffer	bytearrayr   r
   r  r_   )rc   r  r  r  r  fragmentbufferr   s           r5   r   z!MyFontFileStream.ReadFileFragment  s    $tz11::jkk*.3x==0==i>Q>QRRk&(++
#a!qr7   r
   c                    dS r  rx   )rc   r  s     r5   r   z$MyFontFileStream.ReleaseFileFragment  r  r7   fileSizePOINTER(UINT64)c                    | j         |d<   dS r  )r  )rc   r'  s     r5   r   zMyFontFileStream.GetFileSize  s    jqr7   lastWriteTimec                    t           j        S r  )r#   	E_NOTIMPL)rc   r*  s     r5   r   z!MyFontFileStream.GetLastWriteTime  s
    }r7   )r  r  r.   r  )
r  r  r  r!   r  r!   r  r  r.   r/   )r  r
   r.   r/   )r'  r(  r.   r/   )r*  r(  r.   r/   )ra   rv   rw   r   r  r  r   r   r   r   r  r  s   @r5   r  r    s        )*L                     r7   r  c                  6     e Zd ZegZd fdZddZddZ xZS )LegacyFontFileLoaderr.   r  c                V    t                                                       i | _        d S r  )r  r  _streamsr  s    r5   r  zLegacyFontFileLoader.__init__  s$    r7   fontfileReferenceKeyr
   fontFileReferenceKeySizer    fontFileStreamPOINTER(IDWriteFontFileStream)r/   c                   t          |t          t                              }t          | j        |j        j                                     t                    t          t                              | _        | j        |d<   dS r  )	r   r   r	   r0  r^   ri   as_interfacer   _ptr)rc   r1  r2  r3  convert_indexs        r5   r   z(LegacyFontFileLoader.CreateStreamFromKey  sf    1783D3DEE}'='CDQQRghh !6779 9	 Iqqr7   indexr  r  c                4    t          |          | j        |<   d S r  )r  r0  )rc   r9  r  s      r5   SetCurrentFontz#LegacyFontFileLoader.SetCurrentFont  s    /55er7   r  )r1  r
   r2  r    r3  r4  r.   r/   )r9  r/   r  r  r.   r/   )	ra   rv   rw   r   r  r  r   r;  r  r  s   @r5   r.  r.    sm        ,-L        6 6 6 6 6 6 6 6r7   r.  c                  >     e Zd ZegZd fdZdd
ZddZddZ xZ	S )MyEnumeratorfactoryr
   loaderr.  r.   r  c                t   t                                                       t          j        |t                    | _        d| _        t          | j                  | _        d| _	        g | _
        g | _        g | _        d | _        t          d          | _        t          | j                  | _        || _        d S )Npyglet_dwritenone)r  r  r   r   r;  r>  keyr  sizecurrent_index_keys
_font_data_font_files_current_filer   _font_key_ref_font_key_len_file_loaderrc   r>  r?  r`   s      r5   r  zMyEnumerator.__init__  s    {7N;;"MM	
!26:: !344"r7   fonts	list[str]c                    || _         d S r  )rH  rc   rO  s     r5   AddFontDatazMyEnumerator.AddFontData  s    r7   hasCurrentFiler   c                   | xj         dz  c_         | j         t          | j                  k    rt                      }| j                            | j         | j        | j                             | j         }| j         | j        vrt          t          |                    }t          |t                    }| j                            |           | j                            | j        | j                  t          |          | j        t          |                     | j                            |           d|d<   d S d|d<   d S d|d<   d S )Nr8   r   )rF  r  rH  r   rM  r;  rG  r   r	   r   r
   r_   r>  rA  r   r   rI  )rc   rT  	font_filerD  r%  r   s         r5   r(  zMyEnumerator.MoveNext  s<   aT_!5!555'))I,,T-?QUQcAdeee$C!33 #//68,,
!!#&&&::4:dFX;Y;A&>>;?;L;@;K;KM M M
  ''	222$%q!!!$%q!!! !N1r7   fontFiler   r/   c                t    t          |t          t                              }| j        | j                 |d<   dS r  )r   r   r   rI  rF  )rc   rW  s     r5   r)  zMyEnumerator.GetCurrentFontFile  s2    '/":":;;&t'9:qr7   r>  r
   r?  r.  r.   r  )rO  rP  r.   r  )rT  r   r.   r  )rW  r   r.   r/   )
ra   rv   rw   r'  r  r  rS  r(  r)  r  r  s   @r5   r=  r=    s        -.L# # # # # #"       " " " ":       r7   r=  c                  6     e Zd ZegZd fdZddZddZ xZS )LegacyCollectionLoaderr>  r
   r?  r.  r.   r  c                r    t                                                       t          ||          | _        d S r  )r  r  r=  _enumeratorrN  s      r5   r  zLegacyCollectionLoader.__init__  s1    '88r7   c                :    | j                             |           d S r  )r]  rS  rR  s     r5   rS  z"LegacyCollectionLoader.AddFontData   s    $$U+++++r7   r;  rD  key_sizer    
enumeratorr=  r/   c                    t          | j                            t                    t	          t                              | _        | j        |d<   dS r  )r   r]  r6  r'  r   r7  )rc   r>  rD  r_  r`  s        r5   r,  z.LegacyCollectionLoader.CreateEnumeratorFromKey#  sE    )667PQQ !:;;= =	 	
1qr7   rY  r  )
r>  r;  rD  r
   r_  r    r`  r=  r.   r/   )	ra   rv   rw   r+  r  r  rS  r,  r  r  s   @r5   r[  r[    sm        /0L9 9 9 9 9 9, , , ,       r7   r[  )
r)   r*   r+   r*   r,   r*   r-   r*   r.   r/   )
__future__r   r	  r   osplatform_ctypesr   r   r   r   r   r	   r
   r   r   r   r   r   r   ctypes.wintypesr   r   r   r   r   typingr   !pyglet.font.dwrite.d2d1_types_libr   r   r   r   pyglet.libs.win32r   r   r   r   r   r    r!   r"   r#   r$   architecturemachineendswithpathrb   environLoadLibrary
dwrite_libOSErrorr  ImportErrorr6   DWRITE_NO_PALETTE_INDEXDWRITE_FACTORY_TYPEDWRITE_FACTORY_TYPE_SHAREDDWRITE_FACTORY_TYPE_ISOLATEDr'  DWRITE_FONT_WEIGHT_THINDWRITE_FONT_WEIGHT_EXTRA_LIGHTDWRITE_FONT_WEIGHT_ULTRA_LIGHTDWRITE_FONT_WEIGHT_LIGHTDWRITE_FONT_WEIGHT_SEMI_LIGHTDWRITE_FONT_WEIGHT_NORMALDWRITE_FONT_WEIGHT_REGULARDWRITE_FONT_WEIGHT_MEDIUMDWRITE_FONT_WEIGHT_DEMI_BOLDDWRITE_FONT_WEIGHT_SEMI_BOLDDWRITE_FONT_WEIGHT_BOLDDWRITE_FONT_WEIGHT_EXTRA_BOLDDWRITE_FONT_WEIGHT_ULTRA_BOLDDWRITE_FONT_WEIGHT_BLACKDWRITE_FONT_WEIGHT_HEAVYDWRITE_FONT_WEIGHT_EXTRA_BLACKr(  DWRITE_FONT_STRETCH_UNDEFINED#DWRITE_FONT_STRETCH_ULTRA_CONDENSED#DWRITE_FONT_STRETCH_EXTRA_CONDENSEDDWRITE_FONT_STRETCH_CONDENSED"DWRITE_FONT_STRETCH_SEMI_CONDENSEDDWRITE_FONT_STRETCH_NORMALDWRITE_FONT_STRETCH_MEDIUM!DWRITE_FONT_STRETCH_SEMI_EXPANDEDDWRITE_FONT_STRETCH_EXPANDED"DWRITE_FONT_STRETCH_EXTRA_EXPANDEDrA  DWRITE_GLYPH_IMAGE_FORMATS_NONE#DWRITE_GLYPH_IMAGE_FORMATS_TRUETYPEDWRITE_GLYPH_IMAGE_FORMATS_CFFDWRITE_GLYPH_IMAGE_FORMATS_COLRDWRITE_GLYPH_IMAGE_FORMATS_SVGDWRITE_GLYPH_IMAGE_FORMATS_PNGDWRITE_GLYPH_IMAGE_FORMATS_JPEGDWRITE_GLYPH_IMAGE_FORMATS_TIFF1DWRITE_GLYPH_IMAGE_FORMATS_PREMULTIPLIED_B8G8R8A8*DWRITE_GLYPH_IMAGE_FORMATS_COLR_PAINT_TREE!DWRITE_GLYPH_IMAGE_FORMATS_BITMAPr  DWRITE_MEASURING_MODE_NATURAL!DWRITE_MEASURING_MODE_GDI_CLASSIC!DWRITE_MEASURING_MODE_GDI_NATURALDWRITE_GLYPH_IMAGE_FORMATS_ALLr)  DWRITE_FONT_STYLE_NORMALDWRITE_FONT_STYLE_OBLIQUEDWRITE_FONT_STYLE_ITALICr   DWRITE_INFORMATIONAL_STRING_NONE,DWRITE_INFORMATIONAL_STRING_COPYRIGHT_NOTICE+DWRITE_INFORMATIONAL_STRING_VERSION_STRINGS%DWRITE_INFORMATIONAL_STRING_TRADEMARK(DWRITE_INFORMATIONAL_STRING_MANUFACTURER$DWRITE_INFORMATIONAL_STRING_DESIGNER(DWRITE_INFORMATIONAL_STRING_DESIGNER_URL'DWRITE_INFORMATIONAL_STRING_DESCRIPTION+DWRITE_INFORMATIONAL_STRING_FONT_VENDOR_URL/DWRITE_INFORMATIONAL_STRING_LICENSE_DESCRIPTION,DWRITE_INFORMATIONAL_STRING_LICENSE_INFO_URL.DWRITE_INFORMATIONAL_STRING_WIN32_FAMILY_NAMES1DWRITE_INFORMATIONAL_STRING_WIN32_SUBFAMILY_NAMES4DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_FAMILY_NAMES7DWRITE_INFORMATIONAL_STRING_TYPOGRAPHIC_SUBFAMILY_NAMES'DWRITE_INFORMATIONAL_STRING_SAMPLE_TEXT%DWRITE_INFORMATIONAL_STRING_FULL_NAME+DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_NAME/DWRITE_INFORMATIONAL_STRING_POSTSCRIPT_CID_NAME<DWRITE_INFORMATIONAL_STRING_WEIGHT_STRETCH_STYLE_FAMILY_NAME6DWRITE_INFORMATIONAL_STRING_DESIGN_SCRIPT_LANGUAGE_TAG9DWRITE_INFORMATIONAL_STRING_SUPPORTED_SCRIPT_LANGUAGE_TAG2DWRITE_INFORMATIONAL_STRING_PREFERRED_FAMILY_NAMES5DWRITE_INFORMATIONAL_STRING_PREFERRED_SUBFAMILY_NAMES+DWRITE_INFORMATIONAL_STRING_WWS_FAMILY_NAMEr  DWRITE_TEXT_ALIGNMENT_LEADINGDWRITE_TEXT_ALIGNMENT_TRAILINGDWRITE_TEXT_ALIGNMENT_CENTERDWRITE_TEXT_ALIGNMENT_JUSTIFIEDr   DWRITE_FONT_FACE_TYPE_CFFDWRITE_FONT_FACE_TYPE_TRUETYPE)DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTIONDWRITE_FONT_FACE_TYPE_TYPE1DWRITE_FONT_FACE_TYPE_VECTORDWRITE_FONT_FACE_TYPE_BITMAPDWRITE_FONT_FACE_TYPE_UNKNOWNDWRITE_FONT_FACE_TYPE_RAW_CFF)DWRITE_FONT_FACE_TYPE_TRUETYPE_COLLECTIONrj   r  rl   rz   r   r   r   r   r   r   IUnknownr   r   	pIUnknownr   r   GUIDIID_IDWriteLocalFontFileLoaderr   r   r   IID_IDWriteFontFace1r   IID_IDWriteFontFace2r  IID_IDWriteFontFace3r  r+  IID_IDWriteFontFace4r<  rC  rU  DWRITE_SCRIPT_SHAPES_DEFAULTrR  rZ  rW  r\  r`  rg  rr  &DWRITE_READING_DIRECTION_LEFT_TO_RIGHTrm  rt  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  remover  r  r  r  r  r!  r'  r+  IID_IDWriteFactoryr4  r;  IID_IDWriteFactory1rX  r\  r`  rc  rh  rk  IID_IDWriteFactory2rx  r  r  r  r  #IID_IDWriteColorGlyphRunEnumerator1r  r  IID_IDWriteFactory5r  ID_IDWriteFactory6r  r  IID_IDWriteFactory7DWriteCreateFactoryrestypeREFIIDargtypesr  	COMObjectr  r  r.  r=  r[  rx   r7   r5   <module>r     sF   " " " " " "   				                                   : 9 9 9 9 9 9 9 9 9 9 9 9 9                  a ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` ` `F
 xq!W,,1A1A1C1C1L1LT1R1R,bj2JMM##F++JJ   
!C
+c

> > > > !       !$ !$   #     " "   #  #   !$    ! &' #&' # ! %& "  $% !  %& "! ", &0 #!+ ", !+ !+ ", ", 4> 1-7 *%C%D&E%D&E &W&W !
   ! $% !$% !!D!?"@!@"A "@"@ "@	"@
 "A"A "A"A "S"S       "( #$  /0 ,./ +() %+, ('( $+, (*+ './ +23 //1 ,13 .46 179 4:< 7*, '(* %.0 +24 /?A <9; 6<> 957 28: 5.0 +   ! !"   "#   !" ,- )      !  ! ,- )C C C$     )       )       9   6    9   h h h h h9 h h h"S S S S S) S S S
 
 
 
 
Y 
 
 
 #,  
 
 
 
 
CL 
 
 
    s|       CM       !6    "**ffdDRVX\^bdhjnpt!u!u     cm        cm            cm      F  sx
FFD$dTXZ^`dfjkk        8  sx
FFDtDQUVZ[_`dee     '     sx
FFDtDQUVZ[_`dee     '   B    i     sx
FFDtDQUVZ[_`dee     '   C C C C Cy C C C$        Y         )       )   	v 	v 	v 	v 	vY 	v 	v 	v    i    ,5  ( )* &       
 
 
 
 
cl 
 
 
    #-   6    cm              *OS]       #-   6
 
 
 
 
; 
 
 

 
 
 
 
CM 
 
 
    2CM          4 4 4 4 4 4 4 4n           	       i       9       Y    !"GG$@AAB VV34+,
"  81(("))66*:;;;. . . . .i . . .    I       3<       .    P P P P P) P P Pf
 
 
 
 
*,=s} 
 
 
           #,    SXj&&$dDRVX\^bdhii     S]   - - - - -S] - - -` chz664tTSWY]_ceijj     ncm       9       #-   
 
 
 
 
 
 
 
    S]       o~s}     chz664tTSWY]_ceijj     S]   2
 
 
 
 
CM 
 
 
    2CM       os}   2    &D    '/chz664PTVZ[_`deijnos&t&t #	 	 	 	 	os} 	 	 	    CM    chz664tTSWY]_ceijj     oZhm    SXj&&$tT$tTXY]^bcc     oZikym  (    oZi%~s}   chz664d4PTUYZ^_cdd  !4 %   3SZAWAWX  e e e e e e e e"y( y( y( y( y(3= y( y( y(x    s}   D6 6 6 6 63= 6 6 6(7 7 7 7 73= 7 7 7t    S]     s   0A4C% %C8