Commit: be4c8e66450f17b955a655e1f7114102b0ebd771
Author: Lukas Tönne
Date:   Mon Mar 16 09:43:27 2015 +0100
Branches: alembic_pointcache
https://developer.blender.org/rBbe4c8e66450f17b955a655e1f7114102b0ebd771

Simplification of the archive init functions in writers and readers.

Now the base types for readers/writers are not nominally forming the
interface any more (they may be removed entirely later). This makes
possible a cleaner init method directly in the Abc Writer/Reader
classes.

Further work may be required in this area.

===================================================================

M       source/blender/blenkernel/intern/cache_library.c
M       source/blender/editors/io/io_cache_library.c
M       source/blender/pointcache/PTC_api.cpp
M       source/blender/pointcache/PTC_api.h
M       source/blender/pointcache/alembic/abc_cloth.cpp
M       source/blender/pointcache/alembic/abc_cloth.h
M       source/blender/pointcache/alembic/abc_group.cpp
M       source/blender/pointcache/alembic/abc_group.h
M       source/blender/pointcache/alembic/abc_mesh.cpp
M       source/blender/pointcache/alembic/abc_mesh.h
M       source/blender/pointcache/alembic/abc_object.cpp
M       source/blender/pointcache/alembic/abc_object.h
M       source/blender/pointcache/alembic/abc_particles.cpp
M       source/blender/pointcache/alembic/abc_particles.h
M       source/blender/pointcache/alembic/abc_reader.cpp
M       source/blender/pointcache/alembic/abc_reader.h
M       source/blender/pointcache/alembic/abc_writer.h
M       source/blender/pointcache/intern/ptc_types.h
M       source/blender/pointcache/intern/reader.cpp
M       source/blender/pointcache/intern/reader.h
M       source/blender/pointcache/intern/writer.cpp
M       source/blender/pointcache/intern/writer.h

===================================================================

