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

« back to all changes in this revision

Viewing changes to csharp/dotnetLibLAS/LASReader.cs

  • 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:  
 
6
 * Author:   Martin Vales, martin_gnu@mundo-r.com
 
7
 *
 
8
 ******************************************************************************
 
9
 * Copyright (c) 2008, Martin Vales
 
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
using System;
 
43
using System.Collections.Generic;
 
44
using System.Text;
 
45
using LASError = System.Int32;
 
46
using LASWriterH = System.IntPtr;
 
47
using LASReaderH = System.IntPtr;
 
48
using LASPointH = System.IntPtr;
 
49
using LASGuidH = System.IntPtr;
 
50
using LASVLRH = System.IntPtr;
 
51
using LASHeaderH = System.IntPtr;
 
52
 
 
53
namespace LibLAS
 
54
{
 
55
    /// <summary>
 
56
    /// LASReader class
 
57
    /// </summary>
 
58
    public class LASReader : IDisposable
 
59
    {
 
60
        private LASReaderH hReader;
 
61
        private LASPoint laspoint;
 
62
 
 
63
        /// <summary>
 
64
        /// Creates a LASReaderH object that can be used to read LASHeaderH and LASPointH objects with.
 
65
        /// </summary>
 
66
        /// <remarks>The LASReaderH must not be created with a filename that is opened for read or write by any other API functions. </remarks>
 
67
        /// <param name="filename">filename to open for read</param>
 
68
        public LASReader(String filename)
 
69
        {
 
70
            hReader = CAPI.LASReader_Create(filename);
 
71
        }
 
72
 
 
73
        /// <summary>
 
74
        /// Reads the next available point on the LASReaderH instance. 
 
75
        /// </summary>
 
76
        /// <returns>true if we have next point</returns>
 
77
        public bool GetNextPoint()
 
78
        {
 
79
            IntPtr pointer = CAPI.LASReader_GetNextPoint(hReader);
 
80
 
 
81
            if (IntPtr.Zero != pointer)
 
82
            {
 
83
                laspoint = new LASPoint(pointer);
 
84
                return true;
 
85
            }
 
86
            else
 
87
            {
 
88
                return false;
 
89
            }
 
90
        }
 
91
 
 
92
        /// <summary>
 
93
        /// 
 
94
        /// </summary>
 
95
        /// <returns></returns>
 
96
        public string GetVersion()
 
97
        {
 
98
            return CAPI.LAS_GetVersion();
 
99
        }
 
100
       
 
101
        /// <summary>
 
102
        /// get the current LASPoint.
 
103
        /// </summary>
 
104
        /// <returns>current LASPoint object</returns>
 
105
        public LASPoint GetPoint()
 
106
        {
 
107
            return laspoint;
 
108
        }
 
109
 
 
110
        /// <summary>
 
111
        /// Reads a LASPointH from the given position in the LAS file represented by the LASReader instance.
 
112
        /// </summary>
 
113
        /// <remarks> If no point is available at that location, NULL is returned. </remarks>
 
114
        /// <param name="position">the integer position of the point in the file to read.</param>
 
115
        /// <returns>LASPoint object</returns>
 
116
        public LASPoint GetPointAt(UInt32 position)
 
117
        {
 
118
            return new LASPoint(CAPI.LASReader_GetPointAt(hReader, position));
 
119
        }
 
120
 
 
121
        /// <summary>
 
122
        /// Get the header for the file associated with this Reader Class.
 
123
        /// </summary>
 
124
        /// <returns>LASHeader representing the header for the file.</returns>
 
125
        public LASHeader GetHeader()
 
126
        {
 
127
            return new LASHeader(CAPI.LASReader_GetHeader(hReader));
 
128
        }
 
129
 
 
130
        /// <summary>
 
131
        /// The object user should call this method when they finished with the object. In .NET is magaged by the GC.
 
132
        /// </summary>
 
133
        public void Dispose()
 
134
        {
 
135
            CAPI.LASReader_Destroy(hReader);
 
136
            // Clean up unmanaged resources here.
 
137
            // Dispose other contained disposable objects.
 
138
        }
 
139
    }
 
140
}