xref: /aoo41x/main/vcl/inc/vcl/gradient.hxx (revision 0d63794c)
1*0d63794cSAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3*0d63794cSAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4*0d63794cSAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5*0d63794cSAndrew Rist  * distributed with this work for additional information
6*0d63794cSAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7*0d63794cSAndrew Rist  * to you under the Apache License, Version 2.0 (the
8*0d63794cSAndrew Rist  * "License"); you may not use this file except in compliance
9*0d63794cSAndrew Rist  * with the License.  You may obtain a copy of the License at
10*0d63794cSAndrew Rist  *
11*0d63794cSAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12*0d63794cSAndrew Rist  *
13*0d63794cSAndrew Rist  * Unless required by applicable law or agreed to in writing,
14*0d63794cSAndrew Rist  * software distributed under the License is distributed on an
15*0d63794cSAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*0d63794cSAndrew Rist  * KIND, either express or implied.  See the License for the
17*0d63794cSAndrew Rist  * specific language governing permissions and limitations
18*0d63794cSAndrew Rist  * under the License.
19*0d63794cSAndrew Rist  *
20*0d63794cSAndrew Rist  *************************************************************/
21*0d63794cSAndrew Rist 
22*0d63794cSAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir #ifndef _SV_GRADIENT_HXX
25cdf0e10cSrcweir #define _SV_GRADIENT_HXX
26cdf0e10cSrcweir 
27cdf0e10cSrcweir #include <vcl/dllapi.h>
28cdf0e10cSrcweir #include <tools/color.hxx>
29cdf0e10cSrcweir 
30cdf0e10cSrcweir #include <vcl/vclenum.hxx>
31cdf0e10cSrcweir 
32cdf0e10cSrcweir // ------------------
33cdf0e10cSrcweir // - Gradient-Types -
34cdf0e10cSrcweir // ------------------
35cdf0e10cSrcweir 
36cdf0e10cSrcweir /*
37cdf0e10cSrcweir #ifndef ENUM_GRADIENTSTYLE_DECLARED
38cdf0e10cSrcweir #define ENUM_GRADIENTSTYLE_DECLARED
39cdf0e10cSrcweir enum GradientStyle { GRADIENT_LINEAR, GRADIENT_AXIAL, GRADIENT_RADIAL,
40cdf0e10cSrcweir                      GRADIENT_ELLIPTICAL, GRADIENT_SQUARE, GRADIENT_RECT };
41cdf0e10cSrcweir #endif
42cdf0e10cSrcweir */
43cdf0e10cSrcweir 
44cdf0e10cSrcweir // ----------------
45cdf0e10cSrcweir // - Impl_Gradient -
46cdf0e10cSrcweir // ----------------
47cdf0e10cSrcweir 
48cdf0e10cSrcweir class SvStream;
49cdf0e10cSrcweir 
50cdf0e10cSrcweir class Impl_Gradient
51cdf0e10cSrcweir {
52cdf0e10cSrcweir public:
53cdf0e10cSrcweir     sal_uLong           mnRefCount;
54cdf0e10cSrcweir     GradientStyle   meStyle;
55cdf0e10cSrcweir     Color           maStartColor;
56cdf0e10cSrcweir     Color           maEndColor;
57cdf0e10cSrcweir     sal_uInt16          mnAngle;
58cdf0e10cSrcweir     sal_uInt16          mnBorder;
59cdf0e10cSrcweir     sal_uInt16          mnOfsX;
60cdf0e10cSrcweir     sal_uInt16          mnOfsY;
61cdf0e10cSrcweir     sal_uInt16          mnIntensityStart;
62cdf0e10cSrcweir     sal_uInt16          mnIntensityEnd;
63cdf0e10cSrcweir     sal_uInt16          mnStepCount;
64cdf0e10cSrcweir 
65cdf0e10cSrcweir     friend SvStream& operator>>( SvStream& rIStm, Impl_Gradient& rImplGradient );
66cdf0e10cSrcweir     friend SvStream& operator<<( SvStream& rOStm, const Impl_Gradient& rImplGradient );
67cdf0e10cSrcweir 
68cdf0e10cSrcweir                     Impl_Gradient();
69cdf0e10cSrcweir                     Impl_Gradient( const Impl_Gradient& rImplGradient );
70cdf0e10cSrcweir };
71cdf0e10cSrcweir 
72cdf0e10cSrcweir // ------------
73cdf0e10cSrcweir // - Gradient -
74cdf0e10cSrcweir // ------------
75cdf0e10cSrcweir 
76cdf0e10cSrcweir class VCL_DLLPUBLIC Gradient
77cdf0e10cSrcweir {
78cdf0e10cSrcweir private:
79cdf0e10cSrcweir     Impl_Gradient*	mpImplGradient;
80cdf0e10cSrcweir 	void			MakeUnique();
81cdf0e10cSrcweir 
82cdf0e10cSrcweir public:
83cdf0e10cSrcweir                     Gradient();
84cdf0e10cSrcweir                     Gradient( const Gradient& rGradient );
85cdf0e10cSrcweir                     Gradient( GradientStyle eStyle );
86cdf0e10cSrcweir                     Gradient( GradientStyle eStyle,
87cdf0e10cSrcweir                               const Color& rStartColor,
88cdf0e10cSrcweir                               const Color& rEndColor );
89cdf0e10cSrcweir                     ~Gradient();
90cdf0e10cSrcweir 
91cdf0e10cSrcweir     void            SetStyle( GradientStyle eStyle );
GetStyle() const92cdf0e10cSrcweir     GradientStyle   GetStyle() const { return mpImplGradient->meStyle; }
93cdf0e10cSrcweir 
94cdf0e10cSrcweir     void            SetStartColor( const Color& rColor );
GetStartColor() const95cdf0e10cSrcweir     const Color&    GetStartColor() const { return mpImplGradient->maStartColor; }
96cdf0e10cSrcweir     void            SetEndColor( const Color& rColor );
GetEndColor() const97cdf0e10cSrcweir     const Color&    GetEndColor() const { return mpImplGradient->maEndColor; }
98cdf0e10cSrcweir 
99cdf0e10cSrcweir     void            SetAngle( sal_uInt16 nAngle );
GetAngle() const100cdf0e10cSrcweir     sal_uInt16          GetAngle() const { return mpImplGradient->mnAngle; }
101cdf0e10cSrcweir 
102cdf0e10cSrcweir     void            SetBorder( sal_uInt16 nBorder );
GetBorder() const103cdf0e10cSrcweir     sal_uInt16          GetBorder() const { return mpImplGradient->mnBorder; }
104cdf0e10cSrcweir     void            SetOfsX( sal_uInt16 nOfsX );
GetOfsX() const105cdf0e10cSrcweir     sal_uInt16          GetOfsX() const { return mpImplGradient->mnOfsX; }
106cdf0e10cSrcweir     void            SetOfsY( sal_uInt16 nOfsY );
GetOfsY() const107cdf0e10cSrcweir     sal_uInt16          GetOfsY() const { return mpImplGradient->mnOfsY; }
108cdf0e10cSrcweir 
109cdf0e10cSrcweir     void            SetStartIntensity( sal_uInt16 nIntens );
GetStartIntensity() const110cdf0e10cSrcweir     sal_uInt16          GetStartIntensity() const { return mpImplGradient->mnIntensityStart; }
111cdf0e10cSrcweir     void            SetEndIntensity( sal_uInt16 nIntens );
GetEndIntensity() const112cdf0e10cSrcweir     sal_uInt16          GetEndIntensity() const { return mpImplGradient->mnIntensityEnd; }
113cdf0e10cSrcweir 
114cdf0e10cSrcweir     void            SetSteps( sal_uInt16 nSteps );
GetSteps() const115cdf0e10cSrcweir     sal_uInt16          GetSteps() const { return mpImplGradient->mnStepCount; }
116cdf0e10cSrcweir 
117cdf0e10cSrcweir     Gradient&       operator=( const Gradient& rGradient );
118cdf0e10cSrcweir     sal_Bool            operator==( const Gradient& rGradient ) const;
operator !=(const Gradient & rGradient) const119cdf0e10cSrcweir     sal_Bool            operator!=( const Gradient& rGradient ) const
120cdf0e10cSrcweir                         { return !(Gradient::operator==( rGradient )); }
IsSameInstance(const Gradient & rGradient) const121cdf0e10cSrcweir     sal_Bool            IsSameInstance( const Gradient& rGradient ) const
122cdf0e10cSrcweir                         { return (mpImplGradient == rGradient.mpImplGradient); }
123cdf0e10cSrcweir 
124cdf0e10cSrcweir     friend VCL_DLLPUBLIC SvStream& operator>>( SvStream& rIStm, Gradient& rGradient );
125cdf0e10cSrcweir     friend VCL_DLLPUBLIC SvStream& operator<<( SvStream& rOStm, const Gradient& rGradient );
126cdf0e10cSrcweir };
127cdf0e10cSrcweir 
128cdf0e10cSrcweir #endif  // _SV_GRADIENT_HXX
129