Added palette and xml box repr support. #133
This commit is contained in:
parent
c8fe9ed776
commit
dc994377e1
2 changed files with 47 additions and 2 deletions
|
|
@ -75,6 +75,12 @@ class Jp2kBox(object):
|
|||
self.offset = offset
|
||||
self.longname = longname
|
||||
|
||||
def __repr__(self):
|
||||
msg = "glymur.jp2box.Jp2kBox(box_id='{0}', offset={1}, length={2}, "
|
||||
msg += "longname='{3}')"
|
||||
msg = msg.format(self.box_id, self.offset, self.length, self.longname)
|
||||
return msg
|
||||
|
||||
def __str__(self):
|
||||
msg = "{0} Box ({1})".format(self.longname, self.box_id)
|
||||
msg += " @ ({0}, {1})".format(self.offset, self.length)
|
||||
|
|
@ -1273,6 +1279,12 @@ class PaletteBox(Jp2kBox):
|
|||
self.length = length
|
||||
self.offset = offset
|
||||
|
||||
def __repr__(self):
|
||||
msg = "glymur.jp2box.PaletteBox({0}, bits_per_component={1}, "
|
||||
msg += "signed={2})"
|
||||
msg = msg.format(self.palette, self.bits_per_component, self.signed)
|
||||
return msg
|
||||
|
||||
def __str__(self):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
msg += '\n Size: ({0} x {1})'.format(len(self.palette[0]),
|
||||
|
|
@ -1895,6 +1907,9 @@ class XMLBox(Jp2kBox):
|
|||
self.length = length
|
||||
self.offset = offset
|
||||
|
||||
def __repr__(self):
|
||||
return "glymur.jp2box.XMLBox(xml={0})".format(self.xml)
|
||||
|
||||
def __str__(self):
|
||||
msg = Jp2kBox.__str__(self)
|
||||
xml = self.xml
|
||||
|
|
@ -1953,7 +1968,6 @@ class XMLBox(Jp2kBox):
|
|||
msg = msg.format(offset, ude.reason)
|
||||
warnings.warn(msg, UserWarning)
|
||||
|
||||
|
||||
# Strip out any trailing nulls, as they can foul up XML parsing.
|
||||
text = text.rstrip(chr(0))
|
||||
|
||||
|
|
|
|||
|
|
@ -18,6 +18,7 @@ Test suite specifically targeting JP2 box layout.
|
|||
|
||||
import doctest
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import struct
|
||||
import sys
|
||||
|
|
@ -414,7 +415,7 @@ class TestAppend(unittest.TestCase):
|
|||
|
||||
jp2 = Jp2k(tfile.name)
|
||||
the_xml = ET.fromstring('<?xml version="1.0"?><data>0</data>')
|
||||
xmlbox = glymur.jp2box.XMLBox(xml=the_xml)
|
||||
xmlbox = glymur.jp2box.XMLBox(xml=ET.ElementTree(the_xml))
|
||||
jp2.append(xmlbox)
|
||||
|
||||
# The sequence of box IDs should be the same as before, but with an
|
||||
|
|
@ -865,6 +866,36 @@ class TestRepr(unittest.TestCase):
|
|||
self.assertEqual(newbox.ulst[0], uuid1)
|
||||
self.assertEqual(newbox.ulst[1], uuid2)
|
||||
|
||||
def test_jp2k_box(self):
|
||||
"""Verify Superclass repr."""
|
||||
box = glymur.jp2box.Jp2kBox(box_id='one', offset=2, length=3,
|
||||
longname='four')
|
||||
newbox = eval(repr(box))
|
||||
self.assertEqual(newbox.box_id, 'one')
|
||||
self.assertEqual(newbox.offset, 2)
|
||||
self.assertEqual(newbox.length, 3)
|
||||
self.assertEqual(newbox.longname, 'four')
|
||||
|
||||
def test_palette_box(self):
|
||||
"""Verify Palette box repr."""
|
||||
palette = np.array([[255, 0, 1000], [0, 255, 0]], dtype=np.int32)
|
||||
bps = (8, 8, 16)
|
||||
signed = (True, False, True)
|
||||
box = glymur.jp2box.PaletteBox(palette=palette, bits_per_component=bps,
|
||||
signed=(True, False, True))
|
||||
# The palette can't be reinstantiated thru eval/repr.
|
||||
s = repr(box)
|
||||
self.assertTrue(True)
|
||||
|
||||
def test_xml_box(self):
|
||||
"""Verify xml box repr."""
|
||||
elt = ET.fromstring('<?xml version="1.0"?><data>0</data>')
|
||||
tree = ET.ElementTree(elt)
|
||||
box = glymur.jp2box.XMLBox(xml=tree)
|
||||
|
||||
regexp = "glymur.jp2box.XMLBox\(xml=<ElementTree object "
|
||||
regexp += "at 0x([a-f0-9]*)>\)"
|
||||
self.assertRegexpMatches(repr(box), regexp)
|
||||
|
||||
class TestJpxBoxes(unittest.TestCase):
|
||||
"""Tests for JPX boxes."""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue