Thu, 21 Jun 2018 17:02:58 +0300
fixed compile errors in some cases, bezier curve now stores the segment count in each object (not editable yet)
1273
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
1 | /* |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
2 | * LDForge: LDraw parts authoring CAD |
1326 | 3 | * Copyright (C) 2013 - 2018 Teemu Piippo |
1273
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
4 | * |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
5 | * This program is free software: you can redistribute it and/or modify |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
6 | * it under the terms of the GNU General Public License as published by |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
7 | * the Free Software Foundation, either version 3 of the License, or |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
8 | * (at your option) any later version. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
9 | * |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
10 | * This program is distributed in the hope that it will be useful, |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
13 | * GNU General Public License for more details. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
14 | * |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
15 | * You should have received a copy of the GNU General Public License |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
17 | */ |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
18 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
19 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
20 | #pragma once |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
21 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
22 | /* |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
23 | * Range |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
24 | * |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
25 | * This class models a range of values (by default integers but anything with a |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
26 | * total order qualifies) The value type must be constructible with 0 and 1 for |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
27 | * the sake of default values. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
28 | * |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
29 | * The range may be iterated, in which case the first value yielded will be the |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
30 | * lower bound. Then, the iterator's value is incremented by a certain step |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
31 | * value, yielding the next value. This is continued until the iterator would |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
32 | * yield a value larger than upper bound. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
33 | * |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
34 | * A range can be constructed in a number of ways: |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
35 | * - Range<>() |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
36 | * default-construction, lower and upper bounds will be set to 0. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
37 | * - Range<>(first, end) |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
38 | * the range contains the values [first, end - 1]. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
39 | * Iteration of this range yields: first, first + 1, ..., end - 1. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
40 | * - Range<>(first, second, end) |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
41 | * the range contains the values [first, end - 1]. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
42 | * Iteration of this range yields: |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
43 | * - first |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
44 | * - first + (second - first) |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
45 | * - first + 2*(second - first) |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
46 | * - end - 1 (assuming that (end - 1) can be represented with |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
47 | * (first + n*(second - first)) with some n |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
48 | * |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
49 | * The function range() is provided to avoid the angle brackets for the common |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
50 | * use case where T = int. |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
51 | */ |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
52 | template<typename T = int> |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
53 | class Range |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
54 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
55 | struct Iterator |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
56 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
57 | const T baseValue; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
58 | const T stepValue; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
59 | int stepCount = 0; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
60 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
61 | Iterator() : |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
62 | baseValue {0}, |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
63 | stepValue {1}, |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
64 | stepCount {0} {} |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
65 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
66 | Iterator(T value, T stepValue, T stepCount) : |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
67 | baseValue {value}, |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
68 | stepValue {stepValue}, |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
69 | stepCount {stepCount} {} |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
70 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
71 | T operator*() const |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
72 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
73 | return baseValue + stepCount * stepValue; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
74 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
75 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
76 | bool operator!=(const Iterator& other) const |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
77 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
78 | return stepCount != other.stepCount; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
79 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
80 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
81 | Iterator& operator++() |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
82 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
83 | stepCount += 1; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
84 | return *this; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
85 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
86 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
87 | Iterator& operator--() |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
88 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
89 | stepCount -= 1; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
90 | return *this; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
91 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
92 | }; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
93 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
94 | public: |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
95 | Range() : |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
96 | beginValue {0}, |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
97 | endValue {0}, |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
98 | step {1} {} |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
99 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
100 | Range(T first, T second, T last) : |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
101 | beginValue {first}, |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
102 | endValue {last + (second - first)}, |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
103 | step {second - first} {} |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
104 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
105 | Iterator begin() const |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
106 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
107 | return {beginValue, step, 0}; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
108 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
109 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
110 | bool contains(T value) const |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
111 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
112 | return value >= beginValue and value < endValue; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
113 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
114 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
115 | Iterator end() const |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
116 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
117 | return {beginValue, step, (endValue - beginValue) / step}; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
118 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
119 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
120 | bool overlaps(const Range<T>& other) const |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
121 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
122 | return contains(other.beginValue) or contains(other.endValue - 1); |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
123 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
124 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
125 | bool operator==(const Range<T>& other) const |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
126 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
127 | return beginValue == other.beginValue |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
128 | and endValue == other.endValue |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
129 | and step == other.step; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
130 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
131 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
132 | bool operator!=(Range<T> const& other) const |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
133 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
134 | return not operator==(other); |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
135 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
136 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
137 | private: |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
138 | T beginValue; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
139 | T endValue; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
140 | T step; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
141 | }; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
142 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
143 | /* |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
144 | * Returns a range from [first, second, ..., last] |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
145 | */ |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
146 | template<typename T = int> |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
147 | Range<T> range(T first, T second, T last) |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
148 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
149 | return {first, second, last}; |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
150 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
151 | |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
152 | /* |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
153 | * Returns a range from [first, first + 1, ..., end - 1] |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
154 | */ |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
155 | /* |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
156 | template<typename T = int> |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
157 | Range<T> range(T end) |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
158 | { |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
159 | return range<T>(0, 1, end - 1); |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
160 | } |
900f1dfae46b
Implemented row moving in the model and replaced swapping with it
Santeri Piippo
parents:
diff
changeset
|
161 | */ |