Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



Shapes.cpp

 

#include "shapes.h"

#include <cmath>

#include <iostream>

const Color Color::blackColor = Color(0., 0., 0.);

const Color Color::whiteColor = Color(1., 1., 1.);

const Color Color::grayColor = Color(.5, .5, .5);

////////////////////////////////////////////////////////////////////////////////

ColorChannel::ColorChannel(double value)

: value(bounded(value, maxValue))

{}

ColorChannel::operator double() const

{

return value;

}

ColorChannel& ColorChannel::operator = (double v)

{

value = bounded(v, maxValue);

return *this;

}

Color::Color(ColorChannel red, ColorChannel green, ColorChannel blue,

ColorChannel alpha)

: red(red), green(green), blue(blue), alpha(alpha)

{}

DrawStyle::DrawStyle(Color lineColor, Color fillColor)

: lineColor(lineColor), fillColor(fillColor)

{}

Figure::~Figure() {}

DrawStyle& Figure::getStyle()

{

return style;

}

const DrawStyle& Figure::getStyle() const

{

return style;

}

Rectangle::Rectangle(const Vector2D& p1, const Vector2D& p2)

{

setBounds(p1, p2);

}

void Rectangle::setBounds(const Vector2D& p1, const Vector2D& p2)

{

center = (p1 + p2) * 0.5;

size = (p1 - p2).makePositive();

}

void Rectangle::move(const Vector2D& destination)

{

center = destination;

}

bool Rectangle::belongs(const Vector2D& p)

{

Vector2D p1 = center - size * 0.5;

Vector2D p2 = center + size * 0.5;

return ((p1[X] <= p[X]) && (p1[Y] <= p[Y]) &&

(p2[X] >= p[X]) && (p2[Y] >= p[Y]));

}

Додаток В-2. Розвиток ієрархії для рисування засобами Qt

 

Qtshapes.h

 

#ifndef QTSHAPES_H

#define QTSHAPES_H

#include <QPainter>

#include "shapes.h"

template < typename T >

class QtShape: public Shape< T >

{

public:

virtual void draw(QPainter & painter) const = 0;

virtual void select(bool sel) { selected = sel; }

virtual bool isSelected() const { return selected; }

protected:

bool selected;

};

typedef QtShape< Vector2D > QtShape2D;

class QtRectangle: public Rectangle, public QtShape2D

{

public:

QtRectangle(const Vector2D& p1, const Vector2D& p2);

virtual DrawStyle& getStyle();

virtual const DrawStyle& getStyle() const;

virtual Vector2D getCenter() const;

virtual Vector2D getSize() const;

virtual void setBounds(const Vector2D& p1, const Vector2D& p2);

virtual void move(const Vector2D& destination);

virtual bool belongs(const Vector2D& point);

virtual void draw(QPainter & painter) const;

virtual void select(bool sel);

virtual bool isSelected() const;

};

#endif // QTSHAPES_H




Переглядів: 350

<== попередня сторінка | наступна сторінка ==>
Shapes.h | Qtshapes.cpp

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.016 сек.