private static function decode_stak() { $stack = array(); $stak_data = substr(HCImport::$contents, HCImport::$block_index['STAK'][-1]['offset'], HCImport::$block_index['STAK'][-1]['size']); $fields = unpack('Ncards/Ncrap/Nlist', substr($stak_data, 32, 24)); $stack['card_count'] = $fields['cards']; $stack['list_id'] = $fields['list']; $fields = unpack('nuserlevel', substr($stak_data, 60, 2)); $stack['user_level'] = $fields['userlevel']; $fields = unpack('nflags', substr($stak_data, 64, 2)); $stack['cant_peek'] = ($fields['flags'] & 0x400) != 0; $stack['cant_abort'] = ($fields['flags'] & 0x800) != 0; $stack['private_access'] = ($fields['flags'] & 0x2000) != 0; $stack['cant_delete'] = ($fields['flags'] & 0x4000) != 0; $stack['cant_modify'] = ($fields['flags'] & 0x8000) != 0; $fields = unpack('nheight/nwidth', substr($stak_data, 428, 4)); //428 $stack['card_width'] = $fields['width']; $stack['card_height'] = $fields['height']; if ($stack['card_width'] == 0) { $stack['card_width'] = 512; } if ($stack['card_height'] == 0) { $stack['card_height'] = 342; } $stack['script'] = HCImport::macroman_decode(HCImport::cstring(substr($stak_data, 1524))); $fields = unpack('Nftbl/Nstbl', substr($stak_data, 420, 8)); HCImport::$block_index['STAK'][-1]['font_table_id'] = $fields['ftbl']; HCImport::$block_index['STAK'][-1]['style_table_id'] = $fields['stbl']; HCImport::$stack = $stack; }