diff --git a/docs/changes.txt b/docs/changes.txt index b053bf8d84..d21707be89 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -150,12 +150,8 @@ All (GUI): in wxPGArrayEditorDialog. - Fix wxPropertyGrid issues with horizontal scrolling. - Add wxPG_DIALOG_TITLE wxPGProperty attribute. -- Add support for creating a wxGraphicsPen with a gradient. The gradient will - be used when stroking a path in a wxGraphicsContext, if supported by the - graphics context backend. -- Add support for applying a transformation matrix to a gradient for both - wxGraphicsPen and wxGraphicsBrush, if supported by the graphics context - backend. +- Add support for creating a wxGraphicsPen with a gradient. +- Add support for applying a transformation matrix to a gradient. wxGTK: diff --git a/include/wx/graphics.h b/include/wx/graphics.h index ddc1393610..059d11c62d 100644 --- a/include/wx/graphics.h +++ b/include/wx/graphics.h @@ -271,7 +271,7 @@ extern WXDLLIMPEXP_DATA_CORE(wxGraphicsMatrix) wxNullGraphicsMatrix; // ---------------------------------------------------------------------------- // wxGradientStop and wxGradientStops: Specify what intermediate colors are used -// and how they are are spread out in a gradient +// and how they are spread out in a gradient // ---------------------------------------------------------------------------- // Describes a single gradient stop. @@ -374,7 +374,7 @@ public: wxGraphicsPenInfo& LinearGradient(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxColour& c1, const wxColour& c2, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) { m_gradientType = wxGRADIENT_LINEAR; m_x1 = x1; @@ -390,7 +390,7 @@ public: wxGraphicsPenInfo& LinearGradient(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) { m_gradientType = wxGRADIENT_LINEAR; m_x1 = x1; @@ -406,7 +406,7 @@ public: RadialGradient(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxColour& oColor, const wxColour& cColor, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) { m_gradientType = wxGRADIENT_RADIAL; m_x1 = startX; @@ -424,7 +424,7 @@ public: RadialGradient(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) { m_gradientType = wxGRADIENT_RADIAL; m_x1 = startX; @@ -626,12 +626,12 @@ public: CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxColour& c1, const wxColour& c2, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) const; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) const; wxGraphicsBrush CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) const; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) const; // sets the brush to a radial gradient originating at (xo,yc) and ending // on a circle around (xc,yc) with the given radius; the colours may be @@ -640,13 +640,13 @@ public: CreateRadialGradientBrush(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxColour& oColor, const wxColour& cColor, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) const; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) const; wxGraphicsBrush CreateRadialGradientBrush(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) const; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) const; // creates a font virtual wxGraphicsFont CreateFont( const wxFont &font , const wxColour &col = *wxBLACK ) const; @@ -1023,14 +1023,14 @@ public: CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) = 0; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) = 0; virtual wxGraphicsBrush CreateRadialGradientBrush(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) = 0; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) = 0; // sets the font virtual wxGraphicsFont CreateFont( const wxFont &font , const wxColour &col = *wxBLACK ) = 0; diff --git a/interface/wx/graphics.h b/interface/wx/graphics.h index d6762be285..e9fcc856ed 100644 --- a/interface/wx/graphics.h +++ b/interface/wx/graphics.h @@ -305,6 +305,12 @@ enum wxCompositionMode wxCOMPOSITION_ADD /**< @e R = @e S + @e D */ }; +/** + Used to indicate what kind of gradient is set in a wxGraphicsPenInfo + object. + + @since 3.1.3 + */ enum wxGradientType { wxGRADIENT_NONE, wxGRADIENT_LINEAR, @@ -641,13 +647,13 @@ public: The version taking wxGraphicsGradientStops is new in wxWidgets 2.9.1. - The ability to apply a transformation matrix to the gradient was added in 3.1.3 + The @ matrix parameter was added in wxWidgets 3.1.3 */ wxGraphicsBrush CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxColour& c1, const wxColour& c2, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) const; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) const; /** @overload @@ -656,7 +662,7 @@ public: CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) const; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) const; /** Creates a native brush with a radial gradient. @@ -677,7 +683,7 @@ public: wxDouble radius, const wxColour& oColor, const wxColour& cColor, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) const; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) const; /** @overload @@ -687,7 +693,7 @@ public: wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) = 0; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) = 0; /** Sets the brush for filling paths. @@ -1468,7 +1474,7 @@ public: wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) = 0; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) = 0; /** Creates a native affine transformation matrix from the passed in @@ -1503,7 +1509,7 @@ public: wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) = 0; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) = 0; /** Extracts a sub-bitmap from an existing bitmap. @@ -1646,24 +1652,24 @@ public: wxGraphicsPenInfo& LinearGradient(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxColour& c1, const wxColour& c2, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); wxGraphicsPenInfo& LinearGradient(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); wxGraphicsPenInfo& RadialGradient(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxColour& oColor, const wxColour& cColor, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); wxGraphicsPenInfo& RadialGradient(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); wxColour GetColour() const; wxBitmap GetStipple() const; diff --git a/src/generic/graphicc.cpp b/src/generic/graphicc.cpp index dcdc0efa24..c6586c98e8 100644 --- a/src/generic/graphicc.cpp +++ b/src/generic/graphicc.cpp @@ -263,11 +263,11 @@ public: void CreateLinearGradientPattern(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); void CreateRadialGradientPattern(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); protected: // Call this to use the given bitmap as stipple. Bitmap must be non-null @@ -755,7 +755,7 @@ wxCairoPenBrushBaseData::CreateLinearGradientPattern(wxDouble x1, wxDouble y1, { m_pattern = cairo_pattern_create_linear(x1,y1,x2,y2); - if (! matrix.IsNull()) + if ( !matrix.IsNull() ) { cairo_matrix_t m = *((cairo_matrix_t*) matrix.GetNativeMatrix()); cairo_pattern_set_matrix(m_pattern, &m); @@ -773,7 +773,7 @@ wxCairoPenBrushBaseData::CreateRadialGradientPattern(wxDouble startX, wxDouble s { m_pattern = cairo_pattern_create_radial(startX,startY,0.0,endX,endY,radius); - if (! matrix.IsNull()) + if ( !matrix.IsNull() ) { cairo_matrix_t m = *((cairo_matrix_t*) matrix.GetNativeMatrix()); cairo_pattern_set_matrix(m_pattern, &m); @@ -2994,14 +2994,14 @@ public : CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) wxOVERRIDE; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) wxOVERRIDE; virtual wxGraphicsBrush CreateRadialGradientBrush(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) wxOVERRIDE; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) wxOVERRIDE; // sets the font virtual wxGraphicsFont CreateFont( const wxFont &font , const wxColour &col = *wxBLACK ) wxOVERRIDE ; diff --git a/src/msw/graphics.cpp b/src/msw/graphics.cpp index bcd1ceb4c4..fe33e8077b 100644 --- a/src/msw/graphics.cpp +++ b/src/msw/graphics.cpp @@ -261,20 +261,21 @@ class wxGDIPlusPenBrushBaseData : public wxGraphicsObjectRefData { public: wxGDIPlusPenBrushBaseData(wxGraphicsRenderer* renderer); - ~wxGDIPlusPenBrushBaseData(); - virtual void Init(); + virtual void Init() wxOVERRIDE; void CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); void CreateRadialGradientBrush(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); protected: + virtual ~wxGDIPlusPenBrushBaseData(); + Brush* m_brush; GraphicsPath* m_brushPath; Image* m_image; @@ -636,14 +637,14 @@ public : CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) wxOVERRIDE; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) wxOVERRIDE; virtual wxGraphicsBrush CreateRadialGradientBrush(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) wxOVERRIDE; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) wxOVERRIDE; // create a native bitmap representation virtual wxGraphicsBitmap CreateBitmap( const wxBitmap &bitmap ) wxOVERRIDE; @@ -763,7 +764,7 @@ wxGDIPlusPenBrushBaseData::CreateLinearGradientBrush( brush->SetWrapMode(WrapModeTileFlipXY); // Apply the matrix if there is one - if (! matrix.IsNull()) + if ( !matrix.IsNull() ) { Matrix* m = static_cast(matrix.GetNativeMatrix()); m->Invert(); @@ -798,7 +799,7 @@ wxGDIPlusPenBrushBaseData::CreateRadialGradientBrush( // the area outside of the gradient's radius is not getting painted. // Apply the matrix if there is one - if (! matrix.IsNull()) + if ( !matrix.IsNull() ) { Matrix* m = static_cast(matrix.GetNativeMatrix()); m->Invert(); diff --git a/src/msw/graphicsd2d.cpp b/src/msw/graphicsd2d.cpp index 805b1d9b76..17b8909c60 100644 --- a/src/msw/graphicsd2d.cpp +++ b/src/msw/graphicsd2d.cpp @@ -2549,13 +2549,13 @@ public: void CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); void CreateRadialGradientBrush(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix); + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix); ID2D1Brush* GetBrush() const { @@ -4642,14 +4642,14 @@ public : wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) wxOVERRIDE; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) wxOVERRIDE; wxGraphicsBrush CreateRadialGradientBrush( wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) wxOVERRIDE; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) wxOVERRIDE; // create a native bitmap representation wxGraphicsBitmap CreateBitmap(const wxBitmap& bitmap) wxOVERRIDE; diff --git a/src/osx/carbon/graphics.cpp b/src/osx/carbon/graphics.cpp index d137f81d4e..2ded6cf21f 100644 --- a/src/osx/carbon/graphics.cpp +++ b/src/osx/carbon/graphics.cpp @@ -588,7 +588,7 @@ wxMacCoreGraphicsPenBrushDataBase::CreateLinearGradientShading( CGPointMake((CGFloat) x2, (CGFloat) y2), m_gradientFunction, true, true ); m_isShading = true; - if (! matrix.IsNull() ) + if ( !matrix.IsNull() ) { m_shadingMatrix = (wxMacCoreGraphicsMatrixData*)((wxMacCoreGraphicsMatrixData*)matrix.GetRefData())->Clone(); m_shadingMatrix->Invert(); @@ -609,7 +609,7 @@ wxMacCoreGraphicsPenBrushDataBase::CreateRadialGradientShading( CGPointMake((CGFloat) endX, (CGFloat) endY), (CGFloat) radius, m_gradientFunction, true, true ); m_isShading = true; - if (! matrix.IsNull() ) + if ( !matrix.IsNull() ) { m_shadingMatrix = (wxMacCoreGraphicsMatrixData*)((wxMacCoreGraphicsMatrixData*)matrix.GetRefData())->Clone(); m_shadingMatrix->Invert(); diff --git a/src/qt/graphics.cpp b/src/qt/graphics.cpp index 6470256314..c427099b08 100644 --- a/src/qt/graphics.cpp +++ b/src/qt/graphics.cpp @@ -1138,14 +1138,14 @@ public: CreateLinearGradientBrush(wxDouble x1, wxDouble y1, wxDouble x2, wxDouble y2, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) wxOVERRIDE; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) wxOVERRIDE; virtual wxGraphicsBrush CreateRadialGradientBrush(wxDouble startX, wxDouble startY, wxDouble endX, wxDouble endY, wxDouble radius, const wxGraphicsGradientStops& stops, - const wxGraphicsMatrix& matrix=wxNullGraphicsMatrix) wxOVERRIDE; + const wxGraphicsMatrix& matrix = wxNullGraphicsMatrix) wxOVERRIDE; // sets the font virtual wxGraphicsFont CreateFont(const wxFont& font,