diff options
author | Campbell Barton <ideasman42@gmail.com> | 2018-06-04 10:31:30 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2018-06-04 10:31:30 +0300 |
commit | 44505b38df557a5711703613685a1dec9fc2c3d9 (patch) | |
tree | 3f05bebcc7bfadf56569f2dcca7f95fc56b1b0d0 /source/blender/editors/screen | |
parent | 6654e109df952be3a3128fae2508a02c196ae593 (diff) |
Cleanup: strip trailing space in editors
Diffstat (limited to 'source/blender/editors/screen')
-rw-r--r-- | source/blender/editors/screen/area.c | 266 | ||||
-rw-r--r-- | source/blender/editors/screen/glutil.c | 86 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_context.c | 64 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_draw.c | 2 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_edit.c | 274 | ||||
-rw-r--r-- | source/blender/editors/screen/screen_ops.c | 774 | ||||
-rw-r--r-- | source/blender/editors/screen/screendump.c | 92 |
7 files changed, 779 insertions, 779 deletions
diff --git a/source/blender/editors/screen/area.c b/source/blender/editors/screen/area.c index 3f38de7b9ad..3f365fc1500 100644 --- a/source/blender/editors/screen/area.c +++ b/source/blender/editors/screen/area.c @@ -79,25 +79,25 @@ extern void ui_draw_anti_tria(float x1, float y1, float x2, float y2, float x3, static void region_draw_emboss(const ARegion *ar, const rcti *scirct) { rcti rect; - + /* translate scissor rect to region space */ rect.xmin = scirct->xmin - ar->winrct.xmin; rect.ymin = scirct->ymin - ar->winrct.ymin; rect.xmax = scirct->xmax - ar->winrct.xmin; rect.ymax = scirct->ymax - ar->winrct.ymin; - + /* set transp line */ glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - + /* right */ glColor4ub(0, 0, 0, 30); sdrawline(rect.xmax, rect.ymin, rect.xmax, rect.ymax); - + /* bottom */ glColor4ub(0, 0, 0, 30); sdrawline(rect.xmin, rect.ymin, rect.xmax, rect.ymin); - + /* top */ glColor4ub(255, 255, 255, 30); sdrawline(rect.xmin, rect.ymax, rect.xmax, rect.ymax); @@ -105,7 +105,7 @@ static void region_draw_emboss(const ARegion *ar, const rcti *scirct) /* left */ glColor4ub(255, 255, 255, 30); sdrawline(rect.xmin, rect.ymin, rect.xmin, rect.ymax); - + glDisable(GL_BLEND); } @@ -232,14 +232,14 @@ static void area_draw_azone(short x1, short y1, short x2, short y2) glEnable(GL_BLEND); glEnable(GL_LINE_SMOOTH); - + glColor4ub(255, 255, 255, 180); fdrawline(x1, y2, x2, y1); glColor4ub(255, 255, 255, 130); fdrawline(x1, y2 - dy, x2 - dx, y1); glColor4ub(255, 255, 255, 80); fdrawline(x1, y2 - 2 * dy, x2 - 2 * dx, y1); - + glColor4ub(0, 0, 0, 210); fdrawline(x1, y2 + 1, x2 + 1, y1); glColor4ub(0, 0, 0, 180); @@ -253,33 +253,33 @@ static void area_draw_azone(short x1, short y1, short x2, short y2) static void region_draw_azone_icon(AZone *az) { - GLUquadricObj *qobj = NULL; + GLUquadricObj *qobj = NULL; short midx = az->x1 + (az->x2 - az->x1) / 2; short midy = az->y1 + (az->y2 - az->y1) / 2; - + qobj = gluNewQuadric(); - + glPushMatrix(); glTranslatef(midx, midy, 0.0); - + /* outlined circle */ glEnable(GL_LINE_SMOOTH); glColor4f(1.f, 1.f, 1.f, 0.8f); - gluQuadricDrawStyle(qobj, GLU_FILL); + gluQuadricDrawStyle(qobj, GLU_FILL); gluDisk(qobj, 0.0, 4.25f, 16, 1); glColor4f(0.2f, 0.2f, 0.2f, 0.9f); - - gluQuadricDrawStyle(qobj, GLU_SILHOUETTE); + + gluQuadricDrawStyle(qobj, GLU_SILHOUETTE); gluDisk(qobj, 0.0, 4.25f, 16, 1); - + glDisable(GL_LINE_SMOOTH); - + glPopMatrix(); gluDeleteQuadric(qobj); - + /* + */ sdrawline(midx, midy - 2, midx, midy + 3); sdrawline(midx - 2, midy, midx + 3, midy); @@ -289,7 +289,7 @@ static void draw_azone_plus(float x1, float y1, float x2, float y2) { float width = 0.1f * U.widget_unit; float pad = 0.2f * U.widget_unit; - + glRectf((x1 + x2 - width) * 0.5f, y1 + pad, (x1 + x2 + width) * 0.5f, y2 - pad); glRectf(x1 + pad, (y1 + y2 - width) * 0.5f, (x1 + x2 - width) * 0.5f, (y1 + y2 + width) * 0.5f); glRectf((x1 + x2 + width) * 0.5f, (y1 + y2 - width) * 0.5f, x2 - pad, (y1 + y2 + width) * 0.5f); @@ -298,7 +298,7 @@ static void draw_azone_plus(float x1, float y1, float x2, float y2) static void region_draw_azone_tab_plus(AZone *az) { glEnable(GL_BLEND); - + /* add code to draw region hidden as 'too small' */ switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: @@ -329,43 +329,43 @@ static void region_draw_azone_tab_plus(AZone *az) static void region_draw_azone_tab(AZone *az) { float col[3]; - + glEnable(GL_BLEND); UI_GetThemeColor3fv(TH_HEADER, col); glColor4f(col[0], col[1], col[2], 0.5f); - + /* add code to draw region hidden as 'too small' */ switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: UI_draw_roundbox_corner_set(UI_CNR_TOP_LEFT | UI_CNR_TOP_RIGHT | UI_RB_ALPHA); - + UI_draw_roundbox_shade_x(GL_POLYGON, (float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f, -0.3f, 0.05f); glColor4ub(0, 0, 0, 255); UI_draw_roundbox_unfilled((float)az->x1, 0.3f + (float)az->y1, (float)az->x2, 0.3f + (float)az->y2, 4.0f); break; case AE_BOTTOM_TO_TOPLEFT: UI_draw_roundbox_corner_set(UI_CNR_BOTTOM_RIGHT | UI_CNR_BOTTOM_LEFT | UI_RB_ALPHA); - + UI_draw_roundbox_shade_x(GL_POLYGON, (float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f, -0.3f, 0.05f); glColor4ub(0, 0, 0, 255); UI_draw_roundbox_unfilled((float)az->x1, 0.3f + (float)az->y1, (float)az->x2, 0.3f + (float)az->y2, 4.0f); break; case AE_LEFT_TO_TOPRIGHT: UI_draw_roundbox_corner_set(UI_CNR_TOP_LEFT | UI_CNR_BOTTOM_LEFT | UI_RB_ALPHA); - + UI_draw_roundbox_shade_x(GL_POLYGON, (float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f, -0.3f, 0.05f); glColor4ub(0, 0, 0, 255); UI_draw_roundbox_unfilled((float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f); break; case AE_RIGHT_TO_TOPLEFT: UI_draw_roundbox_corner_set(UI_CNR_TOP_RIGHT | UI_CNR_BOTTOM_RIGHT | UI_RB_ALPHA); - + UI_draw_roundbox_shade_x(GL_POLYGON, (float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f, -0.3f, 0.05f); glColor4ub(0, 0, 0, 255); UI_draw_roundbox_unfilled((float)az->x1, (float)az->y1, (float)az->x2, (float)az->y2, 4.0f); break; } - + glDisable(GL_BLEND); } @@ -374,13 +374,13 @@ static void region_draw_azone_tria(AZone *az) glEnable(GL_BLEND); //UI_GetThemeColor3fv(TH_HEADER, col); glColor4f(0.0f, 0.0f, 0.0f, 0.35f); - + /* add code to draw region hidden as 'too small' */ switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: ui_draw_anti_tria((float)az->x1, (float)az->y1, (float)az->x2, (float)az->y1, (float)(az->x1 + az->x2) / 2, (float)az->y2); break; - + case AE_BOTTOM_TO_TOPLEFT: ui_draw_anti_tria((float)az->x1, (float)az->y2, (float)az->x2, (float)az->y2, (float)(az->x1 + az->x2) / 2, (float)az->y1); break; @@ -388,13 +388,13 @@ static void region_draw_azone_tria(AZone *az) case AE_LEFT_TO_TOPRIGHT: ui_draw_anti_tria((float)az->x2, (float)az->y1, (float)az->x2, (float)az->y2, (float)az->x1, (float)(az->y1 + az->y2) / 2); break; - + case AE_RIGHT_TO_TOPLEFT: ui_draw_anti_tria((float)az->x1, (float)az->y1, (float)az->x1, (float)az->y2, (float)az->x2, (float)(az->y1 + az->y2) / 2); break; - + } - + glDisable(GL_BLEND); } @@ -416,7 +416,7 @@ static void region_draw_azones(ScrArea *sa, ARegion *ar) glPushMatrix(); glTranslatef(-ar->winrct.xmin, -ar->winrct.ymin, 0.0f); - + for (az = sa->actionzones.first; az; az = az->next) { /* test if action zone is over this region */ rcti azrct; @@ -427,7 +427,7 @@ static void region_draw_azones(ScrArea *sa, ARegion *ar) area_draw_azone(az->x1, az->y1, az->x2, az->y2); } else if (az->type == AZONE_REGION) { - + if (az->ar) { /* only display tab or icons when the region is hidden */ if (az->ar->flag & (RGN_FLAG_HIDDEN | RGN_FLAG_TOO_SMALL)) { @@ -463,14 +463,14 @@ void ED_region_set(const bContext *C, ARegion *ar) { wmWindow *win = CTX_wm_window(C); ScrArea *sa = CTX_wm_area(C); - + ar->drawrct = ar->winrct; - + /* note; this sets state, so we can use wmOrtho and friends */ wmSubWindowScissorSet(win, ar->swinid, &ar->drawrct, true); - + UI_SetTheme(sa ? sa->spacetype : 0, ar->type ? ar->type->regionid : 0); - + ED_region_pixelspace(ar); } @@ -499,19 +499,19 @@ void ED_region_do_draw(bContext *C, ARegion *ar) } ar->do_draw |= RGN_DRAWING; - + /* note; this sets state, so we can use wmOrtho and friends */ wmSubWindowScissorSet(win, ar->swinid, &ar->drawrct, scissor_pad); wmOrtho2_region_pixelspace(ar); - + UI_SetTheme(sa ? sa->spacetype : 0, at->regionid); - + /* optional header info instead? */ if (ar->headerstr) { UI_ThemeClearColor(TH_HEADER); glClear(GL_COLOR_BUFFER_BIT); - + UI_ThemeColor(TH_TEXT); BLF_draw_default(UI_UNIT_X, 0.4f * UI_UNIT_Y, 0.0f, ar->headerstr, BLF_DRAW_STR_DUMMY_MAX); } @@ -536,7 +536,7 @@ void ED_region_do_draw(bContext *C, ARegion *ar) #endif memset(&ar->drawrct, 0, sizeof(ar->drawrct)); - + UI_blocklist_free_inactive(C, &ar->uiblocks); if (sa) { @@ -601,7 +601,7 @@ void ED_region_tag_redraw_partial(ARegion *ar, const rcti *rct) void ED_area_tag_redraw(ScrArea *sa) { ARegion *ar; - + if (sa) for (ar = sa->regionbase.first; ar; ar = ar->next) ED_region_tag_redraw(ar); @@ -610,7 +610,7 @@ void ED_area_tag_redraw(ScrArea *sa) void ED_area_tag_redraw_regiontype(ScrArea *sa, int regiontype) { ARegion *ar; - + if (sa) { for (ar = sa->regionbase.first; ar; ar = ar->next) { if (ar->regiontype == regiontype) { @@ -659,7 +659,7 @@ void ED_area_headerprint(ScrArea *sa, const char *str) static void area_azone_initialize(wmWindow *win, bScreen *screen, ScrArea *sa) { AZone *az; - + /* reinitalize entirely, regions and fullscreen add azones too */ BLI_freelistN(&sa->actionzones); @@ -688,7 +688,7 @@ static void area_azone_initialize(wmWindow *win, bScreen *screen, ScrArea *sa) az->y2 = sa->totrct.ymin + (AZONESPOT - 1); BLI_rcti_init(&az->rect, az->x1, az->x2, az->y1, az->y2); } - + az = (AZone *)MEM_callocN(sizeof(AZone), "actionzone"); BLI_addtail(&(sa->actionzones), az); az->type = AZONE_AREA; @@ -757,14 +757,14 @@ static void region_azone_icon(ScrArea *sa, AZone *az, ARegion *ar) { AZone *azt; int tot = 0; - + /* count how many actionzones with along same edge are available. * This allows for adding more action zones in the future without * having to worry about correct offset */ for (azt = sa->actionzones.first; azt; azt = azt->next) { if (azt->edge == az->edge) tot++; } - + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: az->x1 = ar->winrct.xmax - tot * 2 * AZONEPAD_ICON; @@ -793,7 +793,7 @@ static void region_azone_icon(ScrArea *sa, AZone *az, ARegion *ar) } BLI_rcti_init(&az->rect, az->x1, az->x2, az->y1, az->y2); - + /* if more azones on 1 spot, set offset */ for (azt = sa->actionzones.first; azt; azt = azt->next) { if (az != azt) { @@ -820,11 +820,11 @@ static void region_azone_tab_plus(ScrArea *sa, AZone *az, ARegion *ar) { AZone *azt; int tot = 0, add; - + for (azt = sa->actionzones.first; azt; azt = azt->next) { if (azt->edge == az->edge) tot++; } - + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: add = (ar->winrct.ymax == sa->totrct.ymin) ? 1 : 0; @@ -854,7 +854,7 @@ static void region_azone_tab_plus(ScrArea *sa, AZone *az, ARegion *ar) } /* rect needed for mouse pointer test */ BLI_rcti_init(&az->rect, az->x1, az->x2, az->y1, az->y2); -} +} #define AZONEPAD_TABW (0.9f * U.widget_unit) @@ -865,11 +865,11 @@ static void region_azone_tab(ScrArea *sa, AZone *az, ARegion *ar) { AZone *azt; int tot = 0, add; - + for (azt = sa->actionzones.first; azt; azt = azt->next) { if (azt->edge == az->edge) tot++; } - + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: add = (ar->winrct.ymax == sa->totrct.ymin) ? 1 : 0; @@ -899,7 +899,7 @@ static void region_azone_tab(ScrArea *sa, AZone *az, ARegion *ar) } /* rect needed for mouse pointer test */ BLI_rcti_init(&az->rect, az->x1, az->x2, az->y1, az->y2); -} +} #define AZONEPAD_TRIAW (0.8f * U.widget_unit) #define AZONEPAD_TRIAH (0.45f * U.widget_unit) @@ -910,11 +910,11 @@ static void region_azone_tria(ScrArea *sa, AZone *az, ARegion *ar) { AZone *azt; int tot = 0, add; - + for (azt = sa->actionzones.first; azt; azt = azt->next) { if (azt->edge == az->edge) tot++; } - + switch (az->edge) { case AE_TOP_TO_BOTTOMRIGHT: add = (ar->winrct.ymax == sa->totrct.ymin) ? 1 : 0; @@ -944,14 +944,14 @@ static void region_azone_tria(ScrArea *sa, AZone *az, ARegion *ar) } /* rect needed for mouse pointer test */ BLI_rcti_init(&az->rect, az->x1, az->x2, az->y1, az->y2); -} +} static void region_azone_initialize(ScrArea *sa, ARegion *ar, AZEdge edge, const bool is_fullscreen) { AZone *az = NULL; const bool is_hidden = (ar->flag & (RGN_FLAG_HIDDEN | RGN_FLAG_TOO_SMALL)) == 0; - + if (is_hidden || !is_fullscreen) { az = (AZone *)MEM_callocN(sizeof(AZone), "actionzone"); BLI_addtail(&(sa->actionzones), az); @@ -959,7 +959,7 @@ static void region_azone_initialize(ScrArea *sa, ARegion *ar, AZEdge edge, const az->ar = ar; az->edge = edge; } - + if (!is_hidden) { if (!is_fullscreen) { if (G.debug_value == 3) @@ -975,7 +975,7 @@ static void region_azone_initialize(ScrArea *sa, ARegion *ar, AZEdge edge, const else { region_azone_edge(az, ar); } - + } @@ -984,7 +984,7 @@ static void region_azone_initialize(ScrArea *sa, ARegion *ar, AZEdge edge, const static void region_azone_add(ScrArea *sa, ARegion *ar, const int alignment, const bool is_fullscreen) { /* edge code (t b l r) is along which area edge azone will be drawn */ - + if (alignment == RGN_ALIGN_TOP) region_azone_initialize(sa, ar, AE_BOTTOM_TO_TOPLEFT, is_fullscreen); else if (alignment == RGN_ALIGN_BOTTOM) @@ -1091,20 +1091,20 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti rcti *remainder_prev = remainder; int prefsizex, prefsizey; int alignment; - + if (ar == NULL) return; - + /* no returns in function, winrct gets set in the end again */ BLI_rcti_init(&ar->winrct, 0, 0, 0, 0); - + /* for test; allow split of previously defined region */ if (ar->alignment & RGN_SPLIT_PREV) if (ar->prev) remainder = &ar->prev->winrct; - + alignment = ar->alignment & ~RGN_SPLIT_PREV; - + /* set here, assuming userpref switching forces to call this again */ ar->overlap = region_is_overlap(win, sa, ar); @@ -1113,10 +1113,10 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti /* user errors */ if (ar->next == NULL && alignment != RGN_ALIGN_QSPLIT) alignment = RGN_ALIGN_NONE; - + /* prefsize, for header we stick to exception (prevent dpi rounding error) */ prefsizex = UI_DPI_FAC * (ar->sizex > 1 ? ar->sizex + 0.5f : ar->type->prefsizex); - + if (ar->regiontype == RGN_TYPE_HEADER) { prefsizey = ED_area_headersize(); } @@ -1144,7 +1144,7 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti BLI_rcti_init(remainder, 0, 0, 0, 0); } else if (alignment == RGN_ALIGN_TOP || alignment == RGN_ALIGN_BOTTOM) { - + if (rct_fits(remainder, 'v', prefsizey) < 0) { ar->flag |= RGN_FLAG_TOO_SMALL; } @@ -1153,9 +1153,9 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti if (fac < 0) prefsizey += fac; - + ar->winrct = *remainder; - + if (alignment == RGN_ALIGN_TOP) { ar->winrct.ymin = ar->winrct.ymax - prefsizey + 1; remainder->ymax = ar->winrct.ymin - 1; @@ -1167,18 +1167,18 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti } } else if (ELEM(alignment, RGN_ALIGN_LEFT, RGN_ALIGN_RIGHT)) { - + if (rct_fits(remainder, 'h', prefsizex) < 0) { ar->flag |= RGN_FLAG_TOO_SMALL; } else { int fac = rct_fits(remainder, 'h', prefsizex); - + if (fac < 0) prefsizex += fac; - + ar->winrct = *remainder; - + if (alignment == RGN_ALIGN_RIGHT) { ar->winrct.xmin = ar->winrct.xmax - prefsizex + 1; if (ar->overlap == 0) @@ -1194,7 +1194,7 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti else if (alignment == RGN_ALIGN_VSPLIT || alignment == RGN_ALIGN_HSPLIT) { /* percentage subdiv*/ ar->winrct = *remainder; - + if (alignment == RGN_ALIGN_HSPLIT) { if (rct_fits(remainder, 'h', prefsizex) > 4) { ar->winrct.xmax = BLI_rcti_cent_x(remainder); @@ -1216,18 +1216,18 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti } else if (alignment == RGN_ALIGN_QSPLIT) { ar->winrct = *remainder; - + /* test if there's still 4 regions left */ if (quad == 0) { ARegion *artest = ar->next; int count = 1; - + while (artest) { artest->alignment = RGN_ALIGN_QSPLIT; artest = artest->next; count++; } - + if (count != 4) { /* let's stop adding regions */ BLI_rcti_init(remainder, 0, 0, 0, 0); @@ -1260,16 +1260,16 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti quad++; } } - + /* for speedup */ ar->winx = BLI_rcti_size_x(&ar->winrct) + 1; ar->winy = BLI_rcti_size_y(&ar->winrct) + 1; - + /* if region opened normally, we store this for hide/reveal usage */ /* prevent rounding errors for UI_DPI_FAC mult and divide */ if (ar->winx > 1) ar->sizex = (ar->winx + 0.5f) / UI_DPI_FAC; if (ar->winy > 1) ar->sizey = (ar->winy + 0.5f) / UI_DPI_FAC; - + /* exception for multiple overlapping regions on same spot */ if (ar->overlap) region_overlap_fix(sa, ar); @@ -1277,7 +1277,7 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti /* set winrect for azones */ if (ar->flag & (RGN_FLAG_HIDDEN | RGN_FLAG_TOO_SMALL)) { ar->winrct = *remainder; - + switch (alignment) { case RGN_ALIGN_TOP: ar->winrct.ymin = ar->winrct.ymax; @@ -1304,7 +1304,7 @@ static void region_rect_recursive(wmWindow *win, ScrArea *sa, ARegion *ar, rcti ar->prev->winy = BLI_rcti_size_y(&ar->prev->winrct) + 1; } } - + /* in end, add azones, where appropriate */ if (ar->regiontype == RGN_TYPE_HEADER && ar->winy + 6 > sa->winy) { /* The logic for this is: when the header takes up the full area, @@ -1336,12 +1336,12 @@ static void area_calc_totrct(ScrArea *sa, int sizex, int sizey) else sa->totrct.xmin = sa->v1->vec.x; if (sa->v4->vec.x < sizex - 1) sa->totrct.xmax = sa->v4->vec.x - rt; else sa->totrct.xmax = sa->v4->vec.x; - + if (sa->v1->vec.y > 0) sa->totrct.ymin = sa->v1->vec.y + rt; else sa->totrct.ymin = sa->v1->vec.y; if (sa->v2->vec.y < sizey - 1) sa->totrct.ymax = sa->v2->vec.y - rt; else sa->totrct.ymax = sa->v2->vec.y; - + /* for speedup */ sa->winx = BLI_rcti_size_x(&sa->totrct) + 1; sa->winy = BLI_rcti_size_y(&sa->totrct) + 1; @@ -1389,7 +1389,7 @@ static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *hand if (flag & ED_KEYMAP_MARKERS) { /* time-markers */ wmKeyMap *keymap = WM_keymap_find(wm->defaultconf, "Markers", 0, 0); - + /* time space only has this keymap, the others get a boundbox restricted map */ if (sa->spacetype != SPACE_TIME) { ARegion *ar; @@ -1416,16 +1416,16 @@ static void ed_default_handlers(wmWindowManager *wm, ScrArea *sa, ListBase *hand } if (flag & ED_KEYMAP_GPENCIL) { /* grease pencil */ - /* NOTE: This is now 2 keymaps - One for basic functionality, - * and one that only applies when "Edit Mode" is enabled + /* NOTE: This is now 2 keymaps - One for basic functionality, + * and one that only applies when "Edit Mode" is enabled * for strokes. * - * For now, it's easier to just include both, + * For now, it's easier to just include both, * since you hardly want one without the other. */ wmKeyMap *keymap_general = WM_keymap_find(wm->defaultconf, "Grease Pencil", 0, 0); wmKeyMap *keymap_edit = WM_keymap_find(wm->defaultconf, "Grease Pencil Stroke Edit Mode", 0, 0); - + WM_event_add_keymap_handler(handlers, keymap_general); WM_event_add_keymap_handler(handlers, keymap_edit); } @@ -1442,38 +1442,38 @@ void ED_area_initialize(wmWindowManager *wm, wmWindow *win, ScrArea *sa) { ARegion *ar; rcti rect; - + /* set typedefinitions */ sa->type = BKE_spacetype_from_id(sa->spacetype); - + if (sa->type == NULL) { sa->butspacetype = sa->spacetype = SPACE_VIEW3D; sa->type = BKE_spacetype_from_id(sa->spacetype); } - + for (ar = sa->regionbase.first; ar; ar = ar->next) ar->type = BKE_regiontype_from_id(sa->type, ar->regiontype); - + /* area sizes */ area_calc_totrct(sa, WM_window_pixels_x(win), WM_window_pixels_y(win)); - + /* clear all azones, add the area triange widgets */ area_azone_initialize(win, win->screen, sa); /* region rect sizes */ rect = sa->totrct; region_rect_recursive(win, sa, sa->regionbase.first, &rect, 0); - + /* default area handlers */ ed_default_handlers(wm, sa, &sa->handlers, sa->type->keymapflag); /* checks spacedata, adds own handlers */ if (sa->type->init) sa->type->init(wm, sa); - + /* region windows, default and own handlers */ for (ar = sa->regionbase.first; ar; ar = ar->next) { region_subwindow(win, ar, false); - + if (ar->swinid) { /* default region handlers */ ed_default_handlers(wm, sa, &ar->handlers, ar->type->keymapflag); @@ -1534,9 +1534,9 @@ void ED_region_cursor_set(wmWindow *win, ScrArea *sa, ARegion *ar) void region_toggle_hidden(bContext *C, ARegion *ar, const bool do_fade) { ScrArea *sa = CTX_wm_area(C); - + ar->flag ^= RGN_FLAG_HIDDEN; - + if (do_fade && ar->overlap) { /* starts a timer, and in end calls the stuff below itself (region_sblend_invoke()) */ region_blend_start(C, sa, ar); @@ -1544,7 +1544,7 @@ void region_toggle_hidden(bContext *C, ARegion *ar, const bool do_fade) else { if (ar->flag & RGN_FLAG_HIDDEN) WM_event_remove_handlers(C, &ar->handlers); - + ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa); ED_area_tag_redraw(sa); } @@ -1565,7 +1565,7 @@ void ED_area_data_copy(ScrArea *sa_dst, ScrArea *sa_src, const bool do_free) ARegion *ar; const char spacetype = sa_dst->spacetype; const short flag_copy = HEADER_NO_PULLDOWN; - + sa_dst->headertype = sa_src->headertype; sa_dst->spacetype = sa_src->spacetype; sa_dst->type = sa_src->type; @@ -1627,7 +1627,7 @@ void ED_area_swapspace(bContext *C, ScrArea *sa1, ScrArea *sa2) /* tell WM to refresh, cursor types etc */ WM_event_add_mousemove(C); - + ED_area_tag_redraw(sa1); ED_area_tag_refresh(sa1); ED_area_tag_redraw(sa2); @@ -1665,12 +1665,12 @@ void ED_area_newspace(bContext *C, ScrArea *sa, int type, const bool skip_ar_exi sa->spacetype = type; sa->butspacetype = type; sa->type = st; - + /* check previously stored space */ for (sl = sa->spacedata.first; sl; sl = sl->next) if (sl->spacetype == type) break; - + /* old spacedata... happened during work on 2.50, remove */ if (sl && BLI_listbase_is_empty(&sl->regionbase)) { st->free(sl); @@ -1680,13 +1680,13 @@ void ED_area_newspace(bContext *C, ScrArea *sa, int type, const bool skip_ar_exi } sl = NULL; } - + if (sl) { /* swap regions */ slold->regionbase = sa->regionbase; sa->regionbase = sl->regionbase; BLI_listbase_clear(&sl->regionbase); - + /* put in front of list */ BLI_remlink(&sa->spacedata, sl); BLI_addhead(&sa->spacedata, sl); @@ -1696,7 +1696,7 @@ void ED_area_newspace(bContext *C, ScrArea *sa, int type, const bool skip_ar_exi if (st) { sl = st->new(C); BLI_addhead(&sa->spacedata, sl); - + /* swap regions */ if (slold) slold->regionbase = sa->regionbase; @@ -1704,18 +1704,18 @@ void ED_area_newspace(bContext *C, ScrArea *sa, int type, const bool skip_ar_exi BLI_listbase_clear(&sl->regionbase); } } - + ED_area_initialize(CTX_wm_manager(C), CTX_wm_window(C), sa); - + /* tell WM to refresh, cursor types etc */ WM_event_add_mousemove(C); - + /* send space change notifier */ WM_event_add_notifier(C, NC_SPACE | ND_SPACE_CHANGED, sa); - + ED_area_tag_refresh(sa); } - + /* also redraw when re-used */ ED_area_tag_redraw(sa); } @@ -1786,7 +1786,7 @@ void ED_region_panels(const bContext *C, ARegion *ar, const char *context, int c if (contextnr != -1) is_context_new = UI_view2d_tab_set(v2d, contextnr); - + /* before setting the view */ if (vertical) { /* only allow scrolling in vertical direction */ @@ -1850,7 +1850,7 @@ void ED_region_panels(const bContext *C, ARegion *ar, const char *context, int c /* the layout engine works with fixed width (from v2d->cur), which is being set at end of the loop */ /* in case scroller settings (hide flags) differ from previous, the whole loop gets done again */ for (redo = 2; redo > 0; redo--) { - + if (vertical) { w = BLI_rctf_size_x(&v2d->cur); em = (ar->type->prefsizex) ? 10 : 20; /* works out to 10*UI_UNIT_X or 20*UI_UNIT_X */ @@ -1861,7 +1861,7 @@ void ED_region_panels(const bContext *C, ARegion *ar, const char *context, int c } w -= margin_x; - + /* create panels */ UI_panels_begin(C, ar); @@ -1935,7 +1935,7 @@ void ED_region_panels(const bContext *C, ARegion *ar, const char *context, int c /* align panels and return size */ UI_panels_end(C, ar, &x, &y); - + /* before setting the view */ if (vertical) { /* we always keep the scroll offset - so the total view gets increased with the scrolled away part */ @@ -1964,10 +1964,10 @@ void ED_region_panels(const bContext *C, ARegion *ar, const char *context, int c y = -y; } - + /* this also changes the 'cur' */ UI_view2d_totRect_set(v2d, x, y); - + if (scroll != v2d->scroll) { /* Note: this code scales fine, but because of rounding differences, positions of elements * flip +1 or -1 pixel compared to redoing the entire layout again. @@ -1995,7 +1995,7 @@ void ED_region_panels(const bContext *C, ARegion *ar, const char *context, int c UI_ThemeClearColor((ar->type->regionid == RGN_TYPE_PREVIEW) ? TH_PREVIEW_BACK : TH_BACK); glClear(GL_COLOR_BUFFER_BIT); } - + /* reset line width for drawing tabs */ glLineWidth(1.0f); @@ -2007,7 +2007,7 @@ void ED_region_panels(const bContext *C, ARegion *ar, const char *context, int c /* restore view matrix */ UI_view2d_view_restore(C); - + if (use_category_tabs) { UI_panel_category_draw_all(ar, category); } @@ -2041,7 +2041,7 @@ void ED_region_header(const bContext *C, ARegion *ar) /* clear */ UI_ThemeClearColor((ED_screen_area_active(C)) ? TH_HEADER : TH_HEADERDESEL); glClear(GL_COLOR_BUFFER_BIT); - + /* set view2d view matrix for scrolling (without scrollers) */ UI_view2d_view_ortho(&ar->v2d); @@ -2057,7 +2057,7 @@ void ED_region_header(const bContext *C, ARegion *ar) header.type = ht; header.layout = layout; ht->draw(C, &header); - + /* for view2d */ xco = uiLayoutGetWidth(layout); if (xco > maxco) @@ -2065,11 +2065,11 @@ void ED_region_header(const bContext *C, ARegion *ar) } UI_block_layout_resolve(block, &xco, &yco); - + /* for view2d */ if (xco > maxco) maxco = xco; - + UI_block_end(C, block); UI_block_draw(C, block); } @@ -2236,7 +2236,7 @@ static void metadata_draw_imbuf(ImBuf *ibuf, const rctf *rect, int fontid, const if (metadata_is_valid(ibuf, temp_str, i, len)) { BLF_position(fontid, xmin + ofs_x, ymin, 0.0f); BLF_draw(fontid, temp_str, BLF_DRAW_STR_DUMMY_MAX); - + ofs_x += BLF_width(fontid, temp_str, BLF_DRAW_STR_DUMMY_MAX) + UI_UNIT_X; } } @@ -2423,18 +2423,18 @@ void ED_region_grid_draw(ARegion *ar, float zoomx, float zoomy) void ED_region_visible_rect(ARegion *ar, rcti *rect) { ARegion *arn = ar; - + /* allow function to be called without area */ while (arn->prev) arn = arn->prev; - + *rect = ar->winrct; - + /* check if a region overlaps with the current one */ for (; arn; arn = arn->next) { if (ar != arn && arn->overlap) { if (BLI_rcti_isect(rect, &arn->winrct, NULL)) { - + /* overlap left, also check 1 pixel offset (2 regions on one side) */ if (ABS(rect->xmin - arn->winrct.xmin) < 2) rect->xmin = arn->winrct.xmax; diff --git a/source/blender/editors/screen/glutil.c b/source/blender/editors/screen/glutil.c index f20b2a61370..6e9a580e403 100644 --- a/source/blender/editors/screen/glutil.c +++ b/source/blender/editors/screen/glutil.c @@ -62,18 +62,18 @@ void fdrawbezier(float vec[4][3]) { float dist; float curve_res = 24, spline_step = 0.0f; - + dist = 0.5f * fabsf(vec[0][0] - vec[3][0]); - + /* check direction later, for top sockets */ vec[1][0] = vec[0][0] + dist; vec[1][1] = vec[0][1]; - + vec[2][0] = vec[3][0] - dist; vec[2][1] = vec[3][1]; /* we can reuse the dist variable here to increment the GL curve eval amount */ dist = 1.0f / curve_res; - + cpack(0x0); glMap1f(GL_MAP1_VERTEX_3, 0.0, 1.0, 3, 4, vec[0]); glBegin(GL_LINE_STRIP); @@ -100,12 +100,12 @@ void fdrawline(float x1, float y1, float x2, float y2) void fdrawbox(float x1, float y1, float x2, float y2) { glBegin(GL_LINE_LOOP); - + glVertex2f(x1, y1); glVertex2f(x1, y2); glVertex2f(x2, y2); glVertex2f(x2, y1); - + glEnd(); } @@ -166,12 +166,12 @@ void sdrawtrifill(int x1, int y1, int x2, int y2) void sdrawbox(int x1, int y1, int x2, int y2) { glBegin(GL_LINE_LOOP); - + glVertex2i(x1, y1); glVertex2i(x1, y2); glVertex2i(x2, y2); glVertex2i(x2, y1); - + glEnd(); } @@ -184,7 +184,7 @@ void setlinestyle(int nr) glDisable(GL_LINE_STIPPLE); } else { - + glEnable(GL_LINE_STIPPLE); if (U.pixelsize > 1.0f) glLineStipple(nr, 0xCCCC); @@ -194,10 +194,10 @@ void setlinestyle(int nr) } /* Invert line handling */ - + #define GL_TOGGLE(mode, onoff) (((onoff) ? glEnable : glDisable)(mode)) -void set_inverted_drawing(int enable) +void set_inverted_drawing(int enable) { glLogicOp(enable ? GL_INVERT : GL_COPY); GL_TOGGLE(GL_COLOR_LOGIC_OP, enable); @@ -211,12 +211,12 @@ void sdrawXORline(int x0, int y0, int x1, int y1) if (x0 == x1 && y0 == y1) return; set_inverted_drawing(1); - + glBegin(GL_LINES); glVertex2i(x0, y0); glVertex2i(x1, y1); glEnd(); - + set_inverted_drawing(0); } @@ -224,11 +224,11 @@ void sdrawXORline4(int nr, int x0, int y0, int x1, int y1) { static int old[4][2][2]; static char flags[4] = {0, 0, 0, 0}; - + /* with builtin memory, max 4 lines */ set_inverted_drawing(1); - + glBegin(GL_LINES); if (nr == -1) { /* flush */ for (nr = 0; nr < 4; nr++) { @@ -250,15 +250,15 @@ void sdrawXORline4(int nr, int x0, int y0, int x1, int y1) old[nr][0][1] = y0; old[nr][1][0] = x1; old[nr][1][1] = y1; - + flags[nr] = 1; } - + glVertex2i(x0, y0); glVertex2i(x1, y1); } glEnd(); - + set_inverted_drawing(0); } @@ -294,13 +294,13 @@ void fdrawXORcirc(float xofs, float yofs, float rad) void glutil_draw_filled_arc(float start, float angle, float radius, int nsegments) { int i; - + glBegin(GL_TRIANGLE_FAN); glVertex2f(0.0, 0.0); for (i = 0; i < nsegments; i++) { float t = (float) i / (nsegments - 1); float cur = start + t * angle; - + glVertex2f(cosf(cur) * radius, sinf(cur) * radius); } glEnd(); @@ -309,12 +309,12 @@ void glutil_draw_filled_arc(float start, float angle, float radius, int nsegment void glutil_draw_lined_arc(float start, float angle, float radius, int nsegments) { int i; - + glBegin(GL_LINE_STRIP); for (i = 0; i < nsegments; i++) { float t = (float) i / (nsegments - 1); float cur = start + t * angle; - + glVertex2f(cosf(cur) * radius, sinf(cur) * radius); } glEnd(); @@ -406,13 +406,13 @@ void glaDrawPixelsTexScaled_clipping(float x, float y, int img_w, int img_h, /* workaround for os x 10.5/10.6 driver bug: http://lists.apple.com/archives/Mac-opengl/2008/Jul/msg00117.html */ glPixelZoom(1.0f, 1.0f); #endif - + /* setup seamless 2=on, 0=off */ seamless = ((tex_w < img_w || tex_h < img_h) && tex_w > 2 && tex_h > 2) ? 2 : 0; - + offset_x = tex_w - seamless; offset_y = tex_h - seamless; - + nsubparts_x = (img_w + (offset_x - 1)) / (offset_x); nsubparts_y = (img_h + (offset_y - 1)) / (offset_y); @@ -474,7 +474,7 @@ void glaDrawPixelsTexScaled_clipping(float x, float y, int img_w, int img_h, if (type == GL_FLOAT) { glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, subpart_w, subpart_h, format, GL_FLOAT, &f_rect[((size_t)subpart_y) * offset_y * img_w * components + subpart_x * offset_x * components]); - + /* add an extra border of pixels so linear looks ok at edges of full image */ if (subpart_w < tex_w) glTexSubImage2D(GL_TEXTURE_2D, 0, subpart_w, 0, 1, subpart_h, format, GL_FLOAT, &f_rect[((size_t)subpart_y) * offset_y * img_w * components + (subpart_x * offset_x + subpart_w - 1) * components]); @@ -485,7 +485,7 @@ void glaDrawPixelsTexScaled_clipping(float x, float y, int img_w, int img_h, } else { glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, subpart_w, subpart_h, format, GL_UNSIGNED_BYTE, &uc_rect[((size_t)subpart_y) * offset_y * img_w * components + subpart_x * offset_x * components]); - + if (subpart_w < tex_w) glTexSubImage2D(GL_TEXTURE_2D, 0, subpart_w, 0, 1, subpart_h, format, GL_UNSIGNED_BYTE, &uc_rect[((size_t)subpart_y) * offset_y * img_w * components + (subpart_x * offset_x + subpart_w - 1) * components]); if (subpart_h < tex_h) @@ -514,7 +514,7 @@ void glaDrawPixelsTexScaled_clipping(float x, float y, int img_w, int img_h, glBindTexture(GL_TEXTURE_2D, 0); glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); - + #if defined(__APPLE__) && 0 /* workaround for os x 10.5/10.6 driver bug (above) */ glPixelZoom(xzoom, yzoom); @@ -553,7 +553,7 @@ void glaDrawPixelsSafe(float x, float y, int img_w, int img_h, int row_w, int fo */ float ix = -x / xzoom; float iy = -y / yzoom; - + /* The maximum pixel amounts the image can be cropped * at the lower left without exceeding the origin. */ @@ -619,7 +619,7 @@ void glaDrawPixelsSafe(float x, float y, int img_w, int img_h, int row_w, int fo glDrawPixels(draw_w, draw_h, format, type, uc_rect + (off_y * row_w + off_x) * 4); } } - + glPixelStorei(GL_UNPACK_ROW_LENGTH, 0); GPU_BASIC_SHADER_ENABLE_AND_RESTORE(bound_options); @@ -685,23 +685,23 @@ struct gla2DDrawInfo { float wo_to_sc[2]; }; -void gla2DGetMap(gla2DDrawInfo *di, rctf *rect) +void gla2DGetMap(gla2DDrawInfo *di, rctf *rect) { *rect = di->world_rect; } -void gla2DSetMap(gla2DDrawInfo *di, rctf *rect) +void gla2DSetMap(gla2DDrawInfo *di, rctf *rect) { int sc_w, sc_h; float wo_w, wo_h; di->world_rect = *rect; - + sc_w = BLI_rcti_size_x(&di->screen_rect); sc_h = BLI_rcti_size_y(&di->screen_rect); wo_w = BLI_rcti_size_x(&di->world_rect); wo_h = BLI_rcti_size_y(&di->world_rect); - + di->wo_to_sc[0] = sc_w / wo_w; di->wo_to_sc[1] = sc_h / wo_h; } @@ -718,7 +718,7 @@ void gla2DSetMap(gla2DDrawInfo *di, rctf *rect) * by \a screen_rect is supposed to represent. If NULL it is assumed the * world has a 1 to 1 mapping to the screen. */ -gla2DDrawInfo *glaBegin2DDraw(rcti *screen_rect, rctf *world_rect) +gla2DDrawInfo *glaBegin2DDraw(rcti *screen_rect, rctf *world_rect) { gla2DDrawInfo *di = MEM_mallocN(sizeof(*di), "gla2DDrawInfo"); int sc_w, sc_h; @@ -796,7 +796,7 @@ void bgl_get_mats(bglMats *mats) glGetDoublev(GL_MODELVIEW_MATRIX, mats->modelview); glGetDoublev(GL_PROJECTION_MATRIX, mats->projection); glGetIntegerv(GL_VIEWPORT, (GLint *)mats->viewport); - + /* Very strange code here - it seems that certain bad values in the * modelview matrix can cause gluUnProject to give bad results. */ if (mats->modelview[0] < badvalue && @@ -809,7 +809,7 @@ void bgl_get_mats(bglMats *mats) { mats->modelview[5] = 0; } - + /* Set up viewport so that gluUnProject will give correct values */ mats->viewport[0] = 0; mats->viewport[1] = 0; @@ -823,19 +823,19 @@ void bgl_get_mats(bglMats *mats) void bglPolygonOffset(float viewdist, float dist) { static float winmat[16], offset = 0.0f; - + if (dist != 0.0f) { float offs; - + // glEnable(GL_POLYGON_OFFSET_FILL); // glPolygonOffset(-1.0, -1.0); /* hack below is to mimic polygon offset */ glMatrixMode(GL_PROJECTION); glGetFloatv(GL_PROJECTION_MATRIX, (float *)winmat); - + /* dist is from camera to center point */ - + if (winmat[15] > 0.5f) { #if 1 offs = 0.00001f * dist * viewdist; // ortho tweaking @@ -860,10 +860,10 @@ void bglPolygonOffset(float viewdist, float dist) */ offs = winmat[14] * -0.0025f * dist; } - + winmat[14] -= offs; offset += offs; - + glLoadMatrixf(winmat); glMatrixMode(GL_MODELVIEW); } diff --git a/source/blender/editors/screen/screen_context.c b/source/blender/editors/screen/screen_context.c index fed8449d9a2..b90430f27e2 100644 --- a/source/blender/editors/screen/screen_context.c +++ b/source/blender/editors/screen/screen_context.c @@ -86,7 +86,7 @@ const char *screen_context_dir[] = { "sequences", "selected_sequences", "selected_editable_sequences", /* sequencer */ "gpencil_data", "gpencil_data_owner", /* grease pencil data */ "visible_gpencil_layers", "editable_gpencil_layers", "editable_gpencil_strokes", - "active_gpencil_layer", "active_gpencil_frame", "active_gpencil_palette", + "active_gpencil_layer", "active_gpencil_frame", "active_gpencil_palette", "active_gpencil_palettecolor", "active_gpencil_brush", "active_operator", "selected_editable_fcurves", NULL}; @@ -185,7 +185,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult else if (CTX_data_equals(member, "editable_objects") || CTX_data_equals(member, "editable_bases")) { const unsigned int lay = context_layers(sc, scene, sa); const bool editable_objects = CTX_data_equals(member, "editable_objects"); - + /* Visible + Editable, but not necessarily selected */ for (base = scene->base.first; base; base = base->next) { if (((base->object->restrictflag & OB_RESTRICT_VIEW) == 0) && (base->lay & lay)) { @@ -204,7 +204,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult bArmature *arm = (obedit && obedit->type == OB_ARMATURE) ? obedit->data : NULL; EditBone *ebone, *flipbone = NULL; const bool editable_bones = CTX_data_equals(member, "editable_bones"); - + if (arm && arm->edbo) { /* Attention: X-Axis Mirroring is also handled here... */ for (ebone = arm->edbo->first; ebone; ebone = ebone->next) { @@ -212,19 +212,19 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult if (EBONE_VISIBLE(arm, ebone)) { /* Get 'x-axis mirror equivalent' bone if the X-Axis Mirroring option is enabled * so that most users of this data don't need to explicitly check for it themselves. - * + * * We need to make sure that these mirrored copies are not selected, otherwise some * bones will be operated on twice. */ if (arm->flag & ARM_MIRROR_EDIT) flipbone = ED_armature_ebone_get_mirrored(arm->edbo, ebone); - + /* if we're filtering for editable too, use the check for that instead, as it has selection check too */ if (editable_bones) { /* only selected + editable */ if (EBONE_EDITABLE(ebone)) { CTX_data_list_add(result, &arm->id, &RNA_EditBone, ebone); - + if ((flipbone) && !(flipbone->flag & BONE_SELECTED)) CTX_data_list_add(result, &arm->id, &RNA_EditBone, flipbone); } @@ -232,7 +232,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult else { /* only include bones if visible */ CTX_data_list_add(result, &arm->id, &RNA_EditBone, ebone); - + if ((flipbone) && EBONE_VISIBLE(arm, flipbone) == 0) CTX_data_list_add(result, &arm->id, &RNA_EditBone, flipbone); } @@ -246,7 +246,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult bArmature *arm = (obedit && obedit->type == OB_ARMATURE) ? obedit->data : NULL; EditBone *ebone, *flipbone = NULL; const bool selected_editable_bones = CTX_data_equals(member, "selected_editable_bones"); - + if (arm && arm->edbo) { /* Attention: X-Axis Mirroring is also handled here... */ for (ebone = arm->edbo->first; ebone; ebone = ebone->next) { @@ -254,19 +254,19 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult if (EBONE_VISIBLE(arm, ebone) && (ebone->flag & BONE_SELECTED)) { /* Get 'x-axis mirror equivalent' bone if the X-Axis Mirroring option is enabled * so that most users of this data don't need to explicitly check for it themselves. - * + * * We need to make sure that these mirrored copies are not selected, otherwise some * bones will be operated on twice. */ if (arm->flag & ARM_MIRROR_EDIT) flipbone = ED_armature_ebone_get_mirrored(arm->edbo, ebone); - + /* if we're filtering for editable too, use the check for that instead, as it has selection check too */ if (selected_editable_bones) { /* only selected + editable */ if (EBONE_EDITABLE(ebone)) { CTX_data_list_add(result, &arm->id, &RNA_EditBone, ebone); - + if ((flipbone) && !(flipbone->flag & BONE_SELECTED)) CTX_data_list_add(result, &arm->id, &RNA_EditBone, flipbone); } @@ -274,7 +274,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult else { /* only include bones if selected */ CTX_data_list_add(result, &arm->id, &RNA_EditBone, ebone); - + if ((flipbone) && !(flipbone->flag & BONE_SELECTED)) CTX_data_list_add(result, &arm->id, &RNA_EditBone, flipbone); } @@ -288,7 +288,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult Object *obpose = BKE_object_pose_armature_get(obact); bArmature *arm = (obpose) ? obpose->data : NULL; bPoseChannel *pchan; - + if (obpose && obpose->pose && arm) { for (pchan = obpose->pose->chanbase.first; pchan; pchan = pchan->next) { /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ @@ -304,7 +304,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult Object *obpose = BKE_object_pose_armature_get(obact); bArmature *arm = (obpose) ? obpose->data : NULL; bPoseChannel *pchan; - + if (obpose && obpose->pose && arm) { for (pchan = obpose->pose->chanbase.first; pchan; pchan = pchan->next) { /* ensure that PoseChannel is on visible layer and is not hidden in PoseMode */ @@ -337,7 +337,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult else if (CTX_data_equals(member, "active_pose_bone")) { bPoseChannel *pchan; Object *obpose = BKE_object_pose_armature_get(obact); - + pchan = BKE_pose_channel_active(obpose); if (pchan) { CTX_data_pointer_set(result, &obpose->id, &RNA_PoseBone, pchan); @@ -366,7 +366,7 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult /* convenience for now, 1 object per scene in editmode */ if (obedit) CTX_data_id_pointer_set(result, &obedit->id); - + return 1; } else if (CTX_data_equals(member, "sculpt_object")) { @@ -438,11 +438,11 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } else if (CTX_data_equals(member, "gpencil_data")) { /* FIXME: for some reason, CTX_data_active_object(C) returns NULL when called from these situations - * (as outlined above - see Campbell's #ifdefs). That causes the get_active function to fail when + * (as outlined above - see Campbell's #ifdefs). That causes the get_active function to fail when * called from context. For that reason, we end up using an alternative where we pass everything in! */ bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, scene, sa, obact); - + if (gpd) { CTX_data_id_pointer_set(result, &gpd->id); return 1; @@ -450,14 +450,14 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult } else if (CTX_data_equals(member, "gpencil_data_owner")) { /* pointer to which data/datablock owns the reference to the Grease Pencil data being used (as gpencil_data) - * XXX: see comment for gpencil_data case... + * XXX: see comment for gpencil_data case... */ bGPdata **gpd_ptr = NULL; PointerRNA ptr; - + /* get pointer to Grease Pencil Data */ gpd_ptr = ED_gpencil_data_get_pointers_direct((ID *)sc, scene, sa, obact, &ptr); - + if (gpd_ptr) { CTX_data_pointer_set(result, ptr.id.data, ptr.type, ptr.data); return 1; @@ -466,10 +466,10 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult else if (CTX_data_equals(member, "active_gpencil_layer")) { /* XXX: see comment for gpencil_data case... */ bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, scene, sa, obact); - + if (gpd) { bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); - + if (gpl) { CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl); return 1; @@ -517,10 +517,10 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult else if (CTX_data_equals(member, "active_gpencil_frame")) { /* XXX: see comment for gpencil_data case... */ bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, scene, sa, obact); - + if (gpd) { bGPDlayer *gpl = BKE_gpencil_layer_getactive(gpd); - + if (gpl) { CTX_data_pointer_set(result, &gpd->id, &RNA_GPencilLayer, gpl->actframe); return 1; @@ -530,10 +530,10 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult else if (CTX_data_equals(member, "visible_gpencil_layers")) { /* XXX: see comment for gpencil_data case... */ bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, scene, sa, obact); - + if (gpd) { bGPDlayer *gpl; - + for (gpl = gpd->layers.first; gpl; gpl = gpl->next) { if ((gpl->flag & GP_LAYER_HIDE) == 0) { CTX_data_list_add(result, &gpd->id, &RNA_GPencilLayer, gpl); @@ -546,10 +546,10 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult else if (CTX_data_equals(member, "editable_gpencil_layers")) { /* XXX: see comment for gpencil_data case... */ bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, scene, sa, obact); - + if (gpd) { bGPDlayer *gpl; - + for (gpl = gpd->layers.first; gpl; gpl = gpl->next) { if (gpencil_layer_is_editable(gpl)) { CTX_data_list_add(result, &gpd->id, &RNA_GPencilLayer, gpl); @@ -562,15 +562,15 @@ int ed_screen_context(const bContext *C, const char *member, bContextDataResult else if (CTX_data_equals(member, "editable_gpencil_strokes")) { /* XXX: see comment for gpencil_data case... */ bGPdata *gpd = ED_gpencil_data_get_active_direct((ID *)sc, scene, sa, obact); - + if (gpd) { bGPDlayer *gpl; - + for (gpl = gpd->layers.first; gpl; gpl = gpl->next) { if (gpencil_layer_is_editable(gpl) && (gpl->actframe)) { bGPDframe *gpf = gpl->actframe; bGPDstroke *gps; - + for (gps = gpf->strokes.first; gps; gps = gps->next) { if (ED_gpencil_stroke_can_use_direct(sa, gps)) { /* check if the color is editable */ diff --git a/source/blender/editors/screen/screen_draw.c b/source/blender/editors/screen/screen_draw.c index e67ae4e321c..12f45faee94 100644 --- a/source/blender/editors/screen/screen_draw.c +++ b/source/blender/editors/screen/screen_draw.c @@ -144,7 +144,7 @@ static void draw_vertical_join_shape(ScrArea *sa, char dir) points[6].x = sa->v4->vec.x; points[6].y = sa->v4->vec.y + h; - + points[7].x = sa->v3->vec.x; points[7].y = sa->v3->vec.y; diff --git a/source/blender/editors/screen/screen_edit.c b/source/blender/editors/screen/screen_edit.c index 6e875f53c26..ec1c5511ae8 100644 --- a/source/blender/editors/screen/screen_edit.c +++ b/source/blender/editors/screen/screen_edit.c @@ -79,7 +79,7 @@ static ScrVert *screen_addvert(bScreen *sc, short x, short y) ScrVert *sv = MEM_callocN(sizeof(ScrVert), "addscrvert"); sv->vec.x = x; sv->vec.y = y; - + BLI_addtail(&sc->vertbase, sv); return sv; } @@ -87,7 +87,7 @@ static ScrVert *screen_addvert(bScreen *sc, short x, short y) static void sortscrvert(ScrVert **v1, ScrVert **v2) { ScrVert *tmp; - + if (*v1 > *v2) { tmp = *v1; *v1 = *v2; @@ -98,11 +98,11 @@ static void sortscrvert(ScrVert **v1, ScrVert **v2) static ScrEdge *screen_addedge(bScreen *sc, ScrVert *v1, ScrVert *v2) { ScrEdge *se = MEM_callocN(sizeof(ScrEdge), "addscredge"); - + sortscrvert(&v1, &v2); se->v1 = v1; se->v2 = v2; - + BLI_addtail(&sc->edgebase, se); return se; } @@ -111,12 +111,12 @@ static ScrEdge *screen_addedge(bScreen *sc, ScrVert *v1, ScrVert *v2) ScrEdge *screen_findedge(bScreen *sc, ScrVert *v1, ScrVert *v2) { ScrEdge *se; - + sortscrvert(&v1, &v2); for (se = sc->edgebase.first; se; se = se->next) if (se->v1 == v1 && se->v2 == v2) return se; - + return NULL; } @@ -125,7 +125,7 @@ void removedouble_scrverts(bScreen *sc) ScrVert *v1, *verg; ScrEdge *se; ScrArea *sa; - + verg = sc->vertbase.first; while (verg) { if (verg->newv == NULL) { /* !!! */ @@ -178,16 +178,16 @@ void removenotused_scrverts(bScreen *sc) { ScrVert *sv, *svn; ScrEdge *se; - + /* we assume edges are ok */ - + se = sc->edgebase.first; while (se) { se->v1->flag = 1; se->v2->flag = 1; se = se->next; } - + sv = sc->vertbase.first; while (sv) { svn = sv->next; @@ -205,7 +205,7 @@ void removenotused_scrverts(bScreen *sc) void removedouble_scredges(bScreen *sc) { ScrEdge *verg, *se, *sn; - + /* compare */ verg = sc->edgebase.first; while (verg) { @@ -227,7 +227,7 @@ void removenotused_scredges(bScreen *sc) ScrEdge *se, *sen; ScrArea *sa; int a = 0; - + /* sets flags when edge is used in area */ sa = sc->areabase.first; while (sa) { @@ -272,16 +272,16 @@ ScrEdge *screen_find_active_scredge(bScreen *sc, { ScrEdge *se; int safety = U.widget_unit / 10; - + if (safety < 2) safety = 2; - + for (se = sc->edgebase.first; se; se = se->next) { if (scredge_is_horizontal(se)) { if (se->v1->vec.y > 0 && se->v1->vec.y < winsize_y - 1) { short min, max; min = MIN2(se->v1->vec.x, se->v2->vec.x); max = MAX2(se->v1->vec.x, se->v2->vec.x); - + if (abs(my - se->v1->vec.y) <= safety && mx >= min && mx <= max) return se; } @@ -291,13 +291,13 @@ ScrEdge *screen_find_active_scredge(bScreen *sc, short min, max; min = MIN2(se->v1->vec.y, se->v2->vec.y); max = MAX2(se->v1->vec.y, se->v2->vec.y); - + if (abs(mx - se->v1->vec.x) <= safety && my >= min && my <= max) return se; } } } - + return NULL; } @@ -313,19 +313,19 @@ static ScrArea *screen_addarea(bScreen *sc, ScrVert *v1, ScrVert *v2, ScrVert *v sa->v4 = v4; sa->headertype = headertype; sa->spacetype = sa->butspacetype = spacetype; - + BLI_addtail(&sc->areabase, sa); - + return sa; } static void screen_delarea(bContext *C, bScreen *sc, ScrArea *sa) { - + ED_area_exit(C, sa); - + BKE_screen_area_free(sa); - + BLI_remlink(&sc->areabase, sa); MEM_freeN(sa); } @@ -337,34 +337,34 @@ static short testsplitpoint(ScrArea *sa, char dir, float fac) short x, y; const short area_min_x = AREAMINX; const short area_min_y = ED_area_headersize(); - + // area big enough? if (dir == 'v' && (sa->v4->vec.x - sa->v1->vec.x <= 2 * area_min_x)) return 0; if (dir == 'h' && (sa->v2->vec.y - sa->v1->vec.y <= 2 * area_min_y)) return 0; - + // to be sure CLAMP(fac, 0.0f, 1.0f); - + if (dir == 'h') { y = sa->v1->vec.y + fac * (sa->v2->vec.y - sa->v1->vec.y); - + if (y - sa->v1->vec.y < area_min_y) y = sa->v1->vec.y + area_min_y; else if (sa->v2->vec.y - y < area_min_y) y = sa->v2->vec.y - area_min_y; else y -= (y % AREAGRID); - + return y; } else { x = sa->v1->vec.x + fac * (sa->v4->vec.x - sa->v1->vec.x); - + if (x - sa->v1->vec.x < area_min_x) x = sa->v1->vec.x + area_min_x; else if (sa->v4->vec.x - x < area_min_x) x = sa->v4->vec.x - area_min_x; else x -= (x % AREAGRID); - + return x; } } @@ -374,12 +374,12 @@ ScrArea *area_split(bScreen *sc, ScrArea *sa, char dir, float fac, int merge) ScrArea *newa = NULL; ScrVert *sv1, *sv2; short split; - + if (sa == NULL) return NULL; - + split = testsplitpoint(sa, dir, fac); if (split == 0) return NULL; - + /* note regarding (fac > 0.5f) checks below. * normally it shouldn't matter which is used since the copy should match the original * however with viewport rendering and python console this isn't the case. - campbell */ @@ -388,14 +388,14 @@ ScrArea *area_split(bScreen *sc, ScrArea *sa, char dir, float fac, int merge) /* new vertices */ sv1 = screen_addvert(sc, sa->v1->vec.x, split); sv2 = screen_addvert(sc, sa->v4->vec.x, split); - + /* new edges */ screen_addedge(sc, sa->v1, sv1); screen_addedge(sc, sv1, sa->v2); screen_addedge(sc, sa->v3, sv2); screen_addedge(sc, sv2, sa->v4); screen_addedge(sc, sv1, sv2); - + if (fac > 0.5f) { /* new areas: top */ newa = screen_addarea(sc, sv1, sa->v2, sa->v3, sv2, sa->headertype, sa->spacetype); @@ -414,20 +414,20 @@ ScrArea *area_split(bScreen *sc, ScrArea *sa, char dir, float fac, int merge) } ED_area_data_copy(newa, sa, true); - + } else { /* new vertices */ sv1 = screen_addvert(sc, split, sa->v1->vec.y); sv2 = screen_addvert(sc, split, sa->v2->vec.y); - + /* new edges */ screen_addedge(sc, sa->v1, sv1); screen_addedge(sc, sv1, sa->v4); screen_addedge(sc, sa->v2, sv2); screen_addedge(sc, sv2, sa->v3); screen_addedge(sc, sv1, sv2); - + if (fac > 0.5f) { /* new areas: right */ newa = screen_addarea(sc, sv1, sv2, sa->v3, sa->v4, sa->headertype, sa->spacetype); @@ -447,13 +447,13 @@ ScrArea *area_split(bScreen *sc, ScrArea *sa, char dir, float fac, int merge) ED_area_data_copy(newa, sa, true); } - + /* remove double vertices en edges */ if (merge) removedouble_scrverts(sc); removedouble_scredges(sc); removenotused_scredges(sc); - + return newa; } @@ -466,7 +466,7 @@ bScreen *ED_screen_add(wmWindow *win, Scene *scene, const char *name) bScreen *sc; ScrVert *sv1, *sv2, *sv3, *sv4; - + sc = BKE_libblock_alloc(G.main, ID_SCR, name, 0); sc->scene = scene; sc->do_refresh = true; @@ -477,15 +477,15 @@ bScreen *ED_screen_add(wmWindow *win, Scene *scene, const char *name) sv2 = screen_addvert(sc, 0, winsize_y - 1); sv3 = screen_addvert(sc, winsize_x - 1, winsize_y - 1); sv4 = screen_addvert(sc, winsize_x - 1, 0); - + screen_addedge(sc, sv1, sv2); screen_addedge(sc, sv2, sv3); screen_addedge(sc, sv3, sv4); screen_addedge(sc, sv4, sv1); - + /* dummy type, no spacedata */ screen_addarea(sc, sv1, sv2, sv3, sv4, HEADERDOWN, SPACE_EMPTY); - + return sc; } @@ -494,26 +494,26 @@ static void screen_copy(bScreen *to, bScreen *from) ScrVert *s1, *s2; ScrEdge *se; ScrArea *sa, *saf; - + /* free contents of 'to', is from blenkernel screen.c */ BKE_screen_free(to); - + BLI_duplicatelist(&to->vertbase, &from->vertbase); BLI_duplicatelist(&to->edgebase, &from->edgebase); BLI_duplicatelist(&to->areabase, &from->areabase); BLI_listbase_clear(&to->regionbase); - + s2 = to->vertbase.first; for (s1 = from->vertbase.first; s1; s1 = s1->next, s2 = s2->next) { s1->newv = s2; } - + for (se = to->edgebase.first; se; se = se->next) { se->v1 = se->v1->newv; se->v2 = se->v2->newv; sortscrvert(&(se->v1), &(se->v2)); } - + saf = from->areabase.first; for (sa = to->areabase.first; sa; sa = sa->next, saf = saf->next) { sa->v1 = sa->v1->newv; @@ -525,10 +525,10 @@ static void screen_copy(bScreen *to, bScreen *from) BLI_listbase_clear(&sa->regionbase); BLI_listbase_clear(&sa->actionzones); BLI_listbase_clear(&sa->handlers); - + ED_area_data_copy(sa, saf, true); } - + /* put at zero (needed?) */ for (s1 = from->vertbase.first; s1; s1 = s1->next) s1->newv = NULL; @@ -554,7 +554,7 @@ int area_getorientation(ScrArea *sa, ScrArea *sb) sbv2 = sb->v2; sbv3 = sb->v3; sbv4 = sb->v4; - + if (sav1 == sbv4 && sav2 == sbv3) { /* sa to right of sb = W */ return 0; } @@ -567,7 +567,7 @@ int area_getorientation(ScrArea *sa, ScrArea *sb) else if (sav1 == sbv2 && sav4 == sbv3) { /* sa on top of sb = S*/ return 3; } - + return -1; } @@ -577,14 +577,14 @@ int area_getorientation(ScrArea *sa, ScrArea *sb) int screen_area_join(bContext *C, bScreen *scr, ScrArea *sa1, ScrArea *sa2) { int dir; - + dir = area_getorientation(sa1, sa2); /*printf("dir is : %i\n", dir);*/ - + if (dir == -1) { return 0; } - + if (dir == 0) { sa1->v1 = sa2->v1; sa1->v2 = sa2->v2; @@ -609,7 +609,7 @@ int screen_area_join(bContext *C, bScreen *scr, ScrArea *sa1, ScrArea *sa2) screen_addedge(scr, sa1->v1, sa1->v2); screen_addedge(scr, sa1->v3, sa1->v4); } - + screen_delarea(C, scr, sa2); removedouble_scrverts(scr); @@ -622,22 +622,22 @@ void select_connected_scredge(bScreen *sc, ScrEdge *edge) ScrVert *sv; int oneselected; char dir; - + /* select connected, only in the right direction */ /* 'dir' is the direction of EDGE */ - + if (edge->v1->vec.x == edge->v2->vec.x) dir = 'v'; else dir = 'h'; - + sv = sc->vertbase.first; while (sv) { sv->flag = 0; sv = sv->next; } - + edge->v1->flag = 1; edge->v2->flag = 1; - + oneselected = 1; while (oneselected) { se = sc->edgebase.first; @@ -674,22 +674,22 @@ static void screen_test_scale(bScreen *sc, int winsize_x, int winsize_y) ScrArea *sa; int winsize_x_prev, winsize_y_prev; float facx, facy, tempf, min[2], max[2]; - + /* calculate size */ min[0] = min[1] = 20000.0f; max[0] = max[1] = 0.0f; - + for (sv = sc->vertbase.first; sv; sv = sv->next) { const float fv[2] = {(float)sv->vec.x, (float)sv->vec.y}; minmax_v2v2_v2(min, max, fv); } - + /* always make 0.0 left under */ for (sv = sc->vertbase.first; sv; sv = sv->next) { sv->vec.x -= min[0]; sv->vec.y -= min[1]; } - + winsize_x_prev = (max[0] - min[0]) + 1; winsize_y_prev = (max[1] - min[1]) + 1; @@ -725,7 +725,7 @@ static void screen_test_scale(bScreen *sc, int winsize_x, int winsize_y) if (winsize_x_prev != winsize_x || winsize_y_prev != winsize_y) { facx = ((float)winsize_x - 1) / ((float)winsize_x_prev - 1); facy = ((float)winsize_y - 1) / ((float)winsize_y_prev - 1); - + /* make sure it fits! */ for (sv = sc->vertbase.first; sv; sv = sv->next) { /* FIXME, this re-sizing logic is no good when re-sizing the window + redrawing [#24428] @@ -736,7 +736,7 @@ static void screen_test_scale(bScreen *sc, int winsize_x, int winsize_y) //sv->vec.x -= (sv->vec.x % AREAGRID); CLAMP(sv->vec.x, 0, winsize_x - 1); - + tempf = ((float)sv->vec.y) * facy; sv->vec.y = (short)(tempf + 0.5f); //sv->vec.y += AREAGRID - 1; @@ -800,25 +800,25 @@ static void screen_test_scale(bScreen *sc, int winsize_x, int winsize_y) /* test for collapsed areas. This could happen in some blender version... */ /* ton: removed option now, it needs Context... */ - + /* make each window at least ED_area_headersize() high */ for (sa = sc->areabase.first; sa; sa = sa->next) { int headery = headery_init; - + /* adjust headery if verts are along the edge of window */ if (sa->v1->vec.y > 0) headery += U.pixelsize; if (sa->v2->vec.y < winsize_y - 1) headery += U.pixelsize; - + if (sa->v2->vec.y - sa->v1->vec.y + 1 < headery) { /* lower edge */ ScrEdge *se = screen_findedge(sc, sa->v4, sa->v1); if (se && sa->v1 != sa->v2) { int yval; - + select_connected_scredge(sc, se); - + /* all selected vertices get the right offset */ yval = sa->v2->vec.y - headery + 1; for (sv = sc->vertbase.first; sv; sv = sv->next) { @@ -832,7 +832,7 @@ static void screen_test_scale(bScreen *sc, int winsize_x, int winsize_y) } } } - + } /* ****************** EXPORTED API TO OTHER MODULES *************************** */ @@ -840,9 +840,9 @@ static void screen_test_scale(bScreen *sc, int winsize_x, int winsize_y) bScreen *ED_screen_duplicate(wmWindow *win, bScreen *sc) { bScreen *newsc; - + if (sc->state != SCREENNORMAL) return NULL; /* XXX handle this case! */ - + /* make new empty screen: */ newsc = ED_screen_add(win, sc->scene, sc->id.name + 2); /* copy all data */ @@ -869,7 +869,7 @@ static void region_cursor_set(wmWindow *win, int swinid, int swin_changed) void ED_screen_do_listen(bContext *C, wmNotifier *note) { wmWindow *win = CTX_wm_window(C); - + /* generic notes */ switch (note->category) { case NC_WM: @@ -895,7 +895,7 @@ static void screen_refresh_headersizes(void) { const ListBase *lb = BKE_spacetypes_list(); SpaceType *st; - + for (st = lb->first; st; st = st->next) { ARegionType *art = BKE_regiontype_from_id(st, RGN_TYPE_HEADER); if (art) art->prefsizey = ED_area_headersize(); @@ -905,38 +905,38 @@ static void screen_refresh_headersizes(void) /* make this screen usable */ /* for file read and first use, for scaling window, area moves */ void ED_screen_refresh(wmWindowManager *wm, wmWindow *win) -{ +{ /* exception for bg mode, we only need the screen context */ if (!G.background) { const int winsize_x = WM_window_pixels_x(win); const int winsize_y = WM_window_pixels_y(win); ScrArea *sa; rcti winrct; - + winrct.xmin = 0; winrct.xmax = winsize_x - 1; winrct.ymin = 0; winrct.ymax = winsize_y - 1; - + /* header size depends on DPI, let's verify */ WM_window_set_dpi(win); screen_refresh_headersizes(); - + screen_test_scale(win->screen, winsize_x, winsize_y); - + if (win->screen->mainwin == 0) { win->screen->mainwin = wm_subwindow_open(win, &winrct, false); } else { wm_subwindow_position(win, win->screen->mainwin, &winrct, false); } - + for (sa = win->screen->areabase.first; sa; sa = sa->next) { /* set spacetype and region callbacks, calls init() */ /* sets subwindows for regions, adds handlers */ ED_area_initialize(wm, win, sa); } - + /* wake up animtimer */ if (win->screen->animtimer) WM_event_timer_sleep(wm, win, win->screen->animtimer, false); @@ -954,12 +954,12 @@ void ED_screen_refresh(wmWindowManager *wm, wmWindow *win) void ED_screens_initialize(wmWindowManager *wm) { wmWindow *win; - + for (win = wm->windows.first; win; win = win->next) { - + if (win->screen == NULL) win->screen = G.main->screen.first; - + ED_screen_refresh(wm, win); } } @@ -981,12 +981,12 @@ void ED_region_exit(bContext *C, ARegion *ar) wm_subwindow_close(CTX_wm_window(C), ar->swinid); ar->swinid = 0; } - + if (ar->headerstr) { MEM_freeN(ar->headerstr); ar->headerstr = NULL; } - + if (ar->regiontimer) { WM_event_remove_timer(CTX_wm_manager(C), CTX_wm_window(C), ar->regiontimer); ar->regiontimer = NULL; @@ -1020,7 +1020,7 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen) ARegion *ar; CTX_wm_window_set(C, window); - + if (screen->animtimer) WM_event_remove_timer(wm, window, screen->animtimer); screen->animtimer = NULL; @@ -1030,7 +1030,7 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen) wm_subwindow_close(window, screen->mainwin); screen->mainwin = 0; screen->subwinactive = 0; - + for (ar = screen->regionbase.first; ar; ar = ar->next) ED_region_exit(C, ar); @@ -1039,7 +1039,7 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen) /* mark it available for use for other windows */ screen->winid = 0; - + if (prevwin->screen->temp == 0) { /* use previous window if possible */ CTX_wm_window_set(C, prevwin); @@ -1048,7 +1048,7 @@ void ED_screen_exit(bContext *C, wmWindow *window, bScreen *screen) /* none otherwise */ CTX_wm_window_set(C, NULL); } - + } /* *********************************** */ @@ -1061,11 +1061,11 @@ static void screen_cursor_set(wmWindow *win, const wmEvent *event) AZone *az = NULL; ScrArea *sa; - + for (sa = win->screen->areabase.first; sa; sa = sa->next) if ((az = is_in_area_actionzone(sa, &event->x))) break; - + if (sa) { if (az->type == AZONE_AREA) WM_cursor_set(win, CURSOR_EDIT); @@ -1078,7 +1078,7 @@ static void screen_cursor_set(wmWindow *win, const wmEvent *event) } else { ScrEdge *actedge = screen_find_active_scredge(win->screen, winsize_x, winsize_y, event->x, event->y); - + if (actedge) { if (scredge_is_horizontal(actedge)) WM_cursor_set(win, CURSOR_Y_MOVE); @@ -1096,7 +1096,7 @@ static void screen_cursor_set(wmWindow *win, const wmEvent *event) void ED_screen_set_subwinactive(bContext *C, const wmEvent *event) { wmWindow *win = CTX_wm_window(C); - + if (win->screen) { bScreen *scr = win->screen; ScrArea *sa; @@ -1120,17 +1120,17 @@ void ED_screen_set_subwinactive(bContext *C, const wmEvent *event) } else scr->subwinactive = scr->mainwin; - + /* check for redraw headers */ if (oldswin != scr->subwinactive) { for (sa = scr->areabase.first; sa; sa = sa->next) { bool do_draw = false; - + for (ar = sa->regionbase.first; ar; ar = ar->next) if (ar->swinid == oldswin || ar->swinid == scr->subwinactive) do_draw = true; - + if (do_draw) { for (ar = sa->regionbase.first; ar; ar = ar->next) if (ar->regiontype == RGN_TYPE_HEADER) @@ -1138,7 +1138,7 @@ void ED_screen_set_subwinactive(bContext *C, const wmEvent *event) } } } - + /* cursors, for time being set always on edges, otherwise aregion doesnt switch */ if (scr->subwinactive == scr->mainwin) { screen_cursor_set(win, event); @@ -1168,10 +1168,10 @@ int ED_screen_area_active(const bContext *C) if (win && sc && sa) { AZone *az = is_in_area_actionzone(sa, &win->eventstate->x); ARegion *ar; - + if (az && az->type == AZONE_REGION) return 1; - + for (ar = sa->regionbase.first; ar; ar = ar->next) if (ar->swinid == sc->subwinactive) return 1; @@ -1191,7 +1191,7 @@ bool ED_screen_set(bContext *C, bScreen *sc) wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = CTX_wm_window(C); bScreen *oldscreen = CTX_wm_screen(C); - + /* validate screen, it's called with notifier reference */ if (BLI_findindex(&bmain->screen, sc) == -1) { return true; @@ -1213,7 +1213,7 @@ bool ED_screen_set(bContext *C, bScreen *sc) if (sc->winid != 0 && sc->winid != win->winid) { return false; } - + if (oldscreen != sc) { wmTimer *wt = oldscreen->animtimer; ScrArea *sa; @@ -1246,14 +1246,14 @@ bool ED_screen_set(bContext *C, bScreen *sc) win->screen = sc; CTX_wm_window_set(C, win); // stores C->wm.screen... hrmf - + /* prevent multiwin errors */ sc->winid = win->winid; - + ED_screen_refresh(CTX_wm_manager(C), CTX_wm_window(C)); WM_event_add_notifier(C, NC_WINDOW, NULL); WM_event_add_notifier(C, NC_SCREEN | ND_SCREENSET, sc); - + /* makes button hilites work */ WM_event_add_mousemove(C); @@ -1308,7 +1308,7 @@ bool ED_screen_delete(bContext *C, bScreen *sc) wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = CTX_wm_window(C); bScreen *newsc; - + /* don't allow deleting temp fullscreens for now */ if (ELEM(sc->state, SCREENMAXIMIZED, SCREENFULL)) { return false; @@ -1321,7 +1321,7 @@ bool ED_screen_delete(bContext *C, bScreen *sc) for (newsc = sc->id.prev; newsc; newsc = newsc->id.prev) if (!ed_screen_used(wm, newsc) && !newsc->temp) break; - + if (!newsc) { for (newsc = sc->id.next; newsc; newsc = newsc->id.next) if (!ed_screen_used(wm, newsc) && !newsc->temp) @@ -1354,13 +1354,13 @@ static void ed_screen_set_3dview_camera(Scene *scene, bScreen *sc, ScrArea *sa, if (!v3d->camera) { ARegion *ar; ListBase *regionbase; - + /* regionbase is in different place depending if space is active */ if (v3d == sa->spacedata.first) regionbase = &sa->regionbase; else regionbase = &v3d->regionbase; - + for (ar = regionbase->first; ar; ar = ar->next) { if (ar->regiontype == RGN_TYPE_WINDOW) { RegionView3D *rv3d = ar->regiondata; @@ -1388,7 +1388,7 @@ void ED_screen_set_scene(bContext *C, bScreen *screen, Scene *scene) for (sc = bmain->screen.first; sc; sc = sc->id.next) { if ((U.flag & USER_SCENEGLOBAL) || sc == screen) { - + if (scene != sc->scene) { /* all areas endlocalview */ // XXX ScrArea *sa = sc->areabase.first; @@ -1398,12 +1398,12 @@ void ED_screen_set_scene(bContext *C, bScreen *screen, Scene *scene) // } sc->scene = scene; } - + } } - + // copy_view3d_lock(0); /* space.c */ - + /* are there cameras in the views that are not in the scene? */ for (sc = bmain->screen.first; sc; sc = sc->id.next) { if ((U.flag & USER_SCENEGLOBAL) || sc == screen) { @@ -1422,17 +1422,17 @@ void ED_screen_set_scene(bContext *C, bScreen *screen, Scene *scene) } } } - + CTX_data_scene_set(C, scene); BKE_scene_set_background(bmain, scene); DAG_on_visible_update(bmain, false); - + ED_render_engine_changed(bmain); ED_update_for_newframe(bmain, scene, 1); - + /* complete redraw */ WM_event_add_notifier(C, NC_WINDOW, NULL); - + } /** @@ -1472,7 +1472,7 @@ ScrArea *ED_screen_full_newspace(bContext *C, ScrArea *sa, int type) if (!sa || sa->full == NULL) { newsa = ED_screen_state_toggle(C, win, sa, SCREENMAXIMIZED); } - + if (!newsa) { if (sa->full && (screen->state == SCREENMAXIMIZED)) { /* if this has been called from the temporary info header generated in @@ -1540,10 +1540,10 @@ void ED_screen_full_restore(bContext *C, ScrArea *sa) SpaceLink *sl = sa->spacedata.first; bScreen *screen = CTX_wm_screen(C); short state = (screen ? screen->state : SCREENMAXIMIZED); - + /* if fullscreen area has a temporary space (such as a file browser or fullscreen render * overlaid on top of an existing setup) then return to the previous space */ - + if (sl->next) { if (sa->flag & AREA_FLAG_TEMP_TYPE) { ED_screen_full_prevspace(C, sa); @@ -1717,15 +1717,15 @@ void ED_refresh_viewport_fps(bContext *C) { wmTimer *animtimer = CTX_wm_screen(C)->animtimer; Scene *scene = CTX_data_scene(C); - + /* is anim playback running? */ if (animtimer && (U.uiflag & USER_SHOW_FPS)) { ScreenFrameRateInfo *fpsi = scene->fps_info; - + /* if there isn't any info, init it first */ if (fpsi == NULL) fpsi = scene->fps_info = MEM_callocN(sizeof(ScreenFrameRateInfo), "refresh_viewport_fps fps_info"); - + /* update the values */ fpsi->redrawtime = fpsi->lredrawtime; fpsi->lredrawtime = animtimer->ltime; @@ -1738,7 +1738,7 @@ void ED_refresh_viewport_fps(bContext *C) } } -/* redraws: uses defines from stime->redraws +/* redraws: uses defines from stime->redraws * enable: 1 - forward on, -1 - backwards on, 0 - off */ void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, int enable) @@ -1748,17 +1748,17 @@ void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, wmWindow *win = CTX_wm_window(C); Scene *scene = CTX_data_scene(C); bScreen *stopscreen = ED_screen_animation_playing(wm); - + if (stopscreen) { WM_event_remove_timer(wm, win, stopscreen->animtimer); stopscreen->animtimer = NULL; } - + if (enable) { ScreenAnimData *sad = MEM_callocN(sizeof(ScreenAnimData), "ScreenAnimData"); - + screen->animtimer = WM_event_add_timer(wm, win, TIMER0, (1.0 / FPS)); - + sad->ar = CTX_wm_region(C); /* if startframe is larger than current frame, we put currentframe on startframe. * note: first frame then is not drawn! (ton) */ @@ -1793,7 +1793,7 @@ void ED_screen_animation_timer(bContext *C, int redraws, int refresh, int sync, sad->from_anim_edit = (ELEM(spacetype, SPACE_IPO, SPACE_ACTION, SPACE_NLA, SPACE_TIME)); screen->animtimer->customdata = sad; - + } /* notifier catched by top header, for button */ @@ -1806,7 +1806,7 @@ static ARegion *time_top_left_3dwindow(bScreen *screen) ARegion *aret = NULL; ScrArea *sa; int min = 10000; - + for (sa = screen->areabase.first; sa; sa = sa->next) { if (sa->spacetype == SPACE_VIEW3D) { ARegion *ar; @@ -1829,7 +1829,7 @@ void ED_screen_animation_timer_update(bScreen *screen, int redraws, int refresh) if (screen && screen->animtimer) { wmTimer *wt = screen->animtimer; ScreenAnimData *sad = wt->customdata; - + sad->redraws = redraws; sad->refresh = refresh; sad->ar = NULL; @@ -1857,7 +1857,7 @@ void ED_update_for_newframe(Main *bmain, Scene *scene, int UNUSED(mute)) } } #endif - + ED_clip_update_frame(bmain, scene->r.cfra); /* get layers from all windows */ @@ -1870,7 +1870,7 @@ void ED_update_for_newframe(Main *bmain, Scene *scene, int UNUSED(mute)) /* composite */ if (scene->use_nodes && scene->nodetree) ntreeCompositTagAnimated(scene->nodetree); - + /* update animated texture nodes */ { Tex *tex; @@ -1880,7 +1880,7 @@ void ED_update_for_newframe(Main *bmain, Scene *scene, int UNUSED(mute)) } } } - + } /* diff --git a/source/blender/editors/screen/screen_ops.c b/source/blender/editors/screen/screen_ops.c index 4639a346243..b3e788a9a13 100644 --- a/source/blender/editors/screen/screen_ops.c +++ b/source/blender/editors/screen/screen_ops.c @@ -163,11 +163,11 @@ int ED_operator_objectmode(bContext *C) return 0; if (CTX_data_edit_object(C)) return 0; - + /* add a check for ob->mode too? */ if (obact && (obact->mode != OB_MODE_OBJECT)) return 0; - + return 1; } @@ -249,20 +249,20 @@ int ED_operator_buttons_active(bContext *C) int ED_operator_node_active(bContext *C) { SpaceNode *snode = CTX_wm_space_node(C); - + if (snode && snode->edittree) return 1; - + return 0; } int ED_operator_node_editable(bContext *C) { SpaceNode *snode = CTX_wm_space_node(C); - + if (snode && snode->edittree && !ID_IS_LINKED(snode->edittree)) return 1; - + return 0; } @@ -453,15 +453,15 @@ int ED_operator_uvmap(bContext *C) { Object *obedit = CTX_data_edit_object(C); BMEditMesh *em = NULL; - + if (obedit && obedit->type == OB_MESH) { em = BKE_editmesh_from_object(obedit); } - + if (em && (em->bm->totface)) { return true; } - + return false; } @@ -602,7 +602,7 @@ static ARegion *screen_find_region_type(bContext *C, int type) /** \name Action Zone Operator * \{ */ -/* operator state vars used: +/* operator state vars used: * none * * functions: @@ -635,11 +635,11 @@ static int actionzone_area_poll(bContext *C) { wmWindow *win = CTX_wm_window(C); ScrArea *sa = CTX_wm_area(C); - + if (sa && win && win->eventstate) { const int *xy = &win->eventstate->x; AZone *az; - + for (az = sa->actionzones.first; az; az = az->next) if (BLI_rcti_isect_pt_v(&az->rect, xy)) return 1; @@ -668,13 +668,13 @@ static void fullscreen_click_rcti_init(rcti *rect, const short x1, const short y AZone *is_in_area_actionzone(ScrArea *sa, const int xy[2]) { AZone *az = NULL; - + for (az = sa->actionzones.first; az; az = az->next) { if (BLI_rcti_isect_pt_v(&az->rect, xy)) { if (az->type == AZONE_AREA) { /* no triangle intersect but a hotspot circle based on corner */ int radius = (xy[0] - az->x1) * (xy[0] - az->x1) + (xy[1] - az->y1) * (xy[1] - az->y1); - + if (radius <= AZONESPOT * AZONESPOT) break; } @@ -719,7 +719,7 @@ AZone *is_in_area_actionzone(ScrArea *sa, const int xy[2]) } } } - + return az; } @@ -737,9 +737,9 @@ static void actionzone_apply(bContext *C, wmOperator *op, int type) wmEvent event; wmWindow *win = CTX_wm_window(C); sActionzoneData *sad = op->customdata; - + sad->modifier = RNA_int_get(op->ptr, "modifier"); - + wm_event_init_from_window(win, &event); if (type == AZONE_AREA) @@ -753,7 +753,7 @@ static void actionzone_apply(bContext *C, wmOperator *op, int type) event.customdata = op->customdata; event.customdatafree = true; op->customdata = NULL; - + wm_event_add(win, &event); } @@ -762,17 +762,17 @@ static int actionzone_invoke(bContext *C, wmOperator *op, const wmEvent *event) ScrArea *sa = CTX_wm_area(C); AZone *az = is_in_area_actionzone(sa, &event->x); sActionzoneData *sad; - + /* quick escape */ if (az == NULL) return OPERATOR_PASS_THROUGH; - + /* ok we do the actionzone */ sad = op->customdata = MEM_callocN(sizeof(sActionzoneData), "sActionzoneData"); sad->sa1 = sa; sad->az = az; sad->x = event->x; sad->y = event->y; - + /* region azone directly reacts on mouse clicks */ if (ELEM(sad->az->type, AZONE_REGION, AZONE_FULLSCREEN)) { actionzone_apply(C, op, sad->az->type); @@ -782,7 +782,7 @@ static int actionzone_invoke(bContext *C, wmOperator *op, const wmEvent *event) else { /* add modal handler */ WM_event_add_modal_handler(C, op); - + return OPERATOR_RUNNING_MODAL; } } @@ -813,7 +813,7 @@ static int actionzone_modal(bContext *C, wmOperator *op, const wmEvent *event) sad->gesture_dir = 's'; else sad->gesture_dir = 'w'; - + if (sad->az->type == AZONE_AREA) { /* once we drag outside the actionzone, register a gesture * check we're not on an edge so join finds the other area */ @@ -832,7 +832,7 @@ static int actionzone_modal(bContext *C, wmOperator *op, const wmEvent *event) /* apply sends event */ actionzone_apply(C, op, sad->az->type); actionzone_exit(op); - + return OPERATOR_FINISHED; } break; @@ -843,9 +843,9 @@ static int actionzone_modal(bContext *C, wmOperator *op, const wmEvent *event) case LEFTMOUSE: actionzone_exit(op); return OPERATOR_CANCELLED; - + } - + return OPERATOR_RUNNING_MODAL; } @@ -860,15 +860,15 @@ static void SCREEN_OT_actionzone(wmOperatorType *ot) ot->name = "Handle Area Action Zones"; ot->description = "Handle area action zones for mouse actions/gestures"; ot->idname = "SCREEN_OT_actionzone"; - + ot->invoke = actionzone_invoke; ot->modal = actionzone_modal; ot->poll = actionzone_area_poll; ot->cancel = actionzone_cancel; - + /* flags */ ot->flag = OPTYPE_BLOCKING | OPTYPE_INTERNAL; - + RNA_def_int(ot->srna, "modifier", 0, 0, 2, "Modifier", "Modifier state", 0, 2); } @@ -906,15 +906,15 @@ static int area_swap_init(wmOperator *op, const wmEvent *event) { sAreaSwapData *sd = NULL; sActionzoneData *sad = event->customdata; - + if (sad == NULL || sad->sa1 == NULL) return 0; - + sd = MEM_callocN(sizeof(sAreaSwapData), "sAreaSwapData"); sd->sa1 = sad->sa1; sd->sa2 = sad->sa2; op->customdata = sd; - + return 1; } @@ -934,22 +934,22 @@ static void area_swap_cancel(bContext *C, wmOperator *op) static int area_swap_invoke(bContext *C, wmOperator *op, const wmEvent *event) { - + if (!area_swap_init(op, event)) return OPERATOR_PASS_THROUGH; - + /* add modal handler */ WM_cursor_modal_set(CTX_wm_window(C), BC_SWAPAREA_CURSOR); WM_event_add_modal_handler(C, op); - + return OPERATOR_RUNNING_MODAL; - + } static int area_swap_modal(bContext *C, wmOperator *op, const wmEvent *event) { sActionzoneData *sad = op->customdata; - + switch (event->type) { case MOUSEMOVE: /* second area, for join */ @@ -966,15 +966,15 @@ static int area_swap_modal(bContext *C, wmOperator *op, const wmEvent *event) ED_area_tag_redraw(sad->sa2); ED_area_swapspace(C, sad->sa1, sad->sa2); - + area_swap_exit(C, op); - + WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); - + return OPERATOR_FINISHED; } break; - + case ESCKEY: area_swap_cancel(C, op); return OPERATOR_CANCELLED; @@ -987,12 +987,12 @@ static void SCREEN_OT_area_swap(wmOperatorType *ot) ot->name = "Swap Areas"; ot->description = "Swap selected areas screen positions"; ot->idname = "SCREEN_OT_area_swap"; - + ot->invoke = area_swap_invoke; ot->modal = area_swap_modal; ot->poll = ED_operator_areaactive; ot->cancel = area_swap_cancel; - + ot->flag = OPTYPE_BLOCKING; } @@ -1011,18 +1011,18 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, const wmEvent *event) bScreen *newsc, *sc; ScrArea *sa; rcti rect; - + win = CTX_wm_window(C); sc = CTX_wm_screen(C); sa = CTX_wm_area(C); - + /* XXX hrmf! */ if (event->type == EVT_ACTIONZONE_AREA) { sActionzoneData *sad = event->customdata; - + if (sad == NULL) return OPERATOR_PASS_THROUGH; - + sa = sad->sa1; } @@ -1039,11 +1039,11 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, const wmEvent *event) } *newwin->stereo3d_format = *win->stereo3d_format; - + /* allocs new screen and adds to newly created window, using window size */ newsc = ED_screen_add(newwin, CTX_data_scene(C), sc->id.name + 2); newwin->screen = newsc; - + /* copy area to new screen */ ED_area_data_copy((ScrArea *)newsc->areabase.first, sa, true); @@ -1056,7 +1056,7 @@ static int area_dupli_invoke(bContext *C, wmOperator *op, const wmEvent *event) finally: if (event->type == EVT_ACTIONZONE_AREA) actionzone_exit(op); - + if (newwin) { return OPERATOR_FINISHED; } @@ -1070,7 +1070,7 @@ static void SCREEN_OT_area_dupli(wmOperatorType *ot) ot->name = "Duplicate Area into New Window"; ot->description = "Duplicate selected area into new window"; ot->idname = "SCREEN_OT_area_dupli"; - + ot->invoke = area_dupli_invoke; ot->poll = ED_operator_areaactive; } @@ -1081,7 +1081,7 @@ static void SCREEN_OT_area_dupli(wmOperatorType *ot) /** \name Move Area Edge Operator * \{ */ -/* operator state vars used: +/* operator state vars used: * x, y mouse coord near edge * delta movement of edge * @@ -1124,22 +1124,22 @@ static void area_move_set_limits(bScreen *sc, int dir, ScrArea *sa; int areaminy = ED_area_headersize(); int areamin; - + /* we check all areas and test for free space with MINSIZE */ *bigger = *smaller = 100000; - + for (sa = sc->areabase.first; sa; sa = sa->next) { if (dir == 'h') { int y1; areamin = areaminy; - + if (sa->v1->vec.y > 0) areamin += U.pixelsize; if (sa->v2->vec.y < winsize_y - 1) areamin += U.pixelsize; - + y1 = sa->v2->vec.y - sa->v1->vec.y + 1 - areamin; - + /* if top or down edge selected, test height */ if (sa->v1->editflag && sa->v4->editflag) *bigger = min_ii(*bigger, y1); @@ -1149,14 +1149,14 @@ static void area_move_set_limits(bScreen *sc, int dir, else { int x1; areamin = AREAMINX; - + if (sa->v1->vec.x > 0) areamin += U.pixelsize; if (sa->v4->vec.x < winsize_x - 1) areamin += U.pixelsize; - + x1 = sa->v4->vec.x - sa->v1->vec.x + 1 - areamin; - + /* if left or right edge selected, test width */ if (sa->v1->editflag && sa->v2->editflag) *bigger = min_ii(*bigger, x1); @@ -1178,29 +1178,29 @@ static int area_move_init(bContext *C, wmOperator *op) const int winsize_x = WM_window_pixels_x(win); const int winsize_y = WM_window_pixels_y(win); int x, y; - + /* required properties */ x = RNA_int_get(op->ptr, "x"); y = RNA_int_get(op->ptr, "y"); - + /* setup */ actedge = screen_find_active_scredge(sc, winsize_x, winsize_y, x, y); if (actedge == NULL) return 0; - + md = MEM_callocN(sizeof(sAreaMoveData), "sAreaMoveData"); op->customdata = md; - + md->dir = scredge_is_horizontal(actedge) ? 'h' : 'v'; if (md->dir == 'h') md->origval = actedge->v1->vec.y; else md->origval = actedge->v1->vec.x; - + select_connected_scredge(sc, actedge); /* now all vertices with 'flag==1' are the ones that can be moved. Move this to editflag */ for (v1 = sc->vertbase.first; v1; v1 = v1->next) v1->editflag = v1->flag; - + area_move_set_limits(sc, md->dir, winsize_x, winsize_y, &md->bigger, &md->smaller); - + return 1; } @@ -1313,7 +1313,7 @@ static void area_move_exit(bContext *C, wmOperator *op) if (op->customdata) MEM_freeN(op->customdata); op->customdata = NULL; - + /* this makes sure aligned edges will result in aligned grabbing */ removedouble_scrverts(CTX_wm_screen(C)); removedouble_scredges(CTX_wm_screen(C)); @@ -1323,10 +1323,10 @@ static int area_move_exec(bContext *C, wmOperator *op) { if (!area_move_init(C, op)) return OPERATOR_CANCELLED; - + area_move_apply(C, op); area_move_exit(C, op); - + return OPERATOR_FINISHED; } @@ -1335,19 +1335,19 @@ static int area_move_invoke(bContext *C, wmOperator *op, const wmEvent *event) { RNA_int_set(op->ptr, "x", event->x); RNA_int_set(op->ptr, "y", event->y); - - if (!area_move_init(C, op)) + + if (!area_move_init(C, op)) return OPERATOR_PASS_THROUGH; - + /* add temp handler */ WM_event_add_modal_handler(C, op); - + return OPERATOR_RUNNING_MODAL; } static void area_move_cancel(bContext *C, wmOperator *op) { - + RNA_int_set(op->ptr, "delta", 0); area_move_apply(C, op); area_move_exit(C, op); @@ -1358,17 +1358,17 @@ static int area_move_modal(bContext *C, wmOperator *op, const wmEvent *event) { sAreaMoveData *md = op->customdata; int delta, x, y; - + /* execute the events */ switch (event->type) { case MOUSEMOVE: { x = RNA_int_get(op->ptr, "x"); y = RNA_int_get(op->ptr, "y"); - + delta = (md->dir == 'v') ? event->x - x : event->y - y; RNA_int_set(op->ptr, "delta", delta); - + area_move_apply(C, op); break; } @@ -1378,7 +1378,7 @@ static int area_move_modal(bContext *C, wmOperator *op, const wmEvent *event) case KM_MODAL_APPLY: area_move_exit(C, op); return OPERATOR_FINISHED; - + case KM_MODAL_CANCEL: area_move_cancel(C, op); return OPERATOR_CANCELLED; @@ -1393,7 +1393,7 @@ static int area_move_modal(bContext *C, wmOperator *op, const wmEvent *event) break; } } - + return OPERATOR_RUNNING_MODAL; } @@ -1403,16 +1403,16 @@ static void SCREEN_OT_area_move(wmOperatorType *ot) ot->name = "Move Area Edges"; ot->description = "Move selected area edges"; ot->idname = "SCREEN_OT_area_move"; - + ot->exec = area_move_exec; ot->invoke = area_move_invoke; ot->cancel = area_move_cancel; ot->modal = area_move_modal; ot->poll = ED_operator_screen_mainwinactive; /* when mouse is over area-edge */ - + /* flags */ ot->flag = OPTYPE_BLOCKING | OPTYPE_INTERNAL; - + /* rna */ RNA_def_int(ot->srna, "x", 0, INT_MIN, INT_MAX, "X", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "y", 0, INT_MIN, INT_MAX, "Y", "", INT_MIN, INT_MAX); @@ -1471,7 +1471,7 @@ typedef struct sAreaSplitData { ScrEdge *nedge; /* new edge */ ScrArea *sarea; /* start area */ ScrArea *narea; /* new area */ - + } sAreaSplitData; static void area_split_draw_cb(const struct wmWindow *UNUSED(win), void *userdata) @@ -1491,11 +1491,11 @@ static void area_split_draw_cb(const struct wmWindow *UNUSED(win), void *userdat static int area_split_menu_init(bContext *C, wmOperator *op) { sAreaSplitData *sd; - + /* custom data */ sd = (sAreaSplitData *)MEM_callocN(sizeof(sAreaSplitData), "op_area_split"); op->customdata = sd; - + sd->sarea = CTX_wm_area(C); return 1; @@ -1508,25 +1508,25 @@ static int area_split_init(bContext *C, wmOperator *op) sAreaSplitData *sd; int areaminy = ED_area_headersize() + 1; int dir; - + /* required context */ if (sa == NULL) return 0; - + /* required properties */ dir = RNA_enum_get(op->ptr, "direction"); - + /* minimal size */ if (dir == 'v' && sa->winx < 2 * AREAMINX) return 0; if (dir == 'h' && sa->winy < 2 * areaminy) return 0; - + /* custom data */ sd = (sAreaSplitData *)MEM_callocN(sizeof(sAreaSplitData), "op_area_split"); op->customdata = sd; - + sd->sarea = sa; sd->origsize = dir == 'v' ? sa->winx : sa->winy; sd->origmin = dir == 'v' ? sa->totrct.xmin : sa->totrct.ymin; - + return 1; } @@ -1542,7 +1542,7 @@ static ScrEdge *area_findsharededge(bScreen *screen, ScrArea *sa, ScrArea *sb) ScrVert *sbv2 = sb->v2; ScrVert *sbv3 = sb->v3; ScrVert *sbv4 = sb->v4; - + if (sav1 == sbv4 && sav2 == sbv3) { /* sa to right of sb = W */ return screen_findedge(screen, sav1, sav2); } @@ -1555,7 +1555,7 @@ static ScrEdge *area_findsharededge(bScreen *screen, ScrArea *sa, ScrArea *sb) else if (sav1 == sbv2 && sav4 == sbv3) { /* sa on top of sb = S*/ return screen_findedge(screen, sav1, sav4); } - + return NULL; } @@ -1567,24 +1567,24 @@ static int area_split_apply(bContext *C, wmOperator *op) sAreaSplitData *sd = (sAreaSplitData *)op->customdata; float fac; int dir; - + fac = RNA_float_get(op->ptr, "factor"); dir = RNA_enum_get(op->ptr, "direction"); - + sd->narea = area_split(sc, sd->sarea, dir, fac, 0); /* 0 = no merge */ - + if (sd->narea) { ScrVert *sv; - + sd->nedge = area_findsharededge(sc, sd->sarea, sd->narea); - + /* select newly created edge, prepare for moving edge */ for (sv = sc->vertbase.first; sv; sv = sv->next) sv->editflag = 0; - + sd->nedge->v1->editflag = 1; sd->nedge->v2->editflag = 1; - + if (dir == 'h') sd->origval = sd->nedge->v1->vec.y; else sd->origval = sd->nedge->v1->vec.x; @@ -1592,10 +1592,10 @@ static int area_split_apply(bContext *C, wmOperator *op) ED_area_tag_redraw(sd->narea); WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); - + return 1; } - + return 0; } @@ -1612,10 +1612,10 @@ static void area_split_exit(bContext *C, wmOperator *op) MEM_freeN(op->customdata); op->customdata = NULL; } - + WM_cursor_modal_restore(CTX_wm_window(C)); WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); - + /* this makes sure aligned edges will result in aligned grabbing */ removedouble_scrverts(CTX_wm_screen(C)); removedouble_scredges(CTX_wm_screen(C)); @@ -1637,26 +1637,26 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event) const int winsize_x = WM_window_pixels_x(win); const int winsize_y = WM_window_pixels_y(win); int dir; - + /* no full window splitting allowed */ if (sc->state != SCREENNORMAL) return OPERATOR_CANCELLED; - + if (event->type == EVT_ACTIONZONE_AREA) { sActionzoneData *sad = event->customdata; - + if (sad == NULL || sad->modifier > 0) { return OPERATOR_PASS_THROUGH; } - + /* verify *sad itself */ if (sad->sa1 == NULL || sad->az == NULL) return OPERATOR_PASS_THROUGH; - + /* is this our *sad? if areas not equal it should be passed on */ if (CTX_wm_area(C) != sad->sa1 || sad->sa1 != sad->sa2) return OPERATOR_PASS_THROUGH; - + /* prepare operator state vars */ if (sad->gesture_dir == 'n' || sad->gesture_dir == 's') { dir = 'h'; @@ -1667,52 +1667,52 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event) RNA_float_set(op->ptr, "factor", ((float)(event->y - sad->sa1->v1->vec.y)) / (float)sad->sa1->winy); } RNA_enum_set(op->ptr, "direction", dir); - + /* general init, also non-UI case, adds customdata, sets area and defaults */ if (!area_split_init(C, op)) return OPERATOR_PASS_THROUGH; - + } else { ScrEdge *actedge; int x, y; - + /* retrieve initial mouse coord, so we can find the active edge */ if (RNA_struct_property_is_set(op->ptr, "mouse_x")) x = RNA_int_get(op->ptr, "mouse_x"); else x = event->x; - + if (RNA_struct_property_is_set(op->ptr, "mouse_y")) y = RNA_int_get(op->ptr, "mouse_y"); else y = event->x; - + actedge = screen_find_active_scredge(sc, winsize_x, winsize_y, x, y); if (actedge == NULL) return OPERATOR_CANCELLED; - + dir = scredge_is_horizontal(actedge) ? 'v' : 'h'; - + RNA_enum_set(op->ptr, "direction", dir); - + /* special case, adds customdata, sets defaults */ if (!area_split_menu_init(C, op)) return OPERATOR_CANCELLED; - + } - + sd = (sAreaSplitData *)op->customdata; - + if (event->type == EVT_ACTIONZONE_AREA) { - + /* do the split */ if (area_split_apply(C, op)) { area_move_set_limits(sc, dir, winsize_x, winsize_y, &sd->bigger, &sd->smaller); - + /* add temp handler for edge move or cancel */ WM_event_add_modal_handler(C, op); - + return OPERATOR_RUNNING_MODAL; } } @@ -1724,22 +1724,22 @@ static int area_split_invoke(bContext *C, wmOperator *op, const wmEvent *event) area_split_preview_update_cursor(C, op); return OPERATOR_RUNNING_MODAL; - + } - + return OPERATOR_PASS_THROUGH; } /* function to be called outside UI context, or for redo */ static int area_split_exec(bContext *C, wmOperator *op) { - + if (!area_split_init(C, op)) return OPERATOR_CANCELLED; - + area_split_apply(C, op); area_split_exit(C, op); - + return OPERATOR_FINISHED; } @@ -1747,7 +1747,7 @@ static int area_split_exec(bContext *C, wmOperator *op) static void area_split_cancel(bContext *C, wmOperator *op) { sAreaSplitData *sd = (sAreaSplitData *)op->customdata; - + if (sd->previewmode) { /* pass */ } @@ -1788,7 +1788,7 @@ static int area_split_modal(bContext *C, wmOperator *op, const wmEvent *event) } } break; - + case MIDDLEMOUSE: case TABKEY: if (sd->previewmode == 0) { @@ -1804,9 +1804,9 @@ static int area_split_modal(bContext *C, wmOperator *op, const wmEvent *event) } } } - + break; - + case RIGHTMOUSE: /* cancel operation */ case ESCKEY: area_split_cancel(C, op); @@ -1883,17 +1883,17 @@ static void SCREEN_OT_area_split(wmOperatorType *ot) ot->name = "Split Area"; ot->description = "Split selected area into new windows"; ot->idname = "SCREEN_OT_area_split"; - + ot->exec = area_split_exec; ot->invoke = area_split_invoke; ot->modal = area_split_modal; ot->cancel = area_split_cancel; - + ot->poll = screen_active_editable; /* flags */ ot->flag = OPTYPE_BLOCKING | OPTYPE_INTERNAL; - + /* rna */ RNA_def_enum(ot->srna, "direction", prop_direction_items, 'h', "Direction", ""); RNA_def_float(ot->srna, "factor", 0.5f, 0.0, 1.0, "Factor", "", 0.0, 1.0); @@ -1915,7 +1915,7 @@ typedef struct RegionMoveData { int origx, origy; int maxsize; AZEdge edge; - + } RegionMoveData; @@ -1923,20 +1923,20 @@ static int area_max_regionsize(ScrArea *sa, ARegion *scalear, AZEdge edge) { ARegion *ar; int dist; - + if (edge == AE_RIGHT_TO_TOPLEFT || edge == AE_LEFT_TO_TOPRIGHT) { dist = BLI_rcti_size_x(&sa->totrct); } else { /* AE_BOTTOM_TO_TOPLEFT, AE_TOP_TO_BOTTOMRIGHT */ dist = BLI_rcti_size_y(&sa->totrct); } - - /* subtractwidth of regions on opposite side + + /* subtractwidth of regions on opposite side * prevents dragging regions into other opposite regions */ for (ar = sa->regionbase.first; ar; ar = ar->next) { if (ar == scalear) continue; - + if (scalear->alignment == RGN_ALIGN_TOP && ar->alignment == RGN_ALIGN_BOTTOM) dist -= ar->winy; else if (scalear->alignment == RGN_ALIGN_BOTTOM && ar->alignment == RGN_ALIGN_TOP) @@ -1945,7 +1945,7 @@ static int area_max_regionsize(ScrArea *sa, ARegion *scalear, AZEdge edge) dist -= ar->winx; else if (scalear->alignment == RGN_ALIGN_RIGHT && ar->alignment == RGN_ALIGN_LEFT) dist -= ar->winx; - + /* case of regions in regions, like operator properties panel */ /* these can sit on top of other regions such as headers, so account for this */ else if (edge == AE_BOTTOM_TO_TOPLEFT && scalear->alignment & RGN_ALIGN_TOP && @@ -1967,20 +1967,20 @@ static int region_scale_invoke(bContext *C, wmOperator *op, const wmEvent *event { sActionzoneData *sad = event->customdata; AZone *az; - + if (event->type != EVT_ACTIONZONE_REGION) { BKE_report(op->reports, RPT_ERROR, "Can only scale region size from an action zone"); return OPERATOR_CANCELLED; } - + az = sad->az; - + if (az->ar) { RegionMoveData *rmd = MEM_callocN(sizeof(RegionMoveData), "RegionMoveData"); int maxsize; - + op->customdata = rmd; - + rmd->az = az; rmd->ar = az->ar; rmd->sa = sad->sa1; @@ -1988,13 +1988,13 @@ static int region_scale_invoke(bContext *C, wmOperator *op, const wmEvent *event rmd->origx = event->x; rmd->origy = event->y; rmd->maxsize = area_max_regionsize(rmd->sa, rmd->ar, rmd->edge); - + /* if not set we do now, otherwise it uses type */ if (rmd->ar->sizex == 0) rmd->ar->sizex = rmd->ar->winx; if (rmd->ar->sizey == 0) rmd->ar->sizey = rmd->ar->winy; - + /* now copy to regionmovedata */ if (rmd->edge == AE_LEFT_TO_TOPRIGHT || rmd->edge == AE_RIGHT_TO_TOPLEFT) { rmd->origval = rmd->ar->sizex; @@ -2002,21 +2002,21 @@ static int region_scale_invoke(bContext *C, wmOperator *op, const wmEvent *event else { rmd->origval = rmd->ar->sizey; } - + /* limit headers to standard height for now */ if (rmd->ar->regiontype == RGN_TYPE_HEADER) maxsize = ED_area_headersize(); else maxsize = 1000; - + CLAMP(rmd->maxsize, 0, maxsize); - + /* add temp handler */ WM_event_add_modal_handler(C, op); - + return OPERATOR_RUNNING_MODAL; } - + return OPERATOR_FINISHED; } @@ -2071,21 +2071,21 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event) { RegionMoveData *rmd = op->customdata; int delta; - + /* execute the events */ switch (event->type) { case MOUSEMOVE: - + if (rmd->edge == AE_LEFT_TO_TOPRIGHT || rmd->edge == AE_RIGHT_TO_TOPLEFT) { delta = event->x - rmd->origx; if (rmd->edge == AE_LEFT_TO_TOPRIGHT) delta = -delta; - + /* region sizes now get multiplied */ delta /= UI_DPI_FAC; - + rmd->ar->sizex = rmd->origval + delta; CLAMP(rmd->ar->sizex, 0, rmd->maxsize); - + if (rmd->ar->sizex < UI_UNIT_X) { rmd->ar->sizex = rmd->origval; if (!(rmd->ar->flag & RGN_FLAG_HIDDEN)) @@ -2098,7 +2098,7 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event) int maxsize = region_scale_get_maxsize(rmd); delta = event->y - rmd->origy; if (rmd->edge == AE_BOTTOM_TO_TOPLEFT) delta = -delta; - + /* region sizes now get multiplied */ delta /= UI_DPI_FAC; @@ -2113,19 +2113,19 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event) if (!(rmd->ar->flag & RGN_FLAG_HIDDEN)) region_scale_toggle_hidden(C, rmd); } - else if (maxsize > 0 && (rmd->ar->sizey > maxsize)) + else if (maxsize > 0 && (rmd->ar->sizey > maxsize)) rmd->ar->sizey = maxsize; else if (rmd->ar->flag & RGN_FLAG_HIDDEN) region_scale_toggle_hidden(C, rmd); } ED_area_tag_redraw(rmd->sa); WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); - + break; - + case LEFTMOUSE: if (event->val == KM_RELEASE) { - + if (ABS(event->x - rmd->origx) < 2 && ABS(event->y - rmd->origy) < 2) { if (rmd->ar->flag & RGN_FLAG_HIDDEN) { region_scale_toggle_hidden(C, rmd); @@ -2139,15 +2139,15 @@ static int region_scale_modal(bContext *C, wmOperator *op, const wmEvent *event) } MEM_freeN(op->customdata); op->customdata = NULL; - + return OPERATOR_FINISHED; } break; - + case ESCKEY: break; } - + return OPERATOR_RUNNING_MODAL; } @@ -2163,13 +2163,13 @@ static void SCREEN_OT_region_scale(wmOperatorType *ot) ot->name = "Scale Region Size"; ot->description = "Scale selected area"; ot->idname = "SCREEN_OT_region_scale"; - + ot->invoke = region_scale_invoke; ot->modal = region_scale_modal; ot->cancel = region_scale_cancel; - + ot->poll = ED_operator_areaactive; - + /* flags */ ot->flag = OPTYPE_BLOCKING | OPTYPE_INTERNAL; } @@ -2228,19 +2228,19 @@ static int frame_offset_exec(bContext *C, wmOperator *op) Main *bmain = CTX_data_main(C); Scene *scene = CTX_data_scene(C); int delta; - + delta = RNA_int_get(op->ptr, "delta"); CFRA += delta; FRAMENUMBER_MIN_CLAMP(CFRA); SUBFRA = 0.f; - + areas_do_frame_follow(C, false); BKE_sound_seek_scene(bmain, scene); WM_event_add_notifier(C, NC_SCENE | ND_FRAME, scene); - + return OPERATOR_FINISHED; } @@ -2249,13 +2249,13 @@ static void SCREEN_OT_frame_offset(wmOperatorType *ot) ot->name = "Frame Offset"; ot->idname = "SCREEN_OT_frame_offset"; ot->description = "Move current frame forward/backward by a given number"; - + ot->exec = frame_offset_exec; - + ot->poll = ED_operator_screenactive_norender; ot->flag = OPTYPE_UNDO_GROUPED; ot->undo_group = "FRAME_CHANGE"; - + /* rna */ RNA_def_int(ot->srna, "delta", 0, INT_MIN, INT_MAX, "Delta", "", INT_MIN, INT_MAX); } @@ -2279,9 +2279,9 @@ static int frame_jump_exec(bContext *C, wmOperator *op) */ if (animtimer) { ScreenAnimData *sad = animtimer->customdata; - + sad->flag |= ANIMPLAY_FLAG_USE_NEXT_FRAME; - + if (RNA_boolean_get(op->ptr, "end")) sad->nextfra = PEFRA; else @@ -2292,14 +2292,14 @@ static int frame_jump_exec(bContext *C, wmOperator *op) CFRA = PEFRA; else CFRA = PSFRA; - + areas_do_frame_follow(C, true); BKE_sound_seek_scene(bmain, scene); WM_event_add_notifier(C, NC_SCENE | ND_FRAME, scene); } - + return OPERATOR_FINISHED; } @@ -2308,13 +2308,13 @@ static void SCREEN_OT_frame_jump(wmOperatorType *ot) ot->name = "Jump to Endpoint"; ot->description = "Jump to first/last frame in frame range"; ot->idname = "SCREEN_OT_frame_jump"; - + ot->exec = frame_jump_exec; - + ot->poll = ED_operator_screenactive_norender; ot->flag = OPTYPE_UNDO_GROUPED; ot->undo_group = "FRAME_CHANGE"; - + /* rna */ RNA_def_boolean(ot->srna, "end", 0, "Last Frame", "Jump to the last frame of the frame range"); } @@ -2337,7 +2337,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) float cfra; const bool next = RNA_boolean_get(op->ptr, "next"); bool done = false; - + /* sanity checks */ if (scene == NULL) return OPERATOR_CANCELLED; @@ -2346,13 +2346,13 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) /* init binarytree-list for getting keyframes */ BLI_dlrbTree_init(&keys); - + /* seed up dummy dopesheet context with flags to perform necessary filtering */ if ((scene->flag & SCE_KEYS_NO_SELONLY) == 0) { /* only selected channels are included */ ads.filterflag |= ADS_FILTER_ONLYSEL; } - + /* populate tree with keyframe nodes */ scene_to_keylist(&ads, scene, &keys, NULL); gpencil_to_keylist(&ads, scene->gpd, &keys); @@ -2361,7 +2361,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) ob_to_keylist(&ads, ob, &keys, NULL); gpencil_to_keylist(&ads, ob->gpd, &keys); } - + { Mask *mask = CTX_data_edit_mask(C); if (mask) { @@ -2372,13 +2372,13 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) /* build linked-list for searching */ BLI_dlrbTree_linkedlist_sync(&keys); - + /* find matching keyframe in the right direction */ if (next) ak = (ActKeyColumn *)BLI_dlrbTree_search_next(&keys, compare_ak_cfraPtr, &cfra); else ak = (ActKeyColumn *)BLI_dlrbTree_search_prev(&keys, compare_ak_cfraPtr, &cfra); - + while ((ak != NULL) && (done == false)) { if (CFRA != (int)ak->cfra) { /* this changes the frame, so set the frame and we're done */ @@ -2395,7 +2395,7 @@ static int keyframe_jump_exec(bContext *C, wmOperator *op) } } } - + /* free temp stuff */ BLI_dlrbTree_free(&keys); @@ -2421,13 +2421,13 @@ static void SCREEN_OT_keyframe_jump(wmOperatorType *ot) ot->name = "Jump to Keyframe"; ot->description = "Jump to previous/next keyframe"; ot->idname = "SCREEN_OT_keyframe_jump"; - + ot->exec = keyframe_jump_exec; - + ot->poll = ED_operator_screenactive_norender; ot->flag = OPTYPE_UNDO_GROUPED; ot->undo_group = "FRAME_CHANGE"; - + /* properties */ RNA_def_boolean(ot->srna, "next", true, "Next Keyframe", ""); } @@ -2522,16 +2522,16 @@ static int screen_set_exec(bContext *C, wmOperator *op) Main *bmain = CTX_data_main(C); bScreen *screen = CTX_wm_screen(C); bScreen *screen_prev = screen; - + ScrArea *sa = CTX_wm_area(C); int tot = BLI_listbase_count(&bmain->screen); int delta = RNA_int_get(op->ptr, "delta"); - + /* temp screens are for userpref or render display */ if (screen->temp || (sa && sa->full && sa->full->temp)) { return OPERATOR_CANCELLED; } - + if (delta == 1) { while (tot--) { screen = screen->id.next; @@ -2553,13 +2553,13 @@ static int screen_set_exec(bContext *C, wmOperator *op) else { screen = NULL; } - + if (screen && screen_prev != screen) { /* return to previous state before switching screens */ if (sa && sa->full) { ED_screen_full_restore(C, sa); /* may free 'screen_prev' */ } - + ED_screen_set(C, screen); return OPERATOR_FINISHED; } @@ -2571,7 +2571,7 @@ static void SCREEN_OT_screen_set(wmOperatorType *ot) ot->name = "Set Screen"; ot->description = "Cycle through available screens"; ot->idname = "SCREEN_OT_screen_set"; - + ot->exec = screen_set_exec; ot->poll = ED_operator_screenactive; @@ -2591,17 +2591,17 @@ static int screen_maximize_area_exec(bContext *C, wmOperator *op) bScreen *screen = CTX_wm_screen(C); ScrArea *sa = NULL; const bool hide_panels = RNA_boolean_get(op->ptr, "use_hide_panels"); - + /* search current screen for 'fullscreen' areas */ /* prevents restoring info header, when mouse is over it */ for (sa = screen->areabase.first; sa; sa = sa->next) { if (sa->full) break; } - + if (sa == NULL) { sa = CTX_wm_area(C); } - + if (hide_panels) { if (!ELEM(screen->state, SCREENNORMAL, SCREENFULL)) { return OPERATOR_CANCELLED; @@ -2625,7 +2625,7 @@ static void SCREEN_OT_screen_full_area(wmOperatorType *ot) ot->name = "Toggle Maximize Area"; ot->description = "Toggle display selected area as fullscreen/maximized"; ot->idname = "SCREEN_OT_screen_full_area"; - + ot->exec = screen_maximize_area_exec; ot->poll = ED_operator_areaactive; ot->flag = 0; @@ -2640,7 +2640,7 @@ static void SCREEN_OT_screen_full_area(wmOperatorType *ot) /** \name Screen Join-Area Operator * \{ */ -/* operator state vars used: +/* operator state vars used: * x1, y1 mouse coord in first area, which will disappear * x2, y2 mouse coord in 2nd area, which will become joined * @@ -2695,18 +2695,18 @@ static int area_join_init(bContext *C, wmOperator *op) int x1, y1; int x2, y2; int shared = 0; - + /* required properties, make negative to get return 0 if not set by caller */ x1 = RNA_int_get(op->ptr, "min_x"); y1 = RNA_int_get(op->ptr, "min_y"); x2 = RNA_int_get(op->ptr, "max_x"); y2 = RNA_int_get(op->ptr, "max_y"); - + sa1 = BKE_screen_find_area_xy(CTX_wm_screen(C), SPACE_TYPE_ANY, x1, y1); sa2 = BKE_screen_find_area_xy(CTX_wm_screen(C), SPACE_TYPE_ANY, x2, y2); if (sa1 == NULL || sa2 == NULL || sa1 == sa2) return 0; - + /* do areas share an edge? */ if (sa1->v1 == sa2->v1 || sa1->v1 == sa2->v2 || sa1->v1 == sa2->v3 || sa1->v1 == sa2->v4) shared++; if (sa1->v2 == sa2->v1 || sa1->v2 == sa2->v2 || sa1->v2 == sa2->v3 || sa1->v2 == sa2->v4) shared++; @@ -2716,7 +2716,7 @@ static int area_join_init(bContext *C, wmOperator *op) printf("areas don't share edge\n"); return 0; } - + jd = (sAreaJoinData *)MEM_callocN(sizeof(sAreaJoinData), "op_area_join"); jd->sa1 = sa1; @@ -2734,7 +2734,7 @@ static int area_join_apply(bContext *C, wmOperator *op) { sAreaJoinData *jd = (sAreaJoinData *)op->customdata; if (!jd) return 0; - + if (!screen_area_join(C, CTX_wm_screen(C), jd->sa1, jd->sa2)) { return 0; } @@ -2742,7 +2742,7 @@ static int area_join_apply(bContext *C, wmOperator *op) CTX_wm_area_set(C, NULL); CTX_wm_region_set(C, NULL); } - + return 1; } @@ -2758,7 +2758,7 @@ static void area_join_exit(bContext *C, wmOperator *op) MEM_freeN(jd); op->customdata = NULL; } - + /* this makes sure aligned edges will result in aligned grabbing */ removedouble_scredges(CTX_wm_screen(C)); removenotused_scredges(CTX_wm_screen(C)); @@ -2767,55 +2767,55 @@ static void area_join_exit(bContext *C, wmOperator *op) static int area_join_exec(bContext *C, wmOperator *op) { - if (!area_join_init(C, op)) + if (!area_join_init(C, op)) return OPERATOR_CANCELLED; - + area_join_apply(C, op); area_join_exit(C, op); - + return OPERATOR_FINISHED; } /* interaction callback */ static int area_join_invoke(bContext *C, wmOperator *op, const wmEvent *event) { - + if (event->type == EVT_ACTIONZONE_AREA) { sActionzoneData *sad = event->customdata; - + if (sad == NULL || sad->modifier > 0) { return OPERATOR_PASS_THROUGH; } - + /* verify *sad itself */ if (sad->sa1 == NULL || sad->sa2 == NULL) return OPERATOR_PASS_THROUGH; - + /* is this our *sad? if areas equal it should be passed on */ if (sad->sa1 == sad->sa2) return OPERATOR_PASS_THROUGH; - + /* prepare operator state vars */ RNA_int_set(op->ptr, "min_x", sad->x); RNA_int_set(op->ptr, "min_y", sad->y); RNA_int_set(op->ptr, "max_x", event->x); RNA_int_set(op->ptr, "max_y", event->y); } - - - if (!area_join_init(C, op)) + + + if (!area_join_init(C, op)) return OPERATOR_PASS_THROUGH; - + /* add temp handler */ WM_event_add_modal_handler(C, op); - + return OPERATOR_RUNNING_MODAL; } static void area_join_cancel(bContext *C, wmOperator *op) { WM_event_add_notifier(C, NC_WINDOW, NULL); - + area_join_exit(C, op); } @@ -2824,15 +2824,15 @@ static int area_join_modal(bContext *C, wmOperator *op, const wmEvent *event) { bScreen *sc = CTX_wm_screen(C); sAreaJoinData *jd = (sAreaJoinData *)op->customdata; - + /* execute the events */ switch (event->type) { - - case MOUSEMOVE: + + case MOUSEMOVE: { ScrArea *sa = BKE_screen_find_area_xy(sc, SPACE_TYPE_ANY, event->x, event->y); int dir; - + if (sa) { if (jd->sa1 != sa) { dir = area_getorientation(jd->sa1, sa); @@ -2840,7 +2840,7 @@ static int area_join_modal(bContext *C, wmOperator *op, const wmEvent *event) jd->sa2 = sa; } else { - /* we are not bordering on the previously selected area + /* we are not bordering on the previously selected area * we check if area has common border with the one marked for removal * in this case we can swap areas. */ @@ -2856,7 +2856,7 @@ static int area_join_modal(bContext *C, wmOperator *op, const wmEvent *event) WM_event_add_notifier(C, NC_WINDOW, NULL); } else { - /* we are back in the area previously selected for keeping + /* we are back in the area previously selected for keeping * we swap the areas if possible to allow user to choose */ if (jd->sa2 != NULL) { jd->sa1 = jd->sa2; @@ -2888,13 +2888,13 @@ static int area_join_modal(bContext *C, wmOperator *op, const wmEvent *event) return OPERATOR_FINISHED; } break; - + case RIGHTMOUSE: case ESCKEY: area_join_cancel(C, op); return OPERATOR_CANCELLED; } - + return OPERATOR_RUNNING_MODAL; } @@ -2905,17 +2905,17 @@ static void SCREEN_OT_area_join(wmOperatorType *ot) ot->name = "Join Area"; ot->description = "Join selected areas into new window"; ot->idname = "SCREEN_OT_area_join"; - + /* api callbacks */ ot->exec = area_join_exec; ot->invoke = area_join_invoke; ot->modal = area_join_modal; ot->poll = screen_active_editable; ot->cancel = area_join_cancel; - + /* flags */ ot->flag = OPTYPE_BLOCKING | OPTYPE_INTERNAL; - + /* rna */ RNA_def_int(ot->srna, "min_x", -100, INT_MIN, INT_MAX, "X 1", "", INT_MIN, INT_MAX); RNA_def_int(ot->srna, "min_y", -100, INT_MIN, INT_MAX, "Y 1", "", INT_MIN, INT_MAX); @@ -2941,12 +2941,12 @@ static int screen_area_options_invoke(bContext *C, wmOperator *op, const wmEvent const int winsize_y = WM_window_pixels_y(win); actedge = screen_find_active_scredge(sc, winsize_x, winsize_y, event->x, event->y); - + if (actedge == NULL) return OPERATOR_CANCELLED; - + pup = UI_popup_menu_begin(C, RNA_struct_ui_name(op->type->srna), ICON_NONE); layout = UI_popup_menu_layout(pup); - + uiItemFullO(layout, "SCREEN_OT_area_split", NULL, ICON_NONE, NULL, WM_OP_INVOKE_DEFAULT, 0, &ptr); /* store initial mouse cursor position */ RNA_int_set(&ptr, "mouse_x", event->x); @@ -2958,9 +2958,9 @@ static int screen_area_options_invoke(bContext *C, wmOperator *op, const wmEvent RNA_int_set(&ptr, "min_y", event->y + 4); RNA_int_set(&ptr, "max_x", event->x - 4); RNA_int_set(&ptr, "max_y", event->y - 4); - + UI_popup_menu_end(C, pup); - + return OPERATOR_INTERFACE; } @@ -2970,10 +2970,10 @@ static void SCREEN_OT_area_options(wmOperatorType *ot) ot->name = "Area Options"; ot->description = "Operations for splitting and merging"; ot->idname = "SCREEN_OT_area_options"; - + /* api callbacks */ ot->invoke = screen_area_options_invoke; - + ot->poll = ED_operator_screen_mainwinactive; /* flags */ @@ -2992,7 +2992,7 @@ static int spacedata_cleanup_exec(bContext *C, wmOperator *op) bScreen *screen; ScrArea *sa; int tot = 0; - + for (screen = bmain->screen.first; screen; screen = screen->id.next) { for (sa = screen->areabase.first; sa; sa = sa->next) { if (sa->spacedata.first != sa->spacedata.last) { @@ -3006,7 +3006,7 @@ static int spacedata_cleanup_exec(bContext *C, wmOperator *op) } } BKE_reportf(op->reports, RPT_INFO, "Removed amount of editors: %d", tot); - + return OPERATOR_FINISHED; } @@ -3016,11 +3016,11 @@ static void SCREEN_OT_spacedata_cleanup(wmOperatorType *ot) ot->name = "Clean-up Space-data"; ot->description = "Remove unused settings for invisible editors"; ot->idname = "SCREEN_OT_spacedata_cleanup"; - + /* api callbacks */ ot->exec = spacedata_cleanup_exec; ot->poll = WM_operator_winactive; - + } /** \} */ @@ -3048,7 +3048,7 @@ static int repeat_last_exec(bContext *C, wmOperator *UNUSED(op)) WM_operator_free_all_after(wm, lastop); WM_operator_repeat(C, lastop); } - + return OPERATOR_CANCELLED; } @@ -3058,12 +3058,12 @@ static void SCREEN_OT_repeat_last(wmOperatorType *ot) ot->name = "Repeat Last"; ot->description = "Repeat last action"; ot->idname = "SCREEN_OT_repeat_last"; - + /* api callbacks */ ot->exec = repeat_last_exec; - + ot->poll = ED_operator_screenactive; - + } /** \} */ @@ -3079,37 +3079,37 @@ static int repeat_history_invoke(bContext *C, wmOperator *op, const wmEvent *UNU uiPopupMenu *pup; uiLayout *layout; int items, i; - + items = BLI_listbase_count(&wm->operators); if (items == 0) return OPERATOR_CANCELLED; - + pup = UI_popup_menu_begin(C, RNA_struct_ui_name(op->type->srna), ICON_NONE); layout = UI_popup_menu_layout(pup); - + for (i = items - 1, lastop = wm->operators.last; lastop; lastop = lastop->prev, i--) if ((lastop->type->flag & OPTYPE_REGISTER) && WM_operator_repeat_check(C, lastop)) { uiItemIntO(layout, RNA_struct_ui_name(lastop->type->srna), ICON_NONE, op->type->idname, "index", i); } - + UI_popup_menu_end(C, pup); - + return OPERATOR_INTERFACE; } static int repeat_history_exec(bContext *C, wmOperator *op) { wmWindowManager *wm = CTX_wm_manager(C); - + op = BLI_findlink(&wm->operators, RNA_int_get(op->ptr, "index")); if (op) { /* let's put it as last operator in list */ BLI_remlink(&wm->operators, op); BLI_addtail(&wm->operators, op); - + WM_operator_repeat(C, op); } - + return OPERATOR_FINISHED; } @@ -3119,13 +3119,13 @@ static void SCREEN_OT_repeat_history(wmOperatorType *ot) ot->name = "Repeat History"; ot->description = "Display menu for previous actions performed"; ot->idname = "SCREEN_OT_repeat_history"; - + /* api callbacks */ ot->invoke = repeat_history_invoke; ot->exec = repeat_history_exec; - + ot->poll = ED_operator_screenactive; - + RNA_def_int(ot->srna, "index", 0, 0, INT_MAX, "Index", "", 0, 1000); } @@ -3138,10 +3138,10 @@ static void SCREEN_OT_repeat_history(wmOperatorType *ot) static int redo_last_invoke(bContext *C, wmOperator *UNUSED(op), const wmEvent *UNUSED(event)) { wmOperator *lastop = WM_operator_last_redo(C); - + if (lastop) WM_operator_redo_popup(C, lastop); - + return OPERATOR_CANCELLED; } @@ -3151,10 +3151,10 @@ static void SCREEN_OT_redo_last(wmOperatorType *ot) ot->name = "Redo Last"; ot->description = "Display menu for last action performed"; ot->idname = "SCREEN_OT_redo_last"; - + /* api callbacks */ ot->invoke = redo_last_invoke; - + ot->poll = ED_operator_screenactive; } @@ -3197,7 +3197,7 @@ static void region_quadview_init_rv3d(ScrArea *sa, ARegion *ar, static int region_quadview_exec(bContext *C, wmOperator *op) { ARegion *ar = CTX_wm_region(C); - + /* some rules... */ if (ar->regiontype != RGN_TYPE_WINDOW) { BKE_report(op->reports, RPT_ERROR, "Only window region can be 4-splitted"); @@ -3206,10 +3206,10 @@ static int region_quadview_exec(bContext *C, wmOperator *op) /* Exit quad-view */ ScrArea *sa = CTX_wm_area(C); ARegion *arn; - + /* keep current region */ ar->alignment = 0; - + if (sa->spacetype == SPACE_VIEW3D) { ARegion *ar_iter; RegionView3D *rv3d = ar->regiondata; @@ -3239,7 +3239,7 @@ static int region_quadview_exec(bContext *C, wmOperator *op) } } } - + for (ar = sa->regionbase.first; ar; ar = arn) { arn = ar->next; if (ar->alignment == RGN_ALIGN_QSPLIT) { @@ -3260,14 +3260,14 @@ static int region_quadview_exec(bContext *C, wmOperator *op) ScrArea *sa = CTX_wm_area(C); ARegion *newar; int count; - + ar->alignment = RGN_ALIGN_QSPLIT; - + for (count = 0; count < 3; count++) { newar = BKE_area_region_copy(sa->type, ar); BLI_addtail(&sa->regionbase, newar); } - + /* lock views and set them */ if (sa->spacetype == SPACE_VIEW3D) { View3D *v3d = sa->spacedata.first; @@ -3297,8 +3297,8 @@ static int region_quadview_exec(bContext *C, wmOperator *op) ED_area_tag_redraw(sa); WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); } - - + + return OPERATOR_FINISHED; } @@ -3308,7 +3308,7 @@ static void SCREEN_OT_region_quadview(wmOperatorType *ot) ot->name = "Toggle Quad View"; ot->description = "Split selected area into camera, front, right & top views"; ot->idname = "SCREEN_OT_region_quadview"; - + /* api callbacks */ ot->exec = region_quadview_exec; ot->poll = ED_operator_region_view3d_active; @@ -3325,10 +3325,10 @@ static void SCREEN_OT_region_quadview(wmOperatorType *ot) static int region_flip_exec(bContext *C, wmOperator *UNUSED(op)) { ARegion *ar = CTX_wm_region(C); - + if (!ar) return OPERATOR_CANCELLED; - + if (ar->alignment == RGN_ALIGN_TOP) ar->alignment = RGN_ALIGN_BOTTOM; else if (ar->alignment == RGN_ALIGN_BOTTOM) @@ -3340,7 +3340,7 @@ static int region_flip_exec(bContext *C, wmOperator *UNUSED(op)) ED_area_tag_redraw(CTX_wm_area(C)); WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); - + return OPERATOR_FINISHED; } @@ -3351,7 +3351,7 @@ static void SCREEN_OT_region_flip(wmOperatorType *ot) ot->name = "Flip Region"; ot->idname = "SCREEN_OT_region_flip"; ot->description = "Toggle the region's alignment (left/right or top/bottom)"; - + /* api callbacks */ ot->exec = region_flip_exec; ot->poll = ED_operator_areaactive; @@ -3406,7 +3406,7 @@ static int header_toggle_menus_exec(bContext *C, wmOperator *UNUSED(op)) sa->flag = sa->flag ^ HEADER_NO_PULLDOWN; ED_area_tag_redraw(sa); - WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); + WM_event_add_notifier(C, NC_SCREEN | NA_EDITED, NULL); return OPERATOR_FINISHED; } @@ -3418,7 +3418,7 @@ static void SCREEN_OT_header_toggle_menus(wmOperatorType *ot) ot->name = "Expand/Collapse Header Menus"; ot->idname = "SCREEN_OT_header_toggle_menus"; ot->description = "Expand or collapse the header pulldown menus"; - + /* api callbacks */ ot->exec = header_toggle_menus_exec; ot->poll = ED_operator_areaactive; @@ -3449,7 +3449,7 @@ void ED_screens_header_tools_menu_create(bContext *C, uiLayout *layout, void *UN /* file browser should be fullscreen all the time, but other regions can be maximized/restored... */ if (sa->spacetype != SPACE_FILE) { - if (sa->full) + if (sa->full) uiItemO(layout, IFACE_("Tile Area"), ICON_NONE, "SCREEN_OT_screen_full_area"); else uiItemO(layout, IFACE_("Maximize Area"), ICON_NONE, "SCREEN_OT_screen_full_area"); @@ -3477,7 +3477,7 @@ static void SCREEN_OT_header_toolbox(wmOperatorType *ot) ot->name = "Header Toolbox"; ot->description = "Display header region toolbox"; ot->idname = "SCREEN_OT_header_toolbox"; - + /* api callbacks */ ot->invoke = header_toolbox_invoke; } @@ -3498,14 +3498,14 @@ static int match_area_with_refresh(int spacetype, int refresh) return 1; break; } - + return 0; } static int match_region_with_redraws(int spacetype, int regiontype, int redraws, bool from_anim_edit) { if (regiontype == RGN_TYPE_WINDOW) { - + switch (spacetype) { case SPACE_VIEW3D: if ((redraws & TIME_ALL_3D_WIN) || from_anim_edit) @@ -3542,7 +3542,7 @@ static int match_region_with_redraws(int spacetype, int regiontype, int redraws, if ((redraws & TIME_CLIPS) || from_anim_edit) return 1; break; - + } } else if (regiontype == RGN_TYPE_CHANNELS) { @@ -3606,12 +3606,12 @@ static int screen_animation_step(bContext *C, wmOperator *UNUSED(op), const wmEv ScrArea *sa; int sync; float time; - + /* sync, don't sync, or follow scene setting */ if (sad->flag & ANIMPLAY_FLAG_SYNC) sync = 1; else if (sad->flag & ANIMPLAY_FLAG_NO_SYNC) sync = 0; else sync = (scene->flag & SCE_FRAME_DROP); - + if ((scene->audio.flag & AUDIO_SYNC) && (sad->flag & ANIMPLAY_FLAG_REVERSE) == false && isfinite(time = BKE_sound_sync_scene(scene))) @@ -3657,12 +3657,12 @@ static int screen_animation_step(bContext *C, wmOperator *UNUSED(op), const wmEv scene->r.cfra++; } } - + sad->last_duration = wt->duration; /* reset 'jumped' flag before checking if we need to jump... */ sad->flag &= ~ANIMPLAY_FLAG_JUMPED; - + if (sad->flag & ANIMPLAY_FLAG_REVERSE) { /* jump back to end? */ if (PRVRANGEON) { @@ -3700,14 +3700,14 @@ static int screen_animation_step(bContext *C, wmOperator *UNUSED(op), const wmEv sad->flag &= ~ANIMPLAY_FLAG_USE_NEXT_FRAME; sad->flag |= ANIMPLAY_FLAG_JUMPED; } - + if (sad->flag & ANIMPLAY_FLAG_JUMPED) { BKE_sound_seek_scene(bmain, scene); #ifdef PROFILE_AUDIO_SYNCH old_frame = CFRA; #endif } - + /* since we follow drawflags, we can't send notifier but tag regions ourselves */ ED_update_for_newframe(bmain, scene, 1); @@ -3744,24 +3744,24 @@ static int screen_animation_step(bContext *C, wmOperator *UNUSED(op), const wmEv } } } - + if (match_area_with_refresh(sa->spacetype, sad->refresh)) ED_area_tag_refresh(sa); } } - - /* update frame rate info too - * NOTE: this may not be accurate enough, since we might need this after modifiers/etc. + + /* update frame rate info too + * NOTE: this may not be accurate enough, since we might need this after modifiers/etc. * have been calculated instead of just before updates have been done? */ ED_refresh_viewport_fps(C); - + /* recalculate the timestep for the timer now that we've finished calculating this, * since the frames-per-second value may have been changed */ /* TODO: this may make evaluation a bit slower if the value doesn't change... any way to avoid this? */ wt->timestep = (1.0 / FPS); - + return OPERATOR_FINISHED; } return OPERATOR_PASS_THROUGH; @@ -3773,12 +3773,12 @@ static void SCREEN_OT_animation_step(wmOperatorType *ot) ot->name = "Animation Step"; ot->description = "Step through animation by position"; ot->idname = "SCREEN_OT_animation_step"; - + /* api callbacks */ ot->invoke = screen_animation_step; - + ot->poll = ED_operator_screenactive_norender; - + } /** \} */ @@ -3832,16 +3832,16 @@ int ED_screen_animation_play(bContext *C, int sync, int mode) } else { int refresh = SPACE_TIME; /* these settings are currently only available from a menu in the TimeLine */ - + if (mode == 1) /* XXX only play audio forwards!? */ BKE_sound_play_scene(scene); - + ED_screen_animation_timer(C, screen->redraws_flag, refresh, sync, mode); - + if (screen->animtimer) { wmTimer *wt = screen->animtimer; ScreenAnimData *sad = wt->customdata; - + sad->ar = CTX_wm_region(C); } } @@ -3853,10 +3853,10 @@ static int screen_animation_play_exec(bContext *C, wmOperator *op) { int mode = (RNA_boolean_get(op->ptr, "reverse")) ? -1 : 1; int sync = -1; - + if (RNA_struct_property_is_set(op->ptr, "sync")) sync = (RNA_boolean_get(op->ptr, "sync")); - + return ED_screen_animation_play(C, sync, mode); } @@ -3868,12 +3868,12 @@ static void SCREEN_OT_animation_play(wmOperatorType *ot) ot->name = "Play Animation"; ot->description = "Play animation"; ot->idname = "SCREEN_OT_animation_play"; - + /* api callbacks */ ot->exec = screen_animation_play_exec; - + ot->poll = ED_operator_screenactive_norender; - + prop = RNA_def_boolean(ot->srna, "reverse", 0, "Play in Reverse", "Animation is played backwards"); RNA_def_property_flag(prop, PROP_SKIP_SAVE); prop = RNA_def_boolean(ot->srna, "sync", 0, "Sync", "Drop frames to maintain framerate"); @@ -3916,10 +3916,10 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot) ot->name = "Cancel Animation"; ot->description = "Cancel animation, returning to the original frame"; ot->idname = "SCREEN_OT_animation_cancel"; - + /* api callbacks */ ot->exec = screen_animation_cancel_exec; - + ot->poll = ED_operator_screenactive; RNA_def_boolean(ot->srna, "restore_frame", true, "Restore Frame", "Restore the frame when animation was initialized"); @@ -3931,7 +3931,7 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot) /** \name Border Select Operator (Template) * \{ */ -/* operator state vars used: (added by default WM callbacks) +/* operator state vars used: (added by default WM callbacks) * xmin, ymin * xmax, ymax * @@ -3953,14 +3953,14 @@ static void SCREEN_OT_animation_cancel(wmOperatorType *ot) static int border_select_exec(bContext *C, wmOperator *op) { int event_type = RNA_int_get(op->ptr, "event_type"); - + if (event_type == LEFTMOUSE) printf("border select do select\n"); else if (event_type == RIGHTMOUSE) printf("border select deselect\n"); - else + else printf("border select do something\n"); - + return 1; } @@ -3969,15 +3969,15 @@ static void SCREEN_OT_border_select(wmOperatorType *ot) /* identifiers */ ot->name = "Border Select"; ot->idname = "SCREEN_OT_border_select"; - + /* api callbacks */ ot->exec = border_select_exec; ot->invoke = WM_gesture_border_invoke; ot->modal = WM_gesture_border_modal; ot->cancel = WM_gesture_border_cancel; - + ot->poll = ED_operator_areaactive; - + /* rna */ RNA_def_int(ot->srna, "event_type", 0, INT_MIN, INT_MAX, "Event Type", "", INT_MIN, INT_MAX); WM_operator_properties_border(ot); @@ -3997,7 +3997,7 @@ static int fullscreen_back_exec(bContext *C, wmOperator *op) { bScreen *screen = CTX_wm_screen(C); ScrArea *sa = NULL; - + /* search current screen for 'fullscreen' areas */ for (sa = screen->areabase.first; sa; sa = sa->next) { if (sa->full) break; @@ -4018,7 +4018,7 @@ static void SCREEN_OT_back_to_previous(struct wmOperatorType *ot) ot->name = "Back to Previous Screen"; ot->description = "Revert back to the original screen layout, before fullscreen area overlay"; ot->idname = "SCREEN_OT_back_to_previous"; - + /* api callbacks */ ot->exec = fullscreen_back_exec; ot->poll = ED_operator_screenactive; @@ -4034,7 +4034,7 @@ static int userpref_show_invoke(bContext *C, wmOperator *op, const wmEvent *even { int sizex = 800 * UI_DPI_FAC; int sizey = 480 * UI_DPI_FAC; - + /* changes context! */ if (WM_window_open_temp(C, event->x, event->y, sizex, sizey, WM_WINDOW_USERPREFS) != NULL) { return OPERATOR_FINISHED; @@ -4052,7 +4052,7 @@ static void SCREEN_OT_userpref_show(struct wmOperatorType *ot) ot->name = "Show User Preferences"; ot->description = "Show user preferences"; ot->idname = "SCREEN_OT_userpref_show"; - + /* api callbacks */ ot->invoke = userpref_show_invoke; ot->poll = ED_operator_screenactive; @@ -4068,10 +4068,10 @@ static int screen_new_exec(bContext *C, wmOperator *UNUSED(op)) { wmWindow *win = CTX_wm_window(C); bScreen *sc = CTX_wm_screen(C); - + sc = ED_screen_duplicate(win, sc); WM_event_add_notifier(C, NC_SCREEN | ND_SCREENBROWSE, sc); - + return OPERATOR_FINISHED; } @@ -4081,7 +4081,7 @@ static void SCREEN_OT_new(wmOperatorType *ot) ot->name = "New Screen"; ot->description = "Add a new screen"; ot->idname = "SCREEN_OT_new"; - + /* api callbacks */ ot->exec = screen_new_exec; ot->poll = WM_operator_winactive; @@ -4096,9 +4096,9 @@ static void SCREEN_OT_new(wmOperatorType *ot) static int screen_delete_exec(bContext *C, wmOperator *UNUSED(op)) { bScreen *sc = CTX_wm_screen(C); - + WM_event_add_notifier(C, NC_SCREEN | ND_SCREENDELETE, sc); - + return OPERATOR_FINISHED; } @@ -4108,7 +4108,7 @@ static void SCREEN_OT_delete(wmOperatorType *ot) ot->name = "Delete Screen"; ot->description = "Delete active screen"; ot->idname = "SCREEN_OT_delete"; - + /* api callbacks */ ot->exec = screen_delete_exec; } @@ -4140,11 +4140,11 @@ static int scene_new_exec(bContext *C, wmOperator *op) ED_object_single_users(bmain, newscene, true, true); } } - + ED_screen_set_scene(C, CTX_wm_screen(C), newscene); - + WM_event_add_notifier(C, NC_SCENE | ND_SCENEBROWSE, newscene); - + return OPERATOR_FINISHED; } @@ -4157,19 +4157,19 @@ static void SCENE_OT_new(wmOperatorType *ot) {SCE_COPY_LINK_DATA, "LINK_OBJECT_DATA", 0, "Link Object Data", "Copy objects linked to data from the current scene"}, {SCE_COPY_FULL, "FULL_COPY", 0, "Full Copy", "Make a full copy of the current scene"}, {0, NULL, 0, NULL, NULL}}; - + /* identifiers */ ot->name = "New Scene"; ot->description = "Add new scene by type"; ot->idname = "SCENE_OT_new"; - + /* api callbacks */ ot->exec = scene_new_exec; ot->invoke = WM_menu_invoke; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; - + /* properties */ ot->prop = RNA_def_enum(ot->srna, "type", type_items, 0, "Type", ""); } @@ -4202,10 +4202,10 @@ static void SCENE_OT_delete(wmOperatorType *ot) ot->name = "Delete Scene"; ot->description = "Delete active scene"; ot->idname = "SCENE_OT_delete"; - + /* api callbacks */ ot->exec = scene_delete_exec; - + /* flags */ ot->flag = OPTYPE_REGISTER | OPTYPE_UNDO; } @@ -4243,7 +4243,7 @@ float ED_region_blend_factor(ARegion *ar) alpha = (float)ar->regiontimer->duration / TIMEOUT; /* makes sure the blend out works 100% - without area redraws */ if (rgi->hidden) alpha = 0.9f - TIMESTEP - alpha; - + CLAMP(alpha, 0.0f, 1.0f); return alpha; } @@ -4254,12 +4254,12 @@ float ED_region_blend_factor(ARegion *ar) static void region_blend_end(bContext *C, ARegion *ar, const bool is_running) { RegionAlphaInfo *rgi = ar->regiontimer->customdata; - + /* always send redraw */ ED_region_tag_redraw(ar); if (rgi->child_ar) ED_region_tag_redraw(rgi->child_ar); - + /* if running timer was hiding, the flag toggle went wrong */ if (is_running) { if (rgi->hidden) @@ -4283,14 +4283,14 @@ void region_blend_start(bContext *C, ScrArea *sa, ARegion *ar) wmWindowManager *wm = CTX_wm_manager(C); wmWindow *win = CTX_wm_window(C); RegionAlphaInfo *rgi; - + /* end running timer */ if (ar->regiontimer) { region_blend_end(C, ar, true); } rgi = MEM_callocN(sizeof(RegionAlphaInfo), "RegionAlphaInfo"); - + rgi->hidden = ar->flag & RGN_FLAG_HIDDEN; rgi->sa = sa; rgi->ar = ar; @@ -4319,18 +4319,18 @@ static int region_blend_invoke(bContext *C, wmOperator *UNUSED(op), const wmEven { RegionAlphaInfo *rgi; wmTimer *timer = event->customdata; - + /* event type is TIMERREGION, but we better check */ if (event->type != TIMERREGION || timer == NULL) return OPERATOR_PASS_THROUGH; - + rgi = timer->customdata; - + /* always send redraws */ ED_region_tag_redraw(rgi->ar); if (rgi->child_ar) ED_region_tag_redraw(rgi->child_ar); - + /* end timer? */ if (rgi->ar->regiontimer->duration > (double)TIMEOUT) { region_blend_end(C, rgi->ar, false); @@ -4346,13 +4346,13 @@ static void SCREEN_OT_region_blend(wmOperatorType *ot) ot->name = "Region Alpha"; ot->idname = "SCREEN_OT_region_blend"; ot->description = "Blend in and out overlapping region"; - + /* api callbacks */ ot->invoke = region_blend_invoke; - + /* flags */ ot->flag = OPTYPE_INTERNAL; - + /* properties */ } @@ -4457,7 +4457,7 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_repeat_last); WM_operatortype_append(SCREEN_OT_repeat_history); WM_operatortype_append(SCREEN_OT_redo_last); - + /* screen tools */ WM_operatortype_append(SCREEN_OT_area_move); WM_operatortype_append(SCREEN_OT_area_split); @@ -4480,23 +4480,23 @@ void ED_operatortypes_screen(void) WM_operatortype_append(SCREEN_OT_userpref_show); WM_operatortype_append(SCREEN_OT_region_blend); WM_operatortype_append(SCREEN_OT_space_context_cycle); - + /*frame changes*/ WM_operatortype_append(SCREEN_OT_frame_offset); WM_operatortype_append(SCREEN_OT_frame_jump); WM_operatortype_append(SCREEN_OT_keyframe_jump); WM_operatortype_append(SCREEN_OT_marker_jump); - + WM_operatortype_append(SCREEN_OT_animation_step); WM_operatortype_append(SCREEN_OT_animation_play); WM_operatortype_append(SCREEN_OT_animation_cancel); - + /* new/delete */ WM_operatortype_append(SCREEN_OT_new); WM_operatortype_append(SCREEN_OT_delete); WM_operatortype_append(SCENE_OT_new); WM_operatortype_append(SCENE_OT_delete); - + /* tools shared by more space types */ WM_operatortype_append(ED_OT_undo); WM_operatortype_append(ED_OT_undo_push); @@ -4505,7 +4505,7 @@ void ED_operatortypes_screen(void) WM_operatortype_append(ED_OT_undo_history); WM_operatortype_append(ED_OT_flush_edits); - + } /** \} */ @@ -4523,20 +4523,20 @@ static void keymap_modal_set(wmKeyConfig *keyconf) {KM_MODAL_SNAP_OFF, "SNAP_OFF", 0, "Snap off", ""}, {0, NULL, 0, NULL, NULL}}; wmKeyMap *keymap; - + /* Standard Modal keymap ------------------------------------------------ */ keymap = WM_modalkeymap_add(keyconf, "Standard Modal Map", modal_items); - + WM_modalkeymap_add_item(keymap, ESCKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_CANCEL); WM_modalkeymap_add_item(keymap, LEFTMOUSE, KM_ANY, KM_ANY, 0, KM_MODAL_APPLY); WM_modalkeymap_add_item(keymap, RETKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY); WM_modalkeymap_add_item(keymap, PADENTER, KM_PRESS, KM_ANY, 0, KM_MODAL_APPLY); - + WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_PRESS, KM_ANY, 0, KM_MODAL_SNAP_ON); WM_modalkeymap_add_item(keymap, LEFTCTRLKEY, KM_RELEASE, KM_ANY, 0, KM_MODAL_SNAP_OFF); - + WM_modalkeymap_assign(keymap, "SCREEN_OT_area_move"); - + } static int open_file_drop_poll(bContext *UNUSED(C), wmDrag *drag, const wmEvent *UNUSED(event)) @@ -4562,14 +4562,14 @@ void ED_keymap_screen(wmKeyConfig *keyconf) ListBase *lb; wmKeyMap *keymap; wmKeyMapItem *kmi; - + /* Screen Editing ------------------------------------------------ */ keymap = WM_keymap_find(keyconf, "Screen Editing", 0, 0); - + RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, 0, 0)->ptr, "modifier", 0); RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_SHIFT, 0)->ptr, "modifier", 1); RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_actionzone", LEFTMOUSE, KM_PRESS, KM_CTRL, 0)->ptr, "modifier", 2); - + /* screen tools */ WM_keymap_verify_item(keymap, "SCREEN_OT_area_split", EVT_ACTIONZONE_AREA, 0, 0, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_area_join", EVT_ACTIONZONE_AREA, 0, 0, 0); @@ -4580,7 +4580,7 @@ void ED_keymap_screen(wmKeyConfig *keyconf) RNA_boolean_set(kmi->ptr, "use_hide_panels", true); /* area move after action zones */ WM_keymap_verify_item(keymap, "SCREEN_OT_area_move", LEFTMOUSE, KM_PRESS, 0, 0); - + WM_keymap_verify_item(keymap, "SCREEN_OT_area_options", RIGHTMOUSE, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SCREEN_OT_header", F9KEY, KM_PRESS, KM_ALT, 0); @@ -4593,12 +4593,12 @@ void ED_keymap_screen(wmKeyConfig *keyconf) /* Screen General ------------------------------------------------ */ keymap = WM_keymap_find(keyconf, "Screen", 0, 0); - + /* standard timers */ WM_keymap_add_item(keymap, "SCREEN_OT_animation_step", TIMER0, KM_ANY, KM_ANY, 0); WM_keymap_add_item(keymap, "SCREEN_OT_region_blend", TIMERREGION, KM_ANY, KM_ANY, 0); - - + + RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", RIGHTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", 1); RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_screen_set", LEFTARROWKEY, KM_PRESS, KM_CTRL, 0)->ptr, "delta", -1); WM_keymap_add_item(keymap, "SCREEN_OT_screen_full_area", UPARROWKEY, KM_PRESS, KM_CTRL, 0); @@ -4622,12 +4622,12 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_verify_item(keymap, "SCREEN_OT_region_flip", F5KEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "SCREEN_OT_redo_last", F6KEY, KM_PRESS, 0, 0); WM_keymap_verify_item(keymap, "SCRIPT_OT_reload", F8KEY, KM_PRESS, 0, 0); - + /* files */ WM_keymap_add_item(keymap, "FILE_OT_execute", RETKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_execute", PADENTER, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "FILE_OT_cancel", ESCKEY, KM_PRESS, 0, 0); - + /* undo */ #ifdef __APPLE__ WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_OSKEY, 0); @@ -4637,8 +4637,8 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "ED_OT_undo", ZKEY, KM_PRESS, KM_CTRL, 0); WM_keymap_add_item(keymap, "ED_OT_redo", ZKEY, KM_PRESS, KM_SHIFT | KM_CTRL, 0); WM_keymap_add_item(keymap, "ED_OT_undo_history", ZKEY, KM_PRESS, KM_ALT | KM_CTRL, 0); - - + + /* render */ kmi = WM_keymap_add_item(keymap, "RENDER_OT_render", F12KEY, KM_PRESS, 0, 0); RNA_boolean_set(kmi->ptr, "use_viewport", true); @@ -4648,62 +4648,62 @@ void ED_keymap_screen(wmKeyConfig *keyconf) WM_keymap_add_item(keymap, "RENDER_OT_view_cancel", ESCKEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "RENDER_OT_view_show", F11KEY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "RENDER_OT_play_rendered_anim", F11KEY, KM_PRESS, KM_CTRL, 0); - + /* user prefs */ #ifdef __APPLE__ WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", COMMAKEY, KM_PRESS, KM_OSKEY, 0); #endif WM_keymap_add_item(keymap, "SCREEN_OT_userpref_show", UKEY, KM_PRESS, KM_CTRL | KM_ALT, 0); - - + + /* Anim Playback ------------------------------------------------ */ keymap = WM_keymap_find(keyconf, "Frames", 0, 0); - + /* frame offsets */ RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", UPARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", 10); RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", DOWNARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "delta", -10); RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", LEFTARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", -1); RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", RIGHTARROWKEY, KM_PRESS, 0, 0)->ptr, "delta", 1); - + RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", WHEELDOWNMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "delta", 1); RNA_int_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_offset", WHEELUPMOUSE, KM_PRESS, KM_ALT, 0)->ptr, "delta", -1); - + RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", UPARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "end", true); RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", DOWNARROWKEY, KM_PRESS, KM_CTRL | KM_SHIFT, 0)->ptr, "end", false); RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", RIGHTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", true); RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_frame_jump", LEFTARROWKEY, KM_PRESS, KM_SHIFT, 0)->ptr, "end", false); - + kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", UPARROWKEY, KM_PRESS, 0, 0); RNA_boolean_set(kmi->ptr, "next", true); kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", DOWNARROWKEY, KM_PRESS, 0, 0); RNA_boolean_set(kmi->ptr, "next", false); - + kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", MEDIALAST, KM_PRESS, 0, 0); RNA_boolean_set(kmi->ptr, "next", true); kmi = WM_keymap_add_item(keymap, "SCREEN_OT_keyframe_jump", MEDIAFIRST, KM_PRESS, 0, 0); RNA_boolean_set(kmi->ptr, "next", false); - + /* play (forward and backwards) */ WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT, 0); RNA_boolean_set(WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", AKEY, KM_PRESS, KM_ALT | KM_SHIFT, 0)->ptr, "reverse", true); WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", ESCKEY, KM_PRESS, 0, 0); - + WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", MEDIAPLAY, KM_PRESS, 0, 0); WM_keymap_add_item(keymap, "SCREEN_OT_animation_cancel", MEDIASTOP, KM_PRESS, 0, 0); - + /* Alternative keys for animation and sequencer playing */ #if 0 /* XXX: disabled for restoring later... bad implementation */ keymap = WM_keymap_find(keyconf, "Frames", 0, 0); kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", RIGHTARROWKEY, KM_PRESS, KM_ALT, 0); RNA_boolean_set(kmi->ptr, "cycle_speed", true); - + kmi = WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", LEFTARROWKEY, KM_PRESS, KM_ALT, 0); RNA_boolean_set(kmi->ptr, "reverse", true); RNA_boolean_set(kmi->ptr, "cycle_speed", true); - + WM_keymap_add_item(keymap, "SCREEN_OT_animation_play", DOWNARROWKEY, KM_PRESS, KM_ALT, 0); #endif diff --git a/source/blender/editors/screen/screendump.c b/source/blender/editors/screen/screendump.c index 2dd7400bc37..8274ca68d7e 100644 --- a/source/blender/editors/screen/screendump.c +++ b/source/blender/editors/screen/screendump.c @@ -102,7 +102,7 @@ static unsigned int *screenshot(bContext *C, int *dumpsx, int *dumpsy) *dumpsy = WM_window_pixels_y(win); if (*dumpsx && *dumpsy) { - + dumprect = MEM_mallocN(sizeof(int) * (*dumpsx) * (*dumpsy), "dumprect"); glReadBuffer(GL_FRONT); screenshot_read_pixels(x, y, *dumpsx, *dumpsy, (unsigned char *)dumprect); @@ -120,13 +120,13 @@ static int screenshot_data_create(bContext *C, wmOperator *op) /* do redraw so we don't show popups/menus */ WM_redraw_windows(C); - + dumprect = screenshot(C, &dumpsx, &dumpsy); if (dumprect) { ScreenshotData *scd = MEM_callocN(sizeof(ScreenshotData), "screenshot"); ScrArea *sa = CTX_wm_area(C); - + scd->dumpsx = dumpsx; scd->dumpsy = dumpsy; scd->dumprect = dumprect; @@ -235,9 +235,9 @@ static int screenshot_invoke(bContext *C, wmOperator *op, const wmEvent *UNUSED( BLI_replace_extension(filepath, sizeof(filepath), ""); /* strip '.blend' */ } RNA_string_set(op->ptr, "filepath", filepath); - + WM_event_add_fileselect(C, op); - + return OPERATOR_RUNNING_MODAL; } return OPERATOR_CANCELLED; @@ -289,16 +289,16 @@ void SCREEN_OT_screenshot(wmOperatorType *ot) ot->name = "Save Screenshot"; /* weak: opname starting with 'save' makes filewindow give save-over */ ot->idname = "SCREEN_OT_screenshot"; ot->description = "Capture a picture of the active area or whole Blender window"; - + ot->invoke = screenshot_invoke; ot->check = screenshot_check; ot->exec = screenshot_exec; ot->cancel = screenshot_cancel; ot->ui = screenshot_draw; ot->poll = screenshot_poll; - + ot->flag = 0; - + WM_operator_properties_filesel( ot, FILE_TYPE_FOLDER | FILE_TYPE_IMAGE, FILE_SPECIAL, FILE_SAVE, WM_FILESEL_FILEPATH, FILE_DEFAULTDISPLAY, FILE_SORT_ALPHA); @@ -326,7 +326,7 @@ typedef struct ScreenshotJob { static void screenshot_freejob(void *sjv) { ScreenshotJob *sj = sjv; - + if (sj->dumprect) MEM_freeN(sj->dumprect); @@ -345,11 +345,11 @@ static void screenshot_updatejob(void *sjv) { ScreenshotJob *sj = sjv; unsigned int *dumprect; - + if (sj->dumprect == NULL) { dumprect = MEM_mallocN(sizeof(int) * sj->dumpsx * sj->dumpsy, "dumprect"); screenshot_read_pixels(sj->x, sj->y, sj->dumpsx, sj->dumpsy, (unsigned char *)dumprect); - + sj->dumprect = dumprect; } } @@ -365,7 +365,7 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float /* we need this as local variables for renderdata */ rd.frs_sec = U.scrcastfps; rd.frs_sec_base = 1.0f; - + if (BKE_imtype_is_movie(rd.im_format.imtype)) { mh = BKE_movie_handle_get(sj->scene->r.im_format.imtype); if (mh == NULL) { @@ -380,16 +380,16 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float return; } } - + sj->stop = stop; sj->do_update = do_update; - + *do_update = true; /* wait for opengl rect */ - + while (*stop == 0) { - + if (sj->dumprect) { - + if (mh) { if (mh->append_movie(sj->movie_ctx, &rd, rd.sfra, rd.cfra, (int *)sj->dumprect, sj->dumpsx, sj->dumpsy, "", &sj->reports)) @@ -405,14 +405,14 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float ImBuf *ibuf = IMB_allocImBuf(sj->dumpsx, sj->dumpsy, rd.im_format.planes, 0); char name[FILE_MAX]; int ok; - + BKE_image_path_from_imformat( name, rd.pic, sj->bmain->name, rd.cfra, &rd.im_format, (rd.scemode & R_EXTENSION) != 0, true, NULL); - + ibuf->rect = sj->dumprect; ok = BKE_imbuf_write(ibuf, name, &rd.im_format); - + if (ok == 0) { printf("Write error: cannot save %s\n", name); BKE_reportf(&sj->reports, RPT_INFO, "Write error: cannot save %s", name); @@ -422,23 +422,23 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float printf("Saved file: %s\n", name); BKE_reportf(&sj->reports, RPT_INFO, "Saved file: %s", name); } - + /* imbuf knows which rects are not part of ibuf */ IMB_freeImBuf(ibuf); } - + MEM_freeN(sj->dumprect); sj->dumprect = NULL; - + *do_update = true; - + rd.cfra++; } - else + else PIL_sleep_ms(U.scrcastwait); } - + if (mh) { mh->end_movie(sj->movie_ctx); mh->context_free(sj->movie_ctx); @@ -451,24 +451,24 @@ static void screenshot_startjob(void *sjv, short *stop, short *do_update, float /* Helper callback for drawing the cursor itself */ static void screencast_draw_cursor(bContext *UNUSED(C), int x, int y, void *UNUSED(p_ptr)) { - + glPushMatrix(); - + glTranslatef((float)x, (float)y, 0.0f); - - + + glEnable(GL_LINE_SMOOTH); glEnable(GL_BLEND); - + glColor4ub(0, 0, 0, 32); glutil_draw_filled_arc(0.0, M_PI * 2.0, 20, 40); - + glColor4ub(255, 255, 255, 128); glutil_draw_lined_arc(0.0, M_PI * 2.0, 20, 40); - + glDisable(GL_BLEND); glDisable(GL_LINE_SMOOTH); - + glPopMatrix(); } @@ -476,7 +476,7 @@ static void screencast_draw_cursor(bContext *UNUSED(C), int x, int y, void *UNUS static void screencast_cursor_toggle(wmWindowManager *wm, short enable) { static void *cursor = NULL; - + if (cursor && !enable) { /* clear cursor */ WM_paint_cursor_end(wm, cursor); @@ -491,7 +491,7 @@ static void screencast_cursor_toggle(wmWindowManager *wm, short enable) static void screenshot_endjob(void *sjv) { ScreenshotJob *sj = sjv; - + screencast_cursor_toggle(sj->wm, 0); } @@ -507,10 +507,10 @@ static int screencast_exec(bContext *C, wmOperator *op) /* if called again, stop the running job */ if (WM_jobs_test(wm, screen, WM_JOB_TYPE_SCREENCAST)) WM_jobs_stop(wm, screen, screenshot_startjob); - + wm_job = WM_jobs_get(wm, win, screen, "Screencast", 0, WM_JOB_TYPE_SCREENCAST); sj = MEM_callocN(sizeof(ScreenshotJob), "screenshot job"); - + /* setup sj */ if (RNA_boolean_get(op->ptr, "full")) { sj->x = 0; @@ -528,20 +528,20 @@ static int screencast_exec(bContext *C, wmOperator *op) sj->bmain = CTX_data_main(C); sj->scene = CTX_data_scene(C); sj->wm = wm; - + BKE_reports_init(&sj->reports, RPT_PRINT); /* setup job */ WM_jobs_customdata_set(wm_job, sj, screenshot_freejob); WM_jobs_timer(wm_job, 0.1, 0, NC_SCREEN | ND_SCREENCAST); WM_jobs_callbacks(wm_job, screenshot_startjob, NULL, screenshot_updatejob, screenshot_endjob); - + WM_jobs_start(sj->wm, wm_job); - + screencast_cursor_toggle(sj->wm, 1); - + WM_event_add_notifier(C, NC_SCREEN | ND_SCREENCAST, screen); - + return OPERATOR_FINISHED; } @@ -550,13 +550,13 @@ void SCREEN_OT_screencast(wmOperatorType *ot) ot->name = "Make Screencast"; ot->idname = "SCREEN_OT_screencast"; ot->description = "Capture a video of the active area or whole Blender window"; - + ot->invoke = WM_operator_confirm; ot->exec = screencast_exec; ot->poll = screenshot_poll; /* shared poll */ - + ot->flag = 0; - + RNA_def_property(ot->srna, "filepath", PROP_STRING, PROP_FILEPATH); RNA_def_boolean(ot->srna, "full", 1, "Full Screen", "Capture the whole window (otherwise only capture the active area)"); |