== UV/Image Editor ==
Patch #6570. This patch adds color and alpha selectors to Image -> "New..." dialog.
This commit is contained in:
@@ -112,7 +112,7 @@ struct ImBuf *BKE_image_get_ibuf(struct Image *ima, struct ImageUser *iuser);
|
||||
struct Image *BKE_add_image_file(const char *name);
|
||||
|
||||
/* adds image, adds ibuf, generates color or pattern */
|
||||
struct Image *BKE_add_image_size(int width, int height, char *name, short uvtestgrid);
|
||||
struct Image *BKE_add_image_size(int width, int height, char *name, short uvtestgrid, float color[4]);
|
||||
|
||||
/* for reload, refresh, pack */
|
||||
void BKE_image_signal(struct Image *ima, struct ImageUser *iuser, int signal);
|
||||
|
||||
@@ -370,7 +370,7 @@ Image *BKE_add_image_file(const char *name)
|
||||
return ima;
|
||||
}
|
||||
|
||||
static ImBuf *add_ibuf_size(int width, int height, char *name, short uvtestgrid)
|
||||
static ImBuf *add_ibuf_size(int width, int height, char *name, short uvtestgrid, float color[4])
|
||||
{
|
||||
ImBuf *ibuf;
|
||||
float h=0.0, hoffs=0.0, hue=0.0, s=0.9, v=0.9, r, g, b;
|
||||
@@ -435,8 +435,10 @@ static ImBuf *add_ibuf_size(int width, int height, char *name, short uvtestgrid)
|
||||
} else { /* blank image */
|
||||
for(y=0; y<ibuf->y; y++) {
|
||||
for(x=0; x<ibuf->x; x++, rect+=4) {
|
||||
rect[0]= rect[1]= rect[2]= 0;
|
||||
rect[3]= 255;
|
||||
rect[0]= (char)(color[0] * 255.0);
|
||||
rect[1]= (char)(color[1] * 255.0);
|
||||
rect[2]= (char)(color[2] * 255.0);
|
||||
rect[3]= (char)(color[3] * 255.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -444,7 +446,7 @@ static ImBuf *add_ibuf_size(int width, int height, char *name, short uvtestgrid)
|
||||
}
|
||||
|
||||
/* adds new image block, creates ImBuf and initializes color */
|
||||
Image *BKE_add_image_size(int width, int height, char *name, short uvtestgrid)
|
||||
Image *BKE_add_image_size(int width, int height, char *name, short uvtestgrid, float color[4])
|
||||
{
|
||||
Image *ima;
|
||||
|
||||
@@ -459,7 +461,7 @@ Image *BKE_add_image_size(int width, int height, char *name, short uvtestgrid)
|
||||
ima->gen_y= height;
|
||||
ima->gen_type= uvtestgrid;
|
||||
|
||||
ibuf= add_ibuf_size(width, height, name, uvtestgrid);
|
||||
ibuf= add_ibuf_size(width, height, name, uvtestgrid, color);
|
||||
image_assign_ibuf(ima, ibuf, IMA_NO_INDEX, 0);
|
||||
|
||||
ima->ok= IMA_OK_LOADED;
|
||||
@@ -1370,6 +1372,7 @@ static ImBuf *image_get_render_result(Image *ima, ImageUser *iuser)
|
||||
ImBuf *BKE_image_get_ibuf(Image *ima, ImageUser *iuser)
|
||||
{
|
||||
ImBuf *ibuf= NULL;
|
||||
float color[] = {0, 0, 0, 1};
|
||||
|
||||
/* quick reject tests */
|
||||
if(ima==NULL)
|
||||
@@ -1447,7 +1450,7 @@ ImBuf *BKE_image_get_ibuf(Image *ima, ImageUser *iuser)
|
||||
/* UV testgrid or black or solid etc */
|
||||
if(ima->gen_x==0) ima->gen_x= 256;
|
||||
if(ima->gen_y==0) ima->gen_y= 256;
|
||||
ibuf= add_ibuf_size(ima->gen_x, ima->gen_y, ima->name, ima->gen_type);
|
||||
ibuf= add_ibuf_size(ima->gen_x, ima->gen_y, ima->name, ima->gen_type, color);
|
||||
image_assign_ibuf(ima, ibuf, IMA_NO_INDEX, 0);
|
||||
ima->ok= IMA_OK_LOADED;
|
||||
}
|
||||
|
||||
@@ -235,6 +235,7 @@ static PyObject *M_Image_New( PyObject * self, PyObject * args)
|
||||
{
|
||||
int width, height, depth;
|
||||
char *name;
|
||||
float color[] = {0, 0, 0, 1};
|
||||
Image *image;
|
||||
if( !PyArg_ParseTuple( args, "siii", &name, &width, &height, &depth ) )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
@@ -242,7 +243,7 @@ static PyObject *M_Image_New( PyObject * self, PyObject * args)
|
||||
if (width > 5000 || height > 5000 || width < 1 || height < 1)
|
||||
return ( EXPP_ReturnPyObjError( PyExc_TypeError,
|
||||
"Image width and height must be between 1 and 5000" ) );
|
||||
image = BKE_add_image_size(width, height, name, 0);
|
||||
image = BKE_add_image_size(width, height, name, 0, color);
|
||||
if( !image )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_MemoryError,
|
||||
"couldn't create PyObject Image_Type" ) );
|
||||
|
||||
@@ -395,6 +395,7 @@ PyObject *LibBlockSeq_new(BPy_LibBlockSeq *self, PyObject * args, PyObject *kwd)
|
||||
ID *id = NULL;
|
||||
char *name=NULL, *filename=NULL, *data_type=NULL;
|
||||
int img_width=256, img_height=256;
|
||||
float color[] = {0, 0, 0, 1};
|
||||
short data_code = 0;
|
||||
int user_count = 0;
|
||||
|
||||
@@ -537,7 +538,7 @@ PyObject *LibBlockSeq_new(BPy_LibBlockSeq *self, PyObject * args, PyObject *kwd)
|
||||
break;
|
||||
case ID_IM:
|
||||
{
|
||||
id = (ID *)BKE_add_image_size(img_width, img_height, name?name:"Image", 0);
|
||||
id = (ID *)BKE_add_image_size(img_width, img_height, name?name:"Image", 0, color);
|
||||
if( !id )
|
||||
return ( EXPP_ReturnPyObjError( PyExc_MemoryError,
|
||||
"couldn't create PyObject Image_Type" ) );
|
||||
|
||||
@@ -1881,7 +1881,8 @@ void reload_image_sima(void)
|
||||
void new_image_sima(void)
|
||||
{
|
||||
static int width= 256, height= 256;
|
||||
static short uvtestgrid=0;
|
||||
static short uvtestgrid= 0;
|
||||
static float color[] = {0, 0, 0, 1};
|
||||
char name[22];
|
||||
|
||||
strcpy(name, "Untitled");
|
||||
@@ -1889,11 +1890,13 @@ void new_image_sima(void)
|
||||
add_numbut(0, TEX, "Name:", 0, 21, name, NULL);
|
||||
add_numbut(1, NUM|INT, "Width:", 1, 5000, &width, NULL);
|
||||
add_numbut(2, NUM|INT, "Height:", 1, 5000, &height, NULL);
|
||||
add_numbut(3, TOG|SHO, "UV Test Grid", 0, 0, &uvtestgrid, NULL);
|
||||
if (!do_clever_numbuts("New Image", 4, REDRAW))
|
||||
return;
|
||||
add_numbut(3, COL, "", 0, 0, &color, NULL);
|
||||
add_numbut(4, NUM|FLO, "Alpha:", 0.0, 1.0, &color[3], NULL);
|
||||
add_numbut(5, TOG|SHO, "UV Test Grid", 0, 0, &uvtestgrid, NULL);
|
||||
if (!do_clever_numbuts("New Image", 6, REDRAW))
|
||||
return;
|
||||
|
||||
G.sima->image= BKE_add_image_size(width, height, name, uvtestgrid);
|
||||
G.sima->image= BKE_add_image_size(width, height, name, uvtestgrid, color);
|
||||
BKE_image_signal(G.sima->image, &G.sima->iuser, IMA_SIGNAL_USER_NEW_IMAGE);
|
||||
image_changed(G.sima, 0);
|
||||
|
||||
|
||||
@@ -570,8 +570,9 @@ int do_clever_numbuts(char *name, int tot, int winevent)
|
||||
|
||||
if(varstr->type==TEX) {
|
||||
uiDefBut(block, TEX, 0, varstr->name,(short)((x1+15) + (sizex*xi)),(short)(y2-55- 20*yi),(short)(sizex), 19, numbpoin[a], varstr->min, varstr->max, 0, 0, varstr->tip);
|
||||
}
|
||||
else {
|
||||
} else if(varstr->type==COL) {
|
||||
uiDefButF(block, COL, 0, "",(short)((x1+15) + (sizex*xi)),(short)(y2-55- 20*yi),(short)(sizex), 19, numbpoin[a], varstr->min, varstr->max, 0, 0, "");
|
||||
} else {
|
||||
if(varstr->type==LABEL) {/* dont include the label when rounding the buttons */
|
||||
uiBlockEndAlign(block);
|
||||
|
||||
|
||||
@@ -270,6 +270,7 @@ void b_verse_pop_node(VNode *vnode)
|
||||
else if(vnode->type==V_NT_BITMAP) {
|
||||
struct VBitmapData *vbitmap;
|
||||
struct VBitmapLayer *vblayer;
|
||||
float color[] = {0, 0, 0, 1};
|
||||
|
||||
vbitmap = (VBitmapData*)vnode->data;
|
||||
|
||||
@@ -293,7 +294,8 @@ void b_verse_pop_node(VNode *vnode)
|
||||
vbitmap->width,
|
||||
vbitmap->height,
|
||||
vnode->name,
|
||||
0);
|
||||
0,
|
||||
color);
|
||||
((Image*)vbitmap->image)->vnode = (void*)vnode;
|
||||
sync_blender_image_with_verse_bitmap_node(vnode);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user