Line data Source code
1 : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* libmspub
3 : * Version: MPL 1.1 / GPLv2+ / LGPLv2+
4 : *
5 : * The contents of this file are subject to the Mozilla Public License Version
6 : * 1.1 (the "License"); you may not use this file except in compliance with
7 : * the License or as specified alternatively below. You may obtain a copy of
8 : * the License at http://www.mozilla.org/MPL/
9 : *
10 : * Software distributed under the License is distributed on an "AS IS" basis,
11 : * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
12 : * for the specific language governing rights and limitations under the
13 : * License.
14 : *
15 : * Major Contributor(s):
16 : * Copyright (C) 2012 Brennan Vincent <brennanv@email.arizona.edu>
17 : *
18 : * All Rights Reserved.
19 : *
20 : * For minor contributions see the git repository.
21 : *
22 : * Alternatively, the contents of this file may be used under the terms of
23 : * either the GNU General Public License Version 2 or later (the "GPLv2+"), or
24 : * the GNU Lesser General Public License Version 2 or later (the "LGPLv2+"),
25 : * in which case the provisions of the GPLv2+ or the LGPLv2+ are applicable
26 : * instead of those above.
27 : */
28 :
29 : #ifndef __DASH_H__
30 : #define __DASH_H__
31 :
32 : #include <boost/optional.hpp>
33 : #include <vector>
34 :
35 : namespace libmspub
36 : {
37 : enum DotStyle
38 : {
39 : RECT_DOT,
40 : ROUND_DOT
41 : };
42 : enum MSPUBDashStyle
43 : {
44 : MSPUB_DS_SOLID,
45 : DASH_SYS,
46 : DOT_SYS,
47 : DASH_DOT_SYS,
48 : DASH_DOT_DOT_SYS,
49 : DOT_GEL,
50 : DASH_GEL,
51 : LONG_DASH_GEL,
52 : DASH_DOT_GEL,
53 : LONG_DASH_DOT_GEL,
54 : LONG_DASH_DOT_DOT_GEL
55 : };
56 0 : struct Dot
57 : {
58 : boost::optional<double> m_length;
59 : unsigned m_count;
60 0 : Dot(unsigned count) : m_length(), m_count(count)
61 : {
62 0 : }
63 0 : Dot(unsigned count, double length) : m_length(length), m_count(count)
64 : {
65 0 : }
66 : };
67 0 : struct Dash
68 : {
69 : double m_distance;
70 : DotStyle m_dotStyle;
71 : std::vector<Dot> m_dots; // empty vector is interpreted as solid line
72 0 : Dash(double distance, DotStyle dotStyle) : m_distance(distance),
73 0 : m_dotStyle(dotStyle), m_dots()
74 : {
75 0 : }
76 : };
77 : bool operator!=(const Dot &lhs, const Dot &rhs);
78 : bool operator==(const Dot &lhs, const Dot &rhs);
79 : bool operator==(const Dash &lhs, const Dash &rhs);
80 : Dash getDash(MSPUBDashStyle style, unsigned shapeLineWidthInEmu,
81 : DotStyle dotStyle);
82 : } // namespace libmspub
83 :
84 : #endif /* __DASH_H__ */
85 : /* vim:set shiftwidth=2 softtabstop=2 expandtab: */
|