
    ը	f                         d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dl	m
Z
  e
        d dlmZ  G d dej                        Z G d dej                        Zedk(  r e       Zej%                          yy)	    N)set_gui_path)BitmapFromImagec                   :    e Zd ZdZd Zd Zd Zd Zd Zd Z	d Z
y	)
FramezImage Viewerc                     || _         t        j                  j                  | d t        j                  |       | j                          y )N)titlesize)appwxr   __init__r   Create)selfr
   r	   s      '/usr/lib/grass83/etc/wxpyimgview_gui.pyr   zFrame.__init__9   s1    
$EKKdC    c                 8   | j                  t        j                  | j                         | j                  t        j                  | j
                         | j                  t        j                  | j                  d       t        j                  | d      | _	        | j                  j                  dd       | j                  t        j                  | j                  d       t        j                  | d      | _        | j                  j                  dd       y )N   )idd   T   F)Bindr   EVT_ERASE_BACKGROUNDerase	EVT_PAINTredraw	EVT_TIMERtickTimertimerStartdummytickerr   s    r   r   zFrame.Create>   s    		"))4::6		",,,		",,		a	0XXdA&


d# 			",,

q	1hhtQ'#u%r   c                 $    |j                          y N)GetDCr   evs     r   r   zFrame.eraseK   s    

r   c                 0   | j                   }| j                         }|j                         |j                  z
  dz  }|j	                         |j
                  z
  dz  }t        j                  |       }|j                  j                  |j
                  |j                  df      }|d d d d dd df   }t        |dt        |d            }t        j                  |j                  |j
                   |             }|j                  t        |      ||d       y )Nr      tobytestostringF)r
   GetSizeGetWidthi_width	GetHeighti_heightr   PaintDCimgbufreshapegetattrImage
DrawBitmapr   )	r   r
   r	   x0y0dcdatafnimages	            r   drawz
Frame.drawN   s    hh||~mmo+1nn-!3ZZzz!!3<<a"@ABAErEM"T9gdJ&?@cllBD9
oe,b"e<r   c                 T   | j                   j                  dkD  rt        j                         }| j                          t        j                         }||z
  }|| j                   j                  z  }| j                  j                  t        |dz        d       y | j                          y )NgMbP?i  T)r
   fractiontimer>   r   r   int)r   r'   t0t1lastdelays         r   r   zFrame.redrawZ   sv    88u$BIIKB7D488,,,EJJS.5IIKr   c                 $    | j                          y r$   )Refreshr&   s     r   r   z
Frame.tickf   s    r   c                      y r$    r&   s     r   r    zFrame.dummyi   s    r   N)__name__
__module____qualname__r   r   r   r   r>   r   r   r    rJ   r   r   r   r   6   s*    E
&
=
r   r   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Applicationc                     t         j                  d   | _        t        t         j                  d         dz  | _        d| _        t        j                  j                  |        y )Nr   r   g      Y@@   )	sysargvr=   rB   r@   HEADER_SIZEr   Appr   r"   s    r   r   zApplication.__init__n   sB    XXa[
CHHQK(50
r   c                    t        j                  d|      \  }}}t        j                  |      dk7  rt	        d      t        j                  d|      \  }}}}|| j
                  k7  rt	        d      t        j                  d|      \  }}	}
}}}}}}}}|dk7  rt	        d      |	| _        |
 | _        |d	k7  rt	        d
      |dk7  rt	        d      |dk7  rt	        d      || j                  | j                  z  dz  k7  rt	        d      || j
                  | j                  | j                  z  dz  z   k7  rt	        d      y )N2s12s40s10xBMzInvalid magic numberz<IHHIzInvalid file header sizez<IiiHHIIiiII(   zInvalid info header sizer   zPlanar data not supported    zOnly 32-BPP images supportedr   zCompression not supportedr)   zInvalid image data sizezInvalid image size)structunpackgrassdecodeSyntaxErrorrT   r/   r1   )r   headermagicbmfhbmihr	   res1res2hsizewidthheightplanesbppcompressionimsizexppmyppmcusedcimps                      r   read_bmp_headerzApplication.read_bmp_headert   s[   "MM-@tT<<$&455"(--">dD%D$$$899 MM.$/	
 B;899Q;9::"9<==!9::T\\DMM1A557884##dllT]]&BQ&FFF233 Gr   c                     t        | j                  d      }|j                  | j                        }| j	                  |       t        j                  |d| j                        | _        y )Nrbr)modeoffset)openr=   readrT   rq   numpymemmapr3   )r   fr`   s      r   map_filezApplication.map_file   sN    T"(()V$ll13t7G7GHr   c                 V    t        j                  | j                  j                         y r$   )r   	CallAftermainwinrH   )r   sigframes      r   signal_handlerzApplication.signal_handler   s    
T\\))*r   c                     dt        t              v r/t        j                  t        j                  | j                         y y )NSIGUSR1)dirsignalr   r   r"   s    r   set_handlerzApplication.set_handler   s+    F#MM&..$*=*=> $r   c                 $   | j                          t        j                  | j                  | j                        }t        | |      | _        | j                  j                          | j                  | j                         | j                          y)NT)
r|   r   Sizer/   r1   r   r   ShowSetTopWindowr   )r   r	   s     r   OnInitzApplication.OnInit   sb    wwt||T]]3T4($,,'r   N)	rK   rL   rM   r   rq   r|   r   r   r   rJ   r   r   rO   rO   m   s"    (4TI+?
r   rO   __main__)r   r[   rR   rA   ry   r   grass.scriptscriptr]   grass.script.setupr   gui_core.wrapr   r   rU   rO   rK   r
   MainLooprJ   r   r   <module>r      sk   N   
   	  +  )4BHH 4nJ"&& JZ z
-CLLN r   