Fix for [#8303] stamp gives wrong file name when using unsaved files
authorCampbell Barton <ideasman42@gmail.com>
Thu, 21 Feb 2008 23:19:06 +0000 (23:19 +0000)
committerCampbell Barton <ideasman42@gmail.com>
Thu, 21 Feb 2008 23:19:06 +0000 (23:19 +0000)
Also made alpha color work with OpenGL render caused by buf_rectfill_area not working on char rect's.

source/blender/blenkernel/intern/image.c
source/blender/imbuf/intern/rectop.c

index fdd36d72b06cf280a116adbd23ec464b92cc52a3..56744224449a807a195ac340b6024dc2449be2f0 100644 (file)
@@ -906,8 +906,13 @@ static void stampdata(StampData *stamp_data, int do_prefix)
 #endif /* WIN32 */
        
        if (G.scene->r.stamp & R_STAMP_FILENAME) {
-               if (do_prefix)          sprintf(stamp_data->file, "File %s", G.sce);
-               else                            sprintf(stamp_data->file, "%s", G.sce);
+               if (G.relbase_valid) {
+                       if (do_prefix)          sprintf(stamp_data->file, "File %s", G.sce);
+                       else                            sprintf(stamp_data->file, "%s", G.sce);
+               } else {
+                       if (do_prefix)          strcpy(stamp_data->file, "File <untitled>");
+                       else                            strcpy(stamp_data->file, "<untitled>");
+               }
                stamp_data->note[0] = '\0';
        } else {
                stamp_data->file[0] = '\0';
index 63de3bd2355e1c73925a342c79efa2e23979ed05..5a907e71258e9fc2ddc7c2e769afbf99977ebf8c 100644 (file)
@@ -525,7 +525,9 @@ void IMB_rectfill(struct ImBuf *drect, float col[4])
 void buf_rectfill_area(unsigned char *rect, float *rectf, int width, int height, float *col, int x1, int y1, int x2, int y2)
 {
        int i, j;
-       float a, ai;
+       float a; /* alpha */
+       float ai; /* alpha inverted */
+       float aich; /* alpha, inverted, ai/255.0 - Convert char to float at the same time */
        if ((!rect && !rectf) || (!col) || col[3]==0.0)
                return;
        
@@ -541,7 +543,7 @@ void buf_rectfill_area(unsigned char *rect, float *rectf, int width, int height,
        
        a = col[3];
        ai = 1-a;
-       
+       aich = ai/255.0f;
 
        if (rect) {
                unsigned char *pixel; 
@@ -566,9 +568,9 @@ void buf_rectfill_area(unsigned char *rect, float *rectf, int width, int height,
                                                pixel[1] = chg;
                                                pixel[2] = chb;
                                        } else {
-                                               pixel[0] = (char)(fr + ((float)pixel[0]*ai));
-                                               pixel[1] = (char)(fg + ((float)pixel[1]*ai));
-                                               pixel[2] = (char)(fb + ((float)pixel[2]*ai));
+                                               pixel[0] = (char)((fr + ((float)pixel[0]*aich))*255.0f);
+                                               pixel[1] = (char)((fg + ((float)pixel[1]*aich))*255.0f);
+                                               pixel[2] = (char)((fb + ((float)pixel[2]*aich))*255.0f);
                                        }
                                }
                        }