def test_colorpattern_gradation_5017(self): from hwp5.recordstream import read_records from hwp5.binmodel import parse_models fixturename = '5017-shapecomponent-with-colorpattern-and-gradation.bin' f = self.open_fixture(fixturename, 'rb') try: records = list(read_records(f)) finally: f.close() context = dict(version=(5, 0, 1, 7)) models = parse_models(context, records) models = list(models) self.assertEquals(1280, models[-1]['content']['fill_flags']) colorpattern = models[-1]['content']['fill_colorpattern'] gradation = models[-1]['content']['fill_gradation'] self.assertEquals(32768, colorpattern['background_color']) self.assertEquals(0, colorpattern['pattern_color']) self.assertEquals(0xffffffff, colorpattern['pattern_type_flags']) self.assertEquals(50, gradation['blur']) self.assertEquals(dict(x=0, y=100), gradation['center']) self.assertEquals([64512, 13171936], gradation['colors']) self.assertEquals(180, gradation['shear']) self.assertEquals(1, gradation['type']) self.assertEquals(1, models[-1]['content']['fill_shape']) self.assertEquals(50, models[-1]['content']['fill_blur_center'])
def test_colorpattern_gradation_5017(self): fixturename = '5017-shapecomponent-with-colorpattern-and-gradation.bin' f = self.open_fixture(fixturename, 'rb') try: records = list(read_records(f)) finally: f.close() context = dict(version=(5, 0, 1, 7)) models = parse_models(context, records) models = list(models) self.assertEqual(1280, models[-1]['content']['fill_flags']) colorpattern = models[-1]['content']['fill_colorpattern'] gradation = models[-1]['content']['fill_gradation'] self.assertEqual(32768, colorpattern['background_color']) self.assertEqual(0, colorpattern['pattern_color']) self.assertEqual(0xffffffff, colorpattern['pattern_type_flags']) self.assertEqual(50, gradation['blur']) self.assertEqual(dict(x=0, y=100), gradation['center']) self.assertEqual([64512, 13171936], gradation['colors']) self.assertEqual(180, gradation['shear']) self.assertEqual(1, gradation['type']) self.assertEqual(1, models[-1]['content']['fill_shape']) self.assertEqual(50, models[-1]['content']['fill_blur_center'])
def test_colorpattern_gradation(self): import pickle from hwp5.binmodel import parse_models fixturename = '5005-shapecomponent-with-colorpattern-and-gradation.dat' # TODO: regenerate fixture with rb f = self.open_fixture(fixturename, 'r') try: records = pickle.load(f) finally: f.close() context = dict(version=(5, 0, 0, 5)) models = parse_models(context, records) models = list(models) self.assertEquals(1280, models[-1]['content']['fill_flags']) colorpattern = models[-1]['content']['fill_colorpattern'] gradation = models[-1]['content']['fill_gradation'] self.assertEquals(32768, colorpattern['background_color']) self.assertEquals(0, colorpattern['pattern_color']) self.assertEquals(0xffffffff, colorpattern['pattern_type_flags']) self.assertEquals(50, gradation['blur']) self.assertEquals(dict(x=0, y=100), gradation['center']) self.assertEquals([64512, 13171936], gradation['colors']) self.assertEquals(180, gradation['shear']) self.assertEquals(1, gradation['type']) self.assertEquals(1, models[-1]['content']['fill_shape']) self.assertEquals(50, models[-1]['content']['fill_blur_center'])
def test_colorpattern_gradation(self): # 5005-shapecomponent-with-colorpattern-and-gradation.dat records = \ [{'level': 1, 'payload': b' osg\x10bj\x04\x00\x00\x00\x00\x0c\x00\x00\x004\xbc\x00\x00l\x06\x01\x00\x05\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00G\xechf\x00\x00\x00\x00', # noqa 'seqno': 12, 'size': 44, 'tagid': 71, 'tagname': 'HWPTAG_CTRL_HEADER'}, {'level': 2, 'payload': b'noc$noc$\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x004\xbc\x00\x00l\x06\x01\x004\xbc\x00\x00l\x06\x01\x00\x00\x00\x03\x00\x00\x00w\x00WPS \xb9\xae\x01\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00lop$noc$', # noqa 'seqno': 13, 'size': 206, 'tagid': 76, 'tagname': 'HWPTAG_SHAPE_COMPONENT'}, {'level': 3, 'payload': b'lop$\x00\x00\x00\x00\xcc\x1b\x00\x00\x01\x00\x01\x004\xbc\x00\x00\xa0\xea\x00\x004\xbc\x00\x00\xa0\xea\x00\x00\x00\x00\x00\x00\x10\x00\x1a^\x00\x00Pu\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\xcc\xbb@\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\xe4\x00\x00\xc8\x00\x00\x00\x01\x00\x00\xd1\x00\x00\x00\x00\x00\x00\x00\x00\x00', # noqa 'seqno': 14, 'size': 309, 'tagid': 76, 'tagname': 'HWPTAG_SHAPE_COMPONENT'}, {'level': 4, 'payload': b'\x06\x00\x00\x00`,\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x9c\xea\x00\x000\xbc\x00\x00\x9c\xea\x00\x000\xbc\x00\x00\x00\x00\x00\x00\xac\x8a\x00\x00\x00\x00\x00\x00', # noqa 'seqno': 15, 'size': 52, 'tagid': 82, 'tagname': 'HWPTAG_SHAPE_COMPONENT_POLYGON'}, {'level': 3, 'payload': b'noc$\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x01\x00tb\x00\x00\xf4-\x00\x00tb\x00\x00\xf4-\x00\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\r\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x05\x00cer$cer$cer$cer$cer$', # noqa 'seqno': 16, 'size': 310, 'tagid': 76, 'tagname': 'HWPTAG_SHAPE_COMPONENT'}, {'level': 4, 'payload': b'cer$\xd8,\x00\x00\x00\x00\x00\x00\x02\x00\x01\x00\x04\x0f\x00\x00\xf4-\x00\x00\x04\x0f\x00\x00\xf4-\x00\x00\x00\x00\x00\x01\x00\x00\x82\x07\x00\x00\xfa\x16\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00l\xc6@\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf0?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x10\xc8\x00\x00\x00\x00\x00\x00\xd1\x00\x05\x00\x00\x00\x00\x80\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\x01\xb4\x00\x00\x00\x00\x00\x00\x00d\x00\x00\x002\x00\x00\x00\x02\x00\x00\x00\x00\xfc\x00\x00\xe0\xfc\xc8\x00\x01\x00\x00\x002', # noqa 'seqno': 17, 'size': 447, 'tagid': 76, 'tagname': 'HWPTAG_SHAPE_COMPONENT'}] context = dict(version=(5, 0, 0, 5)) models = parse_models(context, records) models = list(models) self.assertEqual(1280, models[-1]['content']['fill_flags']) colorpattern = models[-1]['content']['fill_colorpattern'] gradation = models[-1]['content']['fill_gradation'] self.assertEqual(32768, colorpattern['background_color']) self.assertEqual(0, colorpattern['pattern_color']) self.assertEqual(0xffffffff, colorpattern['pattern_type_flags']) self.assertEqual(50, gradation['blur']) self.assertEqual(dict(x=0, y=100), gradation['center']) self.assertEqual([64512, 13171936], gradation['colors']) self.assertEqual(180, gradation['shear']) self.assertEqual(1, gradation['type']) self.assertEqual(1, models[-1]['content']['fill_shape']) self.assertEqual(50, models[-1]['content']['fill_blur_center'])
def test_match_field_start_end(self): path = get_fixture_path('match-field-start-end.dat') with io.open(path, 'rb') as f: records = pickle.load(f) models = binmodel.parse_models(dict(), records) events = xmlmodel.prefix_binmodels_with_event(dict(), models) events = xmlmodel.make_texts_linesegmented_and_charshaped(events) events = xmlmodel.make_extended_controls_inline(events) events = xmlmodel.match_field_start_end(events) events = list(events)
def test_footnote_shape(self): import pickle f = self.open_fixture('5000-footnote-shape.dat', 'r') try: records = pickle.load(f) finally: f.close() context = dict(version=(5, 0, 0, 0)) from hwp5.binmodel import parse_models models = parse_models(context, records) models = list(models) self.assertEquals(850, models[0]['content']['splitter_margin_top']) self.assertEquals(567, models[0]['content']['splitter_margin_bottom'])
def test_match_field_start_end(self): from hwp5 import binmodel, xmlmodel from fixtures import get_fixture_path path = get_fixture_path('match-field-start-end.dat') import pickle f = open(path, 'r') try: records = pickle.load(f) finally: f.close() models = binmodel.parse_models(dict(), records) events = xmlmodel.prefix_binmodels_with_event(dict(), models) events = xmlmodel.make_texts_linesegmented_and_charshaped(events) events = xmlmodel.make_extended_controls_inline(events) events = xmlmodel.match_field_start_end(events) events = list(events)
def test_match_field_start_end(self): records = \ [{'level': 2, 'payload': b'\x1c\x00\x00\x00\x18\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x01\x00\x00\x00\x00\x80', # noqa 'seqno': 196, 'size': 22, 'tagid': 66, 'tagname': 'HWPTAG_PARA_HEADER'}, {'level': 3, 'payload': b'\x04\x00umf\x08\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x03\x00umf%\x00\x00\x00\x00\x00\x00\x00\x00\x03\x002\x009\x009\x00\x04\x00umf\x08\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\r\x00', # noqa 'seqno': 197, 'size': 56, 'tagid': 67, 'tagname': 'HWPTAG_PARA_TEXT'}, {'level': 3, 'payload': b'\x00\x00\x00\x00\x13\x00\x00\x00', 'seqno': 198, 'size': 8, 'tagid': 68, 'tagname': b'HWPTAG_PARA_CHAR_SHAPE'}, {'level': 3, 'payload': b'\x00\x00\x00\x00\x00\x00\x00\x00\x14\x05\x00\x00\x14\x05\x00\x00Q\x04\x00\x00\xfc\xfe\xff\xff\x00\x00\x00\x00X\x0b\x00\x00\x00\x00\x06\x00', # noqa 'seqno': 199, 'size': 36, 'tagid': 69, 'tagname': 'HWPTAG_PARA_LINE_SEG'}, {'level': 3, 'payload': b'umf%\x00\x00\x00\x00\x08\x15\x00=\x00S\x00U\x00M\x00(\x00R\x00I\x00G\x00H\x00T\x00)\x00?\x00?\x00%\x00g\x00,\x00;\x00;\x002\x009\x009\x00P\x89\xa0z\x00\x00\x00\x00', # noqa 'seqno': 200, 'size': 61, 'tagid': 71, 'tagname': 'HWPTAG_CTRL_HEADER'}] models = binmodel.parse_models(dict(), records) events = xmlmodel.prefix_binmodels_with_event(dict(), models) events = xmlmodel.make_texts_linesegmented_and_charshaped(events) events = xmlmodel.make_extended_controls_inline(events) events = xmlmodel.match_field_start_end(events) events = list(events)