[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [32351] trunk/blender/source/blender: COLLADA: Split ImagesExporter into separate files.

Nathan Letwory nathan at letworyinteractive.com
Wed Oct 6 18:23:53 CEST 2010


Revision: 32351
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=32351
Author:   jesterking
Date:     2010-10-06 18:23:52 +0200 (Wed, 06 Oct 2010)

Log Message:
-----------
COLLADA: Split ImagesExporter into separate files.

Modified Paths:
--------------
    trunk/blender/source/blender/blenlib/BLI_fileops.h
    trunk/blender/source/blender/collada/DocumentExporter.cpp

Added Paths:
-----------
    trunk/blender/source/blender/collada/ImageExporter.cpp
    trunk/blender/source/blender/collada/ImageExporter.h

Modified: trunk/blender/source/blender/blenlib/BLI_fileops.h
===================================================================
--- trunk/blender/source/blender/blenlib/BLI_fileops.h	2010-10-06 14:53:13 UTC (rev 32350)
+++ trunk/blender/source/blender/blenlib/BLI_fileops.h	2010-10-06 16:23:52 UTC (rev 32351)
@@ -36,6 +36,10 @@
 #ifndef BLI_FILEOPS_H
 #define BLI_FILEOPS_H
 
+#ifdef __cplusplus
+extern "C" {
+#endif
+
 void  BLI_recurdir_fileops(char *dirname);
 int BLI_link(char *file, char *to);
 int BLI_is_writable(char *filename);
@@ -60,5 +64,9 @@
 void BLI_setCmdCallBack(int (*f)(char*));
 #endif
 
+#ifdef __cplusplus
+}
 #endif
 
+#endif
+

Modified: trunk/blender/source/blender/collada/DocumentExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/DocumentExporter.cpp	2010-10-06 14:53:13 UTC (rev 32350)
+++ trunk/blender/source/blender/collada/DocumentExporter.cpp	2010-10-06 16:23:52 UTC (rev 32351)
@@ -109,10 +109,10 @@
 #include "ArmatureExporter.h"
 #include "CameraExporter.h"
 #include "GeometryExporter.h"
+#include "ImageExporter.h"
 #include "LightExporter.h"
 #include "MaterialExporter.h"
 
-
 #include <vector>
 #include <algorithm> // std::find
 
@@ -299,67 +299,6 @@
 	}
 };
 
