KWin
Loading...
Searching...
No Matches
colorlut.cpp
Go to the documentation of this file.
1/*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2022 Xaver Hugl <xaver.hugl@gmail.com>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8*/
9#include "colorlut.h"
10
11#include "colortransformation.h"
12
13namespace KWin
14{
15
16ColorLUT::ColorLUT(const std::shared_ptr<ColorTransformation> &transformation, size_t size)
17 : m_transformation(transformation)
18{
19 m_data.fill(0, 3 * size);
20 for (uint64_t i = 0; i < size; i++) {
21 const uint16_t index = (i * 0xFFFF) / size;
22 std::tie(m_data[i], m_data[size + i], m_data[size * 2 + i]) = transformation->transform(index, index, index);
23 }
24}
25
26uint16_t *ColorLUT::red() const
27{
28 return const_cast<uint16_t *>(m_data.constData());
29}
30
31uint16_t *ColorLUT::green() const
32{
33 return const_cast<uint16_t *>(m_data.constData() + size());
34}
35
36uint16_t *ColorLUT::blue() const
37{
38 return const_cast<uint16_t *>(m_data.constData() + 2 * size());
39}
40
41size_t ColorLUT::size() const
42{
43 return m_data.size() / 3;
44}
45
46std::shared_ptr<ColorTransformation> ColorLUT::transformation() const
47{
48 return m_transformation;
49}
50
51}
uint16_t * blue() const
Definition colorlut.cpp:36
uint16_t * red() const
Definition colorlut.cpp:26
size_t size() const
Definition colorlut.cpp:41
ColorLUT(const std::shared_ptr< ColorTransformation > &transformation, size_t size)
Definition colorlut.cpp:16
std::shared_ptr< ColorTransformation > transformation() const
Definition colorlut.cpp:46
uint16_t * green() const
Definition colorlut.cpp:31