Commit Graph

133 Commits

Author SHA1 Message Date
e546d7666b minor changes needed for the next commit.
- BKE_add_image_extension now sets the extension rather then appending. (no more image.jpg.tga)
- py/rna functions which have no return value now raise an error if a non-None value is returned.
- added back the red-alert flag so buttons can have a red highlight if somethings wrong.
2010-09-17 05:58:06 +00:00
0df7cde29a Fix for own stupid bug the other day, messed up the gradients in selected/deselected UI elements.
Didn't know beta was going to be today, really hope this makes it in!
2010-09-11 00:08:07 +00:00
51aa26db62 Fix [#23634] Edit Box in World / Ambient Occlusion has wrong background colour 2010-09-07 11:14:20 +00:00
0066e33768 Fix: Colour picker wheel wasn't gamma corrected - drawing too dark 2010-08-25 07:49:12 +00:00
d1759639dc - remove unused includes IMB_*, BIF_* & MEM_*
- remove MEM_guardedalloc.h from header files (include directly)
2010-08-16 05:46:10 +00:00
8c455e1da8 remove unused includes 2010-08-08 08:33:47 +00:00
8fb499c34f * Added a new RNA subtype, PROP_IMAGEPATH. It's the same as PROP_FILEPATH, but for images only.
* Changed UI code to display image browser for PROP_IMAGEPATH
* Set the icon_filepath RNA property for brushes to use PROP_IMAGEPATH
* Changed preview icon drawing to ignore unset icons
* Fixed const warnings in brush RNA
2010-07-26 18:37:47 +00:00
ec19c7dffc == Sculpt ==
Fixed brush icons loading slowly

* Changed brush icon property from an enum to a flag that toggles whether a custom file is used for the brush icon
* Changed get_brush_icon to only handle loading external icons, built-ins are handled through the regular icon system
* Modified preview icon drawing to allow built-in icons
* When not using a custom icon, a default icon is selected based on the current tool

TODO:
* Allowing preview to show built-in icons makes the brush texture selector look ugly when nothing is selected. As discussed on IRC though, the nothing-selected state needs to be clarified anyway; I'll address this in another commit
* Use image browser when selecting a custom icon
* Selecting the default icon is ugly (uses the active object's mode), this can be fixed by making brushes know which paint mode they are part of
2010-07-26 04:00:09 +00:00
deb7402299 option for color wheel widget to make it easier to select values closer to white, enable for color balance. 2010-07-05 15:52:25 +00:00
d9e9aa1e4d changes to color wheel commit.
- use a flag rather then a2 for locking color.
- remove float from button added for color wheel size, use a2 instead.
- holding shift on the color wheel gives higher precission.
2010-07-05 07:08:10 +00:00
83a2a4e5b8 Improvements to Blenders color balance (lift/gamma/gain).
Fairly closely match some mac application colin has called 'Looks', to give better results.
- lift is now applied non linear (was being added to the color)
- change the color wheel to preserve the luminance of the gamma and gain values, this stops the color from being set too dark (option for the color wheel template).
- sub-pixel precission for the color wheel since the white area at the center can make a lot of difference with a very small change.

This change will make existing node and sequencer setups lift render slighly differently however discussed this with Ton and he's ok with it.
2010-07-04 20:59:10 +00:00
7ad1491fce alpha drawing for color picker, move alpha button into the picker. 2010-06-26 17:12:55 +00:00
9b94aaa211 check to avoid divide by zero 2010-06-04 11:31:39 +00:00
21d112c36f Reworked the non-blocking reports display in the info header:
* Now it displays the last report from the global list, not just from operators
* Rather than disappearing when a new operator is run, it stays until it times 
out or a new report is added
* Fun animated transitions ;)
http://mke3.net/blender/devel/2.5/reports_header.mov

Now need to investigate report usage with popups. Ideally we can have most
 reports non-blocking, so they're less intrusive, only popping up for dire errors.
Problem is many things in Blender right now are marked as RPT_ERROR 
when probably RPT_WARNING is more appropriate. Should probably keep 
RPT_ERROR for things that demand immediate attention.
2010-06-03 07:27:55 +00:00
6e92ddf8b3 Progress indicators for threaded jobs
Now, rather than the bit-too-alarming stop sign, threaded wmJobs 
display a progress indicator in the header. This is an optional feature
for each job type and still uses the same hardcoded ui template
(could use further work here...).

Currently implemented for:
Render - parts completed, then nodes comped
Compositor - nodes comped
Fluid Sim - frames simulated
Texture Bake - faces baked

Example: http://mke3.net/blender/devel/2.5/progress.mov
2010-05-27 08:22:16 +00:00
a56b72fd82 BugFix:
[#20854] PROPERTIES STAMP: Rendering stamp flickers in output renders

Blenfont was not thread safe, that is why one thread can change
the font properties (size, dpi, color, etc) at the same time
that the stamp draw on the image, and then the problem.

To make blenfont thread safe I have to change two important things:

1) Every BLF_* function take one argument, the font id.
2) We have two new function to make font "thread safe":
	BLF_load_unique
	BLF_load_mem_unique

