Commit bf061cb6 authored by Sergey.Konovalov's avatar Sergey.Konovalov Committed by Alexander Trofimov

add ASCOfficeUtils lib

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@59103 954022d7-b5bf-4e40-9824-e11837661b57
parent 5d03e37d
...@@ -3013,6 +3013,7 @@ Test/Applications/SpreadsheetEditor/bin/release/spreadsheeteditor_ru.qm svn_mime ...@@ -3013,6 +3013,7 @@ Test/Applications/SpreadsheetEditor/bin/release/spreadsheeteditor_ru.qm svn_mime
Test/Applications/SpreadsheetEditor/bin/release/ssleay32.dll svn_mime_002dtype=application%2Foctet-stream Test/Applications/SpreadsheetEditor/bin/release/ssleay32.dll svn_mime_002dtype=application%2Foctet-stream
Test/Applications/SpreadsheetEditor/bin/release/zlibwapi.dll svn_mime_002dtype=application%2Foctet-stream Test/Applications/SpreadsheetEditor/bin/release/zlibwapi.dll svn_mime_002dtype=application%2Foctet-stream
Test/Applications/TeamlabDocControlService/TeamlabDocControlService/bin/Release/TeamlabDocControlService.exe svn_mime_002dtype=application%2Foctet-stream Test/Applications/TeamlabDocControlService/TeamlabDocControlService/bin/Release/TeamlabDocControlService.exe svn_mime_002dtype=application%2Foctet-stream
Test/Applications/TestASCOfficeUtils/test.zip svn_mime_002dtype=application%2Foctet-stream
Test/Applications/TestASCWord/ASCWord/ASCWord_big.bmp svn_mime_002dtype=application%2Foctet-stream Test/Applications/TestASCWord/ASCWord/ASCWord_big.bmp svn_mime_002dtype=application%2Foctet-stream
Test/Applications/TestASCWord/ASCWord/ASCWord_small.bmp svn_mime_002dtype=application%2Foctet-stream Test/Applications/TestASCWord/ASCWord/ASCWord_small.bmp svn_mime_002dtype=application%2Foctet-stream
Test/Applications/TestASCWord/ASCWord/PortableTools/TLBExtract.exe svn_mime_002dtype=application%2Foctet-stream Test/Applications/TestASCWord/ASCWord/PortableTools/TLBExtract.exe svn_mime_002dtype=application%2Foctet-stream
......
This diff is collapsed.
#pragma once
#include <string>
#include <deque>
#include <fstream>
#include <vector>
#include <list>
#ifdef _WIN32
#include <direct.h>
#endif
#include "../ASCOfficeUtilsLib/OfficeUtilsCommon.h"
#include "../../DesktopEditor/common/Types.h"
using namespace std;
//#define ZLIB_WINAPI
//#define CODEPAGE_ISSUE_FIX
//#pragma comment(lib, "zlibstat.lib")
#include "unzip.h"
#include "zip.h"
namespace ZLibZipUtils
{
int ZipDir( const WCHAR* dir, const WCHAR* outputFile, const OnProgressCallback* progress, int compressionLevel = -1 );
int ZipFile( const WCHAR* inputFile, const WCHAR* outputFile, int compressionLevel = -1 );
bool ClearDirectory( const WCHAR* dir, bool delDir = false );
int UnzipToDir( const WCHAR* zipFile, const WCHAR* unzipDir, const OnProgressCallback* progress, const WCHAR* password = NULL, bool opt_extract_without_path = false, bool clearOutputDirectory = false );
int UncompressBytes( BYTE* destBuf, ULONG* destSize, const BYTE* sourceBuf, ULONG sourceSize );
int CompressBytes( BYTE* destBuf, ULONG* destSize, const BYTE* sourceBuf, ULONG sourceSize, SHORT level );
bool IsArchive(const WCHAR* filename);
bool IsFileExistInArchive(const WCHAR* zipFile, const WCHAR* filePathInZip);
bool LoadFileFromArchive(const WCHAR* zipFile, const WCHAR* filePathInZip, BYTE** fileInBytes, ULONG& nFileSize);
bool ExtractFiles(const WCHAR* zip_file_path, const ExtractedFileCallback& callback, void* pParam);
bool CompressFiles(const WCHAR* zip_file_path, const RequestFileCallback& callback, void* pParam, int compression_level);
}
#-------------------------------------------------
#
# Project created by QtCreator 2014-10-10T14:24:04
#
#-------------------------------------------------
QT -= core gui
TARGET = ASCOfficeUtilsLib
TEMPLATE = lib
CONFIG += staticlib
QMAKE_CXXFLAGS += -std=c++11 -Wall -Wno-ignored-qualifiers -g
DEFINES += UNICODE \
_UNICODE \
LINUX \
_LINUX_QT
INCLUDEPATH += \
../../ZLIB/zlib-1.2.3/contrib/minizip \
../../ZLIB/zlib-1.2.3
SOURCES += \
../OfficeUtils.cpp \
../../ZLIB/zlib-1.2.3/adler32.c \
../../ZLIB/zlib-1.2.3/compress.c \
../../ZLIB/zlib-1.2.3/crc32.c \
../../ZLIB/zlib-1.2.3/deflate.c \
../../ZLIB/zlib-1.2.3/example.c \
../../ZLIB/zlib-1.2.3/gzio.c \
../../ZLIB/zlib-1.2.3/infback.c \
../../ZLIB/zlib-1.2.3/inffast.c \
../../ZLIB/zlib-1.2.3/inflate.c \
../../ZLIB/zlib-1.2.3/inftrees.c \
../../ZLIB/zlib-1.2.3/minigzip.c \
../../ZLIB/zlib-1.2.3/trees.c \
../../ZLIB/zlib-1.2.3/uncompr.c \
../../ZLIB/zlib-1.2.3/zutil.c \
../../ZLIB/zlib-1.2.3/contrib/minizip/zip.c \
../../ZLIB/zlib-1.2.3/contrib/minizip/unzip.c \
../../ZLIB/zlib-1.2.3/contrib/minizip/mztools.c \
../../ZLIB/zlib-1.2.3/contrib/minizip/minizip.c \
../../ZLIB/zlib-1.2.3/contrib/minizip/miniunz.c \
../../ZLIB/zlib-1.2.3/contrib/minizip/ioapi.c \
../../ASCOfficeUtils/ZipUtilsCP.cpp
HEADERS += \
../OfficeUtilsCommon.h \
../OfficeUtils.h \
../../ZLIB/zlib-1.2.3/zutil.h \
../../ZLIB/zlib-1.2.3/zlib.h \
../../ZLIB/zlib-1.2.3/zconf.in.h \
../../ZLIB/zlib-1.2.3/zconf.h \
../../ZLIB/zlib-1.2.3/trees.h \
../../ZLIB/zlib-1.2.3/inftrees.h \
../../ZLIB/zlib-1.2.3/inflate.h \
../../ZLIB/zlib-1.2.3/inffixed.h \
../../ZLIB/zlib-1.2.3/inffast.h \
../../ZLIB/zlib-1.2.3/deflate.h \
../../ZLIB/zlib-1.2.3/crc32.h \
../../ZLIB/zlib-1.2.3/contrib/minizip/crypt.h \
../../ZLIB/zlib-1.2.3/contrib/minizip/ioapi.h \
../../ZLIB/zlib-1.2.3/contrib/minizip/mztools.h \
../../ZLIB/zlib-1.2.3/contrib/minizip/unzip.h \
../../ZLIB/zlib-1.2.3/contrib/minizip/zip.h \
../../ASCOfficeUtils/ZipUtilsCP.h
unix {
target.path = /usr/lib
INSTALLS += target
}
#include "OfficeUtils.h"
#include "../ASCOfficeUtils/ZipUtilsCP.h"
#include "../../DesktopEditor/common/File.h"
#include "../../DesktopEditor/common/Directory.h"
COfficeUtils::COfficeUtils(OnProgressCallback* fCallback)
{
m_fCallback = fCallback;
}
HRESULT COfficeUtils::ExtractToDirectory(const std::wstring& zipFile, const std::wstring& unzipDir, wchar_t* password, SHORT extract_without_path)
{
if( ZLibZipUtils::UnzipToDir( zipFile.c_str(), unzipDir.c_str(), m_fCallback, password, ( extract_without_path > 0 ) ? (true) : (false) ) == 0 )
{
return S_OK;
}
else
{
return S_FALSE;
}
}
HRESULT COfficeUtils::CompressFileOrDirectory(const std::wstring& name, const std::wstring& outputFile, SHORT level)
{
HRESULT result = S_FALSE;
if(NSDirectory::Exists(name))
{
if ( ZLibZipUtils::ZipDir( name.c_str(), outputFile.c_str(), m_fCallback, level ) == 0 )
{
result = S_OK;
}
else
{
result = S_FALSE;
}
}
else if(NSFile::CFileBinary::Exists(name))
{
if ( ZLibZipUtils::ZipFile( name.c_str(), outputFile.c_str(), level ) == 0 )
{
result = S_OK;
}
else
{
result = S_FALSE;
}
}
return result;
}
HRESULT COfficeUtils::Uncompress(BYTE* destBuf, ULONG* destSize, BYTE* sourceBuf, ULONG sourceSize)
{
if ( ZLibZipUtils::UncompressBytes( destBuf, destSize, sourceBuf, sourceSize ) == Z_OK )
{
return S_OK;
}
else
{
return S_FALSE;
}
}
HRESULT COfficeUtils::Compress(BYTE* destBuf, ULONG* destSize, BYTE* sourceBuf, ULONG sourceSize, SHORT level)
{
if ( ZLibZipUtils::CompressBytes( destBuf, destSize, sourceBuf, sourceSize, level ) == Z_OK )
{
return S_OK;
}
else
{
return S_FALSE;
}
}
HRESULT COfficeUtils::IsArchive(const std::wstring& filename)
{
if( ZLibZipUtils::IsArchive(filename.c_str()) )
{
return S_OK;
}
else
{
return S_FALSE;
}
}
HRESULT COfficeUtils::IsFileExistInArchive(const std::wstring& zipFile, const std::wstring& filePath)
{
if( ZLibZipUtils::IsFileExistInArchive( zipFile.c_str(), filePath.c_str()) )
{
return S_OK;
}
else
{
return S_FALSE;
}
}
HRESULT COfficeUtils::LoadFileFromArchive(const std::wstring& zipFile, const std::wstring& filePath, BYTE** fileInBytes, ULONG& nFileSize)
{
if( ZLibZipUtils::LoadFileFromArchive( zipFile.c_str(), filePath.c_str(), fileInBytes, nFileSize))
{
return S_OK;
}
else
{
return S_FALSE;
}
}
HRESULT COfficeUtils::ExtractFilesToMemory(const std::wstring& zipFile, const ExtractedFileCallback& data_receiver, void* pParam, bool* result)
{
*result = ZLibZipUtils::ExtractFiles(zipFile.c_str(), data_receiver, pParam) ? true : false;
return S_OK;
}
HRESULT COfficeUtils::CompressFilesFromMemory(const std::wstring& zipFile, const RequestFileCallback& data_source, void* pParam, SHORT compression_level, bool* result)
{
*result = ZLibZipUtils::CompressFiles(zipFile.c_str(), data_source, pParam, compression_level) ? true : false;
return S_OK;
}
#ifndef OFFICE_UTILS_H
#define OFFICE_UTILS_H
#include "OfficeUtilsCommon.h"
class COfficeUtils
{
private:
OnProgressCallback* m_fCallback;
public:
COfficeUtils(OnProgressCallback* fCallback);
public:
HRESULT ExtractToDirectory(const std::wstring& zipFile, const std::wstring& unzipDir, wchar_t* password, SHORT extract_without_path);
HRESULT CompressFileOrDirectory(const std::wstring& name, const std::wstring& outputFile, SHORT level);
HRESULT Uncompress(BYTE* destBuf, ULONG* destSize, BYTE* sourceBuf, ULONG sourceSize);
HRESULT Compress(BYTE* destBuf, ULONG* destSize, BYTE* sourceBuf, ULONG sourceSize, SHORT level);
HRESULT IsArchive(const std::wstring& filename);
HRESULT IsFileExistInArchive(const std::wstring& zipFile, const std::wstring& filePath);
HRESULT LoadFileFromArchive(const std::wstring& zipFile, const std::wstring& filePath, BYTE** fileInBytes, ULONG& nFileSize);
HRESULT ExtractFilesToMemory(const std::wstring& zipFile, const ExtractedFileCallback& data_receiver, void* pParam, bool* result);
HRESULT CompressFilesFromMemory(const std::wstring& zipFile, const RequestFileCallback& data_source, void* pParam, SHORT compression_level, bool* result);
};
#endif
#ifndef OFFICE_UTILS_COMMON_H
#define OFFICE_UTILS_COMMON_H
#include <string>
#include "../../DesktopEditor/common/Types.h"
static const long UTILS_ONPROGRESSEVENT_ID = 0;
typedef void (*OnProgressCallback)( long nID, long nPercent, short* Cancel );
typedef void (*ExtractedFileCallback)( const std::wstring& file_name, BYTE* pData, const long& nSize, void* pParam );
typedef bool (*RequestFileCallback)( std::wstring& file_name, BYTE*& pData, long& nSize, void* pParam );
#endif
\ No newline at end of file

