Chrysalis - Project Composer
Toggle main menu visibility
Loading...
Searching...
No Matches
composer.h
Go to the documentation of this file.
1
#ifndef CHRYSALIS_COMPOSER_H
2
#define CHRYSALIS_COMPOSER_H
3
4
#include "Project.h"
5
#include "arguments/BinaryFunctionArgument.h"
6
7
#define _min_(operand1, operand2) std::make_unique<BinaryFunctionArgument::Min>(operand1, operand2)
8
#define _ray_(origin, angle) Proxy::Ray(_point_(origin), angle)
9
#define _point_(pointName) Proxy::Name(PointName::pointName)
10
#define _param_(parameterName) std::make_unique<ParameterArgument>(project_->getParameters()->get(ParameterName::parameterName))
11
#define _option_(optionName) Proxy::Name(Options::optionName)
12
#define _outline_(outlineName) Proxy::Outline(OutlineName::outlineName)
13
#define _expression_(expressionName) Proxy::Name(Expressions::expressionName)
14
15
#define up 90
16
#define right 0
17
#define left 180
18
#define down 270
19
20
#define _angle_(from, to) std::make_unique<VectorFunctionArgument::Angle>(_point_(from), _point_(to))
21
#define _length_(from, to) std::make_unique<VectorFunctionArgument::Length>(_point_(from), _point_(to))
22
23
#define VECTOR_2(angle, length) Proxy::Vector(angle, length)
24
#define VECTOR_3(origin, angle, length) Proxy::Vector(_point_(origin), angle, length)
25
26
#define _vector_(...) BOOST_PP_OVERLOAD(VECTOR_, __VA_ARGS__)(__VA_ARGS__)
27
28
#define REPEAT_SEGMENT(d, data, elem) _segment_ elem
29
#define segments(...) new args::container(std::initializer_list<args::line*>{ \
30
BOOST_PP_SEQ_ENUM(BOOST_PP_SEQ_TRANSFORM(REPEAT_SEGMENT, ~, BOOST_PP_VARIADIC_TO_SEQ(__VA_ARGS__))) \
31
})
32
#define _segment_(from, to) Proxy::Segment(new args::segment(_point_(from), _point_(to)))
33
34
#define DART_2(from, to) seg(_segment_(from, to))
35
#define DART_3(origin, angle, length) vec(_vector_(origin, angle, length))
36
37
#define dart(...) BOOST_PP_OVERLOAD(DART_, __VA_ARGS__)(__VA_ARGS__)
38
#define edge(from, to) Proxy::Segment(_segment_(from, to))
39
40
namespace
Chrysalis
{
41
args::number
operator
""
_(
long
double
number);
42
43
std::unique_ptr<BinaryFunctionArgument>
operator+
(args::number&& a, args::number&& b);
44
std::unique_ptr<BinaryFunctionArgument>
operator-
(args::number&& a, args::number&& b);
45
std::unique_ptr<BinaryFunctionArgument>
operator*
(args::number&& a, args::number&& b);
46
std::unique_ptr<BinaryFunctionArgument>
operator/
(args::number&& a, args::number&& b);
47
48
std::unique_ptr<BinaryFunctionArgument>
operator+
(args::number&& a,
double
b);
49
std::unique_ptr<BinaryFunctionArgument>
operator-
(args::number&& a,
double
b);
50
std::unique_ptr<BinaryFunctionArgument>
operator*
(args::number&& a,
double
b);
51
std::unique_ptr<BinaryFunctionArgument>
operator/
(args::number&& a,
double
b);
52
53
std::unique_ptr<BinaryFunctionArgument>
operator+
(
double
a, args::number&& b);
54
std::unique_ptr<BinaryFunctionArgument>
operator-
(
double
a, args::number&& b);
55
std::unique_ptr<BinaryFunctionArgument>
operator*
(
double
a, args::number&& b);
56
std::unique_ptr<BinaryFunctionArgument>
operator/
(
double
a, args::number&& b);
57
58
const
args::condition*
operator<
(args::number&& a, args::number&& b);
59
}
60
61
#endif
//CHRYSALIS_COMPOSER_H
Chrysalis
Definition
composer.h:40
Chrysalis::operator-
std::unique_ptr< BinaryFunctionArgument > operator-(args::number &&a, args::number &&b)
Definition
composer.cpp:15
Chrysalis::operator*
std::unique_ptr< BinaryFunctionArgument > operator*(args::number &&a, args::number &&b)
Definition
composer.cpp:19
Chrysalis::operator<
const args::condition * operator<(args::number &&a, args::number &&b)
Definition
composer.cpp:59
Chrysalis::operator+
std::unique_ptr< BinaryFunctionArgument > operator+(args::number &&a, args::number &&b)
Definition
composer.cpp:11
Chrysalis::operator/
std::unique_ptr< BinaryFunctionArgument > operator/(args::number &&a, args::number &&b)
Definition
composer.cpp:23
pattern
composer
include
composer.h
Generated by
1.17.0