Ë
    ¡ëiÑ  ã                   ó„   — d dl mZ d dlmZ d dlmZ d dlmZmZ	  G d„ de«      Z
 G d„ de
«      Zd	„ Zed
k(  r e«        yy)é    )Ú
Standard39)Úcolors)Úcm)Úascii_uppercaseÚdigitsc                   ó‚   — e Zd ZdZdez  Zdez  Zdez  ZdZdez  Z	dez  Z
dez  ZeZd	ez  Zd	ez  Z	 	 	 	 	 	 dd„Zd„ Zy
)ÚBaseLTOLabela!  
    Base class for LTO labels.

    Specification taken from "IBM LTO Ultrium Cartridge Label Specification, Revision 3"
    available on  May 14th 2008 from :
    http://www-1.ibm.com/support/docview.wss?rs=543&context=STCVQ6R&q1=ssg1*&uid=ssg1S7000429&loc=en_US&cs=utf-8&lang=en+en
    gš™™™™™@g333333û?g333333Ã?g      @gQkšwœ¢@gÃõ(\�Âñ?g®Ø_vO¦?é
   Nc                 ón  — t        || j                  «      | _        || _        t	        |«      dk7  s|t
        t        z   vrt        d|z  «      ‚|st	        |«      dkD  s|j                  «       st        d|z  «      ‚|t        |xs d«      j                  dt	        |«      z
  «      z   dd ›d|›�}t	        |«      dk7  rt        d	|›d
|›d
|›d�«      ‚|| _        t        j                  | || j                  | j                  | j                  | j                   | j"                  | j$                  d|¬«
       y)a  
           Initializes an LTO label.

           prefix : Up to six characters from [A-Z][0-9]. Defaults to "".
           number : Label's number or None. Defaults to None.
           subtype : LTO subtype string , e.g. "1" for LTO1. Defaults to "1".
           border : None, or the width of the label's border. Defaults to None.
           checksum : Boolean indicates if checksum char has to be printed. Defaults to False.
           availheight : Available height on the label, or None for automatic. Defaults to None.
        é   zInvalid subtype '%s'é   zInvalid prefix '%s'r   NÚLé   zInvalid set of parameters (z, ú)T)ÚratioÚ	barHeightÚbarWidthÚgapÚlquietÚrquietÚquietÚchecksum)ÚmaxÚCODEBARHEIGHTÚheightÚborderÚlenr   Ústring_digitsÚ
ValueErrorÚisalnumÚstrÚzfillÚlabelr   Ú__init__Ú	CODERATIOÚCODEBARWIDTHÚCODEGAPÚ
CODELQUIETÚ
CODERQUIET)ÚselfÚprefixÚnumberÚsubtyper   r   Úavailheightr#   s           ú^/var/www/html/chat/reports/venv/lib/python3.12/site-packages/reportlab/graphics/barcode/lto.pyr$   zBaseLTOLabel.__init__   s  € ô  ˜+ t×'9Ñ'9Ó:ˆŒØˆŒÜ�‹L˜AÒØœ´Ñ>Ñ>ÜÐ3°gÑ=Ó>Ð>Ùœc &›k¨AšoØ—.‘.Ô"ÜÐ2°VÑ;Ó<Ð<Ø"¤S¨ª°1Ó%5×%;Ñ%;¸AÄÀFÃ¹OÓ%LÑLÈbÈqÒQÙ"ð$ˆäˆu‹:˜Š?ÝÚ#)ª6²7ð<ó =ð =àˆŒ
Ü×Ñ˜DØ!Ø"&§.¡.Ø&*§k¡kØ%)×%6Ñ%6Ø $§¡Ø#'§?¡?Ø#'§?¡?Ø"&Ø%-ö		/ó    c                 ó®  — |j                  «        |j                  ||«       | j                  rN|j                  | j                  «       |j	                  dd| j
                  | j                  | j                  «       t        j                  | || j
                  | j                  z
  dz  | j                  | j                  z
  «       |j                  «        y)z$Draws the LTO label onto the canvas.r   ç       @N)Ú	saveStateÚ	translater   ÚsetLineWidthÚ	roundRectÚ
