private function readRecordOfficeArtClientData($stream, $pos)
{
$arrayReturn = array('length' => 0);
$data = $this->loadRecordHeader($stream, $pos);
if ($data['recVer'] == 0xf && $data['recInstance'] == 0x0 && $data['recType'] == 0xf011) {
$arrayReturn['length'] += 8;
// shapeFlagsAtom (9 bytes)
$dataShapeFlagsAtom = $this->readRecordShapeFlagsAtom($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $dataShapeFlagsAtom['length'];
// shapeFlags10Atom (9 bytes)
$dataShapeFlags10Atom = $this->readRecordShapeFlags10Atom($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $dataShapeFlags10Atom['length'];
// exObjRefAtom (12 bytes)
$dataExObjRefAtom = $this->readRecordExObjRefAtom($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $dataExObjRefAtom['length'];
// animationInfo (variable)
$dataAnimationInfo = $this->readRecordAnimationInfoContainer($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $dataAnimationInfo['length'];
// mouseClickInteractiveInfo (variable)
$mouseClickInfo = $this->readRecordMouseClickInteractiveInfoContainer($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $mouseClickInfo['length'];
// mouseOverInteractiveInfo (variable)
$mouseOverInfo = $this->readRecordMouseOverInteractiveInfoContainer($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $mouseOverInfo['length'];
// placeholderAtom (16 bytes)
$dataPlaceholderAtom = $this->readRecordPlaceholderAtom($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $dataPlaceholderAtom['length'];
// recolorInfoAtom (variable)
$dataRecolorInfo = $this->readRecordRecolorInfoAtom($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $dataRecolorInfo['length'];
// rgShapeClientRoundtripData (variable)
$array = array(self::RT_PROGTAGS, self::RT_ROUNDTRIPNEWPLACEHOLDERID12ATOM, self::RT_ROUNDTRIPSHAPEID12ATOM, self::RT_ROUNDTRIPHFPLACEHOLDER12ATOM, self::RT_ROUNDTRIPSHAPECHECKSUMFORCL12ATOM);
do {
$dataHeaderRG = $this->loadRecordHeader($stream, $pos + $arrayReturn['length']);
if (in_array($dataHeaderRG['recType'], $array)) {
switch ($dataHeaderRG['recType']) {
case self::RT_PROGTAGS:
$dataRG = $this->readRecordShapeProgTagsContainer($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $dataRG['length'];
break;
case self::RT_ROUNDTRIPHFPLACEHOLDER12ATOM:
$dataRG = $this->readRecordRoundTripHFPlaceholder12Atom($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $dataRG['length'];
break;
case self::RT_ROUNDTRIPSHAPEID12ATOM:
$dataRG = $this->readRecordRoundTripShapeId12Atom($stream, $pos + $arrayReturn['length']);
$arrayReturn['length'] += $dataRG['length'];
break;
default:
throw new \Exception('Feature not implemented (l.' . __LINE__ . ' : 0x' . dechex($dataHeaderRG['recType']) . ')');
}
}
} while (in_array($dataHeaderRG['recType'], $array));
}
return $arrayReturn;
}