Changed mirrorpoints to antiscian in the final naming convention

This commit is contained in:
Gergely Polonkai 2013-09-16 10:13:25 +02:00
parent ea91278738
commit 767d30f231
6 changed files with 140 additions and 138 deletions

View File

@ -61,16 +61,16 @@ Then, you can get the planet data with
GswePlanetData *sun_data = gswe_moment_get_planet(moment, GSWE_PLANET_SUN); GswePlanetData *sun_data = gswe_moment_get_planet(moment, GSWE_PLANET_SUN);
``` ```
### Getting aspects and mirrorpoints ### Getting aspects and antiscia
SWE-GLib is also able to calculate aspects and mirrorpoints. This functionality does not exist in the Swiss Ephemeris library, though. For this, of course, you have to add multiple planets (at least two) to your `GsweMoment`. After that, you can call `gswe_moment_get_planet_aspects()` and `gswe_moment_get_planet_mirrorpoints()`. SWE-GLib is also able to calculate aspects and antiscia. This functionality does not exist in the Swiss Ephemeris library, though. For this, of course, you have to add multiple planets (at least two) to your `GsweMoment`. After that, you can call `gswe_moment_get_planet_aspects()` and `gswe_moment_get_planet_antiscia()`.
```c ```c
GList *sun_aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_SUN); GList *sun_aspects = gswe_moment_get_planet_aspects(moment, GSWE_PLANET_SUN);
GList *sun_mirrorpoints = gswe_moment_get_planet_mirrorpoints(moment, GSWE_PLANET_SUN); GList *sun_antiscia = gswe_moment_get_planet_antiscia(moment, GSWE_PLANET_SUN);
``` ```
The returned GList objects hold zero or more `GsweAspectData` or `GsweMirrorData` objects, respectively. The returned GList objects hold zero or more `GsweAspectData` or `GsweAntiscionData` objects, respectively.
### Getting the Moon phase ### Getting the Moon phase

View File

