Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(249)

Side by Side Diff: serializer/cross/serializer.cc

Issue 149236: Add o3djs.DestinationBuffer to converter.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/o3d/
Patch Set: '' Created 11 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698