This two function are for case like stamp, that need and own font
that don't share the glyph cache, so can draw without problem
in a different thread.

Why the BLF_*_unique function ?

Because blenfont keep only one copy of a font and keep a list of
"glyph cache". Every glyph cache have size and dpi, so if two
different thread access the same font at the same time, they can
change value and finish with something like the stamp problem.

Why don't remove the glyph cache ?

Because if we do that, we finish with a font object for every size
and dpi, and the stamp is really a special case that happen in
the rendering process, so I really thing is better keep the
glyph cache and make this two new function to handle this
special case.

(When I say "font object" I mean have the same freetype font multiple
times just to have differents size and dpi)

As Matt point we still can have one case that two thread access
the BLF_*_unique function at the same time, but I am looking to
fix this with some class of thread lock.

For now I test and work fine, so if some one found problem, please
let me know.

Campbell I have to change the python api (python/generic/blf_api.c)
to the new syntax, so maybe you can take a look at this.
2010-04-22 10:56:45 +00:00
5304a65b50 Fix [#21516] UI artifacts in array modifier
Modify the glClearColor used to draw disabled buttons, when creating a ROUNDBOX
ui element. Made a convenience function and rippled it though, too.
2010-04-06 07:02:16 +00:00
bfe248b3d6 Patch [#21750] Add luma waveform and vectorscope to image view
by Xavier Thomas

This adds the waveform monitor and vectorscope to the image editor 'scopes' 
region, bringing it inline (plus a bit more) with sequence editor functionality,
and a big step closer to the end goal of unifying the display code for image/
comp/sequence editor. It's non-intrusive, using the same code paths as 
the histogram.

There's still room for more tweaks - I modified the original patch, changing 
the openGL immediate mode drawing of the waveform display to vertex arrays for 
speed optimisation. Xavier can look at doing this for the vectorscope now too.

Thanks very much Xavier!
2010-04-06 02:05:54 +00:00
5d155868fb Fix [#21694] text input box last character not editable
Font kerning needs to be set in order to get accurate results out of BLF_width(). 
Would be nice if this was more automatic, I've added it to a few other places that 
seem like they need this though it's a little unclear due to the globals etc. Also 
some other minor tweaks when editing text fields.
2010-04-02 11:15:37 +00:00
f743b583bf more lint includes
Only source/blender/editors/ dir, should not give errors on different platforms
Only removing:  UI_*.h, ED_*.h, WM_*.h, DNA_*.h, IMB_*.h, RNA_*.h, PIL_*.h
2010-03-23 14:09:09 +00:00
1e9bf0cfdb spaces -> tabs, (4 spaces == 1 tab, only for white space preceding text) 2010-03-22 09:30:00 +00:00
081c1205a3 correct fsf address 2010-02-12 13:34:04 +00:00
9d0dbd707e Fix [#20754] Histogram Not Updating, Showing Incorrect Levels, Colour Management on/off leads to Crash
Various internal fixes, also additional feature - can drag on the histogram to change scale 
(0 key to reset).

Also fix [#20844] Color balance node (lift freeze)
2010-01-28 07:26:21 +00:00
0bb36e9ced Fixes to Color Balance node:
* The Lift/Gamma/Gain formula previously was incorrect, fixed this and 
removed conversions - now the RNA values are the same as what goes into 
the formula.
* Because of this, added the ability for the Value slider to map to a wider range 
than 0.0-1.0. The black/white gradient remains the same, in this case just 
indicating darker/brighter rather than absolute colour values. Also added ability 
for color wheels to be locked at full brightness (useful for this case, where the 
color value itself is dark).
* Added an alternate formula - offset/power/slope (asc-cdl). This fits the standard 
Color Decision List formula, here for compatibility with other systems, though 
default Lift/Gamma/Gain is easier to use and gives nicer results.
2010-01-27 00:22:29 +00:00
b119ce5fcc Drag and drop 2.5 integration! Finally, slashdot regulars can use
Blender too now! :)

** Drag works as follows:

- drag-able items are defined by the standard interface ui toolkit
- each button can get this feature, via uiButSetDragXXX(but, ...).
  There are calls to define drag-able images, ID blocks, RNA paths, 
  file paths, and so on. By default you drag an icon, exceptionally 
  an ImBuf
- Drag items are registered centrally in the WM, it allows more drag 
  items simultaneous too, but not implemented

** Drop works as follows:

- On mouse release, and if drag items exist in the WM, it converts 
  the mouse event to an EVT_DROP type. This event then gets the full 
  drag info as customdata

- drop regions are defined with WM_dropbox_add(), similar to keymaps 
  you can make a "drop map" this way, which become 'drop map handlers' 
  in the queues.
- next to that the UI kit handles some common button types (like 
  accepting ID or names) to be catching a drop event too.

- Every "drop box" has two callbacks:
  - poll() = check if the event drag data is relevant for this box
  - copy() = fill in custom properties in the dropbox to initialize 
    an operator
- The dropbox handler then calls its standard Operator with its 
  dropbox properties.

** Currently implemented

Drag items:
- ID icons in browse buttons
- ID icons in context menu of properties region
- ID icons in outliner and rna viewer
- FileBrowser icons
- FileBrowser preview images

Drag-able icons are subtly visualized by making them brighter a bit 
on mouse-over. In case the icon is a button or UI element too (most 
cases), the drag-able feature will make the item react to 
mouse-release instead of mouse-press. 

Drop options:

- UI buttons: ID and text buttons (paste name)
- View3d: Object ID drop copies object
- View3d: Material ID drop assigns to object under cursor
- View3d: Image ID drop assigns to object UV texture under cursor
- Sequencer: Path drop will add either Image or Movie strip
- Image window: Path drop will open image


** Drag and drop Notes:

- Dropping into another Blender window (from same application) works 
too. I've added code that passes on mousemoves and clicks to other 
windows, without activating them though. This does make using multi-window
Blender a bit friendler.

- Dropping a file path to an image, is not the same as dropping an 
Image ID... keep this in mind. Sequencer for example wants paths to 
be dropped,  textures in 3d window wants an Image ID.

- Although drop boxes could be defined via Python, I suggest they're 
part of the UI and editor design (= how we want an editor to work), and 
not default offered configurable like keymaps. 

- At the moment only one item can be dragged at a time. This is for 
several reasons.... For one, Blender doesn't have a well defined 
uniform way to define "what is selected" (files, outliner items, etc). 
Secondly there's potential conflicts on what todo when you drop mixed 
drag sets on spots. All undefined stuff... nice for later.

- Example to bypass the above: a collection of images that form a strip, 
should be represented in filewindow as a single sequence anyway. 
This then will fit well and gets handled neatly by design.

- Another option to check is to allow multiple options per drop... it 
could show the operator as a sort of menu, allowing arrow or scrollwheel 
to choose. For time being I'd prefer to try to design a singular drop 
though, just offer only one drop action per data type on given spots.

- What does work already, but a tad slow, is to use a function that 
detects an object (type) under cursor, so a drag item's option can be 
further refined (like drop object on object = parent). (disabled)


** More notes

- Added saving for Region layouts (like split points for toolbar)

- Label buttons now handle mouse over

- File list: added full path entry for drop feature.

- Filesel bugfix: wm_operator_exec() got called there and fully handled, 
while WM event code tried same. Added new OPERATOR_HANDLED flag for this. 
Maybe python needs it too?

- Cocoa: added window move event, so multi-win setups work OK (didnt save).

- Interface_handlers.c: removed win->active

- Severe area copy bug: area handlers were not set to NULL

- Filesel bugfix: next/prev folder list was not copied on area copies

** Leftover todos

- Cocoa windows seem to hang on cases still... needs check
- Cocoa 'draw overlap' swap doesn't work
- Cocoa window loses focus permanently on using Spotlight
  (for these reasons, makefile building has Carbon as default atm)

- ListView templates in UI cannot become dragged yet, needs review... 
it consists of two overlapping UI elements, preventing handling icon clicks.

- There's already Ghost library code to handle dropping from OS 
into Blender window. I've noticed this code is unfinished for Macs, but 
seems to be complete for Windows. Needs test... currently, an external 
drop event will print in console when succesfully delivered to Blender's WM.
2010-01-26 18:18:21 +00:00
da3abc78a2 Fix [#20744] Turning on Shading in Themes adversely affects display of color swatches 2010-01-21 05:14:05 +00:00
6d06f54fbe Fix [#20742] splash screen: file names over 26 characters overlap with "Ctrl O" 2010-01-21 01:30:32 +00:00
3e1783c715 New Compositor node: Hue Control
Was very quick to do, now re-aquainted with node editor.

http://mke3.net/blender/devel/2.5/hue_correct_node.jpg

Todo: modes for affecting hue and value on the vertical axis as well as just saturation - or if an enterprising coder wants to give it a go, let me know and 
I can help :)
2010-01-21 00:00:45 +00:00
ed578c27c8 patch [#20690] Cut Linking for Logic Bricks
from Dalai Felinto (dfelinto)

cutting kinks now works the same as in the node editor.
2010-01-19 11:24:42 +00:00
aab8196a1c Finished some work from the weekend to keep local tree clean..
* Added a generic 'histogram' ui control, currently available in new image editor 
'scopes' region (shortcut P). Shows the histogram of the currently viewed image.

It's a baby step in unifying the functionality and code from the sequence editor, 
so eventually we can migrate the sequence preview to the image editor too, 
like compositor.

Still a couple of rough edges to tweak, regarding when it updates. Also would 
be very nice to have this region as a partially transparent overlapping region...
2010-01-19 01:32:06 +00:00
Dalai Felinto
690ad15099 Text Editor: Add an option "Tabs as Spaces".
So now tab is not ALWAYS converted to spaces.
This is stored by text datablock (what allows to do nice things in the future, as automatic check for the indentation type of the file).

Ideally we should redraw the other Text Editor windows after changing that (in case the same file is opened and the Property panel is also open). Not sure how to do that though.

I'm using TABSTOSPACES as the DEFINE flag because TABSASSPACES sounds too ugly.

(also fix for interface divisor bug)
2010-01-14 21:30:51 +00:00
b0f87935a8 spelling errors, no real changes to code. 2010-01-14 10:59:42 +00:00
e8c4be18a8 Fix [#20029] Text input fields with dropdown list bugs 2010-01-14 09:56:41 +00:00
0edecb73cf Fix [#20655] wrong button shading
Also restored copy/paste for color swatches
2010-01-13 02:01:34 +00:00
629bfd2a31 Fix [#19922] outliner+renaming+shift+home 2010-01-12 05:54:15 +00:00
9d67c720d5 * Tweak for splash screen rev. info - dalai, does this look ok on your machine?
* Added very feint separator lines in menus
2010-01-11 01:26:16 +00:00
3564eb7763 Added user preferences for color picker type, includes colour wheel + 3 square types.
Find it in prefs -> system
2010-01-09 06:44:54 +00:00
cf9b728c6a Color Picker work:
Restored the old Eyedropper tool from the 2.4 colour picker. Now it's an operator, 
working nicely using rna properties (fixes #19475 and some todo items)

This ended up being a bit more work than expected, it involved converting the 
colour picker to use RNA properties directly, rather than temporary values. This has 
several advantages, including being able to type in RGB values greater than 1, 
however there are still some redraw issues with sliders.

Also removed the alternate color pickers after this time spent testing, the current one 
should be sufficient, or alternatives to the wheel can possibly become preferences 
in the current design.

Converting the picker to RNA also made it very trivial to make a cool new 
ColorWheel template, which can be embedded in UI layouts. I've enabled it already 
in texture/vertex paint brush properties and the sequence editor color correction:
http://mke3.net/blender/devel/2.5/colorwheels.jpg
2010-01-07 09:55:11 +00:00
251ef0a47f Changes to Brush texture workflow
This changes how textures are accessed from Brushes, with the intention of simplifying 
the workflow, and reducing the amount of clicking. Rather than the previous texture slots 
(which didn't work as a stack anyway), brushes now have a single texture linked. Rather 
than taking time having to set up your slots in advance, you can now select and change 
textures directly as you sculpt/paint on the fly. For complex brushes, node textures can 
be used, or for fast access, it's easy to make a duplicate of your brush with the texture 
you like and assign a hotkey.

Brush textures can now be chosen from a new Textures panel in the brush tool 
properties - click on the thumbnail to open a texture selector. This is done using a new 
variation on the ID template - the number of rows and columns to display in the popup 
can be customised in the UI scripts.
2010-01-03 08:37:18 +00:00
b89138564e Changes to Color Management
After testing and feedback, I've decided to slightly modify the way color 
management works internally. While the previous method worked well for 
rendering, was a smaller transition and had some advantages over this
new method, it was a bit more ambiguous, and was making things difficult 
for other areas such as compositing.

This implementation now considers all color data (with only a couple of 
exceptions such as brush colors) to be stored in linear RGB color space, 
rather than sRGB as previously. This brings it in line with Nuke, which also 
operates this way, quite successfully. Color swatches, pickers, color ramp 
display are now gamma corrected to display gamma so you can see what 
you're doing, but the numbers themselves are considered linear. This 
makes understanding blending modes more clear (a 0.5 value on overlay 
will not change the result now) as well as making color swatches act more 
predictably in the compositor, however bringing over color values from 
applications like photoshop or gimp, that operate in a gamma space, 
will give identical results.

This commit will convert over existing files saved by earlier 2.5 versions to 
work generally the same, though there may be some slight differences with 
things like textures. Now that we're set on changing other areas of shading, 
this won't be too disruptive overall.

I've made a diagram explaining the pipeline here:
http://mke3.net/blender/devel/2.5/25_linear_workflow_pipeline.png

and some docs here:
http://www.blender.org/development/release-logs/blender-250/color-management/
2009-12-02 07:56:34 +00:00
7b036e1dcb Splash screen, implemented by Matt.
* Now has documentation links and recent files.
* Click on image or outside splash to make it go away.
* Still has old image, new one will be committed later.
2009-11-23 13:58:55 +00:00
c6dbbde16b Various bugfixes:
* Tweaked the code for operator buttons so that only those operator buttons in the toolbar have their text left-aligned. This is done at layout-block level

* Silenced "file_init" print when opening the file browser

* Disabled animateability of the "active_shape_key_index" for Objects, since this property behaves in a very unpredictable manner, leading to problems with users trying to keyframe shapekey values and ending up keying the list. 

* Remove some unnecessary RNA wrapping code
2009-11-23 09:47:56 +00:00
040c2affa6 Revert toolbar shading commit. 2009-11-19 09:57:04 +00:00
0df9ea6cd5 Made toolbar buttons slightly brighter, to make them stand out from the background more. 2009-11-18 18:01:54 +00:00
b1a5ba6804 Changed the appearance of the toolbar buttons.
When stacked on top of each other, it looks cleaner and simpler without the gradient.
This makes it easier to scan through long lists of tools.

http://www.reynish.com/files/blender25/toolbar_buttons.png
2009-11-18 10:57:30 +00:00
26695c15c2 Made toolbar buttons left-aligned.
Currently all tool buttons are left aligned, unless it has an icon like the Render Image and Animation buttons.
Later it might be nicer to introduce a proper flag to make text center aligned for those cases.
2009-11-17 20:19:35 +00:00
05df56033c * Tweak to button text clipping, now the text label part gets clipped from the right side 2009-11-12 00:48:44 +00:00
4157e51a25 * Fix for [#19488] Small slider = hidden values
Now number fields use a new method of clipping text when the available space is small:
http://vimeo.com/7545600
2009-11-11 10:27:25 +00:00
6dcb4ac7a4 * Fixing various compiler warnings under scons+mingw. Mostly unused variables and functions.
* Added missing lib-linking code for Grease Pencil in nodetrees
* Uncommented some code for curve shapekeys
2009-11-11 09:59:51 +00:00
37e4a311b0 Math Lib
* Convert all code to use new functions.
* Branch maintainers may want to skip this commit, and run this
  conversion script instead, if they use a lot of math functions
  in new code:
  http://www.pasteall.org/9052/python
2009-11-10 20:43:45 +00:00