| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| from __future__ import absolute_import |
| from __future__ import print_function |
| from __future__ import unicode_literals |
|
|
| from hwp5.binmodel.controlchar import CHID |
| from hwp5.dataio import Enum |
| from hwp5.dataio import Flags |
| from hwp5.dataio import Struct |
| from hwp5.dataio import UINT16 |
| from hwp5.dataio import WORD |
| from hwp5.dataio import HWPUNIT16 |
| from hwp5.dataio import X_ARRAY |
| from hwp5.dataio import ref_member_flag |
| from hwp5.binmodel.controls._shared import Control |
| from hwp5.binmodel._shared import Border |
|
|
|
|
| class Column0(Struct): |
|
|
| @staticmethod |
| def attributes(): |
| yield WORD, 'width' |
|
|
|
|
| class Column(Struct): |
| @staticmethod |
| def attributes(): |
| yield WORD, 'spacing' |
| yield WORD, 'width' |
|
|
|
|
| class ColumnsDef(Control): |
| ''' 4.2.10.2. 단 정의 ''' |
| chid = CHID.COLD |
|
|
| Kind = Enum('normal', 'distribute', 'parallel') |
| Direction = Enum('l2r', 'r2l', 'both') |
| Flags = Flags(UINT16, |
| 0, 1, Kind, 'kind', |
| 2, 9, 'count', |
| 10, 11, Direction, 'direction', |
| 12, 'same_widths') |
|
|
| def attributes(cls): |
| yield cls.Flags, 'flags' |
| yield HWPUNIT16, 'spacing' |
|
|
| def not_same_widths(context, values): |
| ''' flags.same_widths == 0 ''' |
| return not values['flags'].same_widths |
|
|
| def n_entries(member_ref): |
| def n_entries(context, values): |
| n_columns = member_ref(context, values) |
| return n_columns - 1 |
| return n_entries |
|
|
| yield dict(name='column0', type=Column0, |
| condition=not_same_widths) |
| yield dict(name='columns', |
| type=X_ARRAY(Column, |
| n_entries(ref_member_flag('flags', 'count'))), |
| condition=not_same_widths) |
| yield UINT16, 'attr2' |
| yield Border, 'splitter' |
| attributes = classmethod(attributes) |
|
|