[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [53068] trunk/blender/source/blender: fix [#33501] Grease pencil in OpenGL render

Campbell Barton ideasman42 at gmail.com
Mon Dec 17 03:34:58 CET 2012


Revision: 53068
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=53068
Author:   campbellbarton
Date:     2012-12-17 02:34:53 +0000 (Mon, 17 Dec 2012)
Log Message:
-----------
fix [#33501] Grease pencil in OpenGL render

With the view3d 'Render Only' option, grease pencil wouldn't draw, but for OpenGL render it did.

Since grease pencil can be very useful in opengl renders, enable grease pencil drawing with 'Render Only' option in the viewport,
and add a checkbox in the grease pencil header not to draw (unchecking each layer is annoying and applies to all spaces).

Modified Paths:
--------------
    trunk/blender/source/blender/blenkernel/BKE_blender.h
    trunk/blender/source/blender/blenloader/intern/readfile.c
    trunk/blender/source/blender/editors/gpencil/gpencil_buttons.c
    trunk/blender/source/blender/editors/include/ED_gpencil.h
    trunk/blender/source/blender/editors/space_clip/clip_buttons.c
    trunk/blender/source/blender/editors/space_clip/space_clip.c
    trunk/blender/source/blender/editors/space_image/image_buttons.c
    trunk/blender/source/blender/editors/space_image/space_image.c
    trunk/blender/source/blender/editors/space_node/node_buttons.c
    trunk/blender/source/blender/editors/space_node/node_draw.c
    trunk/blender/source/blender/editors/space_node/space_node.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_buttons.c
    trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
    trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c
    trunk/blender/source/blender/editors/space_view3d/space_view3d.c
    trunk/blender/source/blender/editors/space_view3d/view3d_buttons.c
    trunk/blender/source/blender/editors/space_view3d/view3d_draw.c
    trunk/blender/source/blender/makesdna/DNA_space_types.h
    trunk/blender/source/blender/makesdna/DNA_view3d_types.h
    trunk/blender/source/blender/makesrna/intern/rna_space.c

Modified: trunk/blender/source/blender/blenkernel/BKE_blender.h
===================================================================
--- trunk/blender/source/blender/blenkernel/BKE_blender.h	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/blenkernel/BKE_blender.h	2012-12-17 02:34:53 UTC (rev 53068)
@@ -42,7 +42,7 @@
  * and keep comment above the defines.
  * Use STRINGIFY() rather than defining with quotes */
 #define BLENDER_VERSION         265
-#define BLENDER_SUBVERSION      2
+#define BLENDER_SUBVERSION      3
 
 /* 262 was the last editmesh release but it has compatibility code for bmesh data */
 #define BLENDER_MINVERSION      262

Modified: trunk/blender/source/blender/blenloader/intern/readfile.c
===================================================================
--- trunk/blender/source/blender/blenloader/intern/readfile.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/blenloader/intern/readfile.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -8365,6 +8365,50 @@
 		}
 	}
 
+	if (main->versionfile < 265 || (main->versionfile == 265 && main->subversionfile < 3)) {
+		bScreen *sc;
+		for (sc = main->screen.first; sc; sc = sc->id.next) {
+			ScrArea *sa;
+			for (sa = sc->areabase.first; sa; sa = sa->next) {
+				SpaceLink *sl;
+				for (sl = sa->spacedata.first; sl; sl = sl->next) {
+					switch (sl->spacetype) {
+						case SPACE_VIEW3D:
+						{
+							View3D *v3d = (View3D *)sl;
+							v3d->flag2 |= V3D_SHOW_GPENCIL;
+							break;
+						}
+						case SPACE_SEQ:
+						{
+							SpaceSeq *sseq = (SpaceSeq *)sl;
+							sseq->flag |= SEQ_SHOW_GPENCIL;
+							break;
+						}
+						case SPACE_IMAGE:
+						{
+							SpaceImage *sima = (SpaceImage *)sl;
+							sima->flag |= SI_SHOW_GPENCIL;
+							break;
+						}
+						case SPACE_NODE:
+						{
+							SpaceNode *snode = (SpaceNode *)sl;
+							snode->flag |= SNODE_SHOW_GPENCIL;
+							break;
+						}
+						case SPACE_CLIP:
+						{
+							SpaceClip *sclip = (SpaceClip *)sl;
+							sclip->flag |= SC_SHOW_GPENCIL;
+							break;
+						}
+					}
+				}
+			}
+		}
+	}
+
 	/* WATCH IT!!!: pointers from libdata have not been converted yet here! */
 	/* WATCH IT 2!: Userdef struct init has to be in editors/interface/resources.c! */
 

Modified: trunk/blender/source/blender/editors/gpencil/gpencil_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/gpencil/gpencil_buttons.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/gpencil/gpencil_buttons.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -312,7 +312,14 @@
 	}
 }
 
+void gpencil_panel_standard_header(const bContext *C, Panel *pa)
+{
+	PointerRNA ptr;
+	RNA_pointer_create((ID *)CTX_wm_screen(C), &RNA_Space, CTX_wm_space_data(C), &ptr);
 
+	uiItemR(pa->layout, &ptr, "show_grease_pencil", 0, "", ICON_NONE);
+}
+
 /* Standard panel to be included wherever Grease Pencil is used... */
 void gpencil_panel_standard(const bContext *C, Panel *pa)
 {

Modified: trunk/blender/source/blender/editors/include/ED_gpencil.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_gpencil.h	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/include/ED_gpencil.h	2012-12-17 02:34:53 UTC (rev 53068)
@@ -81,6 +81,7 @@
 void draw_gpencil_view2d(const struct bContext *C, short onlyv2d);
 void draw_gpencil_view3d(struct Scene *scene, struct View3D *v3d, struct ARegion *ar, short only3d);
 
+void gpencil_panel_standard_header(const struct bContext *C, struct Panel *pa);
 void gpencil_panel_standard(const struct bContext *C, struct Panel *pa);
 
 /* ----------- Grease-Pencil AnimEdit API ------------------ */

Modified: trunk/blender/source/blender/editors/space_clip/clip_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/clip_buttons.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/space_clip/clip_buttons.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -78,6 +78,7 @@
 	pt = MEM_callocN(sizeof(PanelType), "spacetype clip panel gpencil");
 	strcpy(pt->idname, "CLIP_PT_gpencil");
 	strcpy(pt->label, "Grease Pencil");
+	pt->draw_header = gpencil_panel_standard_header;
 	pt->draw = gpencil_panel_standard;
 	pt->flag |= PNL_DEFAULT_CLOSED;
 	pt->poll = clip_grease_pencil_panel_poll;

Modified: trunk/blender/source/blender/editors/space_clip/space_clip.c
===================================================================
--- trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/space_clip/space_clip.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -246,7 +246,7 @@
 	sc = MEM_callocN(sizeof(SpaceClip), "initclip");
 	sc->spacetype = SPACE_CLIP;
 	sc->flag = SC_SHOW_MARKER_PATTERN | SC_SHOW_TRACK_PATH | SC_MANUAL_CALIBRATION |
-	           SC_SHOW_GRAPH_TRACKS | SC_SHOW_GRAPH_FRAMES;
+	           SC_SHOW_GRAPH_TRACKS | SC_SHOW_GRAPH_FRAMES | SC_SHOW_GPENCIL;
 	sc->zoom = 1.0f;
 	sc->path_length = 20;
 	sc->scopes.track_preview_height = 120;
@@ -1151,14 +1151,18 @@
 
 	}
 
-	/* Grease Pencil */
-	clip_draw_grease_pencil((bContext *)C, 1);
+	if (sc->flag & SC_SHOW_GPENCIL) {
+		/* Grease Pencil */
+		clip_draw_grease_pencil((bContext *)C, TRUE);
+	}
 
 	/* reset view matrix */
 	UI_view2d_view_restore(C);
 
-	/* draw Grease Pencil - screen space only */
-	clip_draw_grease_pencil((bContext *)C, 0);
+	if (sc->flag & SC_SHOW_GPENCIL) {
+		/* draw Grease Pencil - screen space only */
+		clip_draw_grease_pencil((bContext *)C, FALSE);
+	}
 }
 
 static void clip_main_area_listener(ARegion *ar, wmNotifier *wmn)

Modified: trunk/blender/source/blender/editors/space_image/image_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/image_buttons.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/space_image/image_buttons.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -858,6 +858,7 @@
 	pt = MEM_callocN(sizeof(PanelType), "spacetype image panel gpencil");
 	strcpy(pt->idname, "IMAGE_PT_gpencil");
 	strcpy(pt->label, "Grease Pencil");
