~ubuntu-branches/ubuntu/trusty/liblas/trusty-proposed

« back to all changes in this revision

Viewing changes to apps/laskernel.hpp

  • Committer: Package Import Robot
  • Author(s): Francesco Paolo Lovergine
  • Date: 2014-01-05 17:00:29 UTC
  • mfrom: (7.1.2 sid)
  • Revision ID: package-import@ubuntu.com-20140105170029-ddtp0j63x5jvck2u
Tags: 1.7.0+dfsg-2
Fixed missing linking of system boost component.
(closes: #733282)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/******************************************************************************
 
2
 * $Id$
 
3
 *
 
4
 * Project:  libLAS - http://liblas.org - A BSD library for LAS format data.
 
5
 * Purpose:  Processing Kernel
 
6
 * Author:   Howard Butler, hobu.inc at gmail.com
 
7
 *
 
8
 ******************************************************************************
 
9
 * Copyright (c) 2010, Howard Butler
 
10
 *
 
11
 * All rights reserved.
 
12
 * 
 
13
 * Redistribution and use in source and binary forms, with or without 
 
14
 * modification, are permitted provided that the following 
 
15
 * conditions are met:
 
16
 * 
 
17
 *     * Redistributions of source code must retain the above copyright 
 
18
 *       notice, this list of conditions and the following disclaimer.
 
19
 *     * Redistributions in binary form must reproduce the above copyright 
 
20
 *       notice, this list of conditions and the following disclaimer in 
 
21
 *       the documentation and/or other materials provided 
 
22
 *       with the distribution.
 
23
 *     * Neither the name of the Martin Isenburg or Iowa Department 
 
24
 *       of Natural Resources nor the names of its contributors may be 
 
25
 *       used to endorse or promote products derived from this software 
 
26
 *       without specific prior written permission.
 
27
 * 
 
28
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 
 
29
 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
 
30
 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 
 
31
 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 
 
32
 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 
 
33
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 
 
34
 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 
 
35
 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
 
36
 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 
 
37
 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 
 
38
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY 
 
39
 * OF SUCH DAMAGE.
 
40
 ****************************************************************************/
 
41
 
 
42
#ifndef LIBLAS_KERNEL_HPP_INCLUDED
 
43
#define LIBLAS_KERNEL_HPP_INCLUDED
 
44
 
 
45
#include <liblas/liblas.hpp>
 
46
#include <liblas/utility.hpp>
 
47
#include <liblas/export.hpp>
 
48
#include <liblas/external/property_tree/ptree.hpp>
 
49
#include <liblas/external/property_tree/xml_parser.hpp>
 
50
 
 
51
#include <fstream>
 
52
#include <iostream>
 
53
#include <sstream>
 
54
#include <string>
 
55
#include <vector>
 
56
#include <string>
 
57
#include <functional>
 
58
#include <algorithm>
 
59
 
 
60
#include <boost/program_options.hpp>
 
61
#include <boost/tokenizer.hpp>
 
62
#include <boost/array.hpp>
 
63
#include <boost/foreach.hpp>
 
64
 
 
65
 
 
66
using namespace std;
 
67
namespace po = boost::program_options;
 
68
 
 
69
#define SEPARATORS ",| "
 
70
typedef boost::tokenizer<boost::char_separator<char> > tokenizer;
 
71
 
 
72
LAS_DLL bool IsDualRangeFilter(std::string parse_string) ;
 
73
 
 
74
LAS_DLL liblas::FilterPtr MakeReturnFilter(std::vector<boost::uint16_t> const& returns, liblas::FilterI::FilterType ftype) ;
 
75
LAS_DLL liblas::FilterPtr MakeClassFilter(std::vector<liblas::Classification> const& classes, liblas::FilterI::FilterType ftype) ;
 
76
LAS_DLL liblas::FilterPtr MakeBoundsFilter(liblas::Bounds<double> const& bounds, liblas::FilterI::FilterType ftype) ;
 
77
LAS_DLL liblas::FilterPtr MakeIntensityFilter(std::string intensities, liblas::FilterI::FilterType ftype) ;
 
78
LAS_DLL liblas::FilterPtr MakeTimeFilter(std::string times, liblas::FilterI::FilterType ftype) ;
 
79
LAS_DLL liblas::FilterPtr MakeScanAngleFilter(std::string intensities, liblas::FilterI::FilterType ftype) ;
 
80
LAS_DLL liblas::FilterPtr MakeColorFilter(liblas::Color const& low, liblas::Color const& high, liblas::FilterI::FilterType ftype); 
 
81
 
 
82
 
 
83
LAS_DLL po::options_description GetFilteringOptions();
 
84
LAS_DLL po::options_description GetTransformationOptions();
 
85
LAS_DLL po::options_description GetHeaderOptions();
 
86
 
 
87
LAS_DLL std::vector<liblas::FilterPtr> GetFilters(po::variables_map vm, bool verbose);
 
88
LAS_DLL std::vector<liblas::TransformPtr> GetTransforms(po::variables_map vm, bool verbose, liblas::Header& header);
 
89
 
 
90
#ifdef _WIN32
 
91
#define compare_no_case(a,b,n)  _strnicmp( (a), (b), (n) )
 
92
#else
 
93
#define compare_no_case(a,b,n)  strncasecmp( (a), (b), (n) )
 
94
#endif
 
95
 
 
96
std::istream* OpenInput(std::string const& filename, bool bEnd);
 
97
LAS_DLL std::string TryReadFileData(std::string const& filename);
 
98
LAS_DLL std::vector<char> TryReadRawFileData(std::string const& filename);
 
99
LAS_DLL bool term_progress(std::ostream& os, double complete);
 
100
LAS_DLL void SetStreamPrecision(std::ostream& os, double scale);
 
101
LAS_DLL void SetHeaderCompression(liblas::Header& header, std::string const& filename);
 
102
 
 
103
LAS_DLL liblas::Header FetchHeader(std::string const& filename);
 
104
LAS_DLL void RewriteHeader(liblas::Header const& header, std::string const& filename);
 
105
LAS_DLL void RepairHeader(liblas::CoordinateSummary const& summary, liblas::Header& header);
 
106
LAS_DLL liblas::property_tree::ptree SummarizeReader(liblas::Reader& reader) ;
 
107
 
 
108
 
 
109
class OptechScanAngleFixer: public liblas::TransformI
 
110
{
 
111
public:
 
112
    
 
113
    OptechScanAngleFixer() {}
 
114
    ~OptechScanAngleFixer() {}
 
115
 
 
116
    bool transform(liblas::Point& point);
 
117
    bool ModifiesHeader() { return false; }    
 
118
 
 
119
private:
 
120
    OptechScanAngleFixer(OptechScanAngleFixer const& other);
 
121
    OptechScanAngleFixer& operator=(OptechScanAngleFixer const& rhs);
 
122
};
 
123
 
 
124
#endif // LIBLAS_ITERATOR_HPP_INCLUDED