
    Q?h                         S SK Jr  S SKJr  S SKJr  S SKJrJr	   " S S\5      r
 " S S\
5      rS	 r\S
:X  a  \" 5         gg)    )
Standard39)colors)cm)ascii_uppercasedigitsc                       \ rS rSrSrS\-  rS\-  rS\-  rSr	S\-  r
S\-  rS	\-  r\rS
\-  rS
\-  r      SS jrS rSrg)BaseLTOLabel	   a  
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      @gQkw@g(\?g_vO?
   Nc                    [        X`R                  5      U l        X@l        [	        U5      S:w  d  U[
        [        -   ;  a  [        SU-  5      eU(       d  [	        U5      S:  d  UR                  5       (       d  [        SU-  5      eU[        U=(       d    S5      R                  S[	        U5      -
  5      -   SS < SU< 3n[	        U5      S:w  a  [        S	U< S
U< S
U< S35      eXpl        [        R                  " U UU R                  U R                  U R                  U R                   U R"                  U R$                  SUS9
  g)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           P/var/www/html/env/lib/python3.13/site-packages/reportlab/graphics/barcode/lto.pyr%   BaseLTOLabel.__init__   s     +'9'9:LA>>3g=>>c&kAo..""2V;<<"S1%5%;%;AFO%LLbqQ"$u:?#)67< = =
D!"&..&*kk%)%6%6 $#'??#'??"&%-		/    c                    UR                  5         UR                  X#5        U R                  (       aN  UR                  U R                  5        UR	                  SSU R
                  U R                  U R                  5        [        R                  " U UU R
                  U R                  -
  S-  U R                  U R                  -
  5        UR                  5         g)z$Draws the LTO label onto the canvas.r          @N)	saveState	translater   setLineWidth	roundRect
LABELWIDTHLABELHEIGHT
LABELROUNDr   drawOnCODENOMINALWIDTHr   restoreState)r+   canvasxys       r0   r<   BaseLTOLabel.drawOnD   s    ;;,Q(() 	$ ??4+@+@@#E**4;;6	8 	r2   )r   r   r$   ) N1NFN)__name__
__module____qualname____firstlineno____doc__r   r9   r:   r;   r&   r=   r   r'   r(   r)   r*   r%   r<   __static_attributes__ r2   r0   r	   r	   	   s{     rJ(KJI{2IMB;LGl"Jl"J """ %#''/Rr2   r	   c                   H    \ rS rSrSrSrS\-  rS\-  rSr	Sr
SrS	 rS
 rSrg)VerticalLTOLabelT   zL
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                     SU;   a  US   U l         US	 OSU l         U R                  U R                  -
  US'   [        R                  " U /UQ70 UD6  g)zX
Initializes the label.

colored : boolean to determine if blocks have to be colorized.
coloredFr/   N)r]   r:   BLOCKHEIGHTr	   r%   )r+   argskwargss      r0   r%   VerticalLTOLabel.__init__h   sZ     !),DLy! DL $ 0 01A1A A}d4T4V4r2   c                 .   [         R                  U UUU5        UR                  5         UR                  U R                  5        UR                  SSS5        UR                  X#5        U R                  U R                  U R                  -  -
  S-  n[        U R                  5       GH  nU R                  u  pgU R                  nXPR                  S-
  :X  a  U R                  US n	Uu  pgUS-  nXg4nOU R                  U   n	UR                  5         UR                  XEU R                  -  -   S5        U R                  (       an  U	R                  5       (       aY  UR                  " [!        ["        U R$                  ['        U	5         ["        R(                  " SSS5      5      R+                  5       6   OUR                  SSS5        UR-                  SSU R                  U R.                  SS9  UR                  U R                  UR0                  " U	/UQ76 -   S-  U R.                  S-  5        UR3                  S5        UR4                  " U6   UR                  SSS5        UR7                  SSU	5        UR9                  5         GM     UR9                  5         g)z5Draws some blocks around the identifier's characters.r   r4   r   NT)fillg     V@)r	   r<   r5   r7   	LINEWIDTHsetStrokeColorRGBr6   r9   NBBLOCKS
BLOCKWIDTHrange	LABELFONTr$   r]   isdigitsetFillColorRGBgetattrr   COLORSCHEMEintColorrgbrectr^   stringWidthrotatesetFontdrawCentredStringr>   )
r+   r?   r@   rA   xblocksifontsizenewfontparts
             r0   r<   VerticalLTOLabel.drawOnv   s&   D"	 	DNN+  Aq)??DMM$//$ABCGt}}%A>>LTnnG]]Q&'zz!"~&,zz!}W&78!<||&&040@0@T0K06Q10E)GGJsuN &&q!Q/KK1doot/?/?dKKdoof.@.@.P.PPRUU"..s25MM$NNG$""1a+$$Q40!3 &4 	r2   r]   N)rE   rF   rG   rH   rI   ri   r   rg   r^   rd   rf   rm   r%   r<   rJ   rK   r2   r0   rM   rM   T   s;     'I2Jr'KIH	K5%r2   rM   c                     SSK Jn   SSKJn  U " SUR                  S9nUR                  SS5        UR                  u  p4UR                  US-  US	[        -  -
  S
5        S[        -  =pVS[        -  =pxS[        -  n	S[        -  n
Sn[        SUS5      R                  X%U5        Xz-  nUS-  n[        SUSSS9R                  X%U5        Xz-  nUS-  n[        SUS5      R                  X%U5        Xz-  nUS-  n[        SUSSS9R                  X%U5        Xz-  nUS-  n[        SUSSS9R                  X%U5        Xz-  nUS-  n[        SUSSSS9R                  X%U5        UR                  5         UR                  5         g)z
Test this.r   )Canvas)	pagesizesz
labels.pdf)pagesize	Helvetica   r4      zSample LTO labels   r   g333333@i  RL3r   rP   )r   Tr}   )r   r]   N)reportlab.pdfgen.canvasr   reportlab.libr   A4rt   ru   r   r	   r<   rM   showPagesave)r   r   r?   widthr   xposxorigyposyorigcolwidth
lineheightcounts               r0   testr      s   .'L9<<8F
NN;#llOU
U3Yqt5HIr6Dr6DBwHrJEuc"))&=D	QJEuc  &vT :D	QJET5#&--fDAD	QJET5#!##)6&#=D	QJET5# ""(&t"<D	QJET5#!4117d1K
OO
KKMr2   __main__N)!reportlab.graphics.barcode.code39r   r   r   reportlab.lib.unitsr   stringr   r   r   r	   rM   r   rE   rK   r2   r0   <module>r      sK    9   " ;I: IVG| GR#J zF r2   