diff --git a/source/blender/blenkernel/intern/cache_library.c 
b/source/blender/blenkernel/intern/cache_library.c
index 0b63ad5..3ae8f8c 100644
--- a/source/blender/blenkernel/intern/cache_library.c
+++ b/source/blender/blenkernel/intern/cache_library.c
@@ -846,7 +846,7 @@ struct PTCWriterArchive 
*BKE_cache_library_writers_open_archive(Scene *scene, Ca
        archive = PTC_open_writer_archive(scene, filename);
        
        for (link = writers->first; link; link = link->next) {
-               PTC_writer_set_archive(link->writer, archive);
+               PTC_writer_init(link->writer, archive);
        }
        
        for (link = writers->first; link; link = link->next) {
@@ -991,7 +991,7 @@ eCacheReadSampleResult 
BKE_cache_library_read_derived_mesh(Scene *scene, float f
                
                BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, 
cachelib->id.lib, filename, sizeof(filename));
                archive = PTC_open_reader_archive(scene, filename);
-               PTC_reader_set_archive(reader, archive);
+               PTC_reader_init(reader, archive);
                
                result = BKE_cache_read_result(PTC_read_sample(reader, frame));
                item->read_result = result;
@@ -1021,7 +1021,7 @@ eCacheReadSampleResult 
BKE_cache_library_read_hair_dynamics(Scene *scene, float
                
                BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, 
cachelib->id.lib, filename, sizeof(filename));
                archive = PTC_open_reader_archive(scene, filename);
-               PTC_reader_set_archive(reader, archive);
+               PTC_reader_init(reader, archive);
                
                result = BKE_cache_read_result(PTC_read_sample(reader, frame));
                item->read_result = result;
@@ -1049,7 +1049,7 @@ eCacheReadSampleResult 
BKE_cache_library_read_particles(Scene *scene, float fram
                
                BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, 
cachelib->id.lib, filename, sizeof(filename));
                archive = PTC_open_reader_archive(scene, filename);
-               PTC_reader_set_archive(reader, archive);
+               PTC_reader_init(reader, archive);
                
                result = BKE_cache_read_result(PTC_read_sample(reader, frame));
                item->read_result = result;
@@ -1077,7 +1077,7 @@ eCacheReadSampleResult 
BKE_cache_library_read_particles_pathcache_parents(Scene
                
                BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, 
cachelib->id.lib, filename, sizeof(filename));
                archive = PTC_open_reader_archive(scene, filename);
-               PTC_reader_set_archive(reader, archive);
+               PTC_reader_init(reader, archive);
                
                result = BKE_cache_read_result(PTC_read_sample(reader, frame));
                item->read_result = result;
@@ -1105,7 +1105,7 @@ eCacheReadSampleResult 
BKE_cache_library_read_particles_pathcache_children(Scene
                
                BKE_cache_archive_path(cachelib->filepath, (ID *)cachelib, 
cachelib->id.lib, filename, sizeof(filename));
                archive = PTC_open_reader_archive(scene, filename);
-               PTC_reader_set_archive(reader, archive);
+               PTC_reader_init(reader, archive);
                
                result = BKE_cache_read_result(PTC_read_sample(reader, frame));
                item->read_result = result;
@@ -1236,7 +1236,7 @@ bool BKE_cache_read_dupligroup(Main *bmain, Scene *scene, 
float frame, eCacheLib
                        archive = PTC_open_reader_archive(scene, filename);
                        
                        reader = PTC_reader_dupligroup(dupgroup->id.name, 
dupgroup, dupcache);
-                       PTC_reader_set_archive(reader, archive);
+                       PTC_reader_init(reader, archive);
                        
                        result = BKE_cache_read_result(PTC_read_sample(reader, 
frame));
                        
diff --git a/source/blender/editors/io/io_cache_library.c 
b/source/blender/editors/io/io_cache_library.c
index 5a535b0..094f9b1 100644
--- a/source/blender/editors/io/io_cache_library.c
+++ b/source/blender/editors/io/io_cache_library.c
@@ -282,7 +282,7 @@ static void cache_library_bake_startjob(void *customdata, 
short *stop, short *do
        data->archive = PTC_open_writer_archive(scene, filename);
        
        data->writer = PTC_writer_dupligroup(data->cachelib->group->id.name, 
&data->eval_ctx, scene, data->cachelib->group);
-       PTC_writer_set_archive(data->writer, data->archive);
+       PTC_writer_init(data->writer, data->archive);
        
        G.is_break = false;
        
diff --git a/source/blender/pointcache/PTC_api.cpp 
b/source/blender/pointcache/PTC_api.cpp
index b2a9a56..a37709d 100644
--- a/source/blender/pointcache/PTC_api.cpp
+++ b/source/blender/pointcache/PTC_api.cpp
@@ -117,11 +117,11 @@ void PTC_close_reader_archive(PTCReaderArchive *_archive)
        delete archive;
 }
 
-void PTC_writer_set_archive(PTCWriter *_writer, PTCWriterArchive *_archive)
+void PTC_writer_init(PTCWriter *_writer, PTCWriterArchive *_archive)
 {
        PTC::Writer *writer = (PTC::Writer *)_writer;
        PTC::WriterArchive *archive = (PTC::WriterArchive *)_archive;
-       writer->set_archive(archive);
+       writer->init(archive);
 }
 
 void PTC_writer_create_refs(PTCWriter *_writer)
@@ -130,11 +130,11 @@ void PTC_writer_create_refs(PTCWriter *_writer)
        writer->create_refs();
 }
 
-void PTC_reader_set_archive(PTCReader *_reader, PTCReaderArchive *_archive)
+void PTC_reader_init(PTCReader *_reader, PTCReaderArchive *_archive)
 {
        PTC::Reader *reader = (PTC::Reader *)_reader;
        PTC::ReaderArchive *archive = (PTC::ReaderArchive *)_archive;
-       reader->set_archive(archive);
+       reader->init(archive);
 }
 
 /* ========================================================================= */
diff --git a/source/blender/pointcache/PTC_api.h 
b/source/blender/pointcache/PTC_api.h
index 105dabb..48d4a94 100644
--- a/source/blender/pointcache/PTC_api.h
+++ b/source/blender/pointcache/PTC_api.h
@@ -69,9 +69,9 @@ void PTC_close_writer_archive(struct PTCWriterArchive 
*archive);
 struct PTCReaderArchive *PTC_open_reader_archive(struct Scene *scene, const 
char *path);
 void PTC_close_reader_archive(struct PTCReaderArchive *archive);
 
-void PTC_writer_set_archive(struct PTCWriter *writer, struct PTCWriterArchive 
*archive);
+void PTC_writer_init(struct PTCWriter *writer, struct PTCWriterArchive 
*archive);
 void PTC_writer_create_refs(struct PTCWriter *writer);
-void PTC_reader_set_archive(struct PTCReader *reader, struct PTCReaderArchive 
*archive);
+void PTC_reader_init(struct PTCReader *reader, struct PTCReaderArchive 
*archive);
 
 /*** Reader/Writer Interface ***/
 
diff --git a/source/blender/pointcache/alembic/abc_cloth.cpp 
b/source/blender/pointcache/alembic/abc_cloth.cpp
index 594bb4d..1e6621b 100644
--- a/source/blender/pointcache/alembic/abc_cloth.cpp
+++ b/source/blender/pointcache/alembic/abc_cloth.cpp
@@ -45,23 +45,18 @@ AbcClothWriter::~AbcClothWriter()
 {
 }
 
-void AbcClothWriter::open_archive(WriterArchive *archive)
+void AbcClothWriter::init_abc(OObject parent)
 {
-       BLI_assert(dynamic_cast<AbcWriterArchive*>(archive));
-       AbcWriter::abc_archive(static_cast<AbcWriterArchive*>(archive));
-       
-       if (abc_archive()->archive) {
-               OObject parent = abc_archive()->get_id_object((ID *)m_ob);
-               if (parent) {
-                       m_points = OPoints(parent, m_name, 
abc_archive()->frame_sampling_index());
-                       
-                       OPointsSchema &schema = m_points.getSchema();
-                       OCompoundProperty geom_params = 
schema.getArbGeomParams();
-                       
-                       m_param_velocities = OV3fGeomParam(geom_params, 
"velocities", false, kVaryingScope, 1, 0);
-                       m_param_goal_positions = OP3fGeomParam(geom_params, 
"goal_positions", false, kVaryingScope, 1, 0);
-               }
-       }
+       if (m_points)
+               return;
+       
+       m_points = OPoints(parent, m_name, 
abc_archive()->frame_sampling_index());
+       
+       OPointsSchema &schema = m_points.getSchema();
+       OCompoundProperty geom_params = schema.getArbGeomParams();
+       
+       m_param_velocities = OV3fGeomParam(geom_params, "velocities", false, 
kVaryingScope, 1, 0);
+       m_param_goal_positions = OP3fGeomParam(geom_params, "goal_positions", 
false, kVaryingScope, 1, 0);
 }
 
 static V3fArraySample create_sample_velocities(Cloth *cloth, std::vector<V3f> 
&data)
@@ -143,22 +138,19 @@ AbcClothReader::~AbcClothReader()
 {
 }
 
-void AbcClothReader::open_archive(ReaderArchive *archive)
+void AbcClothReader::init_abc(IObject parent)
 {
-       BLI_assert(dynamic_cast<AbcReaderArchive*>(archive));
-       AbcReader::abc_archive(static_cast<AbcReaderArchive*>(archive));
-       
-       if (abc_archive()->archive) {
-               IObject parent = abc_archive()->get_id_object((ID *)m_ob);
-               if (parent && parent.getChild(m_name)) {
-                       m_points = IPoints(parent, m_name);
-                       
-                       IPointsSchema &schema = m_points.getSchema();
-                       ICompoundProperty geom_params = 
schema.getArbGeomParams();
-                       
-                       m_param_velocities = IV3fGeomParam(geom_params, 
"velocities", 0);
-                       m_param_goal_positions= IP3fGeomParam(geom_params, 
"goal_positions", 0);
-               }
+       if (m_points)
+               return;
+       
+       if (parent.getChild(m_name)) {
+               m_points = IPoints(parent, m_name);
+               
+               IPointsSchema &schema = m_points.getSchema();
+               ICompoundProperty geom_params = schema.getArbGeomParams();
+               
+               m_param_velocities = IV3fGeomParam(geom_params, "velocities", 
0);
+               m_param_goal_positions= IP3fGeomParam(geom_params, 
"goal_positions", 0);
        }
 }
 
diff --git a/source/blender/pointcache/alembic/abc_cloth.h 
b/source/blender/pointcache/alembic/abc_cloth.h
index 947f49a..42460d1 100644
--- a/source/blender/pointcache/alembic/abc_cloth.h
+++ b/source/blender/pointcache/alembic/abc_cloth.h
@@ -38,7 +38,7 @@ public:
        AbcClothWriter(const std::string &name, Object *ob, ClothModifierData 
*clmd);
        ~AbcClothWriter();
        
-       void open_archive(WriterArchive *archive);
+       void init_abc(Abc::OObject parent);
        
        void write_sample();
        
@@ -53,7 +53,7 @@ public:
        AbcClothReader(const std::string &name, Object *ob, ClothModifierData 
*clmd);
        ~AbcClothReader();
        
-       void open_archive(ReaderArchive *archive);
+       void init_abc(Abc::IObject parent);
        
        PTCReadSampleResult read_sample(float frame);
        
diff --git a/source/blender/pointcache/alembic/abc_group.cpp 
b/source/blender/pointcache/alembic/abc_group.cpp
index b2be672..fead89e 100644
--- a/source/blender/pointcache/alembic/abc_group.cpp
+++ b/source/blender/pointcache/alembic/abc_group.cpp
@@ -49,14 +49,12 @@ AbcGroupWriter::AbcGroupWriter(const std::string &name, 
Group *group) :
 {
 }
 
-void AbcGroupWriter::open_archive(WriterArchive *archive)
+void AbcGroupWriter::init_abc()
 {
-       BLI_assert(dynamic_cast<AbcWriterArchive*>(archive));
-       AbcWriter::abc_archive(static_cast<AbcWriterArchive*>(archive));
+       if (m_abc_object)
+               return;
        
-       if (abc_archive()->archive) {
-               m_abc_object = abc_archive()->add_id_object<OObject>((ID 
*)m_group);
-       }
+       m_abc_object = abc_archive()->add_id_object<OObject>((ID *)m_gro

@@ Diff output truncated at 10240 characters. @@

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to