Commit Graph

854 Commits

Author SHA1 Message Date
Campbell Barton
8a3d3de3ae UI: fix for slight glitch drawing image info
Using sub-pixel position made the text clip badly sometimes.
2013-12-24 15:06:38 +11:00
Campbell Barton
c1c26c36f6 Style Cleanup: remove preprocessor indentation (updated wiki style guide too) 2013-12-22 14:12:19 +11:00
Sergey Sharybin
b0c4133c67 Followup for fix T37718: image was not saving with proper settings second time
This was actually a regression after color management re-implementation, need
to copy settings from saved image buffer to an original one since they might
be modified during save.

Also noticed image format planes detection didn't work properly from an image
buffer. Made it so save operator works fine now, but also marked a TODO in
BKE_imbuf_to_image_format() which needs to be investigated further.
2013-12-19 17:20:12 +06:00
Sergey Sharybin
ce893552c3 Image cache rewrite to using generic movie cache
Summary:
Behaves very much the same as cache for Movie Clip datablock:

- Image now have `MovieCache *cache` field which replaced
  legacy `ListBase ibufs`.

  This allows image datablock to easily keep of image
  buffers which are owned by itself. This field isn't
  saved to the file and getting restored on undo steps.

  However, cache limit is global for movies, sequences
  and image datablocks now. So overall cached image buffers
  size will not go above cache limit size in user
  preferences.

- Image buffers which are marked as BITMAPDIRTY will never
  be freed from the cache.

- Added utility function to iterate over image buffers
  saved in movie cache.

- Movie cache cleanup check callback now have ImBuf argument
  which can be used in a condition of cleanup.

- Added some utility functions which replaces legacy ibufs
  iterations with image cache iteration which happens from
  inside a lock.

- Fixed `image_mem_size()` which was only counting one of
  the buffers if both float and byte buffer present.

Additional notes:

- `BKE_image_get_first_ibuf()` is rather stupid, but direct
  access to ibufs->first was also the same stupid idea.

  Would consider avoid this function is another project.

- There are some places which doesn't look threadsafe, but
  they already were not so much threadsafe anyway before.

  So think not a big deal with solving this later.

Finally solves infinite memory usage by image sequences! :)

Reviewers: brecht, campbellbarton

Reviewed By: brecht

CC: sebastian_k

Differential Revision: http://developer.blender.org/D95
2013-12-13 16:30:00 +06:00
Scott Petrovic
c701082a92 RNA: Add pixels property type 2013-12-13 04:40:30 +11:00
Campbell Barton
8dc80e9d73 Style Cleanup 2013-12-10 13:45:17 +11:00
Antony Riakiotakis
8e5b02359b Fix T37326 inversion of image channels did not do an undo push. Now only do an undo if we are in image paint mode and use the paint undo stack. Also added missing GPU update.: 2013-12-08 00:29:13 +02:00
Campbell Barton
1815225faa Blender Font (BLF): add length argument to string width/height functions
This also fixes a crash editing buttons longer then UI_MAX_DRAW_STR
2013-12-02 21:10:07 +11:00
Thomas Beck
20d96761cb Code cleanup: As Sergey stated on bf-committers one should use id_us_min() if the user counter has to be decremented and not decrement the counter by hand. 2013-11-25 21:44:19 +01:00
Campbell Barton
9c262e5649 Code Cleanup: style comments 2013-11-25 11:00:55 +11:00
Thomas Beck
1e096852bf Commit D31 : Check if the user count needs to be decreased after adding a new BI image texture.
Fixes this problem:

*Go to the Blender (BI) textures tab and open an existing image.
*Hit on the plus sign next to datablock to create a new image.
*Complete the creation process and switch back to the first (loaded) image.
-> The image user count raises... will raise as often as you hit the plus sign
2013-11-24 13:54:47 +01:00
Sergey Sharybin
b492f85c52 Fix part of T37326: IMAGE_OT_invert won't update if buffer is float
Need to mark display buffer as out-of-date.
2013-11-18 14:18:01 +06:00
Lukas Toenne
c9fdec14f5 Fix #37261 Rendering a Render Layer from another scene doesn't update.
The scene pointer used for looking up the appropriate source of render result images in the image editor was always taken from context. This means that render results for a different scene would never be
displayed in the image editor.

To give feedback on running renders, try to get the running render job's scene pointer in the image editor for render result type images. This only happens during rendering, apart from that the regular
context scene result is displayed.
2013-10-31 17:20:31 +00:00
Campbell Barton
7267221715 remove return argument from wmOperatorType->cancel, was only ever returning OPERATOR_CANCELLED. 2013-10-30 23:08:53 +00:00
Dalai Felinto
7c2fae19b4 cmake/openimageio - partially reverting #60692
We now have openimageio building when cycles builds or when it's
manually set to build.

(I reverted the _IMAGE_ in the define name because I think the closer
the cmake flags match the defines in the software the better, and there
is no reason to rename all the existent WITH_OPENIMAGEIO references in
CMakeLists.txt - which would be the alternative)
2013-10-12 23:56:21 +00:00
Sergey Sharybin
d7983e3638 Option to overlay mask over the footage
Currently supports only two modes:
- Show alpha channel of the mask
- Multiply footage by the mask, which will give
  you final-looking combined image.

