INTEGRATION: CWS impress69 (1.1.2); FILE ADDED
2005/09/21 15:06:14 af 1.1.2.1: #i54916# Initial revision.
This commit is contained in:
parent
db81ed98b0
commit
041ac7d3a9
1 changed files with 194 additions and 0 deletions
194
sd/source/ui/slidesorter/cache/SlsBitmapCompressor.hxx
vendored
Normal file
194
sd/source/ui/slidesorter/cache/SlsBitmapCompressor.hxx
vendored
Normal file
|
@ -0,0 +1,194 @@
|
||||||
|
/*************************************************************************
|
||||||
|
*
|
||||||
|
* $RCSfile: SlsBitmapCompressor.hxx,v $
|
||||||
|
*
|
||||||
|
* $Revision: 1.2 $
|
||||||
|
*
|
||||||
|
* last change: $Author: rt $ $Date: 2005-10-24 07:39:39 $
|
||||||
|
*
|
||||||
|
* The Contents of this file are made available subject to the terms of
|
||||||
|
* either of the following licenses
|
||||||
|
*
|
||||||
|
* - GNU Lesser General Public License Version 2.1
|
||||||
|
* - Sun Industry Standards Source License Version 1.1
|
||||||
|
*
|
||||||
|
* Sun Microsystems Inc., October, 2000
|
||||||
|
*
|
||||||
|
* GNU Lesser General Public License Version 2.1
|
||||||
|
* =============================================
|
||||||
|
* Copyright 2000 by Sun Microsystems, Inc.
|
||||||
|
* 901 San Antonio Road, Palo Alto, CA 94303, USA
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License version 2.1, as published by the Free Software Foundation.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston,
|
||||||
|
* MA 02111-1307 USA
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* Sun Industry Standards Source License Version 1.1
|
||||||
|
* =================================================
|
||||||
|
* The contents of this file are subject to the Sun Industry Standards
|
||||||
|
* Source License Version 1.1 (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.openoffice.org/license.html.
|
||||||
|
*
|
||||||
|
* Software provided under this License is provided on an "AS IS" basis,
|
||||||
|
* WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
|
||||||
|
* WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
|
||||||
|
* MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
|
||||||
|
* See the License for the specific provisions governing your rights and
|
||||||
|
* obligations concerning the Software.
|
||||||
|
*
|
||||||
|
* The Initial Developer of the Original Code is: Sun Microsystems, Inc.
|
||||||
|
*
|
||||||
|
* Copyright: 2000 by Sun Microsystems, Inc.
|
||||||
|
*
|
||||||
|
* All Rights Reserved.
|
||||||
|
*
|
||||||
|
* Contributor(s): _______________________________________
|
||||||
|
*
|
||||||
|
*
|
||||||
|
************************************************************************/
|
||||||
|
|
||||||
|
#ifndef SD_SLIDESORTER_BITMAP_COMPRESSOR_HXX
|
||||||
|
#define SD_SLIDESORTER_BITMAP_COMPRESSOR_HXX
|
||||||
|
|
||||||
|
#include <sal/types.h>
|
||||||
|
#include <tools/gen.hxx>
|
||||||
|
#include <boost/shared_ptr.hpp>
|
||||||
|
|
||||||
|
class BitmapEx;
|
||||||
|
|
||||||
|
namespace sd { namespace slidesorter { namespace cache {
|
||||||
|
|
||||||
|
class BitmapReplacement;
|
||||||
|
|
||||||
|
|
||||||
|
/** This interface class provides the minimal method set for classes that
|
||||||
|
implement the compression and decompression of preview bitmaps.
|
||||||
|
*/
|
||||||
|
class BitmapCompressor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/** Compress the given bitmap into a replacement format that is specific
|
||||||
|
to the compressor class.
|
||||||
|
*/
|
||||||
|
virtual ::boost::shared_ptr<BitmapReplacement> Compress (
|
||||||
|
const ::boost::shared_ptr<BitmapEx>& rpBitmap) const = 0;
|
||||||
|
|
||||||
|
/** Decompress the given replacement data into a preview bitmap.
|
||||||
|
Depending on the compression technique the returned bitmap may
|
||||||
|
differ from the original bitmap given to the Compress() method. It
|
||||||
|
may even of the wrong size or empty or the NULL pointer. It is the
|
||||||
|
task of the caller to create a new preview bitmap if the returned
|
||||||
|
one is not as desired.
|
||||||
|
*/
|
||||||
|
virtual ::boost::shared_ptr<BitmapEx> Decompress (const BitmapReplacement& rBitmapData)const=0;
|
||||||
|
|
||||||
|
/** Return whether the compression and decompression is lossless. This
|
||||||
|
value is used by the caller of Decompress() to decide whether to use
|
||||||
|
the returned bitmap as is or if a new preview has to be created.
|
||||||
|
*/
|
||||||
|
virtual bool IsLossless (void) const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Interface for preview bitmap replacements. Each bitmap
|
||||||
|
compressor/decompressor has to provide an implementation that is
|
||||||
|
suitable to store the compressed bitmaps.
|
||||||
|
*/
|
||||||
|
class BitmapReplacement
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual sal_Int32 GetMemorySize (void) const { return 0; }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** This is one trivial bitmap compressor. It stores bitmaps unmodified
|
||||||
|
instead of compressing them.
|
||||||
|
This compressor is lossless.
|
||||||
|
*/
|
||||||
|
class NoBitmapCompression
|
||||||
|
: public BitmapCompressor
|
||||||
|
{
|
||||||
|
class DummyReplacement;
|
||||||
|
public:
|
||||||
|
virtual ::boost::shared_ptr<BitmapReplacement> Compress (
|
||||||
|
const ::boost::shared_ptr<BitmapEx>& rpBitmap) const;
|
||||||
|
virtual ::boost::shared_ptr<BitmapEx> Decompress (const BitmapReplacement& rBitmapData) const;
|
||||||
|
virtual bool IsLossless (void) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** This is another trivial bitmap compressor. Instead of compressing a
|
||||||
|
bitmap, it throws the bitmap away. Its Decompress() method returns a
|
||||||
|
NULL pointer. The caller has to create a new preview bitmap instead.
|
||||||
|
This compressor clearly is not lossless.
|
||||||
|
*/
|
||||||
|
class CompressionByDeletion
|
||||||
|
: public BitmapCompressor
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual ::boost::shared_ptr<BitmapReplacement> Compress (
|
||||||
|
const ::boost::shared_ptr<BitmapEx>& rpBitmap) const;
|
||||||
|
virtual ::boost::shared_ptr<BitmapEx> Decompress (const BitmapReplacement& rBitmapData) const;
|
||||||
|
virtual bool IsLossless (void) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Compress a preview bitmap by reducing its resolution. While the aspect
|
||||||
|
ratio is maintained the horizontal resolution is scaled down to 100
|
||||||
|
pixels.
|
||||||
|
This compressor is not lossless.
|
||||||
|
*/
|
||||||
|
class ResolutionReduction
|
||||||
|
: public BitmapCompressor
|
||||||
|
{
|
||||||
|
class ResolutionReducedReplacement;
|
||||||
|
static const sal_Int32 mnWidth = 100;
|
||||||
|
public:
|
||||||
|
virtual ::boost::shared_ptr<BitmapReplacement> Compress (
|
||||||
|
const ::boost::shared_ptr<BitmapEx>& rpBitmap) const;
|
||||||
|
/** Scale the replacement bitmap up to the original size.
|
||||||
|
*/
|
||||||
|
virtual ::boost::shared_ptr<BitmapEx> Decompress (const BitmapReplacement& rBitmapData) const;
|
||||||
|
virtual bool IsLossless (void) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/** Compress preview bitmaps using the PNG format.
|
||||||
|
This compressor is lossless.
|
||||||
|
*/
|
||||||
|
class PngCompression
|
||||||
|
: public BitmapCompressor
|
||||||
|
{
|
||||||
|
class PngReplacement;
|
||||||
|
public:
|
||||||
|
virtual ::boost::shared_ptr<BitmapReplacement> Compress (
|
||||||
|
const ::boost::shared_ptr<BitmapEx>& rpBitmap) const;
|
||||||
|
virtual ::boost::shared_ptr<BitmapEx> Decompress (const BitmapReplacement& rBitmapData) const;
|
||||||
|
virtual bool IsLossless (void) const;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
} } } // end of namespace ::sd::slidesorter::cache
|
||||||
|
|
||||||
|
#endif
|
Loading…
Reference in a new issue