⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qimageiohandler.cpp

📁 奇趣公司比较新的qt/emd版本
💻 CPP
📖 第 1 页 / 共 2 页
字号:
/******************************************************************************** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved.**** This file is part of the QtGui module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://trolltech.com/products/qt/licenses/licensing/opensource/**** If you are unsure which license is appropriate for your use, please** review the following information:** http://trolltech.com/products/qt/licenses/licensing/licensingoverview** or contact the sales department at sales@trolltech.com.**** In addition, as a special exception, Trolltech gives you certain** additional rights. These rights are described in the Trolltech GPL** Exception version 1.0, which can be found at** http://www.trolltech.com/products/qt/gplexception/ and in the file** GPL_EXCEPTION.txt in this package.**** In addition, as a special exception, Trolltech, as the sole copyright** holder for Qt Designer, grants users of the Qt/Eclipse Integration** plug-in the right for the Qt/Eclipse Integration to link to** functionality provided by Qt Designer and its related libraries.**** Trolltech reserves all rights not expressly granted herein.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************//*!    \class QImageIOHandler    \brief The QImageIOHandler class defines the common image I/O    interface for all image formats in Qt.    Qt uses QImageIOHandler for reading and writing images through    QImageReader and QImageWriter. You can also derive from this class    to write your own image format handler using Qt's plugin mechanism.    Call setDevice() to assign a device to the handler, and    setFormat() to assign a format to it. One QImageIOHandler may    support more than one image format. canRead() returns true if an    image can be read from the device, and read() and write() return    true if reading or writing an image was completed successfully.    QImageIOHandler also has support for animations formats, through    the functions loopCount(), imageCount(), nextImageDelay() and    currentImageNumber().    In order to determine what options an image handler supports, Qt    will call supportsOption() and setOption(). Make sure to    reimplement these functions if you can provide support for any of    the options in the ImageOption enum.    To write your own image handler, you must at least reimplement    canRead() and read(). Then create a QImageIOPlugin that    can create the handler. Finally, install your plugin, and    QImageReader and QImageWriter will then automatically load the    plugin, and start using it.    \sa QImageIOPlugin, QImageReader, QImageWriter*//*! \enum QImageIOHandler::ImageOption    This enum describes the different options supported by    QImageIOHandler.  Some options are used to query an image for    properties, and others are used to toggle the way in which an    image should be written.    \value Size The original size of an image. A handler that supports    this option is expected to read the size of the image from the    image metadata, and return this size from option() as a QSize.    \value ClipRect The clip rect, or ROI (Region Of Interest). A    handler that supports this option is expected to only read the    provided QRect area from the original image in read(), before any    other transformation is applied.    \value ScaledSize The scaled size of the image. A handler that    supports this option is expected to scale the image to the    provided size (a QSize), after applying any clip rect    transformation (ClipRect). If the handler does not support this    option, QImageReader will perform the scaling after the image has    been read.    \value ScaledClipRect The scaled clip rect (or ROI, Region Of    Interest) of the image. A handler that supports this option is    expected to apply the provided clip rect (a QRect), after applying    any scaling (ScaleSize) or regular clipping (ClipRect). If the    handler does not support this option, QImageReader will apply the    scaled clip rect after the image has been read.    \value Description The image description. Some image formats,    such as GIF and PNG, allow embedding of text    or comments into the image data (e.g., for storing copyright    information). It's common that the text is stored in key-value    pairs, but some formats store all text in one continuous block.    QImageIOHandler returns the text as one    QString, where keys and values are separated by a ':', and    keys-value pairs are separated by two newlines (\\n\\n). For example,    "Title: Sunset\\n\\nAuthor: Jim Smith\\nSarah Jones\\n\\n". Formats that    store text in a single block can use "Description" as the key.    \value CompressionRatio The compression ratio of the image data. A    handler that supports this option is expected to set its    compression rate depending on the value of this option (an int)    when writing.    \value Gamma The gamma level of the image. A handler that supports    this option is expected to set the image gamma level depending on    the value of this option (a float) when writing.    \value Quality The quality level of the image. A handler that    supports this option is expected to set the image quality level    depending on the value of this option (an int) when writing.    \value Name The name of the image. A handler that supports this    option is expected to read the name from the image metadata and    return this as a QString, or when writing an image it is expected    to store the name in the image metadata.    \value SubType The subtype of the image. A handler that supports    this option can use the subtype value to help when reading and    writing images. For example, a PPM handler may have a subtype    value of "ppm" or "ppmraw".    \value IncrementalReading A handler that supports this option is    expected to read the image in several passes, as if it was an    animation. QImageReader will treat the image as an animation.    \value Endianness The endianness of the image. Certain image    formats can be stored as BigEndian or LittleEndian. A handler that    supports Endianness uses the value of this option to determine how    the image should be stored.    \value Animation Image formats that support animation return    true for this value in supportsOption(); otherwise, false is returned.    \value BackgroundColor Certain image formats allow the    background color to be specified. A handler that supports    BackgroundColor initializes the background color to this option    (a QColor) when reading an image.*//*!    \class QImageIOPlugin    \brief The QImageIOPlugin class defines an interface for writing    an image format plugin.    \ingroup plugins    QImageIOPlugin is a factory for creating QImageIOHandler objects,    which are used internally by QImageReader and QImageWriter to add    support for different image formats to Qt.    Writing an image I/O plugin is achieved by subclassing this    base class, reimplementing the pure virtual functions capabilities(),    create(), and keys(), and exporting the class with the    Q_EXPORT_PLUGIN2() macro. See \l{How to Create Qt Plugins} for details.    An image format plugin can support three capabilities: reading (\l    CanRead), writing (\l CanWrite) and \e incremental reading (\l    CanReadIncremental). Reimplement capabilities() in you subclass to    expose the capabilities of your image format.    create() should create an instance of your QImageIOHandler    subclass, with the provided device and format properly set, and    return this handler. You must also reimplement keys() so that Qt    knows which image formats your plugin supports.    Different plugins can support different capabilities. For example,    you may have one plugin that supports reading the GIF format, and    another that supports writing. Qt will select the correct plugin    for the job, depending on the return value of capabilities(). If    several plugins support the same capability, Qt will select one    arbitrarily.    \sa QImageIOHandler, {How to Create Qt Plugins}*//*!    \enum QImageIOPlugin::Capability    This enum describes the capabilities of a QImageIOPlugin.    \value CanRead The plugin can read images.    \value CanWrite The plugin can write images.    \value CanReadIncremental The plugin can read images incrementally.*//*!    \class QImageIOHandlerFactoryInterface    \brief The QImageIOHandlerFactoryInterface class provides the factory    interface for QImageIOPlugin.    \internal    \sa QImageIOPlugin*/#include "qimageiohandler.h"#include <qbytearray.h>#include <qimage.h>#include <qvariant.h>class QIODevice;class QImageIOHandlerPrivate{    Q_DECLARE_PUBLIC(QImageIOHandler)public:    QImageIOHandlerPrivate(QImageIOHandler *q);    virtual ~QImageIOHandlerPrivate();    QIODevice *device;    mutable QByteArray format;    QImageIOHandler *q_ptr;};QImageIOHandlerPrivate::QImageIOHandlerPrivate(QImageIOHandler *q){    device = 0;    q_ptr = q;}QImageIOHandlerPrivate::~QImageIOHandlerPrivate(){}/*!    Constructs a QImageIOHandler object.*/QImageIOHandler::QImageIOHandler()    : d_ptr(new QImageIOHandlerPrivate(this)){}/*! \internal    Constructs a QImageIOHandler object, using the private member \a    dd.*/QImageIOHandler::QImageIOHandler(QImageIOHandlerPrivate &dd)    : d_ptr(&dd){}/*!    Destructs the QImageIOHandler object.*/QImageIOHandler::~QImageIOHandler(){    delete d_ptr;}/*!    Sets the device of the QImageIOHandler to \a device. The image    handler will use this device when reading and writing images.    The device can only be set once and must be set before calling    canRead(), read(), write(), etc. If you need to read multiple    files, construct multiple instances of the appropriate    QImageIOHandler subclass.    \sa device()*/void QImageIOHandler::setDevice(QIODevice *device){

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -