Beispiel #1
0
def _maketag(d, encode_option):
    tag = '\x3f\x03'
    tag += _h32(_calctaglen(d, encode_option))
    for k in d:
        value = unicode(d[k]).encode(encode_option, 'ignore')
        tag += '\x96' + _h16(len(k)+2) + '\x00' + k + '\x00'
        tag += '\x96' + _h16(len(value)+2) + '\x00' + value + '\x00'
        tag += '\x1d'
    tag += '\x00'
    return tag
Beispiel #2
0
 def set_framecount(self, num):
     "Framecount を置き換える"
     self.value = \
         self.value[:self.framecount_offset] + \
         _h16(num) + \
         self.value[(self.framecount_offset + 2):]
     self.framecount = num
Beispiel #3
0
 def set_character_id(self, num):
     "CharacterId を置き換える"
     assert isinstance(num, int)
     self.value = \
         self.value[:self.character_id_offset] + _h16(num) + \
         self.value[(self.character_id_offset + 2):]
     self.character_id = num
Beispiel #4
0
 def set_target_character_id(self, num):
     assert isinstance(num, int)
     assert hasattr(self, 'target_character_id_offset')
     self.value = \
         self.value[:self.target_character_id_offset] + _h16(num) + \
         self.value[(self.target_character_id_offset + 2):]
     self.target_character_id = num
Beispiel #5
0
    def set_length(self, num):
        """
        タグ(block)の length を変える. length の長さによって形式が変わる
        See swf_file_format_spec_v10.pdf (p.27)
        """
        old_tag_code_and_length = le2byte(self.value[:2])
        length = old_tag_code_and_length & 0x3f

        if length != 63:
            """
            short. TagCodeAndLength は 2 byte のみ
            """
            tag_code_and_length = (self.tag << 6) + num
            self.value = _h16(tag_code_and_length) + self.value[2:]
        else:
            """
            large. TagCodeAndLength は 2 byte + 4 byte
            後ろの 4 byte の length を変えれば良い
            """
            self.value = self.value[:(self.content_offset - 4)] + _h32(num) + \
                self.value[self.content_offset:]
        self.length = num
Beispiel #6
0
 def set_depth(self, num):
     assert isinstance(num, int)
     self.value = \
         self.value[:self.depth_offset] + _h16(num) + \
         self.value[(self.depth_offset + 2):]
     self.depth = num