1 /*   EXTRAITS DE LA LICENCE
2 	Copyright CEA, contributeurs : Damien
3 	CALISTE, laboratoire L_Sim, (2018)
4 
5 	Adresse mèl :
6 	CALISTE, damien P caliste AT cea P fr.
7 
8 	Ce logiciel est un programme informatique servant à visualiser des
9 	structures atomiques dans un rendu pseudo-3D.
10 
11 	Ce logiciel est régi par la licence CeCILL soumise au droit français et
12 	respectant les principes de diffusion des logiciels libres. Vous pouvez
13 	utiliser, modifier et/ou redistribuer ce programme sous les conditions
14 	de la licence CeCILL telle que diffusée par le CEA, le CNRS et l'INRIA
15 	sur le site "http://www.cecill.info".
16 
17 	Le fait que vous puissiez accéder à cet en-tête signifie que vous avez
18 	pris connaissance de la licence CeCILL, et que vous en avez accepté les
19 	termes (cf. le fichier Documentation/licence.fr.txt fourni avec ce logiciel).
20 */
21 
22 /*   LICENCE SUM UP
23 	Copyright CEA, contributors : Damien
24 	CALISTE, laboratoire L_Sim, (2018)
25 
26 	E-mail address:
27 	CALISTE, damien P caliste AT cea P fr.
28 
29 	This software is a computer program whose purpose is to visualize atomic
30 	configurations in 3D.
31 
32 	This software is governed by the CeCILL  license under French law and
33 	abiding by the rules of distribution of free software.  You can  use,
34 	modify and/ or redistribute the software under the terms of the CeCILL
35 	license as circulated by CEA, CNRS and INRIA at the following URL
36 	"http://www.cecill.info".
37 
38 	The fact that you are presently reading this means that you have had
39 	knowledge of the CeCILL license and that you accept its terms. You can
40 	find a copy of this licence shipped with this software at Documentation/licence.en.txt.
41 */
42 
43 #ifndef POLEPROP_H
44 #define POLEPROP_H
45 
46 #include <glib.h>
47 #include <glib-object.h>
48 
49 #include "floatProp.h"
50 
51 G_BEGIN_DECLS
52 
53 #define VISU_TYPE_NODE_VALUES_POLE	      (visu_node_values_pole_get_type ())
54 #define VISU_NODE_VALUES_POLE(obj)	      (G_TYPE_CHECK_INSTANCE_CAST(obj, VISU_TYPE_NODE_VALUES_POLE, VisuNodeValuesPole))
55 #define VISU_NODE_VALUES_POLE_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST(klass, VISU_TYPE_NODE_VALUES_POLE, VisuNodeValuesPoleClass))
56 #define VISU_IS_NODE_VALUES_POLE_TYPE(obj)    (G_TYPE_CHECK_INSTANCE_TYPE(obj, VISU_TYPE_NODE_VALUES_POLE))
57 #define VISU_IS_NODE_VALUES_POLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE(klass, VISU_TYPE_NODE_VALUES_POLE))
58 #define VISU_NODE_VALUES_POLE_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS(obj, VISU_TYPE_NODE_VALUES_POLE, VisuNodeValuesPoleClass))
59 
60 /**
61  * VisuNodeValuesPole:
62  *
63  * Common name to refer to a #_VisuNodeValuesPole.
64  */
65 typedef struct _VisuNodeValuesPole VisuNodeValuesPole;
66 struct _VisuNodeValuesPole
67 {
68   VisuNodeValuesFarray parent;
69 };
70 
71 /**
72  * VisuNodeValuesPoleClass:
73  * @parent: private.
74  *
75  * Common name to refer to a #_VisuNodeValuesPoleClass.
76  */
77 typedef struct _VisuNodeValuesPoleClass VisuNodeValuesPoleClass;
78 struct _VisuNodeValuesPoleClass
79 {
80   VisuNodeValuesFarrayClass parent;
81 };
82 
83 /**
84  * visu_node_values_pole_get_type:
85  *
86  * This method returns the type of #VisuNodeValuesPole, use
87  * VISU_TYPE_NODE_VALUES_POLE instead.
88  *
89  * Since: 3.8
90  *
91  * Returns: the type of #VisuNodeValuesPole.
92  */
93 GType visu_node_values_pole_get_type(void);
94 
95 /**
96  * VisuPoleOrder:
97  * @VISU_MONOPOLE: a mono-pole.
98  * @VISU_DIPOLE: a di-pole.
99  * @VISU_QUADRUPOLE: a quadru-pole.
100  *
101  * Various pole orders.
102  *
103  * Since: 3.8
104  */
105 typedef enum {
106   VISU_MONOPOLE,
107   VISU_DIPOLE,
108   VISU_QUADRUPOLE,
109 } VisuPoleOrder;
110 
111 VisuNodeValuesPole* visu_node_values_pole_new(VisuNodeArray *arr,
112                                               const gchar *label);
113 
114 const gfloat* visu_node_values_pole_getAt(const VisuNodeValuesPole *pole,
115                                           const VisuNode *node,
116                                           VisuPoleOrder order);
117 
118 gboolean visu_node_values_pole_setMonoAt(VisuNodeValuesPole *pole,
119                                          const VisuNode *node,
120                                          gfloat val);
121 gboolean visu_node_values_pole_setDiAt(VisuNodeValuesPole *pole,
122                                        const VisuNode *node,
123                                        const gfloat val[3]);
124 gboolean visu_node_values_pole_setQuadAt(VisuNodeValuesPole *pole,
125                                          const VisuNode *node,
126                                          const gfloat val[5]);
127 gboolean visu_node_values_pole_setMonoAtDbl(VisuNodeValuesPole *pole,
128                                             const VisuNode *node,
129                                             gdouble val);
130 gboolean visu_node_values_pole_setDiAtDbl(VisuNodeValuesPole *pole,
131                                           const VisuNode *node,
132                                           const gdouble val[3]);
133 gboolean visu_node_values_pole_setQuadAtDbl(VisuNodeValuesPole *pole,
134                                             const VisuNode *node,
135                                             const gdouble val[5]);
136 
137 G_END_DECLS
138 
139 #endif
140