diff --git a/cpp/cucul++.cpp b/cpp/cucul++.cpp index 325289b..0cd3d04 100644 --- a/cpp/cucul++.cpp +++ b/cpp/cucul++.cpp @@ -194,11 +194,6 @@ int Cucul::rand (int min, int max) return cucul_rand(min, max); } -unsigned int Cucul::sqrt (unsigned int v) -{ - return cucul_sqrt(v); -} - Cucul::Sprite * Cucul::load_sprite (char const *f) { Cucul::Sprite *s = new Cucul::Sprite(); diff --git a/cpp/cucul++.h b/cpp/cucul++.h index ff8d1fd..a425c72 100644 --- a/cpp/cucul++.h +++ b/cpp/cucul++.h @@ -88,7 +88,6 @@ class Cucul { void draw_thin_triangle ( int, int, int, int, int, int); void fill_triangle ( int, int, int, int, int, int, char const *); int rand (int, int); - unsigned int sqrt (unsigned int); Sprite * load_sprite (char const *); int get_sprite_frames (Cucul::Sprite const *); int get_sprite_width (Cucul::Sprite const *, int); diff --git a/cucul/Makefile.am b/cucul/Makefile.am index 027b122..ece1b4f 100644 --- a/cucul/Makefile.am +++ b/cucul/Makefile.am @@ -18,7 +18,6 @@ libcucul_la_SOURCES = \ transform.c \ charset.c \ colour.c \ - math.c \ line.c \ box.c \ conic.c \ diff --git a/cucul/cucul.c b/cucul/cucul.c index 4447726..3d1242b 100644 --- a/cucul/cucul.c +++ b/cucul/cucul.c @@ -236,6 +236,17 @@ void cucul_free(cucul_t *qq) free(qq); } +/** \brief Generate a random integer within a range. + * + * \param min The lower bound of the integer range. + * \param max The upper bound of the integer range. + * \return A random integer comprised between \p min and \p max, inclusive. + */ +int cucul_rand(int min, int max) +{ + return min + (int)((1.0*(max-min+1)) * rand() / (RAND_MAX+1.0)); +} + /** \brief Export a canvas into a foreign format. * * This function exports a libcucul canvas into various foreign formats such diff --git a/cucul/cucul.h b/cucul/cucul.h index d651de9..01bd62d 100644 --- a/cucul/cucul.h +++ b/cucul/cucul.h @@ -79,6 +79,7 @@ void cucul_set_size(cucul_t *, unsigned int, unsigned int); unsigned int cucul_get_width(cucul_t *); unsigned int cucul_get_height(cucul_t *); void cucul_free(cucul_t *); +int cucul_rand(int, int); /* @} */ /** \defgroup buffer Buffer handling @@ -143,15 +144,6 @@ void cucul_draw_thin_triangle(cucul_t *, int, int, int, int, int, int); void cucul_fill_triangle(cucul_t *, int, int, int, int, int, int, char const *); /* @} */ -/** \defgroup math Mathematical functions - * - * These functions provide a few useful math-related routines. - * - * @{ */ -int cucul_rand(int, int); -unsigned int cucul_sqrt(unsigned int); -/* @} */ - /** \defgroup sprite Sprite handling * * These functions provide high level routines for sprite loading, animation diff --git a/cucul/math.c b/cucul/math.c deleted file mode 100644 index 2ee3b82..0000000 --- a/cucul/math.c +++ /dev/null @@ -1,68 +0,0 @@ -/* - * libcucul Canvas for ultrafast compositing of Unicode letters - * Copyright (c) 2002-2006 Sam Hocevar - * All Rights Reserved - * - * $Id$ - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the Do What The Fuck You Want To - * Public License, Version 2, as published by Sam Hocevar. See - * http://sam.zoy.org/wtfpl/COPYING for more details. - */ - -/* - * This file contains simple mathematical routines. - */ - -#include "config.h" - -#if !defined(__KERNEL__) -# include -#endif - -#include "cucul.h" -#include "cucul_internals.h" - -/** \brief Generate a random integer within a range. - * - * \param min The lower bound of the integer range. - * \param max The upper bound of the integer range. - * \return A random integer comprised between \p min and \p max, inclusive. - */ -int cucul_rand(int min, int max) -{ - return min + (int)((1.0*(max-min+1)) * rand() / (RAND_MAX+1.0)); -} - -/** \brief Approximate a square root, using Newton's method to avoid - * costly floating point calculations. - * - * \param a A positive integer. - * \return The approximate square root of \p a. - */ -unsigned int cucul_sqrt(unsigned int a) -{ - if(a == 0) - return 0; - - if(a < 1000000000) - { - unsigned int x = a < 10 ? 1 - : a < 1000 ? 10 - : a < 100000 ? 100 - : a < 10000000 ? 1000 - : 10000; - - /* Newton's method. Three iterations would be more than enough. */ - x = (x * x + a) / x / 2; - x = (x * x + a) / x / 2; - x = (x * x + a) / x / 2; - x = (x * x + a) / x / 2; - - return x; - } - - return 2 * cucul_sqrt(a / 4); -} -