diff options
Diffstat (limited to 'goodies/source/filter.vcl/ipcd')
-rw-r--r-- | goodies/source/filter.vcl/ipcd/exports.map | 7 | ||||
-rw-r--r-- | goodies/source/filter.vcl/ipcd/ipcd.cxx | 425 | ||||
-rw-r--r-- | goodies/source/filter.vcl/ipcd/makefile.mk | 71 |
3 files changed, 0 insertions, 503 deletions
diff --git a/goodies/source/filter.vcl/ipcd/exports.map b/goodies/source/filter.vcl/ipcd/exports.map deleted file mode 100644 index a0719af28be2..000000000000 --- a/goodies/source/filter.vcl/ipcd/exports.map +++ /dev/null @@ -1,7 +0,0 @@ -PCDIMPORTER_1_0 { - global: - GraphicImport; - - local: - *; -}; diff --git a/goodies/source/filter.vcl/ipcd/ipcd.cxx b/goodies/source/filter.vcl/ipcd/ipcd.cxx deleted file mode 100644 index f7a5f3652cbf..000000000000 --- a/goodies/source/filter.vcl/ipcd/ipcd.cxx +++ /dev/null @@ -1,425 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: ipcd.cxx,v $ - * $Revision: 1.9 $ - * - * 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. - * - ************************************************************************/ - -// MARKER(update_precomp.py): autogen include statement, do not remove -#include "precompiled_goodies.hxx" - -#include "rtl/alloc.h" -#include <vcl/graph.hxx> -#include <vcl/bmpacc.hxx> -#include <vcl/svapp.hxx> -#include <svtools/fltcall.hxx> -#include <svl/solar.hrc> -#include <svtools/FilterConfigItem.hxx> - -//============================ PCDReader ================================== - -// Diese Aufloesungen sind in einer PCD-Datei enthalten: -enum PCDResolution { - PCDRES_BASE16, // 192 x 128 - PCDRES_BASE4, // 384 x 256 - PCDRES_BASE, // 768 x 512 - // Die folgenden sind komprimiert und koennen - // von uns NICHT gelesen werden: - PCDRES_4BASE, // 1536 x 1024 - PCDRES_16BASE // 3072 x 3072 -}; - -class PCDReader { - -private: - - BOOL bStatus; - - ULONG nLastPercent; - - SvStream* pPCD; - BitmapWriteAccess* mpAcc; - - BYTE nOrientation; // Ausrichtung des Bildes in der PCD-Datei: - // 0 - Turmspitze zeigt nach oben - // 1 - Turmspitze zeigt nach rechts - // 2 - Turmspitze zeigt nach unten - // 3 - Turmspitze zeigt nach links - - PCDResolution eResolution; // Welche Aufloesung wir haben wollen - - ULONG nWidth; // Breite des PCD-Bildes - ULONG nHeight; // Hoehe des PCD-Bildes - ULONG nImagePos; // Position des Bildes in der PCD-Datei - - // Temporare BLue-Green-Red-Bitmap - ULONG nBMPWidth; - ULONG nBMPHeight; - - void MayCallback(ULONG nPercent); - - void CheckPCDImagePacFile(); - // Prueft, ob es eine Photo-CD-Datei mit 'Image Pac' ist. - - void ReadOrientation(); - // Liest die Ausrichtung und setzt nOrientation - - void ReadImage(ULONG nMinPercent, ULONG nMaxPercent); - -public: - - PCDReader() {} - ~PCDReader() {} - - BOOL ReadPCD( SvStream & rPCD, Graphic & rGraphic, FilterConfigItem* pConfigItem ); -}; - -//=================== Methoden von PCDReader ============================== - -BOOL PCDReader::ReadPCD( SvStream & rPCD, Graphic & rGraphic, FilterConfigItem* pConfigItem ) -{ - Bitmap aBmp; - - bStatus = TRUE; - nLastPercent = 0; - pPCD = &rPCD; - - MayCallback( 0 ); - - // Ist es eine PCD-Datei mit Bild ? ( setzt bStatus == FALSE, wenn nicht ): - CheckPCDImagePacFile(); - - // Orientierung des Bildes einlesen: - ReadOrientation(); - - // Welche Aufloesung wollen wir ?: - eResolution = PCDRES_BASE; - if ( pConfigItem ) - { - sal_Int32 nResolution = pConfigItem->ReadInt32( String( RTL_CONSTASCII_USTRINGPARAM( "Resolution" ) ), 2 ); - if ( nResolution == 1 ) - eResolution = PCDRES_BASE4; - else if ( nResolution == 0 ) - eResolution = PCDRES_BASE16; - } - // Groesse und Position (Position in PCD-Datei) des Bildes bestimmen: - switch (eResolution) - { - case PCDRES_BASE16 : - nWidth = 192; - nHeight = 128; - nImagePos = 8192; - break; - - case PCDRES_BASE4 : - nWidth = 384; - nHeight = 256; - nImagePos = 47104; - break; - - case PCDRES_BASE : - nWidth = 768; - nHeight = 512; - nImagePos = 196608; - break; - - default: - bStatus = FALSE; - } - if ( bStatus ) - { - if ( ( nOrientation & 0x01 ) == 0 ) - { - nBMPWidth = nWidth; - nBMPHeight = nHeight; - } - else - { - nBMPWidth = nHeight; - nBMPHeight = nWidth; - } - aBmp = Bitmap( Size( nBMPWidth, nBMPHeight ), 24 ); - if ( ( mpAcc = aBmp.AcquireWriteAccess() ) == FALSE ) - return FALSE; - - ReadImage( 5 ,65 ); - - aBmp.ReleaseAccess( mpAcc ), mpAcc = NULL; - rGraphic = aBmp; - } - return bStatus; -} - -// ------------------------------------------------------------------------------------------- - -void PCDReader::MayCallback(ULONG /*nPercent*/) -{ -/* - if ( nPercent >= nLastPercent + 3 ) - { - nLastPercent=nPercent; - if ( pCallback != NULL && nPercent <= 100 && bStatus == TRUE ) - { - if ( ( (*pCallback)( pCallerData, (USHORT)nPercent ) ) == TRUE ) - bStatus = FALSE; - } - } -*/ -} - -// ------------------------------------------------------------------------------------------- - -void PCDReader::CheckPCDImagePacFile() -{ - char Buf[ 8 ]; - - pPCD->Seek( 2048 ); - pPCD->Read( Buf, 7 ); - Buf[ 7 ] = 0; - if ( ByteString( Buf ).CompareTo( "PCD_IPI" ) != COMPARE_EQUAL ) - bStatus = FALSE; -} - -// ------------------------------------------------------------------------------------------- - -void PCDReader::ReadOrientation() -{ - if ( bStatus == FALSE ) - return; - pPCD->Seek( 194635 ); - *pPCD >> nOrientation; - nOrientation &= 0x03; -} - -// ------------------------------------------------------------------------------------------- - -void PCDReader::ReadImage(ULONG nMinPercent, ULONG nMaxPercent) -{ - ULONG nx,ny,nW2,nH2,nYPair,ndy,nXPair; - long nL,nCb,nCr,nRed,nGreen,nBlue; - BYTE * pt; - BYTE * pL0; // Luminanz fuer jeden Pixel der 1. Zeile des aktuellen Zeilen-Paars - BYTE * pL1; // Luminanz fuer jeden Pixel der 2. Zeile des aktuellen Zeilen-Paars - BYTE * pCb; // Blau-Chrominanz fuer je 2x2 Pixel des aktuellen Zeilen-Paars - BYTE * pCr; // Rot-Chrominanz fuer je 2x2 Pixel des aktuellen Zeilen-Paars - BYTE * pL0N, * pL1N, * pCbN, * pCrN; // wie oben, nur fuer das naechste Zeilen-Paar - - if ( bStatus == FALSE ) - return; - - nW2=nWidth>>1; - nH2=nHeight>>1; - - pL0 =(BYTE*)rtl_allocateMemory( nWidth ); - pL1 =(BYTE*)rtl_allocateMemory( nWidth ); - pCb =(BYTE*)rtl_allocateMemory( nW2+1 ); - pCr =(BYTE*)rtl_allocateMemory( nW2+1 ); - pL0N=(BYTE*)rtl_allocateMemory( nWidth ); - pL1N=(BYTE*)rtl_allocateMemory( nWidth ); - pCbN=(BYTE*)rtl_allocateMemory( nW2+1 ); - pCrN=(BYTE*)rtl_allocateMemory( nW2+1 ); - - if ( pL0 == NULL || pL1 == NULL || pCb == NULL || pCr == NULL || - pL0N == NULL || pL1N == NULL || pCbN == NULL || pCrN == NULL) - { - rtl_freeMemory((void*)pL0 ); - rtl_freeMemory((void*)pL1 ); - rtl_freeMemory((void*)pCb ); - rtl_freeMemory((void*)pCr ); - rtl_freeMemory((void*)pL0N); - rtl_freeMemory((void*)pL1N); - rtl_freeMemory((void*)pCbN); - rtl_freeMemory((void*)pCrN); - bStatus = FALSE; - return; - } - - pPCD->Seek( nImagePos ); - - // naechstes Zeilen-Paar := erstes Zeile-Paar: - pPCD->Read( pL0N, nWidth ); - pPCD->Read( pL1N, nWidth ); - pPCD->Read( pCbN, nW2 ); - pPCD->Read( pCrN, nW2 ); - pCbN[ nW2 ] = pCbN[ nW2 - 1 ]; - pCrN[ nW2 ] = pCrN[ nW2 - 1 ]; - - for ( nYPair = 0; nYPair < nH2; nYPair++ ) - { - // aktuelles Zeilen-Paar := naechstes Zeilen-Paar - pt=pL0; pL0=pL0N; pL0N=pt; - pt=pL1; pL1=pL1N; pL1N=pt; - pt=pCb; pCb=pCbN; pCbN=pt; - pt=pCr; pCr=pCrN; pCrN=pt; - - // naechstes Zeilen-Paar holen: - if ( nYPair < nH2 - 1 ) - { - pPCD->Read( pL0N, nWidth ); - pPCD->Read( pL1N, nWidth ); - pPCD->Read( pCbN, nW2 ); - pPCD->Read( pCrN, nW2 ); - pCbN[nW2]=pCbN[ nW2 - 1 ]; - pCrN[nW2]=pCrN[ nW2 - 1 ]; - } - else - { - for ( nXPair = 0; nXPair < nW2; nXPair++ ) - { - pCbN[ nXPair ] = pCb[ nXPair ]; - pCrN[ nXPair ] = pCr[ nXPair ]; - } - } - - // Schleife uber die beiden Zeilen des Zeilen-Paars: - for ( ndy = 0; ndy < 2; ndy++ ) - { - ny = ( nYPair << 1 ) + ndy; - - // Schleife ueber X: - for ( nx = 0; nx < nWidth; nx++ ) - { - // nL,nCb,nCr fuer den Pixel nx,ny holen/berechenen: - nXPair = nx >> 1; - if ( ndy == 0 ) - { - nL = (long)pL0[ nx ]; - if (( nx & 1 ) == 0 ) - { - nCb = (long)pCb[ nXPair ]; - nCr = (long)pCr[ nXPair ]; - } - else - { - nCb = ( ( (long)pCb[ nXPair ] ) + ( (long)pCb[ nXPair + 1 ] ) ) >> 1; - nCr = ( ( (long)pCr[ nXPair ] ) + ( (long)pCr[ nXPair + 1 ] ) ) >> 1; - } - } - else { - nL = pL1[ nx ]; - if ( ( nx & 1 ) == 0 ) - { - nCb = ( ( (long)pCb[ nXPair ] ) + ( (long)pCbN[ nXPair ] ) ) >> 1; - nCr = ( ( (long)pCr[ nXPair ] ) + ( (long)pCrN[ nXPair ] ) ) >> 1; - } - else - { - nCb = ( ( (long)pCb[ nXPair ] ) + ( (long)pCb[ nXPair + 1 ] ) + - ( (long)pCbN[ nXPair ] ) + ( (long)pCbN[ nXPair + 1 ] ) ) >> 2; - nCr = ( ( (long)pCr[ nXPair ] ) + ( (long)pCr[ nXPair + 1] ) + - ( (long)pCrN[ nXPair ] ) + ( (long)pCrN[ nXPair + 1 ] ) ) >> 2; - } - } - // Umwandlung von nL,nCb,nCr in nRed,nGreen,nBlue: - nL *= 89024L; - nCb -= 156; - nCr -= 137; - nRed = ( nL + nCr * 119374L + 0x8000 ) >> 16; - if ( nRed < 0 ) - nRed = 0; - if ( nRed > 255) - nRed = 255; - nGreen = ( nL - nCb * 28198L - nCr * 60761L + 0x8000 ) >> 16; - if ( nGreen < 0 ) - nGreen = 0; - if ( nGreen > 255 ) - nGreen = 255; - nBlue = ( nL + nCb * 145352L + 0x8000 ) >> 16; - if ( nBlue < 0 ) - nBlue = 0; - if ( nBlue > 255 ) - nBlue = 255; - - // Farbwert in pBMPMap eintragen: - if ( nOrientation < 2 ) - { - if ( nOrientation == 0 ) - mpAcc->SetPixel( ny, nx, BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) ); - else - mpAcc->SetPixel( nWidth - 1 - nx, ny, BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) ); - } - else - { - if ( nOrientation == 2 ) - mpAcc->SetPixel( nHeight - 1 - ny, ( nWidth - 1 - nx ), BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) ); - else - mpAcc->SetPixel( nx, ( nHeight - 1 - ny ), BitmapColor( (BYTE)nRed, (BYTE)nGreen, (BYTE)nBlue ) ); - } - } - } - - if ( pPCD->GetError() ) - bStatus = FALSE; - MayCallback( nMinPercent + ( nMaxPercent - nMinPercent ) * nYPair / nH2 ); - if ( bStatus == FALSE ) - break; - } - rtl_freeMemory((void*)pL0 ); - rtl_freeMemory((void*)pL1 ); - rtl_freeMemory((void*)pCb ); - rtl_freeMemory((void*)pCr ); - rtl_freeMemory((void*)pL0N); - rtl_freeMemory((void*)pL1N); - rtl_freeMemory((void*)pCbN); - rtl_freeMemory((void*)pCrN); -} - -//================== GraphicImport - die exportierte Funktion ================ - -extern "C" BOOL __LOADONCALLAPI GraphicImport(SvStream & rStream, Graphic & rGraphic, FilterConfigItem* pConfigItem, BOOL ) -{ - PCDReader aPCDReader; - return aPCDReader.ReadPCD( rStream, rGraphic, pConfigItem ); -} - -//============================= fuer Windows ================================== -#ifndef GCC -#endif - -#ifdef WIN - -static HINSTANCE hDLLInst = 0; // HANDLE der DLL - -extern "C" int CALLBACK LibMain( HINSTANCE hDLL, WORD, WORD nHeap, LPSTR ) -{ -#ifndef WNT - if ( nHeap ) - UnlockData( 0 ); -#endif - - hDLLInst = hDLL; - - return TRUE; -} - -extern "C" int CALLBACK WEP( int ) -{ - return 1; -} - -#endif - - diff --git a/goodies/source/filter.vcl/ipcd/makefile.mk b/goodies/source/filter.vcl/ipcd/makefile.mk deleted file mode 100644 index 7782b7b8e627..000000000000 --- a/goodies/source/filter.vcl/ipcd/makefile.mk +++ /dev/null @@ -1,71 +0,0 @@ -#************************************************************************* -# -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# Copyright 2008 by Sun Microsystems, Inc. -# -# OpenOffice.org - a multi-platform office productivity suite -# -# $RCSfile: makefile.mk,v $ -# -# $Revision: 1.14 $ -# -# 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. -# -#************************************************************************* - -PRJ=..$/..$/.. - -PRJNAME=goodies -TARGET=ipcd -DEPTARGET=vipcd - -# --- Settings ----------------------------------------------------------- - -.INCLUDE : settings.mk - -# --- Allgemein ---------------------------------------------------------- - -.IF "$(editdebug)"!="" || "$(EDITDEBUG)"!="" -CDEFS+= -DEDITDEBUG -.ENDIF -.IF "$(L10N_framework)"=="" -SLOFILES = $(SLO)$/ipcd.obj - -# ========================================================================== - -SHL1TARGET= icd$(DLLPOSTFIX) -SHL1IMPLIB= ipcd -SHL1STDLIBS= $(SVTOOLLIB) $(VCLLIB) $(TOOLSLIB) $(SALLIB) -SHL1LIBS= $(SLB)$/ipcd.lib # $(LB)$/rtftoken.lib - -.IF "$(GUI)" != "UNX" -.IF "$(COM)" != "GCC" -SHL1OBJS= $(SLO)$/ipcd.obj -.ENDIF -.ENDIF - -SHL1VERSIONMAP=exports.map -SHL1DEF= $(MISC)$/$(SHL1TARGET).def - -DEF1NAME=$(SHL1TARGET) -.ENDIF - -# ========================================================================== - -.INCLUDE : target.mk |