Merge branch 'issue4' into devel
This commit is contained in:
commit
ce49078d94
3 changed files with 101 additions and 97 deletions
|
|
@ -23,8 +23,12 @@ def _glymurrc_fname():
|
|||
fname = os.path.join(path, 'glymurrc')
|
||||
if os.path.exists(fname):
|
||||
return fname
|
||||
else:
|
||||
msg = "glymurrc file hinted at by GLYMURCONFIGDIR does not "
|
||||
msg += "exist."
|
||||
warnings.warn(msg, UserWarning)
|
||||
|
||||
# HOME/.glymur/jptoolrsc
|
||||
# HOME/.glymur/glymurrc
|
||||
confdir = _get_configdir()
|
||||
if confdir is not None:
|
||||
fname = os.path.join(_get_configdir(), 'glymurrc')
|
||||
|
|
@ -45,26 +49,19 @@ def _config():
|
|||
# Read the configuration file for the library location.
|
||||
parser = ConfigParser()
|
||||
parser.read(filename)
|
||||
try:
|
||||
libopenjp2_path = parser.get('library', 'openjp2')
|
||||
if not os.path.exists(libopenjp2_path):
|
||||
msg = 'OpenJP2 library path specified by configuration file '
|
||||
msg += 'does not exist.'
|
||||
raise ImportError(msg)
|
||||
except NoOptionError as e:
|
||||
msg = "Error parsing configuration file '{0}': {1}"
|
||||
msg = msg.format(fname, e.message)
|
||||
warnings.warn(msg, UserWarning)
|
||||
except:
|
||||
raise
|
||||
libopenjp2_path = parser.get('library', 'openjp2')
|
||||
else:
|
||||
# No help from the config file, try to find it ourselves.
|
||||
from ctypes.util import find_library
|
||||
libopenjp2_path = find_library('openjp2')
|
||||
if libopenjp2_path is None:
|
||||
raise ImportError('OpenJP2 library not found.')
|
||||
|
||||
_OPENJP2 = ctypes.CDLL(libopenjp2_path)
|
||||
try:
|
||||
_OPENJP2 = ctypes.CDLL(libopenjp2_path)
|
||||
except OSError:
|
||||
msg = '"Library {0}" could not be loaded. Operating in degraded mode.'
|
||||
msg = msg.format(libopenjp2_path)
|
||||
warnings.warn(msg, UserWarning)
|
||||
_OPENJP2 = None
|
||||
return _OPENJP2
|
||||
|
||||
|
||||
|
|
@ -81,6 +78,7 @@ def _get_configdir():
|
|||
if 'HOME' in os.environ:
|
||||
return os.path.join(os.environ['HOME'], '.glymur')
|
||||
|
||||
import warnings
|
||||
import sys
|
||||
if sys.hexversion <= 0x03000000:
|
||||
from ConfigParser import SafeConfigParser as ConfigParser
|
||||
|
|
|
|||
|
|
@ -528,105 +528,110 @@ class _codestream_info_v2_t(ctypes.Structure):
|
|||
|
||||
# Restrict the input and output argument types for each function used in the
|
||||
# API.
|
||||
_OPENJP2.opj_create_compress.argtypes = [_codec_format_t]
|
||||
_OPENJP2.opj_create_compress.restype = _codec_t_p
|
||||
if _OPENJP2 is not None:
|
||||
_OPENJP2.opj_create_compress.argtypes = [_codec_format_t]
|
||||
_OPENJP2.opj_create_compress.restype = _codec_t_p
|
||||
|
||||
_OPENJP2.opj_create_decompress.argtypes = [_codec_format_t]
|
||||
_OPENJP2.opj_create_decompress.restype = _codec_t_p
|
||||
_OPENJP2.opj_create_decompress.argtypes = [_codec_format_t]
|
||||
_OPENJP2.opj_create_decompress.restype = _codec_t_p
|
||||
|
||||
_argtypes = [_codec_t_p, _stream_t_p, ctypes.POINTER(_image_t)]
|
||||
_OPENJP2.opj_decode.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p, _stream_t_p, ctypes.POINTER(_image_t)]
|
||||
_OPENJP2.opj_decode.argtypes = _argtypes
|
||||
|
||||
_argtypes = [_codec_t_p, ctypes.c_uint32,
|
||||
ctypes.POINTER(ctypes.c_uint8),
|
||||
ctypes.c_uint32,
|
||||
_stream_t_p]
|
||||
_OPENJP2.opj_decode_tile_data.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p, ctypes.c_uint32,
|
||||
ctypes.POINTER(ctypes.c_uint8),
|
||||
ctypes.c_uint32,
|
||||
_stream_t_p]
|
||||
_OPENJP2.opj_decode_tile_data.argtypes = _argtypes
|
||||
|
||||
_argtypes = [ctypes.POINTER(ctypes.POINTER(_codestream_info_v2_t))]
|
||||
_OPENJP2.opj_destroy_cstr_info.argtypes = _argtypes
|
||||
_OPENJP2.opj_destroy_cstr_info.restype = ctypes.c_void_p
|
||||
_argtypes = [ctypes.POINTER(ctypes.POINTER(_codestream_info_v2_t))]
|
||||
_OPENJP2.opj_destroy_cstr_info.argtypes = _argtypes
|
||||
_OPENJP2.opj_destroy_cstr_info.restype = ctypes.c_void_p
|
||||
|
||||
_argtypes = [_codec_t_p, _stream_t_p]
|
||||
_OPENJP2.opj_encode.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p, _stream_t_p]
|
||||
_OPENJP2.opj_encode.argtypes = _argtypes
|
||||
|
||||
_OPENJP2.opj_get_cstr_info.argtypes = [_codec_t_p]
|
||||
_OPENJP2.opj_get_cstr_info.restype = ctypes.POINTER(_codestream_info_v2_t)
|
||||
_OPENJP2.opj_get_cstr_info.argtypes = [_codec_t_p]
|
||||
_OPENJP2.opj_get_cstr_info.restype = ctypes.POINTER(_codestream_info_v2_t)
|
||||
|
||||
_argtypes = [_codec_t_p,
|
||||
_stream_t_p,
|
||||
ctypes.POINTER(_image_t),
|
||||
ctypes.c_uint32]
|
||||
_OPENJP2.opj_get_decoded_tile.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p,
|
||||
_stream_t_p,
|
||||
ctypes.POINTER(_image_t),
|
||||
ctypes.c_uint32]
|
||||
_OPENJP2.opj_get_decoded_tile.argtypes = _argtypes
|
||||
|
||||
_argtypes = [ctypes.c_uint32,
|
||||
ctypes.POINTER(_image_comptparm_t),
|
||||
color_space_t]
|
||||
_OPENJP2.opj_image_create.argtypes = _argtypes
|
||||
_OPENJP2.opj_image_create.restype = ctypes.POINTER(_image_t)
|
||||
_argtypes = [ctypes.c_uint32,
|
||||
ctypes.POINTER(_image_comptparm_t),
|
||||
color_space_t]
|
||||
_OPENJP2.opj_image_create.argtypes = _argtypes
|
||||
_OPENJP2.opj_image_create.restype = ctypes.POINTER(_image_t)
|
||||
|
||||
_argtypes = [ctypes.c_uint32,
|
||||
ctypes.POINTER(_image_comptparm_t),
|
||||
color_space_t]
|
||||
_OPENJP2.opj_image_tile_create.argtypes = _argtypes
|
||||
_OPENJP2.opj_image_tile_create.restype = ctypes.POINTER(_image_t)
|
||||
_argtypes = [ctypes.c_uint32,
|
||||
ctypes.POINTER(_image_comptparm_t),
|
||||
color_space_t]
|
||||
_OPENJP2.opj_image_tile_create.argtypes = _argtypes
|
||||
_OPENJP2.opj_image_tile_create.restype = ctypes.POINTER(_image_t)
|
||||
|
||||
_OPENJP2.opj_image_destroy.argtypes = [ctypes.POINTER(_image_t)]
|
||||
_OPENJP2.opj_image_destroy.argtypes = [ctypes.POINTER(_image_t)]
|
||||
|
||||
_argtypes = [_stream_t_p, _codec_t_p, ctypes.POINTER(ctypes.POINTER(_image_t))]
|
||||
_OPENJP2.opj_read_header.argtypes = _argtypes
|
||||
_argtypes = [_stream_t_p, _codec_t_p,
|
||||
ctypes.POINTER(ctypes.POINTER(_image_t))]
|
||||
_OPENJP2.opj_read_header.argtypes = _argtypes
|
||||
|
||||
_argtypes = [_codec_t_p,
|
||||
_stream_t_p,
|
||||
ctypes.POINTER(ctypes.c_uint32), ctypes.POINTER(ctypes.c_uint32),
|
||||
ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_int32),
|
||||
ctypes.POINTER(ctypes.c_int32), ctypes.POINTER(ctypes.c_int32),
|
||||
ctypes.POINTER(ctypes.c_uint32),
|
||||
ctypes.POINTER(_bool_t)]
|
||||
_OPENJP2.opj_read_tile_header.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p,
|
||||
_stream_t_p,
|
||||
ctypes.POINTER(ctypes.c_uint32),
|
||||
ctypes.POINTER(ctypes.c_uint32),
|
||||
ctypes.POINTER(ctypes.c_int32),
|
||||
ctypes.POINTER(ctypes.c_int32),
|
||||
ctypes.POINTER(ctypes.c_int32),
|
||||
ctypes.POINTER(ctypes.c_int32),
|
||||
ctypes.POINTER(ctypes.c_uint32),
|
||||
ctypes.POINTER(_bool_t)]
|
||||
_OPENJP2.opj_read_tile_header.argtypes = _argtypes
|
||||
|
||||
_argtypes = [_codec_t_p, ctypes.POINTER(_image_t), ctypes.c_int32,
|
||||
ctypes.c_int32, ctypes.c_int32, ctypes.c_int32]
|
||||
_OPENJP2.opj_set_decode_area.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p, ctypes.POINTER(_image_t), ctypes.c_int32,
|
||||
ctypes.c_int32, ctypes.c_int32, ctypes.c_int32]
|
||||
_OPENJP2.opj_set_decode_area.argtypes = _argtypes
|
||||
|
||||
_argtypes = [ctypes.POINTER(_cparameters_t)]
|
||||
_OPENJP2.opj_set_default_encoder_parameters.argtypes = _argtypes
|
||||
_argtypes = [ctypes.POINTER(_cparameters_t)]
|
||||
_OPENJP2.opj_set_default_encoder_parameters.argtypes = _argtypes
|
||||
|
||||
_argtypes = [ctypes.POINTER(_dparameters_t)]
|
||||
_OPENJP2.opj_set_default_decoder_parameters.argtypes = _argtypes
|
||||
_argtypes = [ctypes.POINTER(_dparameters_t)]
|
||||
_OPENJP2.opj_set_default_decoder_parameters.argtypes = _argtypes
|
||||
|
||||
_argtypes = [_codec_t_p, ctypes.c_void_p, ctypes.c_void_p]
|
||||
_OPENJP2.opj_set_error_handler.argtypes = _argtypes
|
||||
_OPENJP2.opj_set_info_handler.argtypes = _argtypes
|
||||
_OPENJP2.opj_set_warning_handler.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p, ctypes.c_void_p, ctypes.c_void_p]
|
||||
_OPENJP2.opj_set_error_handler.argtypes = _argtypes
|
||||
_OPENJP2.opj_set_info_handler.argtypes = _argtypes
|
||||
_OPENJP2.opj_set_warning_handler.argtypes = _argtypes
|
||||
|
||||
_argtypes = [_codec_t_p, ctypes.POINTER(_dparameters_t)]
|
||||
_OPENJP2.opj_setup_decoder.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p, ctypes.POINTER(_dparameters_t)]
|
||||
_OPENJP2.opj_setup_decoder.argtypes = _argtypes
|
||||
|
||||
_argtypes = [_codec_t_p,
|
||||
ctypes.POINTER(_cparameters_t),
|
||||
ctypes.POINTER(_image_t)]
|
||||
_OPENJP2.opj_setup_encoder.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p,
|
||||
ctypes.POINTER(_cparameters_t),
|
||||
ctypes.POINTER(_image_t)]
|
||||
_OPENJP2.opj_setup_encoder.argtypes = _argtypes
|
||||
|
||||
_argtypes = [ctypes.c_char_p, ctypes.c_int32]
|
||||
_OPENJP2.opj_stream_create_default_file_stream_v3.argtypes = _argtypes
|
||||
_OPENJP2.opj_stream_create_default_file_stream_v3.restype = _stream_t_p
|
||||
_argtypes = [ctypes.c_char_p, ctypes.c_int32]
|
||||
_OPENJP2.opj_stream_create_default_file_stream_v3.argtypes = _argtypes
|
||||
_OPENJP2.opj_stream_create_default_file_stream_v3.restype = _stream_t_p
|
||||
|
||||
_argtypes = [_codec_t_p, ctypes.POINTER(_image_t), _stream_t_p]
|
||||
_OPENJP2.opj_start_compress.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p, ctypes.POINTER(_image_t), _stream_t_p]
|
||||
_OPENJP2.opj_start_compress.argtypes = _argtypes
|
||||
|
||||
_OPENJP2.opj_end_compress.argtypes = [_codec_t_p, _stream_t_p]
|
||||
_OPENJP2.opj_end_decompress.argtypes = [_codec_t_p, _stream_t_p]
|
||||
_OPENJP2.opj_end_compress.argtypes = [_codec_t_p, _stream_t_p]
|
||||
_OPENJP2.opj_end_decompress.argtypes = [_codec_t_p, _stream_t_p]
|
||||
|
||||
_OPENJP2.opj_stream_destroy_v3.argtypes = [_stream_t_p]
|
||||
_OPENJP2.opj_destroy_codec.argtypes = [_codec_t_p]
|
||||
_OPENJP2.opj_stream_destroy_v3.argtypes = [_stream_t_p]
|
||||
_OPENJP2.opj_destroy_codec.argtypes = [_codec_t_p]
|
||||
|
||||
_argtypes = [_codec_t_p,
|
||||
ctypes.c_uint32,
|
||||
ctypes.POINTER(ctypes.c_uint8),
|
||||
ctypes.c_uint32,
|
||||
_stream_t_p]
|
||||
_OPENJP2.opj_write_tile.argtypes = _argtypes
|
||||
_argtypes = [_codec_t_p,
|
||||
ctypes.c_uint32,
|
||||
ctypes.POINTER(ctypes.c_uint8),
|
||||
ctypes.c_uint32,
|
||||
_stream_t_p]
|
||||
_OPENJP2.opj_write_tile.argtypes = _argtypes
|
||||
|
||||
|
||||
def _check_error(status):
|
||||
|
|
@ -655,9 +660,10 @@ _fcns = ['opj_decode', 'opj_decode_tile_data', 'opj_end_compress',
|
|||
'opj_set_warning_handler',
|
||||
'opj_setup_decoder', 'opj_setup_encoder', 'opj_start_compress',
|
||||
'opj_write_tile']
|
||||
for _fcn in _fcns:
|
||||
_attr = getattr(_OPENJP2, _fcn)
|
||||
setattr(_attr, 'restype', _check_error)
|
||||
if _OPENJP2 is not None:
|
||||
for _fcn in _fcns:
|
||||
_attr = getattr(_OPENJP2, _fcn)
|
||||
setattr(_attr, 'restype', _check_error)
|
||||
|
||||
|
||||
def _create_compress(codec_format):
|
||||
|
|
|
|||
|
|
@ -582,7 +582,7 @@ class TestJp2k(unittest.TestCase):
|
|||
with patch.dict('os.environ', {'GLYMURCONFIGDIR': tdir}):
|
||||
# Misconfigured new configuration file should
|
||||
# be rejected.
|
||||
with self.assertRaises(ImportError) as ce:
|
||||
with self.assertWarns(UserWarning) as cw:
|
||||
imp.reload(glymur)
|
||||
|
||||
@unittest.skipIf(sys.hexversion < 0x03020000,
|
||||
|
|
@ -594,7 +594,7 @@ class TestJp2k(unittest.TestCase):
|
|||
with patch.dict('os.environ', {'GLYMURCONFIGDIR': tdir}):
|
||||
# Misconfigured new configuration file should
|
||||
# be rejected.
|
||||
with self.assertRaises(ImportError) as ce:
|
||||
with self.assertWarns(UserWarning) as cw:
|
||||
imp.reload(glymur)
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue