
    eQ                     h    d dl ZddlmZ ddlmZ ddlmZ ddlmZm	Z	 ddl
m
Z
 d	gZ G d
 d	e
      Zy)    N   )	functions)getConfigOption)Point)QtCoreQtGui   )UIGraphicsItemGridItemc                   >    e Zd ZdZd
dZd Zd ZddZd Zd Z	d	 Z
y)r   z
    **Bases:** :class:`UIGraphicsItem <pyqtgraph.UIGraphicsItem>`
    
    Displays a rectangular grid of lines indicating major divisions within a coordinate system.
    Automatically determines what divisions to use.
    c                     t        j                  |        i | _        | j                  |       | j	                  |       | j                  g dg d       y )N)NNN)xy)r
   __init__optssetPen
setTextPensetTickSpacing)selfpentextPens      B/usr/lib/python3/dist-packages/pyqtgraph/graphicsItems/GridItem.pyr   zGridItem.__init__   sF    %
 	C 04FG    c                     |i k(  r6|dk(  s|dk(  r,t        j                  t        d            | j                  d<   n"t        j                  |i || j                  d<   d| _        | j                          y)z"Set the pen used to draw the grid. default
foregroundr   NfnmkPenr   r   pictureupdater   argskwargss      r   r   zGridItem.setPen   s^    R<TRZ4<+?!xx(EFDIIe!xx88DIIer   c                    |i k(  r6|dk(  s|dk(  r,t        j                  t        d            | j                  d<   n7|dk(  rd| j                  d<   n"t        j                  |i || j                  d<   d| _        | j                          y)z#Set the pen used to draw the texts.r   r   r   r   NNr   r$   s      r   r   zGridItem.setTextPen*   ss    R<TRZ4<+?#%88OL,I#JDIIi w'+		)$')xx'@'@		)$r   Nc                    |xs | j                   d   d   |xs | j                   d   d   f| j                   d<   t        | j                   d   D cg c]  }t        |       c}      | _        d| _        | j                          yc c}w )a  
        Set the grid tick spacing to use.

        Tick spacing for each axis shall be specified as an array of
        descending values, one for each tick scale. When the value
        is set to None, grid line distance is chosen automatically
        for this particular level.

        Example:
            Default setting of 3 scales for each axis:
            setTickSpacing(x=[None, None, None], y=[None, None, None])

            Single scale with distance of 1.0 for X axis, Two automatic
            scales for Y axis:
            setTickSpacing(x=[1.0], y=[None, None])

            Single scale with distance of 1.0 for X axis, Two scales
            for Y axis, one with spacing of 1.0, other one automatic:
            setTickSpacing(x=[1.0], y=[1.0, None])
        tickSpacingr   r	   N)r   maxlen
grid_depthr"   r#   )r   r   r   ss       r   r   zGridItem.setTickSpacing8   s}    * %&$D=)A!)D$%$D=)A!)D$F		-  tyy/GH!s1vHI Is   Bc                 <    t        j                  |        d | _        y r(   )r
   viewRangeChangedr"   )r   s    r   r0   zGridItem.viewRangeChangedV   s    ''-r   c                     | j                   | j                          |j                  t        j                  dd      | j                          y )Nr   )r"   generatePicturedrawPicturer   QPointF)r   poptwidgets       r   paintzGridItem.paint\   s7    
 <<  "	fnnQ*DLL9r   c                 4   t        j                         | _        t        j                         }|j	                  | j                         | j                         j                         }| j                         | j                         f}|j                         |j                         g}| j                         }t        j                  |j                         |j                         g      }t        j                  |j!                         |j#                         g      }g }|d   |d   kD  r|d   }	|d   |d<   |	|d<   d d g}
t%        | j&                  dz
  dd      D ]b  }||z
  }d|z  }dt        j(                  t        j*                  t        j,                  ||z              dz         z  }t%        dd      D ]*  }| j.                  d   |   }	 ||   ||   ||<   ||   |
|<   , t        j(                  ||z        |z  }t        j2                  ||z        |z  }||z
  }||z  dz   }t%        dd      D ]  }|t5        | j.                  d   |         k\  r#||   |
|   k  r/||   ||   z  }t7        t9        j:                  d|d	z
  z  dd
            }| j.                  d   }| j.                  d   j=                         }|j?                  |       |jA                  |       | j.                  d   }|B| j.                  d   j=                         }|j?                  |dz         |jA                  |       |dz   dz  }t%        dt7        ||               D ]a  }	|jC                  d       |jE                  |       t        j                  ddg      }t        j                  ddg      }||   |	||   z  z   ||<   ||   ||<   ||   ||<   ||   ||<   ||   tG        ||   ||         k  s||   tI        ||   ||         kD  r|jK                  tM        jN                  |d   |d         tM        jN                  |d   |d                |dk  s||dk(  r|d   |d   z   }	|d   |d   dz  z   }n|d   |d   d	z  z   }	|d   |d   z   }|jQ                  tM        jN                  |	|      d||   z  f       d  e | jS                         }|jU                  t9        jV                  |             t5        |      dkD  ruj?                  dz         |jE                  t        jX                  |             |D ]8  }|j[                  |d         t]        dd      z   }	|j_                  |	|d          : |ja                          y # t0        $ r Y w xY w)Nr	   g      $@g      ?r   r   r*         2   r   r   Tg        g       @z%g)1r   QPicturer"   QPainterbegingetViewWidgetrect
pixelWidthpixelHeightwidthheightboundingRectnparraylefttoprightbottomranger-   floorlog10absr   
IndexErrorceilr,   intr    clip_scalarcolorsetAlphasetColorsetCosmeticr   minr+   drawLiner   r4   appenddeviceTransformsetWorldTransforminvertQTransformQPenmapr   drawTextend) r   r5   vrunitdimlvrulbrtextsr   lastdidistnlTargetdaxtsul1br1nlpplclinePen	lineColorr   	textColorbxp1p2r   trts                                    r   r2   zGridItem.generatePicturek   sZ   ~~'NN	!&&( $"2"2"44xxz299;'!XXsxxz3779-.XXsyy{CJJL12a52a5=1AqEBqEBqEtt*B3 :	JAb5DAvHrxxX)> ? CDDAAaj "YY}-b1!u( "1" bEb	" ((26"Q&C''"q&/A%Cs7D(c!BAaj )JDIIm4R899R559$"g2&qCE{Ar:;))E* IIe,224	""1%  +))I.& $		) 4 : : <I&&q1u-$$Y/daZq#bf+. JA''-HHW%2b'*B2b'*B Wq1R5y0BrFVBrFVBrFVBrF"vBrFBrF 33r"vBrFBrF@S7S JJv~~beRU;V^^BqESUVWSX=YZ1u!47 "1QA "1Q" 4A "1Q	 1A "1QAfnnQ&:DBK%HI)J+)J#:	Jv !!#	B//343u:>q1u%HHUZZ	*+ $FF1Q4L5c?2

1ad#$ 	
{ " s   V

	VV)r   r   )NN)__name__
__module____qualname____doc__r   r   r   r   r0   r8   r2   r   r   r   r   r   
   s,    
H<:Zr   )numpyrH    r   r    r   r   Qtr   r   r
   __all__r   r   r   r   <module>r      s,         *,{~ {r   