Commit f1d9c12f authored by Oleg Korshul's avatar Oleg Korshul

change encoding to utf8

parent 30ef5a9d
#ifndef DOCX_RENDERER_COMMON_H
#ifndef DOCX_RENDERER_COMMON_H
#define DOCX_RENDERER_COMMON_H
#include "../DesktopEditor/common/StringBuilder.h"
......
#pragma once
#pragma once
#include "Page.h"
namespace NSDocxRenderer
......@@ -160,7 +160,7 @@ xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w10=\"urn:schemas-microsoft-com:
*dDpiY = m_dDpiY;
return S_OK;
}
//-------- ----------------------------------------------
//-------- Функции для задания настроек текста ----------------------------------------------
// pen --------------------------------------------------------------------------------------
AVSINLINE HRESULT SetPen(BSTR bsXML)
{
......@@ -561,7 +561,7 @@ xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w10=\"urn:schemas-microsoft-com:
return S_OK;
}
//-------- --------------------------------------------------------
//-------- Функции для вывода текста --------------------------------------------------------
AVSINLINE HRESULT CommandDrawText(BSTR bsText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset)
{
double dAngleMatrix = m_oTransform.z_Rotation();
......@@ -596,7 +596,7 @@ xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w10=\"urn:schemas-microsoft-com:
m_oCurrentPage.WriteText(bsUnicodeText, bsGidText, fX, fY, fWidth, fHeight, fBaseLineOffset, m_bIsNeedPDFTextAnalyzer);
return S_OK;
}
//-------- ---------------------------------------------------------------
//-------- Маркеры для команд ---------------------------------------------------------------
AVSINLINE HRESULT BeginCommand(DWORD lType)
{
m_lCurrentCommandType = (LONG)lType;
......@@ -611,7 +611,7 @@ xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w10=\"urn:schemas-microsoft-com:
if (c_nPageType == lType)
{
//
// нужно записать страницу в файл
m_oCurrentPage.Build();
m_oCurrentPage.Write(m_oWriter);
}
......@@ -622,7 +622,7 @@ xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w10=\"urn:schemas-microsoft-com:
return S_OK;
}
//-------- Graphics Path -----------------------------------------------
//-------- Функции для работы с Graphics Path -----------------------------------------------
AVSINLINE HRESULT PathCommandMoveTo(double fX, double fY)
{
if (c_nSimpleGraphicType == m_lCurrentCommandType)
......@@ -759,7 +759,7 @@ xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w10=\"urn:schemas-microsoft-com:
ApplyTransform2(dAngle, dLeft, dTop, dWidth, dHeight, lFlags);
return S_OK;
}
//-------- --------------------------------------------------
//-------- Функции для вывода изображений --------------------------------------------------
AVSINLINE HRESULT DrawImage(IUnknown* pInterface, double fX, double fY, double fWidth, double fHeight)
{
CImageInfo oInfo = m_oManager.WriteImage(pInterface, fX, fY, fWidth, fHeight);
......@@ -955,7 +955,7 @@ xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w10=\"urn:schemas-microsoft-com:
void Close()
{
// rels (images & docs)
// сохраним rels (images & docs)
CFile oFile;
oFile.CreateFile(m_strTempDirectory + _T("\\word\\_rels\\document.xml.rels"));
......@@ -1017,7 +1017,7 @@ xmlns:v=\"urn:schemas-microsoft-com:vml\" xmlns:w10=\"urn:schemas-microsoft-com:
oFile.WriteStringUTF8(oWriter.GetData());
oFile.CloseFile();
// fontTable
// сохраним fontTable
CFile oFileFontTable;
oFileFontTable.CreateFile(m_strTempDirectory + _T("\\word\\fontTable.xml"));
......
#ifndef DOCX_RENDERER_ELEMENT_IMAGE_H
#ifndef DOCX_RENDERER_ELEMENT_IMAGE_H
#define DOCX_RENDERER_ELEMENT_IMAGE_H
#include "Common.h"
......
#pragma once
#pragma once
#include "Common.h"
#include "FontManager.h"
......@@ -7,7 +7,7 @@ namespace NSDocxRenderer
{
const double c_dMMToDx = 72 * 20 / 25.4;
// T IsBigger, IsBiggerOrEqual
// у класса T должен быть метод IsBigger, IsBiggerOrEqual
template<typename T>
void SortElements(CArray<T*>& oArray)
{
......@@ -262,7 +262,7 @@ namespace NSDocxRenderer
m_strText += _T(" ");
}
// ...
// нужно перемерять...
double ___dSize = (double)((LONG)(m_oFont.Size * 2)) / 2;
pManagerLight->LoadFont(m_strPickFontName, m_lPickFontStyle, ___dSize, FALSE);
double dWidth = pManagerLight->MeasureStringWidth(m_strText);
......@@ -450,7 +450,7 @@ namespace NSDocxRenderer
AVSINLINE void SortConts()
{
// m_dX
// сортировка непрерывных слов по m_dX
SortElements(m_arConts);
}
......@@ -503,19 +503,19 @@ namespace NSDocxRenderer
if (dDelta < 0.5)
{
// (font/brush)
// просто текст на тексте или сменились настройки (font/brush)
pPrev->Write(oWriter, pManagerLight);
pPrev = pCurrent;
}
//else if (dDelta < 2 * pPrev->m_dSpaceWidthMM)
//{
// // , -
// // сменились настройки, но пробел все-таки вставить нужно
// pPrev->Write(oWriter, pManagerLight, true);
// pPrev = pCurrent;
//}
else
{
// .
// расстояние слишком большое. нужно сделать большой пробел
pPrev->Write(oWriter, pManagerLight);
pPrev->WriteTo(dDelta, oWriter, pManagerLight);
pPrev = pCurrent;
......
#ifndef DOCX_RENDERER_ELEMENT_SHAPE_H
#ifndef DOCX_RENDERER_ELEMENT_SHAPE_H
#define DOCX_RENDERER_ELEMENT_SHAPE_H
#include "Common.h"
......@@ -58,7 +58,7 @@ namespace NSDocxRenderer
double* pRealloc = (double*)realloc(m_pData, m_lSize * sizeof(double));
if (NULL != pRealloc)
{
//
// реаллок сработал
m_pData = pRealloc;
m_pDataCur = m_pData + m_lSizeCur;
}
......
#pragma once
#pragma once
#include "Common.h"
#include "FontManagerBase.h"
......@@ -224,7 +224,7 @@ namespace NSDocxRenderer
dBoxWidth = (double)fwidth;
dBoxHeight = (double)fheight;
//
// переводим в миллиметры
dBoxX *= c_dPixToMM;
dBoxY *= c_dPixToMM;
dBoxWidth *= c_dPixToMM;
......
#ifndef DOCX_RENDERER_FMB_H
#ifndef DOCX_RENDERER_FMB_H
#define DOCX_RENDERER_FMB_H
#include "Common.h"
......@@ -136,7 +136,7 @@ namespace NSFontManager
CFontAdvanced m_oFont;
//
//для подбора шрифтов
BYTE m_pRanges[0xFFFF];
BYTE m_pRangesNums[0xFFFF];
......@@ -323,7 +323,7 @@ namespace NSFontManager
void LoadFontParams(BOOL bIsPath = TRUE)
{
//
// читаем и выставляем все настройки шрифта
if (NULL == m_pManager)
return;
......@@ -414,7 +414,7 @@ namespace NSFontManager
memset(m_pRanges, 0xFF, 0xFFFF);
memset(m_pRangesNums, 0xFF, 0xFFFF);
//
// теперь просто по порядку заполняем все рэнджи
int nStart = 0;
int nCount = 0;
......@@ -862,7 +862,7 @@ namespace NSFontManager
memset(m_pRanges + nStart, 24, nCount);
memset(m_pRangesNums + nStart, 1, nCount);
//case 25: sUCRName = "Non-Plane 0"; break; /* U+D800-U+DB7F */ /* U+DB80-U+DBFF */ /* U+DC00-U+DFFF */ //
//case 25: sUCRName = "Non-Plane 0"; break; /* U+D800-U+DB7F */ /* U+DB80-U+DBFF */ /* U+DC00-U+DFFF */ // Не юникодные символы
nStart = 0xD800;
nCount = 0xDB7F - nStart + 1;
memset(m_pRanges + nStart, 25, nCount);
......@@ -911,7 +911,7 @@ namespace NSFontManager
memset(m_pRanges + nStart, 27, nCount);
memset(m_pRangesNums + nStart, 1, nCount);
//case 28: sUCRName = "Private Use Area (plane 0)"; break; /* U+E000-U+F8FF */ //
//case 28: sUCRName = "Private Use Area (plane 0)"; break; /* U+E000-U+F8FF */ // Не юникодные символы
nStart = 0xE000;
nCount = 0xF8FF - nStart + 1;
memset(m_pRanges + nStart, 28, nCount);
......@@ -1112,7 +1112,7 @@ namespace NSFontManager
//case 23: sUCRName = "Deseret"; break; /*U+10400-U+1044F*/
//case 24: sUCRName = "Byzantine Musical Symbols"; break; /*U+1D000-U+1D0FF*/ /*U+1D100-U+1D1FF*/ /*U+1D200-U+1D24F*/
//case 25: sUCRName = "Mathematical Alphanumeric Symbols"; break; /*U+1D400-U+1D7FF*/
//case 26: sUCRName = "Private Use (plane 15)"; break; /*U+F0000-U+FFFFD*/ /*U+100000-U+10FFFD*/ //
//case 26: sUCRName = "Private Use (plane 15)"; break; /*U+F0000-U+FFFFD*/ /*U+100000-U+10FFFD*/ // Не юникодные символы
//case 27: sUCRName = "Variation Selectors"; break; /* U+FE00-U+FE0F */ /*U+E0100-U+E01EF*/
nStart = 0xFE00;
......@@ -1301,8 +1301,8 @@ namespace NSFontManager
CFontPickUp& oPick = m_arListPicUps.GetNext(pos);
if ((oPick.m_oFont.m_oFont.IsEqual3(&m_oFont.m_oFont)) && (lRangeNum == oPick.m_lRangeNum) && (lRange == oPick.m_lRange))
{
// !
//
// нашли! ничего подбирать не нужно
// нужно просто выкинуть этот шрифт наверх
m_arListPicUps.MoveToHead(posOld);
m_strCurrentPickFont = oPick.m_strPickFont;
m_lCurrentPictFontStyle = oPick.m_lPickStyle;
......@@ -1310,7 +1310,7 @@ namespace NSFontManager
}
}
// ...
// не нашли...
m_arListPicUps.AddHead();
CFontPickUp& oPick = m_arListPicUps.GetHead();
......@@ -1340,7 +1340,7 @@ namespace NSFontManager
}
else if (((lRangeNum == 2) && (lRange == 3)) || ((lRangeNum == 1) && (lRange == 31)) || ((lRangeNum == 0) && (lRange == 13)))
{
// !!!
// ебаный арабский язык!!!
dwR1 = 1 << 13;
dwR2 = 1 << 31;
dwR3 = 1 << 3;
......
#pragma once
#pragma once
#include "ElementShape.h"
#include "ElementParagraph.h"
#include "ElementImage.h"
......@@ -152,7 +152,7 @@ namespace NSDocxRenderer
{
if ((NULL == m_pCurrentLine) || (TextAssociationTypeDefault == m_eTextAssociationType))
{
// ( )
// пуста¤ (в плане текста) страница
m_pCurrentLine = new CTextLine();
m_pCurrentLine->m_dBaselinePos = dBaseLinePos;
......@@ -173,7 +173,7 @@ namespace NSDocxRenderer
}
}
// - -
// лини¤ не нашлась - не беда - создадим новую
m_pCurrentLine = new CTextLine();
m_pCurrentLine->m_dBaselinePos = dBaseLinePos;
m_arTextLine.Add(m_pCurrentLine);
......@@ -309,7 +309,7 @@ namespace NSDocxRenderer
pShape->m_oPen = *m_pPen;
pShape->m_oBrush = *m_pBrush;
//
// нормализуем толщину линии
double dScaleTransform = (m_pTransform->m_agg_mtx.sx + m_pTransform->m_agg_mtx.sy) / 2.0;
pShape->m_oPen.Size *= dScaleTransform;
......@@ -386,7 +386,7 @@ namespace NSDocxRenderer
}
else
{
// ( xps)
// такого быть не должно (только из xps)
m_oManager.SetStringGid(0);
m_oManager.MeasureString(bsText, dTextX, dTextY, _x, _y, _w, _h, CFontManager::MeasureTypePosition);
}
......@@ -407,7 +407,7 @@ namespace NSDocxRenderer
if (NULL == pLastCont)
{
//
// первое слово в линии
CContText* pCont = new CContText();
pCont->m_dX = dTextX;
......@@ -444,10 +444,10 @@ namespace NSDocxRenderer
return;
}
//
// продолжение линии
//if (m_lCurrentCommand == c_nTextType && pLastCont->m_oFont.IsEqual(&m_oManager.m_oFontOld) && pLastCont->m_oBrush.IsEqual(m_pBrush))
//{
// //
// // быстрое отметание вс¤ких проверок
// pLastCont->m_strText += strText;
// pLastCont->m_dWidth = (dTextX + dTextW - pLastCont->m_dX);
// return;
......@@ -457,10 +457,10 @@ namespace NSDocxRenderer
if (pLastCont->m_oFont.IsEqual(&m_oManager.m_oFont.m_oFont) && pLastCont->m_oBrush.IsEqual(m_pBrush))
{
// . ,
// настройки одинаковые. “еперь смотрим, на расположение
if (fabs(dRight - dTextX) < 0.5)
{
//
// продолжаем слово
pLastCont->m_strText += strText;
pLastCont->m_dWidth = (dTextX + dTextW - pLastCont->m_dX);
......@@ -480,7 +480,7 @@ namespace NSDocxRenderer
}
else if ((dRight < dTextX) && ((dTextX - dRight) < m_oManager.m_dSpaceWidthMM))
{
//
// продолжаем слово с пробелом
pLastCont->m_strText += (_T(" ") + strText);
pLastCont->m_dWidth = (dTextX + dTextW - pLastCont->m_dX);
......@@ -500,8 +500,8 @@ namespace NSDocxRenderer
}
}
// , , (, )
// ...
// либо пробел большой между словами, либо новый текст левее, либо настройки не те (шрифт, кисть)
// либо все вместе... просто добавл¤ем новое слово
CContText* pCont = new CContText();
pCont->m_dX = dTextX;
......@@ -541,7 +541,7 @@ namespace NSDocxRenderer
{
if (m_bIsDeleteTextClipPage)
{
// ,
// удалим все линии, которые выход¤т за границы страницы
size_t nCount = m_arTextLine.GetCount();
for (size_t i = 0; i < nCount; ++i)
{
......@@ -581,7 +581,7 @@ namespace NSDocxRenderer
m_arParagraphs.Add(pParagraph);
}
//
// удалим все линии
m_arTextLine.RemoveAll();
break;
}
......@@ -631,7 +631,7 @@ namespace NSDocxRenderer
m_arParagraphs.Add(pParagraph);
}
//
// удалим все линии
m_arTextLine.RemoveAll();
break;
}
......
// AVSDocxRenderer.cpp : Implementation of CAVSDocxRenderer
// AVSDocxRenderer.cpp : Implementation of CAVSDocxRenderer
#include "stdafx.h"
#include "ASCDocxRenderer.h"
......
// AVSDocxRenderer.h : Declaration of the CAVSDocxRenderer
// AVSDocxRenderer.h : Declaration of the CAVSDocxRenderer
#pragma once
#include "stdafx.h"
......@@ -58,10 +58,10 @@ public:
public:
// IASCRenderer Methods
// -----------------------------------------------------------------------------
// тип рендерера-----------------------------------------------------------------------------
STDMETHOD(get_Type)(LONG* lType);
//-------- --------------------------------------------------
//-------- Функции для работы со страницей --------------------------------------------------
STDMETHOD(NewPage)();
STDMETHOD(get_Height)(double* dHeight);
STDMETHOD(put_Height)(double dHeight);
......@@ -69,7 +69,7 @@ public:
STDMETHOD(put_Width)(double dWidth);
STDMETHOD(get_DpiX)(double* dDpiX);
STDMETHOD(get_DpiY)(double* dDpiY);
//-------- ----------------------------------------------
//-------- Функции для задания настроек текста ----------------------------------------------
STDMETHOD(SetPen)(BSTR bsXML);
STDMETHOD(get_PenColor)(LONG* lColor);
......@@ -157,13 +157,13 @@ public:
STDMETHOD(get_EdgeDist)(double* val);
STDMETHOD(put_EdgeDist)(double val);
//-------- --------------------------------------------------------
//-------- Функции для вывода текста --------------------------------------------------------
STDMETHOD(CommandDrawText)(BSTR bsText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset);
STDMETHOD(CommandDrawTextEx)(BSTR bsUnicodeText, BSTR bsGidText, BSTR bsSourceCodeText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset, DWORD lFlags);
//-------- ---------------------------------------------------------------
//-------- Маркеры для команд ---------------------------------------------------------------
STDMETHOD(BeginCommand)(DWORD lType);
STDMETHOD(EndCommand)(DWORD lType);
//-------- Graphics Path -----------------------------------------------
//-------- Функции для работы с Graphics Path -----------------------------------------------
STDMETHOD(PathCommandMoveTo)(double fX, double fY);
STDMETHOD(PathCommandLineTo)(double fX, double fY);
STDMETHOD(PathCommandLinesTo)(SAFEARRAY* pPoints);
......@@ -181,7 +181,7 @@ public:
STDMETHOD(GetCommandParams)(double* dAngle, double* dLeft, double* dTop, double* dWidth, double* dHeight, DWORD* lFlags);
STDMETHOD(SetCommandParams)(double dAngle, double dLeft, double dTop, double dWidth, double dHeight, DWORD lFlags);
//-------- --------------------------------------------------
//-------- Функции для вывода изображений --------------------------------------------------
STDMETHOD(DrawImage)(IUnknown* pInterface, double fX, double fY, double fWidth, double fHeight);
STDMETHOD(DrawImageFromFile)(BSTR bstrVal, double fX, double fY, double fWidth, double fHeight);
//------------------------------------------------------------------------------------------
......
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