LABELWIDTHÚLABELHEIGHTÚ
LABELROUNDr   ÚdrawOnÚCODENOMINALWIDTHr   ÚrestoreState)r*   ÚcanvasÚxÚys       r/   r:   zBaseLTOLabel.drawOnD   s¬   € à×ÑÔØ×Ñ˜˜AÔØ�;Š;Ø×Ñ §¡Ô,Ø×Ñ˜Q ØŸ™Ø×(Ñ(ØŸ™ô)ô 	×Ñ˜$Ø ØŸ?™?¨4×+@Ñ+@Ñ@À#ÑEØ×*Ñ*¨4¯;©;Ñ6ô	8ð 	×ÑÕr0   )Ú NÚ1NFN)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r7   r8   r9   r%   r;   r   r&   r'   r(   r)   r$   r:   © r0   r/   r	   r	   	   s{   „ ñð �r‘€JØ˜‘(€KØ˜‘€JØ€IØ ‘{ÐØ˜2‘I€MØ˜B‘;€LØ€GØ�lÑ"€JØ�lÑ"€JØ Ø"Ø"Ø"Ø %Ø#'ó'/óRr0   r	   c                   ó@   — e Zd ZdZdZdez  Zdez  ZdZdZ	dZ
d„ Zd	„ Zy
)ÚVerticalLTOLabelzT
    A class for LTO labels with rectangular blocks around the tape identifier.
    )zHelvetica-Boldé   r   gÍÌÌÌÌÌÜ?çš™™™™™‰?é   )
ÚredÚyellowÚ
lightgreenÚ	lightblueÚgreyÚ	orangeredÚpinkÚ	darkgreenÚorangeÚpurplec                 ó    — d|v r|d   | _         |d= nd| _         | j                  | j                  z
  |d<   t        j                  | g|¢­i |¤Ž y)zp
        Initializes the label.

        colored : boolean to determine if blocks have to be colorized.
        ÚcoloredFr.   N)rW   r8   ÚBLOCKHEIGHTr	   r$   )r*   ÚargsÚkwargss      r/   r$   zVerticalLTOLabel.__init__h   sZ   € ð ˜ÑØ! )Ñ,ˆDŒLØ�yÑ!à ˆDŒLØ $× 0Ñ 0°×1AÑ1AÑ Aˆˆ}ÑÜ×Ñ˜dÐ4 TÒ4¨VÓ4r0   c                 ó$  — t         j                  | |||«       |j                  «        |j                  | j                  «       |j                  ddd«       |j                  ||«       | j                  | j                  | j                  z  z
  dz  }t        | j                  «      D �]Ö  }| j                  \  }}| j                  }|| j                  dz
  k(  r| j                  |d }	|\  }}|dz  }||f}n| j                  |   }	|j                  «        |j                  ||| j                  z  z   d«       | j                  rh|	j                  «       rX |j                  t!        t"        | j$                  t'        |	«         t#        j(                  ddd«      «      j+                  «       Ž  n|j                  ddd«       |j-                  dd| j                  | j.                  d¬«       |j                  | j                   |j0                  |	g|¢­Ž z   dz  | j.                  dz  «       |j3                  d«        |j4                  |Ž  |j                  ddd«       |j7                  dd|	«       |j9                  «        �ŒÙ |j9                  «        y)z5Draws some blocks around the identifier's characters.r   r2   r   NT)Úfillg     €V@)r	   r:   r3   r5   Ú	LINEWIDTHÚsetStrokeColorRGBr4   r7   ÚNBBLOCKSÚ
