From d19280aeb91ccbed4c7638ac7de2d42362d3d638 Mon Sep 17 00:00:00 2001 From: Maciej Suminski Date: Thu, 13 Feb 2014 19:31:27 +0100 Subject: [PATCH] Small GAL refactorization, mostly correcting constness. --- common/gal/cairo/cairo_gal.cpp | 5 +-- common/gal/graphics_abstraction_layer.cpp | 12 +++---- common/gal/opengl/opengl_gal.cpp | 2 +- common/view/view.cpp | 4 +-- common/view/wx_view_controls.cpp | 4 +-- include/gal/cairo/cairo_gal.h | 5 ++- include/gal/graphics_abstraction_layer.h | 42 ++++++++++++++--------- include/gal/opengl/opengl_gal.h | 2 +- 8 files changed, 41 insertions(+), 35 deletions(-) diff --git a/common/gal/cairo/cairo_gal.cpp b/common/gal/cairo/cairo_gal.cpp index 5f180d7338..2c172d0400 100644 --- a/common/gal/cairo/cairo_gal.cpp +++ b/common/gal/cairo/cairo_gal.cpp @@ -35,9 +35,6 @@ using namespace KIGFX; -///> Opacity of a single layer -const float LAYER_ALPHA = 0.8; - CAIRO_GAL::CAIRO_GAL( wxWindow* aParent, wxEvtHandler* aMouseListener, wxEvtHandler* aPaintListener, const wxString& aName ) : wxWindow( aParent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxEXPAND, aName ) @@ -430,7 +427,7 @@ void CAIRO_GAL::SetLayerDepth( double aLayerDepth ) } -void CAIRO_GAL::Transform( MATRIX3x3D aTransformation ) +void CAIRO_GAL::Transform( const MATRIX3x3D& aTransformation ) { cairo_matrix_t cairoTransformation; diff --git a/common/gal/graphics_abstraction_layer.cpp b/common/gal/graphics_abstraction_layer.cpp index 2a3d9a089c..67794a89c1 100644 --- a/common/gal/graphics_abstraction_layer.cpp +++ b/common/gal/graphics_abstraction_layer.cpp @@ -112,17 +112,17 @@ void GAL::DrawGrid() SetTarget( TARGET_NONCACHED ); // Draw the origin marker - double origSize = static_cast( gridOriginMarkerSize ) / worldScale; + double originSize = gridOriginMarkerSize / worldScale; SetLayerDepth( GAL::GRID_DEPTH ); SetIsFill( false ); SetIsStroke( true ); SetStrokeColor( COLOR4D( 1.0, 1.0, 1.0, 1.0 ) ); SetLineWidth( gridLineWidth / worldScale ); - DrawLine( gridOrigin + VECTOR2D( -origSize, -origSize ), - gridOrigin + VECTOR2D( origSize, origSize ) ); - DrawLine( gridOrigin + VECTOR2D( -origSize, origSize ), - gridOrigin + VECTOR2D( origSize, -origSize ) ); - DrawCircle( gridOrigin, origSize * 0.7 ); + DrawLine( gridOrigin + VECTOR2D( -originSize, -originSize ), + gridOrigin + VECTOR2D( originSize, originSize ) ); + DrawLine( gridOrigin + VECTOR2D( -originSize, originSize ), + gridOrigin + VECTOR2D( originSize, -originSize ) ); + DrawCircle( gridOrigin, originSize * 0.7 ); // Draw the grid // For the drawing the start points, end points and increments have diff --git a/common/gal/opengl/opengl_gal.cpp b/common/gal/opengl/opengl_gal.cpp index a665377e73..873fff51fd 100644 --- a/common/gal/opengl/opengl_gal.cpp +++ b/common/gal/opengl/opengl_gal.cpp @@ -600,7 +600,7 @@ void OPENGL_GAL::SetStrokeColor( const COLOR4D& aColor ) } -void OPENGL_GAL::Transform( MATRIX3x3D aTransformation ) +void OPENGL_GAL::Transform( const MATRIX3x3D& aTransformation ) { GLdouble matrixData[16] = { 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 }; diff --git a/common/view/view.cpp b/common/view/view.cpp index e27751bb76..e9c6324012 100644 --- a/common/view/view.cpp +++ b/common/view/view.cpp @@ -197,7 +197,7 @@ int VIEW::Query( const BOX2I& aRect, std::vector& aResult ) VECTOR2D VIEW::ToWorld( const VECTOR2D& aCoord, bool aAbsolute ) const { - MATRIX3x3D matrix = m_gal->GetWorldScreenMatrix().Inverse(); + const MATRIX3x3D& matrix = m_gal->GetScreenWorldMatrix(); if( aAbsolute ) { @@ -212,7 +212,7 @@ VECTOR2D VIEW::ToWorld( const VECTOR2D& aCoord, bool aAbsolute ) const VECTOR2D VIEW::ToScreen( const VECTOR2D& aCoord, bool aAbsolute ) const { - MATRIX3x3D matrix = m_gal->GetWorldScreenMatrix(); + const MATRIX3x3D& matrix = m_gal->GetWorldScreenMatrix(); if( aAbsolute ) { diff --git a/common/view/wx_view_controls.cpp b/common/view/wx_view_controls.cpp index 48107911d2..ef919c68e6 100644 --- a/common/view/wx_view_controls.cpp +++ b/common/view/wx_view_controls.cpp @@ -35,9 +35,7 @@ using namespace KIGFX; const wxEventType WX_VIEW_CONTROLS::EVT_REFRESH_MOUSE = wxNewEventType(); WX_VIEW_CONTROLS::WX_VIEW_CONTROLS( VIEW* aView, wxWindow* aParentPanel ) : - VIEW_CONTROLS( aView ), - m_state( IDLE ), - m_parentPanel( aParentPanel ) + VIEW_CONTROLS( aView ), m_state( IDLE ), m_parentPanel( aParentPanel ) { m_parentPanel->Connect( wxEVT_MOTION, wxMouseEventHandler( WX_VIEW_CONTROLS::onMotion ), NULL, this ); diff --git a/include/gal/cairo/cairo_gal.h b/include/gal/cairo/cairo_gal.h index 20477db08a..8da314560e 100644 --- a/include/gal/cairo/cairo_gal.h +++ b/include/gal/cairo/cairo_gal.h @@ -164,7 +164,7 @@ public: // -------------- /// @copydoc GAL::Transform() - virtual void Transform( MATRIX3x3D aTransformation ); + virtual void Transform( const MATRIX3x3D& aTransformation ); /// @copydoc GAL::Rotate() virtual void Rotate( double aAngle ); @@ -386,6 +386,9 @@ private: /// Format used to store pixels static const cairo_format_t GAL_FORMAT = CAIRO_FORMAT_RGB24; + + ///> Opacity of a single layer + static const float LAYER_ALPHA = 0.8; }; } // namespace KIGFX diff --git a/include/gal/graphics_abstraction_layer.h b/include/gal/graphics_abstraction_layer.h index 118faf38ac..a6fad9b6fc 100644 --- a/include/gal/graphics_abstraction_layer.h +++ b/include/gal/graphics_abstraction_layer.h @@ -31,8 +31,6 @@ #include #include -#include - #include #include @@ -162,7 +160,7 @@ public: virtual bool Show( bool aShow ) = 0; /// @brief Returns GAL canvas size in pixels - VECTOR2D GetScreenPixelSize() const + const VECTOR2D& GetScreenPixelSize() const { return screenSize; } @@ -222,7 +220,7 @@ public: * * @return the color for stroking the outline. */ - inline COLOR4D GetStrokeColor() + inline const COLOR4D& GetStrokeColor() const { return strokeColor; } @@ -252,7 +250,7 @@ public: * * @return the actual line width. */ - inline double GetLineWidth() + inline double GetLineWidth() const { return lineWidth; } @@ -335,7 +333,7 @@ public: * * @param aTransformation is the ransformation matrix. */ - virtual void Transform( MATRIX3x3D aTransformation ) = 0; + virtual void Transform( const MATRIX3x3D& aTransformation ) = 0; /** * @brief Rotate the context. @@ -428,11 +426,21 @@ public: * * @return the transformation matrix. */ - MATRIX3x3D GetWorldScreenMatrix() + const MATRIX3x3D& GetWorldScreenMatrix() const { return worldScreenMatrix; } + /** + * @brief Get the screen <-> world transformation matrix. + * + * @return the transformation matrix. + */ + const MATRIX3x3D& GetScreenWorldMatrix() const + { + return screenWorldMatrix; + } + /** * @brief Set the world <-> screen transformation matrix. * @@ -487,7 +495,7 @@ public: * * @return the look at point. */ - inline VECTOR2D GetLookAtPoint() + inline const VECTOR2D& GetLookAtPoint() const { return lookAtPoint; } @@ -507,7 +515,7 @@ public: * * @return the zoom factor. */ - inline double GetZoomFactor() + inline double GetZoomFactor() const { return zoomFactor; } @@ -528,7 +536,7 @@ public: /** * @brief Returns the minimum depth in the currently used range (the top). */ - inline double GetMinDepth() + inline double GetMinDepth() const { return depthRange.x; } @@ -536,7 +544,7 @@ public: /** * @brief Returns the maximum depth in the currently used range (the bottom). */ - inline double GetMaxDepth() + inline double GetMaxDepth() const { return depthRange.y; } @@ -546,7 +554,7 @@ public: * * @return the actual world scale factor. */ - inline double GetWorldScale() + inline double GetWorldScale() const { return worldScale; } @@ -694,7 +702,7 @@ public: * * @return the grid line width */ - inline double GetGridLineWidth() + inline double GetGridLineWidth() const { return gridLineWidth; } @@ -739,7 +747,7 @@ public: * @param aPoint the pointposition in screen coordinates. * @return the point position in world coordinates. */ - inline virtual VECTOR2D ToWorld( const VECTOR2D& aPoint ) const + inline VECTOR2D ToWorld( const VECTOR2D& aPoint ) const { return VECTOR2D( screenWorldMatrix * aPoint ); } @@ -750,15 +758,15 @@ public: * @param aPoint the pointposition in world coordinates. * @return the point position in screen coordinates. */ - inline virtual VECTOR2D ToScreen( const VECTOR2D& aPoint ) const + inline VECTOR2D ToScreen( const VECTOR2D& aPoint ) const { return VECTOR2D( worldScreenMatrix * aPoint ); } /** - * @brief Enable/Disable cursor. + * @brief Enable/disable cursor. * - * @param aIsCursorEnabled is true if the cursor should be enabled, else false. + * @param aCursorEnabled is true if the cursor should be drawn, else false. */ inline void SetCursorEnabled( bool aCursorEnabled ) { diff --git a/include/gal/opengl/opengl_gal.h b/include/gal/opengl/opengl_gal.h index 401f0a4411..792205c91d 100644 --- a/include/gal/opengl/opengl_gal.h +++ b/include/gal/opengl/opengl_gal.h @@ -157,7 +157,7 @@ public: // -------------- /// @copydoc GAL::Transform() - virtual void Transform( MATRIX3x3D aTransformation ); + virtual void Transform( const MATRIX3x3D& aTransformation ); /// @copydoc GAL::Rotate() virtual void Rotate( double aAngle );