Compare commits

..

No commits in common. "main" and "1.x" have entirely different histories.
main ... 1.x

155 changed files with 50264 additions and 8530 deletions

23
.gitignore vendored
View File

@ -14,7 +14,6 @@
/.dirstamp
*.gir
*.typelib
*.gschema.valid
ChangeLog
# Files created by the build tools
@ -52,17 +51,6 @@ Makefile.in
/compile
/so_locations
# Testing related files
/test-driver
/tests/*-test
/tests/*-test.log
/tests/*-test.trs
/swe-glib-lcov*
test-suite.log
*.gcno
*.gcda
*.gcov
# Translation related files
/ABOUT-NLS
/po/POTFILES
@ -88,17 +76,13 @@ test-suite.log
/intltool-update.in
# SWE-GLib related files
/src/gswe-enumtypes.c
/src/gswe-enumtypes.h
/src/gswetest
src/gswe-enumtypes.c
src/gswe-enumtypes.h
src/gswetest
/data/swe-glib.pc
/data/swe-glib.spec
/src/*.vapi
/src/gswe-version.h
/data/*.gschema.xml
# Documentation related files
/docs/reference/*/*.actions
/docs/reference/*/*.args
/docs/reference/*/*.hierarchy
/docs/reference/*/*.interfaces
@ -111,6 +95,7 @@ test-suite.log
/docs/reference/*/*-overrides.txt
/docs/reference/*/*-undeclared.txt
/docs/reference/*/version.xml
/docs/reference/*/*-sections.txt
/docs/reference/*/*-undocumented.txt
/docs/reference/*/*-unused.txt
/docs/reference/*/xml/

View File

@ -1,17 +0,0 @@
sudo: false
language: c
addons:
apt:
packages:
- libglib2.0-dev
- gobject-introspection
- gnome-common
- autopoint
before_script: ./autogen.sh
script:
- make
- make check
before_install:
- pip install --user codecov
after_success:
- codecov

View File

@ -1,21 +1,15 @@
include $(top_srcdir)/swe-glib.mk
ACLOCAL_AMFLAGS = -I m4
SUBDIRS = src po data tests
if ENABLE_GTK_DOC
SUBDIRS += docs/reference/swe-glib
endif
SUBDIRS = swe swe/src swe/doc src po docs/reference/swe-glib data
DISTCHECK_CONFIGURE_FLAGS = --enable-gtk-doc
intltool_extra = intltool-extract.in intltool-merge.in intltool-update.in
EXTRA_DIST += $(intltool_extra) $(header_DATA) autogen.sh
EXTRA_DIST = $(intltool_extra) $(header_DATA) autogen.sh
DISTCLEANFILES += intltool-extract intltool-merge intltool-update
DISTCLEANFILES = intltool-extract intltool-merge intltool-update
MAINTAINERCLEANFILES += ChangeLog
MAINTAINERCLEANFILES = ChangeLog
distclean-local:
if test "$(srcdir)" = "."; then :; else \

View File

