Files
Webcam/include/framework/picture/pict_draw.cpp

26 lines
1.1 KiB
C++

/* -----------------------------------------------------------------------------
GSFramework
Copyright 2001-2013 Emmanuel Julien. All Rights Reserved.
----------------------------------------------------------------------------- */
#include "picture/pict.h"
using namespace GS;
//------------------------------------------------------------------------------
uchar Picture::AlphaCompositeAlpha(uchar a, uchar b)
{ return (uchar)Types::Clamp <int> (a + b - ((a * b) >> 8), 0, 255); }
uchar Picture::AlphaCompositeColor(uchar u, uchar v, uchar a, uchar b, uchar k)
{ return (uchar)Types::Clamp <int> (k ? (u * a + v * b - ((u * b * a) >> 8)) / k : 0, 0, 255); }
void Picture::AlphaCompositePixel(uchar *data, uchar r, uchar g, uchar b, uchar a)
{
uchar a_blend = AlphaCompositeAlpha(data[3], a);
data[0] = AlphaCompositeColor(data[0], r, data[3], a, a_blend);
data[1] = AlphaCompositeColor(data[1], g, data[3], a, a_blend);
data[2] = AlphaCompositeColor(data[2], b, data[3], a, a_blend);
data[3] = a_blend;
}
//------------------------------------------------------------------------------