mirror of
https://github.com/libretro/scummvm.git
synced 2024-12-13 12:39:56 +00:00
126 lines
4.4 KiB
C++
126 lines
4.4 KiB
C++
/* ScummVM - Graphic Adventure Engine
|
|
*
|
|
* ScummVM is the legal property of its developers, whose names
|
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
|
* file distributed with this source distribution.
|
|
*
|
|
* 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 3 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, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
*/
|
|
|
|
#ifndef IMAGEALBUM_DIALOG_H
|
|
#define IMAGEALBUM_DIALOG_H
|
|
|
|
#include "common/formats/formatinfo.h"
|
|
#include "common/str.h"
|
|
#include "common/rational.h"
|
|
|
|
namespace Common {
|
|
|
|
class SeekableReadStream;
|
|
|
|
} // End of namespace Common
|
|
|
|
namespace Graphics {
|
|
|
|
struct Surface;
|
|
|
|
} // End of namespace Graphics
|
|
|
|
namespace GUI {
|
|
|
|
class Dialog;
|
|
|
|
enum ImageAlbumImageOrientation {
|
|
kImageAlbumImageOrientationUnspecified,
|
|
|
|
kImageAlbumImageOrientationLandscape,
|
|
kImageAlbumImageOrientationPortrait,
|
|
};
|
|
|
|
enum ImageAlbumViewTransformation {
|
|
kImageAlbumViewTransformationNone,
|
|
kImageAlbumViewTransformationRotate90CCW,
|
|
kImageAlbumViewTransformationRotate90CW,
|
|
kImageAlbumViewTransformationRotate180,
|
|
};
|
|
|
|
struct ImageAlbumImageMetadata {
|
|
ImageAlbumImageMetadata() : _orientation(kImageAlbumImageOrientationUnspecified), _viewTransformation(kImageAlbumViewTransformationNone), _hdpi(72, 1), _vdpi(72, 1) {}
|
|
|
|
ImageAlbumViewTransformation _viewTransformation; ///< Transformation required to present the image at its normal intended viewing orientation
|
|
ImageAlbumImageOrientation _orientation; ///< Orientation of the image after view transformation
|
|
Common::Rational _hdpi; ///< Horizontal DPI of the image
|
|
Common::Rational _vdpi; ///< Vertical DPI of the image
|
|
};
|
|
|
|
/**
|
|
* @brief Interface that supplies images to the image album dialog.
|
|
*/
|
|
class ImageAlbumImageSupplier {
|
|
public:
|
|
virtual ~ImageAlbumImageSupplier();
|
|
|
|
/**
|
|
* @brief Loads and returns the image for a specified slot
|
|
* @param slot The image slot to load
|
|
* @param outSurface An outputted pointer to a surface containing the image data
|
|
* @param outHasPalette An outputted boolean containing true if the image has a palette and false if not
|
|
* @param outPalette Outputted palette colors if the image has a palette
|
|
* @param outMetadata Outputted metadata for the image
|
|
* @return True if the image loaded successfully, false if it failed
|
|
*/
|
|
virtual bool loadImageSlot(uint slot, const Graphics::Surface *&outSurface, bool &outHasPalette, byte (&outPalette)[256 * 3], ImageAlbumImageMetadata &outMetadata) = 0;
|
|
|
|
/**
|
|
* @brief Releases any resources for an image loaded with loadImageSlot
|
|
* @param slot The image slot to release
|
|
*/
|
|
virtual void releaseImageSlot(uint slot) = 0;
|
|
|
|
/**
|
|
* Returns the file format of the image in the specified image slot, if it's capable of being loaded as raw file data.
|
|
*
|
|
* @param slot The image slot to load
|
|
* @param outFormat A reference to a file format ID to set to the file format
|
|
* @return true if the slot is loadable as raw data and has a MIME type available, false if not
|
|
*/
|
|
virtual bool getFileFormatForImageSlot(uint slot, Common::FormatInfo::FormatID &outFormat) const = 0;
|
|
|
|
/**
|
|
* @brief Opens a slot as a read stream containing raw file data.
|
|
* @param slot The image slot to load
|
|
* @return The created read stream, if it could be created, or nullptr if it failed
|
|
*/
|
|
virtual Common::SeekableReadStream *createReadStreamForSlot(uint slot) = 0;
|
|
|
|
/**
|
|
* @brief Returns the number of image slots
|
|
* @return The number of slots
|
|
*/
|
|
virtual uint getNumSlots() const = 0;
|
|
|
|
/**
|
|
* @brief Returns the default filename, including extension, for the specified slot
|
|
* @return The filename of the slot without an extension
|
|
*/
|
|
virtual Common::U32String getDefaultFileNameForSlot(uint slot) const = 0;
|
|
};
|
|
|
|
Dialog *createImageAlbumDialog(const Common::U32String &title, ImageAlbumImageSupplier *imageSupplier, uint initialSlot);
|
|
|
|
} // End of namespace GUI
|
|
|
|
#endif
|