+	pt->draw_header = gpencil_panel_standard_header;
 	pt->draw = gpencil_panel_standard;
 	BLI_addtail(&art->paneltypes, pt);
 }

Modified: trunk/blender/source/blender/editors/space_image/space_image.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/space_image.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/space_image/space_image.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -151,6 +151,7 @@
 	simage->spacetype = SPACE_IMAGE;
 	simage->zoom = 1.0f;
 	simage->lock = TRUE;
+	simage->flag = SI_SHOW_GPENCIL;
 
 	simage->iuser.ok = TRUE;
 	simage->iuser.fie_ima = 2;
@@ -674,16 +675,20 @@
 
 	ED_region_draw_cb_draw(C, ar, REGION_DRAW_POST_VIEW);
 
-	/* Grease Pencil too (in addition to UV's) */
-	draw_image_grease_pencil((bContext *)C, 1); 
+	if (sima->flag & SI_SHOW_GPENCIL) {
+		/* Grease Pencil too (in addition to UV's) */
+		draw_image_grease_pencil((bContext *)C, TRUE);
+	}
 
 	/* sample line */
 	draw_image_sample_line(sima);
 
 	UI_view2d_view_restore(C);
 
-	/* draw Grease Pencil - screen space only */
-	draw_image_grease_pencil((bContext *)C, 0);
+	if (sima->flag & SI_SHOW_GPENCIL) {
+		/* draw Grease Pencil - screen space only */
+		draw_image_grease_pencil((bContext *)C, FALSE);
+	}
 
 	if (mask) {
 		int width, height;

Modified: trunk/blender/source/blender/editors/space_node/node_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_buttons.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/space_node/node_buttons.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -184,6 +184,7 @@
 	pt = MEM_callocN(sizeof(PanelType), "spacetype node panel gpencil");
 	strcpy(pt->idname, "NODE_PT_gpencil");
 	strcpy(pt->label, "Grease Pencil");
+	pt->draw_header = gpencil_panel_standard_header;
 	pt->draw = gpencil_panel_standard;
 	pt->poll = active_nodetree_poll;
 	BLI_addtail(&art->paneltypes, pt);

Modified: trunk/blender/source/blender/editors/space_node/node_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/node_draw.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/space_node/node_draw.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -1172,16 +1172,22 @@
 	
 	ED_region_draw_cb_draw(C, ar, REGION_DRAW_POST_VIEW);
 	
-	/* draw grease-pencil ('canvas' strokes) */
-	if (snode->nodetree)
-		draw_gpencil_view2d(C, 1);
+	if (snode->flag & SNODE_SHOW_GPENCIL) {
+		/* draw grease-pencil ('canvas' strokes) */
+		if (snode->nodetree) {
+			draw_gpencil_view2d(C, TRUE);
+		}
+	}
 	
 	/* reset view matrix */
 	UI_view2d_view_restore(C);
 	
-	/* draw grease-pencil (screen strokes, and also paintbuffer) */
-	if (snode->nodetree)
-		draw_gpencil_view2d(C, 0);
+	if (snode->flag & SNODE_SHOW_GPENCIL) {
+		/* draw grease-pencil (screen strokes, and also paintbuffer) */
+		if (snode->nodetree) {
+			draw_gpencil_view2d(C, FALSE);
+		}
+	}
 	
 	/* scrollers */
 	scrollers = UI_view2d_scrollers_calc(C, v2d, 10, V2D_GRID_CLAMP, V2D_ARG_DUMMY, V2D_ARG_DUMMY);

Modified: trunk/blender/source/blender/editors/space_node/space_node.c
===================================================================
--- trunk/blender/source/blender/editors/space_node/space_node.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/space_node/space_node.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -119,6 +119,8 @@
 	snode = MEM_callocN(sizeof(SpaceNode), "initnode");
 	snode->spacetype = SPACE_NODE;
 
+	snode->flag = SNODE_SHOW_GPENCIL;
+
 	/* backdrop */
 	snode->zoom = 1.0f;
 

Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_buttons.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_buttons.c	2012-12-17 00:39:03 UTC (rev 53067)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_buttons.c	2012-12-17 02:34:53 UTC (rev 53068)
@@ -58,6 +58,7 @@
 	pt = MEM_callocN(sizeof(PanelType), "spacetype sequencer panel gpencil");

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list