aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/matplotlib/py2/extern/agg24-svn/include/agg_gamma_lut.h
diff options
context:
space:
mode:
authormaxim-yurchuk <maxim-yurchuk@yandex-team.com>2025-02-11 13:26:52 +0300
committermaxim-yurchuk <maxim-yurchuk@yandex-team.com>2025-02-11 13:57:59 +0300
commitf895bba65827952ed934b2b46f9a45e30a191fd2 (patch)
tree03260c906d9ec41cdc03e2a496b15d407459cec0 /contrib/python/matplotlib/py2/extern/agg24-svn/include/agg_gamma_lut.h
parent5f7060466f7b9707818c2091e1a25c14f33c3474 (diff)
downloadydb-f895bba65827952ed934b2b46f9a45e30a191fd2.tar.gz
Remove deps on pandas
<https://github.com/ydb-platform/ydb/pull/14418> <https://github.com/ydb-platform/ydb/pull/14419> \-- аналогичные правки в gh Хочу залить в обход синка, чтобы посмотреть удалится ли pandas в нашей gh репе через piglet commit_hash:abca127aa37d4dbb94b07e1e18cdb8eb5b711860
Diffstat (limited to 'contrib/python/matplotlib/py2/extern/agg24-svn/include/agg_gamma_lut.h')
-rw-r--r--contrib/python/matplotlib/py2/extern/agg24-svn/include/agg_gamma_lut.h305
1 files changed, 0 insertions, 305 deletions
diff --git a/contrib/python/matplotlib/py2/extern/agg24-svn/include/agg_gamma_lut.h b/contrib/python/matplotlib/py2/extern/agg24-svn/include/agg_gamma_lut.h
deleted file mode 100644
index ef1e38d8092..00000000000
--- a/contrib/python/matplotlib/py2/extern/agg24-svn/include/agg_gamma_lut.h
+++ /dev/null
@@ -1,305 +0,0 @@
-//----------------------------------------------------------------------------
-// Anti-Grain Geometry - Version 2.4
-// Copyright (C) 2002-2005 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
-//----------------------------------------------------------------------------
-
-#ifndef AGG_GAMMA_LUT_INCLUDED
-#define AGG_GAMMA_LUT_INCLUDED
-
-#include <math.h>
-#include "agg_basics.h"
-#include "agg_gamma_functions.h"
-
-namespace agg
-{
- template<class LoResT=int8u,
- class HiResT=int8u,
- unsigned GammaShift=8,
- unsigned HiResShift=8> class gamma_lut
- {
- public:
- typedef gamma_lut<LoResT, HiResT, GammaShift, HiResShift> self_type;
-
- enum gamma_scale_e
- {
- gamma_shift = GammaShift,
- gamma_size = 1 << gamma_shift,
- gamma_mask = gamma_size - 1
- };
-
- enum hi_res_scale_e
- {
- hi_res_shift = HiResShift,
- hi_res_size = 1 << hi_res_shift,
- hi_res_mask = hi_res_size - 1
- };
-
- ~gamma_lut()
- {
- pod_allocator<LoResT>::deallocate(m_inv_gamma, hi_res_size);
- pod_allocator<HiResT>::deallocate(m_dir_gamma, gamma_size);
- }
-
- gamma_lut() :
- m_gamma(1.0),
- m_dir_gamma(pod_allocator<HiResT>::allocate(gamma_size)),
- m_inv_gamma(pod_allocator<LoResT>::allocate(hi_res_size))
- {
- unsigned i;
- for(i = 0; i < gamma_size; i++)
- {
- m_dir_gamma[i] = HiResT(i << (hi_res_shift - gamma_shift));
- }
-
- for(i = 0; i < hi_res_size; i++)
- {
- m_inv_gamma[i] = LoResT(i >> (hi_res_shift - gamma_shift));
- }
- }
-
- gamma_lut(double g) :
- m_gamma(1.0),
- m_dir_gamma(pod_allocator<HiResT>::allocate(gamma_size)),
- m_inv_gamma(pod_allocator<LoResT>::allocate(hi_res_size))
- {
- gamma(g);
- }
-
- void gamma(double g)
- {
- m_gamma = g;
-
- unsigned i;
- for(i = 0; i < gamma_size; i++)
- {
- m_dir_gamma[i] = (HiResT)
- uround(pow(i / double(gamma_mask), m_gamma) * double(hi_res_mask));
- }
-
- double inv_g = 1.0 / g;
- for(i = 0; i < hi_res_size; i++)
- {
- m_inv_gamma[i] = (LoResT)
- uround(pow(i / double(hi_res_mask), inv_g) * double(gamma_mask));
- }
- }
-
- double gamma() const
- {
- return m_gamma;
- }
-
- HiResT dir(LoResT v) const
- {
- return m_dir_gamma[unsigned(v)];
- }
-
- LoResT inv(HiResT v) const
- {
- return m_inv_gamma[unsigned(v)];
- }
-
- private:
- gamma_lut(const self_type&);
- const self_type& operator = (const self_type&);
-
- double m_gamma;
- HiResT* m_dir_gamma;
- LoResT* m_inv_gamma;
- };
-
- //
- // sRGB support classes
- //
-
- // Optimized sRGB lookup table. The direct conversion (sRGB to linear)
- // is a straightforward lookup. The inverse conversion (linear to sRGB)
- // is implemented using binary search.
- template<class LinearType>
- class sRGB_lut_base
- {
- public:
- LinearType dir(int8u v) const
- {
- return m_dir_table[v];
- }
-
- int8u inv(LinearType v) const
- {
- // Unrolled binary search.
- int8u x = 0;
- if (v > m_inv_table[128]) x = 128;
- if (v > m_inv_table[x + 64]) x += 64;
- if (v > m_inv_table[x + 32]) x += 32;
- if (v > m_inv_table[x + 16]) x += 16;
- if (v > m_inv_table[x + 8]) x += 8;
- if (v > m_inv_table[x + 4]) x += 4;
- if (v > m_inv_table[x + 2]) x += 2;
- if (v > m_inv_table[x + 1]) x += 1;
- return x;
- }
-
- protected:
- LinearType m_dir_table[256];
- LinearType m_inv_table[256];
-
- // Only derived classes may instantiate.
- sRGB_lut_base()
- {
- }
- };
-
- // sRGB_lut - implements sRGB conversion for the various types.
- // Base template is undefined, specializations are provided below.
- template<class LinearType>
- class sRGB_lut;
-
- template<>
- class sRGB_lut<float> : public sRGB_lut_base<float>
- {
- public:
- sRGB_lut()
- {
- // Generate lookup tables.
- m_dir_table[0] = 0;
- m_inv_table[0] = 0;
- for (unsigned i = 1; i <= 255; ++i)
- {
- // Floating-point RGB is in range [0,1].
- m_dir_table[i] = float(sRGB_to_linear(i / 255.0));
- m_inv_table[i] = float(sRGB_to_linear((i - 0.5) / 255.0));
- }
- }
- };
-
- template<>
- class sRGB_lut<int16u> : public sRGB_lut_base<int16u>
- {
- public:
- sRGB_lut()
- {
- // Generate lookup tables.
- m_dir_table[0] = 0;
- m_inv_table[0] = 0;
- for (unsigned i = 1; i <= 255; ++i)
- {
- // 16-bit RGB is in range [0,65535].
- m_dir_table[i] = uround(65535.0 * sRGB_to_linear(i / 255.0));
- m_inv_table[i] = uround(65535.0 * sRGB_to_linear((i - 0.5) / 255.0));
- }
- }
- };
-
- template<>
- class sRGB_lut<int8u> : public sRGB_lut_base<int8u>
- {
- public:
- sRGB_lut()
- {
- // Generate lookup tables.
- m_dir_table[0] = 0;
- m_inv_table[0] = 0;
- for (unsigned i = 1; i <= 255; ++i)
- {
- // 8-bit RGB is handled with simple bidirectional lookup tables.
- m_dir_table[i] = uround(255.0 * sRGB_to_linear(i / 255.0));
- m_inv_table[i] = uround(255.0 * linear_to_sRGB(i / 255.0));
- }
- }
-
- int8u inv(int8u v) const
- {
- // In this case, the inverse transform is a simple lookup.
- return m_inv_table[v];
- }
- };
-
- // Common base class for sRGB_conv objects. Defines an internal
- // sRGB_lut object so that users don't have to.
- template<class T>
- class sRGB_conv_base
- {
- public:
- static T rgb_from_sRGB(int8u x)
- {
- return lut.dir(x);
- }
-
- static int8u rgb_to_sRGB(T x)
- {
- return lut.inv(x);
- }
-
- private:
- static sRGB_lut<T> lut;
- };
-
- // Definition of sRGB_conv_base::lut. Due to the fact that this a template,
- // we don't need to place the definition in a cpp file. Hurrah.
- template<class T>
- sRGB_lut<T> sRGB_conv_base<T>::lut;
-
- // Wrapper for sRGB-linear conversion.
- // Base template is undefined, specializations are provided below.
- template<class T>
- class sRGB_conv;
-
- template<>
- class sRGB_conv<float> : public sRGB_conv_base<float>
- {
- public:
- static float alpha_from_sRGB(int8u x)
- {
- return float(x / 255.0);
- }
-
- static int8u alpha_to_sRGB(float x)
- {
- if (x <= 0) return 0;
- else if (x >= 1) return 255;
- else return int8u(0.5 + x * 255);
- }
- };
-
- template<>
- class sRGB_conv<int16u> : public sRGB_conv_base<int16u>
- {
- public:
- static int16u alpha_from_sRGB(int8u x)
- {
- return (x << 8) | x;
- }
-
- static int8u alpha_to_sRGB(int16u x)
- {
- return x >> 8;
- }
- };
-
- template<>
- class sRGB_conv<int8u> : public sRGB_conv_base<int8u>
- {
- public:
- static int8u alpha_from_sRGB(int8u x)
- {
- return x;
- }
-
- static int8u alpha_to_sRGB(int8u x)
- {
- return x;
- }
- };
-}
-
-#endif