91 $this->_object = $object;
101 $this->_data =
$data;
104 $this->_dataSize = strlen($this->_data);
109 while ($this->_pos < $this->_dataSize) {
116 case self::DGG: $this->
_readDgg();
break;
118 case self::BSE: $this->
_readBSE();
break;
121 case self::OPT: $this->
_readOPT();
break;
125 case self::DG: $this->
_readDg();
break;
128 case self::SPGR: $this->
_readSpgr();
break;
129 case self::SP: $this->
_readSp();
break;
152 $recVer = (0x000F & $verInstance) >> 0;
155 $recordData = substr($this->_data, $this->_pos + 8, $length);
158 $this->_pos += 8 + $length;
167 $recordData = substr($this->_data, $this->_pos + 8, $length);
170 $this->_pos += 8 + $length;
174 $this->_object->setDggContainer($dggContainer);
185 $recordData = substr($this->_data, $this->_pos + 8, $length);
188 $this->_pos += 8 + $length;
197 $recordData = substr($this->_data, $this->_pos + 8, $length);
200 $this->_pos += 8 + $length;
204 $this->_object->setBstoreContainer($bstoreContainer);
220 $recordData = substr($this->_data, $this->_pos + 8, $length);
223 $this->_pos += 8 + $length;
227 $this->_object->addBSE($BSE);
229 $BSE->setBLIPType($recInstance);
232 $btWin32 = ord($recordData[0]);
235 $btMacOS = ord($recordData[1]);
238 $rgbUid = substr($recordData, 2, 16);
253 $unused1 = ord($recordData{32});
256 $cbName = ord($recordData{33});
259 $unused2 = ord($recordData{34});
262 $unused3 = ord($recordData{35});
265 $nameData = substr($recordData, 36, $cbName);
268 $blipData = substr($recordData, 36 + $cbName);
286 $recordData = substr($this->_data, $this->_pos + 8, $length);
289 $this->_pos += 8 + $length;
294 $rgbUid1 = substr($recordData, 0, 16);
298 if (in_array($recInstance, array(0x046B, 0x06E3))) {
299 $rgbUid2 = substr($recordData, 16, 16);
304 $tag = ord($recordData{
$pos});
308 $data = substr($recordData, $pos);
311 $blip->setData(
$data);
313 $this->_object->setBlip($blip);
327 $recordData = substr($this->_data, $this->_pos + 8, $length);
330 $this->_pos += 8 + $length;
335 $rgbUid1 = substr($recordData, 0, 16);
339 if ($recInstance == 0x06E1) {
340 $rgbUid2 = substr($recordData, 16, 16);
345 $tag = ord($recordData{
$pos});
349 $data = substr($recordData, $pos);
352 $blip->setData(
$data);
354 $this->_object->setBlip($blip);
368 $recordData = substr($this->_data, $this->_pos + 8, $length);
371 $this->_pos += 8 + $length;
387 $recordData = substr($this->_data, $this->_pos + 8, $length);
390 $this->_pos += 8 + $length;
399 $recordData = substr($this->_data, $this->_pos + 8, $length);
402 $this->_pos += 8 + $length;
411 $recordData = substr($this->_data, $this->_pos + 8, $length);
414 $this->_pos += 8 + $length;
418 $this->_object->setDgContainer($dgContainer);
420 $escher =
$reader->load($recordData);
429 $recordData = substr($this->_data, $this->_pos + 8, $length);
432 $this->_pos += 8 + $length;
443 $recordData = substr($this->_data, $this->_pos + 8, $length);
446 $this->_pos += 8 + $length;
453 $this->_object->setSpgrContainer($spgrContainer);
456 $this->_object->addChild($spgrContainer);
460 $escher =
$reader->load($recordData);
469 $recordData = substr($this->_data, $this->_pos + 8, $length);
473 $this->_object->addChild($spContainer);
476 $this->_pos += 8 + $length;
480 $escher =
$reader->load($recordData);
489 $recordData = substr($this->_data, $this->_pos + 8, $length);
492 $this->_pos += 8 + $length;
506 $recordData = substr($this->_data, $this->_pos + 8, $length);
509 $this->_pos += 8 + $length;
523 $recordData = substr($this->_data, $this->_pos + 8, $length);
526 $this->_pos += 8 + $length;
535 $recordData = substr($this->_data, $this->_pos + 8, $length);
538 $this->_pos += 8 + $length;
568 $this->_object->setStartOffsetX($startOffsetX);
571 $this->_object->setStartOffsetY($startOffsetY);
577 $this->_object->setEndOffsetX($endOffsetX);
580 $this->_object->setEndOffsetY($endOffsetY);
589 $recordData = substr($this->_data, $this->_pos + 8, $length);
592 $this->_pos += 8 + $length;
603 $splicedComplexData = substr(
$data, 6 * $n);
606 for ($i = 0; $i < $n; ++$i) {
608 $fopte = substr(
$data, 6 * $i, 6);
614 $opidOpid = (0x3FFF & $opid) >> 0;
617 $opidFBid = (0x4000 & $opid) >> 14;
620 $opidFComplex = (0x8000 & $opid) >> 15;
626 $complexData = substr($splicedComplexData, 0, $op);
627 $splicedComplexData = substr($splicedComplexData, $op);
630 $value = $complexData;
636 $this->_object->setOPT($opidOpid, $value);