[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [55719] trunk/blender/source/blender: Usability fix, for color grading.
Ton Roosendaal
ton at blender.org
Tue Apr 2 14:41:11 CEST 2013
Revision: 55719
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=55719
Author: ton
Date: 2013-04-02 12:41:11 +0000 (Tue, 02 Apr 2013)
Log Message:
-----------
Usability fix, for color grading.
The Scopes and Histogram (Image editor, Sequencer) were not updating on
changes in color or display settings.
- Missing notifiers for refreshing
- Missing code to draw correct for managed byte buffers.
Modified Paths:
--------------
trunk/blender/source/blender/blenkernel/intern/colortools.c
trunk/blender/source/blender/editors/space_image/space_image.c
trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c
Modified: trunk/blender/source/blender/blenkernel/intern/colortools.c
===================================================================
--- trunk/blender/source/blender/blenkernel/intern/colortools.c 2013-04-02 12:38:05 UTC (rev 55718)
+++ trunk/blender/source/blender/blenkernel/intern/colortools.c 2013-04-02 12:41:11 UTC (rev 55719)
@@ -1008,6 +1008,7 @@
IMB_colormanagement_processor_free(cm_processor);
}
+/* if view_settings, it also applies this to byte buffers */
void scopes_update(Scopes *scopes, ImBuf *ibuf, const ColorManagedViewSettings *view_settings,
const ColorManagedDisplaySettings *display_settings)
{
@@ -1021,7 +1022,7 @@
float rgba[4], ycc[3], luma;
int ycc_mode = -1;
const short is_float = (ibuf->rect_float != NULL);
-
+ void *cache_handle = NULL;
struct ColormanageProcessor *cm_processor = NULL;
if (ibuf->rect == NULL && ibuf->rect_float == NULL) return;
@@ -1090,12 +1091,17 @@
if (is_float)
rf = ibuf->rect_float;
- else
- rc = (unsigned char *)ibuf->rect;
-
+ else {
+ if (view_settings)
+ rc = (unsigned char *)IMB_display_buffer_acquire(ibuf, view_settings, display_settings, &cache_handle);
+ else
+ rc = (unsigned char *)ibuf->rect;
+ }
+
if (ibuf->rect_float)
cm_processor = IMB_colormanagement_display_processor_new(view_settings, display_settings);
+ printf("update %p\n", cm_processor);
for (y = 0; y < ibuf->y; y++) {
if (savedlines < scopes->sample_lines && y >= ((savedlines) * ibuf->y) / (scopes->sample_lines + 1)) {
saveline = 1;
@@ -1193,7 +1199,9 @@
if (cm_processor)
IMB_colormanagement_processor_free(cm_processor);
-
+ if (cache_handle)
+ IMB_display_buffer_release(cache_handle);
+
scopes->ok = 1;
}
Modified: trunk/blender/source/blender/editors/space_image/space_image.c
===================================================================
--- trunk/blender/source/blender/editors/space_image/space_image.c 2013-04-02 12:38:05 UTC (rev 55718)
+++ trunk/blender/source/blender/editors/space_image/space_image.c 2013-04-02 12:41:11 UTC (rev 55719)
@@ -435,6 +435,12 @@
/* context changes */
switch (wmn->category) {
+ case NC_WINDOW:
+ /* notifier comes from editing color space */
+ image_scopes_tag_refresh(sa);
+ ED_area_tag_refresh(sa);
+ ED_area_tag_redraw(sa);
+ break;
case NC_SCENE:
switch (wmn->data) {
case ND_FRAME:
@@ -801,11 +807,15 @@
Scene *scene = CTX_data_scene(C);
void *lock;
ImBuf *ibuf = ED_space_image_acquire_buffer(sima, &lock);
+
if (ibuf) {
if (!sima->scopes.ok) {
BKE_histogram_update_sample_line(&sima->sample_line_hist, ibuf, &scene->view_settings, &scene->display_settings);
}
- scopes_update(&sima->scopes, ibuf, &scene->view_settings, &scene->display_settings);
+ if (sima->image->flag & IMA_VIEW_AS_RENDER)
+ scopes_update(&sima->scopes, ibuf, &scene->view_settings, &scene->display_settings);
+ else
+ scopes_update(&sima->scopes, ibuf, NULL, &scene->display_settings);
}
ED_space_image_release_buffer(sima, ibuf, lock);
Modified: trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c 2013-04-02 12:38:05 UTC (rev 55718)
+++ trunk/blender/source/blender/editors/space_sequencer/sequencer_draw.c 2013-04-02 12:41:11 UTC (rev 55719)
@@ -897,10 +897,8 @@
ImBuf *display_ibuf = IMB_dupImBuf(ibuf);
ImBuf *scope;
- if (display_ibuf->rect_float) {
- IMB_colormanagement_imbuf_make_display_space(display_ibuf, &scene->view_settings,
+ IMB_colormanagement_imbuf_make_display_space(display_ibuf, &scene->view_settings,
&scene->display_settings);
- }
scope = make_scope_cb(display_ibuf);
Modified: trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c
===================================================================
--- trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c 2013-04-02 12:38:05 UTC (rev 55718)
+++ trunk/blender/source/blender/editors/space_sequencer/space_sequencer.c 2013-04-02 12:41:11 UTC (rev 55719)
@@ -330,6 +330,7 @@
break;
}
break;
+ case NC_WINDOW:
case NC_SPACE:
if (wmn->data == ND_SPACE_SEQUENCER)
sequencer_scopes_tag_refresh(sa);
More information about the Bf-blender-cvs
mailing list