zoukankan      html  css  js  c++  java
  • alphaBlend

    // Alpha = srcAlpha + dstAlpha - srcAlpha * dstAlpha / 0xFF;
    // R = (srcR * srcAlpha + dstR * dstAlpha - dstR * dstAlpha * srcAlpha / 0xFF) / Alpha
    // G = ...; see also R
    // B = ...; see also R
    static void alphaBlend(xColor* dst, const xColor* src)
    {
    // 2 => dst; 3 => src
    int a2a3 = dst->a * src->a;
    // div = dst->a*0xFF + src->a*0xFF - a2a3;
    int div = (dst->a << 8) - dst->a + (src->a << 8) - src->a - a2a3;

    int a2r2 = dst->a * dst->r;
    int a3r3 = src->a * src->r;
    dst->r = ((a2r2 << 8) - a2r2 + (a3r3 << 8) - a3r3 - dst->r * a2a3) / div;

    int a2g2 = dst->a * dst->g;
    int a3g3 = src->a * src->g;
    dst->g = ((a2g2 << 8) - a2g2 + (a3g3 << 8) - a3g3 - dst->g * a2a3) / div;

    int a2b2 = dst->a * dst->b;
    int a3b3 = src->a * src->b;
    dst->b = ((a2b2 << 8) - a2b2 + (a3b3 << 8) - a3b3 - dst->b * a2a3) / div;

    dst->a = dst->a + src->a - a2a3 / 0xFF;
    }

  • 相关阅读:
    Finding Palindromes POJ
    吉哥系列故事——完美队形II HDU
    Period II FZU
    生日礼物&&Supermarket
    炮兵阵地[状态压缩DP]
    最小表示法 P1368
    Period
    最长异或路径
    Luogu P5490 扫描线
    解方程
  • 原文地址:https://www.cnblogs.com/hqu-ye/p/4994968.html
Copyright © 2011-2022 走看看