Example #1
0
 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;
 }