-class ImagesExporter: COLLADASW::LibraryImages
-{
-	const char *mfilename;
-	std::vector<std::string> mImages; // contains list of written images, to avoid duplicates
-public:
-	ImagesExporter(COLLADASW::StreamWriter *sw, const char* filename) : COLLADASW::LibraryImages(sw), mfilename(filename)
-	{}
-	
-	void exportImages(Scene *sce)
-	{
-		openLibrary();
-		MaterialFunctor mf;
-		mf.forEachMaterialInScene<ImagesExporter>(sce, *this);
-
-		closeLibrary();
-	}
-
-	void operator()(Material *ma, Object *ob)
-	{
-		int a;
-		for (a = 0; a < MAX_MTEX; a++) {
-			MTex *mtex = ma->mtex[a];
-			if (mtex && mtex->tex && mtex->tex->ima) {
-
-				Image *image = mtex->tex->ima;
-				std::string name(id_name(image));
-				name = translate_id(name);
-				char rel[FILE_MAX];
-				char abs[FILE_MAX];
-				char src[FILE_MAX];
-				char dir[FILE_MAX];
-				
-				BLI_split_dirfile(mfilename, dir, NULL);
-
-				BKE_rebase_path(abs, sizeof(abs), rel, sizeof(rel), G.sce, image->name, dir);
-
-				if (abs[0] != '\0') {
-
-					// make absolute source path
-					BLI_strncpy(src, image->name, sizeof(src));
-					BLI_path_abs(src, G.sce);
-
-					// make dest directory if it doesn't exist
-					BLI_make_existing_file(abs);
-				
-					if (BLI_copy_fileops(src, abs) != 0) {
-						fprintf(stderr, "Cannot copy image to file's directory. \n");
-					}
-				} 
-				
-				if (find(mImages.begin(), mImages.end(), name) == mImages.end()) {
-					COLLADASW::Image img(COLLADABU::URI(COLLADABU::URI::nativePathToUri(rel)), name);
-					img.add(mSW);
-
-					mImages.push_back(name);
-				}
-			}
-		}
-	}
-};
-
 class EffectsExporter: COLLADASW::LibraryEffects
 {
 public:

Added: trunk/blender/source/blender/collada/ImageExporter.cpp
===================================================================
--- trunk/blender/source/blender/collada/ImageExporter.cpp	                        (rev 0)
+++ trunk/blender/source/blender/collada/ImageExporter.cpp	2010-10-06 16:23:52 UTC (rev 32351)
@@ -0,0 +1,93 @@
+/**
+ * $Id: DocumentExporter.cpp 32309 2010-10-05 00:05:14Z jesterking $
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov, Jan Diederich, Tod Liverseed,
+ *                 Nathan Letwory
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#include "COLLADABUURI.h"
+#include "COLLADASWImage.h"
+
+#include "ImageExporter.h"
+#include "MaterialExporter.h"
+
+#include "DNA_texture_types.h"
+
+#include "BKE_global.h"
+#include "BKE_utildefines.h"
+#include "BLI_fileops.h"
+#include "BLI_path_util.h"
+#include "BLI_string.h"
+
+ImagesExporter::ImagesExporter(COLLADASW::StreamWriter *sw, const char* filename) : COLLADASW::LibraryImages(sw), mfilename(filename)
+{}
+
+void ImagesExporter::exportImages(Scene *sce)
+{
+	openLibrary();
+	MaterialFunctor mf;
+	mf.forEachMaterialInScene<ImagesExporter>(sce, *this);
+
+	closeLibrary();
+}
+
+void ImagesExporter::operator()(Material *ma, Object *ob)
+{
+	int a;
+	for (a = 0; a < MAX_MTEX; a++) {
+		MTex *mtex = ma->mtex[a];
+		if (mtex && mtex->tex && mtex->tex->ima) {
+
+			Image *image = mtex->tex->ima;
+			std::string name(id_name(image));
+			name = translate_id(name);
+			char rel[FILE_MAX];
+			char abs[FILE_MAX];
+			char src[FILE_MAX];
+			char dir[FILE_MAX];
+			
+			BLI_split_dirfile(mfilename, dir, NULL);
+
+			BKE_rebase_path(abs, sizeof(abs), rel, sizeof(rel), G.sce, image->name, dir);
+
+			if (abs[0] != '\0') {
+
+				// make absolute source path
+				BLI_strncpy(src, image->name, sizeof(src));
+				BLI_path_abs(src, G.sce);
+
+				// make dest directory if it doesn't exist
+				BLI_make_existing_file(abs);
+			
+				if (BLI_copy_fileops(src, abs) != 0) {
+					fprintf(stderr, "Cannot copy image to file's directory. \n");
+				}
+			} 
+			
+			if (find(mImages.begin(), mImages.end(), name) == mImages.end()) {
+				COLLADASW::Image img(COLLADABU::URI(COLLADABU::URI::nativePathToUri(rel)), name);
+				img.add(mSW);
+
+				mImages.push_back(name);
+			}
+		}
+	}
+}

Added: trunk/blender/source/blender/collada/ImageExporter.h
===================================================================
--- trunk/blender/source/blender/collada/ImageExporter.h	                        (rev 0)
+++ trunk/blender/source/blender/collada/ImageExporter.h	2010-10-06 16:23:52 UTC (rev 32351)
@@ -0,0 +1,50 @@
+/**
+ * $Id: DocumentExporter.cpp 32309 2010-10-05 00:05:14Z jesterking $
+ *
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * Contributor(s): Chingiz Dyussenov, Arystanbek Dyussenov, Jan Diederich, Tod Liverseed,
+ *                 Nathan Letwory
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef __IMAGEEXPORTER_H__
+#define __IMAGEEXPORTER_H__
+
+#include <vector>
+#include <string>
+
+#include "COLLADASWStreamWriter.h"
+#include "COLLADASWLibraryImages.h"
+
+#include "DNA_material_types.h"
+#include "DNA_object_types.h"
+#include "DNA_scene_types.h"
+
+class ImagesExporter: COLLADASW::LibraryImages
+{
+	const char *mfilename;
+	std::vector<std::string> mImages; // contains list of written images, to avoid duplicates
+public:
+	ImagesExporter(COLLADASW::StreamWriter *sw, const char* filename);
+	
+	void exportImages(Scene *sce);
+	void operator()(Material *ma, Object *ob);
+};
+
+#endif





More information about the Bf-blender-cvs mailing list