|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef IMAGEUTILS_H
|
|
Toshihiro Shimizu |
890ddd |
#define IMAGEUTILS_H
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzBase includes
|
|
Toshihiro Shimizu |
890ddd |
#include "trasterfx.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// TnzCore includes
|
|
Toshihiro Shimizu |
890ddd |
#include "tregion.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tvectorimage.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Qt includes
|
|
Toshihiro Shimizu |
890ddd |
#include <qwidget></qwidget>
|
|
Toshihiro Shimizu |
890ddd |
#include <qkeyevent></qkeyevent>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#undef DVAPI
|
|
Toshihiro Shimizu |
890ddd |
#undef DVVAR
|
|
Toshihiro Shimizu |
890ddd |
#ifdef TOONZQT_EXPORTS
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_EXPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_EXPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#else
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_IMPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_IMPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
// Forward declarations
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TFilePath;
|
|
Toshihiro Shimizu |
890ddd |
class TPropertyGroup;
|
|
Toshihiro Shimizu |
890ddd |
//enum TRenderSettings::ResampleQuality;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class QHBoxLayout;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//=============================================================================
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
namespace ImageUtils
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*!
|
|
Toshihiro Shimizu |
890ddd |
\brief Notify that a task on a single frame is completed.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI FrameTaskNotifier : public QObject
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int m_errorCount,
|
|
Toshihiro Shimizu |
890ddd |
m_warningCount;
|
|
Toshihiro Shimizu |
890ddd |
bool m_abort;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
FrameTaskNotifier() : m_errorCount(0), m_warningCount(0), m_abort(false) {}
|
|
Toshihiro Shimizu |
890ddd |
~FrameTaskNotifier() {}
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void notifyFrameCompleted(int frame) { emit frameCompleted(frame); }
|
|
Toshihiro Shimizu |
890ddd |
void notifyError()
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
m_errorCount++;
|
|
Toshihiro Shimizu |
890ddd |
emit error();
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
void notifyLevelCompleted(const TFilePath &fullPath) { emit levelCompleted(fullPath); }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool abortTask() { return m_abort; }
|
|
Toshihiro Shimizu |
890ddd |
void reset() { m_abort = false; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
int getErrorCount() const { return m_errorCount; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
signals:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void frameCompleted(int);
|
|
Toshihiro Shimizu |
890ddd |
void levelCompleted(const TFilePath &fullPath);
|
|
Toshihiro Shimizu |
890ddd |
void error();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
protected slots:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void onCancelTask() { m_abort = true; }
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//----------------------------------------------------
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TFilePath DVAPI duplicate(const TFilePath &levelPath);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void DVAPI premultiply(const TFilePath &levelPath);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void DVAPI convert(
|
|
Toshihiro Shimizu |
890ddd |
const TFilePath &source, //!< Level path to convert from.
|
|
Toshihiro Shimizu |
890ddd |
const TFilePath &dest, //!< Level path to convert to.
|
|
Toshihiro Shimizu |
890ddd |
const TFrameId &from, //!< First source frame to convert. Supports TFrameId::EMPTY_FRAME
|
|
Toshihiro Shimizu |
890ddd |
//! to specify conversion from the beginning of level.
|
|
Toshihiro Shimizu |
890ddd |
const TFrameId &to, //!< Last source frame to convert. Supports TFrameId::EMPTY_FRAME
|
|
Toshihiro Shimizu |
890ddd |
//! to specify conversion to the end of level.
|
|
Toshihiro Shimizu |
890ddd |
double framerate, //!< Frame rate for destination movie formats.
|
|
Toshihiro Shimizu |
890ddd |
TPropertyGroup *prop, //!< Format properties for the destination level.
|
|
Toshihiro Shimizu |
890ddd |
FrameTaskNotifier *frameNotifier, //!< Observer class for frame success notifications.
|
|
Toshihiro Shimizu |
890ddd |
const TPixel &bgColor = TPixel::Transparent, //!< Destination Background color.
|
|
Toshihiro Shimizu |
890ddd |
bool removeDotBeforeFrameNumber = false /*-- ConvertPopup での指定に合わせて、[レベル名].[フレーム番号].[拡張子]のうち、
|
|
Toshihiro Shimizu |
890ddd |
[レベル名]と[フレーム番号]の間のドットを消す。 --*/
|
|
Toshihiro Shimizu |
890ddd |
); //!< Converts a saved level to fullcolor, and saves the result.
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void DVAPI convertNaa2Tlv(
|
|
Toshihiro Shimizu |
890ddd |
const TFilePath &source, //!< Level path to convert from.
|
|
Toshihiro Shimizu |
890ddd |
const TFilePath &dest, //!< Level path to convert to.
|
|
Toshihiro Shimizu |
890ddd |
const TFrameId &from, //!< First source frame to convert.
|
|
Toshihiro Shimizu |
890ddd |
const TFrameId &to, //!< Last source frame to convert.
|
|
Toshihiro Shimizu |
890ddd |
FrameTaskNotifier *frameNotifier, //!< Observer class for frame success notifications.
|
|
Toshihiro Shimizu |
890ddd |
TPalette *palette = 0); //!< Special conversion function from an antialiased level to tlv.
|
|
Toshihiro Shimizu |
890ddd |
//! \sa Function ImageUtils::convert().
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
double DVAPI getQuantizedZoomFactor(double zf, bool forward);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void DVAPI getFillingInformationOverlappingArea(
|
|
Toshihiro Shimizu |
890ddd |
const TVectorImageP &vi,
|
|
Toshihiro Shimizu |
890ddd |
std::vector<tfilledregioninf> ®s,</tfilledregioninf>
|
|
Toshihiro Shimizu |
890ddd |
const TRectD &area1,
|
|
Toshihiro Shimizu |
890ddd |
const TRectD &area2 = TRectD());
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void DVAPI getFillingInformationInArea(
|
|
Toshihiro Shimizu |
890ddd |
const TVectorImageP &vi,
|
|
Toshihiro Shimizu |
890ddd |
std::vector<tfilledregioninf> ®s,</tfilledregioninf>
|
|
Toshihiro Shimizu |
890ddd |
const TRectD &area);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void DVAPI assignFillingInformation(
|
|
Toshihiro Shimizu |
890ddd |
TVectorImage &vi,
|
|
Toshihiro Shimizu |
890ddd |
const std::vector<tfilledregioninf> ®s);</tfilledregioninf>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void DVAPI getStrokeStyleInformationInArea(
|
|
Toshihiro Shimizu |
890ddd |
const TVectorImageP &vi,
|
|
Shinya Kitaoka |
3bfa54 |
std::vector<std::pair<int, int="">> &strokesInfo, // pair:strokeIndex, styleIndex</std::pair<int,>
|
|
Toshihiro Shimizu |
890ddd |
const TRectD &area);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//*********************************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
// FullScreenWidget declaration
|
|
Toshihiro Shimizu |
890ddd |
//*********************************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*!
|
|
Toshihiro Shimizu |
890ddd |
\brief Temporary class used to deal with QTBUG #7556 - QGLWidgets going fullscreen \a need
|
|
Toshihiro Shimizu |
890ddd |
a containing widget that leaves a small margin to prevent the widget from covering other
|
|
Toshihiro Shimizu |
890ddd |
widgets (specifically, context menus).
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI FullScreenWidget : public QWidget
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
Q_OBJECT
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QWidget *m_widget; //!< (Owned) The content widget.
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
FullScreenWidget(QWidget *parent = 0);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void setWidget(QWidget *widget); //!< Sets the content, surrendering ownership.
|
|
Toshihiro Shimizu |
890ddd |
QWidget *widget() const { return m_widget; }
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public slots:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool toggleFullScreen(bool quit = false);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
//*********************************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
// ShortcutZoomer declaration
|
|
Toshihiro Shimizu |
890ddd |
//*********************************************************************************************
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
/*!
|
|
Toshihiro Shimizu |
890ddd |
\brief The ShortcutZoomer abstract base class is used by viewer widget to access
|
|
Toshihiro Shimizu |
890ddd |
shortcut-related commands.
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
\details This class is a wrapper for shortcuts established by the CommandManager
|
|
Toshihiro Shimizu |
890ddd |
interface.
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
Subclass it defining the required view commands, then implement a
|
|
Toshihiro Shimizu |
890ddd |
\p keyPressEvent() event handler in the viewer widget you want:
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
\code
|
|
Toshihiro Shimizu |
890ddd |
void MyViewer::keyPressEvent(QKeyEvent* ke)
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
if(ViewerZoomer(this).exec(event))
|
|
Toshihiro Shimizu |
890ddd |
return;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
return MyViewerBase::keyPressEvent(ke);
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
\endcode
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
\warning Use the FullScreenWidget class to wrap a viewer class that
|
|
Toshihiro Shimizu |
890ddd |
needs to go fullscreen.
|
|
Toshihiro Shimizu |
890ddd |
*/
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI ShortcutZoomer
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
QWidget *m_widget; //!< Viewer widget being processed.
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
ShortcutZoomer(QWidget *viewerWidget); //!< Constructs on the specified viewer widget.
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
QWidget *getWidget() { return m_widget; } //!< Returns the processed viewer widget.
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
bool exec(QKeyEvent *event); //!< Processes a key event for shortcuts related to
|
|
Toshihiro Shimizu |
890ddd |
//! viewer commands.
|
|
Toshihiro Shimizu |
890ddd |
//! \return Whether a shortcut was recognized.
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Toshihiro Shimizu |
890ddd |
virtual bool zoom(bool zoomin, bool resetZoom) = 0; //!< Handler for zoom commands. Required.
|
|
Toshihiro Shimizu |
890ddd |
virtual bool fit() { return false; } //!< Handler for 'fit to image' commands.
|
|
Toshihiro Shimizu |
890ddd |
virtual bool setActualPixelSize() { return false; } //!< Handler for 'use actual pixel size' commands.
|
|
Toshihiro Shimizu |
890ddd |
virtual bool toggleFullScreen(bool quit = false) //! Handler for 'toggle fullscreen' commands.
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
return false;
|
|
Toshihiro Shimizu |
890ddd |
}
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
} // namespace ImageUtils
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|