
    kf                         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             dS dS )    )
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dS )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?
    N1Fc                    t          || j                  | _        || _        t	          |          dk    s|t
          t          z   vrt          d|z            |st	          |          dk    s|                                st          d|z            |t          |pd          
                    dt	          |          z
            z   dd         d|}t	          |          dk    rt          d	|d
|d
|d          || _        t          j        | || j        | j        | j        | j        | j        | j        d|
  
         dS )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/nettyfy-visnx/env/lib/python3.11/site-packages/reportlab/graphics/barcode/lto.pyr&   zBaseLTOLabel.__init__   sg     +t'9::LLA>>>3g=>>> 	=c&kkAoo.."" .2V;<<<"S1%5%5%;%;AFO%L%LLbqbQQQ"7$u::??*#)66666777< = = =
D!"&.&*k%)%6 $#'?#'?"&%-		/ 		/ 		/ 		/ 		/ 		/    c                 |   |                                  |                    ||           | j        rB|                    | j                   |                    dd| j        | j        | j                   t          j	        | || j        | j
        z
  dz  | j        | j        z
             |                                 dS )z$Draws the LTO label onto the canvas.r          @N)	saveState	translater   setLineWidth	roundRect
LABELWIDTHLABELHEIGHT
LABELROUNDr   drawOnCODENOMINALWIDTHr   restoreState)r,   canvasxys       r1   r<   zBaseLTOLabel.drawOnD   s    A; 	),,,Q() ) ) 	$ ?4+@@#E*4;6	8 	8 	8 	r2   )r   Nr   NFN)__name__
__module____qualname____doc__r   r9   r:   r;   r'   r=   r   r(   r)   r*   r+   r&   r<    r2   r1   r	   r	   	   s          rJ(KJI{2IMB;LGl"Jl"J """ %#''/ '/ '/ '/R    r2   r	   c                   B    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d
S )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|R i | dS )zp
        Initializes the label.

        colored : boolean to determine if blocks have to be colorized.
        coloredFr0   N)rW   r:   BLOCKHEIGHTr	   r&   )r,   argskwargss      r1   r&   zVerticalLTOLabel.__init__h   si     !),DLy!! DL $ 01A A}d4T444V44444r2   c                    t                               | |||           |                                 |                    | j                   |                    ddd           |                    ||           | 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	        z  z   d           | j        rq|	                                r] |j        t!          t"          | j        t'          |	                   t#          j        ddd                                                      n|                    ddd           |                    dd| j	        | j        d           |                    | j	         |j        |	g|R  z   dz  | j        dz             |                    d            |j        |  |                    ddd           |                    dd|	           |                                 |                                 dS )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%   rW   isdigitsetFillColorRGBgetattrr   COLORSCHEMEintColorrgbrectrX   stringWidthrotatesetFontdrawCentredStringr>   )
r,   r?   r@   rA   xblocksifontsizenewfontparts
             r1   r<   zVerticalLTOLabel.drawOnv   s   D"	 	 	 	DN+++  Aq)))A?DM$/$ABCGt}%% 	" 	"A>LT4nGT]Q&''z!""~&t,z!}Wa&78!<<<| 0 0&&040@T0K06Q10E0E)G )GGJsuuN N N &&q!Q///KK1dot/?dKKKKdo.@f.@.P.P.P.PPRUU".s25 5 5MM$FNG$$""1a+++$$Q4000!!!!r2   N)rB   rC   rD   rE   rb   r   r`   rX   r]   r_   rf   r&   r<   rF   r2   r1   rH   rH   T   sf          'I2Jr'KIH	K5 5 5% % % % %r2   rH   c                     ddl m}  ddlm}  | d|j                  }|                    dd           |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          	                    |||           ||
z  }|dz  }t          d|dd          	                    |||           ||
z  }|dz  }t          d|d          	                    |||           ||
z  }|dz  }t          d|dd          	                    |||           ||
z  }|dz  }t          d|dd          	                    |||           ||
z  }|dz  }t          d|ddd          	                    |||           |                                 |                                 dS )z
Test this.r   )Canvas)	pagesizesz
labels.pdf)pagesize	Helvetica   r4      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               r1   testr      s9   ......''''''VL9<888F
NN;###lOUF
U3Yqt5HIIIr6D5r6D5BwHrJEuc""))&$===JD	QJEuc      &vtT : : :JD	QJET5#&&--fdDAAAJD	QJET5#!# # ##)6&$#=#=#=JD	QJET5# " " ""(&t"<"<"<JD	QJET5#!41 1 117d1K1K1K
OO
KKMMMMMr2   __main__N)!reportlab.graphics.barcode.code39r   r   r   reportlab.lib.unitsr   stringr   r   r    r	   rH   r   rB   rF   r2   r1   <module>r      s    9 8 8 8 8 8             " " " " " " ; ; ; ; ; ; ; ;I I I I I: I I IVG G G G G| G G GR# # #J zDFFFFF r2   