== UV/Image Editor ==

Patch #6570.

This patch adds color and alpha selectors to Image -> "New..." dialog.
This commit is contained in:
2007-05-03 15:10:44 +00:00
parent 7c5c0db23d
commit c71949419e
7 changed files with 28 additions and 17 deletions

View File

@@ -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);

View File

@@ -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;
}

View File

@@ -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" ) );

View File

@@ -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" ) );

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);