* Multiply for panorama cameras

* Some cases of struct name being set where it shouldnt have been.
* Spelling: wich --> which
* Copy and initialize uv modifier scale, remove unneeded enum.
* Ability to pin any object into the context.
* Update uv window while transforming (useful when used with UVProject modifier)
* Patch by Wahooney, so new template's are internal text and dont get saved over
  by mistake.
* Fix for https://bugzilla.redhat.com/show_bug.cgi?id=572186
  Bug 572186 - [abrt] crash in blender-2.49b-5.fc12: Process
  /usr/bin/blender.bin was killed by signal 6 (SIGABRT). Original fix submitted
  by Jochen Schmitt.
* [#21816] bpy.data.add_image has stopped working on Windows. moved to
  bpy.data.images.load(), missed this call.

(commits 27726,27825,27828,27831,27832,27833,27834,27836,27837,27838,27839,27858 by Campbell from render25 branch)
This commit is contained in:
Brecht Van Lommel 2010-03-30 12:15:16 +00:00
parent 253de0ed86
commit 71446eea57
24 changed files with 152 additions and 83 deletions

@ -160,7 +160,7 @@ void doblur(struct ImBuf *mbuf, float fac, Cast *cast)
char *irect, *prect, *mrect;
float *irectf, *prectf, *mrectf;
/* wich buffers ? */
/* which buffers ? */
if(fac>7.0) fac= 7.0;
if(fac<=1.0) return;

@ -322,7 +322,7 @@ def load_image(imagepath, dirname):
for path in variants:
if os.path.exists(path):
return bpy.data.add_image(path)
return bpy.data.images.load(path)
else:
print(path, "doesn't exist")

@ -490,7 +490,7 @@ class Header(StructRNA, _GenericUI):
class Menu(StructRNA, _GenericUI):
__slots__ = ()
def path_menu(self, searchpaths, operator):
def path_menu(self, searchpaths, operator, props_default={}):
layout = self.layout
# hard coded to set the operators 'path' to the filename.
@ -511,7 +511,12 @@ class Menu(StructRNA, _GenericUI):
if f.startswith("."):
continue
layout.operator(operator, text=bpy.utils.display_name(f)).path = path
props = layout.operator(operator, text=bpy.utils.display_name(f))
for attr, value in props_default.items():
setattr(props, attr, value)
props.path = path
def draw_preset(self, context):
"""Define these on the subclass

@ -689,9 +689,12 @@ class DATA_PT_modifiers(DataButtonsPanel):
if wide_ui:
col = split.column()
sub = col.column(align=True)
sub.label(text="Aspect Ratio:")
sub.prop(md, "horizontal_aspect_ratio", text="Horizontal")
sub.prop(md, "vertical_aspect_ratio", text="Vertical")
sub.prop(md, "aspect_x", text="Aspect X")
sub.prop(md, "aspect_y", text="Aspect Y")
sub = col.column(align=True)
sub.prop(md, "scale_x", text="Scale X")
sub.prop(md, "scale_y", text="Scale Y")
def WAVE(self, layout, ob, md, wide_ui):
split = layout.split()

@ -35,12 +35,15 @@ class OBJECT_PT_context_object(ObjectButtonsPanel):
def draw(self, context):
layout = self.layout
space = context.space_data
ob = context.object
row = layout.row()
row.label(text="", icon='OBJECT_DATA')
row.prop(ob, "name", text="")
if space.use_pin_id:
row.template_ID(space, "pin_id")
else:
row.prop(ob, "name", text="")
class OBJECT_PT_custom_props(ObjectButtonsPanel, PropertyPanel):

@ -177,7 +177,7 @@ class TEXT_MT_templates(bpy.types.Menu):
bl_label = "Script Templates"
def draw(self, context):
self.path_menu(bpy.utils.script_paths("templates"), "text.open")
self.path_menu(bpy.utils.script_paths("templates"), "text.open", {"internal": True})
class TEXT_MT_edit_view(bpy.types.Menu):

@ -53,7 +53,7 @@ int id_unlink(struct ID *id, int test);
int new_id(struct ListBase *lb, struct ID *id, const char *name);
struct ListBase *wich_libbase(struct Main *mainlib, short type);
struct ListBase *which_libbase(struct Main *mainlib, short type);
#define MAX_LIBARRAY 40
int set_listbasepointers(struct Main *main, struct ListBase **lb);

@ -347,7 +347,7 @@ int id_unlink(ID *id, int test)
if(id->us == 0) {
if(test) return 1;
lb= wich_libbase(mainlib, GS(id->name));
lb= which_libbase(mainlib, GS(id->name));
free_libblock(lb, id);
return 1;
@ -356,7 +356,7 @@ int id_unlink(ID *id, int test)
return 0;
}
ListBase *wich_libbase(Main *mainlib, short type)
ListBase *which_libbase(Main *mainlib, short type)
{
switch( type ) {
case ID_SCE:
@ -658,7 +658,7 @@ void *copy_libblock(void *rt)
id= rt;
lb= wich_libbase(G.main, GS(id->name));
lb= which_libbase(G.main, GS(id->name));
idn= alloc_libblock(lb, GS(id->name), id->name+2);
if(idn==NULL) {
@ -867,7 +867,7 @@ void free_main(Main *mainvar)
ID *find_id(char *type, char *name) /* type: "OB" or "MA" etc */
{
ListBase *lb= wich_libbase(G.main, GS(type));
ListBase *lb= which_libbase(G.main, GS(type));
return BLI_findstring(lb, name, offsetof(ID, name) + 2);
}
@ -1175,7 +1175,7 @@ int new_id(ListBase *lb, ID *id, const char *tname)
if(id->lib) return 0;
/* if no libdata given, look up based on ID */
if(lb==NULL) lb= wich_libbase(G.main, GS(id->name));
if(lb==NULL) lb= which_libbase(G.main, GS(id->name));
/* if no name given, use name of current ID
* else make a copy (tname args can be const) */
@ -1348,7 +1348,7 @@ void test_idbutton(char *name)
ID *idtest;
lb= wich_libbase(G.main, GS(name-2) );
lb= which_libbase(G.main, GS(name-2) );
if(lb==0) return;
/* search for id */
@ -1383,7 +1383,7 @@ void rename_id(ID *id, char *name)
ListBase *lb;
strncpy(id->name+2, name, 21);
lb= wich_libbase(G.main, GS(id->name) );
lb= which_libbase(G.main, GS(id->name) );
new_id(lb, id, name);
}

@ -3606,6 +3606,7 @@ static void uvprojectModifier_initData(ModifierData *md)
umd->flags = 0;
umd->num_projectors = 1;
umd->aspectx = umd->aspecty = 1.0f;
umd->scalex = umd->scaley = 1.0f;
}
static void uvprojectModifier_copyData(ModifierData *md, ModifierData *target)
@ -3621,6 +3622,8 @@ static void uvprojectModifier_copyData(ModifierData *md, ModifierData *target)
tumd->num_projectors = umd->num_projectors;
tumd->aspectx = umd->aspectx;
tumd->aspecty = umd->aspecty;
tumd->scalex = umd->scalex;
tumd->scaley = umd->scaley;
}
static CustomDataMask uvprojectModifier_requiredDataMask(Object *ob, ModifierData *md)
@ -3692,6 +3695,8 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
char uvname[32];
float aspx= umd->aspectx ? umd->aspectx : 1.0f;
float aspy= umd->aspecty ? umd->aspecty : 1.0f;
float scax= umd->scalex ? umd->scalex : 1.0f;
float scay= umd->scaley ? umd->scaley : 1.0f;
int free_uci= 0;
aspect = aspx / aspy;
@ -3829,6 +3834,22 @@ static DerivedMesh *uvprojectModifier_do(UVProjectModifierData *umd,
project_from_camera(tface->uv[2], coords[mf->v3], projectors[0].uci);
if(mf->v3)
project_from_camera(tface->uv[3], coords[mf->v4], projectors[0].uci);
if(scax != 1.0f) {
tface->uv[0][0] = ((tface->uv[0][0] - 0.5f) * scax) + 0.5f;
tface->uv[1][0] = ((tface->uv[1][0] - 0.5f) * scax) + 0.5f;
tface->uv[2][0] = ((tface->uv[2][0] - 0.5f) * scax) + 0.5f;
if(mf->v3)
tface->uv[3][0] = ((tface->uv[3][0] - 0.5f) * scax) + 0.5f;
}
if(scay != 1.0f) {
tface->uv[0][1] = ((tface->uv[0][1] - 0.5f) * scay) + 0.5f;
tface->uv[1][1] = ((tface->uv[1][1] - 0.5f) * scay) + 0.5f;
tface->uv[2][1] = ((tface->uv[2][1] - 0.5f) * scay) + 0.5f;
if(mf->v3)
tface->uv[3][1] = ((tface->uv[3][1] - 0.5f) * scay) + 0.5f;
}
}
else {
/* apply transformed coords as UVs */
@ -6489,7 +6510,7 @@ static DerivedMesh *screwModifier_applyModifier(ModifierData *md, Object *ob,
ed_loop_flip= 1;
}
else {
/* not so simple to work out wich edge is higher */
/* not so simple to work out which edge is higher */
sub_v3_v3v3(tmp_vec1, tmpf1, vc_tmp->co);
sub_v3_v3v3(tmp_vec1, tmpf2, vc_tmp->co);
normalize_v3(tmp_vec1);

@ -293,10 +293,8 @@ void BLI_adddirstrings()
struct direntry * file;
struct tm *tm;
time_t zero= 0;
file = &files[0];
for(num=0;num<actnum;num++){
for(num=0, file= files; num<actnum; num++, file++){
#ifdef WIN32
mode = 0;
strcpy(file->mode1, types[0]);
@ -325,43 +323,43 @@ void BLI_adddirstrings()
#endif
#ifdef WIN32
strcpy(files[num].owner,"user");
strcpy(file->owner,"user");
#else
{
struct passwd *pwuser;
pwuser = getpwuid(files[num].s.st_uid);
pwuser = getpwuid(file->s.st_uid);
if ( pwuser ) {
strcpy(files[num].owner, pwuser->pw_name);
BLI_strncpy(file->owner, pwuser->pw_name, sizeof(file->owner));
} else {
sprintf(files[num].owner, "%d", files[num].s.st_uid);
snprintf(file->owner, sizeof(file->owner), "%d", file->s.st_uid);
}
}
#endif
tm= localtime(&files[num].s.st_mtime);
tm= localtime(&file->s.st_mtime);
// prevent impossible dates in windows
if(tm==NULL) tm= localtime(&zero);
strftime(files[num].time, 8, "%H:%M", tm);
strftime(files[num].date, 16, "%d-%b-%y", tm);
strftime(file->time, 8, "%H:%M", tm);
strftime(file->date, 16, "%d-%b-%y", tm);
/*
* Seems st_size is signed 32-bit value in *nix and Windows. This
* will buy us some time until files get bigger than 4GB or until
* everyone starts using __USE_FILE_OFFSET64 or equivalent.
*/
st_size= files[num].s.st_size;
st_size= file->s.st_size;
if (st_size > 1024*1024*1024) {
sprintf(files[num].size, "%.2f GB", ((double)st_size)/(1024*1024*1024));
sprintf(file->size, "%.2f GB", ((double)st_size)/(1024*1024*1024));
}
else if (st_size > 1024*1024) {
sprintf(files[num].size, "%.1f MB", ((double)st_size)/(1024*1024));
sprintf(file->size, "%.1f MB", ((double)st_size)/(1024*1024));
}
else if (st_size > 1024) {
sprintf(files[num].size, "%d KB", (int)(st_size/1024));
sprintf(file->size, "%d KB", (int)(st_size/1024));
}
else {
sprintf(files[num].size, "%d B", (int)st_size);
sprintf(file->size, "%d B", (int)st_size);
}
strftime(datum, 32, "%d-%b-%y %H:%M", tm);
@ -377,15 +375,13 @@ void BLI_adddirstrings()
sprintf(size, "%10d", (int) st_size);
}
sprintf(buf,"%s %s %s %7s %s %s %10s %s", file->mode1, file->mode2, file->mode3, files[num].owner, files[num].date, files[num].time, size,
files[num].relname);
sprintf(buf,"%s %s %s %7s %s %s %10s %s", file->mode1, file->mode2, file->mode3, file->owner, file->date, file->time, size,
file->relname);
files[num].string=MEM_mallocN(strlen(buf)+1, "filestring");
if (files[num].string){
strcpy(files[num].string,buf);
file->string=MEM_mallocN(strlen(buf)+1, "filestring");
if (file->string){
strcpy(file->string,buf);
}
file++;
}
}

@ -120,7 +120,7 @@
#include "BKE_group.h"
#include "BKE_image.h"
#include "BKE_lattice.h"
#include "BKE_library.h" // for wich_libbase
#include "BKE_library.h" // for which_libbase
#include "BKE_main.h" // for Main
#include "BKE_mesh.h" // for ME_ defines (patching)
#include "BKE_modifier.h"
@ -429,7 +429,7 @@ static void split_libdata(ListBase *lb, Main *first)
mainvar= first;
while(mainvar) {
if(mainvar->curlib==id->lib) {
lbn= wich_libbase(mainvar, GS(id->name));
lbn= which_libbase(mainvar, GS(id->name));
BLI_remlink(lb, id);
BLI_addtail(lbn, id);
break;
@ -4684,7 +4684,7 @@ static void *restore_pointer_by_name(Main *mainp, ID *id, int user)
{
if(id) {
ListBase *lb= wich_libbase(mainp, GS(id->name));
ListBase *lb= which_libbase(mainp, GS(id->name));
if(lb) { // there's still risk of checking corrupt mem (freed Ids in oops)
ID *idn= lb->first;
@ -5377,10 +5377,10 @@ static BHead *read_libblock(FileData *fd, Main *main, BHead *bhead, int flag, ID
/* do after read_struct, for dna reconstruct */
if(bhead->code==ID_ID) {
lb= wich_libbase(main, GS(id->name));
lb= which_libbase(main, GS(id->name));
}
else {
lb= wich_libbase(main, bhead->code);
lb= which_libbase(main, bhead->code);
}
BLI_addtail(lb, id);
@ -10959,8 +10959,8 @@ char *bhead_id_name(FileData *fd, BHead *bhead)
static ID *is_yet_read(FileData *fd, Main *mainvar, BHead *bhead)
{
const char *idname= bhead_id_name(fd, bhead);
/* wich_libbase can be NULL, intentionally not using idname+2 */
return BLI_findstring(wich_libbase(mainvar, GS(idname)), idname, offsetof(ID, name));
/* which_libbase can be NULL, intentionally not using idname+2 */
return BLI_findstring(which_libbase(mainvar, GS(idname)), idname, offsetof(ID, name));
}
static void expand_doit(FileData *fd, Main *mainvar, void *old)

@ -2693,7 +2693,7 @@ void autocomplete_end(AutoComplete *autocpl, char *autoname)
static void autocomplete_id(bContext *C, char *str, void *arg_v)
{
int blocktype= (intptr_t)arg_v;
ListBase *listb= wich_libbase(CTX_data_main(C), blocktype);
ListBase *listb= which_libbase(CTX_data_main(C), blocktype);
if(listb==NULL) return;

@ -497,7 +497,7 @@ static void ui_template_id(uiLayout *layout, bContext *C, PointerRNA *ptr, char
flag |= UI_ID_OPEN;
type= RNA_property_pointer_type(ptr, prop);
template->idlb= wich_libbase(CTX_data_main(C), RNA_type_to_ID_code(type));
template->idlb= which_libbase(CTX_data_main(C), RNA_type_to_ID_code(type));
/* create UI elements for this template
* - template_ID makes a copy of the template data and assigns it to the relevant buttons

@ -54,6 +54,7 @@
#include "RNA_define.h"
#include "RNA_access.h"
#include "RNA_enum_types.h"
#include "ED_curve.h"
#include "ED_mesh.h"
@ -529,9 +530,6 @@ void OBJECT_OT_hook_add_newobj(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
}
static EnumPropertyItem hook_mod_items[]= {
{0, NULL, 0, NULL, NULL}};
static int object_hook_remove_exec(bContext *C, wmOperator *op)
{
int num= RNA_enum_get(op->ptr, "modifier");
@ -566,7 +564,7 @@ static EnumPropertyItem *hook_mod_itemf(bContext *C, PointerRNA *ptr, int *free)
int a, totitem= 0;
if(!ob)
return hook_mod_items;
return DummyRNA_NULL_items;
for(a=0, md=ob->modifiers.first; md; md= md->next, a++) {
if (md->type==eModifierType_Hook) {
@ -602,7 +600,7 @@ void OBJECT_OT_hook_remove(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to remove.");
prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to remove.");
RNA_def_enum_funcs(prop, hook_mod_itemf);
ot->prop= prop;
}
@ -669,7 +667,7 @@ void OBJECT_OT_hook_reset(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to assign to.");
prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to.");
RNA_def_enum_funcs(prop, hook_mod_itemf);
}
@ -725,7 +723,7 @@ void OBJECT_OT_hook_recenter(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to assign to.");
prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to.");
RNA_def_enum_funcs(prop, hook_mod_itemf);
}
@ -788,7 +786,7 @@ void OBJECT_OT_hook_assign(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to assign to.");
prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to assign to.");
RNA_def_enum_funcs(prop, hook_mod_itemf);
}
@ -837,7 +835,7 @@ void OBJECT_OT_hook_select(wmOperatorType *ot)
ot->flag= OPTYPE_REGISTER|OPTYPE_UNDO;
/* properties */
prop= RNA_def_enum(ot->srna, "modifier", hook_mod_items, 0, "Modifier", "Modifier number to remove.");
prop= RNA_def_enum(ot->srna, "modifier", DummyRNA_NULL_items, 0, "Modifier", "Modifier number to remove.");
RNA_def_enum_funcs(prop, hook_mod_itemf);
}

@ -816,21 +816,9 @@ int buttons_context(const bContext *C, const char *member, bContextDataResult *r
static void pin_cb(bContext *C, void *arg1, void *arg2)
{
SpaceButs *sbuts= CTX_wm_space_buts(C);
ButsContextPath *path= sbuts->path;
PointerRNA *ptr;
int a;
if(sbuts->flag & SB_PIN_CONTEXT) {
if(path->len) {
for(a=path->len-1; a>=0; a--) {
ptr= &path->ptr[a];
if(ptr->id.data) {
sbuts->pinid= ptr->id.data;
break;
}
}
}
sbuts->pinid= buttons_context_id_path(C);
}
else
sbuts->pinid= NULL;
@ -901,3 +889,24 @@ void buttons_context_register(ARegionType *art)
pt->flag= PNL_NO_HEADER;
BLI_addtail(&art->paneltypes, pt);
}
ID *buttons_context_id_path(const bContext *C)
{
SpaceButs *sbuts= CTX_wm_space_buts(C);
ButsContextPath *path= sbuts->path;
PointerRNA *ptr;
int a;
if(path->len) {
for(a=path->len-1; a>=0; a--) {
ptr= &path->ptr[a];
if(ptr->id.data) {
return ptr->id.data;
break;
}
}
}
return NULL;
}

@ -35,6 +35,7 @@ struct bContextDataResult;
struct SpaceButs;
struct uiLayout;
struct wmOperatorType;
struct ID;
/* buts->scaflag */
#define BUTS_SENS_SEL 1
@ -62,6 +63,7 @@ void buttons_context_compute(const struct bContext *C, struct SpaceButs *sbuts);
int buttons_context(const struct bContext *C, const char *member, struct bContextDataResult *result);
void buttons_context_draw(const struct bContext *C, struct uiLayout *layout);
void buttons_context_register(struct ARegionType *art);
struct ID *buttons_context_id_path(const struct bContext *C);
/* buttons_ops.c */
void BUTTONS_OT_file_browse(struct wmOperatorType *ot);

@ -1172,7 +1172,7 @@ void filelist_from_main(struct FileList *filelist)
/* make files */
idcode= groupname_to_code(filelist->dir);
lb= wich_libbase(G.main, idcode );
lb= which_libbase(G.main, idcode );
if(lb==0) return;
id= lb->first;

@ -625,6 +625,15 @@ static void image_listener(ScrArea *sa, wmNotifier *wmn)
ED_area_tag_redraw(sa);
break;
}
case NC_OBJECT:
switch(wmn->data) {
case ND_TRANSFORM:
if(sima->lock && (sima->flag & SI_DRAWSHADOW)) {
ED_area_tag_refresh(sa);
ED_area_tag_redraw(sa);
}
break;
}
}
}

@ -215,6 +215,7 @@ static int open_exec(bContext *C, wmOperator *op)
PropertyPointerRNA *pprop;
PointerRNA idptr;
char str[FILE_MAX];
short internal = RNA_int_get(op->ptr, "internal");
RNA_string_get(op->ptr, "path", str);
@ -244,6 +245,13 @@ static int open_exec(bContext *C, wmOperator *op)
st->text= text;
st->top= 0;
}
if (internal) {
if(text->name)
MEM_freeN(text->name);
text->name = NULL;
}
WM_event_add_notifier(C, NC_TEXT|NA_ADDED, text);
@ -282,6 +290,7 @@ void TEXT_OT_open(wmOperatorType *ot)
/* properties */
WM_operator_properties_filesel(ot, FOLDERFILE|TEXTFILE|PYSCRIPTFILE, FILE_SPECIAL, FILE_OPENFILE);
RNA_def_boolean(ot->srna, "internal", 0, "Make internal", "Make text file internal after loading");
}
/******************* reload operator *********************/

@ -318,6 +318,7 @@ typedef struct UVProjectModifierData {
int flags;
int num_projectors;
float aspectx, aspecty;
float scalex, scaley;
char uvlayer_name[32];
int uvlayer_tmp, pad;
} UVProjectModifierData;

@ -1317,19 +1317,33 @@ static void rna_def_modifier_uvproject(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "horizontal_aspect_ratio", PROP_FLOAT, PROP_NONE);
prop= RNA_def_property(srna, "aspect_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "aspectx");
RNA_def_property_range(prop, 1, FLT_MAX);
RNA_def_property_ui_range(prop, 1, 1000, 100, 2);
RNA_def_property_ui_range(prop, 1, 1000, 0.2, 2);
RNA_def_property_ui_text(prop, "Horizontal Aspect Ratio", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "vertical_aspect_ratio", PROP_FLOAT, PROP_NONE);
prop= RNA_def_property(srna, "aspect_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "aspecty");
RNA_def_property_range(prop, 1, FLT_MAX);
RNA_def_property_ui_range(prop, 1, 1000, 100, 2);
RNA_def_property_ui_range(prop, 1, 1000, 0.2, 2);
RNA_def_property_ui_text(prop, "Vertical Aspect Ratio", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "scale_x", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "scalex");
RNA_def_property_range(prop, 0, FLT_MAX);
RNA_def_property_ui_range(prop, 0, 1000, 0.2, 2);
RNA_def_property_ui_text(prop, "Horizontal Scale", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "scale_y", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_sdna(prop, NULL, "scaley");
RNA_def_property_range(prop, 0, FLT_MAX);
RNA_def_property_ui_range(prop, 0, 1000, 0.2, 2);
RNA_def_property_ui_text(prop, "Vertical Scale", "");
RNA_def_property_update(prop, 0, "rna_Modifier_update");
prop= RNA_def_property(srna, "override_image", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flags", MOD_UVPROJECT_OVERRIDEIMAGE);

@ -2332,7 +2332,6 @@ static void rna_def_scene_render_data(BlenderRNA *brna)
prop= RNA_def_property(srna, "file_extension", PROP_STRING, PROP_NONE);
RNA_def_property_string_funcs(prop, "rna_SceneRender_file_ext_get", "rna_SceneRender_file_ext_length", NULL);
RNA_def_property_ui_text(prop, "Extension", "The file extension used for saving renders");
RNA_def_struct_name_property(srna, prop);
RNA_def_property_clear_flag(prop, PROP_EDITABLE);
prop= RNA_def_property(srna, "is_movie_format", PROP_BOOLEAN, PROP_NONE);

@ -1183,6 +1183,10 @@ static void rna_def_space_buttons(BlenderRNA *brna)
RNA_def_property_pointer_funcs(prop, NULL, NULL, "rna_SpaceProperties_pin_id_typef");
RNA_def_property_flag(prop, PROP_EDITABLE);
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_PROPERTIES, NULL);
prop= RNA_def_property(srna, "use_pin_id", PROP_BOOLEAN, PROP_NONE);
RNA_def_property_boolean_sdna(prop, NULL, "flag", SB_PIN_CONTEXT);
RNA_def_property_ui_text(prop, "Pin ID", "Use the pinned context");
}
static void rna_def_space_image(BlenderRNA *brna)
@ -1847,15 +1851,11 @@ static void rna_def_space_console(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Show Error", "Display error text");
RNA_def_property_update(prop, NC_SPACE|ND_SPACE_CONSOLE_REPORT, NULL);
prop= RNA_def_property(srna, "prompt", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Prompt", "Command line prompt");
RNA_def_struct_name_property(srna, prop);
prop= RNA_def_property(srna, "language", PROP_STRING, PROP_NONE);
RNA_def_property_ui_text(prop, "Language", "Command line prompt language");
RNA_def_struct_name_property(srna, prop);
prop= RNA_def_property(srna, "history", PROP_COLLECTION, PROP_NONE);
RNA_def_property_collection_sdna(prop, NULL, "history", NULL);

@ -333,7 +333,7 @@ static int intersect_rayface(RayObject *hit_obj, RayFace *face, Isect *is)
RE_RC_COUNT(is->raycounter->faces.hit);
is->isect= ok; // wich half of the quad
is->isect= ok; // which half of the quad
is->labda= labda;
is->u= u; is->v= v;