Microsoft Visual Studio Solution File, Format Version 9.00
# Visual C++ Express 2005
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ASCOfficeUtilsLib", "ASCOfficeUtilsLib.vcproj", "{3F3CB5A1-BB01-49C1-9342-4A69E30F9EF6}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{3F3CB5A1-BB01-49C1-9342-4A69E30F9EF6}.Debug|Win32.ActiveCfg = Debug|Win32
{3F3CB5A1-BB01-49C1-9342-4A69E30F9EF6}.Debug|Win32.Build.0 = Debug|Win32
{3F3CB5A1-BB01-49C1-9342-4A69E30F9EF6}.Release|Win32.ActiveCfg = Release|Win32
{3F3CB5A1-BB01-49C1-9342-4A69E30F9EF6}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
<?xml version="1.0" encoding="windows-1251"?>
<VisualStudioProject
ProjectType="Visual C++"
Version="8.00"
Name="ASCOfficeUtilsLib"
ProjectGUID="{3F3CB5A1-BB01-49C1-9342-4A69E30F9EF6}"
RootNamespace="ASCOfficeUtilsLib"
>
<Platforms>
<Platform
Name="Win32"
/>
</Platforms>
<ToolFiles>
</ToolFiles>
<Configurations>
<Configuration
Name="Debug|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
Optimization="0"
AdditionalIncludeDirectories="&quot;..\..\ZLIB\zlib-1.2.3\contrib\minizip&quot;;&quot;..\..\ZLIB\zlib-1.2.3&quot;"
PreprocessorDefinitions="WIN32;_WINDOWS;_DEBUG"
MinimalRebuild="true"
BasicRuntimeChecks="3"
RuntimeLibrary="3"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="4"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
<Configuration
Name="Release|Win32"
OutputDirectory="$(SolutionDir)$(ConfigurationName)"
IntermediateDirectory="$(ConfigurationName)"
ConfigurationType="4"
CharacterSet="1"
WholeProgramOptimization="1"
>
<Tool
Name="VCPreBuildEventTool"
/>
<Tool
Name="VCCustomBuildTool"
/>
<Tool
Name="VCXMLDataGeneratorTool"
/>
<Tool
Name="VCWebServiceProxyGeneratorTool"
/>
<Tool
Name="VCMIDLTool"
/>
<Tool
Name="VCCLCompilerTool"
AdditionalIncludeDirectories="&quot;..\..\ZLIB\zlib-1.2.3\contrib\minizip&quot;;&quot;..\..\ZLIB\zlib-1.2.3&quot;"
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG"
RuntimeLibrary="2"
WarningLevel="3"
Detect64BitPortabilityProblems="true"
DebugInformationFormat="3"
/>
<Tool
Name="VCManagedResourceCompilerTool"
/>
<Tool
Name="VCResourceCompilerTool"
/>
<Tool
Name="VCPreLinkEventTool"
/>
<Tool
Name="VCLibrarianTool"
/>
<Tool
Name="VCALinkTool"
/>
<Tool
Name="VCXDCMakeTool"
/>
<Tool
Name="VCBscMakeTool"
/>
<Tool
Name="VCFxCopTool"
/>
<Tool
Name="VCPostBuildEventTool"
/>
</Configuration>
</Configurations>
<References>
</References>
<Files>
<Filter
Name="Source Files"
Filter="cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx"
UniqueIdentifier="{4FC737F1-C7A5-4376-A066-2A32D752A2FF}"
>
<File
RelativePath="..\OfficeUtils.cpp"
>
</File>
<File
RelativePath="..\..\ASCOfficeUtils\ZipUtilsCP.cpp"
>
</File>
</Filter>
<Filter
Name="Header Files"
Filter="h;hpp;hxx;hm;inl;inc;xsd"
UniqueIdentifier="{93995380-89BD-4b04-88EB-625FBE52EBFB}"
>
<File
RelativePath="..\OfficeUtils.h"
>
</File>
<File
RelativePath="..\OfficeUtilsCommon.h"
>
</File>
<File
RelativePath="..\..\ASCOfficeUtils\ZipUtilsCP.h"
>
</File>
</Filter>
<Filter
Name="minizip"
>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\crypt.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\ioapi.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\ioapi.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\iowin32.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\iowin32.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\miniunz.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\minizip.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\mztools.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\mztools.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\unzip.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\unzip.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\zip.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\contrib\minizip\zip.h"
>
</File>
</Filter>
<Filter
Name="zlib"
>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\adler32.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\compress.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\crc32.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\crc32.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\deflate.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\deflate.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\example.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\gzio.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\infback.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\inffast.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\inffast.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\inffixed.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\inflate.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\inflate.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\inftrees.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\inftrees.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\minigzip.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\trees.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\trees.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\uncompr.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\zconf.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\zconf.in.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\zlib.h"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\zutil.c"
>
</File>
<File
RelativePath="..\..\ZLIB\zlib-1.2.3\zutil.h"
>
</File>
</Filter>
</Files>
<Globals>
</Globals>
</VisualStudioProject>
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment