├── LICENSE.txt ├── README.txt ├── doc ├── annotated.html ├── bc_s.png ├── classes.html ├── classpsimpl_1_1_polyline_simplification-members.html ├── classpsimpl_1_1_polyline_simplification.html ├── classpsimpl_1_1_polyline_simplification_1_1_d_p_helper-members.html ├── classpsimpl_1_1_polyline_simplification_1_1_d_p_helper.html ├── classpsimpl_1_1util_1_1scoped__array-members.html ├── classpsimpl_1_1util_1_1scoped__array.html ├── closed.png ├── dir_f9993e17f36afaef24d7a404e932861e.html ├── dirs.html ├── doxygen.css ├── doxygen.png ├── files.html ├── ftv2blank.png ├── ftv2doc.png ├── ftv2folderclosed.png ├── ftv2folderopen.png ├── ftv2lastnode.png ├── ftv2link.png ├── ftv2mlastnode.png ├── ftv2mnode.png ├── ftv2node.png ├── ftv2plastnode.png ├── ftv2pnode.png ├── ftv2splitbar.png ├── ftv2vertline.png ├── functions.html ├── functions_func.html ├── functions_type.html ├── functions_vars.html ├── index.html ├── jquery.js ├── namespacemembers.html ├── namespacemembers_func.html ├── namespacepsimpl.html ├── namespacepsimpl_1_1math.html ├── namespacepsimpl_1_1util.html ├── namespaces.html ├── nav_f.png ├── nav_h.png ├── navtree.css ├── navtree.js ├── open.png ├── psimpl_8h.html ├── psimpl_8h_source.html ├── psimpl_dp.png ├── psimpl_la.png ├── psimpl_np.png ├── psimpl_op.png ├── psimpl_pd.png ├── psimpl_pos_error.png ├── psimpl_rd.png ├── psimpl_rw.png ├── resize.js ├── structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_key_info-members.html ├── structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_key_info.html ├── structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly-members.html ├── structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly.html ├── structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly_alt-members.html ├── structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly_alt.html ├── structpsimpl_1_1math_1_1_statistics-members.html ├── structpsimpl_1_1math_1_1_statistics.html ├── tab_a.png ├── tab_b.png ├── tab_h.png ├── tab_s.png └── tabs.css └── psimpl.h /README.txt: -------------------------------------------------------------------------------- 1 | psimpl - generic n-dimensional polyline simplification 2 | Copyright (C) 2010-2011 Elmar de Koning, edekoning@gmail.com 3 | -------------------------------------------------------------------------------- 4 | 28-09-2010 - Initial version 5 | 23-10-2010 - Changed license from CPOL to MPL 6 | 26-10-2010 - Clarified input (type) requirements, and changed the 7 | behavior of the algorithms under invalid input. 8 | 01-12-2010 - Added the nth point, perpendicular distance and Reumann-Witkam 9 | routines; moved all functions related to distance calculations to 10 | the math namespace 11 | 10-12-2010 - Fixed a bug in the perpendicular distance routine 12 | 27-02-2011 - Added Opheim simplification, and functions for computing positional 13 | errors due to simplification; renamed simplify_douglas_peucker_alt 14 | to simplify_douglas_peucker_n 15 | 18-06-2011 Added Lang simplification; fixed divide by zero bug when using 16 | integers; fixed a bug where incorrect output iterators were 17 | returned under invalid input; fixed a bug in douglas_peucker_n 18 | where an incorrect number of points could be returned; fixed a bug 19 | in compute_positional_errors2 that required the output and input 20 | iterator types to be the same; fixed a bug in 21 | compute_positional_error_statistics where invalid statistics could 22 | be returned under questionable input; documented input iterator 23 | requirements for each algorithm; miscellaneous refactoring of most 24 | algorithms. 25 | -------------------------------------------------------------------------------- 26 | 'psimpl' is licensed under the Mozilla Public License Version 1.1 (MPL), see 27 | the accompanying LICENSE.txt file. Alternatively a copy of this license may be 28 | obtained from http://www.mozilla.org/MPL/. 29 | -------------------------------------------------------------------------------- 30 | 'psimpl' is hosted at SourceForge: http://sourceforge.net/projects/psimpl/ and 31 | has a dedicated website: http://psimpl.sf.net 32 | Originally psimpl was released as part of the article 'Polyline Simplification' 33 | at The Code Project: 34 | http://www.codeproject.com/KB/recipes/PolylineSimplification.aspx 35 | 36 | ================================================================================ 37 | 38 | 'psimpl' is a c++ polyline simplification library that is generic, easy to use, 39 | and supports the following algorithms: 40 | 41 | Simplification 42 | * Nth point - A naive algorithm that keeps only each nth point 43 | * Distance between points - Removes successive points that are clustered 44 | together 45 | * Perpendicular distance - Removes points based on their distance to the line 46 | segment defined by their left and right neighbors 47 | * Reumann-Witkam - Shifts a strip along the polyline and removes points that 48 | fall outside 49 | * Opheim - A constrained version of Reumann-Witkam 50 | * Lang - Similar to the Perpendicular distance routine, but instead of looking 51 | only at direct neighbors, an entire search region is processed 52 | * Douglas-Peucker - A classic simplification algorithm that provides an 53 | excellent approximation of the original line 54 | * A variation on the Douglas-Peucker algorithm - Slower, but yields better 55 | results at lower resolutions 56 | 57 | Errors 58 | * positional error - Distance of each polyline point to its simplification 59 | 60 | All the algorithms have been implemented in a single standalone C++ header 61 | using an STL-style interface that operates on input and output iterators. 62 | Polylines can be of any dimension, and defined using floating point or signed 63 | integer data types. 64 | 65 | ================================================================================ 66 | 67 | The demo package contains a win32 demo application for 'psimpl'. The demo 68 | application allows you to experiment with the different simplification 69 | algorithms. It can generate pseudo random 2D-polylines of up to 10.000.000 70 | vertices in various types of containers. The boundingbox of the generated 71 | polyline is always 2n x n, where n is the amount of vertices of the generated 72 | polyline. Use this fact to specify a proper distance tolerance. 73 | 74 | Internally, the generated and simplified polyline are always stored in a 75 | QVector. Just before simplification, it is converted to the selected 76 | container type. Afterwards, this temporary container is destructed. Normally you 77 | won't notice this, but it seems that creating and destructing a 78 | std::list(10.000.000) can take a rather long time. The resulting performance 79 | measurements never include these conversion steps. I chose this approach as it 80 | allowed me to quickly add new container types. 81 | 82 | Note that the entire application is single threaded (sorry for being lazy), 83 | meaning it could go 'not responding' during a long running simplification. 84 | 85 | The demo application was made using Qt 4.7.3, Qt Creator 2.1.0 and Visual Studio 86 | 2008 Express. Complete source code is included. 87 | 88 | ================================================================================ 89 | 90 | If you decide to use my code for your (commercial) project, let me know! I would 91 | love to hear where my code ends up and why you chose to use it! If possible, a 92 | voluntary donation to my PayPal account (edekoning@gmail.com) would be much 93 | appreciated. 94 | 95 | Regards, 96 | Elmar de Koning 97 | edekoning@gmail.com 98 | -------------------------------------------------------------------------------- /doc/annotated.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Class List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 |
62 |
Class List
63 |
64 |
65 |
Here are the classes, structs, unions and interfaces with brief descriptions:
66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelperDouglas-Peucker approximation helper class
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::KeyInfoDefines the key of a polyline
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >Provides various simplification algorithms for n-dimensional simple polylines
psimpl::util::scoped_array< T >A smart pointer for holding a dynamically allocated array
psimpl::math::StatisticsPOD structure for storing several statistical values
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyDefines a sub polyline
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAltDefines a sub polyline including its key
74 |
75 |
76 | 83 | 84 | 85 | 86 | -------------------------------------------------------------------------------- /doc/bc_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/bc_s.png -------------------------------------------------------------------------------- /doc/classes.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Class Index 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 |
62 |
Class Index
63 |
64 |
65 |
D | K | P | S
66 | 67 |
  D  
68 |
PolylineSimplification::DPHelper::KeyInfo (psimpl)   PolylineSimplification (psimpl)   scoped_array (psimpl::util)   PolylineSimplification::DPHelper::SubPoly (psimpl)   
PolylineSimplification::DPHelper (psimpl)   
  P  
69 |
  S  
70 |
Statistics (psimpl::math)   PolylineSimplification::DPHelper::SubPolyAlt (psimpl)   
  K  