BLOCKWIDTHÚrangeÚ	LABELFONTr#   rW   ÚisdigitÚsetFillColorRGBÚgetattrr   ÚCOLORSCHEMEÚintÚColorÚrgbÚrectrX   ÚstringWidthÚrotateÚsetFontÚdrawCentredStringr<   )
r*   r=   r>   r?   ÚxblocksÚiÚfontÚsizeÚnewfontÚparts
             r/   r:   zVerticalLTOLabel.drawOnv   s<  € ä×Ñ˜DØ"ØØô	ð 	×ÑÔØ×Ñ˜DŸN™NÔ+Ø× Ñ   A qÔ)Ø×Ñ˜˜AÔØ—?‘? D§M¡M°$·/±/Ñ$AÑBÀCÑGˆÜ�t—}‘}Ó%ó 	"ˆAØŸ>™>‰LˆT�4Ø—n‘nˆGØ�T—]‘] QÑ&Ò'Ø—z‘z ! "�~�Ø&‘��tØ˜‘�Ø ˜,‘à—z‘z !‘}�Ø×ÑÔØ×Ñ˜W a¨¯©Ñ&7Ñ8¸!Ô<Ø�|Š| §¡¤Ø&�×&Ñ&¬´Ø04×0@Ñ0@ÄÀTÃÑ0KÜ06·±¸QÀÀ1Ó0Eó)GçGJÁsÃuòNð ×&Ñ& q¨!¨QÔ/Ø�K‰K˜˜1˜dŸo™o¨t×/?Ñ/?ÀdˆKÔKØ×Ñ˜dŸo™oÐ.@¨f×.@Ñ.@ÀÐ.PÈÒ.PÑPÐRUÑUØ"×.Ñ.¨sÑ2ô5à�M‰M˜$ÔØˆF�N‰N˜GÑ$Ø×"Ñ" 1 a¨Ô+Ø×$Ñ$ Q¨¨4Ô0Ø×ÑÖ!ð3	"ð4 	×ÑÕr0   N)rB   rC   rD   rE   rb   r   r`   rX   r]   r_   rf   r$   r:   rF   r0   r/   rH   rH   T   s;   „ ñð '€IØ�2‘€JØ�r‘'€KØ€IØ€Hð	€Kò5ó%r0   rH   c                  ó8  — ddl m}  ddlm}  | d|j                  ¬«      }|j                  dd«       |j                  \  }}|j                  |dz  |d	t        z  z
  d
«       dt        z  x}}dt        z  x}}dt        z  }	dt        z  }
d}t        d|d«      j                  |||«       ||
z  }|dz  }t        d|dd¬«      j                  |||«       ||
z  }|dz  }t        d|d«      j                  |||«       ||
z  }|dz  }t        d|dd¬«      j                  |||«       ||
z  }|dz  }t        d|dd¬«      j                  |||«       ||
z  }|dz  }t        d|ddd¬«      j                  |||«       |j                  «        |j                  «        y)z
Test this.r   )ÚCanvas)Ú	pagesizesz
labels.pdf)ÚpagesizeÚ	Helveticaé   r2   é   zSample LTO labelsé   r
   g333333@iÒ  ÚRLÚ3r   rJ   )r   T)rW   )r   rW   N)Úreportlab.pdfgen.canvasrv   Úreportlab.librw   ÚA4rm   rn   r   r	   r:   rH   ÚshowPageÚsave)rv   rw   r=   Úwidthr   ÚxposÚxorigÚyposÚyorigÚcolwidthÚ
lineheightÚcounts               r/   ÚtestrŒ   �   s«  € å.Ý'á�L¨9¯<©<Ô8€FØ
‡N�N�; Ô#Ø—l‘l�O€UˆFØ
×Ñ˜U 3™Y¨¨q´©t©Ð5HÔIØ”r‘6Ð€Dˆ5Ø”r‘6Ð€Dˆ5Ø”B‰w€HØ”r‘€JØ€EÜ��u˜cÓ"×)Ñ)¨&°$¸Ô=ØˆJÑ€DØ	ˆQ�J€EÜ��u˜cØô ß &¡ v¨t°TÔ :ØˆJÑ€DØ	ˆQ�J€EÜ�T˜5 #Ó&×-Ñ-¨f°d¸DÔAØˆJÑ€DØ	ˆQ�J€EÜ�T˜5 #Ø!ô#ß#)¡6¨&°$¸Ô#=ØˆJÑ€DØ	ˆQ�J€EÜ�T˜5 #Ø ô"ß"(¡&¨°°tÔ"<ØˆJÑ€DØ	ˆQ�J€EÜ�T˜5 #Ø!¨4ô1ß17±¸ÀÀdÔ1KØ
‡O�OÔØ
‡K�K…Mr0   Ú__main__N)Ú!reportlab.graphics.barcode.code39r   r€   r   Úreportlab.lib.unitsr   Ústringr   r   r   r	   rH   rŒ   rB   rF   r0   r/   ú<module>r‘      sK   ðõ 9Ý  Ý "ß ;ôI�:ô IôVG�|ô GòR#ðJ ˆzÒÙ…Fð r0   