filer.templatetags.filer_image_tags: 57 total statements, 0.0% covered

Generated: Wed 2013-03-13 10:33 CET

Source file: /media/Envs/Envs/filer-gallery/lib/python2.7/site-packages/filer/templatetags/filer_image_tags.py

Stats: 0 executed, 55 missed, 2 excluded, 45 ignored

  1. #-*- coding: utf-8 -*-
  2. from django.template import Library
  3. import re
  4. register = Library()
  5. RE_SIZE = re.compile(r'(\d+)x(\d+)$')
  6. def _recalculate_size(size, index, divisor=0, padding=0,
  7. keep_aspect_ratio=False):
  8. new_one = size[index]
  9. if divisor:
  10. new_one = new_one / float(divisor)
  11. if padding:
  12. new_one = new_one - padding
  13. if keep_aspect_ratio:
  14. new_two = int(float(new_one) * \
  15. float(size[int(not index)]) / size[index])
  16. else:
  17. new_two = int(size[int(not index)])
  18. new_one = int(new_one)
  19. if index:
  20. return (new_two, new_one)
  21. return new_one, new_two
  22. def _resize(original_size, index, divisor=0, padding=0,
  23. keep_aspect_ratio=False):
  24. if isinstance(original_size, basestring):
  25. m = RE_SIZE.match(original_size)
  26. if m:
  27. original_size = (int(m.group(1)), int(m.group(2)))
  28. else:
  29. return original_size
  30. else:
  31. try:
  32. original_size = (int(original_size[0]), int(original_size[1]))
  33. except (TypeError, ValueError):
  34. return original_size
  35. try:
  36. padding = int(padding)
  37. divisor = int(divisor)
  38. except (TypeError, ValueError):
  39. return original_size
  40. # Re-calculate size
  41. new_x, new_y = _recalculate_size(original_size, index, divisor=divisor,
  42. padding=padding,
  43. keep_aspect_ratio=keep_aspect_ratio)
  44. return (new_x, new_y)
  45. def extra_padding_x(original_size, padding):
  46. """
  47. Reduce the width of `original_size` by `padding`
  48. """
  49. return _resize(original_size, 0, padding=padding)
  50. extra_padding_x = register.filter(extra_padding_x)
  51. def extra_padding_x_keep_ratio(original_size, padding):
  52. """
  53. Reduce the width of `original_size` by `padding`, maintaining the aspect
  54. ratio.
  55. """
  56. return _resize(original_size, 0, padding=padding, keep_aspect_ratio=True)
  57. extra_padding_x_keep_ratio = register.filter(extra_padding_x_keep_ratio)
  58. def extra_padding_y(original_size, padding):
  59. """
  60. Reduce the height of `original_size` by `padding`
  61. """
  62. return _resize(original_size, 1, padding=padding)
  63. extra_padding_y = register.filter(extra_padding_y)
  64. def extra_padding_y_keep_ratio(original_size, padding):
  65. """
  66. Reduce the height of `original_size` by `padding`, maintaining the aspect
  67. ratio.
  68. """
  69. return _resize(original_size, 1, padding=padding, keep_aspect_ratio=True)
  70. extra_padding_y_keep_ratio = register.filter(extra_padding_y_keep_ratio)
  71. def divide_x_by(original_size, divisor):
  72. return _resize(original_size, 0, divisor=divisor)
  73. devide_x_by = register.filter(divide_x_by)
  74. def divide_y_by(original_size, divisor):
  75. return _resize(original_size, 1, divisor=divisor)
  76. devide_y_by = register.filter(divide_y_by)
  77. def divide_xy_by(original_size, divisor):
  78. size = divide_x_by(original_size, divisor=divisor)
  79. size = divide_y_by(size, divisor=divisor)
  80. return size
  81. divide_xy_by = register.filter(divide_xy_by)