Ejemplo n.º 1
0
  bool Node::Write(const TypeConfig& /*typeConfig*/,
                   FileWriter& writer) const
  {
    writer.WriteNumber(featureValueBuffer.GetType()->GetId());

    if (!featureValueBuffer.Write(writer)) {
      return false;
    }

    writer.WriteCoord(coords);

    return !writer.HasError();
  }
Ejemplo n.º 2
0
  bool RouteNode::Write(FileWriter& writer) const
  {
    writer.WriteNumber(id);
    writer.WriteCoord(coord);

    writer.WriteNumber((uint32_t)objects.size());
    writer.WriteNumber((uint32_t)paths.size());
    writer.WriteNumber((uint32_t)excludes.size());

    Id lastFileOffset=0;

    for (const auto& object : objects) {
      FileOffset offset=object.object.GetFileOffset()-lastFileOffset;

      if (object.object.GetType()==refWay) {
        offset=offset*2;
      }
      else if (object.object.GetType()==refArea) {
        offset=offset*2+1;
      }
      else {
        assert(false);
      }

      writer.WriteNumber(offset);
      writer.WriteNumber(object.type);
      writer.Write(object.maxSpeed);
      writer.Write(object.grade);

      lastFileOffset=object.object.GetFileOffset();
    }

    if (!paths.empty()) {

      for (const auto& path : paths) {
        writer.WriteFileOffset(path.offset);
        writer.WriteNumber(path.objectIndex);
        //writer.Write(paths[i].bearing);
        writer.Write(path.flags);
        writer.WriteNumber((uint32_t)floor(path.distance*(1000.0*100.0)+0.5));
      }
    }

    for (const auto& exclude : excludes) {
      writer.Write(exclude.source);
      writer.WriteNumber(exclude.targetIndex);
    }

    return !writer.HasError();
  }
Ejemplo n.º 3
0
  bool RawNode::Write(const TypeConfig& typeConfig,
                      FileWriter& writer) const
  {
    writer.WriteNumber(id);

    writer.WriteTypeId(featureValueBuffer.GetType()->GetNodeId(),
                       typeConfig.GetNodeTypeIdBytes());

    if (!featureValueBuffer.GetType()->GetIgnore()) {
      if (!featureValueBuffer.Write(writer)) {
        return false;
      }
    }

    writer.WriteCoord(coords);


    return !writer.HasError();
  }
Ejemplo n.º 4
0
  bool Preprocess::Callback::DumpBoundingBox()
  {
    progress.SetAction("Generating bounding.dat");

    FileWriter writer;

    if (!writer.Open(AppendFileToDir(parameter.GetDestinationDirectory(),
                                     "bounding.dat"))) {
      progress.Error("Cannot create 'bounding.dat'");
      return false;
    }

    if (!writer.WriteCoord(minCoord) ||
        !writer.WriteCoord(maxCoord)) {
      progress.Error("Cannot write to 'bounding.dat'");
      return false;
    }

    return writer.Close();
  }
Ejemplo n.º 5
0
 /**
  * Writes the data to the given FileWriter
  *
  * @throws IOException
  */
 void RawCoord::Write(FileWriter& writer) const
 {
   writer.WriteNumber(id);
   writer.WriteCoord(coord);
 }
Ejemplo n.º 6
0
 /**
  * Writes the data to the given FileWriter
  *
  * @throws IOException
  */
 void RawCoord::Write(const TypeConfig& /*typeConfig*/,
                     FileWriter& writer) const
 {
   writer.WriteNumber(id);
   writer.WriteCoord(coord);
 }