1/*
2 * This file is part of the syndication library
3 *
4 * Copyright (C) 2006 Frank Osterfeld <osterfeld@kde.org>
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Library General Public
8 * License as published by the Free Software Foundation; either
9 * version 2 of the License, or (at your option) any later version.
10 *
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Library General Public License for more details.
15 *
16 * You should have received a copy of the GNU Library General Public License
17 * along with this library; see the file COPYING.LIB. If not, write to
18 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
19 * Boston, MA 02110-1301, USA.
20 *
21 */
22
23#ifndef SYNDICATION_IMAGE_H
24#define SYNDICATION_IMAGE_H
25
26#include <QtCore/QString>
27#include <boost/shared_ptr.hpp>
28
29#include "ksyndication_export.h"
30
31namespace Syndication {
32
33class Image;
34//@cond PRIVATE
35typedef boost::shared_ptr<Image> ImagePtr;
36//@endcond
37
38/**
39 * This class represents an image file on the web.
40 * It is usually some kind of feed logo which can be displayed when showing the
41 * feed description.
42 *
43 * @author Frank Osterfeld
44 */
45class SYNDICATION_EXPORT Image
46{
47 public:
48
49 /**
50 * destructor
51 */
52 virtual ~Image();
53
54 /**
55 * returns whether this image is a null object.
56 */
57 virtual bool isNull() const = 0;
58
59 /**
60 * the URL of a GIF, JPEG or PNG image
61 */
62 virtual QString url() const = 0;
63
64 /**
65 * Describes the image, can be used in the ALT attribute of the
66 * HTML &lt;img> tag when the channel is rendered in HTML.
67 *
68 * @return TODO: specify format
69 */
70 virtual QString title() const = 0;
71
72
73 /**
74 * The URL of the site, when the channel is rendered, the image should
75 * be a link to the site. If not set, use Feed::link().
76 *
77 * @return the url the rendered image should link to, or a null string
78 * if not specified in the feed.
79 */
80 virtual QString link() const = 0;
81
82 /**
83 * optional text that can be included in the TITLE attribute of the link
84 * formed around the image in HTML rendering.
85 *
86 * @return TODO: specify format (HTML etc.)
87 */
88 virtual QString description() const = 0;
89
90 /**
91 * The width of the image in pixels.
92 *
93 * @return image width in pixels or 0 if not specified in the feed.
94 */
95 virtual uint width() const = 0;
96
97 /**
98 * The height of the image in pixels
99 *
100 * @return image height in pixels or 0 of not specified in the feed.
101 */
102 virtual uint height() const = 0;
103
104 /**
105 * returns a description of the image for debugging purposes
106 *
107 * @return debug string
108 */
109 virtual QString debugInfo() const;
110};
111
112} // namespace Syndication
113
114#endif // SYNDICATION_IMAGE_H
115