Coverage for /usr/lib/python3/dist-packages/colorzero/easings.py: 30%

15 statements  

« prev     ^ index     » next       coverage.py v7.2.7, created at 2024-02-10 12:38 +0000

1# vim: set et sw=4 sts=4 fileencoding=utf-8: 

2# 

3# The colorzero color library 

4# Copyright (c) 2016-2018 Dave Jones <dave@waveform.org.uk> 

5# 

6# Redistribution and use in source and binary forms, with or without 

7# modification, are permitted provided that the following conditions are met: 

8# 

9# * Redistributions of source code must retain the above copyright 

10# notice, this list of conditions and the following disclaimer. 

11# * Redistributions in binary form must reproduce the above copyright 

12# notice, this list of conditions and the following disclaimer in the 

13# documentation and/or other materials provided with the distribution. 

14# * Neither the name of the copyright holder nor the 

15# names of its contributors may be used to endorse or promote products 

16# derived from this software without specific prior written permission. 

17# 

18# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 

19# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 

20# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 

21# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 

22# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 

23# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 

24# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 

25# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 

26# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 

27# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 

28# POSSIBILITY OF SUCH DAMAGE. 

29 

30"Defines various easing functions for :meth:`Color.gradient`." 

31 

32from __future__ import ( 

33 unicode_literals, 

34 print_function, 

35 division, 

36 absolute_import, 

37) 

38 

39from collections import namedtuple 

40 

41 

42def linear(steps): 

43 "Linear easing function; yields *steps* values between 0.0 and 1.0" 

44 for t in range(steps): 

45 yield t / (steps - 1) 

46 

47 

48def ease_in(steps): 

49 "Quadratic ease-in function; yields *steps* values between 0.0 and 1.0" 

50 for t in linear(steps): 

51 yield t ** 2 

52 

53 

54def ease_out(steps): 

55 "Quadratic ease-out function; yields *steps* values between 0.0 and 1.0" 

56 for t in linear(steps): 

57 yield t * (2 - t) 

58 

59 

60def ease_in_out(steps): 

61 "Quadratic ease-in-out function; yields *steps* values between 0.0 and 1.0" 

62 for t in linear(steps): 

63 yield 2 * t * t if t < 0.5 else (4 - 2 * t) * t - 1