Halftone::operator()(const Point &point, const float& luma, float supersample)const
{
float halftone(mask(point));
Halftone::operator()(const Point &point, const float& luma, float supersample)const
{
float halftone(mask(point));
point-=offset;
{
const float a(Angle::sin(-angle).get()), b(Angle::cos(-angle).get());
const float u(point[0]),v(point[1]);
point-=offset;
{
const float a(Angle::sin(-angle).get()), b(Angle::cos(-angle).get());
const float u(point[0]),v(point[1]);
{
Point pnt(fmod(point[0],size[0]),fmod(point[1],size[1]));
while(pnt[0]<0)pnt[0]+=abs(size[0]);
{
Point pnt(fmod(point[0],size[0]),fmod(point[1],size[1]));
while(pnt[0]<0)pnt[0]+=abs(size[0]);
{
Point pnt(fmod(point[0]+size[0]*0.5,size[0]),fmod(point[1]+size[0]*0.5,size[1]));
while(pnt[0]<0)pnt[0]+=abs(size[0]);
{
Point pnt(fmod(point[0]+size[0]*0.5,size[0]),fmod(point[1]+size[0]*0.5,size[1]));
while(pnt[0]<0)pnt[0]+=abs(size[0]);
if(type==TYPE_SYMMETRIC)
{
float x(((radius2-radius1)*((radius1+(1.0f-radius2))*0.5)+radius1)*2.0f);
x-=0.5;
x*=2.0;
if(x<0)x=-sqrt(-x);else x=sqrt(x);
if(type==TYPE_SYMMETRIC)
{
float x(((radius2-radius1)*((radius1+(1.0f-radius2))*0.5)+radius1)*2.0f);
x-=0.5;
x*=2.0;
if(x<0)x=-sqrt(-x);else x=sqrt(x);