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