agg_gray8.h

来自「这是VCF框架的代码」· C头文件 代码 · 共 108 行

H
108
字号
//----------------------------------------------------------------------------// Anti-Grain Geometry - Version 2.1// Copyright (C) 2002-2004 Maxim Shemanarev (http://www.antigrain.com)//// Permission to copy, use, modify, sell and distribute this software // is granted provided this copyright notice appears in all copies. // This software is provided "as is" without express or implied// warranty, and with no claim as to its suitability for any purpose.////----------------------------------------------------------------------------// Contact: mcseem@antigrain.com//          mcseemagg@yahoo.com//          http://www.antigrain.com//----------------------------------------------------------------------------//// color type gray8////----------------------------------------------------------------------------#ifndef AGG_GRAY8_INCLUDED#define AGG_GRAY8_INCLUDED#include "agg_basics.h"#include "agg_color_rgba.h"#include "agg_color_rgba8.h"namespace agg{    //===================================================================gray8    struct gray8     {        int8u v;        int8u a;        //--------------------------------------------------------------------        gray8() {}        //--------------------------------------------------------------------        gray8(unsigned v_, unsigned a_=255) :            v(int8u(v_)), a(int8u(a_)) {}        //--------------------------------------------------------------------        gray8(const rgba& c) :            v(int8u((0.299*c.r + 0.587*c.g + 0.114*c.b) * 255.0 + 0.5)),            a(int8u(c.a*255.0)) {}        //--------------------------------------------------------------------        gray8(const rgba8& c) :            v((c.r*77 + c.g*150 + c.b*29) >> 8),            a(c.a) {}        //--------------------------------------------------------------------        void clear()        {            v = a = 0;        }        //--------------------------------------------------------------------        const gray8& transparent()        {            a = 0;            return *this;        }        //--------------------------------------------------------------------        void opacity(double a_)        {            if(a_ < 0.0) a_ = 0.0;            if(a_ > 1.0) a_ = 1.0;            a = int8u(a_ * 255.0);        }        //--------------------------------------------------------------------        double opacity() const        {            return double(a) / 255.0;        }        //--------------------------------------------------------------------        gray8 gradient(gray8 c, double k) const        {            gray8 ret;            int ik = int(k * 256);            ret.v = int8u(int(v) + (((int(c.v) - int(v)) * ik) >> 8));            ret.a = int8u(int(a) + (((int(c.a) - int(a)) * ik) >> 8));            return ret;        }        //--------------------------------------------------------------------        gray8 pre() const        {            return gray8((v*a) >> 8, a);        }        //--------------------------------------------------------------------        static gray8 no_color() { return gray8(0,0); }    };}#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?