Exemplo n.º 1
0
 /**
  * Writes a data-record to the file.
  * @param mixed[] $msg_def
  * @param mixed[] $message_data
  * @return \Fit\Writer
  */
 protected function writeMessageData($msg_def, $message_data)
 {
     $local_msg_type = $this->getLocalMsgType($msg_def['global_msg_number']);
     $this->writeRecordHeaderByte($local_msg_type, false);
     //en nu de velddata wegschrijven
     foreach ($msg_def['fields'] as $field_def) {
         if (isset($message_data[$field_def[\Fit\Field::NAME]])) {
             $val = $message_data[$field_def[\Fit\Field::NAME]];
         } else {
             $val = null;
         }
         if (is_numeric($val) && $field_def[\Fit\Field::FACTOR] > 0) {
             $val /= $field_def[\Fit\Field::FACTOR];
         }
         $big_endian = $msg_def['architecture'] === 1;
         switch ($field_def[\Fit\Field::TYPE_NUMBER]) {
             case \Fit\Core::STRING:
                 $this->writer->writeString8((string) $val, $field_def[\Fit\Field::SIZE]);
                 break;
             case \Fit\Core::SINT8:
                 $this->writer->writeInt8($val);
                 break;
             case \Fit\Core::ENUM:
             case \Fit\Core::UINT8Z:
             case \Fit\Core::UINT8:
                 $this->writer->writeUInt8($val);
                 break;
             case \Fit\Core::SINT16:
                 $big_endian ? $this->writer->writeInt16BE($val) : $this->writer->writeInt16LE($val);
                 break;
             case \Fit\Core::UINT16Z:
             case \Fit\Core::UINT16:
                 $big_endian ? $this->writer->writeUInt16BE($val) : $this->writer->writeUInt16LE($val);
                 break;
             case \Fit\Core::SINT32:
                 $big_endian ? $this->writer->writeInt32BE($val) : $this->writer->writeInt32LE($val);
                 break;
             case \Fit\Core::UINT32Z:
             case \Fit\Core::UINT32:
                 $big_endian ? $this->writer->writeUInt32BE($val) : $this->writer->writeUInt32LE($val);
                 break;
             case \Fit\Core::FLOAT32:
                 $big_endian ? $this->writer->writeFloatBE($val) : $this->writer->writeFloatLE($val);
                 break;
             case \Fit\Core::FLOAT64:
                 $big_endian ? $this->writer->writeInt64BE($val) : $this->writer->writeInt64LE($val);
                 break;
             case \Fit\Core::BYTE:
             default:
                 $this->writer->write($val, $field_def[\Fit\Field::SIZE]);
         }
     }
     return $this;
 }
Exemplo n.º 2
0
 /**
  * Writes the frame raw data without the header.
  *
  * @param Zend_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     $writer->writeString8($this->_owner, 1)->writeInt8($this->_rating);
     if ($this->_counter > 0xffffffff) {
         $writer->writeInt64BE($this->_counter);
     } else {
         if ($this->_counter > 0) {
             $writer->writeUInt32BE($this->_counter);
         }
     }
 }
Exemplo n.º 3
0
 /**
  * Writes the frame raw data without the header.
  *
  * @param Zend_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     if ($this->_counter > 4294967295) {
         $writer->writeInt64BE($this->_counter);
         // UInt64
     } else {
         $writer->writeUInt32BE($this->_counter);
     }
 }
Exemplo n.º 4
0
 /**
  * Writes the box data.
  *
  * @param Zend_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     $writer->writeUInt32BE($entryCount = count($this->_chunkOffsetTable));
     for ($i = 1; $i <= $entryCount; $i++) {
         $writer->writeInt64BE($this->_chunkOffsetTable[$i]);
     }
 }
Exemplo n.º 5
0
 /**
  * Writes the box header. Subclasses should overwrite this method and call
  * the parent method first and then write the box related data.
  *
  * @param Zend_Io_Writer $writer The writer object.
  * @return void
  */
 protected function _writeData($writer)
 {
     if (get_class($this) == "Zend_Media_Iso14496_Box") {
         require_once 'Zend/Media/Iso14496/Exception.php';
         throw new Zend_Media_Iso14496_Exception('Unknown box \'' . $this->getType() . '\' cannot be written.');
     }
     $this->_size = $this->getHeapSize();
     if ($this->_size > 4294967295.0) {
         $writer->writeUInt32BE(1);
     } else {
         $writer->writeUInt32BE($this->_size);
     }
     if (strlen($this->_type) > 4) {
         $writer->write('uuid');
     } else {
         $writer->write($this->_type);
     }
     if ($this->_size > 4294967295.0) {
         $writer->writeInt64BE($this->_size);
     }
     if (strlen($this->_type) > 4) {
         $writer->writeGuid($this->_type);
     }
 }