| | '''OpenGL extension ARB.imaging |
| | |
| | This module customises the behaviour of the |
| | OpenGL.raw.GL.ARB.imaging to provide a more |
| | Python-friendly API |
| | |
| | The official definition of this extension is available here: |
| | http://www.opengl.org/registry/specs/ARB/imaging.txt |
| | ''' |
| | from OpenGL import platform, constant, arrays |
| | from OpenGL import extensions, wrapper |
| | import ctypes |
| | from OpenGL.raw.GL import _types, _glgets |
| | from OpenGL.raw.GL.ARB.imaging import * |
| | from OpenGL.raw.GL.ARB.imaging import _EXTENSION_NAME |
| |
|
| | def glInitImagingARB(): |
| | '''Return boolean indicating whether this extension is available''' |
| | from OpenGL import extensions |
| | return extensions.hasGLExtension( _EXTENSION_NAME ) |
| |
|
| | |
| | glColorTable=wrapper.wrapper(glColorTable).setInputArraySize( |
| | 'table', None |
| | ) |
| | |
| | glColorTableParameterfv=wrapper.wrapper(glColorTableParameterfv).setInputArraySize( |
| | 'params', None |
| | ) |
| | |
| | glColorTableParameteriv=wrapper.wrapper(glColorTableParameteriv).setInputArraySize( |
| | 'params', None |
| | ) |
| | |
| | glGetColorTableParameterfv=wrapper.wrapper(glGetColorTableParameterfv).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | glGetColorTableParameteriv=wrapper.wrapper(glGetColorTableParameteriv).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | |
| | glColorSubTable=wrapper.wrapper(glColorSubTable).setInputArraySize( |
| | 'data', None |
| | ) |
| | |
| | glConvolutionFilter1D=wrapper.wrapper(glConvolutionFilter1D).setInputArraySize( |
| | 'image', None |
| | ) |
| | |
| | glConvolutionFilter2D=wrapper.wrapper(glConvolutionFilter2D).setInputArraySize( |
| | 'image', None |
| | ) |
| | |
| | glConvolutionParameterfv=wrapper.wrapper(glConvolutionParameterfv).setInputArraySize( |
| | 'params', None |
| | ) |
| | |
| | glConvolutionParameteriv=wrapper.wrapper(glConvolutionParameteriv).setInputArraySize( |
| | 'params', None |
| | ) |
| | |
| | glGetConvolutionParameterfv=wrapper.wrapper(glGetConvolutionParameterfv).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | glGetConvolutionParameteriv=wrapper.wrapper(glGetConvolutionParameteriv).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | |
| | |
| | |
| | |
| | |
| | glSeparableFilter2D=wrapper.wrapper(glSeparableFilter2D).setInputArraySize( |
| | 'column', None |
| | ).setInputArraySize( |
| | 'row', None |
| | ) |
| | |
| | glGetHistogramParameterfv=wrapper.wrapper(glGetHistogramParameterfv).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | glGetHistogramParameteriv=wrapper.wrapper(glGetHistogramParameteriv).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | |
| | glGetMinmaxParameterfv=wrapper.wrapper(glGetMinmaxParameterfv).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | glGetMinmaxParameteriv=wrapper.wrapper(glGetMinmaxParameteriv).setOutput( |
| | 'params',size=_glgets._glget_size_mapping,pnameArg='pname',orPassIn=True |
| | ) |
| | |
| | from OpenGL.GL import images |
| | from OpenGL.lazywrapper import lazy as _lazy |
| | glColorTable = images.setDimensionsAsInts( |
| | images.setImageInput( |
| | glColorTable, |
| | pixelName = 'table', |
| | typeName = 'type', |
| | ) |
| | ) |
| | glColorSubTable = images.setDimensionsAsInts( |
| | images.setImageInput( |
| | glColorSubTable, |
| | pixelName = 'data', |
| | ) |
| | ) |
| | glSeparableFilter2D = images.setDimensionsAsInts( |
| | images.setImageInput( |
| | images.setImageInput( |
| | glSeparableFilter2D, |
| | pixelName = 'row', |
| | typeName = 'type', |
| | ), |
| | pixelName = 'column', |
| | typeName = 'type', |
| | ) |
| | ) |
| | glConvolutionFilter1D = images.setDimensionsAsInts( |
| | images.setImageInput( |
| | glConvolutionFilter1D, |
| | pixelName = 'image', |
| | typeName = 'type', |
| | ) |
| | ) |
| | glConvolutionFilter2D = images.setDimensionsAsInts( |
| | images.setImageInput( |
| | glConvolutionFilter2D, |
| | pixelName = 'image', |
| | typeName = 'type', |
| | ) |
| | ) |
| |
|
| | @_lazy( glGetConvolutionFilter ) |
| | def glGetConvolutionFilter( baseFunction, target, format, type ): |
| | """Retrieve 1 or 2D convolution parameter "kernels" as pixel data""" |
| | dims = ( |
| | glGetConvolutionParameteriv( target, GL_CONVOLUTION_WIDTH )[0], |
| | ) |
| | if target != GL_CONVOLUTION_1D: |
| | dims += ( |
| | glGetConvolutionParameteriv( target, GL_CONVOLUTION_HEIGHT )[0], |
| | ) |
| | |
| | dims += (4,) |
| | array = images.images.SetupPixelRead( format, dims, type ) |
| | arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ |
| | images.images.TYPE_TO_ARRAYTYPE.get(type,type) |
| | ] |
| | baseFunction( |
| | target, format, type, |
| | ctypes.c_void_p( arrayType.dataPointer(array)) |
| | ) |
| | return array |
| | @_lazy( glGetSeparableFilter ) |
| | def glGetSeparableFilter( baseFunction, target, format, type ): |
| | """Retrieve 2 1D convolution parameter "kernels" as pixel data""" |
| | rowDims = ( |
| | glGetConvolutionParameteriv( GL_CONVOLUTION_WIDTH )[0], |
| | 4, |
| | ) |
| | columnDims = ( |
| | glGetConvolutionParameteriv( GL_CONVOLUTION_HEIGHT )[0], |
| | 4, |
| | ) |
| | arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ |
| | images.images.TYPE_TO_ARRAYTYPE.get(type,type) |
| | ] |
| | row = images.images.SetupPixelRead( format, rowDims, type ) |
| | column = images.images.SetupPixelRead( format, columnDims, type ) |
| | baseFunction( |
| | target, format, type, |
| | ctypes.c_void_p( arrayType.dataPointer(row)), |
| | ctypes.c_void_p( arrayType.dataPointer(column)), |
| | None |
| | ) |
| | return row, column |
| | @_lazy( glGetColorTable ) |
| | def glGetColorTable( baseFunction, target, format, type ): |
| | """Retrieve the current 1D color table as a bitmap""" |
| | dims = ( |
| | glGetColorTableParameteriv(target, GL_COLOR_TABLE_WIDTH), |
| | 4, |
| | ) |
| | array = images.images.SetupPixelRead( format, dims, type ) |
| | arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ |
| | images.images.TYPE_TO_ARRAYTYPE.get(type,type) |
| | ] |
| | baseFunction( |
| | target, format, type, |
| | ctypes.c_void_p( arrayType.dataPointer(array)) |
| | ) |
| | return array |
| | @_lazy( glGetHistogram ) |
| | def glGetHistogram( baseFunction, target, reset, format, type, values=None): |
| | """Retrieve current 1D histogram as a 1D bitmap""" |
| | if values is None: |
| | width = glGetHistogramParameteriv( |
| | target, |
| | GL_HISTOGRAM_WIDTH, |
| | ) |
| | values = images.images.SetupPixelRead( format, (width,4), type ) |
| | arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ |
| | images.images.TYPE_TO_ARRAYTYPE.get(type,type) |
| | ] |
| | baseFunction( |
| | target, reset, format, type, |
| | ctypes.c_void_p( arrayType.dataPointer(values)) |
| | ) |
| | return values |
| |
|
| | @_lazy( glGetMinmax ) |
| | def glGetMinmax( baseFunction, target, reset, format, type, values=None): |
| | """Retrieve minimum and maximum values as a 2-element image""" |
| | if values is None: |
| | width = 2 |
| | values = images.images.SetupPixelRead( format, (width,4), type ) |
| | arrayType = arrays.GL_CONSTANT_TO_ARRAY_TYPE[ |
| | images.images.TYPE_TO_ARRAYTYPE.get(type,type) |
| | ] |
| | baseFunction( |
| | target, reset, format, type, |
| | ctypes.c_void_p( arrayType.dataPointer(values)) |
| | ) |
| | return values |
| |
|