/usr/include/hkl/hkl-geometry.h is in libhkl-dev 4.0.3-4ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | /* This file is part of the hkl library.
*
* The hkl library is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The hkl library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with the hkl library. If not, see <http://www.gnu.org/licenses/>.
*
* Copyright (C) 2003-2010 Synchrotron SOLEIL
* L'Orme des Merisiers Saint-Aubin
* BP 48 91192 GIF-sur-YVETTE CEDEX
*
* Authors: Picca Frédéric-Emmanuel <picca@synchrotron-soleil.fr>
*/
#ifndef __HKL_GEOMETRY_H__
#define __HKL_GEOMETRY_H__
#include <hkl/hkl-source.h>
#include <hkl/hkl-list.h>
#include <hkl/hkl-quaternion.h>
#include <hkl/hkl-axis.h>
HKL_BEGIN_DECLS
typedef struct _HklHolder HklHolder;
typedef struct _HklGeometryConfig HklGeometryConfig;
typedef struct _HklGeometry HklGeometry;
typedef struct _HklGeometryList HklGeometryList;
typedef struct _HklGeometryListItem HklGeometryListItem;
typedef void (* HklGeometryListMultiplyFunction) (HklGeometryList *self,
size_t idx);
enum _HklGeometryType
{
HKL_GEOMETRY_TYPE_TWOC_VERTICAL,
HKL_GEOMETRY_TYPE_EULERIAN4C_VERTICAL,
HKL_GEOMETRY_TYPE_KAPPA4C_VERTICAL,
HKL_GEOMETRY_TYPE_EULERIAN6C,
HKL_GEOMETRY_TYPE_KAPPA6C,
HKL_GEOMETRY_TYPE_ZAXIS
};
typedef enum _HklGeometryType HklGeometryType;
struct _HklHolder {
HklGeometry *geometry;
HKL_LIST(size_t, idx);
HklQuaternion q;
};
struct _HklGeometryConfig {
const char *name;
HklGeometryType type;
};
struct _HklGeometry
{
const HklGeometryConfig *config;
HklSource source;
HKL_LIST(HklAxis, axes);
HKL_LIST(HklHolder, holders);
};
struct _HklGeometryList
{
HKL_LIST(HklGeometryListItem *, items);
HklGeometryListMultiplyFunction multiply;
};
struct _HklGeometryListItem
{
HklGeometry *geometry;
};
/*************/
/* HklHolder */
/*************/
extern HklAxis *hkl_holder_add_rotation_axis(HklHolder *self,
char const *name, double x, double y, double z);
/***************/
/* HklGeometry */
/***************/
extern HklGeometry *hkl_geometry_new(void);
extern HklGeometry *hkl_geometry_new_copy(HklGeometry const *self);
extern void hkl_geometry_free(HklGeometry *self);
extern void hkl_geometry_init_geometry(HklGeometry *self,
HklGeometry const *src);
extern HklHolder *hkl_geometry_add_holder(HklGeometry *self);
extern void hkl_geometry_update(HklGeometry *self);
extern HklAxis *hkl_geometry_get_axis_by_name(HklGeometry *self,
char const *name);
extern void hkl_geometry_randomize(HklGeometry *self);
extern int hkl_geometry_set_values_v(HklGeometry *self,
size_t len, ...);
extern double hkl_geometry_distance(HklGeometry *self, HklGeometry *geom);
extern double hkl_geometry_distance_orthodromic(HklGeometry *self, HklGeometry *geom);
extern int hkl_geometry_closest_from_geometry_with_range(HklGeometry *self, HklGeometry *ref);
extern int hkl_geometry_is_valid(HklGeometry const *self);
extern void hkl_geometry_fprintf(FILE *file, HklGeometry const *self);
/*******************/
/* HklGeometryList */
/*******************/
extern HklGeometryList *hkl_geometry_list_new(void);
extern void hkl_geometry_list_free(HklGeometryList *self);
extern void hkl_geometry_list_add(HklGeometryList *self, HklGeometry *geometry);
extern void hkl_geometry_list_reset(HklGeometryList *self);
extern void hkl_geometry_list_sort(HklGeometryList *self, HklGeometry *ref);
extern void hkl_geometry_list_fprintf(FILE *f, HklGeometryList const *self);
extern void hkl_geometry_list_multiply(HklGeometryList *self);
extern void hkl_geometry_list_multiply_from_range(HklGeometryList *self);
extern void hkl_geometry_list_remove_invalid(HklGeometryList *self);
extern int hkl_geometry_list_len(HklGeometryList *self);
extern int hkl_geometry_list_is_empty(HklGeometryList *self);
/***********************/
/* HklGeometryListItem */
/***********************/
extern HklGeometryListItem *hkl_geometry_list_item_new(HklGeometry *geometry);
extern void hkl_geometry_list_item_free(HklGeometryListItem *self);
HKL_END_DECLS
#endif /* __HKL_GEOMETRY_H__ */
|