本文整理汇总了Python中pymei.MeiDocument.getElementById方法的典型用法代码示例。如果您正苦于以下问题:Python MeiDocument.getElementById方法的具体用法?Python MeiDocument.getElementById怎么用?Python MeiDocument.getElementById使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类pymei.MeiDocument
的用法示例。
在下文中一共展示了MeiDocument.getElementById方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_elementbyid
# 需要导入模块: from pymei import MeiDocument [as 别名]
# 或者: from pymei.MeiDocument import getElementById [as 别名]
def test_elementbyid(self):
mei = MeiElement("mei")
mus = MeiElement("music")
body = MeiElement("body")
staff = MeiElement("staff")
staff2 = MeiElement("staff")
n1 = MeiElement("note")
wantedId = n1.id
n2 = MeiElement("note")
n3 = MeiElement("note")
n4 = MeiElement("note")
mei.addChild(mus)
mus.addChild(body)
body.addChild(staff)
body.addChild(staff2)
staff.addChild(n1)
staff.addChild(n2)
staff.addChild(n3)
staff2.addChild(n4)
doc = MeiDocument()
self.assertEqual(None, doc.getElementById(wantedId))
doc.root = mei
self.assertEqual(n1, doc.getElementById(wantedId))
self.assertEqual(None, doc.getElementById("unknownID"))
n5 = MeiElement("note")
newid = n5.id
staff2.addChild(n5)
self.assertEqual(n5, doc.getElementById(newid))
staff2.removeChild(n5)
self.assertEqual(None, doc.getElementById(newid))
示例2: __init__
# 需要导入模块: from pymei import MeiDocument [as 别名]
# 或者: from pymei.MeiDocument import getElementById [as 别名]
#.........这里部分代码省略.........
group definition.
'''
if len(staff_grps) == 0:
# termination condition (or no match found)
return 0
else:
sg_staves = staff_grps[0].getChildrenByName('staffDef')
sgs = staff_grps[0].getChildrenByName('staffGrp')
if num_staves == len(sg_staves):
# no need to look at subsequent staff groups
n = int(sg_staves[0].getAttribute('n').value)
else:
n = self._calc_staff_num(num_staves, sgs)
return n + self._calc_staff_num(num_staves, staff_grps[1:])
def _calc_measure_zone(self, measures):
'''
Calculate the bounding box of the provided measures
by calculating the min and max of the bounding boxes
of the staves which compose the measure.
'''
# for each measure
for m in measures:
staff_measure_zones = []
min_ulx = sys.maxint
min_uly = sys.maxint
max_lrx = -sys.maxint - 1
max_lry = -sys.maxint - 1
for s in m.getChildrenByName('staff'):
# have to skip # at the beginning of the id ref since using URIs
s_zone = self.meidoc.getElementById(s.getAttribute('facs').value[1:])
ulx = int(s_zone.getAttribute('ulx').value)
if ulx < min_ulx:
min_ulx = ulx
uly = int(s_zone.getAttribute('uly').value)
if uly < min_uly:
min_uly = uly
lrx = int(s_zone.getAttribute('lrx').value)
if lrx > max_lrx:
max_lrx = lrx
lry = int(s_zone.getAttribute('lry').value)
if lry > max_lry:
max_lry = lry
m_zone = self._create_zone(min_ulx, min_uly, max_lrx, max_lry)
m.addAttribute('facs', '#'+m_zone.getId())
surface = self.meidoc.getElementsByName('surface')[0]
surface.addChild(m_zone)
def _create_header(self, rodan_version='0.1'):
'''
Create a meiHead element
'''
mei_head = MeiElement('meiHead')
today = datetime.date.today().isoformat()
app_name = 'RODAN/barlineFinder'
# file description
示例3: AomrMeiOutput
# 需要导入模块: from pymei import MeiDocument [as 别名]
# 或者: from pymei.MeiDocument import getElementById [as 别名]
#.........这里部分代码省略.........
for sysnum in sorted(self._recognition_results.keys()):
syst = self._recognition_results[sysnum]
lg.debug("sysnum:{0}".format(sysnum))
self.system = syst
self.systembreak = self._parse_system(sysnum, syst)
# z = mod.zone_()
z = MeiElement("zone")
# z.id = self._idgen()
# z.attributes = {'ulx': self.system['coord'][0], 'uly': self.system['coord'][1], \
# 'lrx': self.system['coord'][2], 'lry': self.system['coord'][3]}
z.addAttribute("ulx", str(self.system['coord'][0]))
z.addAttribute("uly", str(self.system['coord'][1]))
z.addAttribute("lrx", str(self.system['coord'][2]))
z.addAttribute("lry", str(self.system['coord'][3]))
self.surface.addChild(z)
# self.system.facs = z.id
s = self._create_system_element()
s.facs = z.id
s.addAttribute("facs", s.facs)
self.pg.addChild(s)
self.systembreak.addAttribute("systemref", s.id)
self.mei.addChild(self.music)
# if not self.staffel.descendants_by_name('neume'):
if not self.staffel.getDescendantsByName("neume"):
self.staffgrp.removeChild(self.staffdef)
self.section.removeChild(self.staffel)
# self.md = MeiDocument.MeiDocument()
# self.md.addelement(self.mei)
self.md = MeiDocument()
self.md.setRootElement(self.mei)
print XmlExport.meiElementToText(self.md.getElementById(self.graphic.getId()))
def _parse_system(self, sysnum, syst):
sysbrk = self._create_sb_element()
# sysbrk.attributes = {"n": sysnum + 1}
sysnum = int(sysnum)
sysbrk.addAttribute("n", "%d" % (sysnum+1))
self.layer.addChild(sysbrk)
# staffel = self._create_staff_element()
# staffel.addAttribute("n", stfnum)
for c in self.system['content']:
# parse the glyphs per staff.
self.glyph = c
if c['type'] == 'neume':
if not self.glyph['form']:
lg.debug("Skipping glyph: {0}".format(self.glyph))
continue
if self.glyph['form'][0] not in self.NEUME_NOTES.keys():
continue
else:
self.layer.addChild(self._create_neume_element())
elif c['type'] == 'clef':
self.layer.addChild(self._create_clef_element())
elif c['type'] == 'division':
self.layer.addChild(self._create_division_element())
if "final" in c['form']:
self.staff_num += 1
new_staff = self._create_staff_element()
new_staffdef = self._create_staffdef_element()
# new_staffdef.attributes = {'n': self.staff_num} TROUBLE
new_staffdef.addAttribute('n', str(self.staff_num))