home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1411 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  10.4 KB  |  234 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __license__ = 'GPL v3'
  5. __copyright__ = '2010, Kovid Goyal <kovid@kovidgoyal.net>'
  6. __docformat__ = 'restructuredtext en'
  7. import os
  8. from calibre.constants import plugins, filesystem_encoding
  9. (_magick, _merr) = plugins['magick']
  10. if _magick is None:
  11.     raise RuntimeError('Failed to load ImageMagick: ' + _merr)
  12. _magick is None
  13. _gravity_map = [](_[1])
  14. _type_map = [](_[2])
  15.  
  16. class Rect(object):
  17.     
  18.     def __init__(self, left, top, right, bottom):
  19.         (self.left, self.top, self.right, self.bottom) = (left, top, right, bottom)
  20.  
  21.     
  22.     def __str__(self):
  23.         return '(%s, %s) -- (%s, %s)' % (self.left, self.top, self.right, self.bottom)
  24.  
  25.  
  26.  
  27. class FontMetrics(object):
  28.     
  29.     def __init__(self, ret):
  30.         self._attrs = []
  31.         for i, x in enumerate(('char_width', 'char_height', 'ascender', 'descender', 'text_width', 'text_height', 'max_horizontal_advance')):
  32.             setattr(self, x, ret[i])
  33.             self._attrs.append(x)
  34.         
  35.         self.bounding_box = Rect(ret[7], ret[8], ret[9], ret[10])
  36.         self.x = ret[11]
  37.         self.y = ret[12]
  38.         self._attrs.extend([
  39.             'bounding_box',
  40.             'x',
  41.             'y'])
  42.         self._attrs = tuple(self._attrs)
  43.  
  44.     
  45.     def __str__(self):
  46.         return [] % []([ getattr(self, x) for x in self._attrs ])
  47.  
  48.  
  49.  
  50. class PixelWand(_magick.PixelWand):
  51.     pass
  52.  
  53.  
  54. class DrawingWand(_magick.DrawingWand):
  55.     
  56.     def font(self):
  57.         
  58.         def fget(self):
  59.             return self.font_.decode(filesystem_encoding, 'replace').lower()
  60.  
  61.         
  62.         def fset(self, val):
  63.             if isinstance(val, unicode):
  64.                 val = val.encode(filesystem_encoding)
  65.             
  66.             self.font_ = str(val)
  67.  
  68.         return property(fget = fget, fset = fset, doc = _magick.DrawingWand.font_.__doc__)
  69.  
  70.     font = dynamic_property(font)
  71.     
  72.     def gravity(self):
  73.         
  74.         def fget(self):
  75.             val = self.gravity_
  76.             return _gravity_map[val]
  77.  
  78.         
  79.         def fset(self, val):
  80.             val = getattr(_magick, str(val))
  81.             self.gravity_ = val
  82.  
  83.         return property(fget = fget, fset = fset, doc = _magick.DrawingWand.gravity_.__doc__)
  84.  
  85.     gravity = dynamic_property(gravity)
  86.     
  87.     def font_size(self):
  88.         
  89.         def fget(self):
  90.             return self.font_size_
  91.  
  92.         
  93.         def fset(self, val):
  94.             self.font_size_ = float(val)
  95.  
  96.         return property(fget = fget, fset = fset, doc = _magick.DrawingWand.font_size_.__doc__)
  97.  
  98.     font_size = dynamic_property(font_size)
  99.  
  100.  
  101. class Image(_magick.Image):
  102.     
  103.     def clone(self):
  104.         ans = Image()
  105.         ans.copy(self)
  106.         return ans
  107.  
  108.     clone = property(clone)
  109.     
  110.     def load(self, data):
  111.         return _magick.Image.load(self, bytes(data))
  112.  
  113.     
  114.     def open(self, path_or_file):
  115.         data = path_or_file
  116.         if hasattr(data, 'read'):
  117.             data = data.read()
  118.         else:
  119.             data = open(data, 'rb').read()
  120.         self.load(data)
  121.  
  122.     
  123.     def format(self):
  124.         
  125.         def fget(self):
  126.             return self.format_.decode('utf-8', 'ignore').lower()
  127.  
  128.         
  129.         def fset(self, val):
  130.             self.format_ = str(val)
  131.  
  132.         return property(fget = fget, fset = fset, doc = _magick.Image.format_.__doc__)
  133.  
  134.     format = dynamic_property(format)
  135.     
  136.     def type(self):
  137.         
  138.         def fget(self):
  139.             return _type_map[self.type_]
  140.  
  141.         
  142.         def fset(self, val):
  143.             val = getattr(_magick, str(val))
  144.             self.type_ = val
  145.  
  146.         return property(fget = fget, fset = fset, doc = _magick.Image.type_.__doc__)
  147.  
  148.     type = dynamic_property(type)
  149.     
  150.     def size(self):
  151.         
  152.         def fget(self):
  153.             return self.size_
  154.  
  155.         
  156.         def fset(self, val):
  157.             filter = 'CatromFilter'
  158.             if len(val) > 2:
  159.                 filter = val[2]
  160.             
  161.             filter = int(getattr(_magick, filter))
  162.             blur = 1
  163.             if len(val) > 3:
  164.                 blur = float(val[3])
  165.             
  166.             self.size_ = (int(val[0]), int(val[1]), filter, blur)
  167.  
  168.         return property(fget = fget, fset = fset, doc = _magick.Image.size_.__doc__)
  169.  
  170.     size = dynamic_property(size)
  171.     
  172.     def save(self, path, format = None):
  173.         if format is None:
  174.             ext = os.path.splitext(path)[1]
  175.             if len(ext) < 2:
  176.                 raise ValueError('No format specified')
  177.             len(ext) < 2
  178.             format = ext[1:]
  179.         
  180.         format = format.upper()
  181.         
  182.         try:
  183.             f = _[1]
  184.             f.write(self.export(format))
  185.         finally:
  186.             pass
  187.  
  188.  
  189.     
  190.     def compose(self, img, left = 0, top = 0, operation = 'OverCompositeOp'):
  191.         op = getattr(_magick, operation)
  192.         bounds = self.size
  193.         if left < 0 and top < 0 and left >= bounds[0] or top >= bounds[1]:
  194.             raise ValueError('left and/or top out of bounds')
  195.         top >= bounds[1]
  196.         _magick.Image.compose(self, img, int(left), int(top), op)
  197.  
  198.     
  199.     def font_metrics(self, drawing_wand, text):
  200.         if isinstance(text, unicode):
  201.             text = text.encode('UTF-8')
  202.         
  203.         return FontMetrics(_magick.Image.font_metrics(self, drawing_wand, text))
  204.  
  205.     
  206.     def annotate(self, drawing_wand, x, y, angle, text):
  207.         if isinstance(text, unicode):
  208.             text = text.encode('UTF-8')
  209.         
  210.         return _magick.Image.annotate(self, drawing_wand, x, y, angle, text)
  211.  
  212.     
  213.     def distort(self, method, arguments, bestfit):
  214.         method = getattr(_magick, method)
  215.         arguments = [ float(x) for x in arguments ]
  216.         _magick.Image.distort(self, method, arguments, bestfit)
  217.  
  218.     
  219.     def rotate(self, background_pixel_wand, degrees):
  220.         _magick.Image.rotate(self, background_pixel_wand, float(degrees))
  221.  
  222.     
  223.     def quantize(self, number_colors, colorspace = 'RGBColorspace', treedepth = 0, dither = True, measure_error = False):
  224.         colorspace = getattr(_magick, colorspace)
  225.         _magick.Image.quantize(self, number_colors, colorspace, treedepth, dither, measure_error)
  226.  
  227.  
  228.  
  229. def create_canvas(width, height, bgcolor):
  230.     canvas = Image()
  231.     canvas.create_canvas(int(width), int(height), str(bgcolor))
  232.     return canvas
  233.  
  234.