#ifndef _WARP_H_ #define _EARP_H_ #include #include namespace projection { class Warp : public QObject { public: Warp(); virtual ~Warp(); void draw(bool bForExport, bool bForBlend); void resize(int width, int height); bool pick(int x, int y); bool drag(int x, int y); void setEnabled(bool bEnabled); bool getEnabled() const; void setNumCtrlPoints(int num); int getNumCtrlPoints() const; void setZoom(float zoom); float getZoom() const; void setGridSize(int gridSize); int getGridSize() const; void setShowCtrlPoints(bool bShow); bool getShowCtrlPoints() const; void reset(); /** * Restore the warp data from XML data. * * @param element Parent XML element of the warp data. */ void initFromDOMElement(const QDomElement& element); /** * Store the current warp data as XML data. * * @param name XML node name of the data. * @param doc XML document to store the data. * @return Current warp data as XML data. */ QDomElement domElement(const QString& name, QDomDocument& doc) const; private: int pickCtrlPoint(float x, float y); private: bool m_bEnabled; int m_numCtrlPoints; float* m_pCtrlPoints; int m_gridSize; bool m_bShowCtrlPoints; int m_selectedCtrlPoint; GLint m_viewport[4]; GLdouble m_modelMatrix[16]; GLdouble m_projMatrix[16]; float m_zoom; int m_lastMouseX; int m_lastMouseY; }; }; // projection #endif // _WARP_H_