71 |
D | K | P | S
72 |
73 |
74 | 81 | 82 | 83 | 84 | -------------------------------------------------------------------------------- /doc/classpsimpl_1_1_polyline_simplification-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Member List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 |
62 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > Member List
63 |
64 |
65 | This is the complete list of members for psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >, including all inherited members. 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
Advance(InputIterator &it, diff_type n=1)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline, private]
AdvanceCopy(InputIterator it, diff_type n=1)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline, private]
Backward(InputIterator &it, unsigned &remaining)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline, private]
ComputePositionalErrors2(InputIterator original_first, InputIterator original_last, InputIterator simplified_first, InputIterator simplified_last, OutputIterator result, bool *valid=0)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
ComputePositionalErrorStatistics(InputIterator original_first, InputIterator original_last, InputIterator simplified_first, InputIterator simplified_last, bool *valid=0)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
CopyKey(InputIterator key, OutputIterator &result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline, private]
CopyKeyAdvance(InputIterator &key, OutputIterator &result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline, private]
diff_type typedefpsimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [private]
DouglasPeucker(InputIterator first, InputIterator last, value_type tol, OutputIterator result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
DouglasPeuckerN(InputIterator first, InputIterator last, unsigned count, OutputIterator result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
Forward(InputIterator &it, unsigned n, unsigned &remaining)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline, private]
Lang(InputIterator first, InputIterator last, value_type tol, unsigned look_ahead, OutputIterator result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
NthPoint(InputIterator first, InputIterator last, unsigned n, OutputIterator result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
Opheim(InputIterator first, InputIterator last, value_type min_tol, value_type max_tol, OutputIterator result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
PerpendicularDistance(InputIterator first, InputIterator last, value_type tol, unsigned repeat, OutputIterator result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
PerpendicularDistance(InputIterator first, InputIterator last, value_type tol, OutputIterator result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
ptr_diff_type typedefpsimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [private]
RadialDistance(InputIterator first, InputIterator last, value_type tol, OutputIterator result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
ReumannWitkam(InputIterator first, InputIterator last, value_type tol, OutputIterator result)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [inline]
value_type typedefpsimpl::PolylineSimplification< DIM, InputIterator, OutputIterator > [private]
87 |
88 | 95 | 96 | 97 | 98 | -------------------------------------------------------------------------------- /doc/classpsimpl_1_1_polyline_simplification_1_1_d_p_helper-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Member List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 |
62 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper Member List
63 |
64 |
65 | This is the complete list of members for psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper, including all inherited members. 66 | 67 | 68 | 69 |
Approximate(const value_type *coords, ptr_diff_type coordCount, value_type tol, unsigned char *keys)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper [inline, static]
ApproximateN(const value_type *coords, ptr_diff_type coordCount, unsigned countTol, unsigned char *keys)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper [inline, static]
FindKey(const value_type *coords, ptr_diff_type first, ptr_diff_type last)psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper [inline, private, static]
70 |
71 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /doc/classpsimpl_1_1util_1_1scoped__array-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Member List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 |
62 |
psimpl::util::scoped_array< T > Member List
63 |
64 |
65 | This is the complete list of members for psimpl::util::scoped_array< T >, including all inherited members. 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 |
arraypsimpl::util::scoped_array< T > [private]
get() const psimpl::util::scoped_array< T > [inline]
operator=(const scoped_array &)psimpl::util::scoped_array< T > [private]
operator[](int offset)psimpl::util::scoped_array< T > [inline]
operator[](int offset) const psimpl::util::scoped_array< T > [inline]
scoped_array(unsigned n)psimpl::util::scoped_array< T > [inline]
scoped_array(const scoped_array &)psimpl::util::scoped_array< T > [private]
swap(scoped_array &b)psimpl::util::scoped_array< T > [inline]
~scoped_array()psimpl::util::scoped_array< T > [inline]
76 |
77 | 84 | 85 | 86 | 87 | -------------------------------------------------------------------------------- /doc/classpsimpl_1_1util_1_1scoped__array.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: psimpl::util::scoped_array< T > Class Template Reference 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 | 65 |
66 |
psimpl::util::scoped_array< T > Class Template Reference
67 |
68 |
69 | 70 |

A smart pointer for holding a dynamically allocated array. 71 | More...

72 | 73 |

#include <psimpl.h>

74 | 75 |

List of all members.

76 | 77 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 87 | 88 | 89 | 91 | 92 |

78 | Public Member Functions

 scoped_array (unsigned n)
 ~scoped_array ()
T & operator[] (int offset)
const T & operator[] (int offset) const
T * get () const
void swap (scoped_array &b)

86 | Private Member Functions

 scoped_array (const scoped_array &)
scoped_arrayoperator= (const scoped_array &)

90 | Private Attributes

T * array
93 |

Detailed Description

94 |

template<typename T>
95 | class psimpl::util::scoped_array< T >

96 | 97 |

A smart pointer for holding a dynamically allocated array.

98 |

Similar to boost::scoped_array.

99 |

Constructor & Destructor Documentation

100 | 101 |
102 |
103 |
104 | template<typename T>
105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 |
psimpl::util::scoped_array< T >::scoped_array (unsigned n) [inline]
114 |
115 |
116 | 117 |
118 |
119 | 120 |
121 |
122 |
123 | template<typename T>
124 | 125 | 126 | 127 | 128 | 129 | 130 | 131 |
psimpl::util::scoped_array< T >::~scoped_array () [inline]
132 |
133 |
134 | 135 |
136 |
137 | 138 |
139 |
140 |
141 | template<typename T>
142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 |
psimpl::util::scoped_array< T >::scoped_array (const scoped_array< T > & ) [private]
151 |
152 |
153 | 154 |
155 |
156 |

Member Function Documentation

157 | 158 |
159 |
160 |
161 | template<typename T>
162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 |
T* psimpl::util::scoped_array< T >::get () const [inline]
170 |
171 |
172 | 173 |
174 |
175 | 176 |
177 |
178 |
179 | template<typename T>
180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 |
scoped_array& psimpl::util::scoped_array< T >::operator= (const scoped_array< T > & ) [private]
189 |
190 |
191 | 192 |
193 |
194 | 195 |
196 |
197 |
198 | template<typename T>
199 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 |
const T& psimpl::util::scoped_array< T >::operator[] (int offset) const [inline]
208 |
209 |
210 | 211 |
212 |
213 | 214 |
215 |
216 |
217 | template<typename T>
218 | 219 | 220 | 221 | 222 | 223 | 224 | 225 | 226 |
T& psimpl::util::scoped_array< T >::operator[] (int offset) [inline]
227 |
228 |
229 | 230 |
231 |
232 | 233 |
234 |
235 |
236 | template<typename T>
237 | 238 | 239 | 240 | 241 | 242 | 243 | 244 | 245 |
void psimpl::util::scoped_array< T >::swap (scoped_array< T > & b) [inline]
246 |
247 |
248 | 249 |
250 |
251 |

Member Data Documentation

252 | 253 |
254 |
255 |
256 | template<typename T>
257 | 258 | 259 | 260 | 261 |
T* psimpl::util::scoped_array< T >::array [private]
262 |
263 |
264 | 265 |
266 |
267 |
The documentation for this class was generated from the following file:
    268 |
  • D:/Code/Projects/psimpl/trunk/lib/psimpl.h
  • 269 |
270 |
271 |
272 | 282 | 283 | 284 | 285 | -------------------------------------------------------------------------------- /doc/closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/closed.png -------------------------------------------------------------------------------- /doc/dir_f9993e17f36afaef24d7a404e932861e.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: D:/Code/Projects/psimpl/trunk/lib/ Directory Reference 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 |
40 |
41 | 45 |
47 |
48 |
49 | 52 |
53 |
54 |
55 |
lib Directory Reference
56 |
57 |
58 | 59 | 61 | 62 |

60 | Files

file  psimpl.h [code]
63 |
64 |
65 | 73 | 74 | 75 | 76 | -------------------------------------------------------------------------------- /doc/dirs.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Directories 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 |
40 |
41 | 45 |
47 |
48 |
49 | 52 |
53 |
54 |
55 |
Directories
56 |
57 |
58 |
This directory hierarchy is sorted roughly, but not completely, alphabetically:
    59 |
  • lib
  • 60 |
61 |
62 |
63 | 70 | 71 | 72 | 73 | -------------------------------------------------------------------------------- /doc/doxygen.css: -------------------------------------------------------------------------------- 1 | /* The standard CSS for doxygen */ 2 | 3 | body, table, div, p, dl { 4 | font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; 5 | font-size: 12px; 6 | } 7 | 8 | /* @group Heading Levels */ 9 | 10 | h1 { 11 | font-size: 150%; 12 | } 13 | 14 | .title { 15 | font-size: 150%; 16 | font-weight: bold; 17 | margin: 10px 2px; 18 | } 19 | 20 | h2 { 21 | font-size: 120%; 22 | } 23 | 24 | h3 { 25 | font-size: 100%; 26 | } 27 | 28 | dt { 29 | font-weight: bold; 30 | } 31 | 32 | div.multicol { 33 | -moz-column-gap: 1em; 34 | -webkit-column-gap: 1em; 35 | -moz-column-count: 3; 36 | -webkit-column-count: 3; 37 | } 38 | 39 | p.startli, p.startdd, p.starttd { 40 | margin-top: 2px; 41 | } 42 | 43 | p.endli { 44 | margin-bottom: 0px; 45 | } 46 | 47 | p.enddd { 48 | margin-bottom: 4px; 49 | } 50 | 51 | p.endtd { 52 | margin-bottom: 2px; 53 | } 54 | 55 | /* @end */ 56 | 57 | caption { 58 | font-weight: bold; 59 | } 60 | 61 | span.legend { 62 | font-size: 70%; 63 | text-align: center; 64 | } 65 | 66 | h3.version { 67 | font-size: 90%; 68 | text-align: center; 69 | } 70 | 71 | div.qindex, div.navtab{ 72 | background-color: #EBEFF6; 73 | border: 1px solid #A3B4D7; 74 | text-align: center; 75 | margin: 2px; 76 | padding: 2px; 77 | } 78 | 79 | div.qindex, div.navpath { 80 | width: 100%; 81 | line-height: 140%; 82 | } 83 | 84 | div.navtab { 85 | margin-right: 15px; 86 | } 87 | 88 | /* @group Link Styling */ 89 | 90 | a { 91 | color: #3D578C; 92 | font-weight: normal; 93 | text-decoration: none; 94 | } 95 | 96 | .contents a:visited { 97 | color: #4665A2; 98 | } 99 | 100 | a:hover { 101 | text-decoration: underline; 102 | } 103 | 104 | a.qindex { 105 | font-weight: bold; 106 | } 107 | 108 | a.qindexHL { 109 | font-weight: bold; 110 | background-color: #9CAFD4; 111 | color: #ffffff; 112 | border: 1px double #869DCA; 113 | } 114 | 115 | .contents a.qindexHL:visited { 116 | color: #ffffff; 117 | } 118 | 119 | a.el { 120 | font-weight: bold; 121 | } 122 | 123 | a.elRef { 124 | } 125 | 126 | a.code { 127 | color: #4665A2; 128 | } 129 | 130 | a.codeRef { 131 | color: #4665A2; 132 | } 133 | 134 | /* @end */ 135 | 136 | dl.el { 137 | margin-left: -1cm; 138 | } 139 | 140 | .fragment { 141 | font-family: monospace, fixed; 142 | font-size: 105%; 143 | } 144 | 145 | pre.fragment { 146 | border: 1px solid #C4CFE5; 147 | background-color: #FBFCFD; 148 | padding: 4px 6px; 149 | margin: 4px 8px 4px 2px; 150 | overflow: auto; 151 | word-wrap: break-word; 152 | font-size: 9pt; 153 | line-height: 125%; 154 | } 155 | 156 | div.ah { 157 | background-color: black; 158 | font-weight: bold; 159 | color: #ffffff; 160 | margin-bottom: 3px; 161 | margin-top: 3px; 162 | padding: 0.2em; 163 | border: solid thin #333; 164 | border-radius: 0.5em; 165 | -webkit-border-radius: .5em; 166 | -moz-border-radius: .5em; 167 | box-shadow: 2px 2px 3px #999; 168 | -webkit-box-shadow: 2px 2px 3px #999; 169 | -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; 170 | background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); 171 | background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); 172 | } 173 | 174 | div.groupHeader { 175 | margin-left: 16px; 176 | margin-top: 12px; 177 | font-weight: bold; 178 | } 179 | 180 | div.groupText { 181 | margin-left: 16px; 182 | font-style: italic; 183 | } 184 | 185 | body { 186 | background: white; 187 | color: black; 188 | margin: 0; 189 | } 190 | 191 | div.contents { 192 | margin-top: 10px; 193 | margin-left: 10px; 194 | margin-right: 5px; 195 | } 196 | 197 | td.indexkey { 198 | background-color: #EBEFF6; 199 | font-weight: bold; 200 | border: 1px solid #C4CFE5; 201 | margin: 2px 0px 2px 0; 202 | padding: 2px 10px; 203 | } 204 | 205 | td.indexvalue { 206 | background-color: #EBEFF6; 207 | border: 1px solid #C4CFE5; 208 | padding: 2px 10px; 209 | margin: 2px 0px; 210 | } 211 | 212 | tr.memlist { 213 | background-color: #EEF1F7; 214 | } 215 | 216 | p.formulaDsp { 217 | text-align: center; 218 | } 219 | 220 | img.formulaDsp { 221 | 222 | } 223 | 224 | img.formulaInl { 225 | vertical-align: middle; 226 | } 227 | 228 | div.center { 229 | text-align: center; 230 | margin-top: 0px; 231 | margin-bottom: 0px; 232 | padding: 0px; 233 | } 234 | 235 | div.center img { 236 | border: 0px; 237 | } 238 | 239 | address.footer { 240 | text-align: right; 241 | padding-right: 12px; 242 | } 243 | 244 | img.footer { 245 | border: 0px; 246 | vertical-align: middle; 247 | } 248 | 249 | /* @group Code Colorization */ 250 | 251 | span.keyword { 252 | color: #008000 253 | } 254 | 255 | span.keywordtype { 256 | color: #604020 257 | } 258 | 259 | span.keywordflow { 260 | color: #e08000 261 | } 262 | 263 | span.comment { 264 | color: #800000 265 | } 266 | 267 | span.preprocessor { 268 | color: #806020 269 | } 270 | 271 | span.stringliteral { 272 | color: #002080 273 | } 274 | 275 | span.charliteral { 276 | color: #008080 277 | } 278 | 279 | span.vhdldigit { 280 | color: #ff00ff 281 | } 282 | 283 | span.vhdlchar { 284 | color: #000000 285 | } 286 | 287 | span.vhdlkeyword { 288 | color: #700070 289 | } 290 | 291 | span.vhdllogic { 292 | color: #ff0000 293 | } 294 | 295 | /* @end */ 296 | 297 | /* 298 | .search { 299 | color: #003399; 300 | font-weight: bold; 301 | } 302 | 303 | form.search { 304 | margin-bottom: 0px; 305 | margin-top: 0px; 306 | } 307 | 308 | input.search { 309 | font-size: 75%; 310 | color: #000080; 311 | font-weight: normal; 312 | background-color: #e8eef2; 313 | } 314 | */ 315 | 316 | td.tiny { 317 | font-size: 75%; 318 | } 319 | 320 | .dirtab { 321 | padding: 4px; 322 | border-collapse: collapse; 323 | border: 1px solid #A3B4D7; 324 | } 325 | 326 | th.dirtab { 327 | background: #EBEFF6; 328 | font-weight: bold; 329 | } 330 | 331 | hr { 332 | height: 0px; 333 | border: none; 334 | border-top: 1px solid #4A6AAA; 335 | } 336 | 337 | hr.footer { 338 | height: 1px; 339 | } 340 | 341 | /* @group Member Descriptions */ 342 | 343 | table.memberdecls { 344 | border-spacing: 0px; 345 | padding: 0px; 346 | } 347 | 348 | .mdescLeft, .mdescRight, 349 | .memItemLeft, .memItemRight, 350 | .memTemplItemLeft, .memTemplItemRight, .memTemplParams { 351 | background-color: #F9FAFC; 352 | border: none; 353 | margin: 4px; 354 | padding: 1px 0 0 8px; 355 | } 356 | 357 | .mdescLeft, .mdescRight { 358 | padding: 0px 8px 4px 8px; 359 | color: #555; 360 | } 361 | 362 | .memItemLeft, .memItemRight, .memTemplParams { 363 | border-top: 1px solid #C4CFE5; 364 | } 365 | 366 | .memItemLeft, .memTemplItemLeft { 367 | white-space: nowrap; 368 | } 369 | 370 | .memItemRight { 371 | width: 100%; 372 | } 373 | 374 | .memTemplParams { 375 | color: #4665A2; 376 | white-space: nowrap; 377 | } 378 | 379 | /* @end */ 380 | 381 | /* @group Member Details */ 382 | 383 | /* Styles for detailed member documentation */ 384 | 385 | .memtemplate { 386 | font-size: 80%; 387 | color: #4665A2; 388 | font-weight: normal; 389 | margin-left: 9px; 390 | } 391 | 392 | .memnav { 393 | background-color: #EBEFF6; 394 | border: 1px solid #A3B4D7; 395 | text-align: center; 396 | margin: 2px; 397 | margin-right: 15px; 398 | padding: 2px; 399 | } 400 | 401 | .mempage { 402 | width: 100%; 403 | } 404 | 405 | .memitem { 406 | padding: 0; 407 | margin-bottom: 10px; 408 | margin-right: 5px; 409 | } 410 | 411 | .memname { 412 | white-space: nowrap; 413 | font-weight: bold; 414 | margin-left: 6px; 415 | } 416 | 417 | .memproto { 418 | border-top: 1px solid #A8B8D9; 419 | border-left: 1px solid #A8B8D9; 420 | border-right: 1px solid #A8B8D9; 421 | padding: 6px 0px 6px 0px; 422 | color: #253555; 423 | font-weight: bold; 424 | text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); 425 | /* opera specific markup */ 426 | box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 427 | border-top-right-radius: 8px; 428 | border-top-left-radius: 8px; 429 | /* firefox specific markup */ 430 | -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; 431 | -moz-border-radius-topright: 8px; 432 | -moz-border-radius-topleft: 8px; 433 | /* webkit specific markup */ 434 | -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 435 | -webkit-border-top-right-radius: 8px; 436 | -webkit-border-top-left-radius: 8px; 437 | background-image:url('nav_f.png'); 438 | background-repeat:repeat-x; 439 | background-color: #E2E8F2; 440 | 441 | } 442 | 443 | .memdoc { 444 | border-bottom: 1px solid #A8B8D9; 445 | border-left: 1px solid #A8B8D9; 446 | border-right: 1px solid #A8B8D9; 447 | padding: 2px 5px; 448 | background-color: #FBFCFD; 449 | border-top-width: 0; 450 | /* opera specific markup */ 451 | border-bottom-left-radius: 8px; 452 | border-bottom-right-radius: 8px; 453 | box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 454 | /* firefox specific markup */ 455 | -moz-border-radius-bottomleft: 8px; 456 | -moz-border-radius-bottomright: 8px; 457 | -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; 458 | background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); 459 | /* webkit specific markup */ 460 | -webkit-border-bottom-left-radius: 8px; 461 | -webkit-border-bottom-right-radius: 8px; 462 | -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); 463 | background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); 464 | } 465 | 466 | .paramkey { 467 | text-align: right; 468 | } 469 | 470 | .paramtype { 471 | white-space: nowrap; 472 | } 473 | 474 | .paramname { 475 | color: #602020; 476 | white-space: nowrap; 477 | } 478 | .paramname em { 479 | font-style: normal; 480 | } 481 | 482 | .params, .retval, .exception, .tparams { 483 | border-spacing: 6px 2px; 484 | } 485 | 486 | .params .paramname, .retval .paramname { 487 | font-weight: bold; 488 | vertical-align: top; 489 | } 490 | 491 | .params .paramtype { 492 | font-style: italic; 493 | vertical-align: top; 494 | } 495 | 496 | .params .paramdir { 497 | font-family: "courier new",courier,monospace; 498 | vertical-align: top; 499 | } 500 | 501 | 502 | 503 | 504 | /* @end */ 505 | 506 | /* @group Directory (tree) */ 507 | 508 | /* for the tree view */ 509 | 510 | .ftvtree { 511 | font-family: sans-serif; 512 | margin: 0px; 513 | } 514 | 515 | /* these are for tree view when used as main index */ 516 | 517 | .directory { 518 | font-size: 9pt; 519 | font-weight: bold; 520 | margin: 5px; 521 | } 522 | 523 | .directory h3 { 524 | margin: 0px; 525 | margin-top: 1em; 526 | font-size: 11pt; 527 | } 528 | 529 | /* 530 | The following two styles can be used to replace the root node title 531 | with an image of your choice. Simply uncomment the next two styles, 532 | specify the name of your image and be sure to set 'height' to the 533 | proper pixel height of your image. 534 | */ 535 | 536 | /* 537 | .directory h3.swap { 538 | height: 61px; 539 | background-repeat: no-repeat; 540 | background-image: url("yourimage.gif"); 541 | } 542 | .directory h3.swap span { 543 | display: none; 544 | } 545 | */ 546 | 547 | .directory > h3 { 548 | margin-top: 0; 549 | } 550 | 551 | .directory p { 552 | margin: 0px; 553 | white-space: nowrap; 554 | } 555 | 556 | .directory div { 557 | display: none; 558 | margin: 0px; 559 | } 560 | 561 | .directory img { 562 | vertical-align: -30%; 563 | } 564 | 565 | /* these are for tree view when not used as main index */ 566 | 567 | .directory-alt { 568 | font-size: 100%; 569 | font-weight: bold; 570 | } 571 | 572 | .directory-alt h3 { 573 | margin: 0px; 574 | margin-top: 1em; 575 | font-size: 11pt; 576 | } 577 | 578 | .directory-alt > h3 { 579 | margin-top: 0; 580 | } 581 | 582 | .directory-alt p { 583 | margin: 0px; 584 | white-space: nowrap; 585 | } 586 | 587 | .directory-alt div { 588 | display: none; 589 | margin: 0px; 590 | } 591 | 592 | .directory-alt img { 593 | vertical-align: -30%; 594 | } 595 | 596 | /* @end */ 597 | 598 | div.dynheader { 599 | margin-top: 8px; 600 | } 601 | 602 | address { 603 | font-style: normal; 604 | color: #2A3D61; 605 | } 606 | 607 | table.doxtable { 608 | border-collapse:collapse; 609 | } 610 | 611 | table.doxtable td, table.doxtable th { 612 | border: 1px solid #2D4068; 613 | padding: 3px 7px 2px; 614 | } 615 | 616 | table.doxtable th { 617 | background-color: #374F7F; 618 | color: #FFFFFF; 619 | font-size: 110%; 620 | padding-bottom: 4px; 621 | padding-top: 5px; 622 | text-align:left; 623 | } 624 | 625 | .tabsearch { 626 | top: 0px; 627 | left: 10px; 628 | height: 36px; 629 | background-image: url('tab_b.png'); 630 | z-index: 101; 631 | overflow: hidden; 632 | font-size: 13px; 633 | } 634 | 635 | .navpath ul 636 | { 637 | font-size: 11px; 638 | background-image:url('tab_b.png'); 639 | background-repeat:repeat-x; 640 | height:30px; 641 | line-height:30px; 642 | color:#8AA0CC; 643 | border:solid 1px #C2CDE4; 644 | overflow:hidden; 645 | margin:0px; 646 | padding:0px; 647 | } 648 | 649 | .navpath li 650 | { 651 | list-style-type:none; 652 | float:left; 653 | padding-left:10px; 654 | padding-right:15px; 655 | background-image:url('bc_s.png'); 656 | background-repeat:no-repeat; 657 | background-position:right; 658 | color:#364D7C; 659 | } 660 | 661 | .navpath li.navelem a 662 | { 663 | height:32px; 664 | display:block; 665 | text-decoration: none; 666 | outline: none; 667 | } 668 | 669 | .navpath li.navelem a:hover 670 | { 671 | color:#6884BD; 672 | } 673 | 674 | .navpath li.footer 675 | { 676 | list-style-type:none; 677 | float:right; 678 | padding-left:10px; 679 | padding-right:15px; 680 | background-image:none; 681 | background-repeat:no-repeat; 682 | background-position:right; 683 | color:#364D7C; 684 | font-size: 8pt; 685 | } 686 | 687 | 688 | div.summary 689 | { 690 | float: right; 691 | font-size: 8pt; 692 | padding-right: 5px; 693 | width: 50%; 694 | text-align: right; 695 | } 696 | 697 | div.summary a 698 | { 699 | white-space: nowrap; 700 | } 701 | 702 | div.ingroups 703 | { 704 | font-size: 8pt; 705 | padding-left: 5px; 706 | width: 50%; 707 | text-align: left; 708 | } 709 | 710 | div.ingroups a 711 | { 712 | white-space: nowrap; 713 | } 714 | 715 | div.header 716 | { 717 | background-image:url('nav_h.png'); 718 | background-repeat:repeat-x; 719 | background-color: #F9FAFC; 720 | margin: 0px; 721 | border-bottom: 1px solid #C4CFE5; 722 | } 723 | 724 | div.headertitle 725 | { 726 | padding: 5px 5px 5px 10px; 727 | } 728 | 729 | dl 730 | { 731 | padding: 0 0 0 10px; 732 | } 733 | 734 | dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug 735 | { 736 | border-left:4px solid; 737 | padding: 0 0 0 6px; 738 | } 739 | 740 | dl.note 741 | { 742 | border-color: #D0C000; 743 | } 744 | 745 | dl.warning, dl.attention 746 | { 747 | border-color: #FF0000; 748 | } 749 | 750 | dl.pre, dl.post, dl.invariant 751 | { 752 | border-color: #00D000; 753 | } 754 | 755 | dl.deprecated 756 | { 757 | border-color: #505050; 758 | } 759 | 760 | dl.todo 761 | { 762 | border-color: #00C0E0; 763 | } 764 | 765 | dl.test 766 | { 767 | border-color: #3030E0; 768 | } 769 | 770 | dl.bug 771 | { 772 | border-color: #C08050; 773 | } 774 | 775 | #projectlogo 776 | { 777 | text-align: center; 778 | vertical-align: bottom; 779 | border-collapse: separate; 780 | } 781 | 782 | #projectlogo img 783 | { 784 | border: 0px none; 785 | } 786 | 787 | #projectname 788 | { 789 | font: 300% Tahoma, Arial,sans-serif; 790 | margin: 0px; 791 | padding: 2px 0px; 792 | } 793 | 794 | #projectbrief 795 | { 796 | font: 120% Tahoma, Arial,sans-serif; 797 | margin: 0px; 798 | padding: 0px; 799 | } 800 | 801 | #projectnumber 802 | { 803 | font: 50% Tahoma, Arial,sans-serif; 804 | margin: 0px; 805 | padding: 0px; 806 | } 807 | 808 | #titlearea 809 | { 810 | padding: 0px; 811 | margin: 0px; 812 | width: 100%; 813 | border-bottom: 1px solid #5373B4; 814 | } 815 | 816 | .image 817 | { 818 | text-align: center; 819 | } 820 | 821 | .dotgraph 822 | { 823 | text-align: center; 824 | } 825 | 826 | .mscgraph 827 | { 828 | text-align: center; 829 | } 830 | 831 | .caption 832 | { 833 | font-weight: bold; 834 | } 835 | 836 | -------------------------------------------------------------------------------- /doc/doxygen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/doxygen.png -------------------------------------------------------------------------------- /doc/files.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: File List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 44 |
45 |
46 | 50 |
52 |
53 |
54 | 57 |
58 |
59 |
60 |
File List
61 |
62 |
63 |
Here is a list of all files with brief descriptions:
64 | 65 |
D:/Code/Projects/psimpl/trunk/lib/psimpl.h [code]
66 |
67 |
68 | 75 | 76 | 77 | 78 | -------------------------------------------------------------------------------- /doc/ftv2blank.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2blank.png -------------------------------------------------------------------------------- /doc/ftv2doc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2doc.png -------------------------------------------------------------------------------- /doc/ftv2folderclosed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2folderclosed.png -------------------------------------------------------------------------------- /doc/ftv2folderopen.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2folderopen.png -------------------------------------------------------------------------------- /doc/ftv2lastnode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2lastnode.png -------------------------------------------------------------------------------- /doc/ftv2link.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2link.png -------------------------------------------------------------------------------- /doc/ftv2mlastnode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2mlastnode.png -------------------------------------------------------------------------------- /doc/ftv2mnode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2mnode.png -------------------------------------------------------------------------------- /doc/ftv2node.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2node.png -------------------------------------------------------------------------------- /doc/ftv2plastnode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2plastnode.png -------------------------------------------------------------------------------- /doc/ftv2pnode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2pnode.png -------------------------------------------------------------------------------- /doc/ftv2splitbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2splitbar.png -------------------------------------------------------------------------------- /doc/ftv2vertline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/ftv2vertline.png -------------------------------------------------------------------------------- /doc/functions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Class Members 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 | 54 | 75 |
76 |
77 | 81 |
83 |
84 |
85 | 88 |
89 |
90 |
Here is a list of all class members with links to the classes they belong to:
91 | 92 |

- a -

109 | 110 | 111 |

- b -

116 | 117 | 118 |

- c -

132 | 133 | 134 |

- d -

148 | 149 | 150 |

- f -

162 | 163 | 164 |

- g -

169 | 170 | 171 |

- i -

176 | 177 | 178 |

- k -

186 | 187 | 188 |

- l -

197 | 198 | 199 |

- m -

207 | 208 | 209 |

- n -

214 | 215 | 216 |

- o -

230 | 231 | 232 |

- p -

240 | 241 | 242 |

- r -

250 | 251 | 252 |

- s -

275 | 276 | 277 |

- v -

282 | 283 | 284 |

- ~ -

289 |
290 |
291 | 298 | 299 | 300 | 301 | -------------------------------------------------------------------------------- /doc/functions_func.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Class Members - Functions 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 | 54 | 72 |
73 |
74 | 78 |
80 |
81 |
82 | 85 |
86 |
87 |   88 | 89 |

- a -

103 | 104 | 105 |

- b -

110 | 111 | 112 |

- c -

126 | 127 | 128 |

- d -

136 | 137 | 138 |

- f -

146 | 147 | 148 |

- g -

153 | 154 | 155 |

- k -

160 | 161 | 162 |

- l -

167 | 168 | 169 |

- n -

174 | 175 | 176 |

- o -

190 | 191 | 192 |

- p -

197 | 198 | 199 |

- r -

207 | 208 | 209 |

- s -

226 | 227 | 228 |

- ~ -

233 |
234 |
235 | 242 | 243 | 244 | 245 | -------------------------------------------------------------------------------- /doc/functions_type.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Class Members - Typedefs 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 | 54 |
55 |
56 | 60 |
62 |
63 |
64 | 67 |
68 | 81 |
82 | 89 | 90 | 91 | 92 | -------------------------------------------------------------------------------- /doc/functions_vars.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Class Members - Variables 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 | 54 |
55 |
56 | 60 |
62 |
63 |
64 | 67 |
68 | 104 |
105 | 112 | 113 | 114 | 115 | -------------------------------------------------------------------------------- /doc/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: psimpl - generic n-dimensional polyline simplification 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 |
40 |
41 | 45 |
47 |
48 |
49 | 52 |
53 |
54 |
55 |
psimpl - generic n-dimensional polyline simplification
56 |
57 |
58 |
 59 |     Author  - Elmar de Koning
 60 |     Support - edekoning@gmail.com
 61 |     Website - http://psimpl.sf.net
 62 |     Article - http://www.codeproject.com/KB/recipes/PolylineSimplification.aspx
 63 |     License - MPL 1.1
 64 | 


65 |

66 |

67 | psimpl

68 |
 69 |     'psimpl' is a c++ polyline simplification library that is generic, easy to use, and supports
 70 |     the following algorithms:
    Simplification
 71 |     + Nth point - A naive algorithm that keeps only each nth point
 72 |     + Distance between points - Removes successive points that are clustered together
 73 |     + Perpendicular distance - Removes points based on their distance to the line segment defined
 74 |       by their left and right neighbors
 75 |     + Reumann-Witkam - Shifts a strip along the polyline and removes points that fall outside
 76 |     + Opheim - A constrained version of Reumann-Witkam
 77 |     + Lang - Similar to the Perpendicular distance routine, but instead of looking only at direct
 78 |       neighbors, an entire search region is processed
 79 |     + Douglas-Peucker - A classic simplification algorithm that provides an excellent approximation
 80 |       of the original line
 81 |     + A variation on the Douglas-Peucker algorithm - Slower, but yields better results at lower resolutions
    Errors
 82 |     + positional error - Distance of each polyline point to its simplification
    All the algorithms have been implemented in a single standalone C++ header using an STL-style
 83 |     interface that operates on input and output iterators. Polylines can be of any dimension, and
 84 |     defined using floating point or signed integer data types.
 85 | 


86 |

87 |

88 | changelog

89 |
 90 |     28-09-2010 - Initial version
 91 |     23-10-2010 - Changed license from CPOL to MPL
 92 |     26-10-2010 - Clarified input (type) requirements, and changed the behavior of the algorithms
 93 |                  under invalid input
 94 |     01-12-2010 - Added the nth point, perpendicular distance and Reumann-Witkam routines; moved all
 95 |                  functions related to distance calculations to the math namespace
 96 |     10-12-2010 - Fixed a bug in the perpendicular distance routine
 97 |     27-02-2011 - Added Opheim simplification, and functions for computing positional errors due to
 98 |                  simplification; renamed simplify_douglas_peucker_alt to simplify_douglas_peucker_n
 99 |     18-06-2011 - Added Lang simplification; fixed divide by zero bug when using integers; fixed a
100 |                  bug where incorrect output iterators were returned under invalid input; fixed a bug
101 |                  in douglas_peucker_n where an incorrect number of points could be returned; fixed a
102 |                  bug in compute_positional_errors2 that required the output and input iterator types
103 |                  to be the same; fixed a bug in compute_positional_error_statistics where invalid
104 |                  statistics could be returned under questionable input; documented input iterator
105 |                  requirements for each algorithm; miscellaneous refactoring of most algorithms.
106 | 
107 |
108 | 115 | 116 | 117 | 118 | -------------------------------------------------------------------------------- /doc/namespacemembers.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Namespace Members 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 45 | 51 |
52 |
53 | 57 |
59 |
60 |
61 | 64 |
65 |
66 |
Here is a list of all namespace members with links to the namespace documentation for each member:
    67 |
  • compute_positional_error_statistics() 68 | : psimpl 69 |
  • 70 |
  • compute_positional_errors2() 71 | : psimpl 72 |
  • 73 |
  • compute_statistics() 74 | : psimpl::math 75 |
  • 76 |
  • dot() 77 | : psimpl::math 78 |
  • 79 |
  • equal() 80 | : psimpl::math 81 |
  • 82 |
  • interpolate() 83 | : psimpl::math 84 |
  • 85 |
  • line_distance2() 86 | : psimpl::math 87 |
  • 88 |
  • make_vector() 89 | : psimpl::math 90 |
  • 91 |
  • point_distance2() 92 | : psimpl::math 93 |
  • 94 |
  • ray_distance2() 95 | : psimpl::math 96 |
  • 97 |
  • segment_distance2() 98 | : psimpl::math 99 |
  • 100 |
  • simplify_douglas_peucker() 101 | : psimpl 102 |
  • 103 |
  • simplify_douglas_peucker_n() 104 | : psimpl 105 |
  • 106 |
  • simplify_lang() 107 | : psimpl 108 |
  • 109 |
  • simplify_nth_point() 110 | : psimpl 111 |
  • 112 |
  • simplify_opheim() 113 | : psimpl 114 |
  • 115 |
  • simplify_perpendicular_distance() 116 | : psimpl 117 |
  • 118 |
  • simplify_radial_distance() 119 | : psimpl 120 |
  • 121 |
  • simplify_reumann_witkam() 122 | : psimpl 123 |
  • 124 |
  • swap() 125 | : psimpl::util 126 |
  • 127 |
128 |
129 |
130 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /doc/namespacemembers_func.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Namespace Members 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 45 | 51 |
52 |
53 | 57 |
59 |
60 |
61 | 64 |
65 |
66 |  
    67 |
  • compute_positional_error_statistics() 68 | : psimpl 69 |
  • 70 |
  • compute_positional_errors2() 71 | : psimpl 72 |
  • 73 |
  • compute_statistics() 74 | : psimpl::math 75 |
  • 76 |
  • dot() 77 | : psimpl::math 78 |
  • 79 |
  • equal() 80 | : psimpl::math 81 |
  • 82 |
  • interpolate() 83 | : psimpl::math 84 |
  • 85 |
  • line_distance2() 86 | : psimpl::math 87 |
  • 88 |
  • make_vector() 89 | : psimpl::math 90 |
  • 91 |
  • point_distance2() 92 | : psimpl::math 93 |
  • 94 |
  • ray_distance2() 95 | : psimpl::math 96 |
  • 97 |
  • segment_distance2() 98 | : psimpl::math 99 |
  • 100 |
  • simplify_douglas_peucker() 101 | : psimpl 102 |
  • 103 |
  • simplify_douglas_peucker_n() 104 | : psimpl 105 |
  • 106 |
  • simplify_lang() 107 | : psimpl 108 |
  • 109 |
  • simplify_nth_point() 110 | : psimpl 111 |
  • 112 |
  • simplify_opheim() 113 | : psimpl 114 |
  • 115 |
  • simplify_perpendicular_distance() 116 | : psimpl 117 |
  • 118 |
  • simplify_radial_distance() 119 | : psimpl 120 |
  • 121 |
  • simplify_reumann_witkam() 122 | : psimpl 123 |
  • 124 |
  • swap() 125 | : psimpl::util 126 |
  • 127 |
128 |
129 |
130 | 137 | 138 | 139 | 140 | -------------------------------------------------------------------------------- /doc/namespacepsimpl_1_1util.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: psimpl::util Namespace Reference 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 45 |
46 |
47 | 51 |
53 |
54 |
55 | 58 |
59 |
60 |
61 | Classes | 62 | Functions
63 |
64 |
psimpl::util Namespace Reference
65 |
66 |
67 | 68 |

Contains utility functions and classes. 69 | More...

70 | 71 | 73 | 74 | 75 | 77 | 78 | 79 |

72 | Classes

class  scoped_array
 A smart pointer for holding a dynamically allocated array. More...

76 | Functions

template<typename T >
void swap (scoped_array< T > &a, scoped_array< T > &b)
80 |

Detailed Description

81 |

Contains utility functions and classes.

82 |

Function Documentation

83 | 84 |
85 |
86 |
87 | template<typename T >
88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 |
void psimpl::util::swap (scoped_array< T > & a,
scoped_array< T > & b 
) [inline]
107 |
108 |
109 | 110 |
111 |
112 |
113 |
114 | 123 | 124 | 125 | 126 | -------------------------------------------------------------------------------- /doc/namespaces.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Namespace List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 45 |
46 |
47 | 51 |
53 |
54 |
55 | 58 |
59 |
60 |
61 |
Namespace List
62 |
63 |
64 |
Here is a list of all namespaces with brief descriptions:
65 | 66 | 67 | 68 |
psimplRoot namespace of the polyline simplification library
psimpl::mathContains functions for calculating statistics and distances between various geometric entities
psimpl::utilContains utility functions and classes
69 |
70 |
71 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /doc/nav_f.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/nav_f.png -------------------------------------------------------------------------------- /doc/nav_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/nav_h.png -------------------------------------------------------------------------------- /doc/navtree.css: -------------------------------------------------------------------------------- 1 | #nav-tree .children_ul { 2 | margin:0; 3 | padding:4px; 4 | } 5 | 6 | #nav-tree ul { 7 | list-style:none outside none; 8 | margin:0px; 9 | padding:0px; 10 | } 11 | 12 | #nav-tree li { 13 | white-space:nowrap; 14 | margin:0px; 15 | padding:0px; 16 | } 17 | 18 | #nav-tree .plus { 19 | margin:0px; 20 | } 21 | 22 | #nav-tree .selected { 23 | background-image: url('tab_a.png'); 24 | background-repeat:repeat-x; 25 | color: #fff; 26 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 27 | } 28 | 29 | #nav-tree img { 30 | margin:0px; 31 | padding:0px; 32 | border:0px; 33 | vertical-align: middle; 34 | } 35 | 36 | #nav-tree a { 37 | text-decoration:none; 38 | padding:0px; 39 | margin:0px; 40 | outline:none; 41 | } 42 | 43 | #nav-tree .label { 44 | margin:0px; 45 | padding:0px; 46 | } 47 | 48 | #nav-tree .label a { 49 | padding:2px; 50 | } 51 | 52 | #nav-tree .selected a { 53 | text-decoration:none; 54 | padding:2px; 55 | margin:0px; 56 | color:#fff; 57 | } 58 | 59 | #nav-tree .children_ul { 60 | margin:0px; 61 | padding:0px; 62 | } 63 | 64 | #nav-tree .item { 65 | margin:0px; 66 | padding:0px; 67 | } 68 | 69 | #nav-tree { 70 | padding: 0px 0px; 71 | background-color: #FAFAFF; 72 | font-size:14px; 73 | overflow:auto; 74 | } 75 | 76 | #doc-content { 77 | overflow:auto; 78 | display:block; 79 | padding:0px; 80 | margin:0px; 81 | } 82 | 83 | #side-nav { 84 | padding:0 6px 0 0; 85 | margin: 0px; 86 | display:block; 87 | position: absolute; 88 | left: 0px; 89 | width: 300px; 90 | } 91 | 92 | .ui-resizable .ui-resizable-handle { 93 | display:block; 94 | } 95 | 96 | .ui-resizable-e { 97 | background:url("ftv2splitbar.png") repeat scroll right center transparent; 98 | cursor:e-resize; 99 | height:100%; 100 | right:0; 101 | top:0; 102 | width:6px; 103 | } 104 | 105 | .ui-resizable-handle { 106 | display:none; 107 | font-size:0.1px; 108 | position:absolute; 109 | z-index:1; 110 | } 111 | 112 | #nav-tree-contents { 113 | margin: 6px 0px 0px 0px; 114 | } 115 | 116 | #nav-tree { 117 | background-image:url('nav_h.png'); 118 | background-repeat:repeat-x; 119 | background-color: #F9FAFC; 120 | } 121 | 122 | 123 | 124 | -------------------------------------------------------------------------------- /doc/navtree.js: -------------------------------------------------------------------------------- 1 | var NAVTREE = 2 | [ 3 | [ "psimpl", "index.html", [ 4 | [ "psimpl - generic n-dimensional polyline simplification", "index.html", null ], 5 | [ "Class List", "annotated.html", [ 6 | [ "psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper", "classpsimpl_1_1_polyline_simplification_1_1_d_p_helper.html", null ], 7 | [ "psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::KeyInfo", "structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_key_info.html", null ], 8 | [ "psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >", "classpsimpl_1_1_polyline_simplification.html", null ], 9 | [ "psimpl::util::scoped_array< T >", "classpsimpl_1_1util_1_1scoped__array.html", null ], 10 | [ "psimpl::math::Statistics", "structpsimpl_1_1math_1_1_statistics.html", null ], 11 | [ "psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPoly", "structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly.html", null ], 12 | [ "psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt", "structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly_alt.html", null ] 13 | ] ], 14 | [ "Class Index", "classes.html", null ], 15 | [ "Class Members", "functions.html", null ], 16 | [ "Namespace List", "namespaces.html", [ 17 | [ "psimpl", "namespacepsimpl.html", null ], 18 | [ "psimpl::math", "namespacepsimpl_1_1math.html", null ], 19 | [ "psimpl::util", "namespacepsimpl_1_1util.html", null ] 20 | ] ], 21 | [ "Namespace Members", "namespacemembers.html", null ], 22 | [ "File List", "files.html", [ 23 | [ "D:/Code/Projects/psimpl/trunk/lib/psimpl.h", "psimpl_8h.html", null ] 24 | ] ], 25 | [ "Directories", "dirs.html", [ 26 | [ "lib", "dir_f9993e17f36afaef24d7a404e932861e.html", null ] 27 | ] ] 28 | ] ] 29 | ]; 30 | 31 | function createIndent(o,domNode,node,level) 32 | { 33 | if (node.parentNode && node.parentNode.parentNode) 34 | { 35 | createIndent(o,domNode,node.parentNode,level+1); 36 | } 37 | var imgNode = document.createElement("img"); 38 | if (level==0 && node.childrenData) 39 | { 40 | node.plus_img = imgNode; 41 | node.expandToggle = document.createElement("a"); 42 | node.expandToggle.href = "javascript:void(0)"; 43 | node.expandToggle.onclick = function() 44 | { 45 | if (node.expanded) 46 | { 47 | $(node.getChildrenUL()).slideUp("fast"); 48 | if (node.isLast) 49 | { 50 | node.plus_img.src = node.relpath+"ftv2plastnode.png"; 51 | } 52 | else 53 | { 54 | node.plus_img.src = node.relpath+"ftv2pnode.png"; 55 | } 56 | node.expanded = false; 57 | } 58 | else 59 | { 60 | expandNode(o, node, false); 61 | } 62 | } 63 | node.expandToggle.appendChild(imgNode); 64 | domNode.appendChild(node.expandToggle); 65 | } 66 | else 67 | { 68 | domNode.appendChild(imgNode); 69 | } 70 | if (level==0) 71 | { 72 | if (node.isLast) 73 | { 74 | if (node.childrenData) 75 | { 76 | imgNode.src = node.relpath+"ftv2plastnode.png"; 77 | } 78 | else 79 | { 80 | imgNode.src = node.relpath+"ftv2lastnode.png"; 81 | domNode.appendChild(imgNode); 82 | } 83 | } 84 | else 85 | { 86 | if (node.childrenData) 87 | { 88 | imgNode.src = node.relpath+"ftv2pnode.png"; 89 | } 90 | else 91 | { 92 | imgNode.src = node.relpath+"ftv2node.png"; 93 | domNode.appendChild(imgNode); 94 | } 95 | } 96 | } 97 | else 98 | { 99 | if (node.isLast) 100 | { 101 | imgNode.src = node.relpath+"ftv2blank.png"; 102 | } 103 | else 104 | { 105 | imgNode.src = node.relpath+"ftv2vertline.png"; 106 | } 107 | } 108 | imgNode.border = "0"; 109 | } 110 | 111 | function newNode(o, po, text, link, childrenData, lastNode) 112 | { 113 | var node = new Object(); 114 | node.children = Array(); 115 | node.childrenData = childrenData; 116 | node.depth = po.depth + 1; 117 | node.relpath = po.relpath; 118 | node.isLast = lastNode; 119 | 120 | node.li = document.createElement("li"); 121 | po.getChildrenUL().appendChild(node.li); 122 | node.parentNode = po; 123 | 124 | node.itemDiv = document.createElement("div"); 125 | node.itemDiv.className = "item"; 126 | 127 | node.labelSpan = document.createElement("span"); 128 | node.labelSpan.className = "label"; 129 | 130 | createIndent(o,node.itemDiv,node,0); 131 | node.itemDiv.appendChild(node.labelSpan); 132 | node.li.appendChild(node.itemDiv); 133 | 134 | var a = document.createElement("a"); 135 | node.labelSpan.appendChild(a); 136 | node.label = document.createTextNode(text); 137 | a.appendChild(node.label); 138 | if (link) 139 | { 140 | a.href = node.relpath+link; 141 | } 142 | else 143 | { 144 | if (childrenData != null) 145 | { 146 | a.className = "nolink"; 147 | a.href = "javascript:void(0)"; 148 | a.onclick = node.expandToggle.onclick; 149 | node.expanded = false; 150 | } 151 | } 152 | 153 | node.childrenUL = null; 154 | node.getChildrenUL = function() 155 | { 156 | if (!node.childrenUL) 157 | { 158 | node.childrenUL = document.createElement("ul"); 159 | node.childrenUL.className = "children_ul"; 160 | node.childrenUL.style.display = "none"; 161 | node.li.appendChild(node.childrenUL); 162 | } 163 | return node.childrenUL; 164 | }; 165 | 166 | return node; 167 | } 168 | 169 | function showRoot() 170 | { 171 | var headerHeight = $("#top").height(); 172 | var footerHeight = $("#nav-path").height(); 173 | var windowHeight = $(window).height() - headerHeight - footerHeight; 174 | navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); 175 | } 176 | 177 | function expandNode(o, node, imm) 178 | { 179 | if (node.childrenData && !node.expanded) 180 | { 181 | if (!node.childrenVisited) 182 | { 183 | getNode(o, node); 184 | } 185 | if (imm) 186 | { 187 | $(node.getChildrenUL()).show(); 188 | } 189 | else 190 | { 191 | $(node.getChildrenUL()).slideDown("fast",showRoot); 192 | } 193 | if (node.isLast) 194 | { 195 | node.plus_img.src = node.relpath+"ftv2mlastnode.png"; 196 | } 197 | else 198 | { 199 | node.plus_img.src = node.relpath+"ftv2mnode.png"; 200 | } 201 | node.expanded = true; 202 | } 203 | } 204 | 205 | function getNode(o, po) 206 | { 207 | po.childrenVisited = true; 208 | var l = po.childrenData.length-1; 209 | for (var i in po.childrenData) 210 | { 211 | var nodeData = po.childrenData[i]; 212 | po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], 213 | i==l); 214 | } 215 | } 216 | 217 | function findNavTreePage(url, data) 218 | { 219 | var nodes = data; 220 | var result = null; 221 | for (var i in nodes) 222 | { 223 | var d = nodes[i]; 224 | if (d[1] == url) 225 | { 226 | return new Array(i); 227 | } 228 | else if (d[2] != null) // array of children 229 | { 230 | result = findNavTreePage(url, d[2]); 231 | if (result != null) 232 | { 233 | return (new Array(i).concat(result)); 234 | } 235 | } 236 | } 237 | return null; 238 | } 239 | 240 | function initNavTree(toroot,relpath) 241 | { 242 | var o = new Object(); 243 | o.toroot = toroot; 244 | o.node = new Object(); 245 | o.node.li = document.getElementById("nav-tree-contents"); 246 | o.node.childrenData = NAVTREE; 247 | o.node.children = new Array(); 248 | o.node.childrenUL = document.createElement("ul"); 249 | o.node.getChildrenUL = function() { return o.node.childrenUL; }; 250 | o.node.li.appendChild(o.node.childrenUL); 251 | o.node.depth = 0; 252 | o.node.relpath = relpath; 253 | 254 | getNode(o, o.node); 255 | 256 | o.breadcrumbs = findNavTreePage(toroot, NAVTREE); 257 | if (o.breadcrumbs == null) 258 | { 259 | o.breadcrumbs = findNavTreePage("index.html",NAVTREE); 260 | } 261 | if (o.breadcrumbs != null && o.breadcrumbs.length>0) 262 | { 263 | var p = o.node; 264 | for (var i in o.breadcrumbs) 265 | { 266 | var j = o.breadcrumbs[i]; 267 | p = p.children[j]; 268 | expandNode(o,p,true); 269 | } 270 | p.itemDiv.className = p.itemDiv.className + " selected"; 271 | p.itemDiv.id = "selected"; 272 | $(window).load(showRoot); 273 | } 274 | } 275 | 276 | -------------------------------------------------------------------------------- /doc/open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/open.png -------------------------------------------------------------------------------- /doc/psimpl_dp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/psimpl_dp.png -------------------------------------------------------------------------------- /doc/psimpl_la.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/psimpl_la.png -------------------------------------------------------------------------------- /doc/psimpl_np.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/psimpl_np.png -------------------------------------------------------------------------------- /doc/psimpl_op.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/psimpl_op.png -------------------------------------------------------------------------------- /doc/psimpl_pd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/psimpl_pd.png -------------------------------------------------------------------------------- /doc/psimpl_pos_error.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/psimpl_pos_error.png -------------------------------------------------------------------------------- /doc/psimpl_rd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/psimpl_rd.png -------------------------------------------------------------------------------- /doc/psimpl_rw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/psimpl_rw.png -------------------------------------------------------------------------------- /doc/resize.js: -------------------------------------------------------------------------------- 1 | var cookie_namespace = 'doxygen'; 2 | var sidenav,navtree,content,header; 3 | 4 | function readCookie(cookie) 5 | { 6 | var myCookie = cookie_namespace+"_"+cookie+"="; 7 | if (document.cookie) 8 | { 9 | var index = document.cookie.indexOf(myCookie); 10 | if (index != -1) 11 | { 12 | var valStart = index + myCookie.length; 13 | var valEnd = document.cookie.indexOf(";", valStart); 14 | if (valEnd == -1) 15 | { 16 | valEnd = document.cookie.length; 17 | } 18 | var val = document.cookie.substring(valStart, valEnd); 19 | return val; 20 | } 21 | } 22 | return 0; 23 | } 24 | 25 | function writeCookie(cookie, val, expiration) 26 | { 27 | if (val==undefined) return; 28 | if (expiration == null) 29 | { 30 | var date = new Date(); 31 | date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week 32 | expiration = date.toGMTString(); 33 | } 34 | document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; 35 | } 36 | 37 | function resizeWidth() 38 | { 39 | var windowWidth = $(window).width() + "px"; 40 | var sidenavWidth = $(sidenav).width(); 41 | content.css({marginLeft:parseInt(sidenavWidth)+6+"px"}); //account for 6px-wide handle-bar 42 | writeCookie('width',sidenavWidth, null); 43 | } 44 | 45 | function restoreWidth(navWidth) 46 | { 47 | var windowWidth = $(window).width() + "px"; 48 | content.css({marginLeft:parseInt(navWidth)+6+"px"}); 49 | sidenav.css({width:navWidth + "px"}); 50 | } 51 | 52 | function resizeHeight() 53 | { 54 | var headerHeight = header.height(); 55 | var footerHeight = footer.height(); 56 | var windowHeight = $(window).height() - headerHeight - footerHeight; 57 | content.css({height:windowHeight + "px"}); 58 | navtree.css({height:windowHeight + "px"}); 59 | sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); 60 | } 61 | 62 | function initResizable() 63 | { 64 | header = $("#top"); 65 | sidenav = $("#side-nav"); 66 | content = $("#doc-content"); 67 | navtree = $("#nav-tree"); 68 | footer = $("#nav-path"); 69 | $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); 70 | $(window).resize(function() { resizeHeight(); }); 71 | var width = readCookie('width'); 72 | if (width) { restoreWidth(width); } else { resizeWidth(); } 73 | resizeHeight(); 74 | var url = location.href; 75 | var i=url.indexOf("#"); 76 | if (i>=0) window.location.hash=url.substr(i); 77 | var _preventDefault = function(evt) { evt.preventDefault(); }; 78 | $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); 79 | } 80 | 81 | 82 | -------------------------------------------------------------------------------- /doc/structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_key_info-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Member List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 |
62 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::KeyInfo Member List
63 |
64 | 70 |
71 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /doc/structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_key_info.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::KeyInfo Struct Reference 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 | 64 |
65 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::KeyInfo Struct Reference
66 |
67 |
68 | 69 |

Defines the key of a polyline. 70 | More...

71 | 72 |

List of all members.

73 | 74 | 76 | 77 | 79 | 80 | 81 | 82 |

75 | Public Member Functions

 KeyInfo (ptr_diff_type index=0, value_type dist2=0)

78 | Public Attributes

ptr_diff_type index
value_type dist2
 coord index of the key
83 |

Detailed Description

84 |

template<unsigned DIM, class InputIterator, class OutputIterator>
85 | struct psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::KeyInfo

86 | 87 |

Defines the key of a polyline.

88 |

Constructor & Destructor Documentation

89 | 90 |
91 |
92 |
93 | template<unsigned DIM, class InputIterator, class OutputIterator>
94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::KeyInfo::KeyInfo (ptr_diff_type index = 0,
value_type dist2 = 0 
) [inline]
113 |
114 |
115 | 116 |
117 |
118 |

Member Data Documentation

119 | 120 |
121 |
122 |
123 | template<unsigned DIM, class InputIterator, class OutputIterator>
124 | 125 | 126 | 127 | 128 |
value_type psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::KeyInfo::dist2
129 |
130 |
131 | 132 |

coord index of the key

133 | 134 |
135 |
136 | 137 |
138 |
139 |
140 | template<unsigned DIM, class InputIterator, class OutputIterator>
141 | 142 | 143 | 144 | 145 |
ptr_diff_type psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::KeyInfo::index
146 |
147 |
148 | 149 |
150 |
151 |
The documentation for this struct was generated from the following file:
    152 |
  • D:/Code/Projects/psimpl/trunk/lib/psimpl.h
  • 153 |
154 |
155 |
156 | 167 | 168 | 169 | 170 | -------------------------------------------------------------------------------- /doc/structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Member List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 |
62 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPoly Member List
63 |
64 | 70 |
71 | 78 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /doc/structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPoly Struct Reference 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 | 64 |
65 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPoly Struct Reference
66 |
67 |
68 | 69 |

Defines a sub polyline. 70 | More...

71 | 72 |

List of all members.

73 | 74 | 76 | 77 | 79 | 80 | 81 | 82 |

75 | Public Member Functions

 SubPoly (ptr_diff_type first=0, ptr_diff_type last=0)

78 | Public Attributes

ptr_diff_type first
ptr_diff_type last
 coord index of the first point
83 |

Detailed Description

84 |

template<unsigned DIM, class InputIterator, class OutputIterator>
85 | struct psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPoly

86 | 87 |

Defines a sub polyline.

88 |

Constructor & Destructor Documentation

89 | 90 |
91 |
92 |
93 | template<unsigned DIM, class InputIterator, class OutputIterator>
94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPoly::SubPoly (ptr_diff_type first = 0,
ptr_diff_type last = 0 
) [inline]
113 |
114 |
115 | 116 |
117 |
118 |

Member Data Documentation

119 | 120 |
121 |
122 |
123 | template<unsigned DIM, class InputIterator, class OutputIterator>
124 | 125 | 126 | 127 | 128 |
ptr_diff_type psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPoly::first
129 |
130 |
131 | 132 |
133 |
134 | 135 |
136 |
137 |
138 | template<unsigned DIM, class InputIterator, class OutputIterator>
139 | 140 | 141 | 142 | 143 |
ptr_diff_type psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPoly::last
144 |
145 |
146 | 147 |

coord index of the first point

148 | 149 |
150 |
151 |
The documentation for this struct was generated from the following file:
    152 |
  • D:/Code/Projects/psimpl/trunk/lib/psimpl.h
  • 153 |
154 |
155 |
156 | 167 | 168 | 169 | 170 | -------------------------------------------------------------------------------- /doc/structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly_alt-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Member List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 |
62 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt Member List
63 |
64 | 72 |
73 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /doc/structpsimpl_1_1_polyline_simplification_1_1_d_p_helper_1_1_sub_poly_alt.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt Struct Reference 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 | 64 |
65 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt Struct Reference
66 |
67 |
68 | 69 |

Defines a sub polyline including its key. 70 | More...

71 | 72 |

List of all members.

73 | 74 | 76 | 77 | 78 | 79 | 81 | 82 | 83 | 84 | 85 | 86 |

75 | Public Member Functions

 SubPolyAlt (ptr_diff_type first=0, ptr_diff_type last=0)
bool operator< (const SubPolyAlt &other) const
 key of this sub poly

80 | Public Attributes

ptr_diff_type first
ptr_diff_type last
 coord index of the first point
KeyInfo keyInfo
 coord index of the last point
87 |

Detailed Description

88 |

template<unsigned DIM, class InputIterator, class OutputIterator>
89 | struct psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt

90 | 91 |

Defines a sub polyline including its key.

92 |

Constructor & Destructor Documentation

93 | 94 |
95 |
96 |
97 | template<unsigned DIM, class InputIterator, class OutputIterator>
98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 |
psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt::SubPolyAlt (ptr_diff_type first = 0,
ptr_diff_type last = 0 
) [inline]
117 |
118 |
119 | 120 |
121 |
122 |

Member Function Documentation

123 | 124 |
125 |
126 |
127 | template<unsigned DIM, class InputIterator, class OutputIterator>
128 | 129 | 130 | 131 | 132 | 133 | 134 | 135 | 136 |
bool psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt::operator< (const SubPolyAltother) const [inline]
137 |
138 |
139 | 140 |

key of this sub poly

141 | 142 |
143 |
144 |

Member Data Documentation

145 | 146 |
147 |
148 |
149 | template<unsigned DIM, class InputIterator, class OutputIterator>
150 | 151 | 152 | 153 | 154 |
ptr_diff_type psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt::first
155 |
156 |
157 | 158 |
159 |
160 | 161 |
162 |
163 |
164 | template<unsigned DIM, class InputIterator, class OutputIterator>
165 | 166 | 167 | 168 | 169 |
KeyInfo psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt::keyInfo
170 |
171 |
172 | 173 |

coord index of the last point

174 | 175 |
176 |
177 | 178 |
179 |
180 |
181 | template<unsigned DIM, class InputIterator, class OutputIterator>
182 | 183 | 184 | 185 | 186 |
ptr_diff_type psimpl::PolylineSimplification< DIM, InputIterator, OutputIterator >::DPHelper::SubPolyAlt::last
187 |
188 |
189 | 190 |

coord index of the first point

191 | 192 |
193 |
194 |
The documentation for this struct was generated from the following file:
    195 |
  • D:/Code/Projects/psimpl/trunk/lib/psimpl.h
  • 196 |
197 |
198 |
199 | 210 | 211 | 212 | 213 | -------------------------------------------------------------------------------- /doc/structpsimpl_1_1math_1_1_statistics-members.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: Member List 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 |
62 |
psimpl::math::Statistics Member List
63 |
64 |
65 | This is the complete list of members for psimpl::math::Statistics, including all inherited members. 66 | 67 | 68 | 69 | 70 | 71 |
maxpsimpl::math::Statistics
meanpsimpl::math::Statistics
Statistics()psimpl::math::Statistics [inline]
stdpsimpl::math::Statistics
sumpsimpl::math::Statistics
72 |
73 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /doc/structpsimpl_1_1math_1_1_statistics.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | psimpl: psimpl::math::Statistics Struct Reference 6 | 7 | 8 | 9 | 10 | 11 | 14 | 15 | 16 | 17 | 18 |
19 |
20 | 21 | 22 | 23 | 26 | 27 | 28 |
24 |
psimpl 7
25 |
29 |
30 | 39 | 46 |
47 |
48 | 52 |
54 |
55 |
56 | 59 |
60 |
61 | 64 |
65 |
psimpl::math::Statistics Struct Reference
66 |
67 |
68 | 69 |

POD structure for storing several statistical values. 70 | More...

71 | 72 |

#include <psimpl.h>

73 | 74 |

List of all members.

75 | 76 | 78 | 79 | 81 | 82 | 83 | 84 | 85 |

77 | Public Member Functions

 Statistics ()

80 | Public Attributes

double max
double sum
double mean
double std
86 |

Detailed Description

87 |

POD structure for storing several statistical values.

88 |

Constructor & Destructor Documentation

89 | 90 |
91 |
92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 |
psimpl::math::Statistics::Statistics () [inline]
100 |
101 |
102 | 103 |
104 |
105 |

Member Data Documentation

106 | 107 |
108 |
109 | 110 | 111 | 112 | 113 |
double psimpl::math::Statistics::max
114 |
115 |
116 | 117 |
118 |
119 | 120 |
121 |
122 | 123 | 124 | 125 | 126 |
double psimpl::math::Statistics::mean
127 |
128 |
129 | 130 |
131 |
132 | 133 |
134 |
135 | 136 | 137 | 138 | 139 |
double psimpl::math::Statistics::std
140 |
141 |
142 | 143 |
144 |
145 | 146 |
147 |
148 | 149 | 150 | 151 | 152 |
double psimpl::math::Statistics::sum
153 |
154 |
155 | 156 |
157 |
158 |
The documentation for this struct was generated from the following file:
    159 |
  • D:/Code/Projects/psimpl/trunk/lib/psimpl.h
  • 160 |
161 |
162 |
163 | 173 | 174 | 175 | 176 | -------------------------------------------------------------------------------- /doc/tab_a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/tab_a.png -------------------------------------------------------------------------------- /doc/tab_b.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/tab_b.png -------------------------------------------------------------------------------- /doc/tab_h.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/tab_h.png -------------------------------------------------------------------------------- /doc/tab_s.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/skyrpex/psimpl/8a204f87f1471d368ae1f687a70bd2ea551b179b/doc/tab_s.png -------------------------------------------------------------------------------- /doc/tabs.css: -------------------------------------------------------------------------------- 1 | .tabs, .tabs2, .tabs3 { 2 | background-image: url('tab_b.png'); 3 | width: 100%; 4 | z-index: 101; 5 | font-size: 13px; 6 | } 7 | 8 | .tabs2 { 9 | font-size: 10px; 10 | } 11 | .tabs3 { 12 | font-size: 9px; 13 | } 14 | 15 | .tablist { 16 | margin: 0; 17 | padding: 0; 18 | display: table; 19 | } 20 | 21 | .tablist li { 22 | float: left; 23 | display: table-cell; 24 | background-image: url('tab_b.png'); 25 | line-height: 36px; 26 | list-style: none; 27 | } 28 | 29 | .tablist a { 30 | display: block; 31 | padding: 0 20px; 32 | font-weight: bold; 33 | background-image:url('tab_s.png'); 34 | background-repeat:no-repeat; 35 | background-position:right; 36 | color: #283A5D; 37 | text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); 38 | text-decoration: none; 39 | outline: none; 40 | } 41 | 42 | .tabs3 .tablist a { 43 | padding: 0 10px; 44 | } 45 | 46 | .tablist a:hover { 47 | background-image: url('tab_h.png'); 48 | background-repeat:repeat-x; 49 | color: #fff; 50 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 51 | text-decoration: none; 52 | } 53 | 54 | .tablist li.current a { 55 | background-image: url('tab_a.png'); 56 | background-repeat:repeat-x; 57 | color: #fff; 58 | text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); 59 | } 60 | --------------------------------------------------------------------------------