efl

Форк
0
/
draw_alpha_main.c 
59 строк · 1.1 Кб
1
#include "draw_private.h"
2

3
/** default op: d = d*(1-sa) + s */
4
static void
5
_alpha_func_blend(uint8_t *dst, const uint8_t *src, int len)
6
{
7
   int k;
8

9
   EINA_SAFETY_ON_NULL_RETURN(src);
10
   EINA_SAFETY_ON_NULL_RETURN(dst);
11

12
   for (k = len; k; k--)
13
     {
14
        int val = (*dst * (255 - *src)) / 255 + *src;
15
        *dst++ = val;
16
        src++;
17
     }
18
}
19

20
/** d = s */
21
static void
22
_alpha_func_copy(uint8_t *dst, const uint8_t *src, int len)
23
{
24
   EINA_SAFETY_ON_NULL_RETURN(src);
25
   EINA_SAFETY_ON_NULL_RETURN(dst);
26

27
   memcpy(dst, src, len);
28
}
29

30
/** d = d*s */
31
static void
32
_alpha_func_mul(uint8_t *dst, const uint8_t *src, int len)
33
{
34
   int k;
35

36
   EINA_SAFETY_ON_NULL_RETURN(src);
37
   EINA_SAFETY_ON_NULL_RETURN(dst);
38

39
   for (k = len; k; k--)
40
     {
41
        int val = (*dst * *src) / 255;
42
        *dst++ = val;
43
        src++;
44
     }
45
}
46

47
Draw_Func_Alpha
48
efl_draw_alpha_func_get(Efl_Gfx_Render_Op op, Eina_Bool has_mask)
49
{
50
   if (!has_mask)
51
     {
52
        if (op == EFL_GFX_RENDER_OP_BLEND)
53
          return _alpha_func_blend;
54
        else
55
          return _alpha_func_copy;
56
     }
57
   else
58
     return _alpha_func_mul;
59
}
60

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.