Commit e5d9ef30 authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

TxtFile2 win x64 build

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@62392 954022d7-b5bf-4e40-9824-e11837661b57
parent 2bb19410
......@@ -21,7 +21,7 @@ const std::wstring Encoding::ansi2unicode(const std::string& line)
const std::wstring Encoding::cp2unicode(const std::string& sline, const unsigned int nCodepage)
{
#if defined (_WIN32) || defined (_WIN64)
const int nSize = MultiByteToWideChar(codePage, 0, sline.c_str(), sline.size(), NULL, 0);
const int nSize = MultiByteToWideChar(nCodepage, 0, sline.c_str(), sline.size(), NULL, 0);
wchar_t *sTemp = new wchar_t[nSize];
if (!sTemp)
......@@ -198,7 +198,7 @@ const std::string Encoding::unicode2utf8(const std::wstring& line)
const std::string Encoding::unicode2cp(const std::wstring& sLine, const unsigned int nCodepage)
{
#if defined (_WIN32) || defined (_WIN64)
const int nSize = WideCharToMultiByte(codePage, 0, sLine.c_str(), sLine.length(), NULL, 0, NULL, NULL);
const int nSize = WideCharToMultiByte(nCodepage, 0, sLine.c_str(), sLine.length(), NULL, 0, NULL, NULL);
char *sTemp = new char[nSize];
if (!sTemp)
return std::string();
......
......@@ -11,7 +11,7 @@ namespace StlUtils
{
#if defined(_WIN32) || defined(_WIN64)
wchar_t strValue[256];
_itow_s(value, strValue, 256, radix);
_itow_s(value, strValue, 256, 10);
return std::wstring(strValue);
#else
return std::to_wstring(value);
......@@ -33,7 +33,7 @@ namespace StlUtils
{
#if defined(_WIN32) || defined(_WIN64)
char strValue[256];
_itoa_s(value, strValue, 256, radix);
_itoa_s(value, strValue, 256, 10);
return std::string(strValue);
#else
return std::to_string(value);
......
#pragma once
#include "../../../../Common/DocxFormat/Source/XML/stringcommon.h"
#include "../Common/Encoding.h"
#include <vector>
template<typename Out, typename In>
static const std::vector<Out> _transform(const std::vector<In>& lines, const Out(*func)(const In&))
......
......@@ -2,7 +2,8 @@
#ifndef TXT_2_DOCX_CONVERTER_INCLUDE_H_
#define TXT_2_DOCX_CONVERTER_INCLUDE_H_
#include "../../../../Common/DocxFormat/Source/XML/Utils.h"
#include "../../../Common/DocxFormat/Source/XML/Utils.h"
#include <string>
namespace TxtXml
{
......
#pragma once
#ifndef DOCX_2_TXT_CONVERTER_INCLUDE_H_
#define DOCX_2_TXT_CONVERTER_INCLUDE_H_
#include <vector>
#include <string>
namespace TxtXml
{
class ITxtXmlEvent;
}
namespace Docx2Txt
{
class Converter_Impl;
class Converter
{
public:
Converter();
~Converter();
void convert(TxtXml::ITxtXmlEvent& Event);
void read (const std::wstring& path);
void write (const std::wstring& path);
void writeUtf8 (const std::wstring& path) const;
void writeUnicode (const std::wstring& path) const;
void writeBigEndian (const std::wstring& path) const;
void writeAnsi (const std::wstring& path) const;
private:
Converter_Impl * converter_;
};
} // namespace Docx2Txt
#endif // DOCX_2_TXT_CONVERTER_INCLUDE_H_
#include "Converter.h"
#include "../../../../Common/DocxFormat/Source/DocxFormat/Docx.h"
#include "../TxtFormat/TxtFormat.h"
#include "../TxtXmlEvent.h"
namespace Txt2Docx
{
class Converter_Impl
{
public:
Converter_Impl(int encoding);
void convert(TxtXml::ITxtXmlEvent& Event);
Txt::File m_inputFile;
OOX::CDocument m_outputFile;
};
Converter::Converter(int encoding) : converter_( new Converter_Impl(encoding) )
{
}
Converter::~Converter()
{
delete converter_;
}
void Converter::convert(TxtXml::ITxtXmlEvent& Event)
{
return converter_->convert(Event);
}
void Converter::read(const std::wstring& path)
{
return converter_->m_inputFile.read(path);
}
void Converter::write(/*const std::wstring& path*/XmlUtils::CStringWriter & stringWriter)
{
for (long i=0;i < converter_->m_outputFile.m_arrItems.size(); i++)
{
if (converter_->m_outputFile.m_arrItems[i] != NULL)
stringWriter.WriteString(converter_->m_outputFile.m_arrItems[i]->toXML());
}
//BOOL res = converter_->m_outputFile.Write(std_string2string(path.string()));
return;
}
Converter_Impl::Converter_Impl(int encoding)
{
m_inputFile.m_nEncoding = encoding;
}
void Converter_Impl::convert(TxtXml::ITxtXmlEvent& Event)
{
//smart_ptr<OOX::File> pFile = m_outputFile.Find(OOX::FileTypes::Document);
OOX::CDocument *pDocument = &m_outputFile;//NULL;
if (!m_inputFile.m_listContent.empty() /*&& pFile.IsInit() && OOX::FileTypes::Document == pFile->type()*/)
{
//pDocument = (OOX::CDocument*)pFile.operator->();
//pDocument->ClearItems();
int percent = 100000;
int step = 800000 / m_inputFile.m_listContentSize; // !!!!!
bool cancel = Event.Progress(0, 100000);
if(cancel)
return;
/*
OOX::Logic::ParagraphProperty pPr;
OOX::Logic::Spacing space;
space.After = 0;
space.Line = 240;
space.LineRule = "auto";
pPr.Spacing = space;
OOX::Logic::RFonts rFont;
rFont.Ascii = "Courier New";
rFont.HAnsi = "Courier New";
rFont.Cs = "Courier New";
OOX::Logic::RunProperty rPr;
rPr.RFonts = rFont;
pPr.RunProperty = rPr;
OOX::Logic::Paragraph paragraph;
paragraph.Property = pPr;
*/
for (std::list<std::wstring>::iterator line = m_inputFile.m_listContent.begin(); line != m_inputFile.m_listContent.end(); line++)
{
//OOX::Logic::ParagraphProperty pPr;
//OOX::Logic::Spacing space;
//space.After = 0;
//space.Line = 240;
//space.LineRule = "auto";
//pPr.Spacing = space;
//OOX::Logic::RFonts rFont;
//rFont.Ascii = "Courier New";
//rFont.HAnsi = "Courier New";
//rFont.Cs = "Courier New";
//OOX::Logic::RunProperty rPr;
//rPr.RFonts = rFont;
//pPr.RunProperty = rPr;
//OOX::Logic::Paragraph paragraph;
//paragraph.Property = pPr;
OOX::Logic::CParagraph *temp = new OOX::Logic::CParagraph();
while(line->find(_T("\x08")) != line->npos)
{
line->erase(line->find(_T("\x08")), 1);//, "");
}
if(line->length() > 0)
{
CString s = std_string2string(*line);
temp->AddText(s);//, rPr);
}
pDocument->m_arrItems.push_back(temp);
percent += step;
cancel = Event.Progress(0, percent);
if(cancel)
return;
}
}
Event.Progress(0, 900000);
}
} // namespace Txt2Docx
#pragma once
#ifndef TXT_2_DOCX_CONVERTER_INCLUDE_H_
#define TXT_2_DOCX_CONVERTER_INCLUDE_H_
#include "../../../../Common/DocxFormat/Source/XML/Utils.h"
namespace TxtXml
{
class ITxtXmlEvent;
}
namespace Txt2Docx
{
class Converter_Impl;
class Converter
{
public:
Converter (int encoding);
~Converter ();
void convert(TxtXml::ITxtXmlEvent& Event);
void read (const std::wstring& path);
void write (XmlUtils::CStringWriter & stringWriter/*const std::wstring& path*/);
private:
Converter_Impl * converter_;
};
} // namespace Txt2Docx
#endif // TXT_2_DOCX_CONVERTER_INCLUDE_H_
......@@ -22,7 +22,7 @@ namespace Txt
if (filename.empty())
return;
TxtFile file(std_string2string(filename));
TxtFile file(filename);
std::list<std::string> codePageContent = file.readAnsiOrCodePage();
m_listContentSize = file.getLinesCount();
......@@ -40,7 +40,7 @@ namespace Txt
if (filename.empty())
return;
TxtFile file(std_string2string(filename));
TxtFile file(filename);
//
......@@ -74,13 +74,13 @@ namespace Txt
void File::write(const std::wstring& filename) const
{
TxtFile file(std_string2string(filename));
TxtFile file(filename);
file.writeUtf8(_transform(m_listContent, Encoding::unicode2utf8));
}
void File::writeCodePage(const std::wstring& filename, int code_page) const
{
TxtFile file(std_string2string(filename));
TxtFile file(filename);
std::list<std::string> result;
for (std::list<std::wstring>::const_iterator iter = m_listContent.begin(); iter != m_listContent.end(); ++iter)
......@@ -93,29 +93,28 @@ namespace Txt
void File::writeUtf8(const std::wstring& filename) const
{
TxtFile file(std_string2string(filename));
TxtFile file(filename);
file.writeUtf8(_transform(m_listContent, Encoding::unicode2utf8));
}
void File::writeUnicode(const std::wstring& filename) const
{
TxtFile file(std_string2string(filename));
TxtFile file(filename);
file.writeUnicode(m_listContent);
}
void File::writeBigEndian(const std::wstring& filename) const
{
OOX::CPath path (filename);
TxtFile file(path);
TxtFile file(filename);
file.writeBigEndian(m_listContent);
}
void File::writeAnsi(const std::wstring& filename) const
{
TxtFile file(std_string2string(filename));
TxtFile file(filename);
file.writeAnsiOrCodePage(_transform(m_listContent, Encoding::unicode2ansi));
}
......
......@@ -36,7 +36,7 @@ static std::wstring convertUtf16ToWString(UTF16 * Data, int nLength)
return wstr;
}
TxtFile::TxtFile(const OOX::CPath& path) : m_path(path), m_linesCount(0)
TxtFile::TxtFile(const std::wstring & path) : m_path(path), m_linesCount(0)
{
}
const int TxtFile::getLinesCount()
......@@ -48,7 +48,7 @@ const std::list<std::string> TxtFile::readAnsiOrCodePage() // == readUtf8without
std::list<std::string> result;
CFile file_binary;
if (file_binary.OpenFile(m_path.GetPath()) != S_OK) return result;
if (file_binary.OpenFile(std_string2string(m_path)) != S_OK) return result;
long file_size = file_binary.GetFileSize();
char *file_data = new char[file_size];
......@@ -84,7 +84,7 @@ const std::list<std::wstring> TxtFile::readUnicode()
std::list<std::wstring> result;
CFile file_binary;
if (file_binary.OpenFile(m_path.GetPath()) != S_OK) return result;
if (file_binary.OpenFile(std_string2string(m_path)) != S_OK) return result;
long file_size = file_binary.GetFileSize();
char *file_data = new char[file_size];
......@@ -133,7 +133,7 @@ const std::list<std::wstring> TxtFile::readBigEndian()
std::list<std::wstring> result;
CFile file_binary;
if (file_binary.OpenFile(m_path.GetPath()) != S_OK) return result;
if (file_binary.OpenFile(std_string2string(m_path)) != S_OK) return result;
long file_size = file_binary.GetFileSize();
char *file_data = new char[file_size];
......@@ -198,7 +198,7 @@ const std::list<std::string> TxtFile::readUtf8()
std::list<std::string> result;
CFile file_binary;
if (file_binary.OpenFile(m_path.GetPath()) != S_OK) return result;
if (file_binary.OpenFile(std_string2string(m_path)) != S_OK) return result;
long file_size = file_binary.GetFileSize();
char *file_data = new char[file_size];
......@@ -231,7 +231,7 @@ const std::list<std::string> TxtFile::readUtf8()
void TxtFile::writeAnsiOrCodePage(const std::list<std::string>& content) // === writeUtf8withoutPref
{
CFile file;
if (file.CreateFile(m_path.GetPath()) == S_OK)
if (file.CreateFile(std_string2string(m_path)) == S_OK)
{
BYTE endLine[2] = {0x0d, 0x0a};
for (std::list<std::string>::const_iterator iter = content.begin(); iter != content.end(); ++iter)
......@@ -247,7 +247,7 @@ void TxtFile::writeAnsiOrCodePage(const std::list<std::string>& content) // ===
void TxtFile::writeUnicode(const std::list<std::wstring>& content)
{
CFile file;
if (file.CreateFile(m_path.GetPath()) == S_OK)
if (file.CreateFile(std_string2string(m_path)) == S_OK)
{
BYTE Header[2] = {0xff, 0xfe};
BYTE EndLine[4] = {0x0d, 0x00, 0x0a, 0x00};
......@@ -277,7 +277,7 @@ void TxtFile::writeUnicode(const std::list<std::wstring>& content)
void TxtFile::writeBigEndian(const std::list<std::wstring>& content)
{
CFile file;
if (file.CreateFile(m_path.GetPath()) == S_OK)
if (file.CreateFile(std_string2string(m_path)) == S_OK)
{
BYTE Header[2] = {0xfe, 0xff};
BYTE EndLine[4] = {0x00, 0x0d, 0x00, 0x0a};
......@@ -313,7 +313,7 @@ void TxtFile::writeBigEndian(const std::list<std::wstring>& content)
void TxtFile::writeUtf8(const std::list<std::string>& content)
{
CFile file;
if (file.CreateFile(m_path.GetPath()) == S_OK)
if (file.CreateFile(std_string2string(m_path)) == S_OK)
{
BYTE Header[3] = {0xef ,0xbb , 0xbf};
BYTE EndLine[2] = {0x0d ,0x0a};
......@@ -334,7 +334,7 @@ const bool TxtFile::isUnicode()
{
CFile file;
if (file.OpenFile(m_path.GetPath()) != S_OK) return false;
if (file.OpenFile(std_string2string(m_path)) != S_OK) return false;
BYTE data [2];
file.ReadFile(data,2);
......@@ -349,7 +349,7 @@ const bool TxtFile::isBigEndian()
{
CFile file;
if (file.OpenFile(m_path.GetPath()) != S_OK) return false;
if (file.OpenFile(std_string2string(m_path)) != S_OK) return false;
BYTE data [2];
file.ReadFile(data,2);
......@@ -364,7 +364,7 @@ const bool TxtFile::isUtf8()
{
CFile file;
if (file.OpenFile(m_path.GetPath()) != S_OK) return false;
if (file.OpenFile(std_string2string(m_path)) != S_OK) return false;
BYTE data [3];
file.ReadFile(data,3);
......
......@@ -10,7 +10,7 @@
class TxtFile
{
public:
TxtFile(const OOX::CPath& path);
TxtFile(const std::wstring & path);
const std::list<std::string> readAnsiOrCodePage();
const std::list<std::wstring> readUnicode();
......@@ -30,8 +30,8 @@ public:
const int getLinesCount();
private:
OOX::CPath m_path;
int m_linesCount;
std::wstring m_path;
int m_linesCount;
};
#endif // UTILITY_TXT_FILE_INCLUDE_H_
\ No newline at end of file
......@@ -88,7 +88,7 @@ HRESULT CTxtXmlFile::txt_LoadFromFile(const std::wstring & sSrcFileName, const s
//As Text
Writers::FileWriter *pDocxWriter = new Writers::FileWriter(sDstPath, _T(""), 1, false, NULL, _T(""));
Writers::FileWriter *pDocxWriter = new Writers::FileWriter(std_string2string(sDstPath), _T(""), 1, false, NULL, _T(""));
if (pDocxWriter == NULL) return S_FALSE;
CreateDocxEmpty(std_string2string(sDstPath), pDocxWriter);
......
......@@ -6,6 +6,7 @@
#if defined(_WIN32) || defined(_WIN64)
#include <windows.h>
#include <atlstr.h>
#else
#include "../../../DesktopEditor/common/ASCVariant.h"
#endif
......
......@@ -272,75 +272,6 @@
<References>
</References>
<Files>
<Filter
Name="Docx2Txt"
>
<File
RelativePath="..\Source\Docx2Txt\Converter.cpp"
>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/bigobj"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\Source\Docx2Txt\Converter.h"
>
</File>
</Filter>
<Filter
Name="Txt2Docx"
>
<File
RelativePath="..\Source\Txt2Docx\Converter.cpp"
>
<FileConfiguration
Name="Debug|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Debug|x64"
>
<Tool
Name="VCCLCompilerTool"
AdditionalOptions="/bigobj"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|Win32"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
<FileConfiguration
Name="Release|x64"
>
<Tool
Name="VCCLCompilerTool"
ObjectFile="$(IntDir)\$(InputName)1.obj"
XMLDocumentationFileName="$(IntDir)\$(InputName)1.xdc"
/>
</FileConfiguration>
</File>
<File
RelativePath="..\Source\Txt2Docx\Converter.h"
>
</File>
</Filter>
<Filter
Name="TxtFormat"
>
......@@ -481,6 +412,22 @@
</File>
</Filter>
</Filter>
<File
RelativePath="..\Source\ConvertDocx2Txt.cpp"
>
</File>
<File
RelativePath="..\Source\ConvertDocx2Txt.h"
>
</File>
<File
RelativePath="..\Source\ConvertTxt2Docx.cpp"
>
</File>
<File
RelativePath="..\Source\ConvertTxt2Docx.h"
>
</File>
<File
RelativePath="..\Source\TxtXmlFile.cpp"
>
......
......@@ -2,6 +2,6 @@
//1
//0
//1
//68
#define INTVER 1,0,1,68
#define STRVER "1,0,1,68\0"
//80
#define INTVER 1,0,1,80
#define STRVER "1,0,1,80\0"
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