;ildZddlZddlmZddlmZddlmZmZddlm Z m Z m Z  e j Z ddl Td Zn#eef$rd ZYnwxYwd gZGd d e jZer%ed Gdd e ZdSdS)z RawImageWidget.py Copyright 2010-2016 Luke Campagnola Distributed under MIT/X11 license. See license.txt for more information. N) functions)functions_qimage)getConfigOptiongetCupy)QtCoreQtGui QtWidgets)*TFRawImageWidgetc&eZdZdZddZdZdZdS)r z Widget optimized for very fast video display. Generally using an ImageItem inside GraphicsView is fast enough. On some systems this may provide faster video. See the VideoSpeedTest example for benchmarking. NFc6tj|||tjtjjjtjjj||_d|_d|_ t|_ dS)z Setting scaled=True will cause the entire image to be displayed within the boundaries of the widget. This also greatly reduces the speed at which it will draw frames. N) r QWidget__init__ setSizePolicy QSizePolicyPolicy Expandingscaledoptsimager_cpselfparentrs TC:\PYTHON\MyICR_Workspace\venv\Lib\site-packages\pyqtgraph/widgets/RawImageWidget.pyrzRawImageWidget.__init__!s ""4000 901F1M1WYbYnYuYAA B B B   99ctddkr|dd}|||f|_d|_|dS)z img must be ndarray of shape (x,y), (x,y,3), or (x,y,4). Extra arguments are sent to functions.makeARGB imageAxisOrder col-majorrN)rswapaxesrrupdaterimgargskargss rsetImagezRawImageWidget.setImage-sQ + , , ; ;,,q!$$C$&   rc|jdS|j|jd}|jr|j|nt}d}|jdsddh|jdrd}|jjdkrq|| rJ||}|j dkr| d}| }tj||jdd|jdd| }|t!j|jdg|jdRi|jd\}}|jr7|j||jkr|}t!j|t&jjj}||_d |_t'j|} |jr!|} | t7| z } |jt7|jz } | | kr;| t=| | z| z n:| t=| | z| z | | |jn,| tCj"|j| #dS) Nrr!levelslutrf)axis)r*r+transparentLocations)$rrrget_array_modulenumpy issupersetdtypekindisnanminndimanynonzerortry_make_qimagegetfnmakeARGBndarray_to_qimager QImageFormat Format_ARGB32QPainterrrectwidthfloatheightsetWidthint setHeight drawImagerQPointFend) revr%xpqimager/nanmaskargbalphaprDarimars r paintEventzRawImageWidget.paintEvent8s 9  F : )A,C378F**3///BFIaL u%001>> (,$9>S((RXXcggii-@-@( hhsmmG|q((")++1+"5"5+2??+<+<()99Q<++H55 ! ((//)= ~ k$)A,V1VVVSTVV e8& 9 9$ ? ?48 K K88::D-dEL4G4UVVDJDI N4  ; 699;;Ddkkmm 4 44B:##%%dj.?.?.A.A(B(BBDDyy c$**,,"5":;;<<<<s4;;==2#5#<==>>> KKdj ) ) ) ) KK(($* 5 5 5 rNF)__name__ __module__ __qualname____doc__rr(rWr0rrr r sP       22222rRawImageGLWidgetc2eZdZdZd dZdZdZdZdZdS) r]z Similar to RawImageWidget, but uses a GL widget to do all drawing. Performance varies between platforms; see examples/VideoSpeedTest for benchmarking. Checks if setConfigOptions(imageAxisOrder='row-major') was set. NFct||||_d|_d|_d|_d|_dSrX) QOpenGLWidgetrrruploadedsmoothrrs rrzRawImageGLWidget.__init__ws?  " "4 0 0 0 DKDJ!DMDKDIIIrctddkr|dd}|||f|_d|_d|_|dS)z img must be ndarray of shape (x,y), (x,y,3), or (x,y,4). Extra arguments are sent to functions.makeARGB rr rr!NF)rr"rrrar#r$s rr(zRawImageGLWidget.setImagesX /00K??ll1a((dE*DIDJ!DM KKMMMMMrc.td|_dS)Nr!) glGenTexturestexture)rs r initializeGLzRawImageGLWidget.initializeGLs(++DLLLrc tttt|j|jrAt tt tt tttn@t tt tt tttt tttt ttt|j jdd\}}ttdt ||dt t"|j t%td|_dS)NrrT)glEnable GL_TEXTURE_2D glBindTexturerfrbglTexParameteriGL_TEXTURE_MIN_FILTER GL_LINEARGL_TEXTURE_MAG_FILTER GL_NEARESTGL_TEXTURE_WRAP_SGL_CLAMP_TO_BORDERGL_TEXTURE_WRAP_Trshape glTexImage2DGL_RGBAGL_UNSIGNED_BYTE glDisablera)rhws r uploadTexturezRawImageGLWidget.uploadTextures ] # # # - 6 6 6{ R /DiPPP /DiPPPP /DjQQQ /DjQQQ M+<>P Q Q Q M+<>P Q Q Q:#BQB'DAq 7Aq!WFVX\Xb c c c m $ $ $ DMMMrctt|j6|jdS|j\}}}d|d<t j|g|Ri|\|_}|js|tttt|j tddddtttddt!dddtddt!dddtddt!dddtddt!dddt#t%tdS)NTuseRGBAr!r)glClearGL_COLOR_BUFFER_BITrrr=r>rar{rirjrkrf glColor4fglBeginGL_QUADS glTexCoord2f glVertex3fglEndrx)rr%r&kwds_s rpaintGLzRawImageGLWidget.paintGLsd ' ( ( (z!9$F"&)T4"&Y " C ?$ ? ? ?$ ? ?  A= %""$$$ ] # # # - 6 6 6 aAq ! ! ! H    A    r2q ! ! ! A    q"a A    q!Q    A    r1a GGG m $ $ $ $ $rrX) rYrZr[r\rr(rgr{rr0rrr]r]osn          , , , ! ! !0 % % % % %r)r\r2rr=rrrQtrr r r` OpenGL.GL HAVE_OPENGL ImportErrorAttributeError__all__rr appendr]r0rrrsg  ''''''''))))))))))+MKK^$KKK  PPPPPY&PPPfT% NN%&&&R%R%R%R%R%=R%R%R%R%R%T%T%s 4 AA