
    BPcw3                         d Z ddlmZ ddlZddlmZmZmZ d Zd Z G d dej	                  Z
ed	k    r e
                                             dS dS )
a	  
This extension allows you to draw a Cartesian grid in Inkscape.

There is a wide range of options including subdivision, subsubdivions and
logarithmic scales. Custom line widths are also possible.

All elements are grouped with similar elements (eg all x-subdivs)
    )logN)GroupPathElement	Rectanglec                     |                     t                                }dt          |          dd|_        d                    | |||          |_        ||_        dS )zDraw an SVG line#000000nonestrokezstroke-widthfillzM {},{} L {},{}N)addr   strstyleformatpathlabel)x1y1x2y2widthnameparentlines           0/usr/share/inkscape/extensions/grid_cartesian.py	draw_liner   #   sT    ::kmm$$D%s5zz6RRDJ!((RR88DIDJJJ    c           
          |                     t          t          |           t          |          t          |          t          |                              }dt          |          |d|_        ||_        dS )zDraw an SVG Rectangle)xyr   heightr   r
   N)r   r   r   r   r   )	r   r    whr   r   r   r   rects	            r   	draw_rectr%   +   s^    ::i#a&&CFF#a&&QPPPQQD%s5zz4PPDJDJJJr   c                       e Zd Zd Zd ZdS )GridCartesianc                 |   |                     dt          d           |                     dd           |                     dd           |                     d	t          d
           |                     dt          d           |                     dd           |                     dt          d           |                     dt          j        d           |                     dt          d           |                     dt          d           |                     dt          d           |                     dt          d           |                     dt          d           |                     dd           |                     dt          d           |                     dt          d           |                     dd           |                     dt          d           |                     d t          j        d           |                     d!t          d           |                     d"t          d           |                     d#t          d           |                     d$t          d           |                     d%t          d           |                     d&d           d S )'Nz--border_thg      ?)typedefaultz--border_th_unitpx)r*   z--tabx_tabz--x_divs   z--dxg      @z	--dx_unitmmz--x_subdivs   z--x_logFz--x_subsubdivsz--x_half_freqz--x_divs_thz--x_subdivs_thg      ?z--x_subsubdivs_thg333333?z--x_div_unitz--y_divs   z--dyz	--dy_unitz--y_subdivsz--y_logz--y_subsubdivsz--y_half_freqz--y_divs_thz--y_subdivs_thz--y_subsubdivs_thz--y_div_unit)add_argumentfloatintinkexBoolean)selfparss     r   add_argumentszGridCartesian.add_arguments3   s   -eSAAA,d;;;'7333*3:::&uc:::+t444-c1===)%-GGG*a@@@/Q???-eSAAA*DDD-E3GGG.$777*3:::&uc:::+t444-c1===)%-GGG*a@@@/Q???-eSAAA*DDD-E3GGG.$77777r   c                 ,   | j                             t          | j        j                  | j        j        z             | j        _        | j                             t          | j        j                  | j        j        z             | j        _        | j                             t          | j        j                  | j        j	        z             | j        _        | j                             t          | j        j
                  | j        j	        z             | j        _
        | j                             t          | j        j                  | j        j	        z             | j        _        | j                             t          | j        j                  | j        j        z             | j        _        | j                             t          | j        j                  | j        j        z             | j        _        | j                             t          | j        j                  | j        j        z             | j        _        | j                             t          | j        j                  | j        j        z             | j        _        | j        j        | j        j        z  }| j        j        | j        j        z  }t)          j        d                    | j                            }| j         j        j        \  }}|j                            ||dz  z
  ||dz  z
             |                    t)          j        d                    }|                    t)          j        d                    }| j        j        dk    r'|                    t)          j        d                    }| j        j        dk    r'|                    t)          j        d                    }	| j        j        dk    r'|                    t)          j        d                    }
| j        j        dk    r'|                    t)          j        d	                    }tA          d
d
||| j        j        dd|           | j        j        }| j        j        }tC          d
| j        j                  D ]U}|d
k    rItE          | j        j        |z  d
| j        j        |z  || j        j        dt          |          z   |           | j        j#        rtC          d|          D ]}|dk    r~tE          | j        j        |tI          ||          z   z  d
| j        j        |tI          ||          z   z  || j        j
        dt          |          z   dz   t          |          z   |           tC          d|          D ]}|| j        j%        k    s	|dz  d
k    r|dz  d
k    r|| j        j&        k    r|dz   }n|}tE          | j        j        |tI          ||tO          |          z  z   |          z   z  d
| j        j        |tI          ||tO          |          z  z   |          z   z  || j        j        dt          |          z   dz   t          |          z   dz   t          |          z   |	           tC          d
|          D ]E}|d
k    rtE          | j        j        ||tO          |          z  z   z  d
| j        j        ||tO          |          z  z   z  || j        j
        dt          |          z   dz   t          |          z   |           tC          d|          D ]}tE          | j        j        |||z  |z   tO          |          |z  z  z   z  d
