[Bf-blender-cvs] [e7bdd29] alembic_pointcache: Return a boolean value indicating success when getting the frame range of a cache.

Lukas Tönne noreply at git.blender.org
Fri Feb 13 17:56:04 CET 2015


Commit: e7bdd2919250f87eb4b3e2338847cfca16a5e9fd
Author: Lukas Tönne
Date:   Fri Feb 13 17:16:47 2015 +0100
Branches: alembic_pointcache
https://developer.blender.org/rBe7bdd2919250f87eb4b3e2338847cfca16a5e9fd

Return a boolean value indicating success when getting the frame range
of a cache.

Also the default cache range is return in case no archive exists.

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

M	source/blender/pointcache/PTC_api.cpp
M	source/blender/pointcache/PTC_api.h
M	source/blender/pointcache/alembic/abc_reader.cpp
M	source/blender/pointcache/alembic/abc_reader.h
M	source/blender/pointcache/intern/reader.h

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

diff --git a/source/blender/pointcache/PTC_api.cpp b/source/blender/pointcache/PTC_api.cpp
index 78f2d63..6d5c2b3 100644
--- a/source/blender/pointcache/PTC_api.cpp
+++ b/source/blender/pointcache/PTC_api.cpp
@@ -130,13 +130,20 @@ void PTC_reader_free(PTCReader *_reader)
 	delete reader;
 }
 
-void PTC_reader_get_frame_range(PTCReader *_reader, int *start_frame, int *end_frame)
+bool PTC_reader_get_frame_range(PTCReader *_reader, int *start_frame, int *end_frame)
 {
 	PTC::Reader *reader = (PTC::Reader *)_reader;
 	int sfra, efra;
-	reader->get_frame_range(sfra, efra);
-	if (start_frame) *start_frame = sfra;
-	if (end_frame) *end_frame = efra;
+	if (reader->get_frame_range(sfra, efra)) {
+		if (start_frame) *start_frame = sfra;
+		if (end_frame) *end_frame = efra;
+		return true;
+	}
+	else {
+		if (start_frame) *start_frame = reader->cache()->startframe;
+		if (end_frame) *end_frame = reader->cache()->endframe;
+		return false;
+	}
 }
 
 PTCReadSampleResult PTC_read_sample(PTCReader *_reader, float frame)
diff --git a/source/blender/pointcache/PTC_api.h b/source/blender/pointcache/PTC_api.h
index 5ea7cd8..411757a 100644
--- a/source/blender/pointcache/PTC_api.h
+++ b/source/blender/pointcache/PTC_api.h
@@ -64,7 +64,7 @@ void PTC_writer_free(struct PTCWriter *writer);
 void PTC_write_sample(struct PTCWriter *writer);
 
 void PTC_reader_free(struct PTCReader *reader);
-void PTC_reader_get_frame_range(struct PTCReader *reader, int *start_frame, int *end_frame);
+bool PTC_reader_get_frame_range(struct PTCReader *reader, int *start_frame, int *end_frame);
 PTCReadSampleResult PTC_read_sample(struct PTCReader *reader, float frame);
 PTCReadSampleResult PTC_test_sample(struct PTCReader *reader, float frame);
 
diff --git a/source/blender/pointcache/alembic/abc_reader.cpp b/source/blender/pointcache/alembic/abc_reader.cpp
index 772cc21..d445196 100644
--- a/source/blender/pointcache/alembic/abc_reader.cpp
+++ b/source/blender/pointcache/alembic/abc_reader.cpp
@@ -48,16 +48,18 @@ AbcReaderArchive::~AbcReaderArchive()
 {
 }
 
-void AbcReaderArchive::get_frame_range(int &start_frame, int &end_frame)
+bool AbcReaderArchive::get_frame_range(int &start_frame, int &end_frame)
 {
 	if (archive.valid()) {
 		double start_time, end_time;
 		GetArchiveStartAndEndTime(archive, start_time, end_time);
 		start_frame = (int)time_to_frame(start_time);
 		end_frame = (int)time_to_frame(end_time);
+		return true;
 	}
 	else {
 		start_frame = end_frame = 1;
+		return false;
 	}
 }
 
diff --git a/source/blender/pointcache/alembic/abc_reader.h b/source/blender/pointcache/alembic/abc_reader.h
index e52e896..ff43425 100644
--- a/source/blender/pointcache/alembic/abc_reader.h
+++ b/source/blender/pointcache/alembic/abc_reader.h
@@ -44,7 +44,7 @@ public:
 	AbcReaderArchive(Scene *scene, ID *id, PointCache *cache, ErrorHandler *error_handler);
 	virtual ~AbcReaderArchive();
 	
-	void get_frame_range(int &start_frame, int &end_frame);
+	bool get_frame_range(int &start_frame, int &end_frame);
 	Abc::ISampleSelector get_frame_sample_selector(float frame);
 	
 	PTCReadSampleResult test_sample(float frame);
diff --git a/source/blender/pointcache/intern/reader.h b/source/blender/pointcache/intern/reader.h
index 0f253e4..f59f16f 100644
--- a/source/blender/pointcache/intern/reader.h
+++ b/source/blender/pointcache/intern/reader.h
@@ -34,7 +34,7 @@ class ReaderArchive {
 public:
 	virtual ~ReaderArchive() {}
 	
-	virtual void get_frame_range(int &start_frame, int &end_frame) = 0;
+	virtual bool get_frame_range(int &start_frame, int &end_frame) = 0;
 	
 	virtual PTCReadSampleResult test_sample(float frame) = 0;
 };
@@ -48,7 +48,7 @@ public:
 	ErrorHandler *get_error_handler() const { return m_error_handler; }
 	bool valid() const;
 	
-	inline void get_frame_range(int &start_frame, int &end_frame)
+	inline bool get_frame_range(int &start_frame, int &end_frame)
 	{
 		return m_archive->get_frame_range(start_frame, end_frame);
 	}




More information about the Bf-blender-cvs mailing list