diff options
author | Joshua Leung <aligorith@gmail.com> | 2009-08-30 17:32:08 +0400 |
---|---|---|
committer | Joshua Leung <aligorith@gmail.com> | 2009-08-30 17:32:08 +0400 |
commit | 7df39b5ea2bd8bfd0c5a2a08aa2c52d051aa5fd5 (patch) | |
tree | 8436bb3fe595e2235836aee4fdbad329a4bfe428 /source/blender/editors/gpencil/drawgpencil.c | |
parent | d4d520c9a2312e1b03872f92b1e9be1150d167d5 (diff) |
Grease Pencil: Basic Support for Image Editor Again
* Grease Pencil works again from Image Editor now. For now, the GPencil datablock is linked to the Image Editor space, but this can be changed if need be.
* Made Grease Pencil hotkeys into a separate Grease Pencil keymap, which can get included automagically like for frames/ui/v2d/etc. by supplying ED_KEYMAP_GPENCIL as part of st->keymapflag
* Temporarily restored the nasty hack to make View2D-aligned sketches in Image Editor to use OpenGL lines only. I still dunno why this doesn't work normally.
(Probably related is that strokes are not visible when there's no image visible atm).
Diffstat (limited to 'source/blender/editors/gpencil/drawgpencil.c')
-rw-r--r-- | source/blender/editors/gpencil/drawgpencil.c | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/source/blender/editors/gpencil/drawgpencil.c b/source/blender/editors/gpencil/drawgpencil.c index d6678b50d7b..81ee2378717 100644 --- a/source/blender/editors/gpencil/drawgpencil.c +++ b/source/blender/editors/gpencil/drawgpencil.c @@ -83,6 +83,7 @@ enum { GP_DRAWDATA_ONLY3D = (1<<1), /* only draw 3d-strokes */ GP_DRAWDATA_ONLYV2D = (1<<2), /* only draw 'canvas' strokes */ GP_DRAWDATA_ONLYI2D = (1<<3), /* only draw 'image' strokes */ + GP_DRAWDATA_IEDITHACK = (1<<4), /* special hack for drawing strokes in Image Editor (weird coordinates) */ }; /* thickness above which we should use special drawing */ @@ -254,14 +255,12 @@ static void gp_draw_stroke_3d (bGPDspoint *points, int totpoints, short thicknes /* draw a given stroke in 2d */ static void gp_draw_stroke (bGPDspoint *points, int totpoints, short thickness, short dflag, short sflag, short debug, int offsx, int offsy, int winx, int winy) -{ - int spacetype= 0; // XXX make local gpencil state var? - +{ /* if thickness is less than GP_DRAWTHICKNESS_SPECIAL, 'smooth' opengl lines look better * - 'smooth' opengl lines are also required if Image Editor 'image-based' stroke */ if ( (thickness < GP_DRAWTHICKNESS_SPECIAL) || - ((spacetype==SPACE_IMAGE) && (dflag & GP_DRAWDATA_ONLYV2D)) ) + ((dflag & GP_DRAWDATA_IEDITHACK) && (dflag & GP_DRAWDATA_ONLYV2D)) ) { bGPDspoint *pt; int i; @@ -519,6 +518,9 @@ static void gp_draw_data (bGPdata *gpd, int offsx, int offsy, int winx, int winy { bGPDlayer *gpl, *actlay=NULL; + /* reset line drawing style (in case previous user didn't reset) */ + setlinestyle(0); + /* turn on smooth lines (i.e. anti-aliasing) */ glEnable(GL_LINE_SMOOTH); @@ -669,7 +671,7 @@ void draw_gpencil_2dimage (bContext *C, ImBuf *ibuf) wmOrtho2(ar->v2d.cur.xmin, ar->v2d.cur.xmax, ar->v2d.cur.ymin, ar->v2d.cur.ymax); - dflag |= GP_DRAWDATA_ONLYV2D; + dflag |= GP_DRAWDATA_ONLYV2D|GP_DRAWDATA_IEDITHACK; } break; @@ -729,6 +731,11 @@ void draw_gpencil_2dview (bContext *C, short onlyv2d) gpd= gpencil_data_get_active(C); // XXX if (gpd == NULL) return; + /* special hack for Image Editor */ + // FIXME: the opengl poly-strokes don't draw at right thickness when done this way, so disabled + if (sa->spacetype == SPACE_IMAGE) + dflag |= GP_DRAWDATA_IEDITHACK; + /* draw it! */ if (onlyv2d) dflag |= (GP_DRAWDATA_ONLYV2D|GP_DRAWDATA_NOSTATUS); gp_draw_data(gpd, 0, 0, ar->winx, ar->winy, CFRA, dflag); |