[63a589]: src / libgeoc / polig.h  Maximize  Restore  History

Download this file

131 lines (127 with data), 6.4 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
/* -*- coding: utf-8 -*- */
/**
\ingroup geom
@{
\file polig.h
\brief Definición de estructuras y declaración de funciones para el trabajo con
polígonos.
\author José Luis García Pallero, jgpallero@gmail.com
\date 20 de abril de 2011
\section Licencia Licencia
Copyright (c) 2011, José Luis García Pallero. All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or
other materials provided with the distribution.
- Neither the name of the copyright holders nor the names of its contributors
may be used to endorse or promote products derived from this software without
specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER BE LIABLE FOR ANY DIRECT,
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
/******************************************************************************/
/******************************************************************************/
#ifndef _POLIG_H_
#define _POLIG_H_
/******************************************************************************/
/******************************************************************************/
#include<stdlib.h>
#include"libgeoc/errores.h"
/******************************************************************************/
/******************************************************************************/
#ifdef __cplusplus
extern "C" {
#endif
/******************************************************************************/
/******************************************************************************/
/** \struct polig
\brief Estructura contenedora de los vértices que definen el contorno de un
polígono.
\date 20 de abril de 2011: Creación de la estructura.
*/
typedef struct
{
/** \brief Número de elementos de los vectores de coordenadas. */
size_t nElem;
/**
\brief Vector de \em nElem elementos, que almacena las coordenadas X de los
vértices del polígono. El primer elemento se repite al final.
*/
double* x;
/**
\brief Vector de \em nElem elementos, que almacena las coordenadas Y de los
vértices del polígono. El primer elemento se repite al final.
*/
double* y;
/** \brief Posiciones de separación entre los elementos del vector \em x. */
size_t incX;
/** \brief Posiciones de separación entre los elementos del vector \em y. */
size_t incY;
}polig;
/******************************************************************************/
/******************************************************************************/
/**
\brief Asigna memoria para una estructura \ref polig.
\param[in] nElem Número de elementos del polígono. Ha de ser igual al número de
vértices del polígono más uno, ya que el primer vértice se repite al
final.
\return Estructura \ref polig, con memoria asignada para \em nElem elementos. Si
ocurre un error de asignación de memoria se devuelve NULL.
\note Si el argumento \em nElem vale 0, los campos #polig::x y #polig::y se
inicializan a NULL.
\note Los campos #polig::incX y #polig::incY se inicializan con el valor 1.
\date 20 de abril de 2011: Creación de la estructura.
*/
polig* AsigMemPolig(const size_t nElem);
/******************************************************************************/
/******************************************************************************/
/**
\brief Reasigna memoria a una estructura \ref polig.
\param[in] datos Estructura \ref polig a redimensionar.
\param[in] nElem Número de elementos del polígono después de la reasignación. Ha
de ser igual al número de vértices del polígono final más uno, ya que
el primer vértice se repite al final.
\param[in] copiaPrimVert Identificador para, después de la reasignación de
memoria, copiar o no el primer vértice del polígono en la última
posición de los listados de coordenadas. Dos posibilidades:
- 0: No se copia el primer vértice al final.
- Distinto de 0: Sí se copia.
\return Estructura \ref polig, con la memoria reasignada para \em nElem
elementos. Si ocurre un error de asignación de memoria se devuelve NULL.
\note Si el argumento \em nElem vale 0 esta función actúa igual que si se
llamase a la función \ref AsigMemPolig con su argumento igual a 0.
\date 20 de abril de 2011: Creación de la estructura.
*/
polig* ReasigMemPolig(polig* datos,
const size_t nElem,
const int copiaPrimVert);
/******************************************************************************/
/******************************************************************************/
/**
\brief Libera la memoria asignada a una estructura \ref polig.
\param[in] datos Estructura \ref polig.
\date 20 de abril de 2011: Creación de la estructura.
*/
void LibMemPolig(polig* datos);
/******************************************************************************/
/******************************************************************************/
#ifdef __cplusplus
}
#endif
/******************************************************************************/
/******************************************************************************/
#endif
/******************************************************************************/
/******************************************************************************/
/** @} */

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:





No, thanks