Evas filters: Default mask fillmode should be repeat
authorJean-Philippe Andre <jp.andre@samsung.com>
Tue, 25 Mar 2014 06:19:21 +0000 (15:19 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Wed, 26 Mar 2014 01:48:12 +0000 (10:48 +0900)
Fillmode "NONE" has basically no practical use and shouldn't be
the default.

src/lib/evas/filters/evas_filter_mask.c
src/lib/evas/filters/evas_filter_parser.c

index 58500713bea06d2471a6e8a8612e3339288221a5..b12e381aa11a750b0bf5187d97979e301fda3335 100644 (file)
@@ -350,6 +350,7 @@ static Eina_Bool
 _mask_cpu_rgba_rgba_rgba(Evas_Filter_Command *cmd)
 {
    Evas_Filter_Command fake_cmd;
+   Evas_Filter_Fill_Mode fillmode;
    Evas_Filter_Apply_Func blend;
    Evas_Filter_Buffer *fb;
    Eina_Bool ret;
@@ -373,11 +374,25 @@ _mask_cpu_rgba_rgba_rgba(Evas_Filter_Command *cmd)
    EINA_SAFETY_ON_NULL_RETURN_VAL(fb, EINA_FALSE);
    fb->locked = EINA_TRUE;
 
+   // Repeat mask if unspecified - NONE is not possible
+   fillmode = cmd->draw.fillmode;
+   if ((fillmode & (EVAS_FILTER_FILL_MODE_REPEAT_X | EVAS_FILTER_FILL_MODE_STRETCH_X)) == 0)
+     {
+        DBG("X fillmode not specified: defaults to repeat");
+        fillmode |= EVAS_FILTER_FILL_MODE_REPEAT_X;
+     }
+   if ((fillmode & (EVAS_FILTER_FILL_MODE_REPEAT_Y | EVAS_FILTER_FILL_MODE_STRETCH_Y)) == 0)
+     {
+        DBG("Y fillmode not specified: defaults to repeat");
+        fillmode |= EVAS_FILTER_FILL_MODE_REPEAT_Y;
+     }
+
    // Mask --> Temp
    fake_cmd.input = cmd->mask;
    fake_cmd.mask = NULL;
    fake_cmd.output = fb;
    fake_cmd.draw.render_op = EVAS_RENDER_MUL;
+   fake_cmd.draw.fillmode = fillmode;
    blend = evas_filter_blend_cpu_func_get(&fake_cmd);
    EINA_SAFETY_ON_NULL_RETURN_VAL(blend, EINA_FALSE);
    ret = blend(&fake_cmd);
@@ -387,6 +402,7 @@ _mask_cpu_rgba_rgba_rgba(Evas_Filter_Command *cmd)
    fake_cmd.draw.render_op = EVAS_RENDER_BLEND;
    fake_cmd.input = fb;
    fake_cmd.output = cmd->output;
+   fake_cmd.draw.fillmode = EVAS_FILTER_FILL_MODE_NONE;
    blend = evas_filter_blend_cpu_func_get(&fake_cmd);
    EINA_SAFETY_ON_NULL_RETURN_VAL(blend, EINA_FALSE);
    ret = blend(&fake_cmd);
index b72f8f67947285e7c7b589ed3607d039ccc22570..7f47c44646d6242cc22c646ca9d04b2d52a7e872 100644 (file)
@@ -1520,7 +1520,7 @@ _grow_instruction_prepare(Evas_Filter_Instruction *instr)
   Blend two input buffers into a third (target).
 
   @code
-    mask (mask, src = input, dst = output, color = white, fillmode = none);
+    mask (mask, src = input, dst = output, color = white, fillmode = repeat);
   @endcode
 
   @param mask     A mask or texture to blend with the input @a src into the target @a dst.
@@ -1528,7 +1528,8 @@ _grow_instruction_prepare(Evas_Filter_Instruction *instr)
   @param dst      Destination buffer for blending. This must be of same size and colorspace as @a src.
   @param color    A color to use for alpha to RGBA conversion for the blend operations. White means no change.
                   See @ref evasfilters_color "colors". This will have no effect on RGBA sources.
-  @param fillmode Defines whether to stretch or repeat the @a mask if its size that of @src. Should be set when masking with external textures. Default is none. See @ref evasfilter_fillmode "fillmodes".
+  @param fillmode Defines whether to stretch or repeat the @a mask if its size that of @src.
+                  Should be set when masking with external textures. Default is repeat. See @ref evasfilter_fillmode "fillmodes".
 
   Note that @a src and @a mask are interchangeable, if they have the same dimensions.
 
@@ -1556,7 +1557,7 @@ _mask_instruction_prepare(Evas_Filter_Instruction *instr)
    _instruction_param_seq_add(instr, "src", VT_BUFFER, "input");
    _instruction_param_seq_add(instr, "dst", VT_BUFFER, "output");
    _instruction_param_name_add(instr, "color", VT_COLOR, 0xFFFFFFFF);
-   _instruction_param_name_add(instr, "fillmode", VT_STRING, "none");
+   _instruction_param_name_add(instr, "fillmode", VT_STRING, "repeat");
 
    return EINA_TRUE;
 }