@ -48,9 +48,9 @@
* @moon_phase: the calculated Moon phase data * @moon_phase: the calculated Moon phase data
* @aspect_list: (element-type GsweAspectData): the list of calculated aspects * @aspect_list: (element-type GsweAspectData): the list of calculated aspects
* @aspect_revision: the revision of the aspect data * @aspect_revision: the revision of the aspect data
* @mirrorpoint_list: (element-type GsweMirrorData): the list of calculated * @antiscia_list: (element-type GsweAntisciaData): the list of calculated
* mirrorpoints (antiscia) * antiscia (mirror points)
* @mirrorpoint_revision: the revision of the mirrorpoint data * @antiscia_revision: the revision of the antiscia data
*/ */
struct _GsweMomentPrivate { struct _GsweMomentPrivate {
GsweTimestamp *timestamp; GsweTimestamp *timestamp;
@ -67,8 +67,8 @@ struct _GsweMomentPrivate {
GsweMoonPhaseData moon_phase; GsweMoonPhaseData moon_phase;
GList *aspect_list; GList *aspect_list;
guint aspect_revision; guint aspect_revision;
GList *mirrorpoint_list; GList *antiscia_list;
guint mirrorpoint_revision; guint antiscia_revision;
}; };
enum { enum {
@ -155,14 +155,14 @@ gswe_moment_init(GsweMoment *moment)
moment->priv->house_list = NULL; moment->priv->house_list = NULL;
moment->priv->planet_list = NULL; moment->priv->planet_list = NULL;
moment->priv->aspect_list = NULL; moment->priv->aspect_list = NULL;
moment->priv->mirrorpoint_list = NULL; moment->priv->antiscia_list = NULL;
moment->priv->element_points = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL); moment->priv->element_points = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL);
moment->priv->quality_points = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL); moment->priv->quality_points = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, NULL);
moment->priv->house_revision = 0; moment->priv->house_revision = 0;
moment->priv->points_revision = 0; moment->priv->points_revision = 0;
moment->priv->moon_phase_revision = 0; moment->priv->moon_phase_revision = 0;
moment->priv->aspect_revision = 0; moment->priv->aspect_revision = 0;
moment->priv->mirrorpoint_revision = 0; moment->priv->antiscia_revision = 0;
moment->priv->revision = 1; moment->priv->revision = 1;
} }
@ -316,7 +316,7 @@ gswe_moment_get_timestamp(GsweMoment *moment)
* *
* Sets the coordinates associated with @moment. Emits the ::changed signal on * Sets the coordinates associated with @moment. Emits the ::changed signal on
* @moment. All values depending on the coordinates (planetary and house cusp * @moment. All values depending on the coordinates (planetary and house cusp
* positions, aspects, mirrorpoints, so basically everything) should be * positions, aspects, antiscion, so basically everything) should be
* re-fetched after changing it. * re-fetched after changing it.
*/ */
void void
@ -1038,46 +1038,45 @@ gswe_moment_get_planet_aspects(GsweMoment *moment, GswePlanet planet, GError **e
} }
static gboolean static gboolean
find_mirror(gpointer mirror_p, GsweMirrorInfo *mirror_info, GsweMirrorData *mirror_data) find_antiscion(GsweAntiscionAxis *axis, GsweAntiscionInfo *antiscion_info, GsweAntiscionData *antiscion_data)
{ {
GsweMirror mirror = GPOINTER_TO_INT(mirror_p);
gdouble start_point, gdouble start_point,
mirror_position, axis_position,
planet_orb; planet_orb;
if (mirror == GSWE_MIRROR_NONE) { if (*axis == GSWE_ANTISCION_AXIS_NONE) {
return FALSE; return FALSE;
} }
planet_orb = fmin(mirror_data->planet1->planet_info->orb, mirror_data->planet2->planet_info->orb); planet_orb = fmin(antiscion_data->planet1->planet_info->orb, antiscion_data->planet2->planet_info->orb);
start_point = (mirror_info->start_sign->sign_id - 1) * 30.0; start_point = (antiscion_info->start_sign->sign_id - 1) * 30.0;
if (mirror_info->middle_axis == TRUE) { if (antiscion_info->middle_axis == TRUE) {
start_point += 15.0; start_point += 15.0;
} }
mirror_position = 2 * start_point - mirror_data->planet1->position; axis_position = 2 * start_point - antiscion_data->planet1->position;
if (mirror_position < 0) { if (axis_position < 0) {
mirror_position += 360.0; axis_position += 360.0;
} }
if ((mirror_data->difference = fabs(mirror_data->planet2->position - mirror_position)) <= planet_orb) { if ((antiscion_data->difference = fabs(antiscion_data->planet2->position - axis_position)) <= planet_orb) {
mirror_data->mirror_info = mirror_info; antiscion_data->antiscion_info = antiscion_info;
mirror_data->mirror = mirror; antiscion_data->axis = *axis;
return TRUE; return TRUE;
} else { } else {
mirror_data->difference = 0.0; antiscion_data->difference = 0.0;
} }
return FALSE; return FALSE;
} }
static gint static gint
find_mirror_by_both_planets(GsweMirrorData *mirror, struct GsweAspectFinder *mirror_finder) find_antiscion_by_both_planets(GsweAntiscionData *antiscion, struct GsweAspectFinder *antiscion_finder)
{ {
if (((mirror->planet1->planet_id == mirror_finder->planet1) && (mirror->planet2->planet_id == mirror_finder->planet2)) || ((mirror->planet1->planet_id == mirror_finder->planet2) && (mirror->planet2->planet_id == mirror_finder->planet1))) { if (((antiscion->planet1->planet_id == antiscion_finder->planet1) && (antiscion->planet2->planet_id == antiscion_finder->planet2)) || ((antiscion->planet1->planet_id == antiscion_finder->planet2) && (antiscion->planet2->planet_id == antiscion_finder->planet1))) {
return 0; return 0;
} }
@ -1085,90 +1084,90 @@ find_mirror_by_both_planets(GsweMirrorData *mirror, struct GsweAspectFinder *mir
} }
static void static void
gswe_moment_calculate_mirrorpoints(GsweMoment *moment) gswe_moment_calculate_antiscia(GsweMoment *moment)
{ {
GList *oplanet, GList *oplanet,
*iplanet; *iplanet;
if (moment->priv->mirrorpoint_revision == moment->priv->revision) { if (moment->priv->antiscia_revision == moment->priv->revision) {
return; return;
} }
gswe_moment_calculate_all_planets(moment); gswe_moment_calculate_all_planets(moment);
g_list_free_full(moment->priv->mirrorpoint_list, g_free); g_list_free_full(moment->priv->antiscia_list, g_free);
for (oplanet = moment->priv->planet_list; oplanet; oplanet = oplanet->next) { for (oplanet = moment->priv->planet_list; oplanet; oplanet = oplanet->next) {
for (iplanet = moment->priv->planet_list; iplanet; iplanet = iplanet->next) { for (iplanet = moment->priv->planet_list; iplanet; iplanet = iplanet->next) {
GswePlanetData *outer_planet = oplanet->data, GswePlanetData *outer_planet = oplanet->data,
*inner_planet = iplanet->data; *inner_planet = iplanet->data;
GsweMirrorData *mirror_data; GsweAntiscionData *antiscion_data;
struct GsweAspectFinder mirror_finder; struct GsweAspectFinder antiscion_finder;
if (outer_planet->planet_id == inner_planet->planet_id) { if (outer_planet->planet_id == inner_planet->planet_id) {
continue; continue;
} }
mirror_finder.planet1 = outer_planet->planet_id; antiscion_finder.planet1 = outer_planet->planet_id;
mirror_finder.planet2 = inner_planet->planet_id; antiscion_finder.planet2 = inner_planet->planet_id;
if (g_list_find_custom(moment->priv->mirrorpoint_list, &mirror_finder, (GCompareFunc)find_mirror_by_both_planets) != NULL) { if (g_list_find_custom(moment->priv->antiscia_list, &antiscion_finder, (GCompareFunc)find_antiscion_by_both_planets) != NULL) {
continue; continue;
} }
mirror_data = g_new0(GsweMirrorData, 1); antiscion_data = g_new0(GsweAntiscionData, 1);
mirror_data->planet1 = outer_planet; antiscion_data->planet1 = outer_planet;
mirror_data->planet2 = inner_planet; antiscion_data->planet2 = inner_planet;
mirror_data->mirror = GSWE_MIRROR_NONE; antiscion_data->axis = GSWE_ANTISCION_AXIS_NONE;
(void)g_hash_table_find(gswe_mirror_info_table, (GHRFunc)find_mirror, mirror_data); (void)g_hash_table_find(gswe_antiscion_info_table, (GHRFunc)find_antiscion, antiscion_data);
if (mirror_data->mirror == GSWE_MIRROR_NONE) { if (antiscion_data->axis == GSWE_ANTISCION_AXIS_NONE) {
mirror_data->mirror_info = g_hash_table_lookup(gswe_mirror_info_table, GINT_TO_POINTER(GSWE_MIRROR_NONE)); antiscion_data->antiscion_info = g_hash_table_lookup(gswe_antiscion_info_table, GINT_TO_POINTER(GSWE_ANTISCION_AXIS_NONE));
} }
moment->priv->mirrorpoint_list = g_list_prepend(moment->priv->mirrorpoint_list, mirror_data); moment->priv->antiscia_list = g_list_prepend(moment->priv->antiscia_list, antiscion_data);
} }
} }
moment->priv->mirrorpoint_revision = moment->priv->revision; moment->priv->antiscia_revision = moment->priv->revision;
} }
/** /**
* gswe_moment_get_all_mirrorpoints: * gswe_moment_get_all_antiscia:
* @moment: The GsweMoment object to operate on. * @moment: The GsweMoment object to operate on.
* *
* Get all found mirrorpoints between planets in @moment. * Get all found antiscia between planets in @moment.
* *
* Returns: (element-type GsweMirrorData) (transfer none): A #GList of * Returns: (element-type GsweAntiscionData) (transfer none): A #GList of
* #GsweMirrorData. * #GsweAntiscionData.
*/ */
GList * GList *
gswe_moment_get_all_mirrorpoints(GsweMoment *moment) gswe_moment_get_all_antiscia(GsweMoment *moment)
{ {
gswe_moment_calculate_mirrorpoints(moment); gswe_moment_calculate_antiscia(moment);
return moment->priv->mirrorpoint_list; return moment->priv->antiscia_list;
} }
/** /**
* gswe_moment_get_all_planet_mirrorpoints: * gswe_moment_get_all_planet_antiscia:
* @moment: The GsweMoment object to operate on. * @moment: The GsweMoment object to operate on.
* @planet: The planet whose mirrorpoint planets are requested. * @planet: The planet whose antiscion planets are requested.
* @err: a #GError * @err: a #GError
* *
* Get all the mirrorpoint planets on all registered mirrors for @planet. * Get all the antiscion planets on all registered axes for @planet.
* *
* Returns: (element-type GsweMirrorData) (transfer container): a #GList of * Returns: (element-type GsweAntiscionData) (transfer container): a #GList of
* #GsweMirrorData. The GsweMirrorData structures belong to @moment, * #GsweAntiscionData. The GsweAntiscionData structures belong to
* but the GList should be freed using g_list_free(). If no planet * @moment, but the GList should be freed using g_list_free(). If no
* has any mirrorpoints, or the planet has not been added to @moment, * planet has any antiscia, or the planet has not been added to
* returns NULL. * @moment, returns NULL.
*/ */
GList * GList *
gswe_moment_get_all_planet_mirrorpoints(GsweMoment *moment, GswePlanet planet, GError **err) gswe_moment_get_all_planet_antiscia(GsweMoment *moment, GswePlanet planet, GError **err)
{ {
GList *ret = NULL, GList *ret = NULL,
*mirror; *antiscion;
if (!gswe_moment_has_planet(moment, planet)) { if (!gswe_moment_has_planet(moment, planet)) {
g_set_error(err, GSWE_MOMENT_ERROR, GSWE_MOMENT_ERROR_NONADDED_PLANET, "Specified planet is not added to the moment object"); g_set_error(err, GSWE_MOMENT_ERROR, GSWE_MOMENT_ERROR_NONADDED_PLANET, "Specified planet is not added to the moment object");
@ -1176,13 +1175,13 @@ gswe_moment_get_all_planet_mirrorpoints(GsweMoment *moment, GswePlanet planet, G
return NULL; return NULL;
} }
gswe_moment_calculate_mirrorpoints(moment); gswe_moment_calculate_antiscia(moment);
for (mirror = moment->priv->mirrorpoint_list; mirror; mirror = mirror->next) { for (antiscion = moment->priv->antiscia_list; antiscion; antiscion = g_list_next(antiscion)) {
GsweMirrorData *mirror_data = mirror->data; GsweAntiscionData *antiscion_data = antiscion->data;
if ((mirror_data->planet1->planet_id == planet) || (mirror_data->planet2->planet_id == planet)) { if ((antiscion_data->planet1->planet_id == planet) || (antiscion_data->planet2->planet_id == planet)) {
ret = g_list_prepend(ret, mirror_data); ret = g_list_prepend(ret, antiscion_data);
} }
} }
@ -1190,30 +1189,30 @@ gswe_moment_get_all_planet_mirrorpoints(GsweMoment *moment, GswePlanet planet, G
} }
/** /**
* gswe_moment_get_mirror_all_mirrorpoints: * gswe_moment_get_axis_all_antiscia:
* @moment: The GsweMoment object to operate on. * @moment: The GsweMoment object to operate on.
* @mirror: The mirror on which you want to search for mirrored planets. * @axis: The axis on which you want to search for antiscion planets.
* *
* Get all the mirrorpoint planets on the specified mirror @mirror. * Get all the antiscion planets on the specified axis @axis.
* *
* Returns: (element-type GsweMirrorData) (transfer container): a #GList of * Returns: (element-type GsweAntiscionData) (transfer container): a #GList of
* #GsweMirrorData. The GsweMirrorData structures belong to @moment, * #GsweAntiscionData. The GsweAntiscionData structures belong to @moment,
* but the GList should be freed using g_list_free(). If there are * but the GList should be freed using g_list_free(). If there are
* no mirrored planets on the given mirror, returns NULL. * no antiscion planets on the given axis, returns NULL.
*/ */
GList * GList *
gswe_moment_get_mirror_all_mirrorpoints(GsweMoment *moment, GsweMirror mirror) gswe_moment_get_axis_all_antiscia(GsweMoment *moment, GsweAntiscionAxis axis)
{ {
GList *ret = NULL, GList *ret = NULL,
*mirror_l; *antiscion_l;
gswe_moment_calculate_mirrorpoints(moment); gswe_moment_calculate_antiscia(moment);
for (mirror_l = moment->priv->mirrorpoint_list; mirror_l; mirror_l = mirror_l->next) { for (antiscion_l = moment->priv->antiscia_list; antiscion_l; antiscion_l = g_list_next(antiscion_l)) {
GsweMirrorData *mirror_data = mirror_l->data; GsweAntiscionData *antiscion_data = antiscion_l->data;
if (mirror_data->mirror == mirror) { if (antiscion_data->axis == axis) {
ret = g_list_prepend(ret, mirror_data); ret = g_list_prepend(ret, antiscion_data);
} }
} }
@ -1221,25 +1220,25 @@ gswe_moment_get_mirror_all_mirrorpoints(GsweMoment *moment, GsweMirror mirror)
} }
/** /**
* gswe_moment_get_mirror_planet_mirrorpoints: * gswe_moment_get_axis_planet_antiscia:
* @moment: the GsweMoment object to operate on * @moment: the GsweMoment object to operate on
* @mirror: the mirror on which you want to search for mirrored planets * @axis: the axis on which you want to search for antiscion planets
* @planet: the planet whose mirrorpoint planets are requested * @planet: the planet whose antiscion planets are requested
* @err: a #GError * @err: a #GError
* *
* Get the mirrorpoint planets of @planet as seen in @mirror. * Get the antiscion planets of @planet as seen in @axis.
* *
* Returns: (element-type GsweMirrorData) (transfer container): a #GList of * Returns: (element-type GsweAntiscionData) (transfer container): a #GList of
* #GsweMirrorData. The GsweMirrorData structires belong to @moment, * #GsweAntiscionData. The GsweAntiscionData structires belong to @moment,
* but the GList should be freed using g_list_free(). If the planet * but the GList should be freed using g_list_free(). If the planet
* has no mirrorpoints, or the planet has not been added to @moment, * has no antiscia, or the planet has not been added to @moment,
* returns NULL. * returns NULL.
*/ */
GList * GList *
gswe_moment_get_mirror_planet_mirrorpoints(GsweMoment *moment, GsweMirror mirror, GswePlanet planet, GError **err) gswe_moment_get_axis_planet_antiscia(GsweMoment *moment, GsweAntiscionAxis axis, GswePlanet planet, GError **err)
{ {
GList *ret = NULL, GList *ret = NULL,
*mirror_l; *antiscion_l;
if (!gswe_moment_has_planet(moment, planet)) { if (!gswe_moment_has_planet(moment, planet)) {
g_set_error(err, GSWE_MOMENT_ERROR, GSWE_MOMENT_ERROR_NONADDED_PLANET, "Specified planet is not added to the moment object"); g_set_error(err, GSWE_MOMENT_ERROR, GSWE_MOMENT_ERROR_NONADDED_PLANET, "Specified planet is not added to the moment object");
@ -1247,13 +1246,13 @@ gswe_moment_get_mirror_planet_mirrorpoints(GsweMoment *moment, GsweMirror mirror
return NULL; return NULL;
} }
gswe_moment_calculate_mirrorpoints(moment); gswe_moment_calculate_antiscia(moment);
for (mirror_l = moment->priv->mirrorpoint_list; mirror_l; mirror_l = mirror_l->next) { for (antiscion_l = moment->priv->antiscia_list; antiscion_l; antiscion_l = g_list_next(antiscion_l)) {
GsweMirrorData *mirror_data = mirror_l->data; GsweAntiscionData *antiscion_data = antiscion_l->data;
if (((mirror_data->planet1->planet_id == planet) || (mirror_data->planet2->planet_id == planet)) && (mirror_data->mirror == mirror)) { if (((antiscion_data->planet1->planet_id == planet) || (antiscion_data->planet2->planet_id == planet)) && (antiscion_data->axis == axis)) {
ret = g_list_prepend(ret, mirror_data); ret = g_list_prepend(ret, antiscion_data);
} }
} }

View File

@ -141,21 +141,22 @@ typedef struct {
} GsweAspectData; } GsweAspectData;
/** /**
* GsweMirrorData: * GsweAntiscionData:
* @planet1: the first planet in the mirror * @planet1: the first planet in the antiscion
* @planet2: the second planet in the mirror * @planet2: the second planet in the antiscion
* @mirror: the mirror on which this mirrorpoint is * @axis: the axis on which this antiscion is
* @mirror_info: the #GsweMirrorInfo structure associated with this mirror * @antiscion_info: the #GsweAntiscionInfo structure associated with this
* @difference: the difference in degrees between an exact mirror and this * antiscion
* given mirrorpoint * @difference: the difference in degrees between an exact antiscion and this
* given antiscion
*/ */
typedef struct { typedef struct {
GswePlanetData *planet1; GswePlanetData *planet1;
GswePlanetData *planet2; GswePlanetData *planet2;
GsweMirror mirror; GsweAntiscionAxis axis;
GsweMirrorInfo *mirror_info; GsweAntiscionInfo *antiscion_info;
gdouble difference; gdouble difference;
} GsweMirrorData; } GsweAntiscionData;
struct _GsweMoment { struct _GsweMoment {
/* Parent instance structure */ /* Parent instance structure */
@ -223,10 +224,10 @@ guint gswe_moment_get_quality_points(GsweMoment *moment, GsweQuality quality);
GsweMoonPhaseData *gswe_moment_get_moon_phase(GsweMoment *moment, GError **err); GsweMoonPhaseData *gswe_moment_get_moon_phase(GsweMoment *moment, GError **err);
GList *gswe_moment_get_all_aspects(GsweMoment *moment); GList *gswe_moment_get_all_aspects(GsweMoment *moment);
GList *gswe_moment_get_planet_aspects(GsweMoment *moment, GswePlanet planet, GError **err); GList *gswe_moment_get_planet_aspects(GsweMoment *moment, GswePlanet planet, GError **err);
GList *gswe_moment_get_all_mirrorpoints(GsweMoment *moment); GList *gswe_moment_get_all_antiscia(GsweMoment *moment);
GList *gswe_moment_get_all_planet_mirrorpoints(GsweMoment *moment, GswePlanet planet, GError **err); GList *gswe_moment_get_all_planet_antiscia(GsweMoment *moment, GswePlanet planet, GError **err);
GList *gswe_moment_get_mirror_all_mirrorpoints(GsweMoment *moment, GsweMirror mirror); GList *gswe_moment_get_axis_all_antiscia(GsweMoment *moment, GsweAntiscionAxis axis);
GList *gswe_moment_get_mirror_planet_mirrorpoints(GsweMoment *moment, GsweMirror mirror, GswePlanet planet, GError **err); GList *gswe_moment_get_axis_planet_antiscia(GsweMoment *moment, GsweAntiscionAxis axis, GswePlanet planet, GError **err);
GType gswe_moon_phase_data_get_type(void); GType gswe_moon_phase_data_get_type(void);
#define GSWE_TYPE_MOON_PHASE_DATA (gswe_moon_phase_data_get_type()) #define GSWE_TYPE_MOON_PHASE_DATA (gswe_moon_phase_data_get_type())

View File

@ -136,20 +136,22 @@ typedef enum {
} GsweAspect; } GsweAspect;
/** /**
* GsweMirror: * GsweAntiscionAxis:
* @GSWE_MIRROR_NONE: no mirror * @GSWE_ANTISCION_AXIS_NONE: no mirror
* @GSWE_MIRROR_ARIES: mirror on the Aries/Libra (0°-180°) axis * @GSWE_ANTISCION_AXIS_ARIES: mirror on the Aries/Libra (0°-180°) axis
* @GSWE_MIRROR_MID_TAURUS: mirror on the middle of Taurus/Scorpio (45°-225°) axis * @GSWE_ANTISCION_AXIS_MID_TAURUS: mirror on the middle of Taurus/Scorpio
* @GSWE_MIRROR_CANCER: mirror on the Cancer/Capricorn (90°-270°) axis * (45°-225°) axis
* @GSWE_MIRROR_MID_LEO: mirror on the middle of Leo/Aquarius (135°-315°) axis * @GSWE_ANTISCION_AXIS_CANCER: mirror on the Cancer/Capricorn (90°-270°) axis
* @GSWE_ANTISCION_AXIS_MID_LEO: mirror on the middle of Leo/Aquarius
* (135°-315°) axis
*/ */
typedef enum { typedef enum {
GSWE_MIRROR_NONE, GSWE_ANTISCION_AXIS_NONE,
GSWE_MIRROR_ARIES, GSWE_ANTISCION_AXIS_ARIES,
GSWE_MIRROR_MID_TAURUS, GSWE_ANTISCION_AXIS_MID_TAURUS,
GSWE_MIRROR_CANCER, GSWE_ANTISCION_AXIS_CANCER,
GSWE_MIRROR_MID_LEO GSWE_ANTISCION_AXIS_MID_LEO
} GsweMirror; } GsweAntiscionAxis;
/** /**
* GsweElement: * GsweElement:
@ -299,18 +301,18 @@ typedef struct {
} GsweAspectInfo; } GsweAspectInfo;
/** /**
* GsweMirrorInfo: * GsweAntiscionInfo:
* @mirror_id: the identifier of this mirror axis * @axis_id: the identifier of this mirror's axis
* @start_sign: represents the sign in whict the mirror axis starts * @start_sign: represents the sign in whict the mirror axis starts
* @name: the name of the mirror * @name: the name of the mirror
* @middle_axis: if TRUE, the axis runs through the middle of its starting sign * @middle_axis: if TRUE, the axis runs through the middle of its starting sign
*/ */
typedef struct { typedef struct {
GsweMirror mirror_id; GsweAntiscionAxis axis_id;
GsweSignInfo *start_sign; GsweSignInfo *start_sign;
gchar *name; gchar *name;
gboolean middle_axis; gboolean middle_axis;
} GsweMirrorInfo; } GsweAntiscionInfo;
#endif /* __SWE_GLIB_GSWE_PLANETS_H__ */ #endif /* __SWE_GLIB_GSWE_PLANETS_H__ */

View File

@ -29,7 +29,7 @@ GHashTable *gswe_planet_info_table;
GHashTable *gswe_sign_info_table; GHashTable *gswe_sign_info_table;
GHashTable *gswe_house_system_info_table; GHashTable *gswe_house_system_info_table;
GHashTable *gswe_aspect_info_table; GHashTable *gswe_aspect_info_table;
GHashTable *gswe_mirror_info_table; GHashTable *gswe_antiscion_info_table;
GsweTimestamp *gswe_full_moon_base_date; GsweTimestamp *gswe_full_moon_base_date;
#define ADD_PLANET(ht, v, i, s, r, n, o, h, dom1, dom2, exi1, exi2, exa, fal) (v) = g_new0(GswePlanetInfo, 1); \ #define ADD_PLANET(ht, v, i, s, r, n, o, h, dom1, dom2, exi1, exi2, exa, fal) (v) = g_new0(GswePlanetInfo, 1); \
@ -69,9 +69,9 @@ GsweTimestamp *gswe_full_moon_base_date;
(v)->major = (m); \ (v)->major = (m); \
g_hash_table_replace((ht), GINT_TO_POINTER(i), (v)); g_hash_table_replace((ht), GINT_TO_POINTER(i), (v));
#define ADD_MIRROR(ht, v, hts, vs, i, n, s, m) (v) = g_new0(GsweMirrorInfo, 1); \ #define ADD_ANTISCION(ht, v, hts, vs, i, n, s, m) (v) = g_new0(GsweAntiscionInfo, 1); \
(vs) = g_hash_table_lookup((hts), GINT_TO_POINTER(i)); \ (vs) = g_hash_table_lookup((hts), GINT_TO_POINTER(i)); \
(v)->mirror_id = (i); \ (v)->axis_id = (i); \
(v)->start_sign = (vs); \ (v)->start_sign = (vs); \
(v)->name = g_strdup(n); \ (v)->name = g_strdup(n); \
(v)->middle_axis = m; \ (v)->middle_axis = m; \
@ -105,10 +105,10 @@ gswe_free_aspect_info(gpointer aspect_info)
} }
void void
gswe_free_mirror_info(gpointer mirror_info) gswe_free_antiscion_info(GsweAntiscionInfo *antiscion_info)
{ {
g_free(((GsweMirrorInfo *)mirror_info)->name); g_free(antiscion_info->name);
g_free(mirror_info); g_free(antiscion_info);
} }
/** /**
@ -124,7 +124,7 @@ gswe_init(void)
GsweSignInfo *sign_info; GsweSignInfo *sign_info;
GsweHouseSystemInfo *house_system_info; GsweHouseSystemInfo *house_system_info;
GsweAspectInfo *aspect_info; GsweAspectInfo *aspect_info;
GsweMirrorInfo *mirror_info; GsweAntiscionInfo *antiscion_info;
bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR); bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8"); bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
@ -191,13 +191,13 @@ gswe_init(void)
ADD_ASPECT(gswe_aspect_info_table, aspect_info, GSWE_ASPECT_QUINTILE, _("Quintile"), 72, 3, TRUE, FALSE); ADD_ASPECT(gswe_aspect_info_table, aspect_info, GSWE_ASPECT_QUINTILE, _("Quintile"), 72, 3, TRUE, FALSE);
ADD_ASPECT(gswe_aspect_info_table, aspect_info, GSWE_ASPECT_BIQUINTILE, _("Bi-quintile"), 144, 3, TRUE, FALSE); ADD_ASPECT(gswe_aspect_info_table, aspect_info, GSWE_ASPECT_BIQUINTILE, _("Bi-quintile"), 144, 3, TRUE, FALSE);
gswe_mirror_info_table = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, gswe_free_mirror_info); gswe_antiscion_info_table = g_hash_table_new_full(g_direct_hash, g_direct_equal, NULL, (GDestroyNotify)gswe_free_antiscion_info);
ADD_MIRROR(gswe_mirror_info_table, mirror_info, gswe_sign_info_table, sign_info, GSWE_MIRROR_NONE, _("None"), GSWE_SIGN_NONE, FALSE); ADD_ANTISCION(gswe_antiscion_info_table, antiscion_info, gswe_sign_info_table, sign_info, GSWE_ANTISCION_AXIS_NONE, _("None"), GSWE_SIGN_NONE, FALSE);
ADD_MIRROR(gswe_mirror_info_table, mirror_info, gswe_sign_info_table, sign_info, GSWE_MIRROR_ARIES, _("Aries/Libra"), GSWE_SIGN_ARIES, FALSE); ADD_ANTISCION(gswe_antiscion_info_table, antiscion_info, gswe_sign_info_table, sign_info, GSWE_ANTISCION_AXIS_ARIES, _("Aries/Libra"), GSWE_SIGN_ARIES, FALSE);
ADD_MIRROR(gswe_mirror_info_table, mirror_info, gswe_sign_info_table, sign_info, GSWE_MIRROR_MID_TAURUS, _("mid Taurus/Scorpio"), GSWE_SIGN_TAURUS, TRUE); ADD_ANTISCION(gswe_antiscion_info_table, antiscion_info, gswe_sign_info_table, sign_info, GSWE_ANTISCION_AXIS_MID_TAURUS, _("mid Taurus/Scorpio"), GSWE_SIGN_TAURUS, TRUE);
ADD_MIRROR(gswe_mirror_info_table, mirror_info, gswe_sign_info_table, sign_info, GSWE_MIRROR_CANCER, _("Cancer/Capricorn"), GSWE_SIGN_CANCER, FALSE); ADD_ANTISCION(gswe_antiscion_info_table, antiscion_info, gswe_sign_info_table, sign_info, GSWE_ANTISCION_AXIS_CANCER, _("Cancer/Capricorn"), GSWE_SIGN_CANCER, FALSE);
ADD_MIRROR(gswe_mirror_info_table, mirror_info, gswe_sign_info_table, sign_info, GSWE_MIRROR_MID_LEO, _("mid Leo/Aquarius"), GSWE_SIGN_LEO, TRUE); ADD_ANTISCION(gswe_antiscion_info_table, antiscion_info, gswe_sign_info_table, sign_info, GSWE_ANTISCION_AXIS_MID_LEO, _("mid Leo/Aquarius"), GSWE_SIGN_LEO, TRUE);
gswe_full_moon_base_date = gswe_timestamp_new_from_gregorian_full(2005, 5, 8, 3, 48, 0, 0, 0.0); gswe_full_moon_base_date = gswe_timestamp_new_from_gregorian_full(2005, 5, 8, 3, 48, 0, 0, 0.0);

View File

@ -29,7 +29,7 @@ extern GHashTable *gswe_planet_info_table;
extern GHashTable *gswe_sign_info_table; extern GHashTable *gswe_sign_info_table;
extern GHashTable *gswe_house_system_info_table; extern GHashTable *gswe_house_system_info_table;
extern GHashTable *gswe_aspect_info_table; extern GHashTable *gswe_aspect_info_table;
extern GHashTable *gswe_mirror_info_table; extern GHashTable *gswe_antiscion_info_table;
void gswe_init(); void gswe_init();