[Bf-blender-cvs] [915b63c95f0] greasepencil-object: WIP: Define a new preview blend file for grease pencil

Antonioya noreply at git.blender.org
Fri Jul 13 20:15:29 CEST 2018


Commit: 915b63c95f0c80f86308cc13cbf1bb177b14c34c
Author: Antonioya
Date:   Fri Jul 13 20:12:04 2018 +0200
Branches: greasepencil-object
https://developer.blender.org/rB915b63c95f0c80f86308cc13cbf1bb177b14c34c

WIP: Define a new preview blend file for grease pencil

The blend file is only a copy of old file. Put only as placeholder.

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

A	release/datafiles/preview_grease_pencil.blend
M	source/blender/editors/datafiles/CMakeLists.txt
M	source/blender/editors/include/ED_datafiles.h
M	source/blender/editors/render/render_preview.c

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

diff --git a/release/datafiles/preview_grease_pencil.blend b/release/datafiles/preview_grease_pencil.blend
new file mode 100644
index 00000000000..80b136745b0
Binary files /dev/null and b/release/datafiles/preview_grease_pencil.blend differ
diff --git a/source/blender/editors/datafiles/CMakeLists.txt b/source/blender/editors/datafiles/CMakeLists.txt
index 55623dd2d05..998df42c3cb 100644
--- a/source/blender/editors/datafiles/CMakeLists.txt
+++ b/source/blender/editors/datafiles/CMakeLists.txt
@@ -638,6 +638,7 @@ if(WITH_BLENDER)
 		# blends
 		data_to_c_simple(../../../../release/datafiles/preview.blend SRC)
 		data_to_c_simple(../../../../release/datafiles/preview_cycles.blend SRC)
+		data_to_c_simple(../../../../release/datafiles/preview_grease_pencil.blend SRC)
 
 		# images
 		data_to_c_simple(../../../../release/datafiles/splash.png SRC)
diff --git a/source/blender/editors/include/ED_datafiles.h b/source/blender/editors/include/ED_datafiles.h
index 475ceccbcc2..333e3d72615 100644
--- a/source/blender/editors/include/ED_datafiles.h
+++ b/source/blender/editors/include/ED_datafiles.h
@@ -42,6 +42,9 @@ extern char datatoc_preview_blend[];
 extern int datatoc_preview_cycles_blend_size;
 extern char datatoc_preview_cycles_blend[];
 
+extern int datatoc_preview_grease_pencil_blend_size;
+extern char datatoc_preview_grease_pencil_blend[];
+
 extern int datatoc_blender_icons16_png_size;
 extern char datatoc_blender_icons16_png[];
 
diff --git a/source/blender/editors/render/render_preview.c b/source/blender/editors/render/render_preview.c
index 04632838cf3..4a30012b4a9 100644
--- a/source/blender/editors/render/render_preview.c
+++ b/source/blender/editors/render/render_preview.c
@@ -197,6 +197,7 @@ typedef struct IconPreview {
 
 static Main *G_pr_main = NULL;
 static Main *G_pr_main_cycles = NULL;
+static Main *G_pr_main_grease_pencil = NULL;
 
 #ifndef WITH_HEADLESS
 static Main *load_main_from_memory(const void *blend, int blend_size)
@@ -226,6 +227,7 @@ void ED_preview_ensure_dbase(void)
 	if (!base_initialized) {
 		G_pr_main = load_main_from_memory(datatoc_preview_blend, datatoc_preview_blend_size);
 		G_pr_main_cycles = load_main_from_memory(datatoc_preview_cycles_blend, datatoc_preview_cycles_blend_size);
+		G_pr_main_grease_pencil = load_main_from_memory(datatoc_preview_grease_pencil_blend, datatoc_preview_grease_pencil_blend_size);
 		base_initialized = true;
 	}
 #endif
@@ -244,6 +246,9 @@ void ED_preview_free_dbase(void)
 
 	if (G_pr_main_cycles)
 		BKE_main_free(G_pr_main_cycles);
+
+	if (G_pr_main_grease_pencil)
+		BKE_main_free(G_pr_main_grease_pencil);
 }
 
 static Scene *preview_get_scene(Main *pr_main)
@@ -1075,6 +1080,7 @@ static void icon_preview_startjob_all_sizes(void *customdata, short *stop, short
 		sp->pr_rect = cur_size->rect;
 		sp->id = ip->id;
 		sp->bmain = ip->bmain;
+		Material *ma = NULL;
 
 		if (is_render) {
 			BLI_assert(ip->id);
@@ -1082,10 +1088,22 @@ static void icon_preview_startjob_all_sizes(void *customdata, short *stop, short
 			 * so don't even think of using cycle's bmain for
 			 * texture icons
 			 */
-			if (GS(ip->id->name) != ID_TE)
-				sp->pr_main = G_pr_main_cycles;
-			else
+			if (GS(ip->id->name) != ID_TE) {
+				/* grease pencil use its own preview file */
+				if (GS(ip->id->name) == ID_MA) {
+					ma = (Material *)ip->id;
+				}
+
+				if ((ma == NULL) || (ma->gp_style == NULL)) {
+					sp->pr_main = G_pr_main_cycles;
+				}
+				else {
+					sp->pr_main = G_pr_main_grease_pencil;
+				}
+			}
+			else {
 				sp->pr_main = G_pr_main;
+			}
 		}
 
 		common_preview_startjob(sp, stop, do_update, progress);



More information about the Bf-blender-cvs mailing list