Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/space_image/space_image.c
| Show First 20 Lines • Show All 787 Lines • ▼ Show 20 Lines | static void image_buttons_region_init(wmWindowManager *wm, ARegion *ar) | ||||
| ED_region_panels_init(wm, ar); | ED_region_panels_init(wm, ar); | ||||
| keymap = WM_keymap_ensure(wm->defaultconf, "Image Generic", SPACE_IMAGE, 0); | keymap = WM_keymap_ensure(wm->defaultconf, "Image Generic", SPACE_IMAGE, 0); | ||||
| WM_event_add_keymap_handler(&ar->handlers, keymap); | WM_event_add_keymap_handler(&ar->handlers, keymap); | ||||
| } | } | ||||
| static void image_buttons_region_draw(const bContext *C, ARegion *ar) | static void image_buttons_region_draw(const bContext *C, ARegion *ar) | ||||
| { | { | ||||
| SpaceImage *sima = CTX_wm_space_image(C); | |||||
| Scene *scene = CTX_data_scene(C); | |||||
| void *lock; | |||||
| ImBuf *ibuf = ED_space_image_acquire_buffer(sima, &lock); | |||||
| /* XXX performance regression if name of scopes category changes! */ | |||||
| PanelCategoryStack *category = UI_panel_category_active_find(ar, "Scopes"); | |||||
| /* only update scopes if scope category is active */ | |||||
| if (category) { | |||||
| if (ibuf) { | |||||
| if (!sima->scopes.ok) { | |||||
| BKE_histogram_update_sample_line(&sima->sample_line_hist, ibuf, &scene->view_settings, &scene->display_settings); | |||||
| } | |||||
| if (sima->image->flag & IMA_VIEW_AS_RENDER) | |||||
| ED_space_image_scopes_update(C, sima, ibuf, true); | |||||
| else | |||||
| ED_space_image_scopes_update(C, sima, ibuf, false); | |||||
| } | |||||
| } | |||||
| ED_space_image_release_buffer(sima, ibuf, lock); | |||||
| ED_region_panels(C, ar); | ED_region_panels(C, ar); | ||||
| } | } | ||||
| static void image_buttons_region_listener( | static void image_buttons_region_listener( | ||||
| wmWindow *UNUSED(win), ScrArea *UNUSED(sa), ARegion *ar, | wmWindow *UNUSED(win), ScrArea *UNUSED(sa), ARegion *ar, | ||||
| wmNotifier *wmn, const Scene *UNUSED(scene)) | wmNotifier *wmn, const Scene *UNUSED(scene)) | ||||
| { | { | ||||
| /* context changes */ | /* context changes */ | ||||
| Show All 38 Lines | static void image_tools_region_init(wmWindowManager *wm, ARegion *ar) | ||||
| ED_region_panels_init(wm, ar); | ED_region_panels_init(wm, ar); | ||||
| keymap = WM_keymap_ensure(wm->defaultconf, "Image Generic", SPACE_IMAGE, 0); | keymap = WM_keymap_ensure(wm->defaultconf, "Image Generic", SPACE_IMAGE, 0); | ||||
| WM_event_add_keymap_handler(&ar->handlers, keymap); | WM_event_add_keymap_handler(&ar->handlers, keymap); | ||||
| } | } | ||||
| static void image_tools_region_draw(const bContext *C, ARegion *ar) | static void image_tools_region_draw(const bContext *C, ARegion *ar) | ||||
| { | { | ||||
| SpaceImage *sima = CTX_wm_space_image(C); | |||||
| Scene *scene = CTX_data_scene(C); | |||||
| void *lock; | |||||
| ImBuf *ibuf = ED_space_image_acquire_buffer(sima, &lock); | |||||
| /* XXX performance regression if name of scopes category changes! */ | |||||
| PanelCategoryStack *category = UI_panel_category_active_find(ar, "Scopes"); | |||||
| /* only update scopes if scope category is active */ | |||||
| if (category) { | |||||
| if (ibuf) { | |||||
| if (!sima->scopes.ok) { | |||||
| BKE_histogram_update_sample_line(&sima->sample_line_hist, ibuf, &scene->view_settings, &scene->display_settings); | |||||
| } | |||||
| if (sima->image->flag & IMA_VIEW_AS_RENDER) | |||||
| ED_space_image_scopes_update(C, sima, ibuf, true); | |||||
| else | |||||
| ED_space_image_scopes_update(C, sima, ibuf, false); | |||||
| } | |||||
| } | |||||
| ED_space_image_release_buffer(sima, ibuf, lock); | |||||
| ED_region_panels(C, ar); | ED_region_panels(C, ar); | ||||
| } | } | ||||
| static void image_tools_region_listener( | static void image_tools_region_listener( | ||||
| wmWindow *UNUSED(win), ScrArea *UNUSED(sa), ARegion *ar, | wmWindow *UNUSED(win), ScrArea *UNUSED(sa), ARegion *ar, | ||||
| wmNotifier *wmn, const Scene *UNUSED(scene)) | wmNotifier *wmn, const Scene *UNUSED(scene)) | ||||
| { | { | ||||
| /* context changes */ | /* context changes */ | ||||
| ▲ Show 20 Lines • Show All 157 Lines • ▼ Show 20 Lines | void ED_spacetype_image(void) | ||||
| art = MEM_callocN(sizeof(ARegionType), "spacetype image region"); | art = MEM_callocN(sizeof(ARegionType), "spacetype image region"); | ||||
| art->regionid = RGN_TYPE_WINDOW; | art->regionid = RGN_TYPE_WINDOW; | ||||
| art->keymapflag = ED_KEYMAP_GIZMO | ED_KEYMAP_FRAMES | ED_KEYMAP_GPENCIL; | art->keymapflag = ED_KEYMAP_GIZMO | ED_KEYMAP_FRAMES | ED_KEYMAP_GPENCIL; | ||||
| art->init = image_main_region_init; | art->init = image_main_region_init; | ||||
| art->draw = image_main_region_draw; | art->draw = image_main_region_draw; | ||||
| art->listener = image_main_region_listener; | art->listener = image_main_region_listener; | ||||
| BLI_addhead(&st->regiontypes, art); | BLI_addhead(&st->regiontypes, art); | ||||
| /* regions: listview/buttons */ | /* regions: listview/buttons/scopes */ | ||||
| art = MEM_callocN(sizeof(ARegionType), "spacetype image region"); | art = MEM_callocN(sizeof(ARegionType), "spacetype image region"); | ||||
| art->regionid = RGN_TYPE_UI; | art->regionid = RGN_TYPE_UI; | ||||
| art->prefsizex = 220; // XXX | art->prefsizex = 220; // XXX | ||||
| art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_FRAMES; | art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_FRAMES; | ||||
| art->listener = image_buttons_region_listener; | art->listener = image_buttons_region_listener; | ||||
| art->init = image_buttons_region_init; | art->init = image_buttons_region_init; | ||||
| art->draw = image_buttons_region_draw; | art->draw = image_buttons_region_draw; | ||||
| BLI_addhead(&st->regiontypes, art); | BLI_addhead(&st->regiontypes, art); | ||||
| ED_uvedit_buttons_register(art); | ED_uvedit_buttons_register(art); | ||||
| image_buttons_register(art); | image_buttons_register(art); | ||||
| /* regions: statistics/scope buttons */ | /* regions: tool(bar) */ | ||||
| art = MEM_callocN(sizeof(ARegionType), "spacetype image region"); | art = MEM_callocN(sizeof(ARegionType), "spacetype image region"); | ||||
| art->regionid = RGN_TYPE_TOOLS; | art->regionid = RGN_TYPE_TOOLS; | ||||
| art->prefsizex = 58; /* XXX */ | art->prefsizex = 58; /* XXX */ | ||||
| art->prefsizey = 50; /* XXX */ | art->prefsizey = 50; /* XXX */ | ||||
| art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_FRAMES; | art->keymapflag = ED_KEYMAP_UI | ED_KEYMAP_FRAMES; | ||||
| art->listener = image_tools_region_listener; | art->listener = image_tools_region_listener; | ||||
| art->message_subscribe = ED_region_generic_tools_region_message_subscribe; | art->message_subscribe = ED_region_generic_tools_region_message_subscribe; | ||||
| art->snap_size = ED_region_generic_tools_region_snap_size; | art->snap_size = ED_region_generic_tools_region_snap_size; | ||||
| Show All 21 Lines | |||||