Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2009, Google Inc. | 2 * Copyright 2009, Google Inc. |
| 3 * All rights reserved. | 3 * All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 40 #include "core/cross/buffer.h" | 40 #include "core/cross/buffer.h" |
| 41 #include "core/cross/curve.h" | 41 #include "core/cross/curve.h" |
| 42 #include "core/cross/iclass_manager.h" | 42 #include "core/cross/iclass_manager.h" |
| 43 #include "core/cross/pack.h" | 43 #include "core/cross/pack.h" |
| 44 #include "core/cross/param_array.h" | 44 #include "core/cross/param_array.h" |
| 45 #include "core/cross/primitive.h" | 45 #include "core/cross/primitive.h" |
| 46 #include "core/cross/shape.h" | 46 #include "core/cross/shape.h" |
| 47 #include "core/cross/skin.h" | 47 #include "core/cross/skin.h" |
| 48 #include "core/cross/texture.h" | 48 #include "core/cross/texture.h" |
| 49 #include "core/cross/transform.h" | 49 #include "core/cross/transform.h" |
| 50 #include "import/cross/destination_buffer.h" | |
| 50 #include "import/cross/iarchive_generator.h" | 51 #include "import/cross/iarchive_generator.h" |
| 51 #include "import/cross/memory_buffer.h" | 52 #include "import/cross/memory_buffer.h" |
| 52 #include "import/cross/memory_stream.h" | 53 #include "import/cross/memory_stream.h" |
| 53 #include "serializer/cross/version.h" | 54 #include "serializer/cross/version.h" |
| 54 #include "utils/cross/structured_writer.h" | 55 #include "utils/cross/structured_writer.h" |
| 55 | 56 |
| 56 using std::string; | 57 using std::string; |
| 57 | 58 |
| 58 namespace o3d { | 59 namespace o3d { |
| 59 | 60 |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 338 | 339 |
| 339 StructuredWriter* writer_; | 340 StructuredWriter* writer_; |
| 340 }; | 341 }; |
| 341 | 342 |
| 342 class CustomVisitor : public VisitorBase<CustomVisitor> { | 343 class CustomVisitor : public VisitorBase<CustomVisitor> { |
| 343 public: | 344 public: |
| 344 explicit CustomVisitor(StructuredWriter* writer, | 345 explicit CustomVisitor(StructuredWriter* writer, |
| 345 BinaryArchiveManager* binary_archive_manager) | 346 BinaryArchiveManager* binary_archive_manager) |
| 346 : writer_(writer), | 347 : writer_(writer), |
| 347 binary_archive_manager_(binary_archive_manager) { | 348 binary_archive_manager_(binary_archive_manager) { |
| 349 Enable<DestinationBuffer>(&CustomVisitor::Visit); | |
| 348 Enable<Buffer>(&CustomVisitor::Visit); | 350 Enable<Buffer>(&CustomVisitor::Visit); |
| 349 Enable<Curve>(&CustomVisitor::Visit); | 351 Enable<Curve>(&CustomVisitor::Visit); |
| 350 Enable<Primitive>(&CustomVisitor::Visit); | 352 Enable<Primitive>(&CustomVisitor::Visit); |
| 351 Enable<Skin>(&CustomVisitor::Visit); | 353 Enable<Skin>(&CustomVisitor::Visit); |
| 352 Enable<SkinEval>(&CustomVisitor::Visit); | 354 Enable<SkinEval>(&CustomVisitor::Visit); |
| 353 Enable<StreamBank>(&CustomVisitor::Visit); | 355 Enable<StreamBank>(&CustomVisitor::Visit); |
| 354 Enable<Texture2D>(&CustomVisitor::Visit); | 356 Enable<Texture2D>(&CustomVisitor::Visit); |
| 355 Enable<TextureCUBE>(&CustomVisitor::Visit); | 357 Enable<TextureCUBE>(&CustomVisitor::Visit); |
| 356 } | 358 } |
| 357 | 359 |
| 358 private: | 360 private: |
| 361 void Visit(DestinationBuffer* buffer) { | |
| 362 Visit(static_cast<NamedObject*>(buffer)); | |
|
apatrick
2009/07/07 00:58:25
Comment why its not the base class.
| |
| 363 writer_->WritePropertyName("numElements"); | |
| 364 Serialize(writer_, buffer->num_elements()); | |
| 365 writer_->WritePropertyName("fields"); | |
| 366 writer_->OpenArray(); | |
| 367 const FieldRefArray& fields = buffer->fields(); | |
| 368 for (size_t ii = 0; ii < fields.size(); ++ii) { | |
| 369 Field* field = fields[ii].Get(); | |
| 370 writer_->BeginCompacting(); | |
| 371 writer_->OpenObject(); | |
| 372 writer_->WritePropertyName("id"); | |
| 373 Serialize(writer_, field->id()); | |
| 374 writer_->WritePropertyName("type"); | |
| 375 Serialize(writer_, field->GetClassName()); | |
| 376 writer_->WritePropertyName("numComponents"); | |
| 377 Serialize(writer_, field->num_components()); | |
| 378 writer_->CloseObject(); | |
| 379 writer_->EndCompacting(); | |
| 380 } | |
| 381 writer_->CloseArray(); | |
| 382 } | |
| 383 | |
| 359 void Visit(Buffer* buffer) { | 384 void Visit(Buffer* buffer) { |
| 360 Visit(static_cast<NamedObject*>(buffer)); | 385 Visit(static_cast<NamedObject*>(buffer)); |
| 361 | 386 |
| 362 writer_->WritePropertyName("fields"); | 387 writer_->WritePropertyName("fields"); |
| 363 writer_->OpenArray(); | 388 writer_->OpenArray(); |
| 364 const FieldRefArray& fields = buffer->fields(); | 389 const FieldRefArray& fields = buffer->fields(); |
| 365 for (size_t ii = 0; ii < fields.size(); ++ii) { | 390 for (size_t ii = 0; ii < fields.size(); ++ii) { |
| 366 Field* field = fields[ii].Get(); | 391 Field* field = fields[ii].Get(); |
| 367 Serialize(writer_, field->id()); | 392 Serialize(writer_, field->id()); |
| 368 } | 393 } |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 578 | 603 |
| 579 StructuredWriter* writer_; | 604 StructuredWriter* writer_; |
| 580 }; | 605 }; |
| 581 | 606 |
| 582 class BinaryVisitor : public VisitorBase<BinaryVisitor> { | 607 class BinaryVisitor : public VisitorBase<BinaryVisitor> { |
| 583 public: | 608 public: |
| 584 explicit BinaryVisitor(BinaryArchiveManager* binary_archive_manager) | 609 explicit BinaryVisitor(BinaryArchiveManager* binary_archive_manager) |
| 585 : binary_archive_manager_(binary_archive_manager) { | 610 : binary_archive_manager_(binary_archive_manager) { |
| 586 Enable<Curve>(&BinaryVisitor::Visit); | 611 Enable<Curve>(&BinaryVisitor::Visit); |
| 587 Enable<IndexBuffer>(&BinaryVisitor::Visit); | 612 Enable<IndexBuffer>(&BinaryVisitor::Visit); |
| 613 Enable<DestinationBuffer>(&BinaryVisitor::Visit); | |
| 588 Enable<VertexBufferBase>(&BinaryVisitor::Visit); | 614 Enable<VertexBufferBase>(&BinaryVisitor::Visit); |
| 589 Enable<Skin>(&BinaryVisitor::Visit); | 615 Enable<Skin>(&BinaryVisitor::Visit); |
| 590 } | 616 } |
| 591 | 617 |
| 592 private: | 618 private: |
| 593 void Visit(ObjectBase* object) { | 619 void Visit(ObjectBase* object) { |
| 594 } | 620 } |
| 595 | 621 |
| 596 // TODO: Replace this when we have code to serialize to the | 622 // TODO: Replace this when we have code to serialize to the |
| 597 // final binary format. This is just placeholder. | 623 // final binary format. This is just placeholder. |
| 598 void Visit(Curve* curve) { | 624 void Visit(Curve* curve) { |
| 599 Visit(static_cast<NamedObject*>(curve)); | 625 Visit(static_cast<NamedObject*>(curve)); |
| 600 | 626 |
| 601 MemoryBuffer<uint8> serialized_data; | 627 MemoryBuffer<uint8> serialized_data; |
| 602 SerializeCurve(*curve, &serialized_data); | 628 SerializeCurve(*curve, &serialized_data); |
| 603 | 629 |
| 604 binary_archive_manager_->WriteObjectBinary( | 630 binary_archive_manager_->WriteObjectBinary( |
| 605 curve, | 631 curve, |
| 606 "curve-keys.bin", | 632 "curve-keys.bin", |
| 607 serialized_data, | 633 serialized_data, |
| 608 serialized_data.GetLength()); | 634 serialized_data.GetLength()); |
| 609 } | 635 } |
| 610 | 636 |
| 637 void Visit(DestinationBuffer* buffer) { | |
| 638 // Destination buffers should NOT have their contents serialized. | |
| 639 Visit(static_cast<Buffer*>(buffer)); | |
| 640 } | |
| 641 | |
| 611 void Visit(IndexBuffer* buffer) { | 642 void Visit(IndexBuffer* buffer) { |
| 612 Visit(static_cast<Buffer*>(buffer)); | 643 Visit(static_cast<Buffer*>(buffer)); |
| 613 | 644 |
| 614 MemoryBuffer<uint8> serialized_data; | 645 MemoryBuffer<uint8> serialized_data; |
| 615 SerializeBuffer(*buffer, &serialized_data); | 646 SerializeBuffer(*buffer, &serialized_data); |
| 616 | 647 |
| 617 binary_archive_manager_->WriteObjectBinary( | 648 binary_archive_manager_->WriteObjectBinary( |
| 618 buffer, | 649 buffer, |
| 619 "index-buffers.bin", | 650 "index-buffers.bin", |
| 620 serialized_data, | 651 serialized_data, |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 778 | 809 |
| 779 void Serializer::SerializeSection(ObjectBase* object, Section section) { | 810 void Serializer::SerializeSection(ObjectBase* object, Section section) { |
| 780 DCHECK(section >= 0 && section < NUM_SECTIONS); | 811 DCHECK(section >= 0 && section < NUM_SECTIONS); |
| 781 sections_[section].visitor_->Accept(object); | 812 sections_[section].visitor_->Accept(object); |
| 782 } | 813 } |
| 783 | 814 |
| 784 void Serializer::SerializeParam(Param* param) { | 815 void Serializer::SerializeParam(Param* param) { |
| 785 param_visitor_->Accept(param); | 816 param_visitor_->Accept(param); |
| 786 } | 817 } |
| 787 } // namespace o3d | 818 } // namespace o3d |
| OLD | NEW |