added __repr__ for colr, cdef, ihdr boxes. #133
This commit is contained in:
parent
368c355560
commit
cdd00d2c2d
2 changed files with 99 additions and 17 deletions
|
|
@ -206,6 +206,17 @@ class ColourSpecificationBox(Jp2kBox):
|
|||
self.length = length
|
||||
self.offset = offset
|
||||
|
||||
def __repr__(self):
|
||||
msg = "glymur.jp2box.ColourSpecificationBox("
|
||||
msg += "method={0}, precedence={1}, approximation={2}, colorspace={3}, "
|
||||
msg += "icc_profile={4})"
|
||||
msg = msg.format(self.method,
|
||||
self.precedence,
|
||||
self.approximation,
|
||||
self.colorspace,
|
||||
self.icc_profile)
|
||||
return msg
|
||||
|
||||
def __str__(self):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
|
||||
|
|
@ -426,12 +437,12 @@ class ChannelDefinitionBox(Jp2kBox):
|
|||
offset of the box from the start of the file.
|
||||
longname : str
|
||||
more verbose description of the box.
|
||||
index : int
|
||||
index : list
|
||||
number of the channel. Defaults to monotonically increasing sequence,
|
||||
i.e. [0, 1, 2, ...]
|
||||
channel_type : int
|
||||
channel_type : list
|
||||
type of the channel
|
||||
association : int
|
||||
association : list
|
||||
index of the associated color
|
||||
"""
|
||||
def __init__(self, index=None, channel_type=None, association=None,
|
||||
|
|
@ -458,9 +469,9 @@ class ChannelDefinitionBox(Jp2kBox):
|
|||
msg += " 65535 - unspecified"
|
||||
raise IOError(msg)
|
||||
|
||||
self.index = index
|
||||
self.channel_type = channel_type
|
||||
self.association = association
|
||||
self.index = tuple(index)
|
||||
self.channel_type = tuple(channel_type)
|
||||
self.association = tuple(association)
|
||||
self.__dict__.update(**kwargs)
|
||||
|
||||
def __str__(self):
|
||||
|
|
@ -475,6 +486,12 @@ class ChannelDefinitionBox(Jp2kBox):
|
|||
msg = msg.format(self.index[j], color_type_string, assn)
|
||||
return msg
|
||||
|
||||
def __repr__(self):
|
||||
msg = "glymur.jp2box.ChannelDefinitionBox("
|
||||
msg += "index={0}, channel_type={1}, association={2})"
|
||||
msg = msg.format(self.index, self.channel_type, self.association)
|
||||
return msg
|
||||
|
||||
def write(self, fptr):
|
||||
"""Write a channel definition box to file.
|
||||
"""
|
||||
|
|
@ -921,6 +938,22 @@ class ImageHeaderBox(Jp2kBox):
|
|||
self.length = length
|
||||
self.offset = offset
|
||||
|
||||
def __repr__(self):
|
||||
msg = "glymur.jp2box.ImageHeaderBox("
|
||||
msg += "{height}, {width}, num_components={num_components}, "
|
||||
msg += "signed={signed}, bits_per_component={bits_per_component}, "
|
||||
msg += "compression={compression}, "
|
||||
msg += "colorspace_unknown={colorspace_unknown}, "
|
||||
msg += "ip_provided={ip_provided})"
|
||||
msg = msg.format(height=self.height, width=self.width,
|
||||
num_components=self.num_components,
|
||||
signed=self.signed,
|
||||
bits_per_component=self.bits_per_component,
|
||||
compression=self.compression,
|
||||
colorspace_unknown=self.colorspace_unknown,
|
||||
ip_provided=self.ip_provided)
|
||||
return msg
|
||||
|
||||
def __str__(self):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
msg = "{0}"
|
||||
|
|
|
|||
|
|
@ -677,10 +677,6 @@ class TestJp2Boxes(unittest.TestCase):
|
|||
jp2k = glymur.jp2box.JPEG2000SignatureBox()
|
||||
self.assertEqual(jp2k.signature, (13, 10, 135, 10))
|
||||
|
||||
# Test the representation instantiation.
|
||||
newbox = eval(repr(jp2k))
|
||||
self.assertTrue(isinstance(newbox, glymur.jp2box.JPEG2000SignatureBox))
|
||||
|
||||
def test_default_ftyp(self):
|
||||
"""Should be able to instantiate a FileTypeBox"""
|
||||
ftyp = glymur.jp2box.FileTypeBox()
|
||||
|
|
@ -688,13 +684,6 @@ class TestJp2Boxes(unittest.TestCase):
|
|||
self.assertEqual(ftyp.minor_version, 0)
|
||||
self.assertEqual(ftyp.compatibility_list, ['jp2 '])
|
||||
|
||||
# Test the representation instantiation.
|
||||
newbox = eval(repr(ftyp))
|
||||
self.assertTrue(isinstance(newbox, glymur.jp2box.FileTypeBox))
|
||||
self.assertEqual(newbox.brand, 'jp2 ')
|
||||
self.assertEqual(newbox.minor_version, 0)
|
||||
self.assertEqual(newbox.compatibility_list, ['jp2 '])
|
||||
|
||||
def test_default_ihdr(self):
|
||||
"""Should be able to instantiate an image header box."""
|
||||
ihdr = glymur.jp2box.ImageHeaderBox(height=512, width=256,
|
||||
|
|
@ -720,6 +709,66 @@ class TestJp2Boxes(unittest.TestCase):
|
|||
self.assertIsNone(box.main_header)
|
||||
|
||||
|
||||
class TestRepr(unittest.TestCase):
|
||||
"""Tests for __repr__ methods."""
|
||||
def test_default_jp2k(self):
|
||||
"""Should be able to eval a JPEG2000SignatureBox"""
|
||||
jp2k = glymur.jp2box.JPEG2000SignatureBox()
|
||||
|
||||
# Test the representation instantiation.
|
||||
newbox = eval(repr(jp2k))
|
||||
self.assertTrue(isinstance(newbox, glymur.jp2box.JPEG2000SignatureBox))
|
||||
self.assertEqual(newbox.signature, (13, 10, 135, 10))
|
||||
|
||||
def test_default_ftyp(self):
|
||||
"""Should be able to instantiate a FileTypeBox"""
|
||||
ftyp = glymur.jp2box.FileTypeBox()
|
||||
|
||||
# Test the representation instantiation.
|
||||
newbox = eval(repr(ftyp))
|
||||
self.assertTrue(isinstance(newbox, glymur.jp2box.FileTypeBox))
|
||||
self.assertEqual(newbox.brand, 'jp2 ')
|
||||
self.assertEqual(newbox.minor_version, 0)
|
||||
self.assertEqual(newbox.compatibility_list, ['jp2 '])
|
||||
|
||||
def test_colourspecification_box(self):
|
||||
"""Verify __repr__ method on colr box."""
|
||||
# TODO: add icc_profile
|
||||
box = ColourSpecificationBox(colorspace=glymur.core.SRGB)
|
||||
|
||||
newbox = eval(repr(box))
|
||||
self.assertEqual(newbox.method, glymur.core.ENUMERATED_COLORSPACE)
|
||||
self.assertEqual(newbox.precedence, 0)
|
||||
self.assertEqual(newbox.approximation, 0)
|
||||
self.assertEqual(newbox.colorspace, glymur.core.SRGB)
|
||||
self.assertIsNone(newbox.icc_profile)
|
||||
|
||||
def test_channeldefinition_box(self):
|
||||
"""Verify __repr__ method on cdef box."""
|
||||
channel_type = [COLOR, COLOR, COLOR]
|
||||
association = [RED, GREEN, BLUE]
|
||||
cdef = glymur.jp2box.ChannelDefinitionBox(index=[0, 1, 2],
|
||||
channel_type=channel_type,
|
||||
association=association)
|
||||
newbox = eval(repr(cdef))
|
||||
self.assertEqual(newbox.index, (0, 1, 2))
|
||||
self.assertEqual(newbox.channel_type, (COLOR, COLOR, COLOR))
|
||||
self.assertEqual(newbox.association, (RED, GREEN, BLUE))
|
||||
|
||||
def test_imageheader_box(self):
|
||||
"""Verify __repr__ method on ihdr box."""
|
||||
ihdr = ImageHeaderBox(100, 200, num_components=3)
|
||||
newbox = eval(repr(ihdr))
|
||||
self.assertEqual(newbox.height, 100)
|
||||
self.assertEqual(newbox.width, 200)
|
||||
self.assertEqual(newbox.num_components, 3)
|
||||
self.assertFalse(newbox.signed)
|
||||
self.assertEqual(newbox.bits_per_component, 8)
|
||||
self.assertEqual(newbox.compression, 7)
|
||||
self.assertFalse(newbox.colorspace_unknown)
|
||||
self.assertFalse(newbox.ip_provided)
|
||||
|
||||
|
||||
class TestJpxBoxes(unittest.TestCase):
|
||||
"""Tests for JPX boxes."""
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue