diff --git a/.gitattributes b/.gitattributes
index 1e711f8d20..9af0ba7d6a 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -6564,6 +6564,8 @@ DesktopEditor/cximage/png/pngtest.png svn_mime_002dtype=application%2Foctet-stre
DesktopEditor/cximage/zlib/zlib.3.pdf svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/doctrenderer svnc_tsvn_003alogminsize=5
DesktopEditor/doctrenderer/test svnc_tsvn_003alogminsize=5
+DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/app.ico svn_mime_002dtype=application%2Foctet-stream
+DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/app.rc svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/doctrenderer/Тормоза[!!-~]Ubuntu[!!-~]в[!!-~]Virtual[!!-~]Box.docx svn_mime_002dtype=application%2Foctet-stream
DesktopEditor/editor/GLplatform svnc_tsvn_003alogminsize=5
DesktopEditor/editor/build/windows/Test/break_one.bmp svn_mime_002dtype=application%2Foctet-stream
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/docbuilder.sln b/DesktopEditor/doctrenderer/test_builder/docbuilder/docbuilder.sln
new file mode 100644
index 0000000000..d262cd9ae3
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/docbuilder.sln
@@ -0,0 +1,61 @@
+
+Microsoft Visual Studio Solution File, Format Version 12.00
+# Visual Studio 2013
+VisualStudioVersion = 12.0.30723.0
+MinimumVisualStudioVersion = 10.0.40219.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "doctrendererwrapper", "doctrendererwrapper\doctrendererwrapper.vcxproj", "{10124551-28B8-4CA0-8FBA-420CF9602CF3}"
+EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test", "test\test.csproj", "{85EE7B43-D2BF-4E8B-A103-7D1845A21587}"
+ ProjectSection(ProjectDependencies) = postProject
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3} = {10124551-28B8-4CA0-8FBA-420CF9602CF3}
+ EndProjectSection
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Any CPU = Debug|Any CPU
+ Debug|ARM = Debug|ARM
+ Debug|Mixed Platforms = Debug|Mixed Platforms
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Any CPU = Release|Any CPU
+ Release|ARM = Release|ARM
+ Release|Mixed Platforms = Release|Mixed Platforms
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Debug|Any CPU.ActiveCfg = Debug|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Debug|ARM.ActiveCfg = Debug|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Debug|Win32.ActiveCfg = Debug|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Debug|Win32.Build.0 = Debug|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Debug|x64.ActiveCfg = Debug|x64
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Debug|x64.Build.0 = Debug|x64
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Release|Any CPU.ActiveCfg = Release|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Release|ARM.ActiveCfg = Release|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Release|Win32.ActiveCfg = Release|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Release|Win32.Build.0 = Release|Win32
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}.Release|x64.ActiveCfg = Release|Win32
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Debug|ARM.ActiveCfg = Debug|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Debug|Win32.ActiveCfg = Debug|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Debug|x64.ActiveCfg = Debug|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Debug|x64.Build.0 = Debug|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Release|Any CPU.Build.0 = Release|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Release|ARM.ActiveCfg = Release|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Release|Win32.ActiveCfg = Release|Any CPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}.Release|x64.ActiveCfg = Release|Any CPU
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/AssemblyInfo.cpp b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/AssemblyInfo.cpp
new file mode 100644
index 0000000000..0d21947d5f
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/AssemblyInfo.cpp
@@ -0,0 +1,38 @@
+#include "stdafx.h"
+
+using namespace System;
+using namespace System::Reflection;
+using namespace System::Runtime::CompilerServices;
+using namespace System::Runtime::InteropServices;
+using namespace System::Security::Permissions;
+
+//
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+//
+[assembly:AssemblyTitleAttribute(L"doctrendererwrapper")];
+[assembly:AssemblyDescriptionAttribute(L"")];
+[assembly:AssemblyConfigurationAttribute(L"")];
+[assembly:AssemblyCompanyAttribute(L"")];
+[assembly:AssemblyProductAttribute(L"doctrendererwrapper")];
+[assembly:AssemblyCopyrightAttribute(L"Copyright (c) 2016")];
+[assembly:AssemblyTrademarkAttribute(L"")];
+[assembly:AssemblyCultureAttribute(L"")];
+
+//
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the value or you can default the Revision and Build Numbers
+// by using the '*' as shown below:
+
+[assembly:AssemblyVersionAttribute("1.0.*")];
+
+[assembly:ComVisible(false)];
+
+[assembly:CLSCompliantAttribute(true)];
\ No newline at end of file
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/ReadMe.txt b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/ReadMe.txt
new file mode 100644
index 0000000000..dce8777068
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/ReadMe.txt
@@ -0,0 +1,38 @@
+========================================================================
+ DYNAMIC LINK LIBRARY : doctrendererwrapper Project Overview
+========================================================================
+
+AppWizard has created this doctrendererwrapper DLL for you.
+
+This file contains a summary of what you will find in each of the files that
+make up your doctrendererwrapper application.
+
+doctrendererwrapper.vcxproj
+ This is the main project file for VC++ projects generated using an Application Wizard.
+ It contains information about the version of Visual C++ that generated the file, and
+ information about the platforms, configurations, and project features selected with the
+ Application Wizard.
+
+doctrendererwrapper.vcxproj.filters
+ This is the filters file for VC++ projects generated using an Application Wizard.
+ It contains information about the association between the files in your project
+ and the filters. This association is used in the IDE to show grouping of files with
+ similar extensions under a specific node (for e.g. ".cpp" files are associated with the
+ "Source Files" filter).
+
+doctrendererwrapper.cpp
+ This is the main DLL source file.
+
+doctrendererwrapper.h
+ This file contains a class declaration.
+
+AssemblyInfo.cpp
+ Contains custom attributes for modifying assembly metadata.
+
+/////////////////////////////////////////////////////////////////////////////
+Other notes:
+
+AppWizard uses "TODO:" to indicate parts of the source code you
+should add to or customize.
+
+/////////////////////////////////////////////////////////////////////////////
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/Stdafx.cpp b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/Stdafx.cpp
new file mode 100644
index 0000000000..c1f43ae1f1
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/Stdafx.cpp
@@ -0,0 +1,5 @@
+// stdafx.cpp : source file that includes just the standard includes
+// doctrendererwrapper.pch will be the pre-compiled header
+// stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/Stdafx.h b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/Stdafx.h
new file mode 100644
index 0000000000..2e525d43f5
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/Stdafx.h
@@ -0,0 +1,7 @@
+// stdafx.h : include file for standard system include files,
+// or project specific include files that are used frequently,
+// but are changed infrequently
+
+#pragma once
+
+
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/app.ico b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/app.ico
new file mode 100644
index 0000000000..d06d92b763
Binary files /dev/null and b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/app.ico differ
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/app.rc b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/app.rc
new file mode 100644
index 0000000000..e20728ab2b
Binary files /dev/null and b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/app.rc differ
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.cpp b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.cpp
new file mode 100644
index 0000000000..30529c22ef
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.cpp
@@ -0,0 +1,91 @@
+// This is the main DLL file.
+
+#include "stdafx.h"
+
+#include "doctrendererwrapper.h"
+#include "../../../docbuilder.h"
+
+#ifdef _WIN64
+#pragma comment(lib, "../../../../../SDK/lib/win_64/doctrenderer.lib")
+#else
+#pragma comment(lib, "../../../../../SDK/lib/win_32/doctrenderer.lib")
+#endif
+
+namespace doctrendererwrapper {
+
+ static wchar_t* StringToStdString(String^ param)
+ {
+ return (wchar_t*)System::Runtime::InteropServices::Marshal::StringToHGlobalUni(param).ToPointer();
+ }
+
+ ref class CWrapper_Private
+ {
+ public:
+ NSDoctRenderer::CDocBuilder* m_pBuilder;
+
+ CWrapper_Private(bool bIsCheckSystemFonts)
+ {
+ m_pBuilder = new NSDoctRenderer::CDocBuilder(bIsCheckSystemFonts);
+ }
+ ~CWrapper_Private()
+ {
+ delete m_pBuilder;
+ }
+ };
+
+
+ CWrapper::CWrapper(bool bIsCheckSystemFonts)
+ {
+ m_pInternal = gcnew CWrapper_Private(bIsCheckSystemFonts);
+ }
+ CWrapper::~CWrapper()
+ {
+ delete m_pInternal;
+ }
+
+ bool CWrapper::OpenFile(String^ path, String^ params)
+ {
+ return m_pInternal->m_pBuilder->OpenFile(StringToStdString(path), StringToStdString(params));
+ }
+ bool CWrapper::CreateFile(int type)
+ {
+ return m_pInternal->m_pBuilder->CreateFile(type);
+ }
+ void CWrapper::SetTmpFolder(String^ folder)
+ {
+ m_pInternal->m_pBuilder->SetTmpFolder(StringToStdString(folder));
+ }
+ bool CWrapper::SaveFile(int type, String^ path)
+ {
+ return m_pInternal->m_pBuilder->SaveFile(type, StringToStdString(path));
+ }
+ void CWrapper::CloseFile()
+ {
+ m_pInternal->m_pBuilder->CloseFile();
+ }
+ bool CWrapper::ExecuteCommand(String^ command)
+ {
+ return m_pInternal->m_pBuilder->ExecuteCommand(StringToStdString(command));
+ }
+
+ bool CWrapper::Run(String^ path)
+ {
+ return m_pInternal->m_pBuilder->Run(StringToStdString(path));
+ }
+
+ bool CWrapper::RunText(String^ text)
+ {
+ return m_pInternal->m_pBuilder->RunTextW(StringToStdString(text));
+ }
+
+ void CWrapper::Initialize()
+ {
+ NSDoctRenderer::CDocBuilder::Initialize();
+ }
+ void CWrapper::Destroy()
+ {
+ NSDoctRenderer::CDocBuilder::Dispose();
+ }
+
+}
+
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.h b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.h
new file mode 100644
index 0000000000..9d6d32dc7e
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.h
@@ -0,0 +1,32 @@
+// doctrendererwrapper.h
+
+#pragma once
+
+using namespace System;
+
+namespace doctrendererwrapper {
+
+ ref class CWrapper_Private;
+ public ref class CWrapper
+ {
+ public:
+ CWrapper(bool bIsCheckSystemFonts);
+ ~CWrapper();
+
+ bool OpenFile(String^ path, String^ params);
+ bool CreateFile(int type);
+ void SetTmpFolder(String^ folder);
+ bool SaveFile(int type, String^ path);
+ void CloseFile();
+ bool ExecuteCommand(String^ command);
+
+ bool Run(String^ path);
+ bool RunText(String^ text_commands);
+
+ static void Initialize();
+ static void Destroy();
+
+ private:
+ CWrapper_Private^ m_pInternal;
+ };
+}
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.vcxproj b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.vcxproj
new file mode 100644
index 0000000000..dc7093d1b0
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.vcxproj
@@ -0,0 +1,166 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {10124551-28B8-4CA0-8FBA-420CF9602CF3}
+ v4.5
+ ManagedCProj
+ doctrendererwrapper
+
+
+
+ DynamicLibrary
+ true
+ v120
+ true
+ Unicode
+
+
+ DynamicLibrary
+ true
+ v120
+ true
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v120
+ true
+ Unicode
+
+
+ DynamicLibrary
+ false
+ v120
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+
+
+ true
+ $(SolutionDir)\test\bin
+
+
+ false
+
+
+ false
+ $(SolutionDir)\test\bin
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;%(PreprocessorDefinitions)
+ Use
+
+
+ true
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;%(PreprocessorDefinitions)
+ Use
+
+
+ true
+
+
+
+
+
+
+ Level3
+ WIN32;NDEBUG;%(PreprocessorDefinitions)
+ Use
+
+
+ true
+
+
+
+
+
+ Level3
+ WIN32;NDEBUG;%(PreprocessorDefinitions)
+ Use
+
+
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create
+ Create
+ Create
+ Create
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.vcxproj.filters b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.vcxproj.filters
new file mode 100644
index 0000000000..22bd570f9c
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/doctrendererwrapper.vcxproj.filters
@@ -0,0 +1,52 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+
+
+
+ Resource Files
+
+
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/resource.h b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/resource.h
new file mode 100644
index 0000000000..1f2251c2bd
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/doctrendererwrapper/resource.h
@@ -0,0 +1,3 @@
+//{{NO_DEPENDENCIES}}
+// Microsoft Visual C++ generated include file.
+// Used by app.rc
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/App.config b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/App.config
new file mode 100644
index 0000000000..fad249e406
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/App.config
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/MainForm.Designer.cs b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/MainForm.Designer.cs
new file mode 100644
index 0000000000..f9c88a725f
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/MainForm.Designer.cs
@@ -0,0 +1,47 @@
+namespace test
+{
+ partial class MainForm
+ {
+ ///
+ /// Required designer variable.
+ ///
+ private System.ComponentModel.IContainer components = null;
+
+ ///
+ /// Clean up any resources being used.
+ ///
+ /// true if managed resources should be disposed; otherwise, false.
+ protected override void Dispose(bool disposing)
+ {
+ if (disposing && (components != null))
+ {
+ components.Dispose();
+ }
+ base.Dispose(disposing);
+ }
+
+ #region Windows Form Designer generated code
+
+ ///
+ /// Required method for Designer support - do not modify
+ /// the contents of this method with the code editor.
+ ///
+ private void InitializeComponent()
+ {
+ this.SuspendLayout();
+ //
+ // MainForm
+ //
+ this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 25F);
+ this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ this.ClientSize = new System.Drawing.Size(1806, 1090);
+ this.Name = "MainForm";
+ this.Text = "Form1";
+ this.ResumeLayout(false);
+
+ }
+
+ #endregion
+ }
+}
+
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/MainForm.cs b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/MainForm.cs
new file mode 100644
index 0000000000..7c18f468cd
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/MainForm.cs
@@ -0,0 +1,96 @@
+using System;
+using System.Collections.Generic;
+using System.ComponentModel;
+using System.Data;
+using System.Drawing;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace test
+{
+ public partial class MainForm : Form
+ {
+ public TabControl m_oTabControl = new TabControl();
+
+ public MainForm()
+ {
+ InitializeComponent();
+
+ this.Text = "Document Builder";
+
+ m_oTabControl.SetBounds(0, 0, this.ClientSize.Width, this.ClientSize.Height - 50);
+ m_oTabControl.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom;
+ this.Controls.Add(m_oTabControl);
+
+ AddTab("builder.SetTmpFolder(\"D:/BuilderTest\");\r\n" +
+"#builder.CreateFile(\"docx\");\r\n" +
+"builder.OpenFile(\"D:/TESTFILES/images.docx\", \"\");\r\n" +
+"Add_Text(\"Test\");\r\n" +
+"builder.SaveFile(\"pdf\", \"D:/TESTFILES/images.pdf\");\r\n" +
+"builder.CloseFile();");
+
+ int nButtonsHeight = 30;
+ int nButtonsTop = this.ClientSize.Height - ((50 + nButtonsHeight) / 2);
+ int nButtonsWidth = 100;
+ int nButtonsBetween = 10;
+ int nButtonsRight = 10;
+
+ Button _buttonNew = new Button();
+ _buttonNew.SetBounds(this.ClientSize.Width - nButtonsRight - 2 * nButtonsWidth - nButtonsBetween, nButtonsTop, nButtonsWidth, nButtonsHeight);
+ _buttonNew.Anchor = AnchorStyles.Right | AnchorStyles.Bottom;
+ _buttonNew.Text = "New Test";
+ _buttonNew.Click += _buttonNew_Click;
+ this.Controls.Add(_buttonNew);
+
+ Button _buttonRun = new Button();
+ _buttonRun.SetBounds(this.ClientSize.Width - nButtonsRight - nButtonsWidth, nButtonsTop, nButtonsWidth, nButtonsHeight);
+ _buttonRun.Anchor = AnchorStyles.Right | AnchorStyles.Bottom;
+ _buttonRun.Text = "Run";
+ _buttonRun.Click += _buttonRun_Click;
+ _buttonRun.BackColor = Color.Green;
+ _buttonRun.ForeColor = Color.White;
+ this.Controls.Add(_buttonRun);
+
+ doctrendererwrapper.CWrapper.Initialize();
+
+ this.Disposed += MainForm_Disposed;
+ }
+
+ void MainForm_Disposed(object sender, EventArgs e)
+ {
+ doctrendererwrapper.CWrapper.Destroy();
+ }
+
+ void _buttonRun_Click(object sender, EventArgs e)
+ {
+ doctrendererwrapper.CWrapper oBuilder = new doctrendererwrapper.CWrapper(false);
+ oBuilder.RunText(this.m_oTabControl.SelectedTab.Controls[0].Text);
+ oBuilder.Dispose();
+ }
+
+ void _buttonNew_Click(object sender, EventArgs e)
+ {
+ AddTab("");
+ }
+
+ private void AddTab(string _code)
+ {
+ TabPage _page = new TabPage("Test №" + Convert.ToString(m_oTabControl.TabCount + 1));
+
+ TextBox _text = new TextBox();
+ _text.Multiline = true;
+ _text.Dock = DockStyle.Fill;
+ _text.Text = _code;
+
+ _page.Controls.Add(_text);
+
+ m_oTabControl.Controls.Add(_page);
+ m_oTabControl.Controls[m_oTabControl.TabCount - 1].Name = "Test №" + Convert.ToString(m_oTabControl.TabCount);
+
+ this.OnResize(EventArgs.Empty);
+ }
+
+ }
+}
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/MainForm.resx b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/MainForm.resx
new file mode 100644
index 0000000000..29dcb1b3a3
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/MainForm.resx
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Program.cs b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Program.cs
new file mode 100644
index 0000000000..229b4ff44e
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Program.cs
@@ -0,0 +1,22 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+using System.Windows.Forms;
+
+namespace test
+{
+ static class Program
+ {
+ ///
+ /// The main entry point for the application.
+ ///
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainForm());
+ }
+ }
+}
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/AssemblyInfo.cs b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/AssemblyInfo.cs
new file mode 100644
index 0000000000..ee8c69f265
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/AssemblyInfo.cs
@@ -0,0 +1,36 @@
+using System.Reflection;
+using System.Runtime.CompilerServices;
+using System.Runtime.InteropServices;
+
+// General Information about an assembly is controlled through the following
+// set of attributes. Change these attribute values to modify the information
+// associated with an assembly.
+[assembly: AssemblyTitle("test")]
+[assembly: AssemblyDescription("")]
+[assembly: AssemblyConfiguration("")]
+[assembly: AssemblyCompany("")]
+[assembly: AssemblyProduct("test")]
+[assembly: AssemblyCopyright("Copyright © 2016")]
+[assembly: AssemblyTrademark("")]
+[assembly: AssemblyCulture("")]
+
+// Setting ComVisible to false makes the types in this assembly not visible
+// to COM components. If you need to access a type in this assembly from
+// COM, set the ComVisible attribute to true on that type.
+[assembly: ComVisible(false)]
+
+// The following GUID is for the ID of the typelib if this project is exposed to COM
+[assembly: Guid("492b3cfa-599e-4bd7-be7f-66de3e48c1cb")]
+
+// Version information for an assembly consists of the following four values:
+//
+// Major Version
+// Minor Version
+// Build Number
+// Revision
+//
+// You can specify all the values or you can default the Build and Revision Numbers
+// by using the '*' as shown below:
+// [assembly: AssemblyVersion("1.0.*")]
+[assembly: AssemblyVersion("1.0.0.0")]
+[assembly: AssemblyFileVersion("1.0.0.0")]
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Resources.Designer.cs b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Resources.Designer.cs
new file mode 100644
index 0000000000..5561e2f215
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Resources.Designer.cs
@@ -0,0 +1,71 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34014
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace test.Properties
+{
+
+
+ ///
+ /// A strongly-typed resource class, for looking up localized strings, etc.
+ ///
+ // This class was auto-generated by the StronglyTypedResourceBuilder
+ // class via a tool like ResGen or Visual Studio.
+ // To add or remove a member, edit your .ResX file then rerun ResGen
+ // with the /str option, or rebuild your VS project.
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ internal class Resources
+ {
+
+ private static global::System.Resources.ResourceManager resourceMan;
+
+ private static global::System.Globalization.CultureInfo resourceCulture;
+
+ [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
+ internal Resources()
+ {
+ }
+
+ ///
+ /// Returns the cached ResourceManager instance used by this class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Resources.ResourceManager ResourceManager
+ {
+ get
+ {
+ if ((resourceMan == null))
+ {
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("test.Properties.Resources", typeof(Resources).Assembly);
+ resourceMan = temp;
+ }
+ return resourceMan;
+ }
+ }
+
+ ///
+ /// Overrides the current thread's CurrentUICulture property for all
+ /// resource lookups using this strongly typed resource class.
+ ///
+ [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
+ internal static global::System.Globalization.CultureInfo Culture
+ {
+ get
+ {
+ return resourceCulture;
+ }
+ set
+ {
+ resourceCulture = value;
+ }
+ }
+ }
+}
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Resources.resx b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Resources.resx
new file mode 100644
index 0000000000..ffecec851a
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Resources.resx
@@ -0,0 +1,117 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
\ No newline at end of file
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Settings.Designer.cs b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Settings.Designer.cs
new file mode 100644
index 0000000000..583c2a7245
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Settings.Designer.cs
@@ -0,0 +1,30 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+// Runtime Version:4.0.30319.34014
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+namespace test.Properties
+{
+
+
+ [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
+ internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
+ {
+
+ private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
+
+ public static Settings Default
+ {
+ get
+ {
+ return defaultInstance;
+ }
+ }
+ }
+}
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Settings.settings b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Settings.settings
new file mode 100644
index 0000000000..abf36c5d3d
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/Properties/Settings.settings
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/test.csproj b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/test.csproj
new file mode 100644
index 0000000000..d3c1cf43e6
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/test.csproj
@@ -0,0 +1,92 @@
+
+
+
+
+ Debug
+ AnyCPU
+ {85EE7B43-D2BF-4E8B-A103-7D1845A21587}
+ WinExe
+ Properties
+ test
+ test
+ v4.5
+ 512
+
+
+ x64
+ true
+ full
+ false
+ bin\
+ DEBUG;TRACE
+ prompt
+ 4
+
+
+ x64
+ pdbonly
+ true
+ bin\
+ TRACE
+ prompt
+ 4
+
+
+
+ False
+ bin\doctrendererwrapper.dll
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Form
+
+
+ MainForm.cs
+
+
+
+
+ MainForm.cs
+
+
+ ResXFileCodeGenerator
+ Resources.Designer.cs
+ Designer
+
+
+ True
+ Resources.resx
+
+
+ SettingsSingleFileGenerator
+ Settings.Designer.cs
+
+
+ True
+ Settings.settings
+ True
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/DesktopEditor/doctrenderer/test_builder/docbuilder/test/test.csproj.user b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/test.csproj.user
new file mode 100644
index 0000000000..82c670d672
--- /dev/null
+++ b/DesktopEditor/doctrenderer/test_builder/docbuilder/test/test.csproj.user
@@ -0,0 +1,6 @@
+
+
+
+ true
+
+
\ No newline at end of file
diff --git a/DesktopEditor/doctrenderer/test_builder/main.cpp b/DesktopEditor/doctrenderer/test_builder/main.cpp
index 3d436fd1c7..eb16c8b431 100644
--- a/DesktopEditor/doctrenderer/test_builder/main.cpp
+++ b/DesktopEditor/doctrenderer/test_builder/main.cpp
@@ -33,6 +33,8 @@
#define OFFICESTUDIO_FILE_CROSSPLATFORM_DJVU OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0003
#define OFFICESTUDIO_FILE_CROSSPLATFORM_XPS OFFICESTUDIO_FILE_CROSSPLATFORM + 0x0004
+#include
+
#ifdef WIN32
int wmain(int argc, wchar_t *argv[])
#else
@@ -49,8 +51,15 @@ int main(int argc, char *argv[])
std::wstring sBuildFile = NSFile::CUtf8Converter::GetUnicodeStringFromUTF8((BYTE*)sBuildFileA.c_str(), (LONG)sBuildFileA.length());
#endif
- NSDoctRenderer::CDocBuilder oBuilder;
- oBuilder.Run(sBuildFile);
+ NSDoctRenderer::CDocBuilder::Initialize();
+
+ NSDoctRenderer::CDocBuilder oBuilder(false);
+ oBuilder.Run(sBuildFile.c_str());
+
+ NSDoctRenderer::CDocBuilder oBuilder2(false);
+ oBuilder2.Run(sBuildFile.c_str());
+
+ NSDoctRenderer::CDocBuilder::Dispose();
return 0;
}