§
    ƒØj‹
  ã            
       óÚ  — d dl Z d dlZddlmZ ddlT ddlmZ ddlm	Z	 d„ Z
dd	„Zd
„ Zd„ Zd„ Zedk    �r3 ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Z ej        d¦  «        Zeez
  ez
  ez
  Zd eed k     <    ee¦  «        Z ee¦  «        Z eee¦  «        ez   Zdeedk    <    ee¦  «        Z ee¦  «        ZeD ]ŠZ e j        eed          ed         fed         ed         fdd¦  «          e ee¦  «        Ž Zed         ed         z
  ez  Z e dk    r. e j!        ee d›ed         dz   ed         fe j"        ddd¦  «         Œ‰dS dS )é    Né   )Úlayers)Ú*)Úget_unit_size)Úfilter_out_of_range_bboxc                 óŒ   — t          j        t          j        | d         | d         z
  | d         | d         z
  ¦  «        ¦  «        S )Né   r   é   r   )ÚnpÚrad2degÚarctan2)Úlines    ú�/Users/tedpeters/Documents/Projects/Claude Projects/Misc Tools/notename-sheets/.venv/lib/python3.11/site-packages/oemer/barline_extraction.pyÚ
get_degreer      s8   € ÝŒ:•b”j  a¤¨4°¬7Ñ!2°D¸´G¸dÀ1¼gÑ4EÑFÔFÑGÔGÐGó    éK   c                 óÞ  — t          j        d¦  «        }t          | ¦  «        } t          d„ |                     dd¦  «                             ¦   «         D ¦   «         ¦  «        }t          d„ |                     dd¦  «                             ¦   «         D ¦   «         ¦  «        }g }| D ]F}t          |¦  «        }||k     rŒ|d         |k     s|d         |k    rŒ1|                     |¦  «         ŒG|S )NÚstaffsc                 ó   — g | ]	}|j         ‘Œ
S © )Úy_upper©Ú.0Ústs     r   ú
<listcomp>z filter_lines.<locals>.<listcomp>   ó   € ÐFÐFÐF �”ÐFÐFÐFr   éÿÿÿÿr   c                 ó   — g | ]	}|j         ‘Œ
S r   )Úy_lowerr   s     r   r   z filter_lines.<locals>.<listcomp>   r   r   r	   )	r   Ú	get_layerr   ÚminÚreshapeÚsqueezeÚmaxr   Úappend)ÚlinesÚ
min_degreer   Úmin_yÚmax_yÚcandsr   Údegrees           r   Úfilter_linesr,      sð   € ÝÔ˜hÑ'Ô'€Få$ UÑ+Ô+€EÝÐFÐF f§n¢n°R¸Ñ&;Ô&;×&CÒ&CÑ&EÔ&EÐFÑFÔFÑGÔG€EÝÐFÐF f§n¢n°R¸Ñ&;Ô&;×&CÒ&CÑ&EÔ&EÐFÑFÔFÑGÔG€Eà€EØð ð ˆÝ˜DÑ!Ô!ˆØ�JÒÐØà�Œ7�UŠ?ˆ?˜d 1œg¨šo˜oØà�Š�TÑÔÐÐØ€Lr   c           	      óV  — t          j        | ¦  «        }|D ]ˆ}t          |¦  «        }|d         |d         z
  dk    r|dxx         dz  cc<   ||d         |d         …|d         |d         …fxx         | |d         |d         …|d         |d         …f         z  cc<   Œ‰d||dk    <   |S )Nr
   r   r   r	   )r   Ú
zeros_likeÚlist)ÚsymbolsÚbboxesÚimgÚboxs       r   Úget_barline_mapr4   $   sÉ   € Ý
Œ-˜Ñ
 Ô
 €CØð Sð SˆÝ�3‰iŒiˆØˆqŒ6�#�a”&‰=˜AÒÐØ�ˆFˆFŒF�a‰KˆFˆF‰FØˆC�ŒF�3�q”6ˆM˜3˜qœ6 # a¤&˜=Ð(Ð)Ð)Ô)¨W°S¸´V¸CÀ¼F°]ÀCÈÄFÈ3ÈqÌ6ÀMÐ5QÔ-RÑRÐ)Ð)Ñ)Ð)Ø€CˆˆAŠ�JØ€Jr   c                 ó®  — t          j        dt           j        ¬¦  «        }t          j        t          j        |                      t           j        ¦  «        |¦  «        |¦  «        }t          |¦  «        }g }g }|D ]Y}t          t          |¦  «        Ž }|d         |d         z
  }||k    r*| 
                    |¦  «         | 
                    |¦  «         ŒZ|S )N)é   r
   )Údtyper	   r   )r   ÚonesÚuint8Úcv2ÚerodeÚdilateÚastypeÚget_bboxr   Ú
