o
    t#g                     @   s\   d dl mZ d dlmZ ddlmZ d dlZdZdZe	eZ
e	eZG dd	 d	eZdS )
    )sstruct)safeEval   )GlyphNz
	>
	ppem:          H	# The PPEM for which this strike was designed (e.g., 9,
						# 12, 24)
	resolution:    H	# The screen resolution (in dpi) for which this strike
						# was designed (e.g., 72)
zz
	>
	glyphDataOffset:   L	# Offset from the beginning of the strike data record
							# to data for the individual glyph
c                   @   s6   e Zd ZdddZdd Zdd	 Zd
d Zdd ZdS )StrikeNr   H   c                 C   s   || _ || _|| _i | _d S )N)datappem
resolutionglyphs)selfrawdatar	   r
    r   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/lib/python3.10/site-packages/fontTools/ttLib/tables/sbixStrike.py__init__   s   
zStrike.__init__c                 C   s>  | j d u rddlm} |jt| j tk r'ddlm} |jdftt| j f tt| j d t |  t	d| j ttt
  \}|t t
 d | _g | _t| jd D ]}|t
 t }t	d| j ||t
  \}| j| qTt| jD ] }t| j | j| | j|d   |d}|| || j|j< qv| `| `| ` d S )Nr   ttLibz-Strike header too short: Expected %x, got %x.z>Lr   )r   gid)r   	fontToolsr   
TTLibErrorlensbixStrikeHeaderFormatSizer   unpacksbixStrikeHeaderFormatstructsbixGlyphDataOffsetFormatSize	numGlyphsglyphDataOffsetsrangeappendr   	decompiler   	glyphName)r   ttFontr   firstGlyphDataOffsetistartcurrent_offsetcurrent_glyphr   r   r   r       s^   

zStrike.decompilec                 C   s   d| _ d| _| }ttt|d   }|D ]4}|| jv r#| j| }nt|d}|| ||_	|  j|j
7  _|t|j
7 }|  j tt|7  _ qt }||_	|  j tt|7  _ tt| | _|  j| j | j 7  _d S )N    r   )r!   )r   
bitmapDatagetGlyphOrderr   r   r   r   r   compileglyphDataOffsetr   r   packsbixGlyphDataOffsetFormatr   r   )r   r"   
glyphOrdercurrentGlyphDataOffsetr!   r'   dummyr   r   r   r+   W   s.   




zStrike.compilec                 C   s   | d |  |jd| jd |  |jd| jd |  | }tt|D ]}|| | jv r?| j||  	|| q+|
d |  d S )Nstriker	   )valuer
   )begintagnewline	simpletagr	   r
   r*   r   r   r   toXMLendtag)r   	xmlWriterr"   r/   r$   r   r   r   r7   {   s   

zStrike.toXMLc                 C   sB  |dv rt | |t|d  d S |dkrd|v r#td|d  d }nd }d|v r4td|d  d }nd|v rCtd|d  d }ndd	lm} |d
d|v rYt|d }nd}d|v rft|d }	nd}	t||||	d}
|D ]}t|tr|\}}}|
|||| |
	| qr|
| j
|
j< d S dd	lm} |d| )N)r	   r
   r3   glyphgraphicTypez'''	glyphnamenamer   r   zGlyph must have a glyph name.originOffsetXoriginOffsetY)r!   r;   r>   r?   zcan't handle '%s' element)setattrr   r   r   r   r   
isinstancetuplefromXMLr+   r   r!   )r   r=   attrscontentr"   myFormatmyGlyphNamer   	myOffsetX	myOffsetYr'   elementr   r   r   rC      sB   



zStrike.fromXML)Nr   r   )__name__
__module____qualname__r   r    r+   r7   rC   r   r   r   r   r      s    
8$r   )fontTools.miscr   fontTools.misc.textToolsr   	sbixGlyphr   r   r   r.   calcsizer   r   objectr   r   r   r   r   <module>   s    

