/src/libmspub/src/lib/Dash.h
Line | Count | Source |
1 | | /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ |
2 | | /* |
3 | | * This file is part of the libmspub project. |
4 | | * |
5 | | * This Source Code Form is subject to the terms of the Mozilla Public |
6 | | * License, v. 2.0. If a copy of the MPL was not distributed with this |
7 | | * file, You can obtain one at http://mozilla.org/MPL/2.0/. |
8 | | */ |
9 | | |
10 | | #ifndef INCLUDED_DASH_H |
11 | | #define INCLUDED_DASH_H |
12 | | |
13 | | #include <vector> |
14 | | |
15 | | #include <boost/optional.hpp> |
16 | | |
17 | | namespace libmspub |
18 | | { |
19 | | enum DotStyle |
20 | | { |
21 | | RECT_DOT, |
22 | | ROUND_DOT |
23 | | }; |
24 | | enum MSPUBDashStyle |
25 | | { |
26 | | MSPUB_DS_SOLID, |
27 | | DASH_SYS, |
28 | | DOT_SYS, |
29 | | DASH_DOT_SYS, |
30 | | DASH_DOT_DOT_SYS, |
31 | | DOT_GEL, |
32 | | DASH_GEL, |
33 | | LONG_DASH_GEL, |
34 | | DASH_DOT_GEL, |
35 | | LONG_DASH_DOT_GEL, |
36 | | LONG_DASH_DOT_DOT_GEL |
37 | | }; |
38 | | struct Dot |
39 | | { |
40 | | boost::optional<double> m_length; |
41 | | unsigned m_count; |
42 | 14 | Dot(unsigned count) : m_length(), m_count(count) |
43 | 14 | { |
44 | 14 | } |
45 | 47 | Dot(unsigned count, double length) : m_length(length), m_count(count) |
46 | 47 | { |
47 | 47 | } |
48 | | }; |
49 | | struct Dash |
50 | | { |
51 | | double m_distance; |
52 | | DotStyle m_dotStyle; |
53 | | std::vector<Dot> m_dots; // empty vector is interpreted as solid line |
54 | 312 | Dash(double distance, DotStyle dotStyle) : m_distance(distance), |
55 | 312 | m_dotStyle(dotStyle), m_dots() |
56 | 312 | { |
57 | 312 | } |
58 | | }; |
59 | | bool operator!=(const Dot &lhs, const Dot &rhs); |
60 | | bool operator==(const Dot &lhs, const Dot &rhs); |
61 | | bool operator==(const Dash &lhs, const Dash &rhs); |
62 | | Dash getDash(MSPUBDashStyle style, unsigned shapeLineWidthInEmu, |
63 | | DotStyle dotStyle); |
64 | | } // namespace libmspub |
65 | | |
66 | | #endif /* INCLUDED_DASH_H */ |
67 | | /* vim:set shiftwidth=2 softtabstop=2 expandtab: */ |