Compare commits
No commits in common. "main" and "gh-pages" have entirely different histories.
120
.gitignore
vendored
120
.gitignore
vendored
@ -1,118 +1,2 @@
|
||||
# General ignore rules
|
||||
.deps/
|
||||
.libs/
|
||||
*~
|
||||
*.bak
|
||||
.*.sw?
|
||||
*.o
|
||||
*.lo
|
||||
*.la
|
||||
/tags
|
||||
/*.orig
|
||||
/*.rej
|
||||
/*.tab.c
|
||||
/.dirstamp
|
||||
*.gir
|
||||
*.typelib
|
||||
*.gschema.valid
|
||||
ChangeLog
|
||||
|
||||
# Files created by the build tools
|
||||
Makefile
|
||||
Makefile.in
|
||||
/GPATH
|
||||
/GRTAGS
|
||||
/GSYMS
|
||||
/GTAGS
|
||||
/ID
|
||||
/TAGS
|
||||
/_libs
|
||||
/config.cache
|
||||
/config.h
|
||||
/config.h.in
|
||||
/aclocal.m4
|
||||
/ar-lib
|
||||
/ltmain.sh
|
||||
/autom4te.cache/
|
||||
/m4/
|
||||
/missing
|
||||
/stamp-h1
|
||||
/config.guess
|
||||
/config.log
|
||||
/config.rpath
|
||||
/config.lt
|
||||
/config.status
|
||||
/config.sub
|
||||
/config.status.lineno
|
||||
/configure
|
||||
/depcomp
|
||||
/install-sh
|
||||
/configure.lineno
|
||||
/libtool
|
||||
/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
|
||||
/po/Makevars.template
|
||||
/po/Makefile.in.in
|
||||
/po/stamp-it
|
||||
/po/*.gmo
|
||||
/po/*.mo
|
||||
/po/*.pot
|
||||
/po/Rules-quot
|
||||
/po/boldquot.sed
|
||||
/po/en@boldquot.header
|
||||
/po/en@quot.header
|
||||
/po/insert-header.sin
|
||||
/po/quot.sed
|
||||
/po/remove-potcdate.sin
|
||||
/po/.intltool-merge-cache
|
||||
/intltool-extract
|
||||
/intltool-extract.in
|
||||
/intltool-merge
|
||||
/intltool-merge.in
|
||||
/intltool-update
|
||||
/intltool-update.in
|
||||
|
||||
# SWE-GLib related files
|
||||
/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
|
||||
/docs/reference/*/*.prerequisites
|
||||
/docs/reference/*/*.signals
|
||||
/docs/reference/*/*.stamp
|
||||
/docs/reference/*/*.types
|
||||
/docs/reference/*/*-decl-list.txt
|
||||
/docs/reference/*/*-decl.txt
|
||||
/docs/reference/*/*-overrides.txt
|
||||
/docs/reference/*/*-undeclared.txt
|
||||
/docs/reference/*/version.xml
|
||||
/docs/reference/*/*-undocumented.txt
|
||||
/docs/reference/*/*-unused.txt
|
||||
/docs/reference/*/xml/
|
||||
/docs/reference/*/html/
|
||||
/gtk-doc.make
|
||||
Gemfile.lock
|
||||
/_site/
|
17
.travis.yml
17
.travis.yml
@ -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
|
39
Makefile.am
39
Makefile.am
@ -1,39 +0,0 @@
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
DISTCLEANFILES += intltool-extract intltool-merge intltool-update
|
||||
|
||||
MAINTAINERCLEANFILES += ChangeLog
|
||||
|
||||
distclean-local:
|
||||
if test "$(srcdir)" = "."; then :; else \
|
||||
rm -f ChangeLog; \
|
||||
fi
|
||||
|
||||
ChangeLog:
|
||||
$(AM_V_GEN) if test -d "$(srcdir)/.git"; then \
|
||||
(GIT_DIR=$(top_srcdir)/.git ./missing --run git log -M -C --name-status --date=short --no-color) | fmt --split-only > $@.tmp \
|
||||
&& mv -f $@.tmp $@ \
|
||||
|| ($(RM) $@.tmp; \
|
||||
echo Failed to generate ChangeLog, your ChangeLog may be outdated >&2; \
|
||||
(test -f $@ || echo git log is required to generate this file >> $@)); \
|
||||
else \
|
||||
test -f $@ || \
|
||||
(echo A git checkout and git log is required to generate ChangeLog >&2 && \
|
||||
echo A git checkout and git log is required to generate this file >> $@); \
|
||||
fi
|
||||
|
||||
.PHONY: ChangeLog
|
||||
|
155
README.md
155
README.md
@ -1,155 +0,0 @@
|
||||
# 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/).
|
||||
|
||||
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.
|
||||
|
||||
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!
|
||||
|
||||
## 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.
|
||||
|
||||
### Creating the required objects
|
||||
|
||||
Then you need to create a `GsweTimestamp` object:
|
||||
|
||||
```c
|
||||
GsweTimestamp *timestamp = gswe_timestamp_new_from_gregorian_full(1983, 3, 7, 11, 54, 45, 0, 1.0);
|
||||
```
|
||||
|
||||
The `GsweTimetamp` object is used to convert dates between the Gregorian calendar dates and Julian Day values (not to be confused with Julian calendar dates).
|
||||
|
||||
Next, you have to create a `GsweMoment` object:
|
||||
|
||||
```c
|
||||
GsweMoment *moment = gswe_moment_new_full(timestamp, 19.081599, 47.462485, 300.0, GSWE_HOUSE_PLACIDUS);
|
||||
```
|
||||
|
||||
The `GsweMoment` object holds information of a given moment at a given place on earth. `gswe_moment_new_full()` requires a `GsweTimestamp` object, some geographical coordinates (in degrees) together with altitude above sea level (in meters), and a house system to use.
|
||||
|
||||
### Adding planets
|
||||
|
||||
After that you have to add some planets you want to do calculations on.
|
||||
|
||||
```c
|
||||
gswe_moment_add_planet(moment, GSWE_PLANET_SUN);
|
||||
```
|
||||
|
||||
Alternatively, you can add every planets known by SWE-GLib with
|
||||
|
||||
```c
|
||||
gswe_moment_add_all_planets(moment);
|
||||
```
|
||||
|
||||
### Getting planet positions and such
|
||||
|
||||
Then, you can get the planet data with
|
||||
|
||||
```c
|
||||
GswePlanetData *sun_data = gswe_moment_get_planet(moment, GSWE_PLANET_SUN);
|
||||
```
|
||||
|
||||
### Getting aspects and antiscia
|
||||
|
||||
SWE-GLib is also able to calculate aspects and antiscia. This functionality does not exist in the Swiss Ephemeris library, though. For this, of course, you have to add multiple planets (at least two) to your `GsweMoment`. After that, you can call `gswe_moment_get_planet_aspects()` and `gswe_moment_get_planet_antiscia()`.
|
||||
|
||||
```c
|
||||
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.
|
||||
|
||||
### 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()`:
|
||||
|
||||
```c
|
||||
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 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).
|
||||
|
||||
## 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).
|
||||
|
||||
## 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
|
||||
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:
|
||||
|
||||
* `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.
|
||||
|
||||
## 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).
|
63
autogen.sh
63
autogen.sh
@ -1,63 +0,0 @@
|
||||
#!/bin/sh
|
||||
# Run this to generate all the initial makefiles, etc.
|
||||
|
||||
srcdir=`dirname $0`
|
||||
test -z "$srcdir" && srcdir=.
|
||||
|
||||
PKG_NAME="swe-glib"
|
||||
|
||||
(test -f $srcdir/configure.ac \
|
||||
&& test -f $srcdir/src/swe-glib.c) || {
|
||||
echo -n "**Error**: Directory "\`$srcdir\'" does not look like the"
|
||||
echo " top-level $PKG_NAME directory"
|
||||
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
|
||||
|
||||
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" "$@"
|
||||
|
182
configure.ac
182
configure.ac
@ -1,182 +0,0 @@
|
||||
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_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])
|
||||
|
||||
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])
|
||||
AC_SUBST([SWE_GLIB_MINOR_VERSION], [swe_glib_minor_version])
|
||||
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
|
||||
AM_PROG_AR
|
||||
AC_PROG_LIBTOOL
|
||||
IT_PROG_INTLTOOL([0.35.0])
|
||||
GETTEXT_PACKAGE=swe-glib
|
||||
AC_SUBST(GETTEXT_PACKAGE)
|
||||
AC_DEFINE_UNQUOTED(GETTEXT_PACKAGE, "$GETTEXT_PACKAGE", [GETTEXT package name])
|
||||
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
|
||||
AC_CONFIG_MACRO_DIR([m4])
|
||||
|
||||
LIBSWE_GLIB_LIBS='$(top_builddir)/src/libswe-glib-$(SWE_GLIB_API_VERSION).la'
|
||||
AC_SUBST(LIBSWE_GLIB_LIBS)
|
||||
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
src/Makefile
|
||||
data/Makefile
|
||||
po/Makefile.in
|
||||
tests/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
|
@ -1,16 +0,0 @@
|
||||
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@
|
||||
|
||||
EXTRA_DIST = \
|
||||
swe-glib.spec \
|
||||
gschema.template
|
||||
|
||||
DISTCLEANFILES = $(gsettings_SCHEMAS)
|
@ -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 ***/
|
@ -1,11 +0,0 @@
|
||||
prefix=@prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
libdir=@libdir@
|
||||
includedir=@includedir@
|
||||
|
||||
Name: SWE-GLib
|
||||
Description: GLib wrapper functions for the Swiss Ephemeris library
|
||||
Version: @VERSION@
|
||||
Requires: glib-2.0
|
||||
Libs: -L${libdir} -lswe-glib-@SWE_GLIB_API_VERSION@
|
||||
Cflags: -I${includedir}/swe-glib
|
@ -1,93 +0,0 @@
|
||||
Name: swe-glib
|
||||
Version: @SWE_GLIB_VERSION@
|
||||
Release: 1%{?dist}
|
||||
Summary: A GLib style wrapper library around the Swiss Ephemeris library, created by Astrodienst.
|
||||
|
||||
Group: Development/Libraries
|
||||
License: LGPLv3+
|
||||
URL: http://gergely.polonkai.eu/swe-glib/
|
||||
Source: http://gergely.polonkai.eu/download/%{name}-%{version}.tar.gz
|
||||
|
||||
BuildRequires: pkgconfig
|
||||
BuildRequires: glib2-devel
|
||||
BuildRequires: gettext
|
||||
BuildRequires: automake autoconf libtool
|
||||
BuildRequires: gtk-doc
|
||||
Requires: glib2
|
||||
Requires: %{name}-data = %{version}-%{release}
|
||||
|
||||
%description
|
||||
|
||||
SWE-GLib is a GLib style wrapper library around the Swiss Ephemeris library,
|
||||
created by Astrodienst. It can be used for precise astronomical calculation
|
||||
based on time and topographic location.
|
||||
|
||||
%package data
|
||||
Summary: A GLib style wrapper library around the Swiss Ephemeris library, created by Astrodienst.
|
||||
Group: Development/Libraries
|
||||
BuildArch: noarch
|
||||
|
||||
%description data
|
||||
The swe-glib-data package includes data files for the SWE-GLib library.
|
||||
|
||||
%package devel
|
||||
Summary: A GLib style wrapper library around the Swiss Ephemeris library, created by Astrodienst.
|
||||
Group: Development/Libraries
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The swe-glib-devel package includes the header files for the SWE-GLib library.
|
||||
|
||||
%package doc
|
||||
Summary: A GLib style wrapper library around the Swiss Ephemeris library, created by Astrodienst.
|
||||
Group: Development/Libraries
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
|
||||
%description doc
|
||||
The swe-glib-doc package includes documentation for the SWE-GLib library.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
|
||||
|
||||
%build
|
||||
%configure --enable-gtk-doc
|
||||
make %{?_smp_mflags}
|
||||
|
||||
|
||||
%install
|
||||
make install DESTDIR=%{buildroot}
|
||||
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
|
||||
rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
|
||||
rm -f $RPM_BUILD_ROOT%{_datadir}/locale/hu/LC_MESSAGES/swe-glib.mo
|
||||
|
||||
%post
|
||||
/sbin/ldconfig
|
||||
|
||||
%postun
|
||||
/sbin/ldconfig
|
||||
|
||||
%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
|
||||
|
||||
%files data
|
||||
%{_datadir}/swe-glib/*.se1
|
||||
%{_datadir}/swe-glib/seleapsec.txt
|
||||
|
||||
%files doc
|
||||
%doc %{_datadir}/gtk-doc/html/*
|
||||
|
||||
%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
|
||||
|
||||
%changelog
|
||||
|
@ -1,117 +0,0 @@
|
||||
## Process this file with automake to produce Makefile.in
|
||||
|
||||
# We require automake 1.6 at least.
|
||||
AUTOMAKE_OPTIONS = 1.6
|
||||
|
||||
# This is a blank Makefile.am for using gtk-doc.
|
||||
# Copy this to your project's API docs directory and modify the variables to
|
||||
# suit your project. See the GTK+ Makefiles in gtk+/docs/reference for examples
|
||||
# of using the various options.
|
||||
|
||||
# The name of the module, e.g. 'glib'.
|
||||
DOC_MODULE=swe-glib
|
||||
|
||||
# Uncomment for versioned docs and specify the version of the module, e.g. '2'.
|
||||
DOC_MODULE_VERSION=$(SWE_GLIB_API_VERSION)
|
||||
|
||||
|
||||
# The top-level XML file (SGML in the past). You can change this if you want to.
|
||||
DOC_MAIN_SGML_FILE=$(DOC_MODULE)-docs.xml
|
||||
|
||||
# Directories containing the source code.
|
||||
# gtk-doc will search all .c and .h files beneath these paths
|
||||
# for inline comments documenting functions and macros.
|
||||
# e.g. DOC_SOURCE_DIR=$(top_srcdir)/gtk $(top_srcdir)/gdk
|
||||
DOC_SOURCE_DIR=$(top_srcdir)/src
|
||||
|
||||
# Extra options to pass to gtkdoc-scangobj. Not normally needed.
|
||||
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"
|
||||
|
||||
# Extra options to supply to gtkdoc-mkdb.
|
||||
# e.g. MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||
MKDB_OPTIONS=--xml-mode --output-format=xml
|
||||
|
||||
# Extra options to supply to gtkdoc-mktmpl
|
||||
# e.g. MKTMPL_OPTIONS=--only-section-tmpl
|
||||
MKTMPL_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-mkhtml
|
||||
MKHTML_OPTIONS=
|
||||
|
||||
# Extra options to supply to gtkdoc-fixref. Not normally needed.
|
||||
# e.g. FIXXREF_OPTIONS=--extra-dir=../gdk-pixbuf/html --extra-dir=../gdk/html
|
||||
FIXXREF_OPTIONS=
|
||||
|
||||
# Used for dependencies. The docs will be rebuilt if any of these change.
|
||||
# e.g. HFILE_GLOB=$(top_srcdir)/gtk/*.h
|
||||
# e.g. CFILE_GLOB=$(top_srcdir)/gtk/*.c
|
||||
HFILE_GLOB=$(top_srcdir)/src/*.h
|
||||
CFILE_GLOB=$(top_srcdir)/src/*.c
|
||||
|
||||
# Extra header to include when scanning, which are not under DOC_SOURCE_DIR
|
||||
# e.g. EXTRA_HFILES=$(top_srcdir}/contrib/extra.h
|
||||
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)
|
||||
|
||||
# Images to copy into HTML directory.
|
||||
# e.g. HTML_IMAGES=$(top_srcdir)/gtk/stock-icons/stock_about_24.png
|
||||
HTML_IMAGES=
|
||||
|
||||
# Extra SGML files that are included by $(DOC_MAIN_SGML_FILE).
|
||||
# e.g. content_files=running.sgml building.sgml changes-2.0.sgml
|
||||
content_files=
|
||||
|
||||
# SGML files where gtk-doc abbrevations (#GtkWidget) are expanded
|
||||
# These files must be listed here *and* in content_files
|
||||
# e.g. expand_content_files=running.sgml
|
||||
expand_content_files=
|
||||
|
||||
# CFLAGS and LDFLAGS for compiling gtkdoc-scangobj with your library.
|
||||
# Only needed if you are using gtkdoc-scangobj to dynamically query widget
|
||||
# signals and properties.
|
||||
# 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)
|
||||
|
||||
# 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
|
||||
|
||||
# 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
|
||||
|
||||
# Comment this out if you want 'make check' to test you doc status
|
||||
# and run some sanity checks
|
||||
if ENABLE_GTK_DOC
|
||||
TESTS_ENVIRONMENT = cd $(srcdir) && \
|
||||
DOC_MODULE=$(DOC_MODULE) DOC_MAIN_SGML_FILE=$(DOC_MAIN_SGML_FILE) \
|
||||
SRCDIR=$(abs_srcdir) BUILDDIR=$(abs_builddir)
|
||||
#TESTS = $(GTKDOC_CHECK)
|
||||
endif
|
||||
|
@ -1,52 +0,0 @@
|
||||
<?xml version="1.0"?>
|
||||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.3//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.3/docbookx.dtd"
|
||||
[
|
||||
<!ENTITY % local.common.attrib "xmlns:xi CDATA #FIXED 'http://www.w3.org/2003/XInclude'">
|
||||
<!ENTITY version SYSTEM "version.xml">
|
||||
<!ENTITY server "gergely.polonkai.eu">
|
||||
]>
|
||||
<book id="index">
|
||||
<bookinfo>
|
||||
<title>SWE-GLib Reference Manual</title>
|
||||
<releaseinfo>
|
||||
for SWE-GLib &version;.
|
||||
The latest version of this documentation can be found on-line at
|
||||
<ulink role="online-location" url="http://&server;/swe-glib/index.html">http://&server;/swe-glib/</ulink>.
|
||||
</releaseinfo>
|
||||
</bookinfo>
|
||||
|
||||
<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">
|
||||
<title>Object Hierarchy</title>
|
||||
<xi:include href="xml/tree_index.sgml"/>
|
||||
</chapter>
|
||||
<index id="api-index-full">
|
||||
<title>API Index</title>
|
||||
<xi:include href="xml/api-index-full.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
<index id="deprecated-api-index" role="deprecated">
|
||||
<title>Index of deprecated API</title>
|
||||
<xi:include href="xml/api-index-deprecated.xml"><xi:fallback /></xi:include>
|
||||
</index>
|
||||
|
||||
<xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
|
||||
</book>
|
@ -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>
|
@ -1 +0,0 @@
|
||||
@SWE_GLIB_API_VERSION@
|
@ -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)));
|
||||
}
|
||||
}
|
@ -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
|
@ -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());
|
||||
}
|
||||
}
|
@ -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())
|
BIN
images/code.png
Normal file
BIN
images/code.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
images/pattern.png
Normal file
BIN
images/pattern.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
BIN
images/tar.png
Normal file
BIN
images/tar.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
BIN
images/top.png
Normal file
BIN
images/top.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
BIN
images/zip.png
Normal file
BIN
images/zip.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
184
index.html
Normal file
184
index.html
Normal file
@ -0,0 +1,184 @@
|
||||
<!doctype html>
|
||||
<!-- The Time Machine GitHub pages theme was designed and developed by Jon Rohan, on Feb 7, 2012. -->
|
||||
<!-- Follow him for fun. http://twitter.com/jonrohan. Tail his code on http://github.com/jonrohan -->
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
|
||||
<link rel="stylesheet" href="stylesheets/stylesheet.css" media="screen"/>
|
||||
<link rel="stylesheet" href="stylesheets/pygment_trac.css"/>
|
||||
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="javascripts/script.js"></script>
|
||||
|
||||
<title>SWE-GLib</title>
|
||||
<meta name="description" content="A GLib style wrapper library around Swiss Ephemeris">
|
||||
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1">
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="wrapper">
|
||||
<header>
|
||||
<h1 class="title">SWE-GLib</h1>
|
||||
</header>
|
||||
<div id="container">
|
||||
<p class="tagline">A GLib style wrapper library around Swiss Ephemeris</p>
|
||||
<div id="main" role="main">
|
||||
<div class="download-bar">
|
||||
<div class="inner">
|
||||
<a href="https://github.com/gergelypolonkai/swe-glib/tarball/master" class="download-button tar"><span>Download</span></a>
|
||||
<a href="https://github.com/gergelypolonkai/swe-glib/zipball/master" class="download-button zip"><span>Download</span></a>
|
||||
<a href="https://github.com/gergelypolonkai/swe-glib" class="code">View SWE-GLib on GitHub</a>
|
||||
</div>
|
||||
<span class="blc"></span><span class="trc"></span>
|
||||
</div>
|
||||
<article class="markdown-body">
|
||||
<h1>
|
||||
<a name="swe-glib" class="anchor" href="#swe-glib"><span class="octicon octicon-link"></span></a>SWE-GLib</h1>
|
||||
|
||||
<p>SWE-GLib is a GLib style wrapper library around Astrodienst's <a href="http://www.astro.com/swisseph/">Swiss Ephemeris library</a>.</p>
|
||||
|
||||
<p>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.</p>
|
||||
|
||||
<h2>
|
||||
<a name="gtk-doc" class="anchor" href="#gtk-doc"><span class="octicon octicon-link"></span></a>GTK-Doc</h2>
|
||||
|
||||
<p>The project utilizes <a href="http://www.gtk.org/gtk-doc/">GTK-Doc</a>, 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.</p>
|
||||
|
||||
<p>Still, the documentation generates well, and at least gives a clue about object usage.</p>
|
||||
|
||||
<h2>
|
||||
<a name="bindings" class="anchor" href="#bindings"><span class="octicon octicon-link"></span></a>Bindings</h2>
|
||||
|
||||
<p>SWE-GLib utilizes <a href="https://wiki.gnome.org/GObjectIntrospection">GObject Introspection</a>, which means it is available for many languages. Check out the <a href="examples">examples</a> directory for some sample code!</p>
|
||||
|
||||
<h2>
|
||||
<a name="usage" class="anchor" href="#usage"><span class="octicon octicon-link"></span></a>Usage</h2>
|
||||
|
||||
<p>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.</p>
|
||||
|
||||
<h3>
|
||||
<a name="creating-the-required-objects" class="anchor" href="#creating-the-required-objects"><span class="octicon octicon-link"></span></a>Creating the required objects</h3>
|
||||
|
||||
<p>Then you need to create a <code>GsweTimestamp</code> object:</p>
|
||||
|
||||
<div class="highlight highlight-c"><pre><span class="n">GsweTimestamp</span> <span class="o">*</span><span class="n">timestamp</span> <span class="o">=</span> <span class="n">gswe_timestamp_new_from_gregorian_full</span><span class="p">(</span><span class="mi">1983</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">7</span><span class="p">,</span> <span class="mi">11</span><span class="p">,</span> <span class="mi">54</span><span class="p">,</span> <span class="mi">45</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
|
||||
<p>The <code>GsweTimetamp</code> object is used to convert dates between the Gregorian calendar dates and Julian Day values (not to be confused with Julian calendar dates).</p>
|
||||
|
||||
<p>Next, you have to create a <code>GsweMoment</code> object:</p>
|
||||
|
||||
<div class="highlight highlight-c"><pre><span class="n">GsweMoment</span> <span class="o">*</span><span class="n">moment</span> <span class="o">=</span> <span class="n">gswe_moment_new_full</span><span class="p">(</span><span class="n">timestamp</span><span class="p">,</span> <span class="mf">19.081599</span><span class="p">,</span> <span class="mf">47.462485</span><span class="p">,</span> <span class="mf">300.0</span><span class="p">,</span> <span class="n">GSWE_HOUSE_PLACIDUS</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
|
||||
<p>The <code>GsweMoment</code> object holds information of a given moment at a given place on earth. <code>gswe_moment_new_full()</code> requires a <code>GsweTimestamp</code> object, some geographical coordinates (in degrees) together with altitude above sea level (in meters), and a house system to use.</p>
|
||||
|
||||
<h3>
|
||||
<a name="adding-planets" class="anchor" href="#adding-planets"><span class="octicon octicon-link"></span></a>Adding planets</h3>
|
||||
|
||||
<p>After that you have to add some planets you want to do calculations on.</p>
|
||||
|
||||
<div class="highlight highlight-c"><pre><span class="n">gswe_moment_add_planet</span><span class="p">(</span><span class="n">moment</span><span class="p">,</span> <span class="n">GSWE_PLANET_SUN</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
|
||||
<p>Alternatively, you can add every planets known by SWE-GLib with</p>
|
||||
|
||||
<div class="highlight highlight-c"><pre><span class="n">gswe_moment_add_all_planets</span><span class="p">(</span><span class="n">moment</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
|
||||
<h3>
|
||||
<a name="getting-planet-positions-and-such" class="anchor" href="#getting-planet-positions-and-such"><span class="octicon octicon-link"></span></a>Getting planet positions and such</h3>
|
||||
|
||||
<p>Then, you can get the planet data with</p>
|
||||
|
||||
<div class="highlight highlight-c"><pre><span class="n">GswePlanetData</span> <span class="o">*</span><span class="n">sun_data</span> <span class="o">=</span> <span class="n">gswe_moment_get_planet</span><span class="p">(</span><span class="n">moment</span><span class="p">,</span> <span class="n">GSWE_PLANET_SUN</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
|
||||
<h3>
|
||||
<a name="getting-aspects-and-antiscia" class="anchor" href="#getting-aspects-and-antiscia"><span class="octicon octicon-link"></span></a>Getting aspects and antiscia</h3>
|
||||
|
||||
<p>SWE-GLib is also able to calculate aspects and antiscia. This functionality does not exist in the Swiss Ephemeris library, though. For this, of course, you have to add multiple planets (at least two) to your <code>GsweMoment</code>. After that, you can call <code>gswe_moment_get_planet_aspects()</code> and <code>gswe_moment_get_planet_antiscia()</code>.</p>
|
||||
|
||||
<div class="highlight highlight-c"><pre><span class="n">GList</span> <span class="o">*</span><span class="n">sun_aspects</span> <span class="o">=</span> <span class="n">gswe_moment_get_planet_aspects</span><span class="p">(</span><span class="n">moment</span><span class="p">,</span> <span class="n">GSWE_PLANET_SUN</span><span class="p">);</span>
|
||||
<span class="n">GList</span> <span class="o">*</span><span class="n">sun_antiscia</span> <span class="o">=</span> <span class="n">gswe_moment_get_planet_antiscia</span><span class="p">(</span><span class="n">moment</span><span class="p">,</span> <span class="n">GSWE_PLANET_SUN</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
|
||||
<p>The returned GList objects hold zero or more <code>GsweAspectData</code> or <code>GsweAntiscionData</code> objects, respectively.</p>
|
||||
|
||||
<h3>
|
||||
<a name="getting-the-moon-phase" class="anchor" href="#getting-the-moon-phase"><span class="octicon octicon-link"></span></a>Getting the Moon phase</h3>
|
||||
|
||||
<p>Last, but not least, SWE-GLib can calculate Moon's phase at the given moment. For that, you have to call <code>gswe_moment_get_moon_phase()</code>:</p>
|
||||
|
||||
<div class="highlight highlight-c"><pre><span class="n">GsweMoonPhaseData</span> <span class="o">*</span><span class="n">moon_phase</span> <span class="o">=</span> <span class="n">gswe_moment_get_moon_phase</span><span class="p">(</span><span class="n">moment</span><span class="p">);</span>
|
||||
</pre></div>
|
||||
|
||||
<h3>
|
||||
<a name="about-altitude" class="anchor" href="#about-altitude"><span class="octicon octicon-link"></span></a>About altitude</h3>
|
||||
|
||||
<p>The Swiss Ephemeris library requires the altitude value to be specified for several calculations. It also notifies how important it is:</p>
|
||||
|
||||
<blockquote>
|
||||
<p>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.</p>
|
||||
</blockquote>
|
||||
|
||||
<p>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).</p>
|
||||
|
||||
<h2>
|
||||
<a name="api-stability" class="anchor" href="#api-stability"><span class="octicon octicon-link"></span></a>API stability</h2>
|
||||
|
||||
<p>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).</p>
|
||||
|
||||
<h2>
|
||||
<a name="limitations" class="anchor" href="#limitations"><span class="octicon octicon-link"></span></a>Limitations</h2>
|
||||
|
||||
<h3>
|
||||
<a name="topocentric-calculations-only" class="anchor" href="#topocentric-calculations-only"><span class="octicon octicon-link"></span></a>Topocentric calculations only</h3>
|
||||
|
||||
<p>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.</p>
|
||||
|
||||
<h3>
|
||||
<a name="database-size" class="anchor" href="#database-size"><span class="octicon octicon-link"></span></a>Database size</h3>
|
||||
|
||||
<p>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:</p>
|
||||
|
||||
<ul>
|
||||
<li>seas_18.se1</li>
|
||||
<li>semo_18.se1</li>
|
||||
<li>sepl_18.se1</li>
|
||||
</ul><h3>
|
||||
<a name="fixed-stars-are-not-known-yet" class="anchor" href="#fixed-stars-are-not-known-yet"><span class="octicon octicon-link"></span></a>Fixed stars are not known yet</h3>
|
||||
|
||||
<p>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.</p>
|
||||
|
||||
<h2>
|
||||
<a name="licencing" class="anchor" href="#licencing"><span class="octicon octicon-link"></span></a>Licencing</h2>
|
||||
|
||||
<p>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.</p>
|
||||
</article>
|
||||
</div>
|
||||
</div>
|
||||
<footer>
|
||||
<div class="owner">
|
||||
<p><a href="https://github.com/gergelypolonkai" class="avatar"><img src="https://0.gravatar.com/avatar/586cd837b40cb957deed4942ba1850d5?d=https%3A%2F%2Fidenticons.github.com%2F8cecd48a0cc0a82daf4f56a9c2140d9b.png&s=30" width="48" height="48"/></a> <a href="https://github.com/gergelypolonkai">gergelypolonkai</a> maintains <a href="https://github.com/gergelypolonkai/swe-glib">SWE-GLib</a></p>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="creds">
|
||||
<small>This page generated using <a href="https://pages.github.com/">GitHub Pages</a><br/>theme by <a href="https://twitter.com/jonrohan/">Jon Rohan</a></small>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
<div class="current-section">
|
||||
<a href="#top">Scroll to top</a>
|
||||
<a href="https://github.com/gergelypolonkai/swe-glib/tarball/master" class="tar">tar</a><a href="https://github.com/gergelypolonkai/swe-glib/zipball/master" class="zip">zip</a><a href="" class="code">source code</a>
|
||||
<p class="name"></p>
|
||||
</div>
|
||||
|
||||
|
||||
</body>
|
||||
</html>
|
52
javascripts/script.js
Normal file
52
javascripts/script.js
Normal file
@ -0,0 +1,52 @@
|
||||
(function($) {
|
||||
$(document).ready(function(){
|
||||
|
||||
// putting lines by the pre blocks
|
||||
$("pre").each(function(){
|
||||
var pre = $(this).text().split("\n");
|
||||
var lines = new Array(pre.length+1);
|
||||
for(var i = 0; i < pre.length; i++) {
|
||||
var wrap = Math.floor(pre[i].split("").length / 70)
|
||||
if (pre[i]==""&&i==pre.length-1) {
|
||||
lines.splice(i, 1);
|
||||
} else {
|
||||
lines[i] = i+1;
|
||||
for(var j = 0; j < wrap; j++) {
|
||||
lines[i] += "\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
$(this).before("<pre class='lines'>" + lines.join("\n") + "</pre>");
|
||||
});
|
||||
|
||||
var headings = [];
|
||||
|
||||
var collectHeaders = function(){
|
||||
headings.push({"top":$(this).offset().top - 15,"text":$(this).text()});
|
||||
}
|
||||
|
||||
if($(".markdown-body h1").length > 1) $(".markdown-body h1").each(collectHeaders)
|
||||
else if($(".markdown-body h2").length > 1) $(".markdown-body h2").each(collectHeaders)
|
||||
else if($(".markdown-body h3").length > 1) $(".markdown-body h3").each(collectHeaders)
|
||||
|
||||
$(window).scroll(function(){
|
||||
if(headings.length==0) return true;
|
||||
var scrolltop = $(window).scrollTop() || 0;
|
||||
if(headings[0] && scrolltop < headings[0].top) {
|
||||
$(".current-section").css({"opacity":0,"visibility":"hidden"});
|
||||
return false;
|
||||
}
|
||||
$(".current-section").css({"opacity":1,"visibility":"visible"});
|
||||
for(var i in headings) {
|
||||
if(scrolltop >= headings[i].top) {
|
||||
$(".current-section .name").text(headings[i].text);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$(".current-section a").click(function(){
|
||||
$(window).scrollTop(0);
|
||||
return false;
|
||||
})
|
||||
});
|
||||
})(jQuery)
|
1
params.json
Normal file
1
params.json
Normal file
File diff suppressed because one or more lines are too long
@ -1,2 +0,0 @@
|
||||
# Please keep this list sorted alphabetically.
|
||||
hu
|
53
po/Makevars
53
po/Makevars
@ -1,53 +0,0 @@
|
||||
# Makefile variables for PO directory in any package using GNU gettext.
|
||||
|
||||
# Usually the message domain is the same as the package name.
|
||||
DOMAIN = $(PACKAGE)
|
||||
|
||||
# These two variables depend on the location of this directory.
|
||||
subdir = po
|
||||
top_builddir = ..
|
||||
|
||||
# These options get passed to xgettext.
|
||||
XGETTEXT_OPTIONS = --keyword=_ --keyword=N_
|
||||
|
||||
# This is the copyright holder that gets inserted into the header of the
|
||||
# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding
|
||||
# package. (Note that the msgstr strings, extracted from the package's
|
||||
# sources, belong to the copyright holder of the package.) Translators are
|
||||
# expected to transfer the copyright for their translations to this person
|
||||
# or entity, or to disclaim their copyright. The empty string stands for
|
||||
# the public domain; in this case the translators are expected to disclaim
|
||||
# their copyright.
|
||||
COPYRIGHT_HOLDER = Gergely POLONKAI
|
||||
|
||||
# This is the email address or URL to which the translators shall report
|
||||
# bugs in the untranslated strings:
|
||||
# - Strings which are not entire sentences, see the maintainer guidelines
|
||||
# in the GNU gettext documentation, section 'Preparing Strings'.
|
||||
# - Strings which use unclear terms or require additional context to be
|
||||
# understood.
|
||||
# - Strings which make invalid assumptions about notation of date, time or
|
||||
# money.
|
||||
# - Pluralisation problems.
|
||||
# - Incorrect English spelling.
|
||||
# - Incorrect formatting.
|
||||
# It can be your email address, or a mailing list address where translators
|
||||
# can write to without being subscribed, or the URL of a web page through
|
||||
# which the translators can contact you.
|
||||
MSGID_BUGS_ADDRESS = gergely@polonkai.eu
|
||||
|
||||
# This is the list of locale categories, beyond LC_MESSAGES, for which the
|
||||
# message catalogs shall be used. It is usually empty.
|
||||
EXTRA_LOCALE_CATEGORIES =
|
||||
|
||||
# This tells whether the $(DOMAIN).pot file contains messages with an 'msgctxt'
|
||||
# context. Possible values are "yes" and "no". Set this to yes if the
|
||||
# package uses functions taking also a message context, like pgettext(), or
|
||||
# if in $(XGETTEXT_OPTIONS) you define keywords with a context argument.
|
||||
USE_MSGCTXT = no
|
||||
|
||||
# These options get passed to msgmerge.
|
||||
# Useful options are in particular:
|
||||
# --previous to keep previous msgids of translated messages,
|
||||
# --quiet to reduce the verbosity.
|
||||
MSGMERGE_OPTIONS =
|
@ -1,3 +0,0 @@
|
||||
# List of source files containing translatable strings.
|
||||
|
||||
src/swe-glib.c
|
224
po/hu.po
224
po/hu.po
@ -1,224 +0,0 @@
|
||||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2013 Gergely Polonkai
|
||||
# This file is distributed under the same license as the SWE-GLib package.
|
||||
# Gergely Polonkai <gergely@polonkai.eu>, 2013.
|
||||
#
|
||||
#, fuzzy
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SWE-GLib 1.0\n"
|
||||
"Report-Msgid-Bugs-To: gergely@polonkai.eu\n"
|
||||
"POT-Creation-Date: 2013-09-10 00:51+0200\n"
|
||||
"PO-Revision-Date: 2013-09-10 00:55+0100\n"
|
||||
"Last-Translator: Gergely Polonkai <gergely@polonkai.eu>\n"
|
||||
"Language-Team: Hungarian <astrognome-hu@polonkai.eu>\n"
|
||||
"Language: hu\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../src/swe-glib.c:116
|
||||
msgid "Sun"
|
||||
msgstr "Nap"
|
||||
|
||||
#: ../src/swe-glib.c:117
|
||||
msgid "Moon"
|
||||
msgstr "Hold"
|
||||
|
||||
#: ../src/swe-glib.c:118
|
||||
msgid "Mercury"
|
||||
msgstr "Merkúr"
|
||||
|
||||
#: ../src/swe-glib.c:119
|
||||
msgid "Venus"
|
||||
msgstr "Vénusz"
|
||||
|
||||
#: ../src/swe-glib.c:120
|
||||
msgid "Mars"
|
||||
msgstr "Mars"
|
||||
|
||||
#: ../src/swe-glib.c:121
|
||||
msgid "Jupiter"
|
||||
msgstr "Jupiter"
|
||||
|
||||
#: ../src/swe-glib.c:122
|
||||
msgid "Saturn"
|
||||
msgstr "Szaturnusz"
|
||||
|
||||
#: ../src/swe-glib.c:123
|
||||
msgid "Uranus"
|
||||
msgstr "Uránusz"
|
||||
|
||||
#: ../src/swe-glib.c:124
|
||||
msgid "Neptune"
|
||||
msgstr "Neptunusz"
|
||||
|
||||
#: ../src/swe-glib.c:125
|
||||
msgid "Pluto"
|
||||
msgstr "Plútó"
|
||||
|
||||
#: ../src/swe-glib.c:126
|
||||
msgid "Chiron"
|
||||
msgstr "Chiron"
|
||||
|
||||
#: ../src/swe-glib.c:127
|
||||
msgid "Ceres"
|
||||
msgstr "Ceresz"
|
||||
|
||||
#: ../src/swe-glib.c:128
|
||||
msgid "Pallas"
|
||||
msgstr "Pallasz"
|
||||
|
||||
#: ../src/swe-glib.c:129
|
||||
msgid "Juno"
|
||||
msgstr "Júnó"
|
||||
|
||||
#: ../src/swe-glib.c:130
|
||||
msgid "Vesta"
|
||||
msgstr "Veszta"
|
||||
|
||||
#: ../src/swe-glib.c:131
|
||||
msgid "Ascending Moon Node"
|
||||
msgstr "Felszálló Hold-csomópont"
|
||||
|
||||
#: ../src/swe-glib.c:132
|
||||
msgid "Dark Moon"
|
||||
msgstr "Sötét Hold"
|
||||
|
||||
#: ../src/swe-glib.c:133
|
||||
msgid "Ascendant"
|
||||
msgstr "Aszcendens"
|
||||
|
||||
#: ../src/swe-glib.c:134
|
||||
msgid "Midheaven"
|
||||
msgstr "MC"
|
||||
|
||||
#: ../src/swe-glib.c:135
|
||||
msgid "Vertex"
|
||||
msgstr "Vertex"
|
||||
|
||||
#: ../src/swe-glib.c:139
|
||||
msgid "Aries"
|
||||
msgstr "Kos"
|
||||
|
||||
#: ../src/swe-glib.c:140
|
||||
msgid "Taurus"
|
||||
msgstr "Bika"
|
||||
|
||||
#: ../src/swe-glib.c:141
|
||||
msgid "Gemini"
|
||||
msgstr "Ikrek"
|
||||
|
||||
#: ../src/swe-glib.c:142
|
||||
msgid "Cancer"
|
||||
msgstr "Rák"
|
||||
|
||||
#: ../src/swe-glib.c:143
|
||||
msgid "Leo"
|
||||
msgstr "Oroszlán"
|
||||
|
||||
#: ../src/swe-glib.c:144
|
||||
msgid "Virgo"
|
||||
msgstr "Szűz"
|
||||
|
||||
#: ../src/swe-glib.c:145
|
||||
msgid "Libra"
|
||||
msgstr "Mérleg"
|
||||
|
||||
#: ../src/swe-glib.c:146
|
||||
msgid "Scorpio"
|
||||
msgstr "Skorpió"
|
||||
|
||||
#: ../src/swe-glib.c:147
|
||||
msgid "Sagittarius"
|
||||
msgstr "Nyilas"
|
||||
|
||||
#: ../src/swe-glib.c:148
|
||||
msgid "Capricorn"
|
||||
msgstr "Bak"
|
||||
|
||||
#: ../src/swe-glib.c:149
|
||||
msgid "Aquarius"
|
||||
msgstr "Vízöntő"
|
||||
|
||||
#: ../src/swe-glib.c:150
|
||||
msgid "Pisces"
|
||||
msgstr "Halak"
|
||||
|
||||
#. Note that because all aspects must be <= 180°, GSWE_ASPECT_NONE can
|
||||
#. never really exist. It is provided for name fetching purposes only.
|
||||
#: ../src/swe-glib.c:154 ../src/swe-glib.c:163 ../src/swe-glib.c:178
|
||||
msgid "None"
|
||||
msgstr "Nincs"
|
||||
|
||||
#: ../src/swe-glib.c:155
|
||||
msgid "Placidus"
|
||||
msgstr "Placidus"
|
||||
|
||||
#: ../src/swe-glib.c:156
|
||||
msgid "Koch"
|
||||
msgstr "Koch"
|
||||
|
||||
#: ../src/swe-glib.c:157
|
||||
msgid "Equal"
|
||||
msgstr "Egyenlő"
|
||||
|
||||
#: ../src/swe-glib.c:164
|
||||
msgid "Conjuction"
|
||||
msgstr "Együtállás"
|
||||
|
||||
#: ../src/swe-glib.c:165
|
||||
msgid "Opposition"
|
||||
msgstr "Szembenállás"
|
||||
|
||||
#: ../src/swe-glib.c:166
|
||||
msgid "Trine"
|
||||
msgstr "Trigon"
|
||||
|
||||
#: ../src/swe-glib.c:167
|
||||
msgid "Square"
|
||||
msgstr "Kvadrát"
|
||||
|
||||
#: ../src/swe-glib.c:168
|
||||
msgid "Sextile"
|
||||
msgstr "Szextil"
|
||||
|
||||
#: ../src/swe-glib.c:169
|
||||
msgid "Quincunx"
|
||||
msgstr "Kvinkunx"
|
||||
|
||||
#: ../src/swe-glib.c:170
|
||||
msgid "Semi-sextile"
|
||||
msgstr "Fél-szextil"
|
||||
|
||||
#: ../src/swe-glib.c:171
|
||||
msgid "Semi-square"
|
||||
msgstr "Fél-kvadrát"
|
||||
|
||||
#: ../src/swe-glib.c:172
|
||||
msgid "Sesqui-square"
|
||||
msgstr "Másfél-kvadrát"
|
||||
|
||||
#: ../src/swe-glib.c:173
|
||||
msgid "Quintile"
|
||||
msgstr "Kvintil"
|
||||
|
||||
#: ../src/swe-glib.c:174
|
||||
msgid "Bi-quintile"
|
||||
msgstr "Bi-kvintil"
|
||||
|
||||
#: ../src/swe-glib.c:179
|
||||
msgid "Aries/Libra"
|
||||
msgstr "Kos/Mérleg"
|
||||
|
||||
#: ../src/swe-glib.c:180
|
||||
msgid "mid Taurus/Scorpio"
|
||||
msgstr "Bika/Skorpió közepe"
|
||||
|
||||
#: ../src/swe-glib.c:181
|
||||
msgid "Cancer/Capricorn"
|
||||
msgstr "Rák/Bak"
|
||||
|
||||
#: ../src/swe-glib.c:182
|
||||
msgid "mid Leo/Aquarius"
|
||||
msgstr "Oroszlán/Vízöntő közepe"
|
120
src/Makefile.am
120
src/Makefile.am
@ -1,120 +0,0 @@
|
||||
## 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
|
||||
|
||||
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)
|
||||
|
||||
INST_H_BUILT_FILES = \
|
||||
gswe-enumtypes.h \
|
||||
gswe-version.h \
|
||||
$(NULL)
|
||||
|
||||
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_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 = \
|
||||
$(NULL)
|
||||
|
||||
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)
|
||||
|
||||
gswe-enumtypes.h: $(gswe_enum_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
|
||||
$(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_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
|
||||
|
||||
girdir = $(datadir)/gir-1.0
|
||||
gir_DATA = SweGlib-$(SWE_GLIB_API_VERSION).gir
|
||||
|
||||
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) \
|
||||
$(NULL)
|
||||
|
||||
CLEANFILES += $(gir_DATA) $(typelibs_DATA)
|
||||
|
||||
if HAVE_VAPIGEN
|
||||
vapidir = $(datadir)/vala/vapi
|
||||
vapi_DATA = SweGlib-$(SWE_GLIB_API_VERSION).vapi
|
||||
endif
|
||||
|
||||
endif
|
@ -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__ */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
@ -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__ */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
@ -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__ */
|
@ -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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
@ -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__ */
|
||||
|
@ -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_info’s 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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
@ -1,65 +0,0 @@
|
||||
/*** BEGIN file-header ***/
|
||||
/* gswe-enumtypes.c - Enumeration types for SWE-GLib
|
||||
*
|
||||
* 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 "gswe-enumtypes.h"
|
||||
|
||||
/*** END file-header ***/
|
||||
|
||||
/*** BEGIN file-production ***/
|
||||
#include "@filename@"
|
||||
/* enumerations from "@filename@" */
|
||||
/*** END file-production ***/
|
||||
|
||||
/*** BEGIN value-header ***/
|
||||
GType
|
||||
@enum_name@_get_type(void)
|
||||
{
|
||||
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@"
|
||||
},
|
||||
/*** END value-production ***/
|
||||
|
||||
/*** BEGIN value-tail ***/
|
||||
{ 0, NULL, NULL }
|
||||
};
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
return g_define_type_id__volatile;
|
||||
}
|
||||
|
||||
/*** END value-tail ***/
|
||||
|
@ -1,42 +0,0 @@
|
||||
/*** BEGIN file-header ***/
|
||||
/* gswe-enumtypes.h - Enumeration types for SWE-GLib
|
||||
*
|
||||
* 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 __GSWE_ENUM_TYPES_H__
|
||||
#define __GSWE_ENUM_TYPES_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
/*** END file-header ***/
|
||||
|
||||
/*** BEGIN file-production ***/
|
||||
|
||||
/* enumerations from "@filename@" */
|
||||
|
||||
#include "@filename@"
|
||||
/*** END file-production ***/
|
||||
|
||||
/*** BEGIN value-header ***/
|
||||
GType @enum_name@_get_type(void);
|
||||
#define @ENUMPREFIX@_TYPE_@ENUMSHORT@ (@enum_name@_get_type())
|
||||
/*** END value-header ***/
|
||||
|
||||
/*** BEGIN file-tail ***/
|
||||
|
||||
#endif /* __GSWE_ENUM_TYPES_H__ */
|
||||
/*** END file-tail ***/
|
||||
|
@ -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__ */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
@ -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__ */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
1903
src/gswe-moment.c
1903
src/gswe-moment.c
File diff suppressed because it is too large
Load Diff
@ -1,199 +0,0 @@
|
||||
/* gswe-moment.h - Planetary moment object for SWE-GLib
|
||||
*
|
||||
* 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 __GSWE_MOMENT_H__
|
||||
#define __GSWE_MOMENT_H__
|
||||
|
||||
#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))
|
||||
|
||||
typedef struct _GsweMoment GsweMoment;
|
||||
typedef struct _GsweMomentClass GsweMomentClass;
|
||||
typedef struct _GsweMomentPrivate GsweMomentPrivate;
|
||||
|
||||
/**
|
||||
* GsweMoment:
|
||||
*
|
||||
* The GsweMoment object's instance definition.
|
||||
*/
|
||||
struct _GsweMoment {
|
||||
/* Parent instance structure */
|
||||
GObject parent_instance;
|
||||
|
||||
/* Instance members */
|
||||
|
||||
/*< private >*/
|
||||
GsweMomentPrivate *priv;
|
||||
};
|
||||
|
||||
/**
|
||||
* GsweMomentClass:
|
||||
* @parent_class: the parent class (#GObjectClass)
|
||||
*
|
||||
* The GsweMoment object's class definition.
|
||||
*/
|
||||
struct _GsweMomentClass {
|
||||
/* Parent class structure */
|
||||
GObjectClass parent_class;
|
||||
|
||||
/*< private >*/
|
||||
/* Padding for future expansion */
|
||||
void (*_swe_glib_reserved1)(void);
|
||||
void (*_swe_glib_reserved2)(void);
|
||||
void (*_swe_glib_reserved3)(void);
|
||||
void (*_swe_glib_reserved4)(void);
|
||||
void (*_swe_glib_reserved5)(void);
|
||||
void (*_swe_glib_reserved6)(void);
|
||||
void (*_swe_glib_reserved7)(void);
|
||||
void (*_swe_glib_reserved8)(void);
|
||||
void (*_swe_glib_reserved9)(void);
|
||||
void (*_swe_glib_reserved10)(void);
|
||||
void (*_swe_glib_reserved11)(void);
|
||||
void (*_swe_glib_reserved12)(void);
|
||||
void (*_swe_glib_reserved13)(void);
|
||||
void (*_swe_glib_reserved14)(void);
|
||||
void (*_swe_glib_reserved15)(void);
|
||||
void (*_swe_glib_reserved16)(void);
|
||||
void (*_swe_glib_reserved17)(void);
|
||||
void (*_swe_glib_reserved18)(void);
|
||||
void (*_swe_glib_reserved19)(void);
|
||||
void (*_swe_glib_reserved20)(void);
|
||||
};
|
||||
|
||||
/* used by GSWE_TYPE_MOMENT */
|
||||
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);
|
||||
|
||||
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);
|
||||
|
||||
GsweCoordinates *gswe_moment_get_coordinates(GsweMoment *moment);
|
||||
|
||||
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_all_planets(GsweMoment *moment);
|
||||
|
||||
GList *gswe_moment_get_all_planets(GsweMoment *moment);
|
||||
|
||||
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);
|
||||
|
||||
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_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);
|
||||
|
||||
#endif /* __GSWE_MOMENT_H__ */
|
||||
|
@ -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__ */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
@ -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__ */
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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__ */
|
||||
|
@ -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__ */
|
||||
|
@ -1,268 +0,0 @@
|
||||
/* gswe-planet-info.c: Planet 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 "gswe-types.h"
|
||||
|
||||
#include "gswe-planet-info.h"
|
||||
#include "gswe-planet-info-private.h"
|
||||
|
||||
/**
|
||||
* SECTION:gswe-planet-info
|
||||
* @short_description: a structure storing information about a planet
|
||||
* @title: GswePlanetInfo
|
||||
* @stability: Stable
|
||||
* @include: swe-glib.h
|
||||
*
|
||||
* The #GswePlanetInfo structure stores information about a planet.
|
||||
*/
|
||||
|
||||
G_DEFINE_BOXED_TYPE(
|
||||
GswePlanetInfo,
|
||||
gswe_planet_info,
|
||||
(GBoxedCopyFunc)gswe_planet_info_ref,
|
||||
(GBoxedFreeFunc)gswe_planet_info_unref);
|
||||
|
||||
/**
|
||||
* gswe_planet_info_new:
|
||||
*
|
||||
* Creates a new #GswePlanetInfo object with reference count set to 1.
|
||||
*
|
||||
* Returns: a new #GswePlanetInfo
|
||||
*/
|
||||
GswePlanetInfo *
|
||||
gswe_planet_info_new(void)
|
||||
{
|
||||
GswePlanetInfo *ret;
|
||||
|
||||
ret = g_new0(GswePlanetInfo, 1);
|
||||
ret->refcount = 1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_ref:
|
||||
* @planet_info: (in): a #GswePlanetInfo
|
||||
*
|
||||
* Increases reference count on @planet_info.
|
||||
*
|
||||
* Returns: (transfer none): the same #GswePlanetData
|
||||
*/
|
||||
GswePlanetInfo *
|
||||
gswe_planet_info_ref(GswePlanetInfo *planet_info)
|
||||
{
|
||||
planet_info->refcount++;
|
||||
|
||||
return planet_info;
|
||||
}
|
||||
|
||||
static void
|
||||
gswe_planet_info_free(GswePlanetInfo *planet_info)
|
||||
{
|
||||
if (planet_info->name) {
|
||||
g_free(planet_info->name);
|
||||
}
|
||||
|
||||
g_free(planet_info);
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_unref:
|
||||
* @planet_info: a #GswePlanetInfo
|
||||
*
|
||||
* Decreases reference count on @planet_info. If reference count reaches zero,
|
||||
* @planet_info is freed.
|
||||
*/
|
||||
void
|
||||
gswe_planet_info_unref(GswePlanetInfo *planet_info)
|
||||
{
|
||||
if (--planet_info->refcount == 0) {
|
||||
gswe_planet_info_free(planet_info);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_set_planet:
|
||||
* @planet_info: a #GswePlanetInfo
|
||||
* @planet: the new planet ID
|
||||
*
|
||||
* Sets the planet ID that will be represented by @planet_info.
|
||||
*/
|
||||
void
|
||||
gswe_planet_info_set_planet(GswePlanetInfo *planet_info, GswePlanet planet)
|
||||
{
|
||||
planet_info->planet = planet;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_get_planet:
|
||||
* @planet_info: (in): A #GswePlanetInfo
|
||||
*
|
||||
* Gets the planet ID represented by this #GswePlanetInfo.
|
||||
*
|
||||
* Returns: the planet ID
|
||||
*/
|
||||
GswePlanet
|
||||
gswe_planet_info_get_planet(GswePlanetInfo *planet_info)
|
||||
{
|
||||
return planet_info->planet;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_set_sweph_id:
|
||||
* @planet_info: a #GswePlanetInfo
|
||||
* @sweph_id: the new Swiss Ephemeris planet ID
|
||||
*
|
||||
* Sets the Swiss Ephemeris planet_id associated with this planet.
|
||||
*/
|
||||
void
|
||||
gswe_planet_info_set_sweph_id(GswePlanetInfo *planet_info, gint32 sweph_id)
|
||||
{
|
||||
planet_info->sweph_id = sweph_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_get_sweph_id:
|
||||
* @planet_info: (in): A #GswePlanetInfo
|
||||
*
|
||||
* Gets the Swiss Ephemeris planet ID associated with this planet.
|
||||
*
|
||||
* Returns: the Swiss Ephemeris planet ID
|
||||
*/
|
||||
gint32
|
||||
gswe_planet_info_get_sweph_id(GswePlanetInfo *planet_info)
|
||||
{
|
||||
return planet_info->sweph_id;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_set_real_body:
|
||||
* @planet_info: a #GswePlanetInfo
|
||||
* @real_body: a boolean that indicates if this planet is an object recognized
|
||||
* by Swiss Ephemeris
|
||||
*
|
||||
* Sets whether this planet is an object recognized by the Swiss Ephemeris
|
||||
* library.
|
||||
*/
|
||||
void
|
||||
gswe_planet_info_set_real_body(GswePlanetInfo *planet_info, gboolean real_body)
|
||||
{
|
||||
planet_info->real_body = real_body;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_get_real_body:
|
||||
* @planet_info: (in): A #GswePlanetInfo
|
||||
*
|
||||
* Checks weather this planet is a real celestial body (e.g. it has a Swiss
|
||||
* Ephemeris planet ID) or not.
|
||||
*
|
||||
* Returns: TRUE if the planet has a Swiss Ephemeris planet ID; FALSE otherwise
|
||||
*/
|
||||
gboolean
|
||||
gswe_planet_info_get_real_body(GswePlanetInfo *planet_info)
|
||||
{
|
||||
return planet_info->real_body;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_set_orb:
|
||||
* @planet_info: a #GswePlanetInfo
|
||||
* @orb: the planet's own orb
|
||||
*
|
||||
* Sets the orb of @planet_info. This value is used in aspect and antiscion
|
||||
* calculations.
|
||||
*/
|
||||
void
|
||||
gswe_planet_info_set_orb(GswePlanetInfo *planet_info, gdouble orb)
|
||||
{
|
||||
planet_info->orb = orb;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_get_orb:
|
||||
* @planet_info: (in): A #GswePlanetInfo
|
||||
*
|
||||
* Gets the orb of the planet.
|
||||
*
|
||||
* Returns: the orb, in degrees
|
||||
*/
|
||||
gdouble
|
||||
gswe_planet_info_get_orb(GswePlanetInfo *planet_info)
|
||||
{
|
||||
return planet_info->orb;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_set_name:
|
||||
* @planet_info: (in): a #GswePlanetInfo
|
||||
* @name: (in): the new name of the planet
|
||||
*
|
||||
* Sets the name of @planet_info.
|
||||
*/
|
||||
void
|
||||
gswe_planet_info_set_name(GswePlanetInfo *planet_info, const gchar *name)
|
||||
{
|
||||
if (planet_info->name) {
|
||||
g_free(planet_info->name);
|
||||
}
|
||||
|
||||
planet_info->name = g_strdup(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_get_name:
|
||||
* @planet_info: (in): A #GswePlanetInfo
|
||||
*
|
||||
* Gets the name of the planet.
|
||||
*
|
||||
* Returns: (transfer none): the planet's name
|
||||
*/
|
||||
const gchar *
|
||||
gswe_planet_info_get_name(GswePlanetInfo *planet_info)
|
||||
{
|
||||
return planet_info->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_set_points:
|
||||
* @planet_info: a #GswePlanetInfo
|
||||
* @points: the new point value
|
||||
*
|
||||
* Sets the point value of @planet_info. This value is used in points
|
||||
* calculations.
|
||||
*/
|
||||
void
|
||||
gswe_planet_info_set_points(GswePlanetInfo *planet_info, gint points)
|
||||
{
|
||||
planet_info->points = points;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_planet_info_get_points:
|
||||
* @planet_info: (in): A #GswePlanetInfo
|
||||
*
|
||||
* Gets the value this planet counts in point calculations.
|
||||
*
|
||||
* Returns: the point value
|
||||
*/
|
||||
gint
|
||||
gswe_planet_info_get_points(GswePlanetInfo *planet_info)
|
||||
{
|
||||
return planet_info->points;
|
||||
}
|
||||
|
@ -1,79 +0,0 @@
|
||||
/* gswe-planet-info.h: Planet 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_PLANET_INFO_H__
|
||||
#define __SWE_GLIB_GSWE_PLANET_INFO_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#include "gswe-types.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/**
|
||||
* GswePlanetInfo:
|
||||
*
|
||||
* <structname>GswePlanetInfo</structname> is an opaque structure whose members
|
||||
* cannot be accessed directly.
|
||||
*
|
||||
* Since: 1.1
|
||||
*/
|
||||
typedef struct _GswePlanetInfo GswePlanetInfo;
|
||||
|
||||
GType gswe_planet_info_get_type(void);
|
||||
#define GSWE_TYPE_PLANET_INFO (gswe_planet_info_get_type())
|
||||
|
||||
GswePlanetInfo *gswe_planet_info_new(void);
|
||||
|
||||
GswePlanetInfo *gswe_planet_info_ref(GswePlanetInfo *planet_info);
|
||||
|
||||
void gswe_planet_info_unref(GswePlanetInfo *planet_info);
|
||||
|
||||
void gswe_planet_info_set_planet(
|
||||
GswePlanetInfo *planet_info,
|
||||
GswePlanet planet);
|
||||
|
||||
GswePlanet gswe_planet_info_get_planet(GswePlanetInfo *planet_info);
|
||||
|
||||
void gswe_planet_info_set_sweph_id(
|
||||
GswePlanetInfo *planet_info,
|
||||
gint32 sweph_id);
|
||||
|
||||
gint32 gswe_planet_info_get_sweph_id(GswePlanetInfo *planet_info);
|
||||
|
||||
void gswe_planet_info_set_real_body(
|
||||
GswePlanetInfo *planet_info,
|
||||
gboolean real_body);
|
||||
|
||||
gboolean gswe_planet_info_get_real_body(GswePlanetInfo *planet_info);
|
||||
|
||||
void gswe_planet_info_set_orb(GswePlanetInfo *planet_info, gdouble orb);
|
||||
|
||||
gdouble gswe_planet_info_get_orb(GswePlanetInfo *planet_info);
|
||||
|
||||
void gswe_planet_info_set_name(GswePlanetInfo *planet_info, const gchar *name);
|
||||
|
||||
const gchar *gswe_planet_info_get_name(GswePlanetInfo *planet_info);
|
||||
|
||||
void gswe_planet_info_set_points(GswePlanetInfo *planet_info, gint points);
|
||||
|
||||
gint gswe_planet_info_get_points(GswePlanetInfo *planet_info);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __SWE_GLIB_GSWE_PLANET_INFO_PRIVATE_H__ */
|
||||
|
@ -1,47 +0,0 @@
|
||||
/* gswe-sign-info-private.h: Private parts of GsweSignInfo
|
||||
*
|
||||
* 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_SIGN_INFO_PRIVATE_H__
|
||||
#define __SWE_GLIB_GSWE_SIGN_INFO_PRIVATE_H__
|
||||
|
||||
#include "gswe-types.h"
|
||||
|
||||
#include "gswe-sign-info.h"
|
||||
|
||||
struct _GsweSignInfo {
|
||||
/* the identifier for this sign */
|
||||
GsweZodiac sign;
|
||||
|
||||
/* the name of this sign */
|
||||
gchar *name;
|
||||
|
||||
/* the element of the sign */
|
||||
GsweElement element;
|
||||
|
||||
/* the quality of the sign */
|
||||
GsweQuality quality;
|
||||
|
||||
/* Reference counter */
|
||||
guint refcount;
|
||||
};
|
||||
|
||||
#endif /* __SWE_GLIB_GSWE_SIGN_INFO_PRIVATE_H__ */
|
||||
#else /* not defined __SWE_GLIB_BUILDING__ */
|
||||
#error __FILE__ "Can not be included, unless building SWE-GLib"
|
||||
#endif /* __SWE_GLIB_BUILDING__ */
|
||||
|
@ -1,208 +0,0 @@
|
||||
/* gswe-sign-info.c: Zodiac sign 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 "gswe-types.h"
|
||||
|
||||
#include "gswe-sign-info.h"
|
||||
#include "gswe-sign-info-private.h"
|
||||
|
||||
/**
|
||||
* SECTION:gswe-sign-info
|
||||
* @short_description: a structure storing information about a zodiac sign
|
||||
* @title: GsweSignInfo
|
||||
* @stability: Stable
|
||||
* @include: swe-glib.h
|
||||
*
|
||||
* The #GsweSignInfo stores information about a zodiac sign.
|
||||
*/
|
||||
|
||||
G_DEFINE_BOXED_TYPE(GsweSignInfo,
|
||||
gswe_sign_info,
|
||||
(GBoxedCopyFunc)gswe_sign_info_ref,
|
||||
(GBoxedFreeFunc)gswe_sign_info_unref);
|
||||
|
||||
static void
|
||||
gswe_sign_info_free(GsweSignInfo *sign_info)
|
||||
{
|
||||
if (sign_info->name) {
|
||||
g_free(sign_info->name);
|
||||
}
|
||||
|
||||
g_free(sign_info);
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_new:
|
||||
*
|
||||
* Creates a new GsweSignInfo object with reference count set to 1.
|
||||
*
|
||||
* Returns: (transfer full): a new #GsweSignInfo
|
||||
*/
|
||||
GsweSignInfo *
|
||||
gswe_sign_info_new(void)
|
||||
{
|
||||
GsweSignInfo *ret;
|
||||
|
||||
ret = g_new0(GsweSignInfo, 1);
|
||||
ret->refcount = 1;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_ref:
|
||||
* @sign_info: (in): a #GsweSignInfo
|
||||
*
|
||||
* Increases reference count on @sign_info.
|
||||
*
|
||||
* Returns: (transfer none): the same #GsweSignInfo
|
||||
*/
|
||||
GsweSignInfo *
|
||||
gswe_sign_info_ref(GsweSignInfo *sign_info)
|
||||
{
|
||||
sign_info->refcount++;
|
||||
|
||||
return sign_info;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_unref:
|
||||
* @sign_info: a #GsweSignInfo
|
||||
*
|
||||
* Decreases reference count or @sign_info. If reference count reaches zero,
|
||||
* @sign_info is freed.
|
||||
*/
|
||||
void
|
||||
gswe_sign_info_unref(GsweSignInfo *sign_info)
|
||||
{
|
||||
if (--sign_info->refcount == 0) {
|
||||
gswe_sign_info_free(sign_info);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_set_sign:
|
||||
* @sign_info: (in): a #GsweSignInfo
|
||||
* @sign: the sign to set in @sign_info
|
||||
*
|
||||
* Sets the sign ID that is represented by this #GsweSignInfo.
|
||||
*/
|
||||
void
|
||||
gswe_sign_info_set_sign(GsweSignInfo *sign_info, GsweZodiac sign)
|
||||
{
|
||||
sign_info->sign = sign;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_get_sign:
|
||||
* @sign_info: (in): a #GsweSignInfo
|
||||
*
|
||||
* Gets the sign ID that is represented by this #GsweSignInfo.
|
||||
*
|
||||
* Returns: the sign ID
|
||||
*/
|
||||
GsweZodiac
|
||||
gswe_sign_info_get_sign(GsweSignInfo *sign_info)
|
||||
{
|
||||
return sign_info->sign;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_set_name:
|
||||
* @sign_info: (in): a #GsweSignInfo
|
||||
* @name: (in): the name of the sign
|
||||
*
|
||||
* Sets the name of the sign.
|
||||
*/
|
||||
void
|
||||
gswe_sign_info_set_name(GsweSignInfo *sign_info, const gchar *name)
|
||||
{
|
||||
if (sign_info->name) {
|
||||
g_free(sign_info->name);
|
||||
}
|
||||
|
||||
sign_info->name = g_strdup(name);
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_get_name:
|
||||
* @sign_info: (in): a #GsweSignInfo
|
||||
*
|
||||
* Gets the name associated with this sign.
|
||||
*
|
||||
* Returns: (transfer none): the name of the zodiac sign
|
||||
*/
|
||||
const gchar *
|
||||
gswe_sign_info_get_name(GsweSignInfo *sign_info)
|
||||
{
|
||||
return sign_info->name;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_set_element:
|
||||
* @sign_info: (in): a #GsweSignInfo
|
||||
* @element: a #GsweElement
|
||||
*
|
||||
* Sets the element @sign_info should belong to.
|
||||
*/
|
||||
void
|
||||
gswe_sign_info_set_element(GsweSignInfo *sign_info, GsweElement element)
|
||||
{
|
||||
sign_info->element = element;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_get_element:
|
||||
* @sign_info: (in): a #GsweSignInfo
|
||||
*
|
||||
* Gets the element this sign belongs to.
|
||||
*
|
||||
* Returns: the element
|
||||
*/
|
||||
GsweElement
|
||||
gswe_sign_info_get_element(GsweSignInfo *sign_info)
|
||||
{
|
||||
return sign_info->element;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_set_quality:
|
||||
* @sign_info: (in): a #GsweSignInfo
|
||||
* @quality: a #GsweQuality
|
||||
*
|
||||
* Sets the quality @sign should belong to
|
||||
*/
|
||||
void
|
||||
gswe_sign_info_set_quality(GsweSignInfo *sign_info, GsweQuality quality)
|
||||
{
|
||||
sign_info->quality = quality;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_sign_info_get_quality:
|
||||
* @sign_info: (in): a #GsweSignInfo
|
||||
*
|
||||
* Gets the quality this sign belongs to.
|
||||
*
|
||||
* Returns: the quality
|
||||
*/
|
||||
GsweQuality
|
||||
gswe_sign_info_get_quality(GsweSignInfo *sign_info)
|
||||
{
|
||||
return sign_info->quality;
|
||||
}
|
||||
|
@ -1,60 +0,0 @@
|
||||
/* gswe-sign-info.h: Zodiac sign 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_SIGN_INFO_H__
|
||||
#define __SWE_GLIB_GSWE_SIGN_INFO_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#include "gswe-types.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
/**
|
||||
* GsweSignInfo:
|
||||
*
|
||||
* <structname>GsweSignInfo</structname> is an opaque structure whose members
|
||||
* cannot be accessed directly.
|
||||
*
|
||||
* Since: 1.1
|
||||
*/
|
||||
typedef struct _GsweSignInfo GsweSignInfo;
|
||||
|
||||
GType gswe_sign_info_get_type(void);
|
||||
#define GSWE_TYPE_SIGN_INFO (gswe_sign_info_get_type())
|
||||
|
||||
GsweSignInfo *gswe_sign_info_new(void);
|
||||
|
||||
GsweSignInfo *gswe_sign_info_ref(GsweSignInfo *sign_info);
|
||||
void gswe_sign_info_unref(GsweSignInfo *sign_info);
|
||||
|
||||
void gswe_sign_info_set_sign(GsweSignInfo *sign_info, GsweZodiac sign);
|
||||
GsweZodiac gswe_sign_info_get_sign(GsweSignInfo *sign_info);
|
||||
|
||||
void gswe_sign_info_set_name(GsweSignInfo *sign_info, const gchar *name);
|
||||
const gchar *gswe_sign_info_get_name(GsweSignInfo *sign_info);
|
||||
|
||||
void gswe_sign_info_set_element(GsweSignInfo *sign_info, GsweElement element);
|
||||
GsweElement gswe_sign_info_get_element(GsweSignInfo *sign_info);
|
||||
|
||||
void gswe_sign_info_set_quality(GsweSignInfo *sign_info, GsweQuality quality);
|
||||
GsweQuality gswe_sign_info_get_quality(GsweSignInfo *sign_info);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
#endif /* __SWE_GLIB_GSWE_SIGN_INFO_H__ */
|
||||
|
1778
src/gswe-timestamp.c
1778
src/gswe-timestamp.c
File diff suppressed because it is too large
Load Diff
@ -1,213 +0,0 @@
|
||||
/* gswe-timestamp.h - Converter GObject between Gregorian calendar date and
|
||||
* Julian day
|
||||
*
|
||||
* 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_TIMESTAMP_H__
|
||||
#define __SWE_GLIB_GSWE_TIMESTAMP_H__
|
||||
|
||||
#include <glib-object.h>
|
||||
|
||||
#define GSWE_TYPE_TIMESTAMP (gswe_timestamp_get_type())
|
||||
#define GSWE_TIMESTAMP(obj) (G_TYPE_CHECK_INSTANCE_CAST( \
|
||||
(obj), \
|
||||
GSWE_TYPE_TIMESTAMP, \
|
||||
GsweTimestamp))
|
||||
#define GSWE_IS_TIMESTAMP(obj) (G_TYPE_CHECK_INSTANCE_TYPE( \
|
||||
(obj), \
|
||||
GSWE_TYPE_TIMESTAMP))
|
||||
#define GSWE_TIMESTAMP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST( \
|
||||
(klass), \
|
||||
GSWE_TYPE_TIMESTAMP, \
|
||||
GsweTimestampClass))
|
||||
#define GSWE_IS_TIMESTAMP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE( \
|
||||
(klass), \
|
||||
GSWE_TYPE_TIMESTAMP))
|
||||
#define GSWE_TIMESTAMP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \
|
||||
GSWE_TYPE_TIMESTAMP, \
|
||||
GsweTimestampClass))
|
||||
|
||||
typedef struct _GsweTimestamp GsweTimestamp;
|
||||
typedef struct _GsweTimestampClass GsweTimestampClass;
|
||||
typedef struct _GsweTimestampPrivate GsweTimestampPrivate;
|
||||
|
||||
/**
|
||||
* GsweTimestamp:
|
||||
*
|
||||
* The GsweTimestamp object's instance definition.
|
||||
*/
|
||||
struct _GsweTimestamp {
|
||||
/* Parent instance structure */
|
||||
GObject parent_instance;
|
||||
|
||||
/* Instance members */
|
||||
|
||||
/*< private >*/
|
||||
GsweTimestampPrivate *priv;
|
||||
};
|
||||
|
||||
/**
|
||||
* GsweTimestampClass:
|
||||
* @parent_class: the parent class structure (#GObjectClass)
|
||||
*
|
||||
* The GsweTimestamp object's class definition.
|
||||
*/
|
||||
struct _GsweTimestampClass {
|
||||
/* Parent class */
|
||||
GObjectClass parent_class;
|
||||
|
||||
/*< private >*/
|
||||
/* Padding for future expansion */
|
||||
void (*_swe_glib_reserved1)(void);
|
||||
void (*_swe_glib_reserved2)(void);
|
||||
void (*_swe_glib_reserved3)(void);
|
||||
void (*_swe_glib_reserved4)(void);
|
||||
void (*_swe_glib_reserved5)(void);
|
||||
void (*_swe_glib_reserved6)(void);
|
||||
void (*_swe_glib_reserved7)(void);
|
||||
void (*_swe_glib_reserved8)(void);
|
||||
void (*_swe_glib_reserved9)(void);
|
||||
void (*_swe_glib_reserved10)(void);
|
||||
void (*_swe_glib_reserved11)(void);
|
||||
void (*_swe_glib_reserved12)(void);
|
||||
void (*_swe_glib_reserved13)(void);
|
||||
void (*_swe_glib_reserved14)(void);
|
||||
void (*_swe_glib_reserved15)(void);
|
||||
void (*_swe_glib_reserved16)(void);
|
||||
void (*_swe_glib_reserved17)(void);
|
||||
void (*_swe_glib_reserved18)(void);
|
||||
void (*_swe_glib_reserved19)(void);
|
||||
void (*_swe_glib_reserved20)(void);
|
||||
};
|
||||
|
||||
GType gswe_timestamp_get_type(void);
|
||||
|
||||
/* Method definitions */
|
||||
GsweTimestamp *gswe_timestamp_new(void);
|
||||
|
||||
GsweTimestamp *gswe_timestamp_new_from_julian_day(gdouble julian_day);
|
||||
|
||||
GsweTimestamp * gswe_timestamp_new_from_gregorian_full(gint year,
|
||||
gint month,
|
||||
gint day,
|
||||
gint hour,
|
||||
gint minute,
|
||||
gint second,
|
||||
gint microsecond,
|
||||
gdouble time_zone_offset);
|
||||
|
||||
void gswe_timestamp_set_gregorian_full(GsweTimestamp *timestamp,
|
||||
gint year,
|
||||
gint month,
|
||||
gint day,
|
||||
gint hour,
|
||||
gint minute,
|
||||
gint second,
|
||||
gint microsecond,
|
||||
gdouble time_zone_offset,
|
||||
GError **err);
|
||||
|
||||
void gswe_timestamp_set_instant_recalc(GsweTimestamp *timestamp,
|
||||
gboolean instant_recalc,
|
||||
GError **err);
|
||||
|
||||
gboolean gswe_timestamp_get_instant_recalc(GsweTimestamp *timestamp);
|
||||
|
||||
void gswe_timestamp_set_gregorian_year(GsweTimestamp *timestamp,
|
||||
gint gregorian_year,
|
||||
GError **err);
|
||||
|
||||
gint gswe_timestamp_get_gregorian_year(GsweTimestamp *timestamp, GError **err);
|
||||
|
||||
void gswe_timestamp_set_gregorian_month(GsweTimestamp *timestamp,
|
||||
gint gregorian_month,
|
||||
GError **err);
|
||||
|
||||
gint gswe_timestamp_get_gregorian_month(GsweTimestamp *timestamp, GError **err);
|
||||
|
||||
void gswe_timestamp_set_gregorian_day(GsweTimestamp *timestamp,
|
||||
gint gregorian_day,
|
||||
GError **err);
|
||||
|
||||
gint gswe_timestamp_get_gregorian_day(GsweTimestamp *timestamp, GError **err);
|
||||
|
||||
void gswe_timestamp_set_gregorian_hour(GsweTimestamp *timestamp,
|
||||
gint gregorian_hour,
|
||||
GError **err);
|
||||
|
||||
gint gswe_timestamp_get_gregorian_hour(GsweTimestamp *timestamp, GError **err);
|
||||
|
||||
void gswe_timestamp_set_gregorian_minute(GsweTimestamp *timestamp,
|
||||
gint gregorian_minute,
|
||||
GError **err);
|
||||
|
||||
gint gswe_timestamp_get_gregorian_minute(GsweTimestamp *timestamp,
|
||||
GError **err);
|
||||
|
||||
void gswe_timestamp_set_gregorian_second(GsweTimestamp *timestamp,
|
||||
gint gregorian_second,
|
||||
GError **err);
|
||||
|
||||
gint gswe_timestamp_get_gregorian_second(GsweTimestamp *timestamp,
|
||||
GError **err);
|
||||
|
||||
void gswe_timestamp_set_gregorian_microsecond(GsweTimestamp *timestamp,
|
||||
gint gregorian_microsecond,
|
||||
GError **err);
|
||||
|
||||
gint gswe_timestamp_get_gregorian_microsecond(GsweTimestamp *timestamp,
|
||||
GError **err);
|
||||
|
||||
void gswe_timestamp_set_gregorian_timezone(GsweTimestamp *timestamp,
|
||||
gdouble gregorian_timezone_offset,
|
||||
GError **err);
|
||||
|
||||
gdouble gswe_timestamp_get_gregorian_timezone(GsweTimestamp *timestamp);
|
||||
|
||||
#ifndef GSWE_DISABLE_DEPRECATED
|
||||
G_DEPRECATED_FOR(gswe_timestamp_set_julian_day_et)
|
||||
void gswe_timestamp_set_julian_day(GsweTimestamp *timestamp,
|
||||
gdouble julian_day);
|
||||
|
||||
G_DEPRECATED_FOR(gswe_timestamp_get_julian_day_et)
|
||||
gdouble gswe_timestamp_get_julian_day(GsweTimestamp *timestamp,
|
||||
GError **err);
|
||||
#endif
|
||||
|
||||
void gswe_timestamp_set_julian_day_et(GsweTimestamp *timestamp,
|
||||
gdouble julian_day,
|
||||
GError **err);
|
||||
|
||||
gdouble gswe_timestamp_get_julian_day_et(GsweTimestamp *timestamp,
|
||||
GError **err);
|
||||
|
||||
void gswe_timestamp_set_julian_day_ut(GsweTimestamp *timestamp,
|
||||
gdouble julian_day,
|
||||
GError **err);
|
||||
|
||||
gdouble gswe_timestamp_get_julian_day_ut(GsweTimestamp *timestamp,
|
||||
GError **err);
|
||||
|
||||
gdouble gswe_timestamp_get_sidereal_time(GsweTimestamp *timestamp,
|
||||
GError **err);
|
||||
|
||||
void gswe_timestamp_set_now_local(GsweTimestamp *timestamp,
|
||||
GError **err);
|
||||
|
||||
GsweTimestamp *gswe_timestamp_new_from_now_local(void);
|
||||
|
||||
#endif /* __SWE_GLIB_GSWE_TIMESTAMP_H__ */
|
||||
|
@ -1,45 +0,0 @@
|
||||
/* gswe-types.h - Basic types of SWE-GLib
|
||||
*
|
||||
* 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"
|
||||
|
||||
/**
|
||||
* GSWE_PLANET_LILITH:
|
||||
*
|
||||
* The Moon apogee is often called Lilith, or Dark Moon among astrologers.
|
||||
* There is also an asteroid with the same name (1181 Lilith), which is
|
||||
* currently not included in SWE-GLib.
|
||||
*/
|
||||
|
||||
GsweCoordinates *
|
||||
gswe_coordinates_copy(GsweCoordinates *coordinates)
|
||||
{
|
||||
GsweCoordinates *ret = g_new0(GsweCoordinates, 1);
|
||||
|
||||
ret->longitude = coordinates->longitude;
|
||||
ret->latitude = coordinates->latitude;
|
||||
ret->altitude = coordinates->altitude;
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
G_DEFINE_BOXED_TYPE(
|
||||
GsweCoordinates,
|
||||
gswe_coordinates,
|
||||
(GBoxedCopyFunc)gswe_coordinates_copy,
|
||||
(GBoxedFreeFunc)g_free);
|
||||
|
349
src/gswe-types.h
349
src/gswe-types.h
@ -1,349 +0,0 @@
|
||||
/* gswe-types.h - Basic types of SWE-GLib
|
||||
*
|
||||
* 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_TYPES_H__
|
||||
#define __SWE_GLIB_GSWE_TYPES_H__
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib-object.h>
|
||||
|
||||
/**
|
||||
* SECTION:gswe-types
|
||||
* @short_description: Base types of SWE-GLib
|
||||
* @title: Base types
|
||||
* @stability: Stable
|
||||
* @include: swe-glib/swe-glib.h
|
||||
*
|
||||
* These are the base types used throughout SWE-GLib.
|
||||
*/
|
||||
|
||||
/**
|
||||
* GswePlanet:
|
||||
* @GSWE_PLANET_NONE: no planet
|
||||
* @GSWE_PLANET_ASCENDANT: the ascendant
|
||||
* @GSWE_PLANET_DESCENDANT: the descendant
|
||||
* @GSWE_PLANET_MC: midheaven (Medium Coeli)
|
||||
* @GSWE_PLANET_IC: Immum Coeli
|
||||
* @GSWE_PLANET_VERTEX: the Vertex (the point where the ecliptic meats the
|
||||
* primal vertical)
|
||||
* @GSWE_PLANET_ANTIVERTEX: the Antivertex (the point opposing the Vertex)
|
||||
* @GSWE_PLANET_MOON_NODE: the mean ascending (north) Moon node
|
||||
* @GSWE_PLANET_MOON_SOUTH_NODE: the mean descending (south) Moon node
|
||||
* @GSWE_PLANET_MOON_APOGEE: the mean Moon apogee (sometimes called Dark Moon,
|
||||
* or Lilith)
|
||||
* @GSWE_PLANET_SUN: the Sun
|
||||
* @GSWE_PLANET_MOON: the Moon
|
||||
* @GSWE_PLANET_MERCURY: planet Mercury
|
||||
* @GSWE_PLANET_VENUS: planet Venus
|
||||
* @GSWE_PLANET_EARTH: planet Earth
|
||||
* @GSWE_PLANET_MARS: planet Mars
|
||||
* @GSWE_PLANET_JUPITER: planet Jupiter
|
||||
* @GSWE_PLANET_SATURN: planet Saturn
|
||||
* @GSWE_PLANET_URANUS: planet Uranus
|
||||
* @GSWE_PLANET_NEPTUNE: planet Neptune
|
||||
* @GSWE_PLANET_PLUTO: planet Pluto
|
||||
* @GSWE_PLANET_CHIRON: dwarf planet Chiron
|
||||
* @GSWE_PLANET_CERES: dwarf planet Ceres
|
||||
* @GSWE_PLANET_PALLAS: dwarf planet Pallas
|
||||
* @GSWE_PLANET_JUNO: dwarf planet Juno
|
||||
* @GSWE_PLANET_VESTA: dwarf planet Vesta
|
||||
* @GSWE_PLANET_PHOLUS: asteroid Pholus
|
||||
* @GSWE_PLANET_NESSUS: asteroid Nessus
|
||||
* @GSWE_PLANET_CHARIKLO: asteroid Chariklo
|
||||
* @GSWE_PLANET_SEDNA: dwarf planet Sedna
|
||||
* @GSWE_PLANET_ERIS: dwarf planet Eris
|
||||
* @GSWE_PLANET_DEJANIRA: dwarf planet Dejanira
|
||||
* @GSWE_PLANET_CIRCE: asteroid Circe
|
||||
* @GSWE_PLANET_ORCUS: asteroid Orcus
|
||||
* @GSWE_PLANET_ASBOLUS: asteroid Asbolus
|
||||
* @GSWE_PLANET_HYGIEA: asteroid Hygiea
|
||||
*
|
||||
* This enum holds the planet identifiers known by SWE-GLib.
|
||||
*/
|
||||
typedef enum {
|
||||
/* Theoretical/non-existing points */
|
||||
GSWE_PLANET_NONE = 0,
|
||||
GSWE_PLANET_ASCENDANT,
|
||||
GSWE_PLANET_MC,
|
||||
GSWE_PLANET_VERTEX,
|
||||
GSWE_PLANET_MOON_NODE,
|
||||
GSWE_PLANET_MOON_APOGEE,
|
||||
GSWE_PLANET_MOON_SOUTH_NODE,
|
||||
GSWE_PLANET_DESCENDANT,
|
||||
GSWE_PLANET_IC,
|
||||
GSWE_PLANET_ANTIVERTEX,
|
||||
|
||||
/* Actual astrological planets */
|
||||
GSWE_PLANET_SUN = 11,
|
||||
GSWE_PLANET_MOON,
|
||||
GSWE_PLANET_MERCURY,
|
||||
GSWE_PLANET_VENUS,
|
||||
GSWE_PLANET_EARTH,
|
||||
GSWE_PLANET_MARS,
|
||||
GSWE_PLANET_JUPITER,
|
||||
GSWE_PLANET_SATURN,
|
||||
GSWE_PLANET_URANUS,
|
||||
GSWE_PLANET_NEPTUNE,
|
||||
GSWE_PLANET_PLUTO,
|
||||
/* Dwarves and asteroids */
|
||||
GSWE_PLANET_CHIRON = 101, /* Included in ephemerides files */
|
||||
GSWE_PLANET_CERES, /* Included in ephemerides files */
|
||||
GSWE_PLANET_PALLAS, /* Included in ephemerides files */
|
||||
GSWE_PLANET_JUNO, /* Included in ephemerides files */
|
||||
GSWE_PLANET_VESTA, /* Included in ephemerides files */
|
||||
GSWE_PLANET_PHOLUS, /* Included in ephemerides files */
|
||||
GSWE_PLANET_NESSUS, /* 7066 */
|
||||
GSWE_PLANET_CHARIKLO, /* 10199 */
|
||||
GSWE_PLANET_SEDNA, /* 90377 */
|
||||
GSWE_PLANET_ERIS, /* 136199 */
|
||||
GSWE_PLANET_DEJANIRA, /* 157 */
|
||||
GSWE_PLANET_CIRCE, /* 34 */
|
||||
GSWE_PLANET_ORCUS, /* 90482 */
|
||||
GSWE_PLANET_ASBOLUS, /* 8405 */
|
||||
GSWE_PLANET_HYGIEA /* 10 */
|
||||
} GswePlanet;
|
||||
|
||||
/* Moon Apogee in astrology is often referred to as the Dark Moon, or Lilith */
|
||||
#define GSWE_PLANET_LILITH GSWE_PLANET_MOON_APOGEE
|
||||
|
||||
/**
|
||||
* GSWE_PLANET_OFFSET_VIRTUAL_NODES:
|
||||
*
|
||||
* The offset in #GswePlanet for virtual nodes like the ascendant or vertex.
|
||||
* This is for consistency only, I don’t think anyone would need it.
|
||||
*/
|
||||
#define GSWE_PLANET_OFFSET_VIRTUAL_NODES 0
|
||||
|
||||
/**
|
||||
* GSWE_PLANET_OFFSET_PLANETS:
|
||||
*
|
||||
* The offset in #GswePlanet for real planets in the Solar System. These are
|
||||
* the objects classified as planets (including Pluto).
|
||||
*/
|
||||
#define GSWE_PLANET_OFFSET_PLANETS 10
|
||||
|
||||
/**
|
||||
* GSWE_PLANET_OFFSET_ASTEROIDS:
|
||||
*
|
||||
* The offset in #GswePlanet for asteroids and dwarf planets.
|
||||
*/
|
||||
#define GSWE_PLANET_OFFSET_ASTEROIDS 100
|
||||
|
||||
/**
|
||||
* GSWE_PLANET_OFFSET_CUSTOM:
|
||||
*
|
||||
* The offset in #GswePlanet for custom planets. This will be used to register
|
||||
* custom planets later.
|
||||
*/
|
||||
#define GSWE_PLANET_OFFSET_CUSTOM 10000
|
||||
|
||||
/**
|
||||
* GsweZodiac:
|
||||
* @GSWE_SIGN_NONE: no sign
|
||||
* @GSWE_SIGN_ARIES: the Aries sign (Ram)
|
||||
* @GSWE_SIGN_TAURUS: the Taurus sign (Bull)
|
||||
* @GSWE_SIGN_GEMINI: the Gemini sign (Twins)
|
||||
* @GSWE_SIGN_CANCER: the Cancer sign (Crab)
|
||||
* @GSWE_SIGN_LEO: the Leo sign (Lion)
|
||||
* @GSWE_SIGN_VIRGO: the Virgo sign (Maid)
|
||||
* @GSWE_SIGN_LIBRA: the Libra sign (Scales)
|
||||
* @GSWE_SIGN_SCORPIO: the Scorpio sign (Scorpion)
|
||||
* @GSWE_SIGN_SAGITTARIUS: the Sagittarius sign (Archer)
|
||||
* @GSWE_SIGN_CAPRICORN: the Capricorn sign (Goat)
|
||||
* @GSWE_SIGN_AQUARIUS: the Aquarius sign (Water Bearer)
|
||||
* @GSWE_SIGN_PISCES: the Pisces sign (Fish)
|
||||
*
|
||||
* The zodiac signs known by SWE-GLib by default.
|
||||
*/
|
||||
typedef enum {
|
||||
GSWE_SIGN_NONE,
|
||||
GSWE_SIGN_ARIES,
|
||||
GSWE_SIGN_TAURUS,
|
||||
GSWE_SIGN_GEMINI,
|
||||
GSWE_SIGN_CANCER,
|
||||
GSWE_SIGN_LEO,
|
||||
GSWE_SIGN_VIRGO,
|
||||
GSWE_SIGN_LIBRA,
|
||||
GSWE_SIGN_SCORPIO,
|
||||
GSWE_SIGN_SAGITTARIUS,
|
||||
GSWE_SIGN_CAPRICORN,
|
||||
GSWE_SIGN_AQUARIUS,
|
||||
GSWE_SIGN_PISCES
|
||||
} GsweZodiac;
|
||||
|
||||
/**
|
||||
* GsweAspect:
|
||||
* @GSWE_ASPECT_NONE: no aspect
|
||||
* @GSWE_ASPECT_CONJUCTION: conjuction (0°)
|
||||
* @GSWE_ASPECT_SEXTILE: sextile (60°)
|
||||
* @GSWE_ASPECT_SQUARE: square (or quadrat; 90°)
|
||||
* @GSWE_ASPECT_TRINE: trine (or trigon; 120°)
|
||||
* @GSWE_ASPECT_OPPOSITION: opposition (180°)
|
||||
* @GSWE_ASPECT_SEMISEXTILE: semi-sextile (30°)
|
||||
* @GSWE_ASPECT_SEMISQUARE: semi-square (45°)
|
||||
* @GSWE_ASPECT_QUINTILE: quintile (72°)
|
||||
* @GSWE_ASPECT_SESQUISQUARE: sesqui-square (135°)
|
||||
* @GSWE_ASPECT_BIQUINTILE: bi-quintile (144°)
|
||||
* @GSWE_ASPECT_QUINCUNX: quincunx (150°)
|
||||
*
|
||||
* The aspects known by SWE-GLib by default.
|
||||
*/
|
||||
typedef enum {
|
||||
GSWE_ASPECT_NONE,
|
||||
GSWE_ASPECT_CONJUCTION,
|
||||
GSWE_ASPECT_SEXTILE,
|
||||
GSWE_ASPECT_SQUARE,
|
||||
GSWE_ASPECT_TRINE,
|
||||
GSWE_ASPECT_OPPOSITION,
|
||||
GSWE_ASPECT_SEMISEXTILE,
|
||||
GSWE_ASPECT_SEMISQUARE,
|
||||
GSWE_ASPECT_QUINTILE,
|
||||
GSWE_ASPECT_SESQUISQUARE,
|
||||
GSWE_ASPECT_BIQUINTILE,
|
||||
GSWE_ASPECT_QUINCUNX
|
||||
} GsweAspect;
|
||||
|
||||
/**
|
||||
* GsweAntiscionAxis:
|
||||
* @GSWE_ANTISCION_AXIS_NONE: no mirror
|
||||
* @GSWE_ANTISCION_AXIS_ARIES: mirror on the Aries/Libra (0°-180°) axis
|
||||
* @GSWE_ANTISCION_AXIS_MID_TAURUS: mirror on the middle of Taurus/Scorpio
|
||||
* (45°-225°) axis
|
||||
* @GSWE_ANTISCION_AXIS_CANCER: mirror on the Cancer/Capricorn (90°-270°) axis
|
||||
* @GSWE_ANTISCION_AXIS_MID_LEO: mirror on the middle of Leo/Aquarius
|
||||
* (135°-315°) axis
|
||||
*
|
||||
* The antiscion axes known by SWE-GLib by default.
|
||||
*/
|
||||
typedef enum {
|
||||
GSWE_ANTISCION_AXIS_NONE,
|
||||
GSWE_ANTISCION_AXIS_ARIES,
|
||||
GSWE_ANTISCION_AXIS_MID_TAURUS,
|
||||
GSWE_ANTISCION_AXIS_CANCER,
|
||||
GSWE_ANTISCION_AXIS_MID_LEO
|
||||
} GsweAntiscionAxis;
|
||||
|
||||
/**
|
||||
* GsweElement:
|
||||
* @GSWE_ELEMENT_NONE: no element
|
||||
* @GSWE_ELEMENT_FIRE: the Fire element
|
||||
* @GSWE_ELEMENT_EARTH: the Earth element
|
||||
* @GSWE_ELEMENT_AIR: the Air element
|
||||
* @GSWE_ELEMENT_WATER: the Water element
|
||||
*
|
||||
* The elements as known by the SWE-GLib library.
|
||||
*/
|
||||
typedef enum {
|
||||
GSWE_ELEMENT_NONE,
|
||||
GSWE_ELEMENT_FIRE,
|
||||
GSWE_ELEMENT_EARTH,
|
||||
GSWE_ELEMENT_AIR,
|
||||
GSWE_ELEMENT_WATER
|
||||
} GsweElement;
|
||||
|
||||
/**
|
||||
* GsweQuality:
|
||||
* @GSWE_QUALITY_NONE: no quality
|
||||
* @GSWE_QUALITY_CARDINAL: Cardinal quality
|
||||
* @GSWE_QUALITY_FIX: Fix quality
|
||||
* @GSWE_QUALITY_MUTABLE: Mutable quality
|
||||
*
|
||||
* The qualities as known by the SWE-GLib library.
|
||||
*/
|
||||
typedef enum {
|
||||
GSWE_QUALITY_NONE,
|
||||
GSWE_QUALITY_CARDINAL,
|
||||
GSWE_QUALITY_FIX,
|
||||
GSWE_QUALITY_MUTABLE
|
||||
} GsweQuality;
|
||||
|
||||
/**
|
||||
* GsweHouseSystem:
|
||||
* @GSWE_HOUSE_SYSTEM_NONE: no house system
|
||||
* @GSWE_HOUSE_SYSTEM_PLACIDUS: Placidus house system
|
||||
* @GSWE_HOUSE_SYSTEM_KOCH: Koch house system
|
||||
* @GSWE_HOUSE_SYSTEM_EQUAL: Equal house system
|
||||
*
|
||||
* The house systems currently known by SWE-GLib.
|
||||
*/
|
||||
typedef enum {
|
||||
GSWE_HOUSE_SYSTEM_NONE,
|
||||
GSWE_HOUSE_SYSTEM_PLACIDUS,
|
||||
GSWE_HOUSE_SYSTEM_KOCH,
|
||||
GSWE_HOUSE_SYSTEM_EQUAL
|
||||
} GsweHouseSystem;
|
||||
|
||||
/**
|
||||
* GsweMoonPhase:
|
||||
* @GSWE_MOON_PHASE_NONE: Moon phase is not defined
|
||||
* @GSWE_MOON_PHASE_NEW: New Moon
|
||||
* @GSWE_MOON_PHASE_WAXING_CRESCENT: Waxing crescent Moon
|
||||
* @GSWE_MOON_PHASE_WAXING_HALF: First half
|
||||
* @GSWE_MOON_PHASE_WAXING_GIBBOUS: Waxing gibbous Moon
|
||||
* @GSWE_MOON_PHASE_FULL: Full Moon
|
||||
* @GSWE_MOON_PHASE_WANING_GIBBOUS: Waning gibbous Moon
|
||||
* @GSWE_MOON_PHASE_WANING_HALF: Second Half
|
||||
* @GSWE_MOON_PHASE_WANING_CRESCENT: Waning crescent Moon
|
||||
* @GSWE_MOON_PHASE_DARK: Dark Moon
|
||||
*
|
||||
* The phases of the Moon.
|
||||
*/
|
||||
typedef enum {
|
||||
GSWE_MOON_PHASE_NONE,
|
||||
GSWE_MOON_PHASE_NEW,
|
||||
GSWE_MOON_PHASE_WAXING_CRESCENT,
|
||||
GSWE_MOON_PHASE_WAXING_HALF,
|
||||
GSWE_MOON_PHASE_WAXING_GIBBOUS,
|
||||
GSWE_MOON_PHASE_FULL,
|
||||
GSWE_MOON_PHASE_WANING_GIBBOUS,
|
||||
GSWE_MOON_PHASE_WANING_HALF,
|
||||
GSWE_MOON_PHASE_WANING_CRESCENT,
|
||||
GSWE_MOON_PHASE_DARK
|
||||
} GsweMoonPhase;
|
||||
|
||||
/**
|
||||
* GsweTimestampValidityFlags:
|
||||
* @GSWE_VALID_NONE: No valid timestamp
|
||||
* @GSWE_VALID_GREGORIAN: Gregorian timestamp is valid
|
||||
* @GSWE_VALID_JULIAN_DAY: Julian Day is valid
|
||||
*
|
||||
* Flags to show the valid values in a #GsweTimestamp
|
||||
*/
|
||||
typedef enum {
|
||||
GSWE_VALID_NONE = 0,
|
||||
GSWE_VALID_GREGORIAN = (1 << 0),
|
||||
GSWE_VALID_JULIAN_DAY = (1 << 1)
|
||||
} GsweTimestampValidityFlags;
|
||||
|
||||
/**
|
||||
* GsweCoordinates:
|
||||
* @longitude: longitude part of the coordinates
|
||||
* @latitude: latitude part of the coordinates
|
||||
* @altitude: altitude relative to sea level
|
||||
*
|
||||
* GsweCoordinates specifies an exact point on Earth's surface
|
||||
*/
|
||||
typedef struct _GsweCoordinates {
|
||||
gdouble longitude;
|
||||
gdouble latitude;
|
||||
gdouble altitude;
|
||||
} GsweCoordinates;
|
||||
|
||||
GType gswe_coordinates_get_type(void);
|
||||
#define GSWE_TYPE_COORDINATES (gswe_coordinates_get_type())
|
||||
|
||||
#endif /* __SWE_GLIB_GSWE_TYPES_H__ */
|
@ -1,91 +0,0 @@
|
||||
/* gswe-version.c: SWE-GLib version 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.h>
|
||||
#include "gswe-version.h"
|
||||
|
||||
/**
|
||||
* SECTION:gswe-version
|
||||
* @short_description: SWE-GLib version information
|
||||
* @title: Version information
|
||||
* @stability: Stable
|
||||
* @include: swe-glib/swe-glib.h
|
||||
*
|
||||
* Version information of the SWE-GLib library.
|
||||
*/
|
||||
|
||||
/**
|
||||
* GSWE_MAJOR_VERSION:
|
||||
*
|
||||
* The major version number of the SWE-GLib library.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
|
||||
/**
|
||||
* GSWE_MINOR_VERSION:
|
||||
*
|
||||
* The minor version number of the SWE-GLib library.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
|
||||
/**
|
||||
* GSWE_MICRO_VERSION:
|
||||
*
|
||||
* The micro version number of the SWE-GLib library.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
|
||||
/**
|
||||
* GSWE_CHECK_VERSION:
|
||||
* @major: the major version to check for
|
||||
* @minor: the minor version to check for
|
||||
* @micro: the micro version to check for
|
||||
*
|
||||
* Checks the version number of the SWE-GLib library that is being comipled
|
||||
* against.
|
||||
*
|
||||
* Returns: TRUE if the required version is satisfied; FALSE otherwise.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
|
||||
/**
|
||||
* gswe_check_version:
|
||||
* @required_major: the required major version
|
||||
* @required_minor: the required minor version
|
||||
* @required_micro: the required micro version
|
||||
*
|
||||
* Checks that the SWE-GLib library in use is compatible with the given
|
||||
* version.
|
||||
*
|
||||
* Returns: TRUE if the required version is satisfied; FALSE otherwise.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
gboolean
|
||||
gswe_check_version(
|
||||
guint required_major,
|
||||
guint required_minor,
|
||||
guint required_micro)
|
||||
{
|
||||
return (GSWE_CHECK_VERSION(required_major, required_minor, required_micro));
|
||||
}
|
||||
|
@ -1,37 +0,0 @@
|
||||
/* gswe-version.h: SWE-GLib version 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 __GSWE_VERSION_H__
|
||||
#define __GSWE_VERSION_H__
|
||||
|
||||
#define GSWE_MAJOR_VERSION @SWE_GLIB_MAJOR_VERSION@
|
||||
#define GSWE_MINOR_VERSION @SWE_GLIB_MINOR_VERSION@
|
||||
#define GSWE_MICRO_VERSION @SWE_GLIB_MICRO_VERSION@
|
||||
|
||||
gboolean gswe_check_version(
|
||||
guint required_major,
|
||||
guint required_minor,
|
||||
guint required_micro);
|
||||
|
||||
#define GSWE_CHECK_VERSION(major,minor,micro) \
|
||||
(GSWE_MAJOR_VERSION > (major) || \
|
||||
(GSWE_MAJOR_VERSION == (major) && GSWE_MINOR_VERSION > (minor)) || \
|
||||
(GSWE_MAJOR_VERSION == (major) && GSWE_MINOR_VERSION == (minor) && \
|
||||
GSWE_MICRO_VERSION >= (micro)))
|
||||
|
||||
#endif /* __GSWE_VERSION_H__ */
|
||||
|
@ -1,48 +0,0 @@
|
||||
/*
|
||||
* 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_PRIVATE_H__
|
||||
|
||||
#include "gswe-timestamp.h"
|
||||
#include "gswe-types.h"
|
||||
#include "gswe-moon-phase-data-private.h"
|
||||
#include "gswe-sign-info-private.h"
|
||||
#include "gswe-planet-info-private.h"
|
||||
#include "gswe-planet-data-private.h"
|
||||
#include "gswe-aspect-info-private.h"
|
||||
#include "gswe-aspect-data-private.h"
|
||||
#include "gswe-antiscion-axis-info-private.h"
|
||||
#include "gswe-antiscion-data-private.h"
|
||||
#include "gswe-house-system-info-private.h"
|
||||
#include "gswe-house-data-private.h"
|
||||
|
||||
extern gboolean gswe_initialized;
|
||||
extern gchar *gswe_ephe_path;
|
||||
extern GsweTimestamp *gswe_full_moon_base_date;
|
||||
extern GHashTable *gswe_planet_info_table;
|
||||
extern GHashTable *gswe_sign_info_table;
|
||||
extern GHashTable *gswe_house_system_info_table;
|
||||
extern GHashTable *gswe_aspect_info_table;
|
||||
extern GHashTable *gswe_antiscion_axis_info_table;
|
||||
|
||||
GsweCoordinates *gswe_coordinates_copy(GsweCoordinates *coordinates);
|
||||
|
||||
#endif /* __SWE_GLIB_PRIVATE_H__ */
|
||||
#else /* not defined __SWE_GLIB_BUILDING__ */
|
||||
#error __FILE__ "Can not be included, unless building SWE-GLib"
|
||||
#endif /* __SWE_GLIB_BUILDING__ */
|
||||
|
927
src/swe-glib.c
927
src/swe-glib.c
@ -1,927 +0,0 @@
|
||||
/* SWE-GLib - GLib style wrapper library around Astrodienst's Swiss Ephemeris
|
||||
*
|
||||
* 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.h>
|
||||
#define GETTEXT_PACKAGE "swe-glib"
|
||||
#include <glib/gi18n-lib.h>
|
||||
#include <swephexp.h>
|
||||
|
||||
#include "swe-glib.h"
|
||||
#include "swe-glib-private.h"
|
||||
|
||||
/**
|
||||
* SECTION:swe-glib
|
||||
* @short_description: Utility and initialization functions
|
||||
* @title: Utility functions
|
||||
* @stability: Stable
|
||||
* @include: swe-glib/swe-glib.h
|
||||
*
|
||||
* Basic utility and initialization functions. They don't operate on SWE-GLib's
|
||||
* objects, but on the library as a whole, including global tables.
|
||||
*/
|
||||
|
||||
/**
|
||||
* GsweError:
|
||||
* @GSWE_ERROR_SUCCESS: No error
|
||||
* @GSWE_ERROR_SWE_NONFATAL: Non-fatal Swiss Ephemeris library error
|
||||
* @GSWE_ERROR_SWE_FATAL: Fatal Swiss Ephemeris library error
|
||||
* @GSWE_ERROR_INVALID_DATE: The specified Gregorian date is invalid
|
||||
* @GSWE_ERROR_INVALID_TIME: The specified time is invalid
|
||||
* @GSWE_ERROR_NO_VALID_VALUE: the #GsweTimestamp object holds no valid values
|
||||
* @GSWE_ERROR_UNKNOWN_HSYS: the requested house system is unknown
|
||||
* @GSWE_ERROR_UNKNOWN_SIGN: an invalid zodiac sign would have been returned
|
||||
* @GSWE_ERROR_UNKNOWN_PLANET: the referenced planet was not added with
|
||||
* gswe_moment_add_planet()
|
||||
* @GSWE_ERROR_UNKNOWN_ANTISCION_AXIS: the given axis is unknown to SWE-GLib
|
||||
* @GSWE_ERROR_UNKNOWN_ASPECT: the given aspect is unknown to SWE-GLib
|
||||
*
|
||||
* Error codes returned by the SWE-GLib functions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* GSWE_ERROR:
|
||||
*
|
||||
* Error domain for SWE-GLib in general. Since 2.0, all errors generated by
|
||||
* SWE-GLib functions are from this domain. See #GError for more information on
|
||||
* error domains.
|
||||
*/
|
||||
|
||||
gboolean gswe_initialized = FALSE;
|
||||
gchar *gswe_ephe_path = NULL;
|
||||
GHashTable *gswe_planet_info_table;
|
||||
GHashTable *gswe_sign_info_table;
|
||||
GHashTable *gswe_house_system_info_table;
|
||||
GHashTable *gswe_aspect_info_table;
|
||||
GHashTable *gswe_antiscion_axis_info_table;
|
||||
GsweTimestamp *gswe_full_moon_base_date;
|
||||
static gboolean gswe_initializing = FALSE;
|
||||
|
||||
#define ADD_PLANET(ht, v, i, s, r, n, o, h) \
|
||||
(v) = gswe_planet_info_new(); \
|
||||
(v)->planet = (i); \
|
||||
(v)->sweph_id = (s); \
|
||||
(v)->real_body = (r); \
|
||||
(v)->orb = (o); \
|
||||
(v)->name = g_strdup(n); \
|
||||
(v)->points = (h); \
|
||||
g_hash_table_replace((ht), GINT_TO_POINTER(i), (v)); \
|
||||
|
||||
#define ADD_SIGN(ht, v, s, n, e, q) \
|
||||
(v) = gswe_sign_info_new(); \
|
||||
(v)->sign = (s); \
|
||||
(v)->name = g_strdup(n); \
|
||||
(v)->element = (e); \
|
||||
(v)->quality = (q); \
|
||||
g_hash_table_replace((ht), GINT_TO_POINTER(s), (v)); \
|
||||
|
||||
#define ADD_HOUSE_SYSTEM(ht, v, i, s, n) \
|
||||
(v) = gswe_house_system_info_new(); \
|
||||
(v)->house_system = i; \
|
||||
(v)->sweph_id = s; \
|
||||
(v)->name = g_strdup(n); \
|
||||
g_hash_table_replace((ht), GINT_TO_POINTER(i), (v)); \
|
||||
|
||||
#define ADD_ASPECT(ht, v, i, n, s, o, h, m) \
|
||||
(v) = gswe_aspect_info_new(); \
|
||||
(v)->aspect = (i); \
|
||||
(v)->name = g_strdup(n); \
|
||||
(v)->size = (s); \
|
||||
(v)->orb_modifier = (o); \
|
||||
(v)->harmonic = (h); \
|
||||
(v)->major = (m); \
|
||||
g_hash_table_replace((ht), GINT_TO_POINTER(i), (v)); \
|
||||
|
||||
#define ADD_ANTISCION(ht, v, hts, vs, i, n, s, m) \
|
||||
(v) = gswe_antiscion_axis_info_new(); \
|
||||
(vs) = g_hash_table_lookup((hts), GINT_TO_POINTER(i)); \
|
||||
(v)->axis = (i); \
|
||||
(v)->start_sign = (vs); \
|
||||
(v)->name = g_strdup(n); \
|
||||
(v)->sign_offset = m; \
|
||||
g_hash_table_replace((ht), GINT_TO_POINTER(i), (v)); \
|
||||
|
||||
/**
|
||||
* gswe_error_quark:
|
||||
*
|
||||
* Gets the SWE-GLib Error Quark.
|
||||
*
|
||||
* Return value: a #GQuark
|
||||
*/
|
||||
#if GLIB_CHECK_VERSION(2, 34, 0)
|
||||
G_DEFINE_QUARK(gswe-error-quark, gswe_error);
|
||||
#else
|
||||
GQuark
|
||||
gswe_error_quark(void)
|
||||
{
|
||||
return g_quark_from_static_string("gswe-error-quark");
|
||||
}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* gswe_init_with_dir:
|
||||
* @directory: the path that contains the Swiss Ephemeris data files
|
||||
*
|
||||
* Initializes the SWE-GLib library with @directory as the Swiss Ephemeris
|
||||
* data files' location. This, or gswe_init() must be called before any
|
||||
* calculations are made.
|
||||
*/
|
||||
void gswe_init_with_dir(gchar *directory)
|
||||
{
|
||||
GswePlanetInfo *planet_info;
|
||||
GsweSignInfo *sign_info;
|
||||
GsweHouseSystemInfo *house_system_info;
|
||||
GsweAspectInfo *aspect_info;
|
||||
GsweAntiscionAxisInfo *antiscion_axis_info;
|
||||
|
||||
if (gswe_initialized) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (gswe_initializing) {
|
||||
return;
|
||||
}
|
||||
|
||||
gswe_initializing = TRUE;
|
||||
|
||||
/* Before 2.36, g_type_init() must have been called. Let's do it! */
|
||||
#if !GLIB_CHECK_VERSION(2, 36, 0)
|
||||
g_type_init();
|
||||
#endif
|
||||
|
||||
bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
|
||||
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
||||
|
||||
gswe_planet_info_table = g_hash_table_new_full(
|
||||
g_direct_hash, g_direct_equal,
|
||||
NULL, (GDestroyNotify)gswe_planet_info_unref
|
||||
);
|
||||
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_ASCENDANT,
|
||||
-1,
|
||||
FALSE,
|
||||
_("Ascendant"),
|
||||
9.0,
|
||||
2
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_DESCENDANT,
|
||||
-1,
|
||||
FALSE,
|
||||
_("Descendant"),
|
||||
0.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_MC,
|
||||
-1,
|
||||
FALSE,
|
||||
_("Midheaven"),
|
||||
5.0,
|
||||
1
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_IC,
|
||||
-1,
|
||||
FALSE,
|
||||
_("Immum Coeli"),
|
||||
0.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_VERTEX,
|
||||
-1,
|
||||
FALSE,
|
||||
_("Vertex"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_ANTIVERTEX,
|
||||
-1,
|
||||
FALSE,
|
||||
_("Anti-vertex"),
|
||||
0.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_MOON_NODE,
|
||||
SE_MEAN_NODE,
|
||||
TRUE,
|
||||
_("Ascending Moon Node"),
|
||||
2.0,
|
||||
1
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_MOON_SOUTH_NODE,
|
||||
// As this is just the opposing point of the mean node,
|
||||
// we actually calculate that, and simply add 180
|
||||
// degrees when queried.
|
||||
SE_MEAN_NODE,
|
||||
TRUE,
|
||||
_("Descending Moon Node"),
|
||||
2.0,
|
||||
0);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_MOON_APOGEE,
|
||||
SE_MEAN_APOG,
|
||||
TRUE,
|
||||
_("Dark Moon"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_SUN,
|
||||
SE_SUN,
|
||||
TRUE,
|
||||
_("Sun"),
|
||||
13.0,
|
||||
2
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_MOON,
|
||||
SE_MOON,
|
||||
TRUE,
|
||||
_("Moon"),
|
||||
9.0,
|
||||
2
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_MERCURY,
|
||||
SE_MERCURY,
|
||||
TRUE,
|
||||
_("Mercury"),
|
||||
7.0,
|
||||
2
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_VENUS,
|
||||
SE_VENUS,
|
||||
TRUE,
|
||||
_("Venus"),
|
||||
7.0,
|
||||
1
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_MARS,
|
||||
SE_MARS,
|
||||
TRUE,
|
||||
_("Mars"),
|
||||
7.0,
|
||||
1
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_JUPITER,
|
||||
SE_JUPITER,
|
||||
TRUE,
|
||||
_("Jupiter"),
|
||||
9.0,
|
||||
1
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_SATURN,
|
||||
SE_SATURN,
|
||||
TRUE,
|
||||
_("Saturn"),
|
||||
7.0,
|
||||
1
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_URANUS,
|
||||
SE_URANUS,
|
||||
TRUE,
|
||||
_("Uranus"),
|
||||
5.0,
|
||||
1
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_NEPTUNE,
|
||||
SE_NEPTUNE,
|
||||
TRUE,
|
||||
_("Neptune"),
|
||||
5.0,
|
||||
1
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_PLUTO,
|
||||
SE_PLUTO,
|
||||
TRUE,
|
||||
_("Pluto"),
|
||||
3.0,
|
||||
1
|
||||
);
|
||||
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_CHIRON,
|
||||
SE_CHIRON,
|
||||
TRUE,
|
||||
_("Chiron"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_CERES,
|
||||
SE_CERES,
|
||||
TRUE,
|
||||
_("Ceres"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_PALLAS,
|
||||
SE_PALLAS,
|
||||
TRUE,
|
||||
_("Pallas"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_JUNO,
|
||||
SE_JUNO,
|
||||
TRUE,
|
||||
_("Juno"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_VESTA,
|
||||
SE_VESTA,
|
||||
TRUE,
|
||||
_("Vesta"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_PHOLUS,
|
||||
SE_PHOLUS,
|
||||
TRUE,
|
||||
_("Pholus"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_NESSUS,
|
||||
SE_AST_OFFSET + 7066,
|
||||
TRUE,
|
||||
_("Nessus"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_CHARIKLO,
|
||||
SE_AST_OFFSET + 10199,
|
||||
TRUE,
|
||||
_("Chariklo"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_SEDNA,
|
||||
SE_AST_OFFSET + 90377,
|
||||
TRUE,
|
||||
_("Sedna"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_ERIS,
|
||||
SE_AST_OFFSET + 136199,
|
||||
TRUE,
|
||||
_("Eris"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_DEJANIRA,
|
||||
SE_AST_OFFSET + 157,
|
||||
TRUE,
|
||||
_("Dejanira"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_CIRCE,
|
||||
SE_AST_OFFSET + 34,
|
||||
TRUE,
|
||||
_("Circe"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_ORCUS,
|
||||
SE_AST_OFFSET + 90482,
|
||||
TRUE,
|
||||
_("Orcus"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_ASBOLUS,
|
||||
SE_AST_OFFSET + 8405,
|
||||
TRUE,
|
||||
_("Asbolus"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
ADD_PLANET(gswe_planet_info_table, planet_info,
|
||||
GSWE_PLANET_HYGIEA,
|
||||
SE_AST_OFFSET + 10,
|
||||
TRUE,
|
||||
_("Hygiea"),
|
||||
2.0,
|
||||
0
|
||||
);
|
||||
|
||||
gswe_sign_info_table = g_hash_table_new_full(
|
||||
g_direct_hash, g_direct_equal,
|
||||
NULL, (GDestroyNotify)gswe_sign_info_unref
|
||||
);
|
||||
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_ARIES,
|
||||
_("Aries"),
|
||||
GSWE_ELEMENT_FIRE,
|
||||
GSWE_QUALITY_CARDINAL
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_TAURUS,
|
||||
_("Taurus"),
|
||||
GSWE_ELEMENT_EARTH,
|
||||
GSWE_QUALITY_FIX
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_GEMINI,
|
||||
_("Gemini"),
|
||||
GSWE_ELEMENT_AIR,
|
||||
GSWE_QUALITY_MUTABLE
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_CANCER,
|
||||
_("Cancer"),
|
||||
GSWE_ELEMENT_WATER,
|
||||
GSWE_QUALITY_CARDINAL
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_LEO,
|
||||
_("Leo"),
|
||||
GSWE_ELEMENT_FIRE,
|
||||
GSWE_QUALITY_FIX
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_VIRGO,
|
||||
_("Virgo"),
|
||||
GSWE_ELEMENT_EARTH,
|
||||
GSWE_QUALITY_MUTABLE
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_LIBRA,
|
||||
_("Libra"),
|
||||
GSWE_ELEMENT_AIR,
|
||||
GSWE_QUALITY_CARDINAL
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_SCORPIO,
|
||||
_("Scorpio"),
|
||||
GSWE_ELEMENT_WATER,
|
||||
GSWE_QUALITY_FIX
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_SAGITTARIUS,
|
||||
_("Sagittarius"),
|
||||
GSWE_ELEMENT_FIRE,
|
||||
GSWE_QUALITY_MUTABLE
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_CAPRICORN,
|
||||
_("Capricorn"),
|
||||
GSWE_ELEMENT_EARTH,
|
||||
GSWE_QUALITY_CARDINAL
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_AQUARIUS,
|
||||
_("Aquarius"),
|
||||
GSWE_ELEMENT_AIR,
|
||||
GSWE_QUALITY_FIX
|
||||
);
|
||||
ADD_SIGN(gswe_sign_info_table, sign_info,
|
||||
GSWE_SIGN_PISCES,
|
||||
_("Pisces"),
|
||||
GSWE_ELEMENT_WATER,
|
||||
GSWE_QUALITY_MUTABLE
|
||||
);
|
||||
|
||||
gswe_house_system_info_table = g_hash_table_new_full(
|
||||
g_direct_hash, g_direct_equal,
|
||||
NULL, (GDestroyNotify)gswe_house_system_info_unref
|
||||
);
|
||||
|
||||
ADD_HOUSE_SYSTEM(gswe_house_system_info_table, house_system_info,
|
||||
GSWE_HOUSE_SYSTEM_NONE,
|
||||
0,
|
||||
_("None")
|
||||
);
|
||||
ADD_HOUSE_SYSTEM(gswe_house_system_info_table, house_system_info,
|
||||
GSWE_HOUSE_SYSTEM_PLACIDUS,
|
||||
'P',
|
||||
_("Placidus")
|
||||
);
|
||||
ADD_HOUSE_SYSTEM(gswe_house_system_info_table, house_system_info,
|
||||
GSWE_HOUSE_SYSTEM_KOCH,
|
||||
'K',
|
||||
_("Koch")
|
||||
);
|
||||
ADD_HOUSE_SYSTEM(gswe_house_system_info_table, house_system_info,
|
||||
GSWE_HOUSE_SYSTEM_EQUAL,
|
||||
'E',
|
||||
_("Equal")
|
||||
);
|
||||
|
||||
gswe_aspect_info_table = g_hash_table_new_full(
|
||||
g_direct_hash, g_direct_equal,
|
||||
NULL, (GDestroyNotify)gswe_aspect_info_unref
|
||||
);
|
||||
|
||||
// Note that because all aspects must be <= 180°, GSWE_ASPECT_NONE can
|
||||
// never really exist. It is provided for name fetching purposes only.
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_NONE,
|
||||
_("None"),
|
||||
360,
|
||||
4,
|
||||
FALSE,
|
||||
FALSE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_CONJUCTION,
|
||||
_("Conjuction"),
|
||||
0,
|
||||
0,
|
||||
TRUE,
|
||||
TRUE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_OPPOSITION,
|
||||
_("Opposition"),
|
||||
180,
|
||||
0,
|
||||
TRUE,
|
||||
TRUE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_TRINE,
|
||||
_("Trine"),
|
||||
120,
|
||||
0,
|
||||
TRUE,
|
||||
TRUE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_SQUARE,
|
||||
_("Square"),
|
||||
90,
|
||||
0,
|
||||
FALSE,
|
||||
TRUE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_SEXTILE,
|
||||
_("Sextile"),
|
||||
60,
|
||||
1,
|
||||
TRUE,
|
||||
TRUE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_QUINCUNX,
|
||||
_("Quincunx"),
|
||||
150,
|
||||
2,
|
||||
FALSE,
|
||||
FALSE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_SEMISEXTILE,
|
||||
_("Semi-sextile"),
|
||||
30,
|
||||
2,
|
||||
TRUE,
|
||||
FALSE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_SEMISQUARE,
|
||||
_("Semi-square"),
|
||||
45,
|
||||
2,
|
||||
FALSE,
|
||||
FALSE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_SESQUISQUARE,
|
||||
_("Sesqui-square"),
|
||||
135,
|
||||
2,
|
||||
FALSE,
|
||||
FALSE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_QUINTILE,
|
||||
_("Quintile"),
|
||||
72,
|
||||
3,
|
||||
TRUE,
|
||||
FALSE
|
||||
);
|
||||
ADD_ASPECT(gswe_aspect_info_table, aspect_info,
|
||||
GSWE_ASPECT_BIQUINTILE,
|
||||
_("Bi-quintile"),
|
||||
144,
|
||||
3,
|
||||
TRUE,
|
||||
FALSE
|
||||
);
|
||||
|
||||
gswe_antiscion_axis_info_table = g_hash_table_new_full(
|
||||
g_direct_hash, g_direct_equal,
|
||||
NULL, (GDestroyNotify)gswe_antiscion_axis_info_unref
|
||||
);
|
||||
|
||||
ADD_ANTISCION(gswe_antiscion_axis_info_table, antiscion_axis_info,
|
||||
gswe_sign_info_table, sign_info,
|
||||
GSWE_ANTISCION_AXIS_NONE,
|
||||
_("None"),
|
||||
GSWE_SIGN_NONE,
|
||||
0.0
|
||||
);
|
||||
ADD_ANTISCION(gswe_antiscion_axis_info_table, antiscion_axis_info,
|
||||
gswe_sign_info_table, sign_info,
|
||||
GSWE_ANTISCION_AXIS_ARIES,
|
||||
_("Aries/Libra"),
|
||||
GSWE_SIGN_ARIES,
|
||||
0.0
|
||||
);
|
||||
ADD_ANTISCION(gswe_antiscion_axis_info_table, antiscion_axis_info,
|
||||
gswe_sign_info_table, sign_info,
|
||||
GSWE_ANTISCION_AXIS_MID_TAURUS,
|
||||
_("mid Taurus/Scorpio"),
|
||||
GSWE_SIGN_TAURUS,
|
||||
15.0
|
||||
);
|
||||
ADD_ANTISCION(gswe_antiscion_axis_info_table, antiscion_axis_info,
|
||||
gswe_sign_info_table, sign_info,
|
||||
GSWE_ANTISCION_AXIS_CANCER,
|
||||
_("Cancer/Capricorn"),
|
||||
GSWE_SIGN_CANCER,
|
||||
0.0
|
||||
);
|
||||
ADD_ANTISCION(gswe_antiscion_axis_info_table, antiscion_axis_info,
|
||||
gswe_sign_info_table, sign_info,
|
||||
GSWE_ANTISCION_AXIS_MID_LEO,
|
||||
_("mid Leo/Aquarius"),
|
||||
GSWE_SIGN_LEO,
|
||||
15.0
|
||||
);
|
||||
|
||||
gswe_full_moon_base_date = gswe_timestamp_new_from_gregorian_full(
|
||||
2005, 5, 8,
|
||||
3, 48, 0, 0,
|
||||
0.0
|
||||
);
|
||||
|
||||
gswe_ephe_path = g_strdup(directory);
|
||||
swe_set_ephe_path(directory);
|
||||
gswe_initialized = TRUE;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_init:
|
||||
*
|
||||
* Initializes the SWE-GLib library. It must be called before any calculations
|
||||
* are made.
|
||||
*/
|
||||
void
|
||||
gswe_init(void)
|
||||
{
|
||||
gswe_init_with_dir(PKGDATADIR);
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_find_planet_info_by_id:
|
||||
* @planet: a planet ID registered with SWE-GLib
|
||||
* @err: a GError
|
||||
*
|
||||
* Find the #GswePlanetInfo record registered with the id @planet.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
GswePlanetInfo *
|
||||
gswe_find_planet_info_by_id(GswePlanet planet, GError **err)
|
||||
{
|
||||
GswePlanetInfo *ret = g_hash_table_lookup(
|
||||
gswe_planet_info_table,
|
||||
GINT_TO_POINTER(planet)
|
||||
);
|
||||
|
||||
if (ret == NULL) {
|
||||
g_set_error(
|
||||
err,
|
||||
GSWE_ERROR, GSWE_ERROR_UNKNOWN_PLANET,
|
||||
"Planet %d is not registered", planet
|
||||
);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_find_sign_info_by_id:
|
||||
* @sign: a sign ID registered with SWE-GLib
|
||||
* @err: a GError
|
||||
*
|
||||
* Find the #GsweSignInfo record registered with the id @sign.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
GsweSignInfo *
|
||||
gswe_find_sign_info_by_id(GsweZodiac sign, GError **err)
|
||||
{
|
||||
GsweSignInfo *ret = g_hash_table_lookup(
|
||||
gswe_sign_info_table,
|
||||
GINT_TO_POINTER(sign)
|
||||
);
|
||||
|
||||
if (ret == NULL) {
|
||||
g_set_error(
|
||||
err,
|
||||
GSWE_ERROR, GSWE_ERROR_UNKNOWN_SIGN,
|
||||
"Sign %d is not registered", sign
|
||||
);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_find_house_system_info_by_id:
|
||||
* @house_system: a house system ID registered with SWE-GLib
|
||||
* @err: a GError
|
||||
*
|
||||
* Find the #GsweHouseSystemInfo record registered with the id @house_system.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
GsweHouseSystemInfo *
|
||||
gswe_find_house_system_info_by_id(GsweHouseSystem house_system, GError **err)
|
||||
{
|
||||
GsweHouseSystemInfo *ret = g_hash_table_lookup(
|
||||
gswe_house_system_info_table,
|
||||
GINT_TO_POINTER(house_system)
|
||||
);
|
||||
|
||||
if (ret == NULL) {
|
||||
g_set_error(
|
||||
err,
|
||||
GSWE_ERROR, GSWE_ERROR_UNKNOWN_HSYS,
|
||||
"House system %d is not registered", house_system
|
||||
);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_find_aspect_info_by_id:
|
||||
* @aspect: an aspect ID registered with SWE-GLib
|
||||
* @err: a GError
|
||||
*
|
||||
* Find the #GsweAspectInfo record registered with the id @aspect.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
GsweAspectInfo *
|
||||
gswe_find_aspect_info_by_id(GsweAspect aspect, GError **err)
|
||||
{
|
||||
GsweAspectInfo *ret = g_hash_table_lookup(
|
||||
gswe_aspect_info_table,
|
||||
GINT_TO_POINTER(aspect)
|
||||
);
|
||||
|
||||
if (ret == NULL) {
|
||||
g_set_error(
|
||||
err,
|
||||
GSWE_ERROR, GSWE_ERROR_UNKNOWN_ASPECT,
|
||||
"Aspect system %d is not registered", aspect
|
||||
);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_find_antiscion_axis_info_by_id:
|
||||
* @antiscion_axis: an antiscion axis ID registered with SWE-GLib
|
||||
* @err: a GError
|
||||
*
|
||||
* Find the #GsweAntiscionAxisInfo record registered with the id
|
||||
* @antiscion_axis.
|
||||
*
|
||||
* Since: 2.1
|
||||
*/
|
||||
GsweAntiscionAxisInfo *
|
||||
gswe_find_antiscion_axis_info_by_id(
|
||||
GsweAntiscionAxis antiscion_axis,
|
||||
GError **err)
|
||||
{
|
||||
GsweAntiscionAxisInfo *ret = g_hash_table_lookup(
|
||||
gswe_antiscion_axis_info_table,
|
||||
GINT_TO_POINTER(antiscion_axis)
|
||||
);
|
||||
|
||||
if (ret == NULL) {
|
||||
g_set_error(
|
||||
err,
|
||||
GSWE_ERROR, GSWE_ERROR_UNKNOWN_ANTISCION_AXIS,
|
||||
"Antiscion axis system %d is not registered", antiscion_axis
|
||||
);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_all_house_systems:
|
||||
*
|
||||
* Returns: (element-type GsweHouseSystemInfo) (transfer container):
|
||||
* All #GsweHouseSystemInfo registered with SWE-GLib. The elements of
|
||||
* this list should not be modified nor freed. The list is only valid
|
||||
* until a new house system is registered.
|
||||
*
|
||||
* Since: 2.1.0
|
||||
*/
|
||||
GList *
|
||||
gswe_all_house_systems(void)
|
||||
{
|
||||
return g_hash_table_get_values(gswe_house_system_info_table);
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_all_planets:
|
||||
*
|
||||
* Returns: (element-type GswePlanetInfo) (transfer container): All
|
||||
* #GswePlanetInfo registered with SWE-GLib. The elements of this list
|
||||
* should not be modified nor freed. The list is only valid until a
|
||||
* new planet is registered.
|
||||
*
|
||||
* Since: 2.1.0
|
||||
*/
|
||||
GList *
|
||||
gswe_all_planets(void)
|
||||
{
|
||||
return g_hash_table_get_values(gswe_planet_info_table);
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_all_aspects:
|
||||
*
|
||||
* Returns: (element-type GsweAspectInfo) (transfer container): All
|
||||
* #GsweAspectInfo registered with SWE-GLib. The elements of this list
|
||||
* should not be modified nor freed. The list is only valid until a
|
||||
* new aspect is registered.
|
||||
*
|
||||
* Since: 2.1.0
|
||||
*/
|
||||
GList *
|
||||
gswe_all_aspects(void)
|
||||
{
|
||||
return g_hash_table_get_values(gswe_aspect_info_table);
|
||||
}
|
||||
|
||||
/**
|
||||
* gswe_all_antiscion_axes:
|
||||
*
|
||||
* Returns: (element-type GsweAntiscionAxisInfo) (transfer container):
|
||||
* All #GsweAntiscionAxisInfo registered with SWE-GLib. The elements
|
||||
* of this list should not be modified nor freed. The list is only
|
||||
* valid until a new antiscion axis is registered.
|
||||
*
|
||||
* Since: 2.1.0
|
||||
*/
|
||||
GList *
|
||||
gswe_all_antiscion_axes(void)
|
||||
{
|
||||
return g_hash_table_get_values(gswe_antiscion_axis_info_table);
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
/* SWE-GLib - GLib style wrapper library around Astrodienst's Swiss Ephemeris
|
||||
*
|
||||
* 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_H__
|
||||
#define __SWE_GLIB_H__
|
||||
|
||||
#include <glib.h>
|
||||
#include "gswe-types.h"
|
||||
#include "gswe-moon-phase-data.h"
|
||||
#include "gswe-sign-info.h"
|
||||
#include "gswe-planet-info.h"
|
||||
#include "gswe-planet-data.h"
|
||||
#include "gswe-aspect-info.h"
|
||||
#include "gswe-aspect-data.h"
|
||||
#include "gswe-antiscion-axis-info.h"
|
||||
#include "gswe-antiscion-data.h"
|
||||
#include "gswe-house-system-info.h"
|
||||
#include "gswe-house-data.h"
|
||||
#include "gswe-timestamp.h"
|
||||
#include "gswe-moment.h"
|
||||
#include "gswe-enumtypes.h"
|
||||
|
||||
typedef enum {
|
||||
GSWE_ERROR_SUCCESS,
|
||||
GSWE_ERROR_SWE_NONFATAL,
|
||||
GSWE_ERROR_SWE_FATAL,
|
||||
GSWE_ERROR_INVALID_DATE,
|
||||
GSWE_ERROR_INVALID_TIME,
|
||||
GSWE_ERROR_NO_VALID_VALUE,
|
||||
GSWE_ERROR_UNKNOWN_HSYS,
|
||||
GSWE_ERROR_UNKNOWN_SIGN,
|
||||
GSWE_ERROR_UNKNOWN_PLANET,
|
||||
GSWE_ERROR_UNKNOWN_ANTISCION_AXIS,
|
||||
GSWE_ERROR_UNKNOWN_ASPECT,
|
||||
} GsweError;
|
||||
|
||||
#define GSWE_ERROR gswe_error_quark()
|
||||
GQuark gswe_error_quark(void);
|
||||
|
||||
void gswe_init();
|
||||
|
||||
GswePlanetInfo *gswe_find_planet_info_by_id(GswePlanet planet, GError **err);
|
||||
|
||||
GsweSignInfo *gswe_find_sign_info_by_id(GsweZodiac sign, GError **err);
|
||||
|
||||
GsweHouseSystemInfo *gswe_find_house_system_info_by_id(
|
||||
GsweHouseSystem house_system,
|
||||
GError **err);
|
||||
|
||||
GsweAspectInfo *gswe_find_aspect_info_by_id(GsweAspect aspect, GError **err);
|
||||
|
||||
GsweAntiscionAxisInfo *gswe_find_antiscion_axis_info_by_id(
|
||||
GsweAntiscionAxis antiscion_axis,
|
||||
GError **err);
|
||||
|
||||
GList *gswe_all_house_systems(void);
|
||||
|
||||
GList *gswe_all_planets(void);
|
||||
|
||||
GList *gswe_all_aspects(void);
|
||||
|
||||
GList *gswe_all_antiscion_axes(void);
|
||||
|
||||
#endif /* __SWE_GLIB_H__ */
|
69
stylesheets/pygment_trac.css
Normal file
69
stylesheets/pygment_trac.css
Normal file
@ -0,0 +1,69 @@
|
||||
.highlight { background: #ffffff; }
|
||||
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
.highlight .k { font-weight: bold } /* Keyword */
|
||||
.highlight .o { font-weight: bold } /* Operator */
|
||||
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
||||
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #999999 } /* Generic.Heading */
|
||||
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
||||
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
||||
.highlight .go { color: #888888 } /* Generic.Output */
|
||||
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
|
||||
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
||||
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
||||
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .m { color: #009999 } /* Literal.Number */
|
||||
.highlight .s { color: #d14 } /* Literal.String */
|
||||
.highlight .na { color: #008080 } /* Name.Attribute */
|
||||
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
||||
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #008080 } /* Name.Constant */
|
||||
.highlight .ni { color: #800080 } /* Name.Entity */
|
||||
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
||||
.highlight .nn { color: #555555 } /* Name.Namespace */
|
||||
.highlight .nt { color: #000080 } /* Name.Tag */
|
||||
.highlight .nv { color: #008080 } /* Name.Variable */
|
||||
.highlight .ow { font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
||||
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
||||
|
||||
.type-csharp .highlight .k { color: #0000FF }
|
||||
.type-csharp .highlight .kt { color: #0000FF }
|
||||
.type-csharp .highlight .nf { color: #000000; font-weight: normal }
|
||||
.type-csharp .highlight .nc { color: #2B91AF }
|
||||
.type-csharp .highlight .nn { color: #000000 }
|
||||
.type-csharp .highlight .s { color: #A31515 }
|
||||
.type-csharp .highlight .sc { color: #A31515 }
|
581
stylesheets/stylesheet.css
Normal file
581
stylesheets/stylesheet.css
Normal file
@ -0,0 +1,581 @@
|
||||
/* http://meyerweb.com/eric/tools/css/reset/
|
||||
v2.0 | 20110126
|
||||
License: none (public domain)
|
||||
*/
|
||||
|
||||
html, body, div, span, applet, object, iframe,
|
||||
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
|
||||
a, abbr, acronym, address, big, cite, code,
|
||||
del, dfn, em, img, ins, kbd, q, s, samp,
|
||||
small, strike, strong, sub, sup, tt, var,
|
||||
b, u, i, center,
|
||||
dl, dt, dd, ol, ul, li,
|
||||
fieldset, form, label, legend,
|
||||
table, caption, tbody, tfoot, thead, tr, th, td,
|
||||
article, aside, canvas, details, embed,
|
||||
figure, figcaption, footer, header, hgroup,
|
||||
menu, nav, output, ruby, section, summary,
|
||||
time, mark, audio, video {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
border: 0;
|
||||
font-size: 100%;
|
||||
font: inherit;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
/* HTML5 display-role reset for older browsers */
|
||||
article, aside, details, figcaption, figure,
|
||||
footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
body {
|
||||
line-height: 1;
|
||||
}
|
||||
ol, ul {
|
||||
list-style: none;
|
||||
}
|
||||
blockquote, q {
|
||||
quotes: none;
|
||||
}
|
||||
blockquote:before, blockquote:after,
|
||||
q:before, q:after {
|
||||
content: '';
|
||||
content: none;
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
/* Style */
|
||||
|
||||
body {
|
||||
font-size: 15px;
|
||||
font-family: Arial, Arial, Helvetica, sans-serif;
|
||||
line-height: 1.5;
|
||||
background: #D1D1D1;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #63a52a;
|
||||
text-decoration: none;
|
||||
-webkit-transition: color ease-in-out 0.3s;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
color: #90D355;
|
||||
}
|
||||
|
||||
h1.title {
|
||||
margin: 30px 20px 10px;
|
||||
font-size: 60px;
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
font-family:Georgia, serif;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
width: 675px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
#container {
|
||||
border: 1px solid #2a2a2a;
|
||||
background: #ddd url(../images/pattern.png);
|
||||
box-shadow: 0 0 5px #b1b1b1;
|
||||
}
|
||||
|
||||
p.tagline {
|
||||
padding: 20px 20px 0;
|
||||
color: #fff;
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
#main {
|
||||
margin-top: 20px;
|
||||
padding: 0 20px 90px;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.download-bar {
|
||||
background: #222;
|
||||
border: 5px solid #444;
|
||||
padding: 10px;
|
||||
margin: 0 -35px 20px;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.download-bar .inner {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.download-bar .watch-fork iframe {
|
||||
display: block;
|
||||
float: left;
|
||||
border-right: 1px solid #ddd;
|
||||
padding-right: 5px;
|
||||
}
|
||||
.download-bar .watch-fork iframe.last {
|
||||
border-right: 0 none;
|
||||
padding-right: 0;
|
||||
padding-left: 5px;
|
||||
border-left: 1px solid #fff;
|
||||
}
|
||||
.download-bar .watch-fork {
|
||||
overflow: hidden;
|
||||
float: right;
|
||||
background-color: #eee;
|
||||
padding: 5px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.download-bar .blc {
|
||||
border: 10px solid black;
|
||||
border-color: transparent transparent black;
|
||||
width: 0;
|
||||
height: 0;
|
||||
display: block;
|
||||
position: absolute;
|
||||
bottom: -15px;
|
||||
left: 0;
|
||||
-moz-transform: rotate(45deg);
|
||||
-webkit-transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.download-bar .trc {
|
||||
border: 10px solid black;
|
||||
border-color: black transparent transparent;
|
||||
width: 0;
|
||||
height: 0;
|
||||
display: block;
|
||||
position: absolute;
|
||||
top: -15px;
|
||||
right: 0;
|
||||
-moz-transform: rotate(45deg);
|
||||
-webkit-transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.download-bar .avatar {
|
||||
border: 1px solid black;
|
||||
display: block;
|
||||
padding: 4px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.download-bar .avatar img {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.download-bar a.code {
|
||||
background: transparent url(../images/code.png) no-repeat 0 2px;
|
||||
padding-left: 35px;
|
||||
margin-top: 8px;
|
||||
display: block;
|
||||
float: left;
|
||||
text-indent: 0;
|
||||
width: auto;
|
||||
height: auto;
|
||||
opacity: 1;
|
||||
-moz-opacity: 1;
|
||||
filter:alpha(opacity=1);
|
||||
}
|
||||
|
||||
.current-section {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 50%;
|
||||
width: 693px;
|
||||
margin-left: -352px;
|
||||
background: #222;
|
||||
border: 5px solid #444;
|
||||
color: #fff;
|
||||
opacity: 0;
|
||||
visibility: hidden;
|
||||
-webkit-transition: opacity ease-in-out 0.3s;
|
||||
}
|
||||
|
||||
.current-section p {
|
||||
padding: 5px 27px;
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.current-section a {
|
||||
float: right;
|
||||
text-indent: -10000px;
|
||||
background: transparent url(../images/top.png) no-repeat 0 0;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
opacity: 0.8;
|
||||
margin-right: 12px;
|
||||
margin-top: 12px;
|
||||
-moz-opacity: 0.8;
|
||||
filter:alpha(opacity=8);
|
||||
-webkit-transition: opacity ease-in-out 0.3s;
|
||||
}
|
||||
|
||||
.current-section a:hover {
|
||||
opacity: 1;
|
||||
-moz-opacity: 1;
|
||||
filter:alpha(opacity=1);
|
||||
}
|
||||
|
||||
.current-section a.zip {
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
a.zip,
|
||||
a.zip span {
|
||||
background: transparent url(../images/zip.png) no-repeat 0 0;
|
||||
width: 30px;
|
||||
height: 21px;
|
||||
opacity: 0.8;
|
||||
display: inline-block;
|
||||
text-indent: -10000px;
|
||||
-moz-opacity: 0.8;
|
||||
filter:alpha(opacity=8);
|
||||
-webkit-transition: opacity ease-in-out 0.3s;
|
||||
}
|
||||
|
||||
a.tar,
|
||||
a.tar span {
|
||||
background: transparent url(../images/tar.png) no-repeat 0 0;
|
||||
width: 30px;
|
||||
height: 21px;
|
||||
opacity: 0.8;
|
||||
display: inline-block;
|
||||
text-indent: -10000px;
|
||||
-moz-opacity: 0.8;
|
||||
filter:alpha(opacity=8);
|
||||
-webkit-transition: opacity ease-in-out 0.3s;
|
||||
}
|
||||
|
||||
a.code {
|
||||
background: transparent url(../images/code.png) no-repeat 0 2px;
|
||||
width: 30px;
|
||||
height: 21px;
|
||||
display: block;
|
||||
opacity: 0.8;
|
||||
display: inline-block;
|
||||
text-indent: -10000px;
|
||||
-moz-opacity: 0.8;
|
||||
filter:alpha(opacity=8);
|
||||
-webkit-transition: opacity ease-in-out 0.3s;
|
||||
}
|
||||
|
||||
a.zip:hover,
|
||||
a.tar:hover,
|
||||
a.code:hover {
|
||||
opacity: 1;
|
||||
-moz-opacity: 1;
|
||||
filter:alpha(opacity=1);
|
||||
}
|
||||
|
||||
a.download-button {
|
||||
border: 1px solid black;
|
||||
border-radius: 3px;
|
||||
display: inline-block;
|
||||
text-indent: 0!important;
|
||||
width: auto;
|
||||
float: right;
|
||||
background: #999; /* for non-css3 browsers */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#37ADD4', endColorstr='#1B657E'); /* for IE */
|
||||
background: -webkit-gradient(linear, left top, left bottom, from(#37ADD4), to(#1B657E)); /* for webkit browsers */
|
||||
background: -moz-linear-gradient(top, #37ADD4, #1B657E); /* for firefox 3.6+ */
|
||||
height: auto;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
a.download-button span {
|
||||
background-position: 10px 5px;
|
||||
width: auto;
|
||||
height: auto;
|
||||
padding: 5px 10px;
|
||||
padding-left: 45px;
|
||||
display: inline-block;
|
||||
text-indent: 0!important;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
footer {
|
||||
margin-bottom: 60px;
|
||||
padding-bottom: 60px;
|
||||
}
|
||||
|
||||
footer .owner {
|
||||
background: #222;
|
||||
border: 5px solid #444;
|
||||
padding: 5px 15px;
|
||||
margin: -67px -10px 35px;
|
||||
color: #d6d6d6;
|
||||
}
|
||||
|
||||
footer .creds small {
|
||||
float: right;
|
||||
font-size: 10px;
|
||||
text-align: right;
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
footer .owner .avatar {
|
||||
background-color: #666;
|
||||
display: block;
|
||||
margin: -19px 10px 0 0;
|
||||
width: 60px;
|
||||
float: left;
|
||||
}
|
||||
|
||||
footer .owner img {
|
||||
display: block;
|
||||
border: 1px solid #2a2a2a;
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
footer .owner p {
|
||||
font-family:Georgia, serif;
|
||||
}
|
||||
|
||||
footer .owner p a {
|
||||
font-size: 16px;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
/* Markdown */
|
||||
.markdown-body h1,
|
||||
.markdown-body h2,
|
||||
.markdown-body h3,
|
||||
.markdown-body h4,
|
||||
.markdown-body h5,
|
||||
.markdown-body h6,
|
||||
.markdown-body p,
|
||||
.markdown-body pre,
|
||||
.markdown-body ul,
|
||||
.markdown-body ol,
|
||||
.markdown-body dl,
|
||||
.markdown-body table,
|
||||
.markdown-body blockquote {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.markdown-body h1,
|
||||
.markdown-body h2,
|
||||
.markdown-body h3,
|
||||
.markdown-body h4,
|
||||
.markdown-body h5,
|
||||
.markdown-body h6 {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
font-size: 28px;
|
||||
}
|
||||
|
||||
.markdown-body h2 {
|
||||
font-size: 24px;
|
||||
color: #557398;
|
||||
}
|
||||
|
||||
.markdown-body h3 {
|
||||
font-size: 20px;
|
||||
}
|
||||
|
||||
.markdown-body h4 {
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.markdown-body h5 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.markdown-body pre {
|
||||
padding: 10px 70px 10px 0;
|
||||
margin-left: -20px;
|
||||
margin-right: -20px;
|
||||
font-family: 'Monaco', 'Lucida Console', monospace;
|
||||
font-size: 13px;
|
||||
line-height: 20px;
|
||||
box-shadow: inset 0 0 5px #000;
|
||||
word-wrap: break-word;
|
||||
background-color:#3b3b3b;
|
||||
color: #d6d6d6;
|
||||
}
|
||||
|
||||
.markdown-body pre.lines {
|
||||
font-size: 12px;
|
||||
margin:0 10px 0 -20px;
|
||||
padding: 10px;
|
||||
float: left;
|
||||
display: block;
|
||||
text-align: right;
|
||||
box-shadow: none;
|
||||
background-color:#2a2a2a;
|
||||
color: #d6d6d6;
|
||||
}
|
||||
|
||||
.markdown-body ul,
|
||||
.markdown-body ol {
|
||||
padding-left: 30px;
|
||||
}
|
||||
|
||||
.markdown-body ul {
|
||||
list-style-type: disc;
|
||||
}
|
||||
|
||||
.markdown-body li,
|
||||
.markdown-body li p,
|
||||
.markdown-body dd,
|
||||
.markdown-body dd p {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.markdown-body li pre,
|
||||
.markdown-body li pre.lines,
|
||||
.markdown-body dd pre,
|
||||
.markdown-body dd pre.lines {
|
||||
margin-left: -35px;
|
||||
}
|
||||
|
||||
.markdown-body dt {
|
||||
font-weight: bold;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.markdown-body dd {
|
||||
margin-left: 15px;
|
||||
}
|
||||
|
||||
.markdown-body table {
|
||||
width: 673px;
|
||||
margin-left: -20px;
|
||||
margin-right: -20px;
|
||||
}
|
||||
|
||||
.markdown-body tbody {
|
||||
border-top: 2px solid #557398;
|
||||
border-bottom: 2px solid #557398;
|
||||
background-color: #EBEFF4;
|
||||
}
|
||||
|
||||
.markdown-body table td * {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown-body td {
|
||||
border-right: 1px solid #557398;
|
||||
border-bottom: 1px solid #557398;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.markdown-body td:first-child,
|
||||
.markdown-body th:first-child {
|
||||
width: 30%;
|
||||
padding-left: 20px;
|
||||
}
|
||||
|
||||
.markdown-body td:last-child {
|
||||
border-right: 0 none;
|
||||
}
|
||||
|
||||
.markdown-body th {
|
||||
font-size: 18px;
|
||||
font-weight: bold;
|
||||
text-align: left;
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
.markdown-body tt {
|
||||
background-color:#3b3b3b;
|
||||
color: #d6d6d6;
|
||||
padding: 2px 3px;
|
||||
}
|
||||
|
||||
.markdown-body blockquote {
|
||||
font-style: italic;
|
||||
font-family:Georgia, serif;
|
||||
font-size: 17px;
|
||||
border-top: 3px solid #333;
|
||||
border-bottom: 3px solid #333;
|
||||
padding: 10px 20px;
|
||||
padding-left: 50px;
|
||||
}
|
||||
|
||||
.markdown-body blockquote:before {
|
||||
font-style: italic;
|
||||
font-family: Georgia, serif;
|
||||
font-size: 90px;
|
||||
height: 90px;
|
||||
margin-left: -60px;
|
||||
margin-top: -25px;
|
||||
content: "‟";
|
||||
display: block;
|
||||
float: left;
|
||||
}
|
||||
|
||||
.markdown-body img {
|
||||
max-width: 100%;
|
||||
@include box-sizing(border-box);
|
||||
}
|
||||
|
||||
.highlight { background: #ffffff; }
|
||||
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
||||
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
||||
.highlight .k { font-weight: bold } /* Keyword */
|
||||
.highlight .o { font-weight: bold } /* Operator */
|
||||
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
||||
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
||||
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
||||
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
||||
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
||||
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
||||
.highlight .ge { font-style: italic } /* Generic.Emph */
|
||||
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
||||
.highlight .gh { color: #999999 } /* Generic.Heading */
|
||||
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
||||
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
||||
.highlight .go { color: #888888 } /* Generic.Output */
|
||||
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
||||
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
||||
.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
|
||||
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
||||
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
||||
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
||||
.highlight .kn { font-weight: bold } /* Keyword.Namespace */
|
||||
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
||||
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
||||
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
||||
.highlight .m { color: #009999 } /* Literal.Number */
|
||||
.highlight .s { color: #d14 } /* Literal.String */
|
||||
.highlight .na { color: #008080 } /* Name.Attribute */
|
||||
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
||||
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
||||
.highlight .no { color: #008080 } /* Name.Constant */
|
||||
.highlight .ni { color: #800080 } /* Name.Entity */
|
||||
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
||||
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
||||
.highlight .nn { color: #555555 } /* Name.Namespace */
|
||||
.highlight .nt { color: #000080 } /* Name.Tag */
|
||||
.highlight .nv { color: #008080 } /* Name.Variable */
|
||||
.highlight .ow { font-weight: bold } /* Operator.Word */
|
||||
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
||||
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
||||
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
||||
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
||||
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
||||
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
||||
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
||||
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
||||
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
||||
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
||||
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
||||
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
||||
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
||||
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
||||
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
||||
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
||||
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
||||
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
||||
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
||||
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
||||
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
132
swe-glib.mk
132
swe-glib.mk
@ -1,132 +0,0 @@
|
||||
# SWE-GLib - GLib wrapper around the Swiss Ephemeris library
|
||||
|
||||
GTESTER = gtester
|
||||
GTESTER_REPORT = gtester-report
|
||||
NULL =
|
||||
|
||||
# initialize variables for unconditional += appending
|
||||
BUILT_SOURCES =
|
||||
BUILT_EXTRA_DIST =
|
||||
CLEANFILES = *.log *.trs
|
||||
DISTCLEANFILES =
|
||||
MAINTAINERCLEANFILES =
|
||||
EXTRA_DIST =
|
||||
TEST_PROGS =
|
||||
|
||||
noinst_LTLIBRARIES =
|
||||
noinst_PROGRAMS =
|
||||
noinst_SCRIPTS =
|
||||
noinst_DATA =
|
||||
|
||||
check_LTLIBRARIES =
|
||||
check_PROGRAMS =
|
||||
check_SCRIPTS =
|
||||
check_DATA =
|
||||
|
||||
TESTS =
|
||||
|
||||
# test-nonrecursive: run tests only in cwd
|
||||
if OS_UNIX
|
||||
test-nonrecursive: ${TEST_PROGS}
|
||||
@test -z "${TEST_PROGS}" || G_TEST_SRCDIR="$(abs_srcdir)" G_TEST_BUILDDIR="$(abs_builddir)" G_DEBUG=gc-friendly MALLOC_CHECK_=2 MALLOC_PERTURB_=$$(($${RANDOM:-256} % 256)) ${GTESTER} --verbose ${TEST_PROGS}
|
||||
else
|
||||
test-nonrecursive:
|
||||
endif
|
||||
|
||||
.PHONY: test-nonrecursive
|
||||
|
||||
.PHONY: lcov genlcov lcov-clean
|
||||
# use recursive makes in order to ignore errors during check
|
||||
lcov:
|
||||
-$(MAKE) $(AM_MAKEFLAGS) -k check
|
||||
$(MAKE) $(AM_MAKEFLAGS) genlcov
|
||||
|
||||
# we have to massage the lcov.info file slightly to hide the effect of libtool
|
||||
# placing the objects files in the .libs/ directory separate from the *.c
|
||||
# we also have to delete tests/.libs/libmoduletestplugin_*.gcda
|
||||
genlcov:
|
||||
$(AM_V_GEN) rm -f $(top_builddir)/tests/.libs/libmoduletestplugin_*.gcda; \
|
||||
$(LTP) --quiet --directory $(top_builddir) --capture --output-file swe-glib-lcov.info --test-name SWE_GLIB_PERF --no-checksum --compat-libtool --ignore-errors source; \
|
||||
$(LTP) --quiet --output-file swe-glib-lcov.info --remove swe-glib-lcov.info docs/reference/\* /tmp/\* gio/tests/gdbus-object-manager-example/\* ; \
|
||||
LANG=C $(LTP_GENHTML) --quiet --prefix $(top_builddir) --output-directory swe-glib-lcov --title "SWE-GLib Code Coverage" --legend --frames --show-details swe-glib-lcov.info --ignore-errors source
|
||||
@echo "file://$(abs_top_builddir)/swe-glib-lcov/index.html"
|
||||
|
||||
lcov-clean:
|
||||
if test -n "$(LTP)"; then \
|
||||
$(LTP) --quiet --directory $(top_builddir) -z; \
|
||||
fi
|
||||
|
||||
# run tests in cwd as part of make check
|
||||
check-local: test-nonrecursive
|
||||
|
||||
# We support a fairly large range of possible variables. It is expected that all types of files in a test suite
|
||||
# will belong in exactly one of the following variables.
|
||||
#
|
||||
# First, we support the usual automake suffixes, but in lowercase, with the customary meaning:
|
||||
#
|
||||
# test_programs, test_scripts, test_data, test_ltlibraries
|
||||
#
|
||||
# The above are used to list files that are involved in both uninstalled and installed testing. The
|
||||
# test_programs and test_scripts are taken to be actual testcases and will be run as part of the test suite.
|
||||
# Note that _data is always used with the nobase_ automake variable name to ensure that installed test data is
|
||||
# installed in the same way as it appears in the package layout.
|
||||
#
|
||||
# In order to mark a particular file as being only for one type of testing, use 'installed' or 'uninstalled',
|
||||
# like so:
|
||||
#
|
||||
# installed_test_programs, uninstalled_test_programs
|
||||
# installed_test_scripts, uninstalled_test_scripts
|
||||
# installed_test_data, uninstalled_test_data
|
||||
# installed_test_ltlibraries, uninstalled_test_ltlibraries
|
||||
#
|
||||
# Additionally, we support 'extra' infixes for programs and scripts. This is used for support programs/scripts
|
||||
# that should not themselves be run as testcases (but exist to be used from other testcases):
|
||||
#
|
||||
# test_extra_programs, installed_test_extra_programs, uninstalled_test_extra_programs
|
||||
# test_extra_scripts, installed_test_extra_scripts, uninstalled_test_extra_scripts
|
||||
#
|
||||
# Additionally, for _scripts and _data, we support the customary dist_ prefix so that the named script or data
|
||||
# file automatically end up in the tarball.
|
||||
#
|
||||
# dist_test_scripts, dist_test_data, dist_test_extra_scripts
|
||||
# dist_installed_test_scripts, dist_installed_test_data, dist_installed_test_extra_scripts
|
||||
# dist_uninstalled_test_scripts, dist_uninstalled_test_data, dist_uninstalled_test_extra_scripts
|
||||
#
|
||||
# Note that no file is automatically disted unless it appears in one of the dist_ variables. This follows the
|
||||
# standard automake convention of not disting programs scripts or data by default.
|
||||
#
|
||||
# test_programs, test_scripts, uninstalled_test_programs and uninstalled_test_scripts (as well as their disted
|
||||
# variants) will be run as part of the in-tree 'make check'. These are all assumed to be runnable under
|
||||
# gtester. That's a bit strange for scripts, but it's possible.
|
||||
|
||||
# we use test -z "$(TEST_PROGS)" above, so make sure we have no extra whitespace...
|
||||
TEST_PROGS += $(strip $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
|
||||
$(dist_test_scripts) $(dist_uninstalled_test_scripts))
|
||||
|
||||
if OS_WIN32
|
||||
TESTS += $(test_programs) $(test_scripts) $(uninstalled_test_programs) $(uninstalled_test_scripts) \
|
||||
$(dist_test_scripts) $(dist_uninstalled_test_scripts)
|
||||
endif
|
||||
|
||||
# Note: build even the installed-only targets during 'make check' to ensure that they still work.
|
||||
# We need to do a bit of trickery here and manage disting via EXTRA_DIST instead of using dist_ prefixes to
|
||||
# prevent automake from mistreating gmake functions like $(wildcard ...) and $(addprefix ...) as if they were
|
||||
# filenames, including removing duplicate instances of the opening part before the space, eg. '$(addprefix'.
|
||||
all_test_programs = $(test_programs) $(uninstalled_test_programs) $(installed_test_programs) \
|
||||
$(test_extra_programs) $(uninstalled_test_extra_programs) $(installed_test_extra_programs)
|
||||
all_test_scripts = $(test_scripts) $(uninstalled_test_scripts) $(installed_test_scripts) \
|
||||
$(test_extra_scripts) $(uninstalled_test_extra_scripts) $(installed_test_extra_scripts)
|
||||
all_dist_test_scripts = $(dist_test_scripts) $(dist_uninstalled_test_scripts) $(dist_installed_test_scripts) \
|
||||
$(dist_test_extra_scripts) $(dist_uninstalled_test_extra_scripts) $(dist_installed_test_extra_scripts)
|
||||
all_test_scripts += $(all_dist_test_scripts)
|
||||
EXTRA_DIST += $(all_dist_test_scripts)
|
||||
all_test_data = $(test_data) $(uninstalled_test_data) $(installed_test_data)
|
||||
all_dist_test_data = $(dist_test_data) $(dist_uninstalled_test_data) $(dist_installed_test_data)
|
||||
all_test_data += $(all_dist_test_data)
|
||||
EXTRA_DIST += $(all_dist_test_data)
|
||||
all_test_ltlibs = $(test_ltlibraries) $(uninstalled_test_ltlibraries) $(installed_test_ltlibraries)
|
||||
|
||||
check_LTLIBRARIES += $(all_test_ltlibs)
|
||||
check_PROGRAMS += $(all_test_programs)
|
||||
check_SCRIPTS += $(all_test_scripts)
|
||||
check_DATA += $(all_test_data)
|
@ -1,10 +0,0 @@
|
||||
include $(top_srcdir)/swe-glib.mk
|
||||
|
||||
LDADD = $(top_builddir)/src/libswe-glib-2.0.la
|
||||
DEFS = -DG_LOG_DOMAIN=\"SWE-GLib\"
|
||||
AM_CPPFLAGS = $(GLIB_CFLAGS) $(GOBJECT_CFLAGS) $(LIBSWE_CFLAGS) -I$(top_srcdir)/src
|
||||
AM_CFLAGS = -g
|
||||
AM_LDFLAGS = $(GOBJECT_LIBS)
|
||||
|
||||
test_programs = gswe-timestamp-test
|
||||
TESTS += $(test_programs)
|
@ -1,327 +0,0 @@
|
||||
#undef G_DISABLE_ASSERT
|
||||
|
||||
#include <glib.h>
|
||||
#include <glib-object.h>
|
||||
#include <swe-glib.h>
|
||||
|
||||
#include "test-asserts.h"
|
||||
|
||||
struct testdata_t {
|
||||
gint year;
|
||||
guint month;
|
||||
guint day;
|
||||
guint hour;
|
||||
guint minute;
|
||||
guint second;
|
||||
guint ms;
|
||||
gdouble tz;
|
||||
gdouble jdet;
|
||||
gdouble jdut;
|
||||
gdouble jdsr;
|
||||
};
|
||||
|
||||
static struct testdata_t td[] = {
|
||||
{ 1983, 3, 7, 11, 54, 45, 948, 1.0, 2445400.954699264, 3, 4 },
|
||||
{ 2013, 9, 1, 13, 52, 18, 419, 2.0, 2456536.994646754, 3, 4 },
|
||||
{ 0 }
|
||||
};
|
||||
|
||||
static void
|
||||
test_timestamp_gregorian(void)
|
||||
{
|
||||
GsweTimestamp *timestamp;
|
||||
GError *err = NULL;
|
||||
gint year;
|
||||
guint month, day, hour, minute, second, ms;
|
||||
gdouble tz;
|
||||
|
||||
/* Create timestamp from testdata */
|
||||
timestamp = gswe_timestamp_new_from_gregorian_full(
|
||||
td[0].year, td[0].month, td[0].day,
|
||||
td[0].hour, td[0].minute, td[0].second, td[0].ms,
|
||||
td[0].tz
|
||||
);
|
||||
g_assert_nonnull(timestamp);
|
||||
|
||||
/* Check for Gregorian validity */
|
||||
|
||||
/* Set year, get year */
|
||||
gswe_timestamp_set_gregorian_year(timestamp, td[1].year, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
year = gswe_timestamp_get_gregorian_year(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
g_assert_cmpint(year, ==, td[1].year);
|
||||
|
||||
/* Set month, get month */
|
||||
gswe_timestamp_set_gregorian_month(timestamp, td[1].month, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
month = gswe_timestamp_get_gregorian_month(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
g_assert_cmpuint(month, ==, td[1].month);
|
||||
|
||||
/* Set day, get day */
|
||||
gswe_timestamp_set_gregorian_day(timestamp, td[1].day, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
day = gswe_timestamp_get_gregorian_day(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
g_assert_cmpuint(day, ==, td[1].day);
|
||||
|
||||
/* Set hour, get hour */
|
||||
gswe_timestamp_set_gregorian_hour(timestamp, td[1].hour, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
hour = gswe_timestamp_get_gregorian_hour(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
g_assert_cmpuint(hour, ==, td[1].hour);
|
||||
|
||||
/* Set minute, get minute */
|
||||
gswe_timestamp_set_gregorian_minute(timestamp, td[1].minute, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
minute = gswe_timestamp_get_gregorian_minute(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
g_assert_cmpuint(minute, ==, td[1].minute);
|
||||
|
||||
/* Set second, get second */
|
||||
gswe_timestamp_set_gregorian_second(timestamp, td[1].second, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
second = gswe_timestamp_get_gregorian_second(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
g_assert_cmpuint(second, ==, td[1].second);
|
||||
|
||||
/* Set ms, get ms */
|
||||
gswe_timestamp_set_gregorian_microsecond(timestamp, td[1].ms, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
ms = gswe_timestamp_get_gregorian_microsecond(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
g_assert_cmpuint(ms, ==, td[1].ms);
|
||||
|
||||
/* Set tz, get tz */
|
||||
gswe_timestamp_set_gregorian_timezone(timestamp, td[1].tz, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
tz = gswe_timestamp_get_gregorian_timezone(timestamp);
|
||||
g_assert_cmpfloat(tz, ==, td[1].tz);
|
||||
|
||||
/* Set full, check all */
|
||||
gswe_timestamp_set_gregorian_full(
|
||||
timestamp,
|
||||
td[0].year, td[0].month, td[0].day,
|
||||
td[0].hour, td[0].minute, td[0].second, td[0].ms,
|
||||
td[0].tz,
|
||||
&err
|
||||
);
|
||||
g_assert_null(err);
|
||||
g_object_get(
|
||||
timestamp,
|
||||
"gregorian-year", &year,
|
||||
"gregorian-month", &month,
|
||||
"gregorian-day", &day,
|
||||
"gregorian-hour", &hour,
|
||||
"gregorian-minute", &minute,
|
||||
"gregorian-second", &second,
|
||||
"gregorian-microsecond", &ms,
|
||||
"gregorian-timezone-offset", &tz,
|
||||
NULL
|
||||
);
|
||||
g_assert_cmpint(year, ==, td[0].year);
|
||||
g_assert_cmpuint(month, ==, td[0].month);
|
||||
g_assert_cmpuint(day, ==, td[0].day);
|
||||
g_assert_cmpuint(hour, ==, td[0].hour);
|
||||
g_assert_cmpuint(minute, ==, td[0].minute);
|
||||
g_assert_cmpuint(second, ==, td[0].second);
|
||||
g_assert_cmpuint(ms, ==, td[0].ms);
|
||||
g_assert_cmpfloat(tz, ==, td[0].tz);
|
||||
|
||||
g_clear_object(×tamp);
|
||||
}
|
||||
|
||||
static void
|
||||
test_timestamp_timezone(void)
|
||||
{
|
||||
GsweTimestamp *timestamp;
|
||||
gdouble tz, val_old, val_new;
|
||||
guint hour, minute, second, ms;
|
||||
GError *err = NULL;
|
||||
|
||||
/* Create timestamp */
|
||||
timestamp = gswe_timestamp_new_from_gregorian_full(
|
||||
td[0].year, td[0].month, td[0].day,
|
||||
td[0].hour, td[0].minute, td[0].second, td[0].ms,
|
||||
td[0].tz
|
||||
);
|
||||
g_assert_nonnull(timestamp);
|
||||
|
||||
/* Change timezone */
|
||||
if (td[0].tz >= 23.0) {
|
||||
tz = td[0].tz - 1;
|
||||
} else {
|
||||
tz = td[0].tz + 1;
|
||||
}
|
||||
|
||||
/* Check hour, minute, second and microsecond */
|
||||
val_old = (td[0].hour * 3600)
|
||||
+ (td[0].minute * 60)
|
||||
+ td[0].second
|
||||
+ (td[0].ms / 1000.0);
|
||||
|
||||
gswe_timestamp_set_gregorian_timezone(timestamp, tz, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
g_object_get(
|
||||
timestamp,
|
||||
"gregorian-hour", &hour,
|
||||
"gregorian-minute", &minute,
|
||||
"gregorian-second", &second,
|
||||
"gregorian-microsecond", &ms,
|
||||
NULL
|
||||
);
|
||||
val_new = (hour * 3600)
|
||||
+ (minute * 60)
|
||||
+ second
|
||||
+ (ms / 1000.0);
|
||||
|
||||
g_assert_cmpfloat(val_new, !=, val_old);
|
||||
|
||||
g_clear_object(×tamp);
|
||||
}
|
||||
|
||||
static void
|
||||
test_timestamp_jdet(void)
|
||||
{
|
||||
GsweTimestamp *timestamp;
|
||||
gdouble jdet;
|
||||
GError *err = NULL;
|
||||
|
||||
/* Create timestamp */
|
||||
timestamp = gswe_timestamp_new_from_julian_day(td[0].jdet);
|
||||
g_assert_nonnull(timestamp);
|
||||
|
||||
/* Check value */
|
||||
jdet = gswe_timestamp_get_julian_day_et(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
gswe_assert_fuzzy_equals(jdet, td[0].jdet, 0.000001);
|
||||
|
||||
/* Set new value */
|
||||
gswe_timestamp_set_julian_day_et(timestamp, td[1].jdet, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
/* Check value */
|
||||
jdet = gswe_timestamp_get_julian_day_et(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
gswe_assert_fuzzy_equals(jdet, td[1].jdet, 0.000001);
|
||||
|
||||
g_clear_object(×tamp);
|
||||
}
|
||||
|
||||
static void
|
||||
test_timestamp_jdut(void)
|
||||
{}
|
||||
|
||||
static void
|
||||
test_timestamp_instant(void)
|
||||
{
|
||||
GsweTimestamp *timestamp;
|
||||
gboolean instrecalc, greg_valid, jul_valid;
|
||||
GError *err = NULL;
|
||||
|
||||
timestamp = gswe_timestamp_new_from_now_local();
|
||||
g_assert_nonnull(timestamp);
|
||||
|
||||
g_object_get(
|
||||
timestamp,
|
||||
"instant-recalc", &instrecalc,
|
||||
"gregorian-valid", &greg_valid,
|
||||
"julian-day-valid", &jul_valid,
|
||||
NULL);
|
||||
g_assert_false(instrecalc);
|
||||
g_assert_true(greg_valid);
|
||||
g_assert_false(jul_valid);
|
||||
|
||||
g_object_set(timestamp, "instant-recalc", TRUE, NULL);
|
||||
g_object_get(
|
||||
timestamp,
|
||||
"instant-recalc", &instrecalc,
|
||||
"gregorian-valid", &greg_valid,
|
||||
"julian-day-valid", &jul_valid,
|
||||
NULL);
|
||||
g_assert_true(instrecalc);
|
||||
g_assert_true(greg_valid);
|
||||
g_assert_true(jul_valid);
|
||||
|
||||
g_object_set(timestamp, "instant-recalc", FALSE, NULL);
|
||||
gswe_timestamp_set_now_local(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
g_object_get(
|
||||
timestamp,
|
||||
"instant-recalc", &instrecalc,
|
||||
"gregorian-valid", &greg_valid,
|
||||
"julian-day-valid", &jul_valid,
|
||||
NULL);
|
||||
g_assert_false(instrecalc);
|
||||
g_assert_true(greg_valid);
|
||||
g_assert_false(jul_valid);
|
||||
}
|
||||
|
||||
static void
|
||||
test_timestamp_conv_gregjd(void)
|
||||
{
|
||||
GsweTimestamp *timestamp;
|
||||
gdouble jdet;
|
||||
GError *err = NULL;
|
||||
|
||||
/* Create timestamp from testdata */
|
||||
timestamp = gswe_timestamp_new_from_gregorian_full(
|
||||
td[1].year, td[1].month, td[1].day,
|
||||
td[1].hour, td[1].minute, td[1].second, td[1].ms,
|
||||
td[1].tz
|
||||
);
|
||||
g_assert_nonnull(timestamp);
|
||||
|
||||
jdet = gswe_timestamp_get_julian_day_ut(timestamp, &err);
|
||||
g_assert_null(err);
|
||||
|
||||
/* Allow 5ms of fuzzyness here */
|
||||
gswe_assert_fuzzy_equals(
|
||||
jdet,
|
||||
td[1].jdet,
|
||||
0.0001
|
||||
);
|
||||
|
||||
g_clear_object(×tamp);
|
||||
}
|
||||
|
||||
static void
|
||||
test_timestamp_conv_jdgreg(void)
|
||||
{}
|
||||
|
||||
static void
|
||||
test_timestamp_sidereal(void)
|
||||
{}
|
||||
|
||||
static void
|
||||
test_timestamp_now(void)
|
||||
{}
|
||||
|
||||
int
|
||||
main(int argc, char **argv)
|
||||
{
|
||||
g_test_init(&argc, &argv, NULL);
|
||||
|
||||
g_test_add_func("/gswe/timestamp/gregorian", test_timestamp_gregorian);
|
||||
g_test_add_func("/gswe/timestamp/timezone", test_timestamp_timezone);
|
||||
g_test_add_func("/gswe/timestamp/jdet", test_timestamp_jdet);
|
||||
g_test_add_func("/gswe/timestamp/jdut", test_timestamp_jdut);
|
||||
g_test_add_func("/gswe/timestamp/instant", test_timestamp_instant);
|
||||
g_test_add_func("/gswe/timestamp/conv/greg_jd", test_timestamp_conv_gregjd);
|
||||
g_test_add_func("/gswe/timestamp/conv/jd_greg", test_timestamp_conv_jdgreg);
|
||||
g_test_add_func("/gswe/timestamp/sidereal", test_timestamp_sidereal);
|
||||
g_test_add_func("/gswe/timestamp/now", test_timestamp_now);
|
||||
|
||||
return g_test_run();
|
||||
}
|
@ -1,66 +0,0 @@
|
||||
#ifndef __SWE_GLIB_TEST_ASSERTS_H__
|
||||
#define __SWE_GLIB_TEST_ASSERTS_H__
|
||||
|
||||
#include <glib.h>
|
||||
|
||||
/* Check equality with fuzzyness. Thanks for ebassi@GNOME and graphene */
|
||||
#define gswe_assert_fuzzy_equals(n1,n2,epsilon) \
|
||||
G_STMT_START { \
|
||||
typeof ((n1)) __n1 = (n1); \
|
||||
typeof ((n2)) __n2 = (n2); \
|
||||
typeof ((epsilon)) __epsilon = (epsilon); \
|
||||
if (__n1 > __n2) { \
|
||||
if ((__n1 - __n2) <= __epsilon) ; else { \
|
||||
g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
|
||||
#n1 " == " #n2 " (+/- " #epsilon ")", \
|
||||
__n1, "==", __n2, 'f'); \
|
||||
} \
|
||||
} else { \
|
||||
if ((__n2 - __n1) <= __epsilon) ; else { \
|
||||
g_assertion_message_cmpnum (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
|
||||
#n1 " == " #n2 " (+/- " #epsilon ")", \
|
||||
__n1, "==", __n2, 'f'); \
|
||||
} \
|
||||
} \
|
||||
} G_STMT_END
|
||||
|
||||
/* g_assert_null() and g_assert_nonnull() were defined in 2.36 and
|
||||
* 2.40. Requiring a newer GLib just because of this would be an
|
||||
* overkill, so let's just backport them:
|
||||
*/
|
||||
#ifndef g_assert_null
|
||||
#define g_assert_null(expr) do { if G_LIKELY ((expr) == NULL) ; else \
|
||||
g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
|
||||
"'" #expr "' should be NULL"); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
#ifndef g_assert_nonnull
|
||||
#define g_assert_nonnull(expr) do { if G_LIKELY ((expr) != NULL) ; else \
|
||||
g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
|
||||
"'" #expr "' should not be NULL"); \
|
||||
} while (0)
|
||||
#endif
|
||||
|
||||
/* g_assert_true() and g_assert_false() were defined in 2.38. Requiring
|
||||
* a newer GLib just because of this would be an overkill, so let's just
|
||||
* backport them:
|
||||
*/
|
||||
#ifndef g_assert_true
|
||||
#define g_assert_true(expr) G_STMT_START { \
|
||||
if G_LIKELY (expr) ; else \
|
||||
g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
|
||||
"'" #expr "' should be TRUE"); \
|
||||
} G_STMT_END
|
||||
#endif
|
||||
|
||||
#ifndef g_assert_false
|
||||
#define g_assert_false(expr) G_STMT_START { \
|
||||
if G_LIKELY (!(expr)) ; else \
|
||||
g_assertion_message (G_LOG_DOMAIN, __FILE__, __LINE__, G_STRFUNC, \
|
||||
"'" #expr "' should be FALSE"); \
|
||||
} G_STMT_END
|
||||
|
||||
#endif
|
||||
|
||||
#endif /* __SWE_GLIB_TEST_ASSERTS_H__ */
|
Loading…
Reference in New Issue
Block a user