1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_VCL_GRADIENT_HXX
21 #define INCLUDED_VCL_GRADIENT_HXX
23 #include <sal/types.h>
24 #include <vcl/dllapi.h>
25 #include <tools/color.hxx>
27 #include <vcl/vclenum.hxx>
28 #include <o3tl/cow_wrapper.hxx>
41 GradientStyle meStyle
;
48 sal_uInt16 mnIntensityStart
;
49 sal_uInt16 mnIntensityEnd
;
50 sal_uInt16 mnStepCount
;
53 Impl_Gradient( const Impl_Gradient
& rImplGradient
);
55 bool operator==( const Impl_Gradient
& rImpl_Gradient
) const;
59 class VCL_DLLPUBLIC Gradient
62 ::o3tl::cow_wrapper
< Impl_Gradient
> mpImplGradient
;
66 Gradient( const Gradient
& rGradient
);
67 Gradient( Gradient
&& rGradient
);
68 Gradient( GradientStyle eStyle
,
69 const Color
& rStartColor
,
70 const Color
& rEndColor
);
73 void SetStyle( GradientStyle eStyle
);
74 GradientStyle
GetStyle() const { return mpImplGradient
->meStyle
; }
76 void SetStartColor( const Color
& rColor
);
77 const Color
& GetStartColor() const { return mpImplGradient
->maStartColor
; }
78 void SetEndColor( const Color
& rColor
);
79 const Color
& GetEndColor() const { return mpImplGradient
->maEndColor
; }
81 void SetAngle( sal_uInt16 nAngle
);
82 sal_uInt16
GetAngle() const { return mpImplGradient
->mnAngle
; }
84 void SetBorder( sal_uInt16 nBorder
);
85 sal_uInt16
GetBorder() const { return mpImplGradient
->mnBorder
; }
86 void SetOfsX( sal_uInt16 nOfsX
);
87 sal_uInt16
GetOfsX() const { return mpImplGradient
->mnOfsX
; }
88 void SetOfsY( sal_uInt16 nOfsY
);
89 sal_uInt16
GetOfsY() const { return mpImplGradient
->mnOfsY
; }
91 void SetStartIntensity( sal_uInt16 nIntens
);
92 sal_uInt16
GetStartIntensity() const { return mpImplGradient
->mnIntensityStart
; }
93 void SetEndIntensity( sal_uInt16 nIntens
);
94 sal_uInt16
GetEndIntensity() const { return mpImplGradient
->mnIntensityEnd
; }
96 void SetSteps( sal_uInt16 nSteps
);
97 sal_uInt16
GetSteps() const { return mpImplGradient
->mnStepCount
; }
99 void GetBoundRect( const tools::Rectangle
& rRect
, tools::Rectangle
&rBoundRect
, Point
& rCenter
) const;
101 Gradient
& operator=( const Gradient
& rGradient
);
102 Gradient
& operator=( Gradient
&& rGradient
);
103 bool operator==( const Gradient
& rGradient
) const;
104 bool operator!=( const Gradient
& rGradient
) const
105 { return !(Gradient::operator==( rGradient
)); }
107 friend VCL_DLLPUBLIC SvStream
& ReadGradient( SvStream
& rIStm
, Gradient
& rGradient
);
108 friend VCL_DLLPUBLIC SvStream
& WriteGradient( SvStream
& rOStm
, const Gradient
& rGradient
);
111 #endif // INCLUDED_VCL_GRADIENT_HXX
113 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */