summaryrefslogtreecommitdiff
path: root/svtools/inc/svtools/filter.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'svtools/inc/svtools/filter.hxx')
-rw-r--r--svtools/inc/svtools/filter.hxx375
1 files changed, 375 insertions, 0 deletions
diff --git a/svtools/inc/svtools/filter.hxx b/svtools/inc/svtools/filter.hxx
new file mode 100644
index 000000000000..8c6f014d4219
--- /dev/null
+++ b/svtools/inc/svtools/filter.hxx
@@ -0,0 +1,375 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#ifndef _FILTER_HXX
+#define _FILTER_HXX
+
+#include <svtools/fltcall.hxx>
+#include "svtools/svtdllapi.h"
+#include <tools/stream.hxx>
+#include <vcl/graph.hxx>
+#include <tools/gen.hxx>
+#include <tools/urlobj.hxx>
+#include <vcl/field.hxx>
+#include <com/sun/star/uno/Sequence.h>
+#include <com/sun/star/beans/PropertyValue.hpp>
+
+// -----------------------
+// - GraphicFilter-Types -
+// -----------------------
+
+struct ImplDirEntryHelper
+{
+ static BOOL Exists( const INetURLObject& rObj );
+ static void Kill( const String& rStr );
+};
+
+class Window;
+class Graphic;
+
+#define OPT_FILTERSECTION "Graphic"
+
+#define GRFILTER_OK 0
+#define GRFILTER_OPENERROR 1
+#define GRFILTER_IOERROR 2
+#define GRFILTER_FORMATERROR 3
+#define GRFILTER_VERSIONERROR 4
+#define GRFILTER_FILTERERROR 5
+#define GRFILTER_ABORT 6
+#define GRFILTER_TOOBIG 7
+
+#define GRFILTER_OUTHINT_GREY 1
+
+#define GRFILTER_FORMAT_NOTFOUND ((USHORT)0xFFFF)
+#define GRFILTER_FORMAT_DONTKNOW ((USHORT)0xFFFF)
+
+#define GRFILTER_I_FLAGS_SET_LOGSIZE_FOR_JPEG 00000001
+#define GRFILTER_I_FLAGS_DONT_SET_LOGSIZE_FOR_JPEG 00000002
+#define GRFILTER_I_FLAGS_FOR_PREVIEW 00000004
+#define GRFILTER_I_FLAGS_ALLOW_PARTIAL_STREAMREAD 00000010
+
+#define IMP_BMP "SVBMP"
+#define IMP_SVMETAFILE "SVMETAFILE"
+#define IMP_WMF "SVWMF"
+#define IMP_EMF "SVEMF"
+#define IMP_SVSGF "SVSGF"
+#define IMP_SVSGV "SVSGV"
+#define IMP_GIF "SVIGIF"
+#define IMP_PNG "SVIPNG"
+#define IMP_JPEG "SVIJPEG"
+#define IMP_XBM "SVIXBM"
+#define IMP_XPM "SVIXPM"
+#define EXP_BMP "SVBMP"
+#define EXP_SVMETAFILE "SVMETAFILE"
+#define EXP_WMF "SVWMF"
+#define EXP_EMF "SVEMF"
+#define EXP_JPEG "SVEJPEG"
+#define EXP_SVG "SVESVG"
+#define EXP_PNG "SVEPNG"
+
+#define BMP_SHORTNAME "BMP"
+#define GIF_SHORTNAME "GIF"
+#define JPG_SHORTNAME "JPG"
+#define MET_SHORTNAME "MET"
+#define PCT_SHORTNAME "PCT"
+#define PNG_SHORTNAME "PNG"
+#define SVM_SHORTNAME "SVM"
+#define TIF_SHORTNAME "TIF"
+#define WMF_SHORTNAME "WMF"
+#define EMF_SHORTNAME "EMF"
+
+// ------------------------------------
+// - Info-Klasse fuer alle von uns
+// unterstuetzten Grafik-Fileformate
+// ------------------------------------
+
+#define GFF_NOT ( (USHORT)0x0000 )
+#define GFF_BMP ( (USHORT)0x0001 )
+#define GFF_GIF ( (USHORT)0x0002 )
+#define GFF_JPG ( (USHORT)0x0003 )
+#define GFF_PCD ( (USHORT)0x0004 )
+#define GFF_PCX ( (USHORT)0x0005 )
+#define GFF_PNG ( (USHORT)0x0006 )
+#define GFF_TIF ( (USHORT)0x0007 )
+#define GFF_XBM ( (USHORT)0x0008 )
+#define GFF_XPM ( (USHORT)0x0009 )
+#define GFF_PBM ( (USHORT)0x000a )
+#define GFF_PGM ( (USHORT)0x000b )
+#define GFF_PPM ( (USHORT)0x000c )
+#define GFF_RAS ( (USHORT)0x000d )
+#define GFF_TGA ( (USHORT)0x000e )
+#define GFF_PSD ( (USHORT)0x000f )
+#define GFF_EPS ( (USHORT)0x0010 )
+#define GFF_DXF ( (USHORT)0x00f1 )
+#define GFF_MET ( (USHORT)0x00f2 )
+#define GFF_PCT ( (USHORT)0x00f3 )
+#define GFF_SGF ( (USHORT)0x00f4 )
+#define GFF_SVM ( (USHORT)0x00f5 )
+#define GFF_WMF ( (USHORT)0x00f6 )
+#define GFF_SGV ( (USHORT)0x00f7 )
+#define GFF_EMF ( (USHORT)0x00f8 )
+#define GFF_XXX ( (USHORT)0xffff )
+
+// ---------------------
+// - GraphicDescriptor -
+// ---------------------
+
+class SVT_DLLPUBLIC GraphicDescriptor
+{
+ SvStream* pFileStm;
+
+ String aPathExt;
+ Size aPixSize;
+ Size aLogSize;
+ USHORT nBitsPerPixel;
+ USHORT nPlanes;
+ USHORT nFormat;
+ BOOL bCompressed;
+ BOOL bOwnStream;
+
+ void ImpConstruct();
+
+ BOOL ImpDetectBMP( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectGIF( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectJPG( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectPCD( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectPCX( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectPNG( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectTIF( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectXBM( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectXPM( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectPBM( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectPGM( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectPPM( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectRAS( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectTGA( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectPSD( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectEPS( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectDXF( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectMET( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectPCT( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectSGF( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectSVM( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectWMF( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectSGV( SvStream& rStm, BOOL bExtendedInfo );
+ BOOL ImpDetectEMF( SvStream& rStm, BOOL bExtendedInfo );
+
+ GraphicDescriptor( const GraphicDescriptor& );
+ GraphicDescriptor& operator=( const GraphicDescriptor& );
+
+public:
+
+ // Ctor, um einen Filenamen zu setzen. Es muss ::Detect() gerufen werden,
+ // um das File zu identifizieren;
+ // wenn das File keinen eindeutigen Header besitzt ( Mtf's ) wird das
+ // Format anhand der Extension bestimmt
+ GraphicDescriptor( const INetURLObject& rPath );
+
+ // Ctor, um einen Stream zu setzen. Es muss ::Detect() gerufen werden,
+ // um das File zu identifizieren;
+ // da einige Formate ( Mtf's ) keinen eindeutigen Header besitzen,
+ // ist es sinnvoll den Filenamen (inkl. Ext. ) mitanzugeben,
+ // da so das Format ueber die Extension ermittelt werden kann
+ GraphicDescriptor( SvStream& rInStream, const String* pPath = NULL );
+
+ // Dtor
+ virtual ~GraphicDescriptor();
+
+ // Startet die Detektion;
+ // bei bExtendedInfo == TRUE werden soweit wie moeglich
+ // Daten aus dem jeweiligen FileHeader ermittelt
+ // ( Groesse, Farbtiefe usw. )
+ virtual BOOL Detect( BOOL bExtendedInfo = FALSE );
+
+ // liefert das Fileformat nach erfolgreicher Detektion zurueck;
+ // wenn kein Format erkannt wurde, ist das Formart GFF_NOT
+ USHORT GetFileFormat() const { return nFormat; }
+
+ // liefert die Pixel-Bildgroesse oder 0-Size zurueck
+ const Size& GetSizePixel() const { return (Size&) aPixSize; }
+
+ // liefert die logische Bildgroesse in 1/100mm oder 0-Size zurueck
+ const Size& GetSize_100TH_MM() const { return (Size&) aLogSize; }
+
+ // liefert die Bits/Pixel oder 0 zurueck
+ USHORT GetBitsPerPixel() const { return nBitsPerPixel; }
+
+ // liefert die Anzahl der Planes oder 0 zurueck
+ USHORT GetPlanes() const { return nPlanes; }
+
+ // zeigt an, ob das Bild evtl. komprimiert (wie auch immer) ist
+ BOOL IsCompressed() const { return bCompressed; }
+
+ // gibt die Filternummer des Filters zurueck,
+ // der im GraphicFilter zum Lesen dieses Formats
+ // benoetigt wird
+ static String GetImportFormatShortName( sal_uInt16 nFormat );
+};
+
+// -----------------
+// - GraphicFilter -
+// -----------------
+
+struct FilterErrorEx
+{
+ ULONG nFilterError;
+ ULONG nStreamError;
+ long nDummy1;
+ long nDummy2;
+ long nDummy3;
+ long nDummy4;
+
+ FilterErrorEx() : nFilterError( 0UL ), nStreamError( 0UL ) {}
+};
+
+// -----------------------------------------------------------------------------
+
+struct ConvertData;
+class FilterConfigCache;
+class SVT_DLLPUBLIC GraphicFilter
+{
+ friend class SvFilterOptionsDialog;
+
+private:
+
+ void ImplInit();
+ ULONG ImplSetError( ULONG nError, const SvStream* pStm = NULL );
+ sal_uInt16 ImpTestOrFindFormat( const String& rPath, SvStream& rStream, sal_uInt16& rFormat );
+
+ DECL_LINK( FilterCallback, ConvertData* pData );
+
+protected:
+
+ String aFilterPath;
+ FilterConfigCache* pConfig;
+ FilterErrorEx* pErrorEx;
+ sal_Bool bAbort;
+ sal_Bool bUseConfig;
+ sal_Bool bDummy1;
+ sal_Bool bDummy2;
+ sal_Bool bDummy3;
+ sal_Bool bDummy4;
+ long nExpGraphHint;
+ long nDummy2;
+ void* pDummy1;
+ void* pDummy2;
+
+public:
+
+ GraphicFilter( sal_Bool bUseConfig = sal_True );
+ ~GraphicFilter();
+
+ void SetFilterPath( const String& rFilterPath ) { aFilterPath = rFilterPath; };
+
+ USHORT GetImportFormatCount();
+ USHORT GetImportFormatNumber( const String& rFormatName );
+ USHORT GetImportFormatNumberForMediaType( const String& rMediaType );
+ USHORT GetImportFormatNumberForShortName( const String& rShortName );
+ sal_uInt16 GetImportFormatNumberForTypeName( const String& rType );
+ String GetImportFormatName( USHORT nFormat );
+ String GetImportFormatTypeName( USHORT nFormat );
+ String GetImportFormatMediaType( USHORT nFormat );
+ String GetImportFormatShortName( USHORT nFormat );
+ String GetImportOSFileType( USHORT nFormat );
+ String GetImportWildcard( USHORT nFormat, sal_Int32 nEntry = 0 );
+ BOOL IsImportPixelFormat( USHORT nFormat );
+
+ USHORT GetExportFormatCount();
+ USHORT GetExportFormatNumber( const String& rFormatName );
+ USHORT GetExportFormatNumberForMediaType( const String& rShortName );
+ USHORT GetExportFormatNumberForShortName( const String& rShortName );
+ sal_uInt16 GetExportFormatNumberForTypeName( const String& rType );
+ String GetExportFormatName( USHORT nFormat );
+ String GetExportFormatTypeName( USHORT nFormat );
+ String GetExportFormatMediaType( USHORT nFormat );
+ String GetExportFormatShortName( USHORT nFormat );
+ String GetExportOSFileType( USHORT nFormat );
+ String GetExportWildcard( USHORT nFormat, sal_Int32 nEntry = 0 );
+ BOOL IsExportPixelFormat( USHORT nFormat );
+
+ BOOL HasImportDialog( USHORT nFormat );
+ BOOL DoImportDialog( Window* pWindow, USHORT nFormat );
+
+ BOOL HasExportDialog( USHORT nFormat );
+ BOOL DoExportDialog( Window* pWindow, USHORT nFormat );
+ BOOL DoExportDialog( Window* pWindow, USHORT nFormat, FieldUnit eFieldUnit );
+
+ USHORT ExportGraphic( const Graphic& rGraphic, const INetURLObject& rPath,
+ USHORT nFormat = GRFILTER_FORMAT_DONTKNOW,
+ const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >* pFilterData = NULL );
+ USHORT ExportGraphic( const Graphic& rGraphic, const String& rPath,
+ SvStream& rOStm, USHORT nFormat = GRFILTER_FORMAT_DONTKNOW,
+ const com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >* pFilterData = NULL );
+ long GetExportGraphicHint() const { return nExpGraphHint; }
+
+ USHORT CanImportGraphic( const INetURLObject& rPath,
+ USHORT nFormat = GRFILTER_FORMAT_DONTKNOW,
+ USHORT * pDeterminedFormat = NULL);
+
+ USHORT ImportGraphic( Graphic& rGraphic, const INetURLObject& rPath,
+ USHORT nFormat = GRFILTER_FORMAT_DONTKNOW,
+ USHORT * pDeterminedFormat = NULL, sal_uInt32 nImportFlags = 0 );
+
+ USHORT CanImportGraphic( const String& rPath, SvStream& rStream,
+ USHORT nFormat = GRFILTER_FORMAT_DONTKNOW,
+ USHORT * pDeterminedFormat = NULL);
+
+ USHORT ImportGraphic( Graphic& rGraphic, const String& rPath,
+ SvStream& rStream,
+ USHORT nFormat = GRFILTER_FORMAT_DONTKNOW,
+ USHORT * pDeterminedFormat = NULL, sal_uInt32 nImportFlags = 0 );
+
+ USHORT ImportGraphic( Graphic& rGraphic, const String& rPath,
+ SvStream& rStream,
+ USHORT nFormat,
+ USHORT * pDeterminedFormat, sal_uInt32 nImportFlags,
+ com::sun::star::uno::Sequence< com::sun::star::beans::PropertyValue >* pFilterData );
+
+ BOOL Setup( USHORT nFormat );
+
+ void Abort() { bAbort = TRUE; }
+
+ const FilterErrorEx& GetLastError() const;
+ void ResetLastError();
+
+ const Link GetFilterCallback() const;
+ static GraphicFilter* GetGraphicFilter();
+ static int LoadGraphic( const String& rPath, const String& rFilter,
+ Graphic& rGraphic,
+ GraphicFilter* pFilter = NULL,
+ USHORT* pDeterminedFormat = NULL );
+};
+
+// ------------------------------------
+// - Windows Metafile Lesen/Schreiben -
+// ------------------------------------
+
+SVT_DLLPUBLIC BOOL ReadWindowMetafile( SvStream& rStream, GDIMetaFile& rMTF, FilterConfigItem* pConfigItem );
+SVT_DLLPUBLIC BOOL WriteWindowMetafile( SvStream& rStream, const GDIMetaFile& rMTF );
+SVT_DLLPUBLIC BOOL WriteWindowMetafileBits( SvStream& rStream, const GDIMetaFile& rMTF );
+
+#endif //_FILTER_HXX