get_centerr%   )	ÚbmapÚkerÚext_bmapr1   Ú	valid_boxÚheightsr3   Ú	unit_sizeÚhs	            r   Úget_barline_boxrG   /   sÀ   € Ý
Œ'�&¥¤Ð
)Ñ
)Ô
)€CÝŒy�œ D§K¢Kµ´Ñ$9Ô$9¸3Ñ?Ô?ÀÑEÔE€HÝ�hÑÔ€Fà€IØ€GØð "ð "ˆÝ!¥:¨c¡?¤?Ð3ˆ	Ø�ŒF�S˜”V‰OˆØˆyŠ=ˆ=Ø�NŠN˜1ÑÔÐØ×Ò˜SÑ!Ô!Ð!øàÐr   c           
      ó&  — t          |¦  «        }| D ]~}t          |¦  «        }t          j        ||d         |d         f|d         |d         fdd¦  «         |d›}t          j        |||d         dz   |d         ft          j        ddd¦  «         Œ|S )	Nr   r   r
   r	   ©r   éÿ   r   ú.2fg333333ã?)rJ   r   r   )Ú
to_rgb_imgr   r:   Ú	rectangleÚputTextÚFONT_HERSHEY_SIMPLEX)r&   Úori_imgr2   r   r+   Úmsgs         r   Údraw_llsrR   @   s£   € Ý
�WÑ
Ô
€CØð cð cˆÝ˜DÑ!Ô!ˆÝŒ�c˜D œG T¨!¤WÐ-°°Q´¸¸a¼Ð/AÀ;ÐPQÑRÔRÐRØˆoˆoˆÝŒ�C˜˜t Aœw q™y¨$¨q¬'Ð2µCÔ4LÈcÐS^Ð`aÑbÔbÐbÐbØ€Jr   Ú__main__Úsymbols_predÚstems_rests_predÚnotehead_predÚclefs_keys_predr   r
   r	   rI   é	   rK   gš™™™™™é?)r   r   rJ   )r   )#r:   Únumpyr   Ú r   ÚbboxÚutilsr   Úgeneral_filtering_rulesr   r   r,   r4   rG   rR   Ú__name__r    r0   ÚstemsÚnoteheadÚclefsr   ÚmixÚ
find_linesr&   r@   r1   rL   r3   rM   r?   rE   ÚratiorN   rO   r   r   r   ú<module>re      s]  ðð €
€
€
Ø Ð Ð Ð à Ð Ð Ð Ð Ð Ø Ð Ð Ð Ø  Ð  Ð  Ð  Ð  Ð  Ø =Ð =Ð =Ð =Ð =Ð =ðHð Hð Hðð ð ð ð(ð ð ðð ð ð"ð ð ð ˆzÒÑØˆfÔ˜~Ñ.Ô.€GØˆFÔÐ/Ñ0Ô0€EØˆvÔ Ñ0Ô0€HØˆFÔÐ.Ñ/Ô/€EØˆVÔ˜hÑ'Ô'€Fà
�E‰/˜HÑ
$ uÑ
,€CØ€CˆˆAŠ�JàˆJ�s‰OŒO€EØˆL˜ÑÔ€EØˆ?˜7 EÑ*Ô*¨UÑ2€DØ€DˆˆaŠ�LØˆ_˜TÑ"Ô"€Fàˆ:�dÑÔ€DØð qð qˆØˆŒ�d˜S œV S¨¤VÐ,¨s°1¬v°s¸1´vÐ.>ÀÈQÑOÔOÐOØ!�M : :¨c¡?¤?Ð3ˆ	Ø�Q”˜#˜aœ&‘ IÑ-ˆØ�1Š9ˆ9ØˆCŒK˜ ˜n˜n¨s°1¬v°a©x¸¸Q¼Ð.@À#ÔBZÐ\_ÐalÐnoÑpÔpÐpøð- Ðð"qð qr   