| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| |
| #ifndef _SV_IMAGE_HXX |
| #define _SV_IMAGE_HXX |
| |
| #include <vcl/dllapi.h> |
| #include <tools/gen.hxx> |
| #include <tools/resid.hxx> |
| #include <vcl/sv.h> |
| #include <vcl/bitmapex.hxx> |
| #include <com/sun/star/uno/Reference.hxx> |
| |
| #include <vector> |
| |
| struct ImplImage; |
| struct ImplImageList; |
| namespace com { namespace sun { namespace star { namespace graphic { class XGraphic;} } } } |
| |
| // ----------- |
| // - Defines - |
| // ----------- |
| |
| #define IMAGE_STDBTN_COLOR Color( 0xC0, 0xC0, 0xC0 ) |
| #define IMAGELIST_IMAGE_NOTFOUND ((sal_uInt16)0xFFFF) |
| |
| // ----------------------- |
| // - ImageColorTransform - |
| // ----------------------- |
| |
| enum ImageColorTransform |
| { |
| IMAGECOLORTRANSFORM_NONE = 0, |
| IMAGECOLORTRANSFORM_HIGHCONTRAST = 1, |
| IMAGECOLORTRANSFORM_MONOCHROME_BLACK = 2, |
| IMAGECOLORTRANSFORM_MONOCHROME_WHITE = 3 |
| }; |
| |
| // --------- |
| // - Image - |
| // --------- |
| |
| class VCL_DLLPUBLIC Image |
| { |
| friend class ImageList; |
| friend class OutputDevice; |
| |
| public: |
| Image(); |
| Image( const ResId& rResId ); |
| Image( const Image& rImage ); |
| Image( const BitmapEx& rBitmapEx ); |
| Image( const Bitmap& rBitmap ); |
| Image( const Bitmap& rBitmap, const Bitmap& rMaskBitmap ); |
| Image( const Bitmap& rBitmap, const Color& rColor ); |
| Image( const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >& rxGraphic ); |
| ~Image(); |
| |
| Size GetSizePixel() const; |
| |
| BitmapEx GetBitmapEx() const; |
| ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic > GetXGraphic() const; |
| |
| Image GetColorTransformedImage( ImageColorTransform eColorTransform ) const; |
| static void GetColorTransformArrays( ImageColorTransform eColorTransform, Color*& rpSrcColor, Color*& rpDstColor, sal_uLong& rColorCount ); |
| |
| void Invert(); |
| |
| sal_Bool operator!() const { return( !mpImplData ? true : false ); } |
| Image& operator=( const Image& rImage ); |
| sal_Bool operator==( const Image& rImage ) const; |
| sal_Bool operator!=( const Image& rImage ) const { return !(Image::operator==( rImage )); } |
| |
| private: |
| |
| ImplImage* mpImplData; |
| |
| SAL_DLLPRIVATE void ImplInit( const BitmapEx& rBmpEx ); |
| }; |
| |
| // ------------- |
| // - ImageList - |
| // ------------- |
| |
| class VCL_DLLPUBLIC ImageList |
| { |
| public: |
| ImageList( sal_uInt16 nInit = 8, sal_uInt16 nGrow = 4 ); |
| ImageList( const ResId& rResId ); |
| ImageList( const ::std::vector< ::rtl::OUString >& rNameVector, |
| const ::rtl::OUString& rPrefix, |
| const Color* pMaskColor = NULL ); |
| ImageList( const ImageList& rImageList ); |
| ~ImageList(); |
| |
| void Clear(); |
| void InsertFromHorizontalStrip( const BitmapEx &rBitmapEx, |
| const std::vector< rtl::OUString > &rNameVector ); |
| void InsertFromHorizontalBitmap( const ResId& rResId, |
| sal_uInt16 nCount, |
| const Color *pNonAlphaMaskColor, |
| const Color *pSearchColors = NULL, |
| const Color *pReplaceColors = NULL, |
| sal_uLong nColorCount = 0); |
| BitmapEx GetAsHorizontalStrip() const; |
| sal_uInt16 GetImageCount() const; |
| Size GetImageSize() const; |
| |
| void AddImage( sal_uInt16 nNewId, const Image& rImage ); |
| void AddImage( const ::rtl::OUString& rImageName, const Image& rImage ); |
| |
| void ReplaceImage( sal_uInt16 nId, const Image& rImage ); |
| void ReplaceImage( const ::rtl::OUString& rImageName, const Image& rImage ); |
| |
| void ReplaceImage( sal_uInt16 nId, sal_uInt16 nReplaceId ); |
| void ReplaceImage( const ::rtl::OUString& rImageName, const ::rtl::OUString& rReplaceName ); |
| |
| void RemoveImage( sal_uInt16 nId ); |
| void RemoveImage( const ::rtl::OUString& rImageName ); |
| |
| Image GetImage( sal_uInt16 nId ) const; |
| Image GetImage( const ::rtl::OUString& rImageName ) const; |
| |
| sal_uInt16 GetImagePos( sal_uInt16 nId ) const; |
| bool HasImageAtPos( sal_uInt16 nId ) const; |
| sal_uInt16 GetImagePos( const ::rtl::OUString& rImageName ) const; |
| |
| sal_uInt16 GetImageId( sal_uInt16 nPos ) const; |
| void GetImageIds( ::std::vector< sal_uInt16 >& rIds ) const; |
| |
| ::rtl::OUString GetImageName( sal_uInt16 nPos ) const; |
| void GetImageNames( ::std::vector< ::rtl::OUString >& rNames ) const; |
| |
| ImageList& operator=( const ImageList& rImageList ); |
| sal_Bool operator==( const ImageList& rImageList ) const; |
| sal_Bool operator!=( const ImageList& rImageList ) const { return !(ImageList::operator==( rImageList )); } |
| |
| private: |
| |
| ImplImageList* mpImplData; |
| sal_uInt16 mnInitSize; |
| sal_uInt16 mnGrowSize; |
| |
| SAL_DLLPRIVATE void ImplInitBitmapEx( const ::rtl::OUString& rUserImageName, |
| const ::std::vector< ::rtl::OUString >& rImageNames, |
| const ::rtl::OUString& rSymbolsStyle, |
| BitmapEx& rBmpEx, |
| const Color* pMaskColor ) const; |
| SAL_DLLPRIVATE void ImplInit( sal_uInt16 nItems, const Size &rSize ); |
| SAL_DLLPRIVATE sal_uInt16 ImplGetImageId( const ::rtl::OUString& rImageName ) const; |
| SAL_DLLPRIVATE void ImplMakeUnique(); |
| }; |
| |
| #endif // _SV_IMAGE_HXX |