I was careful in selectively rolling back revisions, but if you've committed changes unrelated to BPY mixed with BPY changes, I might have reverted those too, so please double check.
[ #6702 ] Image doesn't get saved after painting & packing
IMB_saveiff - (general saving function), does not write a file when the image is packed.
so write a file with writePackedFile for packed files.
- Modified pack so it can repack too, rather the n raising an error.
editobject - Dont need to recalc data when hiding and unhiding. rather do what layers do and re-sort the scene.
----------
Change deprecation printfs to print warning once instead of everytime the
deprecated method is called. Also commented out deprecation warnings for
code which will eventually be replaced by experimental Blender.Main/bpy
module.
made all libdata hashable - use the object type,name and lib for the hash.
added .tag to libdata so we can test if data's been processed without using dictionaries
added libdataseq.tag (write only) setting the tag flag (which can always be dirty)
* moved to getseters (use new generic ID funcs)
* added 'reflect' attribute
Text.c
* moved to getseters (new generic ID funcs too)
NLA.c
* moved to getseters (ditto)
Ipo.c
* bugfix, allow nested loops on an IPO's curves.
Blender.c
* removed undocumented function RemoveFakeuser, since actions now have the fakeUser attribute.
* Added data.lib attributes to almost all data types, (except for Text3d and NLA)
This is None or the path of the library as a string.
* Main was giving a warning, Include Curve.h rather then CurNurb.h
* Added Library.LinkedLibs(), returns a list of externaly linked libs.
Image - added img.fields, img.fields_odd, img.antialias, also updated the docs. replaced Py_BuildValue with faster list creation for getPixel functions.
Please read:
http://www.blender3d.org/cms/Imaging.834.0.html
Or in short:
- adding MultiLayer Image support
- recoded entire Image API
- better integration of movie/sequence Images
Was a whole load of work... went down for a week to do this. So, will need
a lot of testing! Will be in irc all evening.
ID Properties binding have now been added for textures. Also,
the beginnings of supporting "del IDProperty Object" (which
basically removes the property from it's parent group then frees
it) in python were done; really the only thing now is to figure
out exactly *how* you overload the del operator. :S
This commit adds file reading/writing of ID properties to all ID types,
and also adds python access for NMesh, Mesh, Scene and Image. Note
that the file reading code might need some more work for certain
future/planned features to save right. Also I updated a few comments in idprop.c.
applied patch #4998 (array count), as well as adding other array settings, updated documentation as well.
added EXPP_setVec3Clamped() as a way to set a vector from getset attrs (used with array offset and scale)
but for images user counts work differently.
(just noticed this is what blender does so Image.New() now does the same)
Many of the sys functions had maximum path thengths that were too short.
char path[FILE_MAXFILE];
rather then
char path[FILE_MAXDIR + FILE_MAXFILE];
* removed get/set in favor of setsetattrs
* added an element iterator to the metaball data type.
* now accepts vectors and quat for location dimensions and rotation.
and other small changes.
Docs updated shortly at.
http://members.iinet.net.au/~cpbarton/ideasman/BPY_API/Metaball-module.html
other changes
typo in image.c
metaballs constants in buttons_editing
Bugfix: using Image.GetCurrent() and image.save() on the "Render Result"
image could result in a segfault since image->ibuf was NULL. This change
forces ibuf to be created if necessary.
NOTE: the Image API needs additional methods/attributes for image.save() to
really do anything useful. The image type, quality, etc., don't seem to be
gettable/settable so the resulting image file may not be in the format the
user would like.
[ #4228 ] Blender.Image.Load(filename) loads only on the first loading
- Image.Load() will now reload the image buffer when a image of the same name is loaded again
- small textual change in render code
implicit declarations, redundant redeclarations, missing initializers,
nested externs and other cruft.
Cleaned up includes and moved extern _Type decls from Types.h into
Types.c since that is the only place where they are needed now.
Did not touch Ipo.[ch] since work is on-going there.
Two small bugfixes:
* Image.New() resets id.us to 0; it is set to 1 by new_image()
* allow ima.depth and ima.size getters to propagate their own error
messages (missing image was returning MemoryError)
Also, seems to me there's something funny going on with image id.us
accounting. In do_image_buttons(), id.us is set whenever an image is
accessed vi the datablock menu:
if(idtest!=id) {
G.sima->image= (Image *)idtest;
if(idtest->us==0) idtest->us= 1;
allqueue(REDRAWIMAGE, 0);
}
This is independent of whether a UV face is selected or not (and it also
seems that the number of UV faces linked to an image is not maintained
either).
Image.New(name, w,h,depth)
Image.start- for animtex
Image.end - for animtex
Image.speed - for animtex
Image.packed - read only bool
See the pydocs for details.
Previously the only way to get the current image was flaky and relyd on the image being assigned to a mesh.
try:
me = Scene.GetCurrent().getAttiveObject().getData(mesh=1)
image = me.faces[me.activeFace].image
except:
image = None
...Can new be replaced by the following, and works even when there is no mesh.
image = Image.GetCurrent()
epydocs:
Get the currently displayed Image from Blenders UV/Image window.
When multiple images are displayed, the last active UV/Image windows image is used.
- corrections to constants
- parameter type checking
- correct use of METH_VARARGS vs METH_NOARGS
- return objects instead of strings in Scene.getChildren() as per doc.
- correct logical operators
Thanks, Ken!