Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions exercise/01/color.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#include "stdafx.h"
#include "color.h"


double const color::m_MinValue = 0.0;
double const color::m_MaxValue = 1.0;

color::color()
{
m_fRed = 0.0;
m_fGreen = 0.0;
m_fBlue = 0.0;
}

color::color(double red, double green, double blue)
{
set_red(red);
set_green(green);
set_blue(blue);
}

color::color(const color& Color)
{
m_fRed = Color.get_red();
m_fGreen = Color.get_green();
m_fBlue = Color.get_blue();
}

color::~color()
{
}

bool color::operator==(const color& second) const
{
return
((m_fRed == second.get_blue()) &&
(m_fGreen == second.get_green()) &&
(m_fBlue == second.get_blue()) );
}

double color::get_red() const
{
return m_fRed;
}

double color::get_green() const
{
return m_fGreen;
}

double color::get_blue() const
{
return m_fBlue;
}


void color::set_red(double red)
{
m_fRed = std::clamp(red, m_MinValue, m_MaxValue);
}

void color::set_green(double green)
{
m_fGreen = std::clamp(green, m_MinValue, m_MaxValue);
}

void color::set_blue(double blue)
{
m_fBlue = std::clamp(blue, m_MinValue, m_MaxValue);
}

COLORREF color::get_color_ref()
{
unsigned long red = (unsigned long)(m_fRed * 255);
unsigned long green = (unsigned long)(m_fGreen * 255);
unsigned long blue = (unsigned long)(m_fBlue * 255);

return RGB(red, green, blue);
}

double color::get_luminance()
{
return (double)(0.2126 * m_fRed + 0.7152 * m_fGreen + 0.0722 * m_fBlue);
}
32 changes: 32 additions & 0 deletions exercise/01/color.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
#pragma once

class color
{
public:
color();
color(double red, double green, double blue);
color(const color& Color);
~color();

bool operator==(const color& second) const;

double get_red() const;
double get_green() const;
double get_blue() const;

void set_red(double red);
void set_green(double green);
void set_blue(double blue);

COLORREF get_color_ref();
double get_luminance();

private:
double m_fRed;
double m_fGreen;
double m_fBlue;

static double const m_MinValue;
static double const m_MaxValue;
};

23 changes: 16 additions & 7 deletions exercise/01/color_test.cpp
Original file line number Diff line number Diff line change
@@ -1,16 +1,25 @@
#include "stdafx.h"
#include "color.h"
#include <windows.h> // RGB

#include <windows.h>

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace Microsoft { namespace VisualStudio { namespace CppUnitTestFramework {
template<> static std::wstring ToString(const color& c) {
std::wostringstream ss;
ss << c.get_red() << L',' << c.get_green() << L',' << c.get_blue();
return ss.str();
namespace Microsoft
{
namespace VisualStudio
{
namespace CppUnitTestFramework
{
template<> static std::wstring ToString(const color& c)
{
std::wostringstream ss;
ss << c.get_red() << L',' << c.get_green() << L',' << c.get_blue();
return ss.str();
}
}
}
}
}}}

namespace color_test
{
Expand Down
Loading