
    Kwg                         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      @gQkw@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           U/var/www/horilla/myenv/lib/python3.12/site-packages/reportlab/graphics/barcode/lto.pyr$   zBaseLTOLabel.__init__   s     +t'9'9:LA>>3g=>>c&kAo.."2V;<<"S1%5%;%;AFO%LLbqQ"$u:?#)67< = =
D!"&..&*kk%)%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{2IM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     !),DLy! DL $ 0 01A1A A}d4T4V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"	 	DNN+  Aq)A??DMM$//$ABCGt}}% 	"A>>LT4nnGT]]Q&'zz!"~&t,zz!}Wa&78!<||&&&040@0@T0K06Q10E)GGJsuN &&q!Q/KK1doot/?/?dKKdoo.@f.@.@.P.PPRUU"..s25MM$FNNG$""1a+$$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   .'L9<<8F
NN;#llOUF
U3Yqt5HIr6D5r6D5BwHrJEuc"))&$=JD	QJEuc  &vtT :JD	QJET5#&--fdDAJD	QJET5#!##)6&$#=JD	QJET5# ""(&t"<JD	QJET5#!4117d1K
OO
KKMr0   __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   