summaryrefslogtreecommitdiff
path: root/svx/inc/svx/svimbase.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'svx/inc/svx/svimbase.hxx')
-rw-r--r--svx/inc/svx/svimbase.hxx212
1 files changed, 212 insertions, 0 deletions
diff --git a/svx/inc/svx/svimbase.hxx b/svx/inc/svx/svimbase.hxx
new file mode 100644
index 000000000000..4ed98e229a32
--- /dev/null
+++ b/svx/inc/svx/svimbase.hxx
@@ -0,0 +1,212 @@
+/*************************************************************************
+ *
+ * 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 _SVIMBASE_HXX
+#define _SVIMBASE_HXX
+
+#include <vcl/bitmap.hxx>
+#include <vcl/salbtype.hxx>
+
+
+// -----------
+// - Defines -
+// -----------
+
+#define _SVHUGE
+
+// ----------------
+// - SimDepthType -
+// ----------------
+
+enum SimDepthType
+{
+ SIM_DEPTH_1,
+ SIM_DEPTH_4,
+ SIM_DEPTH_8,
+ SIM_DEPTH_24
+};
+
+// ------------
+// - SimColor -
+// ------------
+
+struct SimColor
+{
+ sal_uInt8 cBlue;
+ sal_uInt8 cGreen;
+ sal_uInt8 cRed;
+};
+
+// ------------------------------------------------------------------------
+
+inline sal_Bool operator==( const SimColor& rCol1, const SimColor& rCol2 )
+{
+ return ( ( rCol1.cRed == rCol2.cRed ) &&
+ ( rCol1.cGreen == rCol2.cGreen ) &&
+ ( rCol1.cBlue == rCol2.cBlue ) );
+}
+
+// --------------
+// - SimPalette -
+// --------------
+
+struct SimPalette
+{
+ sal_uIntPtr nColors;
+ SimColor aColorArray[ 256 ];
+};
+
+// ---------------
+// - SvImageBase -
+// ---------------
+
+class SfxViewFrame;
+class SfxProgress;
+
+class SvImageBase
+{
+private:
+
+ Bitmap aOutBitmap;
+ HPBYTE pArray1;
+ HPBYTE pArray2;
+ HPBYTE pArray3;
+ HPBYTE pArray4;
+ HPBYTE pOrgArray;
+ HPBYTE pDestArray;
+ SimPalette* pPal1;
+ SimPalette* pPal2;
+ SimPalette* pPal3;
+ SimPalette* pPal4;
+ sal_uIntPtr nWidth1;
+ sal_uIntPtr nWidth2;
+ sal_uIntPtr nWidth3;
+ sal_uIntPtr nWidth4;
+ sal_uIntPtr nHeight1;
+ sal_uIntPtr nHeight2;
+ sal_uIntPtr nHeight3;
+ sal_uIntPtr nHeight4;
+ sal_uIntPtr nAlignedWidth1;
+ sal_uIntPtr nAlignedWidth2;
+ sal_uIntPtr nAlignedWidth3;
+ sal_uIntPtr nAlignedWidth4;
+ sal_uIntPtr nWhichOrg;
+ SimDepthType eOrgDepth;
+ SimDepthType eUndoDepth;
+ SimDepthType eRedoDepth;
+ sal_Bool bIsUndo;
+ sal_Bool bIsRedo;
+ sal_Bool bCreateUndo;
+ sal_Bool bValid;
+ sal_Bool bDitherAll;
+
+ HPBYTE BitmapToArray24( const Bitmap& rBitmap, sal_uIntPtr* pWidth,
+ sal_uIntPtr* pHeight, sal_uIntPtr* pAlignedWidth,
+ SfxViewFrame *pFrame = NULL );
+ sal_Bool Array24ToBitmap( HPBYTE pArray, Bitmap &rBitmap,
+ const sal_uIntPtr nWidth, const sal_uIntPtr nHeight,
+ const sal_uIntPtr nColorCount = 256,
+ sal_uIntPtr nLast = 0, SfxProgress* pProgress = NULL );
+
+ Bitmap CreateSaveBitmap( const SimDepthType eDepth, SfxViewFrame *pFrame = NULL );
+
+ HPBYTE CreateArray24( sal_uIntPtr nWidth, sal_uIntPtr nHeight );
+ void DeleteArray( HPBYTE pArray );
+
+ SvImageBase(const SvImageBase& rSvImageBase);
+ const SvImageBase& operator=(const SvImageBase& rSvImageBase);
+
+public:
+
+ SvImageBase();
+ SvImageBase( const Bitmap& rBitmap,
+ const sal_uIntPtr nColorCount = 256,
+ sal_uIntPtr nLast = 0, SfxProgress* pProgress = NULL );
+ ~SvImageBase();
+
+ sal_Bool IsValid() { return bValid; }
+
+ sal_uIntPtr GetOrgWidth() const { return nWhichOrg == 1 ? nWidth1 : nWidth2; }
+ sal_uIntPtr GetDestWidth() const { return nWhichOrg == 1 ? nWidth2 : nWidth1; }
+
+ sal_uIntPtr GetOrgHeight() const { return nWhichOrg == 1 ? nHeight1 : nHeight2; }
+ sal_uIntPtr GetDestHeight() const { return nWhichOrg == 1 ? nHeight2 : nHeight1; }
+
+ sal_uIntPtr GetOrgAlignedWidth() const { return nWhichOrg == 1 ? nAlignedWidth1 : nAlignedWidth2; }
+ sal_uIntPtr GetDestAlignedWidth() const { return nWhichOrg == 1 ? nAlignedWidth2 : nAlignedWidth1; }
+
+ sal_uIntPtr GetOrgAlignedSize() const { return GetOrgAlignedWidth() * GetOrgHeight(); }
+ sal_uIntPtr GetDestAlignedSize() const { return GetDestAlignedWidth() * GetDestHeight(); }
+
+ // Farbtiefe des Ausgangsbildes ermitteln und setzen
+ SimDepthType GetDepth() const { return eOrgDepth; }
+ void SetDepth( const SimDepthType eDepth ) { eOrgDepth = eDepth; }
+
+ // Farbtiefen nach Undo und Redo ermitteln und setzen
+ SimDepthType GetUndoDepth() const { return eUndoDepth; }
+ void SetUndoDepth(const SimDepthType eDepth) { eUndoDepth = eDepth; }
+
+ SimDepthType GetRedoDepth() const { return eRedoDepth; }
+ void SetRedoDepth(const SimDepthType eDepth) { eRedoDepth = eDepth; }
+
+ // Vor- und Ruecklauf der Bildverarbeitung
+ sal_Bool BeginProcessing( sal_Bool bUndo = sal_True );
+ void EndProcessing();
+
+ sal_Bool BeginProcessingExt(sal_uIntPtr nWidth, sal_uIntPtr nHeight, sal_Bool bUndo = sal_True);
+ void EndProcessingExt() { EndProcessing(); }
+
+ // Zeiger auf Arrays zur Verfuegung stellen
+ HPBYTE GetOrgPointer() { return pOrgArray; }
+ HPBYTE GetDestPointer() { return pDestArray; }
+
+ // DIB-Erzeugung fuer Anzeige
+ sal_Bool CreateOutBitmap( const sal_uIntPtr nColorCount = 256, sal_uIntPtr nLast = 0,
+ SfxProgress* pProgress = NULL );
+
+ // Undo-Verwaltung
+ sal_Bool DoUndo( SfxProgress* pProgress = NULL );
+ sal_Bool DoRedo( SfxProgress* pProgress = NULL );
+
+ // DIB-Rueckgabe fuer Anzeige
+ const Bitmap& GetOutBitmap() const;
+
+ // DIB-Rueckgabe fuer Speicherung
+ Bitmap GetSaveBitmap();
+
+ // Palette besorgen
+ SimPalette* GetOrgPalette() const { return nWhichOrg == 1 ? pPal1 : pPal2; }
+ SimPalette* GetDestPalette() const { return nWhichOrg == 1 ? pPal2 : pPal1; }
+};
+
+// ----------------
+// - DitherBitmap -
+// ----------------
+
+sal_Bool DitherBitmap( Bitmap& rBitmap, sal_Bool bDitherAlways = sal_False );
+
+#endif // _SVIMBASE_HXX