# # Copyright (c) 2008 Helmut Merz helmutm@cy55.de # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # """ Media asset management interface definitions. $Id$ """ from zope.interface import Interface, Attribute from zope.i18nmessageid import MessageFactory from zope import schema _ = MessageFactory('cybertools.media') class IMediaAsset(Interface): modified = schema.Date( title=_(u'Date'), description=_(u'The date/time the picture was taken.'), required=False,) def getData(variant=None): """ Return the binary data of the media asset or one of its variants. """ def getContentType(variant=None): """ Return the mime-formatted content type of the media asset or one of its variants. """ def transform(rules): """ Generate user-defined transformed variants of the media asset according to the rules given. """ class IFileTransform(Interface): """ Transformations using files in the filesystem. """ def open(path): """ Open the image under the given filename. """ def save(path, mimetype): """ Save the image under the given filename. """ def rotate(rotangle): """ Return a copy of an image rotated the given number of degrees counter clockwise around its centre. """ def color(mode): """ Create image with specified color mode (e.g. 'greyscale'). """ def crop(relWidth, relHeight, alignX=0.5, alignY=0.5): """ Return a rectangular region from the current image. The box is defined by a relative width and a relative height defining the crop aspect as well as a horizontal (x) and a verical (y) alignment parameters. """ def resize(width, height): """ Modify the image to contain a thumbnail version of itself, no larger than the given size. """