|
|
|
/*
|
|
|
|
kopetepicture.h - Kopete Picture
|
|
|
|
|
|
|
|
Copyright (c) 2005 by Michaël Larouche <michael.larouche@kdemail.net>
|
|
|
|
|
|
|
|
Kopete (c) 2002-2005 by the Kopete developers <kopete-devel@kde.org>
|
|
|
|
|
|
|
|
*************************************************************************
|
|
|
|
* *
|
|
|
|
* This library is free software; you can redistribute it and/or *
|
|
|
|
* modify it under the terms of the GNU Lesser General Public *
|
|
|
|
* License as published by the Free Software Foundation; either *
|
|
|
|
* version 2 of the License, or (at your option) any later version. *
|
|
|
|
* *
|
|
|
|
*************************************************************************
|
|
|
|
*/
|
|
|
|
#ifndef KOPETEPICTURE_H
|
|
|
|
#define KOPETEPICTURE_H
|
|
|
|
|
|
|
|
#include <kdemacros.h>
|
|
|
|
#include <ksharedptr.h>
|
|
|
|
#include "kopete_export.h"
|
|
|
|
|
|
|
|
#include <tqimage.h>
|
|
|
|
|
|
|
|
namespace KABC
|
|
|
|
{
|
|
|
|
class Picture;
|
|
|
|
}
|
|
|
|
|
|
|
|
namespace Kopete
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* @brief Represent a picture in Kopete context
|
|
|
|
*
|
|
|
|
* It kept a cache of a TQImage object, a base64 string and
|
|
|
|
* a path to a image file. It ensure that all source are synced.
|
|
|
|
* Interally, the image is stored in PNG format when possible.
|
|
|
|
* It can happen that the image path do not return a PNG file.
|
|
|
|
*
|
|
|
|
* You can only use an TQImage and a image path to create/update
|
|
|
|
* the picture.
|
|
|
|
* If the picture doesn't exist as a file, it generate a local
|
|
|
|
* copy into ~/.trinity/share/apps/kopete/metacontactpicturecache
|
|
|
|
*
|
|
|
|
* This class is implicitly shared, so don't use it as a pointer.
|
|
|
|
*
|
|
|
|
* How to use this class:
|
|
|
|
* @code
|
|
|
|
* Kopete::Picture picture;
|
|
|
|
* picture.setPicture(TQImage());
|
|
|
|
* picture.setPicture(TQString("/tmp/image.png"));
|
|
|
|
*
|
|
|
|
* TQString base64 = picture.base64();
|
|
|
|
* TQString path = picture.path();
|
|
|
|
* TQImage image = picture.image();
|
|
|
|
* @endcode
|
|
|
|
*
|
|
|
|
* @author Michaël Larouche <michael.larouche@kdemail.net>
|
|
|
|
*/
|
|
|
|
class KOPETE_EXPORT Picture
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
/**
|
|
|
|
* Create a empty Kopete::Picture
|
|
|
|
*/
|
|
|
|
Picture();
|
|
|
|
/**
|
|
|
|
* Create a picture from a local path.
|
|
|
|
*/
|
|
|
|
Picture(const TQString &path);
|
|
|
|
/**
|
|
|
|
* Create a picture from a TQImage.
|
|
|
|
*/
|
|
|
|
Picture(const TQImage &image);
|
|
|
|
/**
|
|
|
|
* Create a picture from a KABC::Picture.
|
|
|
|
*/
|
|
|
|
Picture(const KABC::Picture &picture);
|
|
|
|
/**
|
|
|
|
* Copy a picture. It doesn't create a full copy, it just make a reference.
|
|
|
|
*/
|
|
|
|
Picture(const Picture &other);
|
|
|
|
/**
|
|
|
|
* Delete the Kopete::Picture
|
|
|
|
*/
|
|
|
|
~Picture();
|
|
|
|
/**
|
|
|
|
* Assignment operator.
|
|
|
|
* Like the copy constructor, it just make a reference.
|
|
|
|
*/
|
|
|
|
Picture &operator=(const Picture &other);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the current picture as TQImage.
|
|
|
|
* TQImage can used to draw the image on a context.
|
|
|
|
*
|
|
|
|
* @return the TQImage cache of current picture.
|
|
|
|
*/
|
|
|
|
TQImage image();
|
|
|
|
/**
|
|
|
|
* Return the current picture as a base64 string.
|
|
|
|
* The base64 is used to include the picture into a XML/XHTML context.
|
|
|
|
*/
|
|
|
|
TQString base64();
|
|
|
|
/**
|
|
|
|
* Return the local path of the current picture.
|
|
|
|
*/
|
|
|
|
TQString path();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Check if the picture is null.
|
|
|
|
*/
|
|
|
|
bool isNull();
|
|
|
|
/**
|
|
|
|
* Reset the picture.
|
|
|
|
*/
|
|
|
|
void clear();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the picture content.
|
|
|
|
* @param image the picture as a TQImage.
|
|
|
|
*/
|
|
|
|
void setPicture(const TQImage &image);
|
|
|
|
/**
|
|
|
|
* Set the picture content.
|
|
|
|
* @param path the path to the picture.
|
|
|
|
*/
|
|
|
|
void setPicture(const TQString &path);
|
|
|
|
/**
|
|
|
|
* Set the picture content.
|
|
|
|
* @param picture a KABC Picture.
|
|
|
|
*/
|
|
|
|
void setPicture(const KABC::Picture &picture);
|
|
|
|
|
|
|
|
private:
|
|
|
|
/**
|
|
|
|
* Kopete::Picture is implicitly shared.
|
|
|
|
* Detach the instance when modifying data.
|
|
|
|
*/
|
|
|
|
void detach();
|
|
|
|
|
|
|
|
class Private;
|
|
|
|
KSharedPtr<Private> d;
|
|
|
|
};
|
|
|
|
|
|
|
|
}//END namespace Kopete
|
|
|
|
|
|
|
|
#endif
|