TODO: Currently rasterization happens on every
      redraw, need to cache rasterized mask
      somewhere to make redraw more realtime.
2013-10-12 14:09:05 +00:00
Irie Shinsuke
6caacff196 More fixes for PSD support in SCons scirpts... 2013-10-12 06:11:26 +00:00
Irie Shinsuke
90cd0a37a9 Fix build scripts related to PSD support. Both CMake and SCons builds were broken. 2013-10-11 23:14:01 +00:00
Dalai Felinto
029f4b9767 adding WITH_IMAGE_OPENIMAGEIO and removing the PSD build option
As per Brecht van Lommel's suggestion.
2013-10-11 16:38:04 +00:00
Antony Riakiotakis
187f664c75 Fix #37036, pack and refresh button not aligned anymore. Also add
operator for opening images in the image editor header, it's easily one
of the most common operations, don't see why it has to be only accessed
from menu.
2013-10-10 23:33:59 +00:00
Dalai Felinto
4abb8fde95 Photoshop PSD support
We now support the combined layer of Photoshop files (stored as layer 0
in the file). This way users can keep their files as multilayer PSD and
Blender always handle them as flat images.

For perfect alpha this requires an OpenImageIO update:
342cc2633f

Photoshop sample files:
https://github.com/OpenImageIO/oiio-images

Brecht has some pending fixes to push for OIIO as well, so we may as
well wait to update our libraries.

What works:
===========
* 8bit images (with or without alpha)
* 16bits images (alpha discarded)
* Photoshop files saved with 'Maximum Compatibility'
* Cycles, Blender internal,  BGE (and player)

Known limitations
(due to OIIO dependency):
=========================
* Images with less than 4 channels show a wrong thumbnail (bug may be in  OIIO)
* Packed images are not supported
* We do not write PSD files.

Note: old Blenders have support for PSD via Quicktime library. But due
to license issues this was discontinued.

Many thanks for Brecht van Lommel for reviewing the patch, suggesting
multiple improvements and to help solving the alpha issue.
2013-10-08 21:17:24 +00:00
Lukas Toenne
31433a3809 Fix #36981, Removing Sample line fails during render.
The SAMPLELINE flag in histogram was set during the BKE_histogram_update_sample_line function. That function in turn is called during every scope update in area draw function, meaning that during render
it constantly gets set. OTOH the operator tries to disable the flag on invoke, which "cancels" the sample line by default. So during render the operator un-setting of the flag has no effect, because the
render job immediatly triggers a redraw, which updates scopes and sets it again.

Moved the flag out of the actual sample line update function into the operator execute. Now only the operator enables/disables overall sample line drawing, while the rest of the update works as before.
2013-10-07 09:25:39 +00:00
Sergey Sharybin
51a7089bea Fix #36980: Color space issue when displaying pixel color in a render
HSV values were calculated from a linear space color, which is
not so much useful and correct. Now RGB(A) buffers will use
color managed color for HSV values.