@ -1,38 +1,26 @@
# SWE-GLib
[![Build Status](https://travis-ci.org/gergelypolonkai/swe-glib.svg?branch=master)](https://travis-ci.org/gergelypolonkai/swe-glib)
[![codecov.io](https://codecov.io/github/gergelypolonkai/swe-glib/coverage.svg?branch=master)](https://codecov.io/github/gergelypolonkai/swe-glib?branch=master)
SWE-GLib is a GLib style wrapper library around Astrodienst's [Swiss Ephemeris library](http://www.astro.com/swisseph/).
SWE-GLib is a GLib style wrapper library around Astrodienst's
[Swiss Ephemeris library](http://www.astro.com/swisseph/).
The source tree contains Astrodienst's ephemeride files, as requested
by Alois Treindl of Astrodienst in a mail written to me on 24 July,
2013.
The source tree contains Astrodienst's ephemeride files, as requested by Alois Treindl of Astrodienst in a mail written to me on 24 July, 2013.
## GTK-Doc
The project utilizes [GTK-Doc](http://www.gtk.org/gtk-doc/), requiring
version 1.19 or later. Although the generated documentation is a bit
messy (not everything is documented, and there are some unresolved
variables, like [SERVER] on the generated index page.
The project utilizes [GTK-Doc](http://www.gtk.org/gtk-doc/), requiring version 1.19 or later. Although the generated documentation is a bit messy (not everything is documented, and there are some unresolved variables, like [SERVER] on the generated index page.
Still, the documentation generates well, and at least gives a clue
about object usage.
## Bindings
SWE-GLib utilizes
[GObject Introspection](https://wiki.gnome.org/GObjectIntrospection),
which means it is available for many languages. Check out the
[examples](examples) directory for some sample code!
Still, the documentation generates well, and at least gives a clue about object usage.
## Usage
Many functions return non-opaque C structs; their documentation can be
found inline, and in the generated GTK-Doc. Unless otherwise stated,
the returned values should never be freed.
Many functions return non-opaque C structs; their documentation can be found inline, and in the generated GTK-Doc. Unless otherwise stated, the returned values should never be freed.
### Initialization
First of all, you have to initialize the library:
```c
gswe_init();
```
### Creating the required objects
Then you need to create a `GsweTimestamp` object:
@ -82,13 +70,11 @@ GList *sun_aspects = gswe_moment_get_planet_aspects(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
`GsweAntiscionData` objects, respectively.
The returned GList objects hold zero or more `GsweAspectData` or `GsweAntiscionData` objects, respectively.
### Getting the Moon phase
Last, but not least, SWE-GLib can calculate Moon's phase at the given
moment. For that, you have to call `gswe_moment_get_moon_phase()`:
Last, but not least, SWE-GLib can calculate Moon's phase at the given moment. For that, you have to call `gswe_moment_get_moon_phase()`:
```c
GsweMoonPhaseData *moon_phase = gswe_moment_get_moon_phase(moment);
@ -96,60 +82,34 @@ GsweMoonPhaseData *moon_phase = gswe_moment_get_moon_phase(moment);
### About altitude
The Swiss Ephemeris library requires the altitude value to be
specified for several calculations. It also notifies how important it
is:
The Swiss Ephemeris library requires the altitude value to be specified for several calculations. It also notifies how important it is:
> the altitude above sea must be in meters. Neglecting the altitude
> can result in an error of about 2 arc seconds with the moon and at
> an altitude 3000m.
> the altitude above sea must be in meters. Neglecting the altitude can result in an error of about 2 arc seconds with the moon and at an altitude 3000m.
2 arc seconds is about 0.000555 degrees of error, which is, well, kind
of small. Of course, if you need very precise horoscopes or need
planetary positions for a totally different thing, you should really
provide a (close to) exact value; otherwise, it is safe to pass any
value (well, which seems logical: the average level of all dry lands
is about 840 meters; the average level of the whole planet Earth
(including oceans and seas) is around 280 meters. Providing a value of
~400 should be OK most of the time).
2 arc seconds is about 0.000555 degrees of error, which is, well, kind of small. Of course, if you need very precise horoscopes or need planetary positions for a totally different thing, you should really provide a (close to) exact value; otherwise, it is safe to pass any value (well, which seems logical: the average level of all dry lands is about 840 meters; the average level of the whole planet Earth (including oceans and seas) is around 280 meters. Providing a value of ~400 should be OK most of the time).
## API stability
The project is currently transitioning to 2.0. master is a bit fragile
at the moment, 1.x versions are considered to be stable (although see
commit 8f52aba about a huge typo-bug).
The project is currently marked as 1.0. This means that API and ABI changes are very unlikely to happen.
## Limitations
### Topocentric calculations only
Although the original Swiss Ephemeris library supports it, SWE-GLib
can't do Heliocentric, nor Geocentric (as seen from the center of
Earth) calculations, only Topocentric (as seen from a given point on
Earths surface) calculations yet.
Although the original Swiss Ephemeris library supports it, SWE-GLib can't do Heliocentric, nor Geocentric (as seen from the center of Earth) calculations, only Topocentric (as seen from a given point on Earth"s surface) calculations yet.
### Database size
The size of all data files provided by Astrodienst is around
40MB. Although it should not be a problem with today's home hardware,
it can be a hard requirement on embedded systems. For basic
calculations, keeping the following files under $(datadir)/swe-glib is
usually enough:
The size of all data files provided by Astrodienst is around 40MB. Although it should not be a problem with today's home hardware, it can be a hard requirement on embedded systems. For basic calculations, keeping the following files under $(datadir)/swe-glib is usually enough:
* `seas_18.se1`
* `semo_18.se1`
* `sepl_18.se1`
* seas_18.se1
* semo_18.se1
* sepl_18.se1
### Fixed stars are not known yet
Although Swiss Ephemeris has the functionality to calculate the
position of fixed stars, SWE-GLib doesn't provide such
functionality. This, however, is a planned feature for the close
future.
Although Swiss Ephemeris has the functionality to calculate the position of fixed stars, SWE-GLib doesn't provide such functionality. This, however, is a planned feature for the close future.
## Licencing
As the underlying Swiss Ephemeris is published under GPL (or a
commercial license I can not afford), SWE-GLib is also uses that. This
means that you can currently use SWE-GLib in software published under
the GNU GPL v3 (or, at your option, any later version).
As the underlying Swiss Ephemeris is published under GPL (or a commercial license I can not afford), SWE-GLib is also uses that. This means that you can currently use SWE-GLib in software published under the GNU GPL v3.

View File

@ -13,51 +13,10 @@ PKG_NAME="swe-glib"
exit 1
}
m4dir=`grep '^AC_CONFIG_MACRO_DIR' configure.ac | sed -n -e 's/AC_CONFIG_MACRO_DIR(\([^()]*\))/\1/p' | sed -e 's/^\[\(.*\)\]$/\1/' | sed -e 1q`
if [ -n "$m4dir" ]; then
m4dir="-I $m4dir"
fi
which gnome-autogen.sh || {
echo "gnome-autogen.sh not found, you need to install gnome-common"
exit 1
}
echo "Running libtoolize"
libtoolize --force --copy || exit $?
echo "Running autopoint"
autopoint --force || exit $?
echo "Running intltoolize"
intltoolize --force --copy --automake || exit $?
GTKDOCIZE=$(which gtkdocize 2>/dev/null)
if test -z $GTKDOCIZE; then
echo "You don't have gtk-doc installed, and thus won't be able to generate the documentation."
rm -f gtk-doc.make
rm -f $m4dir/gtk-doc.m4
cat > gtk-doc.make <<EOF
EXTRA_DIST =
CLEANFILES =
EOF
else
echo "Running gtkdocize"
gtkdocize --copy || exit $?
fi
echo "Running aclocal"
aclocal $m4dir $ACLOCAL_FLAGS || exit $?
echo "Running autoconf"
autoconf || exit $?
if grep "^A[CM]_CONFIG_HEADER" configure.ac >/dev/null; then
echo "Running autoheader"
autoheader || exit $?
# this prevents automake from thinking config.h.in is out of
# date, since autoheader doesn't touch the file if it doesn't
# change.
test -f config.h.in && touch config.h.in
fi
echo "Running automake"
automake --gnu --add-missing --copy -Wno-portability || exit $?
"$srcdir/configure" "$@"
REQUIRED_AUTOMAKE_VERSION=1.9 . gnome-autogen.sh

View File

@ -1,33 +1,17 @@
m4_define([swe_glib_major_version], [2])
m4_define([swe_glib_minor_version], [1])
m4_define([swe_glib_micro_version], [0])
m4_define([swe_glib_major_version], [1])
m4_define([swe_glib_minor_version], [0])
m4_define([swe_glib_micro_version], [5])
m4_define([swe_glib_version], [swe_glib_major_version.swe_glib_minor_version.swe_glib_micro_version])
m4_define([swe_glib_api_version], [swe_glib_major_version.0])
m4_define([swe_major_version], [2])
m4_define([swe_minor_version], [0])
m4_define([swe_version], [swe_major_version.swe_minor_version])
AC_INIT([SWE-GLib], [swe_glib_version], [gergely@polonkai.eu], [swe-glib])
AM_INIT_AUTOMAKE([-Wall foreign])
AC_CONFIG_HEADERS([config.h])
AM_SILENT_RULES([yes])
dnl ********************************
dnl *** Enable debugging support ***
dnl ********************************
AC_ARG_ENABLE(debug,
AC_HELP_STRING([--enable-debug],
[compile with debugging support]),
[enable_debug=$enableval], [enable_debug=no])
AC_ARG_ENABLE(debug, [AC_HELP_STRING([--enable-debug], [compile with debugging support])], , enable_debug=no)
if test "x$enable_debug" = "xyes" ; then
AC_DEFINE([DEBUG], [1], [Define if debugging is enabled])
if test x$cflags_set != xset ; then
case " $CFLAGS " in
*[[\ \ ]]-g[[\ \ ]]*) ;;
*) CFLAGS="$CFLAGS -g" ;;
esac
fi
fi
AC_SUBST([SWE_GLIB_MAJOR_VERSION], [swe_glib_major_version])
@ -36,7 +20,6 @@ AC_SUBST([SWE_GLIB_MICRO_VERSION], [swe_glib_micro_version])
AC_SUBST([SWE_GLIB_VERSION], [swe_glib_version])
AC_SUBST([SWE_GLIB_API_VERSION], [swe_glib_api_version])
AC_SUBST([SWE_GLIB_API_VERSION_U], [AS_TR_SH([swe_glib_api_version])])
AC_SUBST([SWE_VERSION], [swe_version])
AC_PROG_CC
AM_PROG_CC_C_O
@ -50,133 +33,31 @@ AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.17])
LT_INIT
AC_CHECK_LIB([m], [atan])
m4_ifdef([GTK_DOC_CHECK], [
GTK_DOC_CHECK([1.19], [--flavour no-tmpl])
],[
AM_CONDITIONAL([ENABLE_GTK_DOC], false)
])
GOBJECT_INTROSPECTION_CHECK([1.0])
m4_ifdef([VALA_PROG_VAPIGEN], [
VALA_PROG_VAPIGEN([0.21])
AM_CONDITIONAL([HAVE_VAPIGEN], true)
],[
AM_CONDITIONAL([HAVE_VAPIGEN], false)
])
PKG_PROG_PKG_CONFIG
AC_PATH_PROG([GLIB_MKENUMS], [glib-mkenums])
AC_CANONICAL_HOST
native_win32=no
case "$host" in
*-*-mingw*)
native_win32=yes
;;
esac
AM_CONDITIONAL(OS_WIN32, [test "$native_win32" = "yes"])
AM_CONDITIONAL(OS_UNIX, [test "$native_win32" != "yes"])
AC_PATH_PROG([GTESTER], [gtester])
AC_PATH_PROG([GTESTER_REPORT], [gtester-report])
dnl ************************************
dnl *** Enable lcov coverage reports ***
dnl ************************************
AC_ARG_ENABLE(coverage,
AS_HELP_STRING([--enable-coverage],
[enable coverage testing with gcov]),
[use_gcov=$enableval], [use_gcov=no])
AS_IF([ test "x$use_gcov" = "xyes"], [
dnl we need gcc:
if test "$GCC" != "yes"; then
AC_MSG_ERROR([GCC is required for --enable-coverage])
fi
dnl Check if ccache is being used
AC_CHECK_PROG(SHTOOL, shtool, shtool)
case `$SHTOOL path $CC` in
*ccache*[)] gcc_ccache=yes;;
*[)] gcc_ccache=no;;
esac
if test "$gcc_ccache" = "yes" && (test -z "$CCACHE_DISABLE" || test "$CCACHE_DISABLE" != "1"); then
AC_MSG_ERROR([ccache must be disabled when --enable-coverage option is used. You can disable ccache by setting environment variable CCACHE_DISABLE=1.])
fi
ltp_version_list="1.6 1.7 1.8 1.9 1.10 1.14"
AC_CHECK_PROG(LTP, lcov, lcov)
AC_CHECK_PROG(LTP_GENHTML, genhtml, genhtml)
AS_IF([ test "$LTP" ], [
AC_CACHE_CHECK([for ltp version], sw_glib_cv_ltp_version, [
swe_glib_cv_ltp_version=invalid
ltp_version=`$LTP -v 2>/dev/null | $SED -e 's/^.* //'`
for ltp_check_version in $ltp_version_list; do
if test "$ltp_version" = "$ltp_check_version"; then
swe_glib_cv_ltp_version="$ltp_check_version (ok)"
fi
done
])
], [
ltp_msg="To enable code coverage reporting you must have one of the following LTP versions installed: $ltp_version_list"
AC_MSG_ERROR([$ltp_msg])
])
case $swe_glib_cv_ltp_version in
""|invalid[)]
ltp_msg="You must have one of the following versions of LTP: $ltp_version_list (found: $ltp_version)."
AC_MSG_ERROR([$ltp_msg])
LTP="exit 0;"
;;
esac
if test -z "$LTP_GENHTML"; then
AC_MSG_ERROR([Could not find genhtml from the LTP package])
fi
dnl Remove all optimization flags from CFLAGS
changequote({,})
CFLAGS=`echo "$CFLAGS" | $SED -e 's/-O[0-9]*//g'`
changequote([,])
dnl Add the special gcc flags
CFLAGS="$CFLAGS -O0 -fprofile-arcs -ftest-coverage"
LDFLAGS="$LDFLAGS -lgcov"
])
if test "x$enable_debug" = "xyes" ; then
AC_DEFINE([DEBUG], [1], [Define if debugging is enabled])
if test x$cflags_set != xset ; then
case " $CFLAGS " in
*[[\ \ ]]-g[[\ \ ]]*) ;;
*) CFLAGS="$CFLAGS -g" ;;
esac
fi
fi
PKG_CHECK_MODULES([GLIB], [glib-2.0 >= 2.32.0])
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0 >= 2.32.0])
PKG_CHECK_MODULES([GIO], [gio-2.0 >= 2.26])
GLIB_GSETTINGS
PKG_CHECK_MODULES([GLIB], [glib-2.0])
PKG_CHECK_MODULES([GOBJECT], [gobject-2.0])
AC_CONFIG_MACRO_DIR([m4])
LIBSWE_LIBS='$(top_builddir)/swe/src/libswe-1.75.la'
AC_SUBST(LIBSWE_LIBS)
LIBSWE_GLIB_LIBS='$(top_builddir)/src/libswe-glib-$(SWE_GLIB_API_VERSION).la'
AC_SUBST(LIBSWE_GLIB_LIBS)
AC_CONFIG_FILES([
Makefile
swe/Makefile
swe/src/Makefile
swe/doc/Makefile
src/Makefile
data/Makefile
po/Makefile.in
tests/Makefile
docs/reference/swe-glib/version.xml
docs/reference/swe-glib/Makefile
data/swe-glib.pc
data/swe-glib.spec
src/gswe-version.h
])
AM_COND_IF([ENABLE_GTK_DOC], [
AC_CONFIG_FILES([
docs/reference/swe-glib/version.xml
docs/reference/swe-glib/Makefile
])
])
AC_OUTPUT

View File

@ -1,16 +1,65 @@
pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = swe-glib.pc $(NULL)
eu.polonkai.gergely.swe-glib.gschema.xml: gschema.template $(top_builddir)/src/gswe-types.h
$(GLIB_MKENUMS) --comments "<!-- @comment@ -->" --template $(filter %.template,$^) $(filter-out %.template,$^) > \
$@.tmp && mv $@.tmp $@
gsettings_SCHEMAS = eu.polonkai.gergely.swe-glib.gschema.xml
@GSETTINGS_RULES@
swephdir = $(pkgdatadir)
sweph_DATA = \
sweph-data/seas_00.se1 \
sweph-data/seas_06.se1 \
sweph-data/seas_12.se1 \
sweph-data/seas_18.se1 \
sweph-data/seas_24.se1 \
sweph-data/seas_30.se1 \
sweph-data/seas_36.se1 \
sweph-data/seas_42.se1 \
sweph-data/seas_48.se1 \
sweph-data/seasm06.se1 \
sweph-data/seasm12.se1 \
sweph-data/seasm18.se1 \
sweph-data/seasm24.se1 \
sweph-data/seasm30.se1 \
sweph-data/seasm36.se1 \
sweph-data/seasm42.se1 \
sweph-data/seasm48.se1 \
sweph-data/seasm54.se1 \
sweph-data/semo_00.se1 \
sweph-data/semo_06.se1 \
sweph-data/semo_12.se1 \
sweph-data/semo_18.se1 \
sweph-data/semo_24.se1 \
sweph-data/semo_30.se1 \
sweph-data/semo_36.se1 \
sweph-data/semo_42.se1 \
sweph-data/semo_48.se1 \
sweph-data/semom06.se1 \
sweph-data/semom12.se1 \
sweph-data/semom18.se1 \
sweph-data/semom24.se1 \
sweph-data/semom30.se1 \
sweph-data/semom36.se1 \
sweph-data/semom42.se1 \
sweph-data/semom48.se1 \
sweph-data/semom54.se1 \
sweph-data/sepl_00.se1 \
sweph-data/sepl_06.se1 \
sweph-data/sepl_12.se1 \
sweph-data/sepl_18.se1 \
sweph-data/sepl_24.se1 \
sweph-data/sepl_30.se1 \
sweph-data/sepl_36.se1 \
sweph-data/sepl_42.se1 \
sweph-data/sepl_48.se1 \
sweph-data/seplm06.se1 \
sweph-data/seplm12.se1 \
sweph-data/seplm18.se1 \
sweph-data/seplm24.se1 \
sweph-data/seplm30.se1 \
sweph-data/seplm36.se1 \
sweph-data/seplm42.se1 \
sweph-data/seplm48.se1 \
sweph-data/seplm54.se1 \
$(NULL)
EXTRA_DIST = \
swe-glib.spec \
gschema.template
$(sweph_DATA) \
swe-glib.spec
DISTCLEANFILES = $(gsettings_SCHEMAS)

View File

@ -1,22 +0,0 @@
/*** BEGIN file-header ***/
<schemalist>
/*** END file-header ***/
/*** BEGIN file-production ***/
/*** END file-production ***/
/*** BEGIN value-header ***/
<enum id="eu.polonkai.gergely.swe-glib.@EnumName@">
/*** END value-header ***/
/*** BEGIN value-production ***/
<value nick="@valuenick@" value="@valuenum@"/>
/*** END value-production ***/
/*** BEGIN value-tail ***/
</enum>
/*** END value-tail ***/
/*** BEGIN file-tail ***/
</schemalist>
/*** END file-tail ***/

View File

@ -6,7 +6,7 @@ Summary: A GLib style wrapper library around the Swiss Ephemeris library, create
Group: Development/Libraries
License: LGPLv3+
URL: http://gergely.polonkai.eu/swe-glib/
Source: http://gergely.polonkai.eu/download/%{name}-%{version}.tar.gz
Source: https://github.com/gergelypolonkai/%{name}/archive/v%{version}.tar.gz
BuildRequires: pkgconfig
BuildRequires: glib2-devel
@ -70,13 +70,12 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/locale/hu/LC_MESSAGES/swe-glib.mo
%files
%doc ChangeLog
%{_libdir}/libswe-@SWE_VERSION@.so.*
%{_libdir}/libswe-glib-@SWE_GLIB_API_VERSION@.so.*
%{_libdir}/girepository-1.0/SweGlib-@SWE_GLIB_API_VERSION@.typelib
%{_libdir}/libswe-1.75.so.*
%{_libdir}/libswe-glib-1.0.so.*
%{_libdir}/girepository-1.0/SweGlib-1.0.typelib
%files data
%{_datadir}/swe-glib/*.se1
%{_datadir}/swe-glib/seleapsec.txt
%files doc
%doc %{_datadir}/gtk-doc/html/*
@ -84,10 +83,9 @@ rm -f $RPM_BUILD_ROOT%{_datadir}/locale/hu/LC_MESSAGES/swe-glib.mo
%files devel
%{_includedir}/*
%{_libdir}/pkgconfig/*
%{_datadir}/gir-1.0/SweGlib-@SWE_GLIB_API_VERSION@.gir
%{_libdir}/libswe-@SWE_VERSION@.so
%{_libdir}/libswe-glib-@SWE_GLIB_API_VERSION@.so
%{_datadir}/vala/vapi/SweGlib-@SWE_GLIB_API_VERSION@.vapi
%{_datadir}/gir-1.0/SweGlib-1.0.gir
%{_libdir}/libswe-1.75.so
%{_libdir}/libswe-glib-1.0.so
%changelog

BIN
data/sweph-data/seas_00.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seas_06.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seas_12.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seas_18.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seas_24.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seas_30.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seas_36.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seas_42.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seas_48.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seasm06.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seasm12.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seasm18.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seasm24.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seasm30.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seasm36.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seasm42.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seasm48.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seasm54.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semo_00.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semo_06.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semo_12.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semo_18.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semo_24.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semo_30.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semo_36.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semo_42.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semo_48.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semom06.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semom12.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semom18.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semom24.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semom30.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semom36.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semom42.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semom48.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/semom54.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/sepl_00.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/sepl_06.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/sepl_12.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/sepl_18.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/sepl_24.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/sepl_30.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/sepl_36.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/sepl_42.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/sepl_48.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seplm06.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seplm12.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seplm18.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seplm24.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seplm30.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seplm36.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seplm42.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seplm48.se1 Normal file

Binary file not shown.

BIN
data/sweph-data/seplm54.se1 Normal file

Binary file not shown.

View File

@ -29,7 +29,7 @@ SCANGOBJ_OPTIONS=
# Extra options to supply to gtkdoc-scan.
# e.g. SCAN_OPTIONS=--deprecated-guards="GTK_DISABLE_DEPRECATED"
SCAN_OPTIONS=--rebuild-types --deprecated-guards="GSWE_DISABLE_DEPRECATED"
SCAN_OPTIONS=--rebuild-sections --rebuild-types
# Extra options to supply to gtkdoc-mkdb.
# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
@ -58,20 +58,7 @@ EXTRA_HFILES=
# Header files or dirs to ignore when scanning. Use base file/dir names
# e.g. IGNORE_HFILES=gtkdebug.h gtkintl.h private_code
IGNORE_HFILES = \
swe-glib-private.h \
gswe-enumtypes.h \
gswe-moon-phase-data-private.h \
gswe-sign-info-private.h \
gswe-planet-info-private.h \
gswe-planet-data-private.h \
gswe-aspect-info-private.h \
gswe-aspect-data-private.h \
gswe-antiscion-axis-info-private.h \
gswe-antiscion-data-private.h \
gswe-house-system-info-private.h \
gswe-house-data-private.h \
$(NULL)
IGNORE_HFILES=swe-glib-private.h gswe-enumtypes.h
# Images to copy into HTML directory.
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
@ -92,19 +79,19 @@ expand_content_files=
# e.g. GTKDOC_CFLAGS=-I$(top_srcdir) -I$(top_builddir) $(GTK_DEBUG_FLAGS)
# e.g. GTKDOC_LIBS=$(top_builddir)/gtk/$(gtktargetlib)
GTKDOC_CFLAGS=
GTKDOC_LIBS=$(LIBSWE_GLIB_LIBS) -lswe -ldl $(NULL)
GTKDOC_LIBS=$(LIBSWE_GLIB_LIBS) $(NULL)
# This includes the standard gtk-doc make rules, copied by gtkdocize.
include $(top_srcdir)/gtk-doc.make
# Other files to distribute
# e.g. EXTRA_DIST += version.xml.in
EXTRA_DIST += version.xml.in
EXTRA_DIST +=
# Files not to distribute
# for --rebuild-types in $(SCAN_OPTIONS), e.g. $(DOC_MODULE).types
# for --rebuild-sections in $(SCAN_OPTIONS) e.g. $(DOC_MODULE)-sections.txt
DISTCLEANFILES = $(DOC_MODULE).types
#DISTCLEANFILES +=
# Comment this out if you want 'make check' to test you doc status
# and run some sanity checks

View File

@ -19,20 +19,9 @@
<chapter>
<title>SWE-GLib</title>
<xi:include href="xml/gswe-types.xml"/>
<xi:include href="xml/gswe-sign-info.xml" />
<xi:include href="xml/gswe-planet-info.xml" />
<xi:include href="xml/gswe-planet-data.xml" />
<xi:include href="xml/gswe-moon-phase-data.xml"/>
<xi:include href="xml/gswe-aspect-data.xml" />
<xi:include href="xml/gswe-aspect-info.xml" />
<xi:include href="xml/gswe-antiscion-axis-info.xml" />
<xi:include href="xml/gswe-antiscion-data.xml" />
<xi:include href="xml/gswe-house-system-info.xml" />
<xi:include href="xml/gswe-house-data.xml" />
<xi:include href="xml/swe-glib.xml"/>
<xi:include href="xml/gswe-moment.xml"/>
<xi:include href="xml/gswe-timestamp.xml"/>
<xi:include href="xml/gswe-version.xml"/>
</chapter>
<chapter id="object-tree">

View File

@ -1,331 +0,0 @@
<SECTION>
<FILE>gswe-moment</FILE>
<TITLE>GsweMoment</TITLE>
GsweMoment
GsweMomentClass
gswe_moment_new
gswe_moment_new_full
gswe_moment_set_timestamp
gswe_moment_get_timestamp
gswe_moment_set_coordinates
gswe_moment_get_coordinates
gswe_moment_set_house_system
gswe_moment_get_house_system
gswe_moment_get_house_cusps
gswe_moment_get_house
gswe_moment_has_planet
gswe_moment_add_planet
gswe_moment_add_all_planets
gswe_moment_get_all_planets
gswe_moment_get_planet
gswe_moment_get_sign_planets
gswe_moment_get_house_planets
gswe_moment_get_element_points
gswe_moment_get_quality_points
gswe_moment_get_moon_phase
gswe_moment_get_all_aspects
gswe_moment_get_planet_aspects
gswe_moment_get_aspect_by_planets
gswe_moment_get_all_antiscia
gswe_moment_get_all_planet_antiscia
gswe_moment_get_axis_all_antiscia
gswe_moment_get_axis_planet_antiscia
gswe_moment_get_antiscion_by_planets
<SUBSECTION Standard>
GSWE_IS_MOMENT
GSWE_IS_MOMENT_CLASS
GSWE_MOMENT
GSWE_MOMENT_CLASS
GSWE_MOMENT_GET_CLASS
GSWE_TYPE_MOMENT
GsweMomentPrivate
gswe_moment_get_type
</SECTION>
<SECTION>
<FILE>gswe-moon-phase-data</FILE>
gswe_moon_phase_data_new
gswe_moon_phase_data_ref
gswe_moon_phase_data_unref
gswe_moon_phase_data_calculate_by_timestamp
gswe_moon_phase_data_calculate_by_jd
gswe_moon_phase_data_get_phase
gswe_moon_phase_data_get_illumination
GsweMoonPhaseData
<SUBSECTION Standard>
GSWE_TYPE_MOON_PHASE_DATA
gswe_moon_phase_data_get_type
</SECTION>
<SECTION>
<FILE>gswe-sign-info</FILE>
GsweSignInfo
gswe_find_sign_info_by_id
gswe_sign_info_new
gswe_sign_info_ref
gswe_sign_info_unref
gswe_sign_info_set_sign
gswe_sign_info_get_sign
gswe_sign_info_set_name
gswe_sign_info_get_name
gswe_sign_info_set_element
gswe_sign_info_get_element
gswe_sign_info_set_quality
gswe_sign_info_get_quality
<SUBSECTION Standard>
GSWE_TYPE_SIGN_INFO
gswe_sign_info_get_type
</SECTION>
<SECTION>
<FILE>gswe-planet-info</FILE>
GswePlanetInfo
gswe_find_planet_info_by_id
gswe_all_planets
gswe_planet_info_new
gswe_planet_info_ref
gswe_planet_info_unref
gswe_planet_info_set_name
gswe_planet_info_get_name
gswe_planet_info_set_orb
gswe_planet_info_get_orb
gswe_planet_info_set_planet
gswe_planet_info_get_planet
gswe_planet_info_set_points
gswe_planet_info_get_points
gswe_planet_info_set_real_body
gswe_planet_info_get_real_body
gswe_planet_info_set_sweph_id
gswe_planet_info_get_sweph_id
<SUBSECTION Standard>
GSWE_TYPE_PLANET_INFO
gswe_planet_info_get_type
</SECTION>
<SECTION>
<FILE>gswe-planet-data</FILE>
GswePlanetData
gswe_planet_data_new
gswe_planet_data_ref
gswe_planet_data_unref
gswe_planet_data_set_planet
gswe_planet_data_get_planet
gswe_planet_data_set_planet_info
gswe_planet_data_get_planet_info
gswe_planet_data_get_position
gswe_planet_data_get_retrograde
gswe_planet_data_get_house
gswe_planet_data_get_sign
gswe_planet_data_get_sign_info
<SUBSECTION Standard>
GSWE_TYPE_PLANET_DATA
gswe_planet_data_get_type
</SECTION>
<SECTION>
<FILE>gswe-aspect-info</FILE>
GsweAspectInfo
gswe_find_aspect_info_by_id
gswe_all_aspects
gswe_aspect_info_new
gswe_aspect_info_ref
gswe_aspect_info_unref
gswe_aspect_info_set_aspect
gswe_aspect_info_get_aspect
gswe_aspect_info_set_name
gswe_aspect_info_get_name
gswe_aspect_info_set_size
gswe_aspect_info_get_size
gswe_aspect_info_set_orb_modifier
gswe_aspect_info_get_orb_modifier
gswe_aspect_info_set_harmonic
gswe_aspect_info_get_harmonic
gswe_aspect_info_set_major
gswe_aspect_info_get_major
<SUBSECTION Standard>
GSWE_TYPE_ASPECT_INFO
gswe_aspect_info_get_type
</SECTION>
<SECTION>
<FILE>gswe-aspect-data</FILE>
GsweAspectData
gswe_aspect_data_new
gswe_aspect_data_new_with_planets
gswe_aspect_data_ref
gswe_aspect_data_unref
gswe_aspect_data_set_planet1
gswe_aspect_data_get_planet1
gswe_aspect_data_set_planet2
gswe_aspect_data_get_planet2
gswe_aspect_data_get_distance
gswe_aspect_data_get_aspect
gswe_aspect_data_get_aspect_info
gswe_aspect_data_get_difference
<SUBSECTION Standard>
GSWE_TYPE_ASPECT_DATA
gswe_aspect_data_get_type
</SECTION>
<SECTION>
<FILE>gswe-antiscion-axis-info</FILE>
GsweAntiscionAxisInfo
gswe_find_antiscion_axis_info_by_id
gswe_all_antiscion_axes
gswe_antiscion_axis_info_new
gswe_antiscion_axis_info_ref
gswe_antiscion_axis_info_unref
gswe_antiscion_axis_info_set_axis
gswe_antiscion_axis_info_get_axis
gswe_antiscion_axis_info_set_name
gswe_antiscion_axis_info_get_name
gswe_antiscion_axis_info_set_sign_offset
gswe_antiscion_axis_info_get_sign_offset
gswe_antiscion_axis_info_set_start_sign_info
gswe_antiscion_axis_info_get_start_sign_info
gswe_antiscion_axis_info_set_start_sign
gswe_antiscion_axis_info_get_start_sign
<SUBSECTION Standard>
GSWE_TYPE_ANTISCION_AXIS_INFO
gswe_antiscion_axis_info_get_type
</SECTION>
<SECTION>
<FILE>gswe-antiscion-data</FILE>
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
<SUBSECTION Standard>
GSWE_TYPE_ANTISCION_DATA
gswe_antiscion_data_get_type
</SECTION>
<SECTION>
<FILE>gswe-house-system-info</FILE>
GsweHouseSystemInfo
gswe_find_house_system_info_by_id
gswe_all_house_systems
gswe_house_system_info_new
gswe_house_system_info_ref
gswe_house_system_info_unref
gswe_house_system_info_set_house_system
gswe_house_system_info_get_house_system
gswe_house_system_info_set_sweph_id
gswe_house_system_info_get_sweph_id
gswe_house_system_info_set_name
gswe_house_system_info_get_name
<SUBSECTION Standard>
GSWE_TYPE_HOUSE_SYSTEM_INFO
gswe_house_system_info_get_type
</SECTION>
<SECTION>
<FILE>gswe-house-data</FILE>
GsweHouseData
gswe_house_data_new
gswe_house_data_ref
gswe_house_data_unref
gswe_house_data_get_house
gswe_house_data_get_cusp_position
gswe_house_data_get_sign
gswe_house_data_get_sign_info
<SUBSECTION Standard>
GSWE_TYPE_HOUSE_DATA
gswe_house_data_get_type
</SECTION>
<SECTION>
<FILE>gswe-timestamp</FILE>
<TITLE>GsweTimestamp</TITLE>
GsweTimestamp
GsweTimestampClass
GsweTimestampValidityFlags
gswe_timestamp_new
gswe_timestamp_new_from_julian_day
gswe_timestamp_new_from_gregorian_full
gswe_timestamp_new_from_now_local
gswe_timestamp_set_gregorian_full
gswe_timestamp_set_instant_recalc
gswe_timestamp_get_instant_recalc
gswe_timestamp_set_gregorian_year
gswe_timestamp_get_gregorian_year
gswe_timestamp_set_gregorian_month
gswe_timestamp_get_gregorian_month
gswe_timestamp_set_gregorian_day
gswe_timestamp_get_gregorian_day
gswe_timestamp_set_gregorian_hour
gswe_timestamp_get_gregorian_hour
gswe_timestamp_set_gregorian_minute
gswe_timestamp_get_gregorian_minute
gswe_timestamp_set_gregorian_second
gswe_timestamp_get_gregorian_second
gswe_timestamp_set_gregorian_microsecond
gswe_timestamp_get_gregorian_microsecond
gswe_timestamp_set_gregorian_timezone
gswe_timestamp_get_gregorian_timezone
gswe_timestamp_set_now_local
gswe_timestamp_set_julian_day
gswe_timestamp_get_julian_day
gswe_timestamp_set_julian_day_et
gswe_timestamp_get_julian_day_et
gswe_timestamp_set_julian_day_ut
gswe_timestamp_get_julian_day_ut
gswe_timestamp_get_sidereal_time
<SUBSECTION Standard>
GSWE_IS_TIMESTAMP
GSWE_IS_TIMESTAMP_CLASS
GSWE_TIMESTAMP
GSWE_TIMESTAMP_CLASS
GSWE_TIMESTAMP_GET_CLASS
GSWE_TYPE_TIMESTAMP
GsweTimestampPrivate
gswe_timestamp_get_type
</SECTION>
<SECTION>
<FILE>gswe-types</FILE>
GswePlanet
GSWE_PLANET_LILITH
GSWE_PLANET_OFFSET_VIRTUAL_NODES
GSWE_PLANET_OFFSET_PLANETS
GSWE_PLANET_OFFSET_ASTEROIDS
GSWE_PLANET_OFFSET_CUSTOM
GsweZodiac
GsweAspect
GsweAntiscionAxis
GsweElement
GsweQuality
GsweHouseSystem
GsweMoonPhase
GsweCoordinates
<SUBSECTION Standard>
GSWE_TYPE_COORDINATES
gswe_coordinates_get_type
</SECTION>
<SECTION>
<FILE>swe-glib</FILE>
GsweError
gswe_error_quark
GSWE_ERROR
gswe_init
</SECTION>
<SECTION>
<FILE>gswe-version</FILE>
GSWE_MAJOR_VERSION
GSWE_MINOR_VERSION
GSWE_MICRO_VERSION
GSWE_CHECK_VERSION
gswe_check_version
</SECTION>

View File

@ -1,52 +0,0 @@
const GLib = imports.gi.GLib;
const Swe = imports.gi.SweGlib;
const Format = imports.format;
String.prototype.format = Format.format;
Swe.init();
var timestamp = new Swe.Timestamp();
timestamp.set_gregorian_full(1983, 3, 7, 11, 54, 45, 0, 1);
var moment = new Swe.Moment();
moment.add_all_planets();
moment.set_timestamp(timestamp);
moment.set_coordinates(19.03991, 47.49801, 280);
moment.set_house_system(Swe.HouseSystem.PLACIDUS);
var all_planets = moment.get_all_planets()
for (var i = 0; i < all_planets.length; i++) {
var planet = all_planets[i];
var position = planet.get_position();
var sign_position = position % 30;
var degree = Math.floor(sign_position);
var minute = Math.floor((sign_position - degree) * 60);
var second = Math.floor(((sign_position - degree) * 60 - minute) * 60)
print("%s: %.6f (%d°%d%d″ %s)".format(planet.get_planet_info().get_name(), position, degree, minute, second, planet.get_sign_info().get_name()));
}
var all_aspects = moment.get_all_aspects();
for (var i = 0; i < all_aspects.length; i++) {
var aspect = all_aspects[i];
if (aspect.get_aspect() != Swe.Aspect.NONE) {
var planet1 = aspect.get_planet1();
var planet2 = aspect.get_planet2();
print("%s in %s with %s (±%.2f%%)".format(planet1.get_planet_info().get_name(), aspect.get_aspect_info().get_name(), planet2.get_planet_info().get_name(), aspect.get_difference()));
}
}
var all_antiscia = moment.get_all_antiscia();
for (var i = 0; i < all_antiscia.length; i++) {
var antiscion = all_antiscia[i];
if (antiscion.get_axis() != Swe.AntiscionAxis.NONE) {
var planet1 = antiscion.get_planet1();
var planet2 = antiscion.get_planet2();
print("%s is antiscion of %s on axis %s (±%.2f%%)".format(planet1.get_planet_info().get_name(), planet2.get_planet_info().get_name(), antiscion.get_antiscion_axis_info().get_name(), antiscion.get_difference().toFixed(2)));
}
}

View File

@ -1,44 +0,0 @@
local lgi = require 'lgi'
local SweGlib = lgi.require('SweGlib', '2.0')
SweGlib.init()
local timestamp = SweGlib.Timestamp.new()
timestamp:set_gregorian_full(1983, 3, 7, 11, 54, 45, 0, 1)
local moment = SweGlib.Moment.new()
moment:set_timestamp(timestamp)
moment:set_timestamp(timestamp)
moment:set_coordinates(19.03990999, 47.49801000, 280)
moment:set_house_system(SweGlib.HouseSystem.PLACIDUS)
moment:add_all_planets()
local all_planets = moment:get_all_planets()
for _, planet in ipairs(all_planets) do
local position = planet:get_position()
local sign_position = math.fmod(position, 30)
local degree = math.floor(sign_position)
local minute = math.floor((sign_position - degree) * 60)
local second = math.floor(((sign_position - degree) * 60 - minute) * 60)
io.write(string.format("%s: %f (%d°%d%d″ %s)\n", planet:get_planet_info():get_name(), position, degree, minute, second, planet:get_sign_info():get_name()))
end
local all_aspects = moment:get_all_aspects()
for _, aspect in ipairs(all_aspects) do
if aspect:get_aspect() ~= "NONE" then
local planet1 = aspect:get_planet1()
local planet2 = aspect:get_planet2()
io.write(string.format("%s in %s with %s (±%.2f%%)\n", planet1:get_planet_info():get_name(), aspect:get_aspect_info():get_name(), planet2:get_planet_info():get_name(), aspect:get_difference()))
end
end
local all_antiscia = moment:get_all_antiscia()
for _, antiscion in ipairs(all_antiscia) do
if antiscion:get_axis() ~= "NONE" then
local planet1 = antiscion:get_planet1()
local planet2 = antiscion:get_planet2()
io.write(string.format("%s is antiscion of %s on axis %s (±%.2f%%)\n", planet1:get_planet_info():get_name(), planet2:get_planet_info():get_name(), antiscion:get_antiscion_axis_info():get_name(), antiscion:get_difference()))
end
end

View File

@ -1,55 +0,0 @@
#!/bin/env perl
package SweGlib;
use utf8;
use strict;
use POSIX;
use Glib::Object::Introspection;
binmode STDOUT, ':encoding(UTF-8)';
Glib::Object::Introspection->setup(basename => 'SweGlib', version => '2.0', package => 'SweGlib');
package main;
SweGlib::init();
my $timestamp = SweGlib::Timestamp->new();
$timestamp->set_gregorian_full(1983, 3, 7, 11, 54, 45, 0, 1);
my $moment = SweGlib::Moment->new();
$moment->set_timestamp($timestamp);
$moment->set_coordinates(19.03991, 47.49801, 280);
$moment->set_house_system("placidus");
$moment->add_all_planets();
my $all_planets = $moment->get_all_planets();
foreach my $planet (@{$all_planets}) {
my $position = $planet->get_position();
my $sign_position = POSIX::fmod($position, 30);
my $degree = POSIX::floor($sign_position);
my $minute = POSIX::floor(($sign_position - $degree) * 60);
my $second = POSIX::floor((($sign_position - $degree) * 60 - $minute) * 60);
printf("%s: %f (%d°%d%d″ %s)\n", $planet->get_planet_info()->get_name(), $position, $degree, $minute, $second, $planet->get_sign_info()->get_name());
}
my $all_aspects = $moment->get_all_aspects();
foreach my $aspect (@{$all_aspects}) {
if ($aspect->get_aspect() ne "none") {
my $planet1 = $aspect->get_planet1();
my $planet2 = $aspect->get_planet2();
printf("%s in %s with %s (±%.2f%%)\n", $planet1->get_planet_info()->get_name(), $aspect->get_aspect_info->get_name(), $planet2->get_planet_info()->get_name(), $aspect->get_difference());
}
}
my $all_antiscia = $moment->get_all_antiscia();
foreach my $antiscion (@{$all_antiscia}) {
if ($antiscion->get_axis() ne "none") {
my $planet1 = $antiscion->get_planet1();
my $planet2 = $antiscion->get_planet2();
printf("%s is antiscion of %s on axis %s (±%.2f%%)\n", $planet1->get_planet_info()->get_name(), $planet2->get_planet_info()->get_name(), $antiscion->get_antiscion_axis_info()->get_name(), $antiscion->get_difference());
}
}

View File

@ -1,44 +0,0 @@
# -*- coding: utf-8 -*-
from gi.repository import SweGlib
import math
import codecs
import sys
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
SweGlib.init()
timestamp = SweGlib.Timestamp()
timestamp.set_gregorian_full(1983, 3, 7, 11, 54, 45, 0, 1)
moment = SweGlib.Moment()
moment.set_timestamp(timestamp)
moment.set_coordinates(19.03991, 47.49801, 280)
moment.set_house_system(SweGlib.HouseSystem.PLACIDUS)
moment.add_all_planets()
all_planets = moment.get_all_planets()
for planet in all_planets:
position = planet.get_position()
sign_position = position % 30
degree = math.floor(sign_position)
minute = math.floor((sign_position - degree) * 60)
second = math.floor(((sign_position - degree) * 60 - minute) * 60)
print u"%s: %f (%d°%d%d%s)" % (planet.get_planet_info().get_name(), position, degree, minute, second, planet.get_sign_info().get_name())
all_aspects = moment.get_all_aspects()
for aspect in all_aspects:
if aspect.get_aspect() != SweGlib.Aspect.NONE:
planet1 = aspect.get_planet1()
planet2 = aspect.get_planet2()
print u"%s in %s with %s%.2f%%)" % (planet1.get_planet_info().get_name(), aspect.get_aspect_info().get_name(), planet2.get_planet_info().get_name(), aspect.get_difference())
all_antiscia = moment.get_all_antiscia()
for antiscion in all_antiscia:
if antiscion.get_axis() != SweGlib.AntiscionAxis.NONE:
planet1 = antiscion.get_planet1()
planet2 = antiscion.get_planet2()
print u"%s is antiscion of %s on axis %s%.2f%%)" % (planet1.get_planet_info().get_name(), planet2.get_planet_info().get_name(), antiscion.get_antiscion_axis_info().get_name(), antiscion.get_difference())

View File

@ -86,7 +86,7 @@ msgid "Dark Moon"
msgstr "Sötét Hold"
#: ../src/swe-glib.c:133
msgid "Ascendant"
msgid "Ascendent"
msgstr "Aszcendens"
#: ../src/swe-glib.c:134

View File

@ -1,100 +1,52 @@
## Process this file with automake to produce Makefile.in
include $(top_srcdir)/swe-glib.mk
AM_CPPFLAGS = -DG_LOG_DOMAIN=\"SWE-GLib\" -DLOCALEDIR=\"$(localedir)\" -D__SWE_GLIB_BUILDING__ -DPKGDATADIR=\"$(pkgdatadir)\"
lib_LTLIBRARIES = libswe-glib-2.0.la
lib_LTLIBRARIES = libswe-glib-1.0.la
INST_H_SRC_FILES = \
swe-glib.h \
gswe-types.h \
gswe-moon-phase-data.h \
gswe-sign-info.h \
gswe-planet-info.h \
gswe-planet-data.h \
gswe-aspect-info.h \
gswe-aspect-data.h \
gswe-antiscion-axis-info.h \
gswe-antiscion-data.h \
gswe-house-system-info.h \
gswe-house-data.h \
gswe-moment.h \
gswe-timestamp.h \
$(NULL)
swe-glib.h \
gswe-types.h \
gswe-moment.h \
gswe-timestamp.h
INST_H_BUILT_FILES = \
gswe-enumtypes.h \
gswe-version.h \
$(NULL)
gswe-enumtypes.h
PRIV_H_SRC_FILES = \
swe-glib-private.h \
gswe-moon-phase-data-private.h \
gswe-sign-info-private.h \
gswe-planet-info-private.h \
gswe-planet-data-private.h \
gswe-aspect-info-private.h \
gswe-aspect-data-private.h \
gswe-antiscion-axis-info-private.h \
gswe-antiscion-data-private.h \
gswe-house-system-info-private.h \
gswe-house-data-private.h \
$(NULL)
gswe_headers = gswe-timestamp.h gswe-types.h
gswe_enum_headers = gswe-timestamp.h gswe-types.h
libswe_glib_2_0_la_SOURCES = \
swe-glib.c \
gswe-types.c \
gswe-moon-phase-data.c \
gswe-sign-info.c \
gswe-planet-info.c \
gswe-planet-data.c \
gswe-aspect-info.c \
gswe-aspect-data.c \
gswe-antiscion-axis-info.c \
gswe-antiscion-data.c \
gswe-house-system-info.c \
gswe-house-data.c \
gswe-moment.c \
gswe-timestamp.c \
gswe-enumtypes.c \
gswe-version.c \
$(NULL)
libswe_glib_2_0_la_CFLAGS = $(GLIB_CFLAGS) $(GOBJECT_CFLAGS) -Wall
libswe_glib_2_0_la_LIBADD = $(GLIB_LIBS) $(GOBJECT_LIBS) -lswe
libswe_glib_2_0_la_DEPENDENCIES = \
libswe_glib_1_0_la_SOURCES = \
swe-glib.c \
gswe-types.c \
gswe-moment.c \
gswe-timestamp.c \
gswe-enumtypes.c \
$(NULL)
libswe_glib_1_0_la_CFLAGS = $(GLIB_CFLAGS) $(GOBJECT_CFLAGS) -Wall
libswe_glib_1_0_la_LIBADD = $(GLIB_LIBS) $(GOBJECT_LIBS) $(LIBSWE_LIBS)
BUILT_SOURCES = gswe-enumtypes.c gswe-enumtypes.h
CLEANFILES = $(BUILT_SOURCES)
EXTRA_DIST = gswe-enumtypes.h.template gswe-enumtypes.c.template $(PRIV_H_SRC_FILES) $(INST_H_SRC_FILES)
EXTRA_DIST = gswe-enumtypes.h.template gswe-enumtypes.c.template swe-glib-private.h $(INST_H_SRC_FILES)
gswe-enumtypes.h: $(gswe_enum_headers) gswe-enumtypes.h.template
gswe-enumtypes.h: $(gswe_headers) gswe-enumtypes.h.template
$(GLIB_MKENUMS) --template $(filter %.template,$^) $(filter-out %.template,$^) > \
gswe-enumtypes.h.tmp && mv gswe-enumtypes.h.tmp gswe-enumtypes.h
gswe-enumtypes.c: $(gswe_enum_headers) gswe-enumtypes.h gswe-enumtypes.c.template
gswe-enumtypes.c: $(gswe_headers) gswe-enumtypes.h gswe-enumtypes.c.template
$(GLIB_MKENUMS) --template $(filter %.template,$^) $(filter-out %.template,$^) > \
gswe-enumtypes.c.tmp && mv gswe-enumtypes.c.tmp gswe-enumtypes.c
SweGlib-2.0.vapi: SweGlib-$(SWE_GLIB_API_VERSION).gir
$(AM_V_GEN)$(VAPIGEN) --library=SweGlib-2.0 SweGlib-2.0.gir
if HAVE_INTROSPECTION
include $(INTROSPECTION_MAKEFILE)
SweGlib-$(SWE_GLIB_API_VERSION).gir: libswe-glib-2.0.la
SweGlib_@SWE_GLIB_API_VERSION_U@_gir_FILES = $(INST_H_SRC_FILES) $(INST_H_BUILT_FILES) $(filter %.c,$(libswe_glib_2_0_la_SOURCES))
SweGlib_@SWE_GLIB_API_VERSION_U@_gir_LIBS = libswe-glib-2.0.la
SweGlib-$(SWE_GLIB_API_VERSION).gir: libswe-glib-1.0.la
SweGlib_@SWE_GLIB_API_VERSION_U@_gir_FILES = $(INST_H_SRC_FILES) $(INST_H_BUILT_FILES) $(filter %.c,$(libswe_glib_1_0_la_SOURCES))
SweGlib_@SWE_GLIB_API_VERSION_U@_gir_LIBS = libswe-glib-1.0.la
SweGlib_@SWE_GLIB_API_VERSION_U@_gir_SCANNERFLAGS = --identifier-prefix=Gswe --symbol-prefix=gswe --warn-all
SweGlib_@SWE_GLIB_API_VERSION_U@_gir_INCLUDES = GLib-2.0 GObject-2.0
SweGlib_@SWE_GLIB_API_VERSION_U@_gir_CFLAGS = -D__SWE_GLIB_BUILDING__ -I$(top_srcdir) -I$(srcdir) -I$(builddir)
SweGlib_@SWE_GLIB_API_VERSION_U@_gir_LDFLAGS = $(GLIB_LIBS) $(GOBJECT_LIBS) -lswe
SweGlib_@SWE_GLIB_API_VERSION_U@_gir_EXPORT_PACKAGES = swe-glib
INTROSPECTION_GIRS = SweGlib-$(SWE_GLIB_API_VERSION).gir
@ -105,16 +57,15 @@ typelibsdir = $(libdir)/girepository-1.0
typelibs_DATA = SweGlib-$(SWE_GLIB_API_VERSION).typelib
headerdir = $(includedir)/swe-glib
header_DATA = \
$(INST_H_SRC_FILES) \
$(INST_H_BUILT_FILES) \
header_DATA = \
swe-glib.h \
gswe-types.h \
gswe-enumtypes.h \
gswe-moment.h \
gswe-timestamp.h \
$(NULL)
CLEANFILES += $(gir_DATA) $(typelibs_DATA)
if HAVE_VAPIGEN
vapidir = $(datadir)/vala/vapi
vapi_DATA = SweGlib-$(SWE_GLIB_API_VERSION).vapi
endif
endif

View File

@ -1,46 +0,0 @@
/* gswe-antiscion-axis-info-private.h: Private parts of GsweAntiscionAxisInfo
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef __SWE_GLIB_BUILDING__
#ifndef __SWE_GLIB_GSWE_ANTISCION_AXIS_INFO_PRIVATE_H__
#define __SWE_GLIB_GSWE_ANTISCION_AXIS_INFO_PRIVATE_H__
#include "gswe-types.h"
#include "gswe-antiscion-axis-info.h"
struct _GsweAntiscionAxisInfo {
/* the identifier of this mirror's axis */
GsweAntiscionAxis axis;
/* represents the sign in whict the mirror axis starts */
GsweSignInfo *start_sign;
/* the name of the mirror */
gchar *name;
/* if TRUE, the axis runs through the middle of its starting sign */
gdouble sign_offset;
/* Reference counter */
guint refcount;
};
#endif /* __SWE_GLIB_GSWE_ANTISCION_AXIS_INFO_PRIVATE_H__ */
#else /* not defined __SWE_GLIB_BUILDING__ */
#error __FILE__ "Can not be included, unless building SWE-GLib"
#endif /* __SWE_GLIB_BUILDING__ */

View File

@ -1,290 +0,0 @@
/* gswe-antiscion-axis-info.c: Antiscion axis related information
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include "swe-glib.h"
#include "swe-glib-private.h"
#include "gswe-antiscion-axis-info.h"
#include "gswe-antiscion-axis-info-private.h"
/**
* SECTION:gswe-antiscion-axis-info
* @short_description: a structure storing information about antiscion axes
* @title: GsweAntiscionAxisInfo
* @stability: Stable
* @include: swe-glib.h
*
* The #GsweAntiscionAxisInfo stores information about an antiscion axis.
*/
G_DEFINE_BOXED_TYPE(
GsweAntiscionAxisInfo,
gswe_antiscion_axis_info,
(GBoxedCopyFunc)gswe_antiscion_axis_info_ref,
(GBoxedFreeFunc)gswe_antiscion_axis_info_unref
);
static void
gswe_antiscion_axis_info_free(GsweAntiscionAxisInfo *antiscion_axis_info)
{
if (antiscion_axis_info->name) {
g_free(antiscion_axis_info->name);
}
if (antiscion_axis_info->start_sign != NULL) {
gswe_sign_info_unref(antiscion_axis_info->start_sign);
}
g_free(antiscion_axis_info);
}
/**
* gswe_antiscion_axis_info_new:
*
* Creates a new #GsweAntiscionAxisInfo object with reference count set to 1.
*
* Returns: (transfer full): a new #GsweAntiscionAxisInfo
*/
GsweAntiscionAxisInfo *
gswe_antiscion_axis_info_new(void)
{
GsweAntiscionAxisInfo *ret;
ret = g_new0(GsweAntiscionAxisInfo, 1);
ret->refcount = 1;
return ret;
}
/**
* gswe_antiscion_axis_info_ref:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
*
* Increases reference count on @antiscion_axis_info.
*
* Returns: (transfer none): the same #GsweAntiscionAxisInfo
*/
GsweAntiscionAxisInfo *
gswe_antiscion_axis_info_ref(GsweAntiscionAxisInfo *antiscion_axis_info)
{
antiscion_axis_info->refcount++;
return antiscion_axis_info;
}
/**
* gswe_antiscion_axis_info_unref:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
*
* Decreases reference count on @antiscion_axis_info. If reference count
* reaches zero, @antiscion_axis_info is freed.
*/
void
gswe_antiscion_axis_info_unref(GsweAntiscionAxisInfo *antiscion_axis_info)
{
if (--antiscion_axis_info->refcount == 0) {
gswe_antiscion_axis_info_free(antiscion_axis_info);
}
}
/**
* gswe_antiscion_axis_info_set_axis:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
* @axis: the new axis
*
* Sets the axis ID.
*/
void
gswe_antiscion_axis_info_set_axis(
GsweAntiscionAxisInfo *antiscion_axis_info,
GsweAntiscionAxis axis)
{
antiscion_axis_info->axis = axis;
}
/**
* gswe_antiscion_axis_info_get_axis:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
*
* Gets the axis ID.
*
* Returns: the axis this #GsweAntiscionAxisInfo represents
*/
GsweAntiscionAxis
gswe_antiscion_axis_info_get_axis(GsweAntiscionAxisInfo *antiscion_axis_info)
{
return antiscion_axis_info->axis;
}
/**
* gswe_antiscion_axis_info_set_start_sign_info:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
* @sign_info: a #GsweSignInfo to set as the starting sign of
* @antiscion_axis_info
*
* Sets the starting sign of the axis.
*/
void
gswe_antiscion_axis_info_set_start_sign_info(
GsweAntiscionAxisInfo *antiscion_axis_info,
GsweSignInfo *sign_info)
{
if (antiscion_axis_info->start_sign != NULL) {
gswe_sign_info_unref(antiscion_axis_info->start_sign);
}
antiscion_axis_info->start_sign = gswe_sign_info_ref(sign_info);
}
/**
* gswe_antiscion_axis_info_get_start_sign_info:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
*
* Gets the starting sign of the axis.
*
* Returns: (transfer none): the #GsweSignInfo of the sign in which this axis
* starts
*/
GsweSignInfo *
gswe_antiscion_axis_info_get_start_sign_info(
GsweAntiscionAxisInfo *antiscion_axis_info)
{
return antiscion_axis_info->start_sign;
}
/**
* gswe_antiscion_axis_info_set_start_sign:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
* @sign: the new starting sign of @antiscion_axis_info
* @err: a #GError
*
* Sets the starting sign of the axis. Unlike
* gswe_antiscion_axis_info_set_start_sign(), this method searches through the
* registered signs for a #GsweSignInfo record, and sets that as the starting
* sign. @err is populated with GSWE_ERROR_UNKNOWN_SIGN if such record can not
* be found.
*/
void
gswe_antiscion_axis_info_set_start_sign(
GsweAntiscionAxisInfo *antiscion_axis_info,
GsweZodiac sign,
GError **err)
{
GsweSignInfo *sign_info;
if ((sign_info = g_hash_table_lookup(
gswe_sign_info_table,
GINT_TO_POINTER(sign)
)) == NULL) {
g_warning("Trying to fetch an unregistered sign");
g_set_error(
err,
GSWE_ERROR, GSWE_ERROR_UNKNOWN_SIGN,
"The requested sign is not registered"
);
return;
}
if (antiscion_axis_info->start_sign != NULL) {
gswe_sign_info_unref(antiscion_axis_info->start_sign);
}
antiscion_axis_info->start_sign = gswe_sign_info_ref(sign_info);
}
/**
* gswe_antiscion_axis_info_get_start_sign:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
*
* Gets the starting sign of the axis.
*
* Returns: the corresponding sign ID
*/
GsweZodiac
gswe_antiscion_axis_info_get_start_sign(
GsweAntiscionAxisInfo *antiscion_axis_info)
{
if (antiscion_axis_info->start_sign) {
return antiscion_axis_info->start_sign->sign;
} else {
return GSWE_SIGN_NONE;
}
}
/**
* gswe_antiscion_axis_info_set_name:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
* @name: the new name of the axis
*
* Sets the name of the axis
*/
void
gswe_antiscion_axis_info_set_name(
GsweAntiscionAxisInfo *antiscion_axis_info,
const gchar *name)
{
if (antiscion_axis_info->name != NULL) {
g_free(antiscion_axis_info->name);
}
antiscion_axis_info->name = g_strdup(name);
}
/**
* gswe_antiscion_axis_info_get_name:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
*
* Gets the name of the axis.
*
* Returns: (transfer none): the name of the axis
*/
const gchar *
gswe_antiscion_axis_info_get_name(GsweAntiscionAxisInfo *antiscion_axis_info)
{
return antiscion_axis_info->name;
}
/**
* gswe_antiscion_axis_info_set_sign_offset:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
* @sign_offset: the new sign offset, in degree
*
* Sets the offset at which the axis starts.
*/
void
gswe_antiscion_axis_info_set_sign_offset(
GsweAntiscionAxisInfo *antiscion_axis_info,
gdouble sign_offset)
{
antiscion_axis_info->sign_offset = sign_offset;
}
/**
* gswe_antiscion_axis_info_get_sign_offset:
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
*
* Gets the offset at which the axis starts.
*
* Returns: the offset, in degrees
*/
gdouble
gswe_antiscion_axis_info_get_sign_offset(
GsweAntiscionAxisInfo *antiscion_axis_info)
{
return antiscion_axis_info->sign_offset;
}

View File

@ -1,88 +0,0 @@
/* gswe-antiscion-axis-info.h: Antiscion axis related information
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __SWE_GLIB_GSWE_ANTISCION_AXIS_INFO_H__
#define __SWE_GLIB_GSWE_ANTISCION_AXIS_INFO_H__
#include <glib-object.h>
#include "gswe-types.h"
#include "gswe-sign-info.h"
G_BEGIN_DECLS
/**
* GsweAntiscionAxisInfo:
*
* <structname>GsweAntiscionAxisInfo</structname> is an opaque structure whose
* members cannot be accessed directly.
*
* Since: 1.1
*/
typedef struct _GsweAntiscionAxisInfo GsweAntiscionAxisInfo;
GType gswe_antiscion_axis_info_get_type(void);
#define GSWE_TYPE_ANTISCION_AXIS_INFO (gswe_antiscion_axis_info_get_type())
GsweAntiscionAxisInfo *gswe_antiscion_axis_info_new(void);
GsweAntiscionAxisInfo *gswe_antiscion_axis_info_ref(
GsweAntiscionAxisInfo *antiscion_axis_info);
void gswe_antiscion_axis_info_unref(
GsweAntiscionAxisInfo *antiscion_axis_info);
void gswe_antiscion_axis_info_set_axis(
GsweAntiscionAxisInfo *antiscion_axis_info,
GsweAntiscionAxis axis);
GsweAntiscionAxis gswe_antiscion_axis_info_get_axis(
GsweAntiscionAxisInfo *antiscion_axis_info);
void gswe_antiscion_axis_info_set_start_sign_info(
GsweAntiscionAxisInfo *antiscion_axis_info,
GsweSignInfo *sign_info);
GsweSignInfo *gswe_antiscion_axis_info_get_start_sign_info(
GsweAntiscionAxisInfo *antiscion_axis_info);
void gswe_antiscion_axis_info_set_start_sign(
GsweAntiscionAxisInfo *antiscion_axis_info,
GsweZodiac sign,
GError **err);
GsweZodiac gswe_antiscion_axis_info_get_start_sign(
GsweAntiscionAxisInfo *antiscion_axis_info);
void gswe_antiscion_axis_info_set_name(
GsweAntiscionAxisInfo *antiscion_axis_info,
const gchar *name);
const gchar *gswe_antiscion_axis_info_get_name(
GsweAntiscionAxisInfo *antiscion_axis_info);
void gswe_antiscion_axis_info_set_sign_offset(
GsweAntiscionAxisInfo *antiscion_axis_info,
gdouble sign_offset);
gdouble gswe_antiscion_axis_info_get_sign_offset(
GsweAntiscionAxisInfo *antiscion_axis_info);
G_END_DECLS
#endif /* __SWE_GLIB_GSWE_ANTISCION_AXIS_INFO_H__ */

View File

@ -1,48 +0,0 @@
/* gswe-antiscion-data-private.h: Private parts of GsweAntiscionData
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef __SWE_GLIB_BUILDING__
#ifndef __SWE_GLIB_GSWE_ANTISCION_DATA_PRIVATE_H__
#define __SWE_GLIB_GSWE_ANTISCION_DATA_PRIVATE_H__
#include "gswe-planet-data.h"
#include "gswe-antiscion-data.h"
struct _GsweAntiscionData {
/* the first planet in the antiscion */
GswePlanetData *planet1;
/* the second planet in the antiscion */
GswePlanetData *planet2;
/* the #GsweAntiscionAxisInfo structure associated with this antiscion */
GsweAntiscionAxisInfo *antiscion_axis_info;
/* the difference in degrees between an exact antiscion and this given
* antiscion */
gdouble difference;
/* reference count */
guint refcount;
};
#endif /* __SWE_GLIB_GSWE_ANTISCION_DATA_PRIVATE_H__ */
#else /* not defined __SWE_GLIB_BUILDING__ */
#error __FILE__ "Can not be included, unless building SWE-GLib"
#endif /* __SWE_GLIB_BUILDING__ */

View File

@ -1,425 +0,0 @@
/* gswe-antiscion-data.c: Antiscia related data
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include <math.h>
#include <glib-object.h>
#include "swe-glib-private.h"
#include "swe-glib.h"
#include "gswe-antiscion-data.h"
#include "gswe-antiscion-data-private.h"
/**
* SECTION:gswe-antiscion-data
* @short_description: a structure representing a planet's position-related data
* @title: GsweAntiscionData
* @stability: Stable
* @include: swe-glib.h
* @see_also: #GsweAntiscionAxisInfo
*
* #GsweAntiscionData is a structure that represents an antiscion relationship
* between two planets, based on a specified axis.
*/
G_DEFINE_BOXED_TYPE(
GsweAntiscionData,
gswe_antiscion_data,
(GBoxedCopyFunc)gswe_antiscion_data_ref,
(GBoxedFreeFunc)gswe_antiscion_data_unref
);
static void
gswe_antiscion_data_free(GsweAntiscionData *antiscion_data)
{
if (antiscion_data->planet1) {
gswe_planet_data_unref(antiscion_data->planet1);
}
if (antiscion_data->planet2) {
gswe_planet_data_unref(antiscion_data->planet2);
}
if (antiscion_data->antiscion_axis_info) {
gswe_antiscion_axis_info_unref(antiscion_data->antiscion_axis_info);
}
g_free(antiscion_data);
}
/**
* gswe_antiscion_data_new:
*
* Creates a new #GsweAntiscionData object with reference count set to 1.
*
* Returns: (transfer full): a new #GsweAntiscionData object
*/
GsweAntiscionData *
gswe_antiscion_data_new(void)
{
GsweAntiscionData *ret;
ret = g_new0(GsweAntiscionData, 1);
ret->refcount = 1;
return ret;
}
/*
* find_antiscion:
* @axis_p: a pointer made with GINT_TO_POINTER(), holding the antiscion axis ID
* @antiscion_axis_info: a GsweAntiscionAxisInfo, which will be checked against
* @antiscion_data
* @antiscion_data: a GsweAntiscionData, whose planets' positions will be
* checked against @antiscion_axis_info
*
* This function is called internally by gswe_antiscion_data_calculate() to
* check if the two planets in @antiscion_data are antiscia of each other on
* the axis in @antiscion_axis_info
*/
static gboolean
find_antiscion(
gpointer axis_p,
GsweAntiscionAxisInfo *antiscion_axis_info,
GsweAntiscionData *antiscion_data)
{
GsweAntiscionAxis axis;
gdouble start_point,
axis_position,
planet_orb;
if ((axis = GPOINTER_TO_INT(axis_p)) == GSWE_ANTISCION_AXIS_NONE) {
return FALSE;
}
planet_orb = fmin(
antiscion_data->planet1->planet_info->orb,
antiscion_data->planet2->planet_info->orb
);
start_point = (antiscion_axis_info->start_sign->sign - 1) * 30.0;
start_point += antiscion_axis_info->sign_offset;
axis_position = 2 * start_point - antiscion_data->planet1->position;
if (axis_position < 0) {
axis_position += 360.0;
}
if ((antiscion_data->difference = fabs(
antiscion_data->planet2->position - axis_position
)) <= planet_orb) {
antiscion_data->antiscion_axis_info = antiscion_axis_info;
return TRUE;
} else {
antiscion_data->difference = 0.0;
}
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().
*
* <note><para>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.</para></note>
*/
void
gswe_antiscion_data_calculate(GsweAntiscionData *antiscion_data)
{
if ((antiscion_data->antiscion_axis_info = g_hash_table_find(
gswe_antiscion_axis_info_table,
(GHRFunc)find_antiscion,
antiscion_data
)) == NULL) {
antiscion_data->antiscion_axis_info = gswe_antiscion_axis_info_ref(
g_hash_table_lookup(
gswe_antiscion_axis_info_table,
GINT_TO_POINTER(GSWE_ANTISCION_AXIS_NONE)
)
);
} else {
gswe_antiscion_axis_info_ref(antiscion_data->antiscion_axis_info);
}
}
/**
* 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)
{
GsweAntiscionData *ret;
ret = gswe_antiscion_data_new();
ret->planet1 = gswe_planet_data_ref(planet1);
ret->planet2 = gswe_planet_data_ref(planet2);
gswe_antiscion_data_calculate(ret);
return ret;
}
/**
* gswe_antiscion_data_ref:
* @antiscion_data: (in): a #GsweAntiscionData
*
* Increases reference count on @antiscion_data.
*
* Returns: (transfer none): the same #GsweAntiscionData
*/
GsweAntiscionData *
gswe_antiscion_data_ref(GsweAntiscionData *antiscion_data)
{
antiscion_data->refcount++;
return antiscion_data;
}
/**
* gswe_antiscion_data_unref:
* @antiscion_data: (in): a #GsweAntiscionData
*
* Decreases reference count on @antiscion_data. If reference count reaches
* zero, @antiscion_data is freed.
*/
void
gswe_antiscion_data_unref(GsweAntiscionData *antiscion_data)
{
if (antiscion_data == NULL) {
return;
}
if (--antiscion_data->refcount == 0) {
gswe_antiscion_data_free(antiscion_data);
}
}
/**
* gswe_antiscion_data_set_planet1:
* @antiscion_data: (in): a #GsweAntiscionData
* @planet1: (in): a #GswePlanetData
*
* Sets @planet1 as the first planet of the antiscion.
*/
void
gswe_antiscion_data_set_planet1(
GsweAntiscionData *antiscion_data,
GswePlanetData *planet1)
{
if (antiscion_data->planet1) {
gswe_planet_data_unref(antiscion_data->planet1);
}
antiscion_data->planet1 = gswe_planet_data_ref(planet1);
}
/**
* gswe_antiscion_data_get_planet1:
* @antiscion_data: (in): a #GsweAntiscionData
*
* Gets the first in the antiscion relationship.
*
* Returns: (transfer none): The #GswePlanetData associated with the first
* planet.
*/
GswePlanetData *
gswe_antiscion_data_get_planet1(GsweAntiscionData *antiscion_data)
{
return antiscion_data->planet1;
}
/**
* gswe_antiscion_data_set_planet2:
* @antiscion_data: (in): a #GsweAntiscionData
* @planet2: (in): a #GswePlanetData
*
* Sets @planet2 as the second planet of the antiscion.
*/
void
gswe_antiscion_data_set_planet2(
GsweAntiscionData *antiscion_data,
GswePlanetData *planet2)
{
if (antiscion_data->planet2) {
gswe_planet_data_unref(antiscion_data->planet2);
}
antiscion_data->planet2 = gswe_planet_data_ref(planet2);
}
/**
* gswe_antiscion_data_get_planet2:
* @antiscion_data: (in): a #GsweAntiscionData
*
* Gets the second in the antiscion relationship.
*
* Returns: (transfer none): The #GswePlanetData associated with the second
* planet.
*/
GswePlanetData *
gswe_antiscion_data_get_planet2(GsweAntiscionData *antiscion_data)
{
return antiscion_data->planet2;
}
/**
* gswe_antiscion_data_set_axis:
* @antiscion_data: a #GsweAntiscionData
* @axis: the axis to set in @antiscion_data
* @err: a #GError
*
* Sets the antiscion axis, which must be known by SWE-GLib (e.g. by calling
* gswe_init()). @err is populated with GSWE_ERROR_UNKNOWN_ANTISCION_AXIS if
* the axis is not known.
*/
void
gswe_antiscion_data_set_axis(
GsweAntiscionData *antiscion_data,
GsweAntiscionAxis axis,
GError **err)
{
GsweAntiscionAxisInfo *antiscion_axis_info;
if ((antiscion_axis_info = g_hash_table_lookup(
gswe_antiscion_axis_info_table,
GINT_TO_POINTER(axis)
)) == NULL) {
g_set_error(
err,
GSWE_ERROR, GSWE_ERROR_UNKNOWN_ANTISCION_AXIS,
"Unknown antiscion axis"
);
return;
}
if (antiscion_data->antiscion_axis_info) {
gswe_antiscion_axis_info_unref(antiscion_data->antiscion_axis_info);
}
antiscion_data->antiscion_axis_info = gswe_antiscion_axis_info_ref(
antiscion_axis_info
);
}
/**
* gswe_antiscion_data_get_axis:
* @antiscion_data: (in): a #GsweAntiscionData
*
* Gets the axis on which the antiscion relationship exists.
*
* Returns: the axis ID
*/
GsweAntiscionAxis
gswe_antiscion_data_get_axis(GsweAntiscionData *antiscion_data)
{
if (antiscion_data->antiscion_axis_info) {
return antiscion_data->antiscion_axis_info->axis;
} else {
return GSWE_ANTISCION_AXIS_NONE;
}
}
/**
* gswe_antiscion_data_set_antiscion_axis_info:
* @antiscion_data: (in): a #GsweAntiscionData
* @antiscion_axis_info: (in): a #GsweAntiscionAxisInfo
*
* Sets @antiscion_axis_info as the axis of this #GsweAntiscionData.
*/
void
gswe_antiscion_data_set_antiscion_axis_info(
GsweAntiscionData *antiscion_data,
GsweAntiscionAxisInfo *antiscion_axis_info)
{
if (antiscion_data->antiscion_axis_info) {
gswe_antiscion_axis_info_unref(antiscion_data->antiscion_axis_info);
}
antiscion_data->antiscion_axis_info = gswe_antiscion_axis_info_ref(
antiscion_axis_info
);
}
/**
* gswe_antiscion_data_get_antiscion_axis_info:
* @antiscion_data: (in): a #GsweAntiscionData
*
* Gets the axis information related to the antiscion relationship's axis.
*
* Returns: (transfer none): the #GsweAntiscionAxisInfo associated with this
* axis
*/
GsweAntiscionAxisInfo *
gswe_antiscion_data_get_antiscion_axis_info(GsweAntiscionData *antiscion_data)
{
return antiscion_data->antiscion_axis_info;
}
/**
* gswe_antiscion_data_set_difference:
* @antiscion_data: a #GsweAntiscionData
* @difference: the difference from an exact antiscion, in degrees
*
* Sets the difference of this antiscion from an exact antiscion.
*/
void
gswe_antiscion_data_set_difference(
GsweAntiscionData *antiscion_data,
gdouble difference)
{
antiscion_data->difference = difference;
}
/**
* gswe_antiscion_data_get_difference:
* @antiscion_data: (in): a #GsweAntiscionData
*
* Gets the difference between an exact antiscion and this antiscion
* relationship.
*
* Returns: the difference, in degrees
*/
gdouble
gswe_antiscion_data_get_difference(GsweAntiscionData *antiscion_data)
{
return antiscion_data->difference;
}

View File

@ -1,78 +0,0 @@
/* gswe-antiscion-data.h: Antiscia related data
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __SWE_GLIB_GSWE_ANTISCION_DATA_H__
#define __SWE_GLIB_GSWE_ANTISCION_DATA_H__
#include <glib-object.h>
#include "gswe-planet-data.h"
#include "gswe-antiscion-axis-info.h"
G_BEGIN_DECLS
/**
* GsweAntiscionData:
*
* <structname>GsweAntiscionData</structname> is an opaque structure whose
* members cannot be accessed directly.
*
* Since: 1.1
*/
typedef struct _GsweAntiscionData GsweAntiscionData;
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);
void gswe_antiscion_data_set_planet2(
GsweAntiscionData *antiscion_data,
GswePlanetData *planet2);
GswePlanetData *gswe_antiscion_data_get_planet2(
GsweAntiscionData *antiscion_data);
GsweAntiscionAxis gswe_antiscion_data_get_axis(
GsweAntiscionData *antiscion_data);
GsweAntiscionAxisInfo *gswe_antiscion_data_get_antiscion_axis_info(
GsweAntiscionData *antiscion_data);
gdouble gswe_antiscion_data_get_difference(GsweAntiscionData *antiscion_data);
G_END_DECLS
#endif /* __SWE_GLIB_GSWE_ANTISCION_DATA_H__ */

View File

@ -1,51 +0,0 @@
/* gswe-aspect-data-private.h: Private parts of GsweAspectData
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef __SWE_GLIB_BUILDING__
#ifndef __SWE_GLIB_GSWE_ASPECT_DATA_PRIVATE_H__
#define __SWE_GLIB_GSWE_ASPECT_DATA_PRIVATE_H__
#include "gswe-aspect-data.h"
#include "gswe-planet-data.h"
struct _GsweAspectData {
/* the first planet in the aspect */
GswePlanetData *planet1;
/* the second planet in the aspect */
GswePlanetData *planet2;
/* the distance between the two planets, in degrees */
gdouble distance;
/* the #GsweAspectInfo structure associated with the aspect */
GsweAspectInfo *aspect_info;
/* the difference in percent between an exact aspect and this given
* aspect */
gdouble difference;
/* reference count */
guint refcount;
};
void gswe_aspect_data_calculate(GsweAspectData *aspect_data);
#endif /* __SWE_GLIB_GSWE_ASPECT_DATA_PRIVATE_H__ */
#else /* not defined __SWE_GLIB_BUILDING__ */
#error __FILE__ "Can not be included, unless building SWE-GLib"
#endif /* __SWE_GLIB_BUILDING__ */

View File

@ -1,350 +0,0 @@
/* gswe-aspect-data.c: Aspect related data
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include <math.h>
#include <glib-object.h>
#include "swe-glib-private.h"
#include "swe-glib.h"
#include "gswe-planet-data-private.h"
#include "gswe-planet-info-private.h"
#include "gswe-aspect-info.h"
#include "gswe-aspect-info-private.h"
#include "gswe-aspect-data.h"
#include "gswe-aspect-data-private.h"
/**
* SECTION:gswe-aspect-data
* @short_description: a structure representing an aspect between two planets
* @title: GsweAspectData
* @stability: Stable
* @include: swe-glib.h
* @see_also: #GsweAspectInfo
*
* #GsweAspectData is a structure that represents two planets relation to each
* other, like their aspect and the aspect's difference from an exact aspect.
*/
G_DEFINE_BOXED_TYPE(
GsweAspectData,
gswe_aspect_data,
(GBoxedCopyFunc)gswe_aspect_data_ref,
(GBoxedFreeFunc)gswe_aspect_data_unref
);
static void
gswe_aspect_data_free(GsweAspectData *aspect_data)
{
if (aspect_data->planet1) {
gswe_planet_data_unref(aspect_data->planet1);
}
if (aspect_data->planet2) {
gswe_planet_data_unref(aspect_data->planet2);
}
if (aspect_data->aspect_info) {
gswe_aspect_info_unref(aspect_data->aspect_info);
}
g_free(aspect_data);
}
/*
* find_aspect:
* @aspect_p: a pointer made with GINT_TO_POINTER(), holding the aspect ID
* @aspect_info: a GsweAspectInfo, which will be checked against @aspect_data
* @aspect_data: a GsweAspectData, whose planets' positions will be checked
* against @aspect_info
*
* This function is called internally by gswe_aspect_data_calculate() to check
* if the two planets in @aspect_data are in aspect according to @aspect_info
*/
static gboolean
find_aspect(
gpointer aspect_p,
GsweAspectInfo *aspect_info,
GsweAspectData *aspect_data)
{
gdouble diff,
planet_orb,
aspect_orb;
diff = fabs(aspect_info->size - aspect_data->distance);
planet_orb = fmin(
aspect_data->planet1->planet_info->orb,
aspect_data->planet2->planet_info->orb
);
aspect_orb = fmax(1.0, planet_orb - aspect_info->orb_modifier);
if (diff < aspect_orb) {
aspect_data->aspect_info = gswe_aspect_info_ref(aspect_info);
if (aspect_info->size == 0) {
aspect_data->difference = (1 - ((360.0 - diff) / 360.0)) * 100.0;
} else {
aspect_data->difference = (1
- ((aspect_info->size - diff) / aspect_info->size)) * 100.0;
}
return TRUE;
}
return FALSE;
}
void
gswe_aspect_data_calculate(GsweAspectData *aspect_data)
{
if ((aspect_data->distance = fabs(
aspect_data->planet1->position
- aspect_data->planet2->position
)) > 180.0) {
aspect_data->distance = 360.0 - aspect_data->distance;
}
if ((aspect_data->aspect_info = g_hash_table_find(
gswe_aspect_info_table,
(GHRFunc)find_aspect, aspect_data
)) == NULL) {
aspect_data->aspect_info = gswe_aspect_info_ref(
g_hash_table_lookup(
gswe_aspect_info_table,
GINT_TO_POINTER(GSWE_ASPECT_NONE)
)
);
} else {
gswe_aspect_info_ref(aspect_data->aspect_info);
}
}
/**
* gswe_aspect_data_new:
*
* Creates a new #GsweAspectData with reference count set to 1.
*
* Returns: (transfer full): a new #GsweAspectData
*/
GsweAspectData *
gswe_aspect_data_new(void)
{
GsweAspectData *ret;
gswe_init();
ret = g_new0(GsweAspectData, 1);
ret->refcount = 1;
return ret;
}
/**
* gswe_aspect_data_new_with_planets:
* @planet1: (in): a #GswePlanetData
* @planet2: (in): a #GswePlanetData
*
* Creates a new #GsweAspectData with a reference count of 1, and both planets
* initially set. Also calculates the aspect between them.
*
* Returns: (transfer full): a new #GsweAspectData with all data set.
*/
GsweAspectData *
gswe_aspect_data_new_with_planets(
GswePlanetData *planet1,
GswePlanetData *planet2)
{
GsweAspectData *ret;
ret = gswe_aspect_data_new();
ret->planet1 = gswe_planet_data_ref(planet1);
ret->planet2 = gswe_planet_data_ref(planet2);
gswe_aspect_data_calculate(ret);
return ret;
}
/**
* gswe_aspect_data_ref:
* @aspect_data: a #GsweAspectData
*
* Increases reference count of @aspect_data.
*
* Returns: (transfer none): the same #GsweAspectData
*/
GsweAspectData *
gswe_aspect_data_ref(GsweAspectData *aspect_data)
{
aspect_data->refcount++;
return aspect_data;
}
/**
* gswe_aspect_data_unref:
* @aspect_data: (in): a #GsweAspectData
*
* Decreases reference count on @aspect_data. If reference count reaches zero,
* @aspect_data is freed.
*/
void
gswe_aspect_data_unref(GsweAspectData *aspect_data)
{
if (aspect_data == NULL) {
return;
}
if (--aspect_data->refcount == 0) {
gswe_aspect_data_free(aspect_data);
}
}
/**
* gswe_aspect_data_set_planet1:
* @aspect_data: (in): a #GsweAspectData
* @planet1: (in): a #GswePlanetData
*
* Sets @planet1 as the first planet of the aspect.
*/
void
gswe_aspect_data_set_planet1(
GsweAspectData *aspect_data,
GswePlanetData *planet1)
{
if (aspect_data->planet1) {
gswe_planet_data_unref(aspect_data->planet1);
}
aspect_data->planet1 = gswe_planet_data_ref(planet1);
if (planet1 && aspect_data->planet2) {
gswe_aspect_data_calculate(aspect_data);
}
}
/**
* gswe_aspect_data_get_planet1:
* @aspect_data: (in): a #GsweAspectData
*
* Gets the first planet in the aspect.
*
* Returns: (transfer none): The #GswePlanetData associated with the first
* planet
*/
GswePlanetData *
gswe_aspect_data_get_planet1(GsweAspectData *aspect_data)
{
return aspect_data->planet1;
}
/**
* gswe_aspect_data_set_planet2:
* @aspect_data: (in): a #GsweAspectData
* @planet2: (in): a #GswePlanetData
*
* Sets @planet2 as the second planet of the aspect.
*/
void
gswe_aspect_data_set_planet2(
GsweAspectData *aspect_data,
GswePlanetData *planet2)
{
if (aspect_data->planet2) {
gswe_planet_data_unref(aspect_data->planet2);
}
aspect_data->planet2 = gswe_planet_data_ref(planet2);
if (aspect_data->planet1 && planet2) {
gswe_aspect_data_calculate(aspect_data);
}
}
/**
* gswe_aspect_data_get_planet2:
* @aspect_data: (in): a #GsweAspectData
*
* Gets the second planet in the aspect.
*
* Returns: (transfer none): The #GswePlanetData associated with the second
* planet
*/
GswePlanetData *
gswe_aspect_data_get_planet2(GsweAspectData *aspect_data)
{
return aspect_data->planet2;
}
/**
* gswe_aspect_data_get_distance:
* @aspect_data: (in): a #GsweAspectData
*
* Gets the exact distance between the two planets in the aspect.
*
* Returns: the distance, in degrees
*/
gdouble
gswe_aspect_data_get_distance(GsweAspectData *aspect_data)
{
return aspect_data->distance;
}
/**
* gswe_aspect_data_get_aspect:
* @aspect_data: (in): a #GsweAspectData
*
* Gets the actual aspect between the two planets.
*
* Returns: the aspect ID
*/
GsweAspect
gswe_aspect_data_get_aspect(GsweAspectData *aspect_data)
{
if (aspect_data->aspect_info) {
return aspect_data->aspect_info->aspect;
} else {
return GSWE_ASPECT_NONE;
}
}
/**
* gswe_aspect_data_get_aspect_info:
* @aspect_data: (in): a #GsweAspectData
*
* Gets the the #GsweAspectInfo object for this aspect.
*
* Returns: (transfer none): a #GsweAspectInfo
*/
GsweAspectInfo *
gswe_aspect_data_get_aspect_info(GsweAspectData *aspect_data)
{
return aspect_data->aspect_info;
}
/**
* gswe_aspect_data_get_difference:
* @aspect_data: (in): a #GsweAspectData
*
* Gets the difference between an exact aspect and this one.
*
* Returns: the difference in percent.
*/
gdouble
gswe_aspect_data_get_difference(GsweAspectData *aspect_data)
{
return aspect_data->difference;
}

View File

@ -1,76 +0,0 @@
/* gswe-aspect-data.h: Aspect related data
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __SWE_GLIB_GSWE_ASPECT_DATA_H__
#define __SWE_GLIB_GSWE_ASPECT_DATA_H__
#include <glib-object.h>
#include "gswe-types.h"
#include "gswe-aspect-info.h"
#include "gswe-planet-data.h"
G_BEGIN_DECLS
/**
* GsweAspectData:
*
* <structname>GsweAspectData</structname> is an opaque structure whose members
* cannot be accessed directly.
*
* Since: 1.1
*/
typedef struct _GsweAspectData GsweAspectData;
GType gswe_aspect_data_get_type(void);
#define GSWE_TYPE_ASPECT_DATA (gswe_aspect_data_get_type())
GsweAspectData *gswe_aspect_data_new(void);
GsweAspectData *gswe_aspect_data_new_with_planets(
GswePlanetData *planet1,
GswePlanetData *planet2);
GsweAspectData *gswe_aspect_data_ref(GsweAspectData *aspect_data);
void gswe_aspect_data_unref(GsweAspectData *aspect_data);
void gswe_aspect_data_set_planet1(
GsweAspectData *aspect_data,
GswePlanetData *planet1);
GswePlanetData *gswe_aspect_data_get_planet1(GsweAspectData *aspect_data);
void gswe_aspect_data_set_planet2(
GsweAspectData *aspect_data,
GswePlanetData *planet2);
GswePlanetData *gswe_aspect_data_get_planet2(GsweAspectData *aspect_data);
gdouble gswe_aspect_data_get_distance(GsweAspectData *aspect_data);
GsweAspect gswe_aspect_data_get_aspect(GsweAspectData *aspect_data);
GsweAspectInfo *gswe_aspect_data_get_aspect_info(GsweAspectData *aspect_data);
gdouble gswe_aspect_data_get_difference(GsweAspectData *aspect_data);
G_END_DECLS
#endif /* __SWE_GLIB_GSWE_ASPECT_DATA_H__ */

View File

@ -1,53 +0,0 @@
/* gswe-aspect-info-private.h: Private parts of GsweAspectInfo
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef __SWE_GLIB_BUILDING__
#ifndef __SWE_GLIB_GSWE_ASPECT_INFO_PRIVATE_H__
#define __SWE_GLIB_GSWE_ASPECT_INFO_PRIVATE_H__
#include "gswe-types.h"
#include "gswe-aspect-info.h"
struct _GsweAspectInfo {
/* the identifier of this aspect */
GsweAspect aspect;
/* the name of the aspect */
gchar *name;
/* the size of the aspect, in degrees */
guint size;
/* the modifier of the orb (the maximum allowable difference from an exact
* orb) */
gdouble orb_modifier;
/* shows whether this aspect is harmonic or not */
gboolean harmonic;
/* shows whether this aspect is major (Ptolemaic) or not */
gboolean major;
/** reference count */
guint refcount;
};
#endif /* __SWE_GLIB_GSWE_ASPECT_INFO_PRIVATE_H__ */
#else /* not defined __SWE_GLIB_BUILDING__ */
#error __FILE__ "Can not be included, unless building SWE-GLib"
#endif /* __SWE_GLIB_BUILDING__ */

View File

@ -1,282 +0,0 @@
/* gswe-aspect-info.c: Aspect related information
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include <glib-object.h>
#include "gswe-types.h"
#include "gswe-aspect-info.h"
#include "gswe-aspect-info-private.h"
/**
* SECTION:gswe-aspect-info
* @short_description: a structure storing information about an aspect
* @title: GsweAspectInfo
* @stability: Stable
* @include: swe-glib.h
*
* The #GsweAspectInfo stores information about an aspect.
*
* <warning><para>Using set_* type of funcions on an already registered
* #GsweAspectInfo can currently cause undocumented side effects, if a
* #GsweMoment is already instantiated. Currently, this covers all
* #GsweAspectInfo objects. In the future, registering custom aspects may be
* possible; until then, you should never use such functions.</para></warning>
*/
G_DEFINE_BOXED_TYPE(
GsweAspectInfo,
gswe_aspect_info,
(GBoxedCopyFunc)gswe_aspect_info_ref,
(GBoxedFreeFunc)gswe_aspect_info_unref
);
static void
gswe_aspect_info_free(GsweAspectInfo *aspect_info)
{
if (aspect_info->name) {
g_free(aspect_info->name);
}
g_free(aspect_info);
}
/**
* gswe_aspect_info_new:
*
* Creates a new #GsweAspectInfo with reference count set to 1.
*
* Returns: (transfer full): a new #GsweAspectInfo
*/
GsweAspectInfo *
gswe_aspect_info_new(void)
{
GsweAspectInfo *ret;
ret = g_new0(GsweAspectInfo, 1);
ret->refcount = 1;
return ret;
}
/**
* gswe_aspect_info_ref:
* @aspect_info: (in): a #GsweAspectInfo
*
* Increases reference count on @aspect_info by one.
*
* Returns: (transfer none): the same #GsweAspectInfo
*/
GsweAspectInfo *
gswe_aspect_info_ref(GsweAspectInfo *aspect_info)
{
aspect_info->refcount++;
return aspect_info;
}
/**
* gswe_aspect_info_unref:
* @aspect_info: (in): a #GsweAspectInfo
*
* Decreases reference count of @aspect_info by one. If reference count drops
* to zero, @aspect_info is freed.
*/
void
gswe_aspect_info_unref(GsweAspectInfo *aspect_info)
{
if (--aspect_info->refcount == 0) {
gswe_aspect_info_free(aspect_info);
}
}
/**
* gswe_aspect_info_set_aspect:
* @aspect_info: (in): a #GsweAspectInfo
* @aspect: the aspect to set in @aspect_info
*
* Sets @aspect_info to represenc @aspect.
*/
void
gswe_aspect_info_set_aspect(GsweAspectInfo *aspect_info, GsweAspect aspect)
{
aspect_info->aspect = aspect;
}
/**
* gswe_aspect_info_get_aspect:
* @aspect_info: (in): a #GsweAspectInfo
*
* Gets the aspect ID
*/
GsweAspect
gswe_aspect_info_get_aspect(GsweAspectInfo *aspect_info)
{
return aspect_info->aspect;
}
/**
* gswe_aspect_info_set_name:
* @aspect_info: (in): a #GsweAspectInfo
* @name: (in): the name to be set as @aspect_infos name
*
* Sets the name of @aspect_info to @name.
*/
void
gswe_aspect_info_set_name(GsweAspectInfo *aspect_info, const gchar *name)
{
if (aspect_info->name) {
g_free(aspect_info->name);
}
aspect_info->name = g_strdup(name);
}
/**
* gswe_aspect_info_get_name:
* @aspect_info: (in): a #GsweAspectInfo
*
* Gets the name of this aspect. If NLS is enabled, name is translated in
* gswe_init(), so if you switch locale in your program, it will remain in the
* old locale. The returned string should not be freed or modified. It remains
* valid until @aspect_info exists.
*
* Returns: (transfer none): the name of the aspect
*/
const gchar *
gswe_aspect_info_get_name(GsweAspectInfo *aspect_info)
{
return aspect_info->name;
}
/**
* gswe_aspect_info_set_size:
* @aspect_info: (in): a #GsweAspectInfo
* @size: the new size for @aspect_info, in degrees
*
* Sets the size of @aspect info.
*/
void
gswe_aspect_info_set_size(GsweAspectInfo *aspect_info, gdouble size)
{
aspect_info->size = size;
}
/**
* gswe_aspect_info_get_size:
* @aspect_info: (in): a #GsweAspectInfo
*
* Gets the size of the aspect.
*
* Returns: the size of the aspect, in degrees
*/
gdouble
gswe_aspect_info_get_size(GsweAspectInfo *aspect_info)
{
return aspect_info->size;
}
/**
* gswe_aspect_info_set_orb_modifier:
* @aspect_info: (in): a #GsweAspectInfo
* @orb_modifier: the new orb modifier of @aspect_info
*
* Sets the orb modifier for @aspect_info. The orb modifier is used in aspect
* calculation; if the difference between an exact aspect and the distance
* between two positions exceeds this limit, the aspect is not considered.
*/
void
gswe_aspect_info_set_orb_modifier(
GsweAspectInfo *aspect_info,
gdouble orb_modifier)
{
aspect_info->orb_modifier = orb_modifier;
}
/**
* gswe_aspect_info_get_orb_modifier:
* @aspect_info: (in): a #GsweAspectInfo
*
* Gets the orb modifier of this aspect. The orb modifier is subtracted from
* the planets' orb during aspect calculation.
*
* Returns: the orb modifier, in degrees
*/
gdouble
gswe_aspect_info_get_orb_modifier(GsweAspectInfo *aspect_info)
{
return aspect_info->orb_modifier;
}
/**
* gswe_aspect_info_set_harmonic:
* @aspect_info: (in): a #GsweAspectInfo
* @harmonic: TRUE, if @aspect_info should be considered harmonic; FALSE
* otherwise
*
* Sets the harmonic state of @aspect_info.
*/
void
gswe_aspect_info_set_harmonic(GsweAspectInfo *aspect_info, gboolean harmonic)
{
aspect_info->harmonic = harmonic;
}
/**
* gswe_aspect_info_get_harmonic:
* @aspect_info: (in): a #GsweAspectInfo
*
* Tells if this aspect is considered harmonic.
*
* Returns: TRUE if the aspect is harmonic; FALSE otherwise
*/
gboolean
gswe_aspect_info_get_harmonic(GsweAspectInfo *aspect_info)
{
return aspect_info->harmonic;
}
/**
* gswe_aspect_info_set_major:
* @aspect_info: (in): a #GsweAspectInfo
* @major: TRUE, if @aspect_info should be considered major (Ptolemaic); FALSE
* otherwise
*
* Sets the major state of @aspect_info.
*
* <note><para>As all Ptolemaic aspects are registered during gswe_init(), you
* should never set @major to TRUE on new aspects.</para></note>
*/
void
gswe_aspect_info_set_major(GsweAspectInfo *aspect_info, gboolean major)
{
aspect_info->major = major;
}
/**
* gswe_aspect_info_get_major:
* @aspect_info: (in): a #GsweAspectInfo
*
* Gets the significance of the aspect, e.g. if its Ptolemaic or note.
*
* Returns: TRUE if the aspect is a major (Ptolemaic) one; FALSE otherwise
*/
gboolean
gswe_aspect_info_get_major(GsweAspectInfo *aspect_info)
{
return aspect_info->major;
}

View File

@ -1,78 +0,0 @@
/* gswe-aspect-info.h: Aspect related information
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __SWE_GLIB_GSWE_ASPECT_INFO_H__
#define __SWE_GLIB_GSWE_ASPECT_INFO_H__
#include <glib-object.h>
#include "gswe-types.h"
G_BEGIN_DECLS
/**
* GsweAspectInfo:
*
* <structname>GsweAspectInfo</structname> is an opaque structure whose members
* cannot be accessed directly.
*
* Since: 1.1
*/
typedef struct _GsweAspectInfo GsweAspectInfo;
GType gswe_aspect_info_get_type(void);
#define GSWE_TYPE_ASPECT_INFO (gswe_aspect_info_get_type())
GsweAspectInfo *gswe_aspect_info_new(void);
GsweAspectInfo *gswe_aspect_info_ref(GsweAspectInfo *aspect_info);
void gswe_aspect_info_unref(GsweAspectInfo *aspect_info);
void gswe_aspect_info_set_aspect(
GsweAspectInfo *aspect_info,
GsweAspect aspect);
GsweAspect gswe_aspect_info_get_aspect(GsweAspectInfo *aspect_info);
void gswe_aspect_info_set_name(GsweAspectInfo *aspect_info, const gchar *name);
const gchar *gswe_aspect_info_get_name(GsweAspectInfo *aspect_info);
void gswe_aspect_info_set_size(GsweAspectInfo *aspect_info, gdouble size);
gdouble gswe_aspect_info_get_size(GsweAspectInfo *aspect_info);
void gswe_aspect_info_set_orb_modifier(
GsweAspectInfo *aspect_info,
gdouble orb_modifier);
gdouble gswe_aspect_info_get_orb_modifier(GsweAspectInfo *aspect_info);
void gswe_aspect_info_set_harmonic(
GsweAspectInfo *aspect_info,
gboolean harmonic);
gboolean gswe_aspect_info_get_harmonic(GsweAspectInfo *aspect_info);
void gswe_aspect_info_set_major(GsweAspectInfo *aspect_info, gboolean major);
gboolean gswe_aspect_info_get_major(GsweAspectInfo *aspect_info);
G_END_DECLS
#endif /* __SWE_GLIB_GSWE_ASPECT_INFO_H__ */

View File

@ -16,13 +16,12 @@
* You should have received a copy of the GNU General Public License
* along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include "swe-glib.h"
#include "gswe-enumtypes.h"
#include "@filename@"
/*** END file-header ***/
/*** BEGIN file-production ***/
#include "@filename@"
/* enumerations from "@filename@" */
/*** END file-production ***/
@ -32,28 +31,19 @@ GType
{
static volatile gsize g_define_type_id__volatile = 0;
gswe_init();
if (g_once_init_enter(&g_define_type_id__volatile)) {
static const G@Type@Value values[] = {
/*** END value-header ***/
/*** BEGIN value-production ***/
{
@VALUENAME@,
"@VALUENAME@",
"@valuenick@"
},
{ @VALUENAME@, "@VALUENAME@", "@valuenick@" },
/*** END value-production ***/
/*** BEGIN value-tail ***/
{ 0, NULL, NULL }
};
GType g_define_type_id = g_@type@_register_static(
g_intern_static_string("@EnumName@"),
values
);
GType g_define_type_id = g_@type@_register_static(g_intern_static_string("@EnumName@"), values);
g_once_init_leave(&g_define_type_id__volatile, g_define_type_id);
}

View File

@ -1,44 +0,0 @@
/* gswe-house-data-private.h: Private parts of GsweHouseData
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef __SWE_GLIB_BUILDING__
#ifndef __SWE_GLIB_GSWE_HOUSE_DATA_PRIVATE_H__
#define __SWE_GLIB_GSWE_HOUSE_DATA_PRIVATE_H__
#include "gswe-house-data.h"
struct _GsweHouseData {
/* the number of the house (usually in the range [1;12]. Sometimes may be
* [1;36]) */
guint house;
/* the position of the house's cusp on the sky */
gdouble cusp_position;
/* the #GsweSignInfo structure associated with the sign in which the house
* cusp is in */
GsweSignInfo *sign_info;
/* reference count */
guint refcount;
};
#endif /* __SWE_GLIB_GSWE_HOUSE_DATA_PRIVATE_H__ */
#else /* not defined __SWE_GLIB_BUILDING__ */
#error __FILE__ "Can not be included, unless building SWE-GLib"
#endif /* __SWE_GLIB_BUILDING__ */

View File

@ -1,165 +0,0 @@
/* gswe-house-data.c: House related data
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include "gswe-types.h"
#include "swe-glib-private.h"
#include "swe-glib.h"
#include "gswe-house-data.h"
#include "gswe-house-data-private.h"
/**
* SECTION:gswe-house-data
* @short_description: a structure representing a house's position-related data
* @title: GsweHouseData
* @stability: Stable
* @include: swe-glib.h
* @see_also: #GsweHouseSystemInfo
*
* #GsweHouseData is a structure that represents a house's position.
*/
G_DEFINE_BOXED_TYPE(
GsweHouseData,
gswe_house_data,
(GBoxedCopyFunc)gswe_house_data_ref,
(GBoxedFreeFunc)gswe_house_data_unref
);
static void
gswe_house_data_free(GsweHouseData *house_data)
{
if (house_data->sign_info) {
gswe_sign_info_unref(house_data->sign_info);
}
g_free(house_data);
}
/**
* gswe_house_data_new:
*
* Creates a new #GsweHouseData with reference count set to 1.
*
* Returns: (transfer full): a new #GsweHouseData
*/
GsweHouseData *
gswe_house_data_new(void)
{
GsweHouseData *ret;
ret = g_new0(GsweHouseData, 1);
ret->refcount = 1;
return ret;
}
/**
* gswe_house_data_ref:
* @house_data: a #GsweHouseData
*
* Increases reference count on @house_data by one.
*
* Returns: (transfer none): the same #GsweHouseData
*/
GsweHouseData *
gswe_house_data_ref(GsweHouseData *house_data)
{
house_data->refcount++;
return house_data;
}
/**
* gswe_house_data_unref:
* @house_data: a #GsweHouseData
*
* Decreases reference count on @house_data by one. If reference count drops to
* zero, @house_data is freed.
*/
void
gswe_house_data_unref(GsweHouseData *house_data)
{
if (house_data == NULL) {
return;
}
if (--house_data->refcount == 0) {
gswe_house_data_free(house_data);
}
}
/**
* gswe_house_data_get_house:
* @house_data: (in): a #GsweHouseData
*
* Gets the number of the house.
*
* Returns: the house number
*/
guint
gswe_house_data_get_house(GsweHouseData *house_data)
{
return house_data->house;
}
/**
* gswe_house_data_get_cusp_position:
* @house_data: (in): a #GsweHouseData
*
* Gets the position of the house's cusp.
*
* Returns: the cusp position, in degrees
*/
gdouble
gswe_house_data_get_cusp_position(GsweHouseData *house_data)
{
return house_data->cusp_position;
}
/**
* gswe_house_data_get_sign:
* @house_data: a #GsweHouseData
*
* Gets the sign which the house's cusp is in.
*
* Returns: the GsweZodiac of the house cusp's sign
*/
GsweZodiac
gswe_house_data_get_sign(GsweHouseData *house_data)
{
if (house_data->sign_info) {
return house_data->sign_info->sign;
} else {
return GSWE_SIGN_NONE;
}
}
/**
* gswe_house_data_get_sign_info:
* @house_data: (in): a #GsweHouseData
*
* Gets the #GsweSignInfo that represents the sign which the house's cusp is in.
*
* Returns: (transfer none): a #GsweSignInfo representing the sign
*/
GsweSignInfo *
gswe_house_data_get_sign_info(GsweHouseData *house_data)
{
return house_data->sign_info;
}

View File

@ -1,53 +0,0 @@
/* gswe-house-data.h: House related data
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __SWE_GLIB_GSWE_HOUSE_DATA_H__
#define __SWE_GLIB_GSWE_HOUSE_DATA_H__
#include <glib-object.h>
#include "gswe-sign-info.h"
G_BEGIN_DECLS
/**
* GsweHouseData:
*
* <structname>GsweHouseData</structname> is an opaque structure whose members
* cannot be accessed directly.
*
* Since: 1.1
*/
typedef struct _GsweHouseData GsweHouseData;
GType gswe_house_data_get_type(void);
#define GSWE_TYPE_HOUSE_DATA (gswe_house_data_get_type())
GsweHouseData *gswe_house_data_new(void);
GsweHouseData *gswe_house_data_ref(GsweHouseData *house_data);
void gswe_house_data_unref(GsweHouseData *house_data);
guint gswe_house_data_get_house(GsweHouseData *house_data);
gdouble gswe_house_data_get_cusp_position(GsweHouseData *house_data);
GsweZodiac gswe_house_data_get_sign(GsweHouseData *house_data);
GsweSignInfo *gswe_house_data_get_sign_info(GsweHouseData *house_data);
G_END_DECLS
#endif /* __SWE_GLIB_GSWE_HOUSE_DATA_H__ */

View File

@ -1,45 +0,0 @@
/* gswe-house-system-info-private.h: Private parts of GsweHouseSystemInfo
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef __SWE_GLIB_BUILDING__
#ifndef __SWE_GLIB_GSWE_HOUSE_SYSTEM_INFO_PRIVATE_H__
#define __SWE_GLIB_GSWE_HOUSE_SYSTEM_INFO_PRIVATE_H__
#include "gswe-types.h"
#include "gswe-house-system-info.h"
struct _GsweHouseSystemInfo {
/* the house system's ID */
GsweHouseSystem house_system;
/* the character value that represents this house system in the Swiss
* Ephemeris library */
gchar sweph_id;
/* the name of this house system */
gchar *name;
/* reference count */
guint refcount;
};
#endif /* __SWE_GLIB_GSWE_HOUSE_SYSTEM_INFO_PRIVATE_H__ */
#else /* not defined __SWE_GLIB_BUILDING__ */
#error __FILE__ "Can not be included, unless building SWE-GLib"
#endif /* __SWE_GLIB_BUILDING__ */

View File

@ -1,189 +0,0 @@
/* gswe-house-system-info.c: House system information
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include "gswe-types.h"
#include "gswe-house-system-info.h"
#include "gswe-house-system-info-private.h"
/**
* SECTION:gswe-house-system-info
* @short_description: a structure storing information about a house system
* @title: GsweHouseSystemInfo
* @stability: Stable
* @include: swe-glib.h
*
* #GsweHouseSystemInfo stores information of a house system.
*/
G_DEFINE_BOXED_TYPE(
GsweHouseSystemInfo,
gswe_house_system_info,
(GBoxedCopyFunc)gswe_house_system_info_ref,
(GBoxedFreeFunc)gswe_house_system_info_unref
);
static void
gswe_house_system_info_free(GsweHouseSystemInfo *house_system_info)
{
if (house_system_info->name) {
g_free(house_system_info->name);
}
g_free(house_system_info);
}
/**
* gswe_house_system_info_new:
*
* Creates a new #GsweHouseSystemInfo with reference count of 1.
*
* Returns: (transfer full): a new #GsweHouseSystemInfo
*/
GsweHouseSystemInfo *
gswe_house_system_info_new(void)
{
GsweHouseSystemInfo *ret;
ret = g_new0(GsweHouseSystemInfo, 1);
ret->refcount = 1;
return ret;
}
/**
* gswe_house_system_info_ref:
* @house_system_info: (in): a #GsweHouseSystemInfo
*
* Increases reference count on @house_system_info by one.
*
* Returns: (transfer none): the same #GsweHouseSystemInfo
*/
GsweHouseSystemInfo *
gswe_house_system_info_ref(GsweHouseSystemInfo *house_system_info)
{
house_system_info->refcount++;
return house_system_info;
}
/**
* gswe_house_system_info_unref:
* @house_system_info: a #GsweHouseSystemInfo
*
* Decreases reference count on @house_system_info by one. If reference count
* drops to zero, @house_system_info is freed.
*/
void
gswe_house_system_info_unref(GsweHouseSystemInfo *house_system_info)
{
if (--house_system_info->refcount == 0) {
gswe_house_system_info_free(house_system_info);
}
}
/**
* gswe_house_system_info_set_house_system:
* @house_system_info: (in): a #GsweHouseSystemInfo
* @house_system: a #GsweHouseSystem
*
* Sets up @house_system_info to represent @house_system.
*/
void
gswe_house_system_info_set_house_system(
GsweHouseSystemInfo *house_system_info,
GsweHouseSystem house_system)
{
house_system_info->house_system = house_system;
}
/**
* gswe_house_system_info_get_house_system:
* @house_system_info: (in): a #GsweHouseSystemInfo
*
* Gets the house system ID this #GsweHouseSystemInfo represents.
*
* Returns: the house system ID
*/
GsweHouseSystem
gswe_house_system_info_get_house_system(GsweHouseSystemInfo *house_system_info)
{
return house_system_info->house_system;
}
/**
* gswe_house_system_info_set_sweph_id:
* @house_system_info: a #GsweHouseSystemInfo
* @sweph_id: a character recognized by Swiss Ephemeris as a house system
*
* Sets up @house_system_info to represent the Swiss Ephemeris house system
* marked by @sweph_id.
*/
void
gswe_house_system_info_set_sweph_id(
GsweHouseSystemInfo *house_system_info,
gchar sweph_id)
{
house_system_info->sweph_id = sweph_id;
}
/**
* gswe_house_system_info_get_sweph_id:
* @house_system_info: (in): a #GsweHouseSystemInfo
*
* Gets the Swiss Ephemeris ID for the house system.
*
* Returns: the character representing this house system in Swiss Ephemeris
*/
gchar
gswe_house_system_info_get_sweph_id(GsweHouseSystemInfo *house_system_info)
{
return house_system_info->sweph_id;
}
/**
* gswe_house_system_info_set_name:
* @house_system_info: a #GsweHouseSystemInfo
* @name: the new name for this house system
*
* Sets the name of @house_system_info.
*/
void
gswe_house_system_info_set_name(
GsweHouseSystemInfo *house_system_info,
const gchar *name)
{
if (house_system_info->name) {
g_free(house_system_info->name);
}
house_system_info->name = g_strdup(name);
}
/**
* gswe_house_system_info_get_name:
* @house_system_info: (in): a #GsweHouseSystemInfo
*
* Gets the name of the house system.
*
* Returns: (transfer none): the name of the house system
*/
const gchar *
gswe_house_system_info_get_name(GsweHouseSystemInfo *house_system_info)
{
return house_system_info->name;
}

View File

@ -1,71 +0,0 @@
/* gswe-house-system-info.h: House system information
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __SWE_GLIB_GSWE_HOUSE_SYSTEM_INFO_H__
#define __SWE_GLIB_GSWE_HOUSE_SYSTEM_INFO_H__
#include <glib-object.h>
#include "gswe-types.h"
G_BEGIN_DECLS
/**
* GsweHouseSystemInfo:
*
* <structname>GsweHouseSystemInfo</structname> is an opaque structure whose
* members cannot be accessed directly.
*
* Since: 1.1
*/
typedef struct _GsweHouseSystemInfo GsweHouseSystemInfo;
GType gswe_house_system_info_get_type(void);
#define GSWE_TYPE_HOUSE_SYSTEM_INFO (gswe_house_system_info_get_type())
GsweHouseSystemInfo *gswe_house_system_info_new(void);
GsweHouseSystemInfo *gswe_house_system_info_ref(
GsweHouseSystemInfo *house_system_info);
void gswe_house_system_info_unref(GsweHouseSystemInfo *house_system_info);
void gswe_house_system_info_set_house_system(
GsweHouseSystemInfo *house_system_info,
GsweHouseSystem house_system);
GsweHouseSystem gswe_house_system_info_get_house_system(
GsweHouseSystemInfo *house_system_info);
void gswe_house_system_info_set_sweph_id(
GsweHouseSystemInfo *house_system_info,
gchar sweph_id);
gchar gswe_house_system_info_get_sweph_id(
GsweHouseSystemInfo *house_system_info);
void gswe_house_system_info_set_name(
GsweHouseSystemInfo *house_system_info,
const gchar *name);
const gchar *gswe_house_system_info_get_name(
GsweHouseSystemInfo *house_system_info);
G_END_DECLS
#endif /* __SWE_GLIB_GSWE_HOUSE_SYSTEM_INFO_H__ */

File diff suppressed because it is too large Load Diff

View File

@ -21,34 +21,54 @@
#include <glib-object.h>
#include "gswe-timestamp.h"
#include "gswe-moon-phase-data.h"
#include "gswe-planet-data.h"
#include "gswe-types.h"
#define GSWE_TYPE_MOMENT (gswe_moment_get_type())
#define GSWE_MOMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST( \
(obj), \
GSWE_TYPE_MOMENT, \
GsweMoment))
#define GSWE_IS_MOMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE( \
(obj), \
GSWE_TYPE_MOMENT))
#define GSWE_MOMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST( \
(klass), \
GSWE_TYPE_MOMENT, \
GsweMomentClass))
#define GSWE_IS_MOMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE( \
(klass), \
GSWE_TYPE_MOMENT))
#define GSWE_MOMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS( \
(obj), \
GSWE_TYPE_MOMENT, \
GsweMomentClass))
#define GSWE_MOMENT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), GSWE_TYPE_MOMENT, GsweMoment))
#define GSWE_IS_MOMENT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), GSWE_TYPE_MOMENT))
#define GSWE_MOMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), GSWE_TYPE_MOMENT, GsweMomentClass))
#define GSWE_IS_MOMENT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), GSWE_TYPE_MOMENT))
#define GSWE_MOMENT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), GSWE_TYPE_MOMENT, GsweMomentClass))
typedef struct _GsweMoment GsweMoment;
typedef struct _GsweMomentClass GsweMomentClass;
typedef struct _GsweMomentPrivate GsweMomentPrivate;
/**
* GSWE_MOMENT_ERROR:
*
* Error domain for GsweMoment. Errors in this domain will be from
* #GsweMomentError enumeration. See #GError for more information on error
* domains.
*/
#define GSWE_MOMENT_ERROR gswe_moment_error_quark()
GQuark gswe_moment_error_quark(void);
/**
* GsweMomentError:
* @GSWE_MOMENT_ERROR_SUCCESS: no error
* @GSWE_MOMENT_ERROR_UNKNOWN_HSYS: house system provided is unknown (a
* #GsweHouseSystem value must be passed)
* @GSWE_MOMENT_ERROR_UNKNOWN_SIGN: an unknown zodiac sign is calculated
* @GSWE_MOMENT_ERROR_NONADDED_PLANET: the referenced planet is not added to
* the GsweMoment object
* @GSWE_MOMENT_ERROR_SWE_ERROR_NONFATAL: an error reported by the Swiss
* Ephemeris library. Errors marked with
* this value are not fatal, so it's
* more like a warning
* @GSWE_MOMENT_ERROR_SWE_ERROR_FATAL: a fatal error reported by the Swiss
* Ephemeris library
*
* Error codes returned by GsweMoment functions.
*/
typedef enum {
GSWE_MOMENT_ERROR_SUCCESS,
GSWE_MOMENT_ERROR_UNKNOWN_HSYS,
GSWE_MOMENT_ERROR_UNKNOWN_SIGN,
GSWE_MOMENT_ERROR_NONADDED_PLANET,
GSWE_MOMENT_ERROR_SWE_ERROR_NONFATAL,
GSWE_MOMENT_ERROR_SWE_ERROR_FATAL
} GsweMomentError;
/**
* GsweMoment:
*
@ -103,97 +123,40 @@ GType gswe_moment_get_type(void);
/* Method definitions */
GsweMoment *gswe_moment_new(void);
GsweMoment *gswe_moment_new_full(
GsweTimestamp *timestamp,
gdouble longitude,
gdouble latitude,
gdouble altitude,
GsweHouseSystem house_system);
GsweMoment *gswe_moment_new_full(GsweTimestamp *timestamp, gdouble longitude, gdouble latitude, gdouble altitude, GsweHouseSystem house_system);
void gswe_moment_set_timestamp(GsweMoment *moment, GsweTimestamp *timestamp);
GsweTimestamp *gswe_moment_get_timestamp(GsweMoment *moment);
void gswe_moment_set_coordinates(
GsweMoment *moment,
gdouble longitude,
gdouble latitude,
gdouble altitude);
void gswe_moment_set_coordinates(GsweMoment *moment, gdouble longitude, gdouble latitude, gdouble altitude);
GsweCoordinates *gswe_moment_get_coordinates(GsweMoment *moment);
void gswe_moment_set_house_system(
GsweMoment *moment,
GsweHouseSystem house_system);
void gswe_moment_set_house_system(GsweMoment *moment, GsweHouseSystem house_system);
GsweHouseSystem gswe_moment_get_house_system(GsweMoment *moment);
GList *gswe_moment_get_house_cusps(GsweMoment *moment, GError **err);
gint gswe_moment_get_house(GsweMoment *moment, gdouble position, GError **err);
gboolean gswe_moment_has_planet(GsweMoment *moment, GswePlanet planet);
void gswe_moment_add_planet(
GsweMoment *moment,
GswePlanet planet,
GError **err);
void gswe_moment_add_planet(GsweMoment *moment, GswePlanet planet);
void gswe_moment_add_all_planets(GsweMoment *moment);
GList *gswe_moment_get_all_planets(GsweMoment *moment);
GswePlanetData *gswe_moment_get_planet(
GsweMoment *moment,
GswePlanet planet,
GError **err);
const GswePlanetData *gswe_moment_get_planet(GsweMoment *moment, GswePlanet planet, GError **err);
GList *gswe_moment_get_sign_planets(GsweMoment *moment, GsweZodiac sign);
GList *gswe_moment_get_house_planets(GsweMoment *moment, guint house);
guint gswe_moment_get_element_points(GsweMoment *moment, GsweElement element);
guint gswe_moment_get_quality_points(GsweMoment *moment, GsweQuality quality);
GsweMoonPhaseData *gswe_moment_get_moon_phase(GsweMoment *moment, GError **err);
const GsweMoonPhaseData *gswe_moment_get_moon_phase(GsweMoment *moment, GError **err);
GList *gswe_moment_get_all_aspects(GsweMoment *moment);
GList *gswe_moment_get_planet_aspects(
GsweMoment *moment,
GswePlanet planet,
GError **err);
GsweAspectData *gswe_moment_get_aspect_by_planets(
GsweMoment *moment,
GswePlanet planet1,
GswePlanet planet2,
GError **err);
GList *gswe_moment_get_planet_aspects(GsweMoment *moment, GswePlanet planet, GError **err);
GList *gswe_moment_get_all_antiscia(GsweMoment *moment);
GList *gswe_moment_get_all_planet_antiscia(
GsweMoment *moment,
GswePlanet planet,
GError **err);
GList *gswe_moment_get_axis_all_antiscia(
GsweMoment *moment,
GsweAntiscionAxis axis);
GList *gswe_moment_get_axis_planet_antiscia(
GsweMoment *moment,
GsweAntiscionAxis axis,
GswePlanet planet,
GError **err);
GsweAntiscionData *gswe_moment_get_antiscion_by_planets(
GsweMoment *moment,
GswePlanet planet1,
GswePlanet planet2,
GError **err);
GList *gswe_moment_get_all_planet_antiscia(GsweMoment *moment, GswePlanet planet, GError **err);
GList *gswe_moment_get_axis_all_antiscia(GsweMoment *moment, GsweAntiscionAxis axis);
GList *gswe_moment_get_axis_planet_antiscia(GsweMoment *moment, GsweAntiscionAxis axis, GswePlanet planet, GError **err);
#endif /* __GSWE_MOMENT_H__ */

View File

@ -1,40 +0,0 @@
/* gswe-moon-phase-data-private.h: Private parts of GsweMoonPhaseData
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef __SWE_GLIB_BUILDING__
#ifndef __SWE_GLIB_GSWE_MOON_PHASE_DATA_PRIVATE_H__
#define __SWE_GLIB_GSWE_MOON_PHASE_DATA_PRIVATE_H__
#include "gswe-moon-phase-data.h"
#include "gswe-types.h"
struct _GsweMoonPhaseData {
/* the actual phase of the Moon */
GsweMoonPhase phase;
/* the illumination percentage of the Moon */
gdouble illumination;
/* reference count */
guint refcount;
};
#endif /* __SWE_GLIB_GSWE_MOON_PHASE_DATA_PRIVATE_H__ */
#else /* not defined __SWE_GLIB_BUILDING__ */
#error __FILE__ "Can not be included, unless building SWE-GLib"
#endif /* __SWE_GLIB_BUILDING__ */

View File

@ -1,206 +0,0 @@
/* gswe-moon-phase-data.c: Moon phase representation
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include <math.h>
#include "gswe-types.h"
#include "swe-glib-private.h"
#include "gswe-moon-phase-data.h"
#include "gswe-moon-phase-data-private.h"
#include "gswe-timestamp.h"
#define SYNODIC 29.53058867
/**
* SECTION:gswe-moon-phase-data
* @short_description: a structure representing the phase of the Moon
* @title: GsweMoonPhaseData
* @stability: Stable
* @include: swe-glib.h
* @see_also: #GsweMoonPhase
*
* #GsweMoonPhaseData is a structure that represents the actual phase of the
* Moon, including its illumination percentage.
*/
G_DEFINE_BOXED_TYPE(
GsweMoonPhaseData,
gswe_moon_phase_data,
(GBoxedCopyFunc)gswe_moon_phase_data_ref,
(GBoxedFreeFunc)gswe_moon_phase_data_unref);
/**
* gswe_moon_phase_data_new:
*
* Creates a new #GsweMoonPhaseData object with reference count set to 1.
*
* Returns: (transfer full): a new #GsweMoonPhaseData object
*/
GsweMoonPhaseData *
gswe_moon_phase_data_new(void)
{
GsweMoonPhaseData *ret;
ret = g_new0(GsweMoonPhaseData, 1);
ret->refcount = 1;
return ret;
}
/**
* gswe_moon_phase_data_ref:
* @moon_phase_data: (in): a #GsweMoonPhaseData
*
* Increases reference count on @moon_phase_data by one.
*
* Returns: (transfer none): the same #GsweMoonPhaseData
*/
GsweMoonPhaseData *
gswe_moon_phase_data_ref(GsweMoonPhaseData *moon_phase_data)
{
moon_phase_data->refcount++;
return moon_phase_data;
}
/**
* gswe_moon_phase_data_unref:
* @moon_phase_data: (in): a #GsweMoonPhaseData
*
* Decreases reference count on @moon_phase_data by one. If reference count
* drops to zero, @moon_phase_data is freed.
*/
void
gswe_moon_phase_data_unref(GsweMoonPhaseData *moon_phase_data)
{
if (moon_phase_data == NULL) {
return;
}
if (--moon_phase_data->refcount == 0) {
g_free(moon_phase_data);
}
}
/**
* gswe_moon_phase_data_calculate_by_jd:
* @moon_phase_data: a #GsweMoonPhaseData
* @jd: a Julian Day number, with hours as fractions
* @err: a #GError
*
* Calculates the moon at a given time, specified by @jd.
*/
void
gswe_moon_phase_data_calculate_by_jd(
GsweMoonPhaseData *moon_phase_data,
gdouble jd,
GError **err)
{
gdouble jdb,
phase_percent;
jdb = gswe_timestamp_get_julian_day_et(gswe_full_moon_base_date, err);
if ((err) && (*err)) {
return;
}
if ((phase_percent = fmod(((jd - jdb) * 100) / SYNODIC, 100)) < 0) {
phase_percent += 100.0;
}
if ((phase_percent < 0) || (phase_percent > 100)) {
g_error("Error during Moon phase calculation!");
}
moon_phase_data->illumination = (50.0 - fabs(phase_percent - 50.0)) * 2;
if (phase_percent == 0) {
moon_phase_data->phase = GSWE_MOON_PHASE_NEW;
} else if (phase_percent < 25) {
moon_phase_data->phase = GSWE_MOON_PHASE_WAXING_CRESCENT;
} else if (phase_percent == 25) {
moon_phase_data->phase = GSWE_MOON_PHASE_WAXING_HALF;
} else if (phase_percent < 50) {
moon_phase_data->phase = GSWE_MOON_PHASE_WAXING_GIBBOUS;
} else if (phase_percent == 50) {
moon_phase_data->phase = GSWE_MOON_PHASE_FULL;
} else if (phase_percent < 75) {
moon_phase_data->phase = GSWE_MOON_PHASE_WANING_GIBBOUS;
} else if (phase_percent == 75) {
moon_phase_data->phase = GSWE_MOON_PHASE_WANING_HALF;
} else if (phase_percent < 100) {
moon_phase_data->phase = GSWE_MOON_PHASE_WANING_CRESCENT;
} else {
moon_phase_data->phase = GSWE_MOON_PHASE_DARK;
}
}
/**
* gswe_moon_phase_data_calculate_by_timestamp:
* @moon_phase_data: a #GsweMoonPhaseData
* @timestamp: a #GsweTimestamp with a valid timestamp set
* @err: a #GError
*
* Calculates the moon at a given time, specified by @timestamp.
*/
void
gswe_moon_phase_data_calculate_by_timestamp(
GsweMoonPhaseData *moon_phase_data,
GsweTimestamp *timestamp,
GError **err)
{
gdouble jd;
jd = gswe_timestamp_get_julian_day_et(timestamp, err);
if (err && *err) {
return;
}
gswe_moon_phase_data_calculate_by_jd(moon_phase_data, jd, err);
}
/**
* gswe_moon_phase_data_get_phase:
* @moon_phase_data: (in): a GsweMoonPhaseData
*
* Gets the phase of the Moon in the given GsweMoonPhaseData.
*
* Returns: the Moon phase
*/
GsweMoonPhase
gswe_moon_phase_data_get_phase(GsweMoonPhaseData *moon_phase_data)
{
return moon_phase_data->phase;
}
/**
* gswe_moon_phase_data_get_illumination:
* @moon_phase_data: (in): a GsweMoonPhaseData
*
* Gets the illumination percentage from the given GsweMoonPhaseData.
*
* Returns: the illumination percentage
*/
gdouble
gswe_moon_phase_data_get_illumination(GsweMoonPhaseData *moon_phase_data)
{
return moon_phase_data->illumination;
}

View File

@ -1,66 +0,0 @@
/* gswe-moon-phase-data.h: Moon phase representation
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __SWE_GLIB_GSWE_MOON_PHASE_DATA_H__
#define __SWE_GLIB_GSWE_MOON_PHASE_DATA_H__
#include <glib-object.h>
#include "gswe-types.h"
#include "gswe-timestamp.h"
G_BEGIN_DECLS
/**
* GsweMoonPhaseData:
*
* <structname>GsweMoonPhaseData</structname> is an opaque structure whose
* members cannot be accessed directly.
*
* Since: 1.1
*/
typedef struct _GsweMoonPhaseData GsweMoonPhaseData;
GsweMoonPhaseData *gswe_moon_phase_data_new(void);
GsweMoonPhaseData *gswe_moon_phase_data_ref(GsweMoonPhaseData *moon_phase_data);
void gswe_moon_phase_data_unref(GsweMoonPhaseData *moon_phase_data);
void gswe_moon_phase_data_calculate_by_jd(
GsweMoonPhaseData *moon_phase_data,
gdouble jd,
GError **err);
void gswe_moon_phase_data_calculate_by_timestamp(
GsweMoonPhaseData *moon_phase_data,
GsweTimestamp *timestamp,
GError **err);
GsweMoonPhase gswe_moon_phase_data_get_phase(
GsweMoonPhaseData *moon_phase_data);
gdouble gswe_moon_phase_data_get_illumination(
GsweMoonPhaseData *moon_phase_data);
GType gswe_moon_phase_data_get_type(void);
#define GSWE_TYPE_MOON_PHASE_DATA (gswe_moon_phase_data_get_type())
G_END_DECLS
#endif /* __SWE_GLIB_GSWE_MOON_PHASE_DATA_H__ */

View File

@ -1,53 +0,0 @@
/* gswe-planet-data-private.h: Private parts of GswePlanetData
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef __SWE_GLIB_BUILDING__
#ifndef __SWE_GLIB_GSWE_PLANET_DATA_PRIVATE_H__
#define __SWE_GLIB_GSWE_PLANET_DATA_PRIVATE_H__
#include "gswe-planet-data.h"
#include "gswe-planet-info.h"
struct _GswePlanetData {
/* A GswePlanetInfo structure, holding every information about the planet */
GswePlanetInfo *planet_info;
/* The longitude position of the planet */
gdouble position;
/* TRUE if the planet is in retrograde motion */
gboolean retrograde;
/* Number of the house in which the planet is in */
gint house;
/* A GsweSignInfo structure, holding every information about the sign the
* planet is in */
GsweSignInfo *sign_info;
/* An internal version number of the calculation */
guint revision;
/* reference count */
guint refcount;
};
#endif /* __SWE_GLIB_GSWE_PLANET_DATA_PRIVATE_H__ */
#else /* not defined __SWE_GLIB_BUILDING__ */
#error __FILE__ "Can not be included, unless building SWE-GLib"
#endif /* __SWE_GLIB_BUILDING__ */

View File

@ -1,306 +0,0 @@
/* gswe-planet-data.c: Planetary positions
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#include "gswe-types.h"
#include "swe-glib-private.h"
#include "swe-glib.h"
#include "gswe-planet-data.h"
#include "gswe-planet-data-private.h"
/**
* SECTION:gswe-planet-data
* @short_description: a structure representing a planet's position-related data
* @title: GswePlanetData
* @stability: Stable
* @include: swe-glib.h
* @see_also: #GswePlanetInfo
*
* #GswePlanetData is a structure that represents a planet's position-related
* data, like its actual position on the sky or the house and sign the planet
* is in.
*/
G_DEFINE_BOXED_TYPE(
GswePlanetData,
gswe_planet_data,
(GBoxedCopyFunc)gswe_planet_data_ref,
(GBoxedFreeFunc)gswe_planet_data_unref);
static void
gswe_planet_data_free(GswePlanetData *planet_data)
{
if (planet_data->planet_info) {
gswe_planet_info_unref(planet_data->planet_info);
}
if (planet_data->sign_info) {
gswe_sign_info_unref(planet_data->sign_info);
}
g_free(planet_data);
}
/**
* gswe_planet_data_new:
*
* Creates a new #GswePlanetData object with reference count set to 1.
*
* Returns: (transfer full): a new #GswePlanetData
*/
GswePlanetData *
gswe_planet_data_new(void)
{
GswePlanetData *ret;
ret = g_new0(GswePlanetData, 1);
ret->refcount = 1;
return ret;
}
/**
* gswe_planet_data_ref:
* @planet_data: a #GswePlanetData
*
* Increases reference count on @planet_data by one.
*
* Returns: (transfer none): the same #GswePlanetData
*/
GswePlanetData *
gswe_planet_data_ref(GswePlanetData *planet_data)
{
planet_data->refcount++;
return planet_data;
}
/**
* gswe_planet_data_unref:
* @planet_data: a #GswePlanetData
*
* Decreases reference count on @planet_data by one. If reference count drops
* to zero, @planet_data is freed.
*/
void
gswe_planet_data_unref(GswePlanetData *planet_data)
{
if (planet_data == NULL) {
return;
}
if (--planet_data->refcount == 0) {
gswe_planet_data_free(planet_data);
}
}
/**
* gswe_planet_data_set_planet:
* @planet_data: (in): a #GswePlanetData
* @planet: the planet to add
* @err: a #GError
*
* Sets @planet as the planet ID of @planet_data. @planet must be registered
* via gswe_init(); otherwise, @err is populated with
* GSWE_ERROR_UNKNOWN_PLANET, and the planet ID is not set.
*/
void
gswe_planet_data_set_planet(
GswePlanetData *planet_data,
GswePlanet planet,
GError **err)
{
GswePlanetInfo *planet_info;
if ((planet_info = g_hash_table_lookup(
gswe_planet_info_table,
GINT_TO_POINTER(planet)
)) == NULL) {
g_set_error(err,
GSWE_ERROR, GSWE_ERROR_UNKNOWN_PLANET,
"Planet is unknown"
);
return;
}
if (planet_data->planet_info) {
gswe_planet_info_unref(planet_data->planet_info);
}
planet_data->planet_info = gswe_planet_info_ref(planet_info);
}
/**
* gswe_planet_data_get_planet:
* @planet_data: (in): a #GswePlanetData
*
* Gets the planet ID for this #GswePlanetData.
*
* Returns: the planet ID
*/
GswePlanet
gswe_planet_data_get_planet(GswePlanetData *planet_data)
{
if (planet_data == NULL) {
return GSWE_PLANET_NONE;
}
if (planet_data->planet_info) {
return planet_data->planet_info->planet;
} else {
return GSWE_PLANET_NONE;
}
}
/**
* gswe_planet_data_set_planet_info:
* @planet_data: a #GswePlanetData
* @planet_info: a #GswePlanetInfo
*
* Sets @planet_info as the planet information for @planet_data.
*/
void
gswe_planet_data_set_planet_info(
GswePlanetData *planet_data,
GswePlanetInfo *planet_info)
{
if (planet_data == NULL) {
return;
}
if (planet_data->planet_info) {
gswe_planet_info_unref(planet_data->planet_info);
}
planet_data->planet_info = gswe_planet_info_ref(planet_info);
}
/**
* gswe_planet_data_get_planet_info:
* @planet_data: (in): a #GswePlanetData
*
* Gets the planet info related to this #GswePlanetData.
*
* Returns: (transfer none): the #GswePlanetInfo associated with this planet
*/
GswePlanetInfo *
gswe_planet_data_get_planet_info(GswePlanetData *planet_data)
{
if (planet_data == NULL) {
return NULL;
}
return planet_data->planet_info;
}
/**
* gswe_planet_data_get_position:
* @planet_data: (in): a #GswePlanetData
*
* Gets the position of the planet on the sky.
*
* Returns: the position, in degrees
*/
gdouble
gswe_planet_data_get_position(GswePlanetData *planet_data)
{
if (planet_data == NULL) {
return 0.0;
}
return planet_data->position;
}
/**
* gswe_planet_data_get_retrograde:
* @planet_data: (in): a #GswePlanetData
*
* Returns the planet's retrograde status, e.g. if it looks like it moves
* backwards on the sky.
*
* Returns: TRUE, if the planet is in retrograde motion; FALSE otherwise
*/
gboolean
gswe_planet_data_get_retrograde(GswePlanetData *planet_data)
{
if (planet_data == NULL) {
return FALSE;
}
return planet_data->retrograde;
}
/**
* gswe_planet_data_get_house:
* @planet_data: (in): a #GswePlanetData
*
* Gets the house number which the planet is in.
*
* Returns: a house number
*/
guint
gswe_planet_data_get_house(GswePlanetData *planet_data)
{
if (planet_data == NULL) {
return 0;
}
return planet_data->house;
}
/**
* gswe_planet_data_get_sign:
* @planet_data: a #GswePlanetData
*
* Gets the zodiac sign in which the planet is currently in. If the planet's
* data is not calculated yet, this function yields GSWE_PLANET_NONE.
*
* Returns: a #GsweZodiac, which @planet_data is currently in
*/
GsweZodiac
gswe_planet_data_get_sign(GswePlanetData *planet_data)
{
if (planet_data == NULL) {
return GSWE_SIGN_NONE;
}
if (planet_data->sign_info) {
return planet_data->sign_info->sign;
} else {
return GSWE_SIGN_NONE;
}
}
/**
* gswe_planet_data_get_sign_info:
* @planet_data: (in): a #GswePlanetData
*
* Gets the sign which the planet is in.
*
* Returns: (transfer none): a #GsweSignInfo
*/
GsweSignInfo *
gswe_planet_data_get_sign_info(GswePlanetData *planet_data)
{
if (planet_data == NULL) {
return NULL;
}
return planet_data->sign_info;
}

View File

@ -1,74 +0,0 @@
/* gswe-planet-data.h: Planetary positions
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef __SWE_GLIB_GSWE_PLANET_DATA_H__
#define __SWE_GLIB_GSWE_PLANET_DATA_H__
#include <glib-object.h>
#include "gswe-types.h"
#include "gswe-planet-info.h"
#include "gswe-sign-info.h"
G_BEGIN_DECLS
/**
* GswePlanetData:
*
* <structname>GswePlanetData</structname> is an opaque structure whose members
* cannot be accessed directly.
*
* Since: 1.1
*/
typedef struct _GswePlanetData GswePlanetData;
GType gswe_planet_data_get_type(void);
#define GSWE_TYPE_PLANET_DATA (gswe_planet_data_get_type())
GswePlanetData *gswe_planet_data_new(void);
GswePlanetData *gswe_planet_data_ref(GswePlanetData *planet_data);
void gswe_planet_data_unref(GswePlanetData *planet_data);
void gswe_planet_data_set_planet(
GswePlanetData *planet_data,
GswePlanet planet,
GError **err);
GswePlanet gswe_planet_data_get_planet(GswePlanetData *planet_data);
void gswe_planet_data_set_planet_info(
GswePlanetData *planet_data,
GswePlanetInfo *planet_info);
GswePlanetInfo *gswe_planet_data_get_planet_info(GswePlanetData *planet_data);
gdouble gswe_planet_data_get_position(GswePlanetData *planet_data);
gboolean gswe_planet_data_get_retrograde(GswePlanetData *planet_data);
guint gswe_planet_data_get_house(GswePlanetData *planet_data);
GsweZodiac gswe_planet_data_get_sign(GswePlanetData *planet_data);
GsweSignInfo *gswe_planet_data_get_sign_info(GswePlanetData *planet_data);
G_END_DECLS
#endif /* __SWE_GLIB_GSWE_PLANET_DATA_H__ */

View File

@ -1,55 +0,0 @@
/* gswe-planet-info-private.h: Private parts of GswePlanetInfo
*
* Copyright © 2013 Gergely Polonkai
*
* SWE-GLib 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.
*
* SWE-GLib 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 this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifdef __SWE_GLIB_BUILDING__
#ifndef __SWE_GLIB_GSWE_PLANET_INFO_PRIVATE_H__
#define __SWE_GLIB_GSWE_PLANET_INFO_PRIVATE_H__
#include "gswe-types.h"
#include "gswe-planet-info.h"
struct _GswePlanetInfo {
/* the planet ID */
GswePlanet planet;
/* the planet ID according to the Swiss Ephemeris libarary (or -1, if the
* planet has no such ID) */
gint32 sweph_id;
/* TRUE if the planet is a "real" celestial body on the sky. Please note
* that this will be true for Dark Moon (Lilith). Everything that has a
* planet ID in Swiss Ephemeris is treated as a real celestial body. */
gboolean real_body;
/* the planet's “personal” orb */
gdouble orb;
/* the planet's name */
gchar *name;
/* the value this planet counts in the element/quality points table */
gint points;
/* reference counter */
guint refcount;
};
#endif /* __SWE_GLIB_GSWE_PLANET_INFO_PRIVATE_H__ */
#else /* not defined __SWE_GLIB_BUILDING__ */
#error __FILE__ "Can not be included, unless building SWE-GLib"
#endif /* __SWE_GLIB_BUILDING__ */

Some files were not shown because too many files have changed in this diff Show More