summaryrefslogtreecommitdiff
path: root/vcl
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2017-01-05 14:09:17 +0000
committerCaolán McNamara <caolanm@redhat.com>2017-01-05 15:00:54 +0000
commit3cd39b91f872ca32b09a362de2cb0efaf0e2ba3b (patch)
tree43cdb5f4e075c00eb6b63648ed825a1281192e8e /vcl
parent4f5cd607e30633ca51263c2f45c4753e8990302f (diff)
move ImageList to framework
this can probably be replaced by a std::*map<Image> Change-Id: Ic36c5f406f5ea51cb9ff135858e319e0877179c7
Diffstat (limited to 'vcl')
-rw-r--r--vcl/Library_vcl.mk3
-rw-r--r--vcl/inc/image.h37
-rw-r--r--vcl/source/image/ImageArrayData.cxx93
-rw-r--r--vcl/source/image/ImageList.cxx317
-rw-r--r--vcl/source/image/ImplImageList.cxx73
5 files changed, 0 insertions, 523 deletions
diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk
index 07566d0eb194..e8277dc78f95 100644
--- a/vcl/Library_vcl.mk
+++ b/vcl/Library_vcl.mk
@@ -312,12 +312,9 @@ $(eval $(call gb_Library_add_exception_objects,vcl,\
vcl/source/bitmap/BitmapTools \
vcl/source/bitmap/checksum \
vcl/source/image/Image \
- vcl/source/image/ImageArrayData \
- vcl/source/image/ImageList \
vcl/source/image/ImageTree \
vcl/source/image/ImageRepository \
vcl/source/image/ImplImage \
- vcl/source/image/ImplImageList \
vcl/source/image/ImplImageTree \
vcl/source/helper/canvasbitmap \
vcl/source/helper/canvastools \
diff --git a/vcl/inc/image.h b/vcl/inc/image.h
index 5446dc7d322a..72a7f3233775 100644
--- a/vcl/inc/image.h
+++ b/vcl/inc/image.h
@@ -25,43 +25,6 @@
#include <unordered_map>
#include <vector>
-struct ImageAryData
-{
- OUString maName;
- // Images identified by either name, or by id
- sal_uInt16 mnId;
- BitmapEx maBitmapEx;
-
- ImageAryData( const OUString &aName,
- sal_uInt16 nId, const BitmapEx &aBitmap );
- ImageAryData( const ImageAryData& rData );
- ~ImageAryData();
-
- bool IsLoadable() { return maBitmapEx.IsEmpty() && !maName.isEmpty(); }
- void Load(const OUString &rPrefix);
-
- ImageAryData& operator=( const ImageAryData& rData );
-};
-
-struct ImplImageList
-{
- typedef std::unordered_map< OUString, ImageAryData *, OUStringHash >
- ImageAryDataNameHash;
-
- std::vector<ImageAryData *> maImages;
- ImageAryDataNameHash maNameHash;
- OUString maPrefix;
- Size maImageSize;
-
- ImplImageList();
- ImplImageList( const ImplImageList &aSrc );
- ~ImplImageList();
-
- void AddImage( const OUString &aName,
- sal_uInt16 nId, const BitmapEx &aBitmapEx );
- void RemoveImage( sal_uInt16 nPos );
-};
-
struct ImplImage
{
BitmapChecksum maBitmapChecksum;
diff --git a/vcl/source/image/ImageArrayData.cxx b/vcl/source/image/ImageArrayData.cxx
deleted file mode 100644
index e1854d2aa55a..000000000000
--- a/vcl/source/image/ImageArrayData.cxx
+++ /dev/null
@@ -1,93 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * 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 .
- */
-
-#include <vcl/outdev.hxx>
-#include <vcl/bitmapex.hxx>
-#include <vcl/alpha.hxx>
-#include <vcl/window.hxx>
-#include <vcl/bitmapaccess.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/image.hxx>
-#include <vcl/settings.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/ImageTree.hxx>
-
-#include <image.h>
-#include <memory>
-
-#if OSL_DEBUG_LEVEL > 0
-#include <rtl/strbuf.hxx>
-#endif
-
-#include "BitmapProcessor.hxx"
-
-ImageAryData::ImageAryData( const ImageAryData& rData ) :
- maName( rData.maName ),
- mnId( rData.mnId ),
- maBitmapEx( rData.maBitmapEx )
-{
-}
-
-ImageAryData::ImageAryData( const OUString &aName,
- sal_uInt16 nId, const BitmapEx &aBitmap )
- : maName( aName ), mnId( nId ), maBitmapEx( aBitmap )
-{
-}
-
-ImageAryData::~ImageAryData()
-{
-}
-
-ImageAryData& ImageAryData::operator=( const ImageAryData& rData )
-{
- maName = rData.maName;
- mnId = rData.mnId;
- maBitmapEx = rData.maBitmapEx;
-
- return *this;
-}
-
-void ImageAryData::Load(const OUString &rPrefix)
-{
- OUString aIconTheme = Application::GetSettings().GetStyleSettings().DetermineIconTheme();
-
- OUString aFileName = rPrefix;
- aFileName += maName;
-
- bool bSuccess = ImageTree::get().loadImage(aFileName, aIconTheme, maBitmapEx, true);
-
- if (bSuccess)
- {}
-#if OSL_DEBUG_LEVEL > 0
- else
- {
- OStringBuffer aMessage;
- aMessage.append( "ImageAryData::Load: failed to load image '" );
- aMessage.append( OUStringToOString( aFileName, RTL_TEXTENCODING_UTF8 ).getStr() );
- aMessage.append( "'" );
- aMessage.append( " from icon theme '" );
- aMessage.append( OUStringToOString( aIconTheme, RTL_TEXTENCODING_UTF8 ).getStr() );
- aMessage.append( "'" );
- OSL_FAIL( aMessage.makeStringAndClear().getStr() );
- }
-#endif
-}
-
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/image/ImageList.cxx b/vcl/source/image/ImageList.cxx
deleted file mode 100644
index 6610c51c3216..000000000000
--- a/vcl/source/image/ImageList.cxx
+++ /dev/null
@@ -1,317 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * 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 .
- */
-
-#include <osl/file.hxx>
-#include <tools/debug.hxx>
-#include <tools/stream.hxx>
-#include <tools/rc.h>
-#include <tools/rc.hxx>
-#include <tools/resmgr.hxx>
-#include <vcl/settings.hxx>
-#include <vcl/outdev.hxx>
-#include <vcl/graph.hxx>
-#include <vcl/graphicfilter.hxx>
-#include <vcl/svapp.hxx>
-#include <vcl/image.hxx>
-#include <vcl/imagerepository.hxx>
-#include <vcl/ImageTree.hxx>
-#include <image.h>
-
-ImageList::ImageList()
-{
-}
-
-ImageList::ImageList(const std::vector< OUString >& rNameVector,
- const OUString& rPrefix)
-{
- SAL_INFO( "vcl", "vcl: ImageList::ImageList(const vector< OUString >& ..." );
-
- ImplInit( sal::static_int_cast< sal_uInt16 >( rNameVector.size() ), Size() );
-
- mpImplData->maPrefix = rPrefix;
- for( size_t i = 0; i < rNameVector.size(); ++i )
- {
- mpImplData->AddImage( rNameVector[ i ], static_cast< sal_uInt16 >( i ) + 1, BitmapEx() );
- }
-}
-
-void ImageList::ImplInit( sal_uInt16 nItems, const Size &rSize )
-{
- mpImplData.reset(new ImplImageList);
- mpImplData->maImages.reserve( nItems );
- mpImplData->maImageSize = rSize;
-}
-
-// FIXME: Rather a performance hazard
-BitmapEx ImageList::GetAsHorizontalStrip() const
-{
- Size aSize( mpImplData->maImageSize );
- sal_uInt16 nCount = GetImageCount();
- if( !nCount )
- return BitmapEx();
- aSize.Width() *= nCount;
-
- // Load any stragglers
- for (sal_uInt16 nIdx = 0; nIdx < nCount; nIdx++)
- {
- ImageAryData *pData = mpImplData->maImages[ nIdx ];
- if( pData->IsLoadable() )
- pData->Load( mpImplData->maPrefix );
- }
-
- BitmapEx aTempl = mpImplData->maImages[ 0 ]->maBitmapEx;
- BitmapEx aResult;
- Bitmap aPixels( aSize, aTempl.GetBitmap().GetBitCount() );
- if( aTempl.IsAlpha() )
- aResult = BitmapEx( aPixels, AlphaMask( aSize ) );
- else if( aTempl.IsTransparent() )
- aResult = BitmapEx( aPixels, Bitmap( aSize, aTempl.GetMask().GetBitCount() ) );
- else
- aResult = BitmapEx( aPixels );
-
- Rectangle aSrcRect( Point( 0, 0 ), mpImplData->maImageSize );
- for (sal_uInt16 nIdx = 0; nIdx < nCount; nIdx++)
- {
- Rectangle aDestRect( Point( nIdx * mpImplData->maImageSize.Width(), 0 ),
- mpImplData->maImageSize );
- ImageAryData *pData = mpImplData->maImages[ nIdx ];
- aResult.CopyPixel( aDestRect, aSrcRect, &pData->maBitmapEx);
- }
-
- return aResult;
-}
-
-void ImageList::InsertFromHorizontalStrip( const BitmapEx &rBitmapEx,
- const std::vector< OUString > &rNameVector )
-{
- sal_uInt16 nItems = sal::static_int_cast< sal_uInt16 >( rNameVector.size() );
-
- if (!nItems)
- return;
-
- Size aSize( rBitmapEx.GetSizePixel() );
- DBG_ASSERT (rBitmapEx.GetSizePixel().Width() % nItems == 0,
- "ImageList::InsertFromHorizontalStrip - very odd size");
- aSize.Width() /= nItems;
- ImplInit( nItems, aSize );
-
- for (sal_uInt16 nIdx = 0; nIdx < nItems; nIdx++)
- {
- BitmapEx aBitmap( rBitmapEx, Point( nIdx * aSize.Width(), 0 ), aSize );
- mpImplData->AddImage( rNameVector[ nIdx ], nIdx + 1, aBitmap );
- }
-}
-
-sal_uInt16 ImageList::ImplGetImageId( const OUString& rImageName ) const
-{
- ImageAryData *pImg = mpImplData->maNameHash[ rImageName ];
- if( pImg )
- return pImg->mnId;
- else
- return 0;
-}
-
-void ImageList::AddImage( const OUString& rImageName, const Image& rImage )
-{
- SAL_WARN_IF( GetImagePos( rImageName ) != IMAGELIST_IMAGE_NOTFOUND, "vcl", "ImageList::AddImage() - ImageName already exists" );
-
- if( !mpImplData )
- ImplInit( 0, rImage.GetSizePixel() );
-
- mpImplData->AddImage( rImageName, GetImageCount() + 1,
- rImage.GetBitmapEx() );
-}
-
-void ImageList::ReplaceImage( const OUString& rImageName, const Image& rImage )
-{
- const sal_uInt16 nId = ImplGetImageId( rImageName );
-
- if( nId )
- {
- //Just replace the bitmap rather than doing RemoveImage / AddImage
- //which breaks index-based iteration.
- ImageAryData *pImg = mpImplData->maNameHash[ rImageName ];
- pImg->maBitmapEx = rImage.GetBitmapEx();
- }
-}
-
-void ImageList::RemoveImage( sal_uInt16 nId )
-{
- for( size_t i = 0; i < mpImplData->maImages.size(); ++i )
- {
- if( mpImplData->maImages[ i ]->mnId == nId )
- {
- mpImplData->RemoveImage( static_cast< sal_uInt16 >( i ) );
- break;
- }
- }
-}
-
-Image ImageList::GetImage( sal_uInt16 nId ) const
-{
- Image aRet;
-
- if (mpImplData)
- {
- for (ImageAryData* pImageData : mpImplData->maImages)
- {
- if (pImageData->mnId == nId)
- {
- if (pImageData->IsLoadable())
- pImageData->Load(mpImplData->maPrefix);
- aRet = Image(pImageData->maBitmapEx);
- }
- }
- }
-
- if (!aRet)
- {
- BitmapEx rBitmap;
- bool bResult = vcl::ImageRepository::loadDefaultImage(rBitmap);
- if (bResult)
- aRet = Image(rBitmap);
- }
-
- return aRet;
-}
-
-Image ImageList::GetImage( const OUString& rImageName ) const
-{
- if( mpImplData )
- {
- ImageAryData *pImg = mpImplData->maNameHash[ rImageName ];
-
- if( pImg )
- {
- if( pImg->IsLoadable() )
- pImg->Load( mpImplData->maPrefix );
- return Image( pImg->maBitmapEx );
- }
- }
-
- return Image();
-}
-
-sal_uInt16 ImageList::GetImageCount() const
-{
- return mpImplData ? static_cast< sal_uInt16 >( mpImplData->maImages.size() ) : 0;
-}
-
-sal_uInt16 ImageList::GetImagePos( sal_uInt16 nId ) const
-{
-
- if( mpImplData && nId )
- {
- for( size_t i = 0; i < mpImplData->maImages.size(); ++i )
- {
- if (mpImplData->maImages[ i ]->mnId == nId)
- return static_cast< sal_uInt16 >( i );
- }
- }
-
- return IMAGELIST_IMAGE_NOTFOUND;
-}
-
-bool ImageList::HasImageForId( sal_uInt16 nId ) const
-{
- return GetImagePos( nId ) != IMAGELIST_IMAGE_NOTFOUND;
-}
-
-sal_uInt16 ImageList::GetImagePos( const OUString& rImageName ) const
-{
- if( mpImplData && !rImageName.isEmpty() )
- {
- for( size_t i = 0; i < mpImplData->maImages.size(); i++ )
- {
- if (mpImplData->maImages[i]->maName == rImageName)
- return static_cast< sal_uInt16 >( i );
- }
- }
-
- return IMAGELIST_IMAGE_NOTFOUND;
-}
-
-sal_uInt16 ImageList::GetImageId( sal_uInt16 nPos ) const
-{
- if( mpImplData && (nPos < GetImageCount()) )
- return mpImplData->maImages[ nPos ]->mnId;
-
- return 0;
-}
-
-OUString ImageList::GetImageName( sal_uInt16 nPos ) const
-{
- if( mpImplData && (nPos < GetImageCount()) )
- return mpImplData->maImages[ nPos ]->maName;
-
- return OUString();
-}
-
-void ImageList::GetImageNames( std::vector< OUString >& rNames ) const
-{
- SAL_INFO( "vcl", "vcl: ImageList::GetImageNames" );
-
- rNames = std::vector< OUString >();
-
- if( mpImplData )
- {
- for(const ImageAryData* pImage : mpImplData->maImages)
- {
- const OUString& rName( pImage->maName );
- if( !rName.isEmpty())
- rNames.push_back( rName );
- }
- }
-}
-
-Size ImageList::GetImageSize() const
-{
- Size aRet;
-
- if( mpImplData )
- {
- aRet = mpImplData->maImageSize;
-
- // force load of 1st image to see - uncommon case.
- if( aRet.Width() == 0 && aRet.Height() == 0 &&
- !mpImplData->maImages.empty() )
- {
- Image aTmp = GetImage( mpImplData->maImages[ 0 ]->mnId );
- aRet = mpImplData->maImageSize = aTmp.GetSizePixel();
- }
- }
- return aRet;
-}
-
-bool ImageList::operator==( const ImageList& rImageList ) const
-{
- bool bRet = false;
-
- if( rImageList.mpImplData == mpImplData )
- bRet = true;
- else if( !rImageList.mpImplData || !mpImplData )
- bRet = false;
- else if( rImageList.GetImageCount() == GetImageCount() &&
- rImageList.mpImplData->maImageSize == mpImplData->maImageSize )
- bRet = true; // strange semantic
-
- return bRet;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/source/image/ImplImageList.cxx b/vcl/source/image/ImplImageList.cxx
deleted file mode 100644
index f1a0d94973c8..000000000000
--- a/vcl/source/image/ImplImageList.cxx
+++ /dev/null
@@ -1,73 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*
- * This file is part of the LibreOffice project.
- *
- * This Source Code Form is subject to the terms of the Mozilla Public
- * License, v. 2.0. If a copy of the MPL was not distributed with this
- * file, You can obtain one at http://mozilla.org/MPL/2.0/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * 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 .
- */
-
-#include <vcl/outdev.hxx>
-#include <vcl/bitmapex.hxx>
-#include <vcl/alpha.hxx>
-#include <vcl/window.hxx>
-#include <vcl/bitmapaccess.hxx>
-#include <vcl/virdev.hxx>
-#include <vcl/image.hxx>
-#include <vcl/settings.hxx>
-
-#include <image.h>
-#include <memory>
-
-ImplImageList::ImplImageList()
-{
-}
-
-ImplImageList::ImplImageList( const ImplImageList &aSrc )
- : maPrefix(aSrc.maPrefix)
- , maImageSize(aSrc.maImageSize)
-{
- maImages.reserve( aSrc.maImages.size() );
- for ( std::vector<ImageAryData *>::const_iterator aIt = aSrc.maImages.begin(), aEnd = aSrc.maImages.end(); aIt != aEnd; ++aIt )
- {
- ImageAryData* pAryData = new ImageAryData( **aIt );
- maImages.push_back( pAryData );
- if( !pAryData->maName.isEmpty() )
- maNameHash [ pAryData->maName ] = pAryData;
- }
-}
-
-ImplImageList::~ImplImageList()
-{
- for ( std::vector<ImageAryData *>::iterator aIt = maImages.begin(), aEnd = maImages.end(); aIt != aEnd; ++aIt )
- delete *aIt;
-}
-
-void ImplImageList::AddImage( const OUString &aName,
- sal_uInt16 nId, const BitmapEx &aBitmapEx )
-{
- ImageAryData *pImg = new ImageAryData( aName, nId, aBitmapEx );
- maImages.push_back( pImg );
- if( !aName.isEmpty() )
- maNameHash [ aName ] = pImg;
-}
-
-void ImplImageList::RemoveImage( sal_uInt16 nPos )
-{
- ImageAryData *pImg = maImages[ nPos ];
- if( !pImg->maName.isEmpty() )
- maNameHash.erase( pImg->maName );
- maImages.erase( maImages.begin() + nPos );
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */