
    BPc8(                         d Z ddlmZmZmZmZ ddlZddlmZmZm	Z	 d Z
d Zd Z G d d	ej                  Zed
k    r e                                             dS dS )z
This extension allows you to draw a polar grid in Inkscape.
There is a wide range of options including subdivision and labels.
    )coslogpisinN)GroupCircleTextElementc           	          |                     t          t          |          t          |          t          |                               }dt          |          |d|_        ||_        dS )zDraw an SVG circle)cxcyr#000000strokezstroke-widthfillN)addr   strstylelabel)r   r   r   widthr   nameparentcircles           ,/usr/share/inkscape/extensions/grid_polar.pydraw_circler      sV    ZZ#b''c"ggQ@@@AAF'UTRRFLFLLL    c                     |                     t          j                              }dt          |          dd|_        d                    | |||          |_        ||_        dS )zDraw an SVG liner   noner   zM {},{} L {},{}N)r   inkexPathElementr   r   formatpathr   )x1y1x2y2r   r   r   lines           r   	draw_liner(   &   sY    ::e'))**D%s5zz6RRDJ!((RR88DIDJJJr   c           
          |                     t          t          |           t          |                              }dddt          |          dz   ddddd	d
	|_        ||_        ||_        dS )zDraw a centered label)xycentertopmiddlepxz1.0r   normalr   )	z
text-alignzvertical-alignztext-anchorz	font-sizezfill-opacityr   zfont-weightz
font-styler   N)r   r	   r   r   textr   )r*   r+   string	font_sizer   r   r   s          r   
draw_labelr4   .   st    JJ{SVVs1vv66677E^^d*
 
EK EJEKKKr   c                       e Zd Zd Zd ZdS )	GridPolarc                    |                     d           |                     dt          dd           |                     dt          dd           |                     d	t          d
d           |                     dt          j        dd           |                     dt          dd           |                     dt          dd           |                     dt          dd           |                     dt          dd           |                     dt          dd           |                     dt          dd           |                     dt          dd            |                     d!t          dd"           |                     d#t          d$d%           |                     d&d'd()           |                     d*t          d+d,           |                     d-t          dd.           d S )/Nz--tabz--r_divs   zCircular Divisions)typedefaulthelpz--dr2   zCircular Division Spacingz--r_subdivs   zSubdivisions per Major divz--r_logFzLogarithmic subdivz--r_divs_th   zMajor Line thicknessz--r_subdivs_th   zMinor Line thicknessz--a_divs   zAngle Divisionsz--a_divs_cent   zAngle Divisions at Centrez--a_subdivszAngcular Subdivisionsz--a_subdivs_centzAngular Subdivisions endz--a_divs_thzMajor Angular thicknessz--a_subdivs_thzMinor Angular thicknessz--c_dot_diag      @zDiameter of Centre Dotz
--a_labelsr   zThe kind of labels to apply)r:   r;   z--a_label_size   zPixel size of the labelsz--a_label_outsetzLabel Radial outset)add_argumentintfloatr   Boolean)selfparss     r   add_argumentszGridPolar.add_argumentsA   s   '"""*3@TUUU1L 	 	
 	
 	
 	Q5Q 	 	
 	
 	
 	EM5?S 	 	
 	
 	
 	q7M 	 	
 	
 	
 	5!:P 	 	
 	
 	
 	*3ARSSS#q7R 	 	
 	
 	
 	Q5L 	 	
 	
 	
 	S!:T 	 	
 	
 	
 	q7P 	 	
 	
 	
 	5!:S 	 	
 	
 	
 	s9Q 	 	
 	
 	
 	&/L 	 	
 	
 	
 	39S 	 	
 	
 	
 	UB=R 	 	
 	
 	
 	
 	
r   c                    | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j                  dz             | j        _        | j                             t          | j        j	                  dz             | j        _	        | j                             t          | j        j
                  dz             | j        _
        | j                             t          | j        j                  dz             | j        _        t          j        d                    | j                            }| j         j        j        \  }}|j                            ||           | j        j        }dt&          z  | j        j        z  }| j        j        |z  }t-          d| j        j        dz             D ]S}t/          ||z  dd| j        j        ddt          |          z   dz   t          ||z            z   |           | j        j        rt-          d| j        j                  D ]h}t/          ||z  dt5          || j        j                  z
  |z  z
  dd| j        j        dd	t          |          z   d