Still not sure which color to use for HSV when there's only one
channel in a buffer. This part left unchanged for now.
2013-10-07 08:06:19 +00:00
Sergey Sharybin
ca152da258 Remove unused and meaningless line. 2013-10-07 07:53:36 +00:00
Thomas Dinges
e28bd0d302 * Change NA_EDITED notifier to NA_ADDED, as suggested by Sergey. (r60414 follow up) 2013-09-30 22:53:56 +00:00
Thomas Dinges
2acfd3f96a Fix [#36845] New generated blank image doesn't update preview (properties editor)
* IMAGE_OT_NEW did not had a notifier yet for some weird reason.
2013-09-28 20:04:49 +00:00
Campbell Barton
35cd649c66 rename cursor setting functions to make modal set/restore more clearly related functions. 2013-09-06 22:34:29 +00:00
Sergey Sharybin
d4b8a6cb85 Code cleanup: use boolean instead of int for colormanagement 2013-09-05 17:13:43 +00:00
Sergey Sharybin
03dbae07d3 Mask primitives
Currently only circle and square, might be easily
extended in the future.

New primitives are creating at cursor location.
This also implied adding 2d cursor to space clip.

Also fix set 2D cursor location which didn't work
in image editor's mask mode since 2.67.

TODO: draw_image_cursor better be moved to some
      more generic file, but it's not so much
      important for now and might be solved later.

Thanks Campbell for the review!
2013-08-26 20:23:26 +00:00
Dalai Felinto
0b0540db3a Image Editor: implement FKey to call 'View All' with 'fit_view'
This mimics the behaviour we have in the Clip Editor.

I personally would prefer if we had no border once in fullscreen
(current border is 5 pixels).

I will consult Sergey Sharybin first to see if we can change that in the clip editor as well (though there I
believe the border is useful - the bottom of the editor is used to indicate 'tracked' frames.
2013-08-20 23:40:46 +00:00
Campbell Barton
fc4a777511 use '_exec' suffix for operator execute callbacks, also picky change to sizeof() use in BLI_array.h 2013-07-28 17:06:31 +00:00
Campbell Barton
cfc13e179a correct switch statement: image_listener NC_GEOM was falling through to NC_OBJECT 2013-07-21 17:04:54 +00:00
Campbell Barton
7db1d6556d code cleanup: add break statements in switch ()'s, (even at the last case). 2013-07-21 08:16:37 +00:00
Sergey Sharybin
cd88217b98 Fix #36145: Error in inverting channels in the UV/Image Editor
Issue was caused by operator redo saving values for previous
inverted channels, meaning the same channels will be inverted
next time operator runs.

Don't think it's useful to save operator values here, since
you don;t have visual feedback about which channels were
inverted. So marked all this properties as SKIP_SAVE. Gives
much more predictable results.
2013-07-15 10:44:17 +00:00
Campbell Barton
c17c2d8059 fix [#36135] File name of previously saved render result no longer remembered
in fact the problem was caused by own previous fix/improvement for a different case, now this works as follows...

- render uses last-saved name, falls back to 'untitled' in blend file path.
- non render uses id-name always, saves into dir of last-saved image, fall back to blend file path.
2013-07-14 09:57:03 +00:00
Campbell Barton
96953c748f fix [#36022] inconsistent naming for new images 2013-07-06 08:10:41 +00:00
Brecht Van Lommel
c57d9cc44b Fix #35900: image editor save multilayer EXR was not using the compression
codec specified by the user.
2013-06-28 13:13:45 +00:00
Brecht Van Lommel
28dd9c6a40 Fix #35767: transforming nodes in the node editor changed the wireframe color
of the active object in the 3D view. This was due to sharing a global G.moving
flag to indicate that transform is active, now it's only set per transform data
type so different editors don't influence each other.
2013-06-24 22:41:37 +00:00
Brecht Van Lommel
02fbfa5c70 Fix unnecessary 3D viewport redraws in various cases, in particular when editing
node materials.

Area and region listener callbacks now get the screen and area pointers passed, so
they can do more fine grained checks to see if redraw is really needed, for example
depending on the 3D view drawtype.
2013-06-24 22:41:33 +00:00
Campbell Barton
e6c54c26ae use booleans for operator check functions. 2013-06-18 15:30:51 +00:00
Ton Roosendaal
06268dfa4d Bug fix #35749
Image Editor: "Replace Image" operator didn't refresh icon for image.
2013-06-15 15:39:20 +00:00
Campbell Barton
225c5fee6b move BLO_sys_types.h -> BLI_sys_types.h (it had nothing todo with loading)
remove MEM_sys_types.h which was a duplicate.
2013-05-28 19:35:26 +00:00
Campbell Barton
ac0a8af414 fix [#35518] UV Mapping crashes the Blender with specific image file
2 bugs here
- missing NULL check in IMB_colormanagement_display_settings_from_ctx()
- deadlock in draw_image_paint_helpers()

Simple solution is to not draw paint helpers for render/viewer images.
2013-05-27 06:06:35 +00:00
Brecht Van Lommel
6bc2d57235 Fix #35449: image sequences to drive e.g. particle length or used in modifiers
were no properly updating when rendering animations.

The render engine was only updating the image user current frame on images used
by material textures. Now moved the function that updates all from the editors
to blenkernel level and do it on all frame changes.
2013-05-22 22:17:07 +00:00
Campbell Barton
6de829cb7a code cleanup: split scons includes onto multiple lines, reduce chance of include conflicts later on. 2013-05-20 18:42:28 +00:00
Brecht Van Lommel
e1229b2978 Attempt to fix #35057 and #35372: slow texture painting performance.
After the paint refactoring for 2.67, the OpenGL texture was getting updated for
every stroke point, rather than once for every redraw. With a small brush radius
and low spacing the number of stroke points can be quite large, which might have
a big performance impact depending on the graphics card / drivers.

Also for 2D image paint, avoid redrawing the button panels and properties editor
during painting.

There is another possible cause for slowdowns with 3D texture painting which was
not fixed. Projection painting is creating and destroying threads for every stroke
point. Depending on the CPU/OS there might be a lot of overhead in doing that if
the brush size is small.
2013-05-15 14:37:05 +00:00
Campbell Barton
f74201190d code cleanup: remove references to BLI_rand.h 2013-05-08 12:59:35 +00:00
Campbell Barton
5c4f96af2c code cleanup: use 'const float[2]' where possible. 2013-05-08 12:54:33 +00:00
Sergey Sharybin
409a1d5c01 Fix #35139] Output panel options are not taken into account when you safe your render (JPG)
Was caused by svn rev53181, and it worked before because
image buffer didn't have quality set and in this case
fall back to scene settings happened.

Now or render result quality from scene settings is always
used, image buffer's settings is ignored.
2013-04-29 09:56:01 +00:00
Brecht Van Lommel
e77729f5dd Fix a few more cases where an operator should not show in the search menu. 2013-04-26 02:44:21 +00:00