diff --git a/docs/reference/swe-glib/swe-glib-sections.txt b/docs/reference/swe-glib/swe-glib-sections.txt
index bbb954a..30ecafb 100644
--- a/docs/reference/swe-glib/swe-glib-sections.txt
+++ b/docs/reference/swe-glib/swe-glib-sections.txt
@@ -185,12 +185,14 @@ gswe_antiscion_axis_info_get_type
gswe-antiscion-data
GsweAntiscionData
gswe_antiscion_data_new
+gswe_antiscion_data_new_with_planets
gswe_antiscion_data_ref
gswe_antiscion_data_unref
gswe_antiscion_data_set_planet1
gswe_antiscion_data_get_planet1
gswe_antiscion_data_set_planet2
gswe_antiscion_data_get_planet2
+gswe_antiscion_data_calculate
gswe_antiscion_data_get_axis
gswe_antiscion_data_get_antiscion_axis_info
gswe_antiscion_data_get_difference
diff --git a/src/gswe-antiscion-data.c b/src/gswe-antiscion-data.c
index 8133a63..c048c59 100644
--- a/src/gswe-antiscion-data.c
+++ b/src/gswe-antiscion-data.c
@@ -105,6 +105,25 @@ find_antiscion(gpointer axis_p, GsweAntiscionAxisInfo *antiscion_axis_info, Gswe
return FALSE;
}
+/**
+ * gswe_antiscion_data_calculate:
+ * @antiscion_data: a #GsweAntiscionData
+ *
+ * Calculates the antiscion between the planets set in @antiscion_data. Planets
+ * can be set either by calling gswe_antiscion_data_set_planet1() and
+ * gswe_antiscion_data_set_planet2(), or by creating the #GsweAntiscionData
+ * with gswe_antiscion_data_new_with_planets().
+ *
+ * If the object is created by
+ * gswe_antiscion_data_new_with_planets(), or when both planets are set by
+ * calling gswe_antiscion_data_set_planet1() and
+ * gswe_antiscion_data_set_planet2(), the antiscion information is
+ * automatically calculated. However, when either planet's data changes, the
+ * antiscion data is not calculated automatically, so if you expect the planets
+ * to get a new position (e.g. the #GsweTimestamp changes in a #GsweMoment
+ * which holds the @antiscion_data, in which case the planet positions are
+ * automatically adjusted), this function should be called.
+ */
void
gswe_antiscion_data_calculate(GsweAntiscionData *antiscion_data)
{
@@ -113,6 +132,16 @@ gswe_antiscion_data_calculate(GsweAntiscionData *antiscion_data)
}
}
+/**
+ * gswe_antiscion_data_new_with_planets:
+ * @planet1: a #GswePlanetData
+ * @planet2: a #GswePlanetData
+ *
+ * Creates a new #GsweAntiscionData object with both planets initially set. The
+ * respective antiscion is instantly calculated.
+ *
+ * Returns: (transfer full): a new #GsweAntiscionData
+ */
GsweAntiscionData *
gswe_antiscion_data_new_with_planets(GswePlanetData *planet1, GswePlanetData *planet2)
{
diff --git a/src/gswe-antiscion-data.h b/src/gswe-antiscion-data.h
index a899548..6c143f6 100644
--- a/src/gswe-antiscion-data.h
+++ b/src/gswe-antiscion-data.h
@@ -39,10 +39,13 @@ GType gswe_antiscion_data_get_type(void);
#define GSWE_TYPE_ANTISCION_DATA (gswe_antiscion_data_get_type())
GsweAntiscionData *gswe_antiscion_data_new(void);
+GsweAntiscionData *gswe_antiscion_data_new_with_planets(GswePlanetData *planet1, GswePlanetData *planet2);
GsweAntiscionData *gswe_antiscion_data_ref(GsweAntiscionData *antiscion_data);
void gswe_antiscion_data_unref(GsweAntiscionData *antiscion_data);
+void gswe_antiscion_data_calculate(GsweAntiscionData *antiscion_data);
+
void gswe_antiscion_data_set_planet1(GsweAntiscionData *antiscion_data, GswePlanetData *planet1);
GswePlanetData *gswe_antiscion_data_get_planet1(GsweAntiscionData *antiscion_data);