==== Building Машинный Выполнение (debug_x64) ====
Linking Машинный Выполнение
obj/x64/Debug/Color.o: In function `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace(unsigned long, unsigned long, char const*, unsigned long)':
Color.cpp:(.text._ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm[_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE10_M_replaceEmmPKcm]+0x24a): undefined reference to `std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::_M_replace_cold(char*, unsigned long, char const*, unsigned long, unsigned long)'
collect2: ошибка: выполнение ld завершилось с кодом возврата 1
make[1]: *** [Машинный Выполнение.make:162: ../Выполнение/Debug/Машинный] Ошибка 1
make: *** [Makefile:30: Машинный Выполнение] Ошибка 2
#include "Color.hpp"
using namespace Машинный::Графика::Цвета;
using namespace Машинный::Types;
Цвет::Цвет(byte красный, byte зелёный, byte синий)
{
}
#include "../../Инструменты/Строка.hpp"
bool Цвет::fromString(const std::string & hash)
{
if(!Машинный::Utils::String::CheckIsRGBHexCSS(hash))
return false;
auto к = std::stoi(hash.substr(1, 2), 0, 16),
з = std::stoi(hash.substr(3, 4), 0, 16),
с = std::stoi(hash.substr(5, 6), 0, 16);
set_красный( (byte)std::min( к , 255) );
set_зелёный( (byte)std::min( з , 255) );
set_синий( (byte)std::min( с , 255) );
return true;
}
bool Цвет::deserialize(const std::string & hash)
{
return false;
}
std::string Цвет::toString() const
{
return "Color(" + std::to_string(get_красный()) + ", "
+ std::to_string(get_зелёный()) + ", "
+ std::to_string(get_синий()) + ": " + toHex() + ");";
}
#include "../../Инструменты/Строка.hpp"
std::string Цвет::toHex() const
{
using namespace Машинный::Utils;
return "#" +
String::Hexify<byte>((byte)get_красный()) +
String::Hexify<byte>((byte)get_зелёный()) +
String::Hexify<byte>((byte)get_синий()) ;
}
std::string Цвет::serialize()
{
return "";
}
void Цвет::инвертировать()
{
set_красный(255 - get_красный());
set_зелёный(255 - get_зелёный());
set_синий(255 - get_синий());
}
#include "../../Определения/Platform.h"
#ifdef __Linux__
# define random_to(number) (random() % number + 1)
#elif defined(__Windows__)
# include <cmath>
# define random_to(number) (rand() % number + 1)
#endif
void Цвет::randomize()
{
set_красный(random_to(255));
set_зелёный(random_to(255));
set_синий(random_to(255));
}
#pragma once
#ifndef __COLOR__HPP__
#define __COLOR__HPP__
#include <string>
#include "../../Интерфейсы/Описание Объекта/ISerializable.hpp"
#include "../../Интерфейсы/Описание Объекта/IRandomize.hpp"
#include "../../Определения/Типы Данных.h"
#include "../../Графика/BaseGUISegmentClass.hpp"
namespace Машинный { namespace Графика {
/**
* @brief Объекты цветового пространства.
*
*/
namespace Цвета {
/**
* @brief Представление класса цвета.
*
* @tparam T
*/
class Цвет : public Машинный::Interfaces::ISerializable, public Машинный::Interfaces::IRandomize
{
ParameterGetSetTypedDefault(Машинный::Types::byte, красный, 0);
ParameterGetSetTypedDefault(Машинный::Types::byte, зелёный, 0);
ParameterGetSetTypedDefault(Машинный::Types::byte, синий, 0);
public:
Цвет(Машинный::Types::byte красный = 0, Машинный::Types::byte зелёный = 0, Машинный::Types::byte синий = 0);
virtual std::string toString() const override;
virtual bool fromString(const std::string &) override;
virtual std::string toHex() const override;
virtual std::string serialize() override;
virtual bool deserialize(const std::string &) override;
/**
* @brief Инверсия значений. 255 - cv.
*
*/
virtual inline void инвертировать();
virtual void randomize();
};
/**
* @brief HSV репрезентация цветового пространства.
*
* @tparam T
*/
template<typename T> class Color_HSV : public Машинный::Interfaces::ISerializable
{
public:
Color_HSV(T h, T s, T v);
virtual bool fromHashTag(const std::string & hashtag);
};
}}}
#endif // __COLOR__HPP__