z   t          |          z   |           it-          d| j        j                  D ]]}t/          ||z  ||z  | j        j        z  z
  dd| j        j        dd	t          |          z   dz   t          ||z            z   |           ^U| j        j        | j        j        k    rtt-          d| j        j                  D ]W}t9          dd|t;          ||z            z  |t=          ||z            z  | j        j        dt          |          z   |           XnMt-          d| j        j                  D ]W}t9          dd|t;          ||z            z  |t=          ||z            z  | j        j        dt          |          z   |           Xdt&          z  | j        j        z  }t-          d| j        j                  D ]}t9          |t;          ||z  t&          dz  z             z  |t=          ||z  t&          dz  z             z  |t;          ||z  t&          dz  z             z  |t=          ||z  t&          dz  z             z  | j        j        dt          |          z   |           | j        j        dk    rt-          d| j        j                  D ]}t-          d| j        j                  D ]}||z  ||z  | j        j        z  z
  t&          dz  z   }	t9          || j        j         z  t;          |	          z  || j        j         z  t=          |	          z  |t;          |	          z  |t=          |	          z  | j        j        dt          |          z   |           | j        j	        dk    r"t/          | j        j	        dz  ddddd|           | j        j!        dk    r|| j        j        z   }
| j        j
        }d|z  }t-          d| j        j                  D ]}tE          t;          ||z  t&          dz  z             |
z  t=          ||z  t&          dz  z             |
z  |dz  z   t          |dz  | j        j        z            |dt          |          z   |           |S )Nr/   z!GridPolar:R{0.r_divs}:A{0.a_divs}r>   r?   r   r   MajorDivCirclez:RMinorDivCirclez:LogRadialGridlineg       @RadialMinorGridliner   	CentreDotdegg\(\?ih  Label)#svgunittouur   optionsdr	r_divs_thr_subdivs_th	a_divs_tha_subdivs_th	c_dot_diaa_label_sizea_label_outsetr   newr!   	namedviewr,   	transformadd_translater   a_divs_centr_divsranger   r_log	r_subdivsr   a_divsr(   r   r   	a_subdivsa_subdivs_centa_labelsr4   )rG   gridpos_xpos_yrU   dthetarmaxijanglelabel_radius
label_sizenumeral_sizes                r   generatezGridPolar.generatep   s   (++C,@,@4,GHH!%!2!23t|7M3N3NQU3U!V!V$(H$5$5)**T1%
 %
! "&!2!23t|7M3N3NQU3U!V!V$(H$5$5)**T1%
 %
! "&!2!23t|7M3N3NQU3U!V!V$(H$5$5)**T1%
 %
! '+h&7&7+,,t3'
 '
#
 y<CCDLQQRR+2$$UE222\_FT\-- 	 |"R' q$,-122 "	 "	AB& 3q66)D03q2v;;>   |! q$,"899  ABs1dl&<=== 1(3q661F:SVVC
 
 
 
 q$,"899 	 	ABR$,*@!@@1(3q661D83q2v;;F   	 L4<#;;;1dl122 	 	3q6z??*3q6z??*L*$s1vv-   	 4<+    QZ(QZ(L*$s1vv-    B,,  4<&    QZ"s(2333QZ"s(23333q6zBH45553q6zBH4555L*$s1vv-    <!A%%1dl122  q$,"899  AF
QZ$,2H%HH2PS8S  T\883u::ET\883u::Es5zz)s5zz)1-A6   	 <!Q&&&,aAy+t   < E))$,"==L2Jz!  4<&    F
R#X-.."#F
R#X-..="S()C$,"5566c!ff$	 	 	 	 r   N)__name__
__module____qualname__rI   ru    r   r   r6   r6   @   s8        -
 -
 -
^Z Z Z Z Zr   r6   __main__)__doc__mathr   r   r   r   r   r   r   r	   r   r(   r4   GenerateExtensionr6   rv   runry   r   r   <module>r      s   ( 
 # " " " " " " " " " " "  , , , , , , , , , ,      $J J J J J' J J JZ zIKKOO r   