| j        j        |||z  |z   tO          |          |z  z  z   z  || j        j        dt          |          z   dz   t          |          z   dz   t          |          z   |	           GW| j        j        }| j        j        }tC          d
| j        j                  D ]k}|d
k    rItE          d
| j        j        |z  || j        j        |z  | j        j        dt          |          z   |           | j        j(        rtC          d|          D ]}|dk    rtE          d
| j        j        |dz   tI          ||          z
  z  || j        j        |dz   tI          ||          z
  z  | j        j        dt          |          z   dz   t          |          z   |
           tC          d|          D ]}|| j        j&        k    s	|dz  d
k    r|dz  d
k    r|| j        j&        k    r|dz   }n|}tE          d
| j        j        |dz   tI          ||tO          |          z  z   |          z
  z  || j        j        |dz   tI          ||tO          |          z  z   |          z
  z  | j        j        dt          |          z   dz   t          |          z   dz   t          |          z   |           
tC          d
| j        j                  D ]E}|d
k    rtE          d
| j        j        ||tO          |          z  z   z  || j        j        ||tO          |          z  z   z  | j        j        dt          |          z   dz   t          |          z   |
           tC          d|          D ]}tE          d
| j        j        |||z  |z   tO          |          |z  z  z   z  || j        j        |||z  |z   tO          |          |z  z  z   z  | j        j        dt          |          z   dz   t          |          z   dz   t          |          z   |           Gm|S )Nz%GridCartesian:X{0.x_divs}:Y{0.y_divs}g       @MajorXGridlinesMajorYGridlinesr/   MinorXGridlinesSubMinorXGridlinesMinorYGridlinesSubMinorYGridlinesr   r	   Border	MajorXDiv	MinorXDiv:   SubminorXDiv	MajorYDiv	MinorXYiv))svgunittouur   options	border_thborder_th_unitdxdx_unit	x_divs_th
x_div_unitx_subdivs_thx_subsubdivs_thdydy_unit	y_divs_th
y_div_unity_subdivs_thy_subsubdivs_thy_divsx_divsr   newr   	namedviewcenter	transformadd_translater   	x_subdivsx_subsubdivs	y_subdivsy_subsubdivsr%   ranger   x_logr   x_half_freqy_half_freqr2   y_log)r6   ymaxxmaxgridpos_xpos_ymajglxmajglyminglxmminglxminglymminglysdssdijkssd2s                     r   generatezGridCartesian.generateN   s
   !%!2!2&''$,*EE"
 "
 (++C,@,@4<CW,WXX!%!2!2&''$,*AA"
 "
 %)H$5$5)**T\-DD%
 %
! (,x'8'8,--0GG(
 (
$ (++C,@,@4<CW,WXX!%!2!2&''$,*AA"
 "
 %)H$5$5)**T\-DD%
 %
! (,x'8'8,--0GG(
 (
$
 |!44|!44
 y@GGUUVV+2$$UTCZ%79KLLL %)$56677%)$56677 <!A%%XXei(9::;;F <$q((hhuy)=>>??G <!A%%XXei(9::;;F <$q((hhuy)=>>??Gq$dl4fh	
 	
 	

 \#l'q$,-.. E	 E	A1uuLOa'LOa'L*#a&&(   |! 9q"  A1uu! LOq3q"::~> LOq3q"::~>  L5'#a&&036Q?"   #1c]]  !999EQJJ #a! !DL$< < <'*Qw'*% $1s1q5;;;NPR7S7S3S T ! $1s1q5;;;NPR7S7S3S T $ $ < .Q 7# =A F LsSTvv U '  B q"  AA! LOq1uRyy=/@A LOq1uRyy=/@A  L5'#a&&036Q?"   #1c]] 	 	! LOqAGaKE"IIPSO3T/TU LOqAGaKE"IIPSO3T/TU  L8*SVV3c9CFFBSH3q66Q#   	4 \#l'q$,-.. F	 F	A1uuLOa'LOa'L*#a&&(   |! :q"    A1uu! LOq1us1bzz/AB  LOq1us1bzz/AB L5'#a&&036Q?"   #1c]]  !999EQJJ #a! !DL$< < <'*Qw'*% ! $#$q53q1uT{{?/BB+G+G#G!I $ $#$q53q1uT{{?/BB+G+G#G!I $ < .Q 7# =A F LsSTvv U '
 
 
 D q$,"899  AA! LOq1uRyy=/@A  LOq1uRyy=/@A L5'#a&&036Q?"   #1c]] 	 	! LOqAGaKE"IIPSO3T/TU  LOqAGaKE"IIPSO3T/TU L8*SVV3c9CFFBSH3q66Q#   	2 r   N)__name__
__module____qualname__r8   rz    r   r   r'   r'   2   s7        8 8 86W W W W Wr   r'   __main__)__doc__mathr   r4   r   r   r   r   r%   GenerateExtensionr'   r{   runr~   r   r   <module>r      s   (         / / / / / / / / / /    s s s s sE+ s s sl zMOO r   