diff options
Diffstat (limited to 'doc/info/chap/functions.texinfo')
-rw-r--r-- | doc/info/chap/functions.texinfo | 155 |
1 files changed, 0 insertions, 155 deletions
diff --git a/doc/info/chap/functions.texinfo b/doc/info/chap/functions.texinfo deleted file mode 100644 index d3236ec..0000000 --- a/doc/info/chap/functions.texinfo +++ /dev/null @@ -1,155 +0,0 @@ -@node Functions -@chapter Functions - -@file{<libred.h>} defines a small number of functions. -@example -int libred_check_timetravel(void); -double libred_solar_elevation(double latitude, double longitude); -int libred_init_colour(void); -void libred_term_colour(void); -int libred_get_colour(long int temp, double* r, double* g, double* b); -@end example - -@code{libred_check_timetravel} exits the process if @command{libred} -is not compiled to support the current time, which is the case if it -was compiled without @option{-DTIMETRAVELLER} and the clock is before -year 2000.5 in the Julian calendar. Before exiting, the function will -print an informative error message to standard error. Upon successful -completion, without time incompatibility, the function returns 0. -Upon failure, that is,it is unable to read the clock, the function -returns @math{-1}. The function may fail for any reason specified for -@code{clock_gettime}, and set the value of errno to the same values. -It is recommended to call this function at the beginning of the program. - -@example -#include <libred.h> -#include <stdio.h> -int main() -@{ - if (libred_check_timetravel()) - return perror(""), 1; - - /* @xrm{}Use @xtt{}libred_solar_elevation@xrm{} to your heart's contempt.@xtt{} */ - - return 0; -@} -@end example - -@code{libred_solar_elevation} calculates the Sun's elevation as apparent -from a select geographical position. Namely from latitude degrees north -of GPS's equator and longitude degrees east of GPS's prime meridian. -The function is only explicitly defined for values between @math{-90} and -@math{+90} for latitude and values between @math{-180} and @math{+180} for -and longitude. Other values may or may not work, no error is thrown if used. -Upon successful completion, the function sets errno to 0 and returns the -Sun's current apparent elevation, measured in degrees above the horizon. -On failure, the function returns an arbitrary value (happens to always be -0.0) and sets @code{errno} an a non-zero value. The function may fail for -any reason specified for @code{clock_gettime}, and set the value of -@code{errno} to the same values. @code{errno} is always set to 0 on success. - -@example -#include <libred.h> -#include <stdio.h> -#include <stdlib.h> -int main(int argc, char* argv[]) -@{ - double elevation, latitude, longitude; - - if (libred_check_timetravel()) - return perror(""), 1; - - if (argc < 3) return 2; - latitude = atof(argv[1]); - longitude = atof(argv[2]); - - elevation = libred_solar_elevation(latitude, longitude); - return errno || printf("Elevation: %lf\n", elevation) < 0; -@} -@end example - -@code{libred_init_colour} open a file descriptor, without returning it, -to the colour temperature lookup table, and stores the file descriptor to -@code{libred_fd}. It is necessary to call this function before the first -call to @code{libred_get_colour}. Upon successful completion, the -function returns 0. On failure, the function returns @math{-1} and sets -@code{errno} appropriately. The function may fail for any reason specified -for @code{open}, and set the value of @code{errno} to the same values. -@code{errno} is always set to 0 on success. It is possible that the -behaviour is changed to loading the colour temperature lookup table rather -than just open a file descriptor to it. - -@code{libred_term_colour} deallocates all resources acquired by -@code{libred_init_colour}. It is highly recommended to call this function -before calling an @code{exec}-function. If you want to use -@code{libred_get_colour} again after a call to this function has been -made, you must first call @code{libred_init_colour}. - -@example -#include <libred.h> -#include <stdio.h> -int main(int argc, char* argv[]) -@{ - if (libred_init_colour()) - return perror(""), 1; - - /* @xrm{}Use @xtt{}libred_get_colour@xrm{} to your heart's contempt.@xtt{} */ - - libred_term_colour(); - return 0; -@} -@end example - -@code{libred_get_colour} gets or interpolates the colour temperature for -@code{temp} kelvins, and returns the colour temperature in sRGB. The -values, between 0.0 and 1.0, for the ``red'', green, and blue channels -are stored in @code{*r}, @code{*g}, and @code{*b}, respectively. -Upon successful completion, the function returns 0. On failure, the -function returns @math{-1} and sets @code{errno} appropriately. -The function may fail if: -@table @code -@item EOVERFLOW -The colour temperature lookup table is smaller than it should be. -@item EDOM -If @code{temp} is less than @code{LIBRED_LOWEST_TEMPERATURE} (which is 1000.) -@end table -@noindent -The function may also fail for any reason specified for @code{pread}, and -set the value of @code{errno} to the same values. - -At least one of the values will be 1.0, none will be greater than 1.0, -and none will be less than 0.0. It is guaranteed (unless the resources -file has been modified) that @code{*r}, @code{*g}, and @code{*b} all -will be 1.0 if @code{temp} is 6500. - -You must call @code{libred_init_colour} before the first use of -@code{libred_get_colour}, and you should call @code{libred_term_colour} -after the last use of @code{libred_get_colour}. - -@example -#include <libred.h> -#include <stdio.h> -#include <stdlib.h> -int main(int argc, char* argv[]) -@{ - long int temp; - double r, g, b; - - if (argc < 2) return 2; - temp = atol(argv[1]); - - if (libred_init_colour()) - return perror(""), 1; - - if (libred_get_colour(temp, &r, &g, &b)); - return perror(""), libred_term_colour(), 1; - - libred_term_colour(); - - return printf("Red: %lf\n" - "Green: %lf\n" - "Blue: %lf\n", - r, g, b) < 0; -@} -@end example - |