mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-07-11 14:00:32 +08:00
1397 lines
34 KiB
C++
1397 lines
34 KiB
C++
// EBOOKWriter.cpp : Implementation of CAVSDocxRenderer
|
|
|
|
#include "stdafx.h"
|
|
#include "EBOOKWriter.h"
|
|
|
|
|
|
// CEBOOKWriter
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::get_Type(LONG* lType)
|
|
{
|
|
if (NULL != lType)
|
|
*lType = c_nEbookWriter;
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::NewPage()
|
|
{
|
|
m_dWidth = -1;
|
|
m_dHeight = -1;
|
|
|
|
m_bPageAdded = false;
|
|
m_lCommandFlags = 0;
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::get_Height(double* dHeight)
|
|
{
|
|
*dHeight = m_dHeight;
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::put_Height(double dHeight)
|
|
{
|
|
m_dHeight = dHeight;
|
|
|
|
if (0 < m_dWidth && !m_bPageAdded)
|
|
{
|
|
m_oWriter.BeginPage(m_dWidth, m_dHeight);
|
|
m_bPageAdded = true;
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::get_Width(double* dWidth)
|
|
{
|
|
*dWidth = m_dWidth;
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::put_Width(double dWidth)
|
|
{
|
|
m_dWidth = dWidth;
|
|
|
|
if (0 < m_dHeight && !m_bPageAdded)
|
|
{
|
|
m_oWriter.BeginPage(m_dWidth, m_dHeight);
|
|
m_bPageAdded = true;
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::get_DpiX(double* dDpiX)
|
|
{
|
|
*dDpiX = m_dDpiX;
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::get_DpiY(double* dDpiY)
|
|
{
|
|
*dDpiY = m_dDpiY;
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
// pen --------------------------------------------------------------------------------------
|
|
STDMETHODIMP CAVSEBOOKWriter::SetPen(BSTR bsXML)
|
|
{
|
|
m_oPen.FromXmlString((CString)bsXML);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->SetPen(bsXML);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenColor(LONG* lColor)
|
|
{
|
|
*lColor = m_oPen.Color;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenColor(LONG lColor)
|
|
{
|
|
m_oPen.Color = lColor;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenColor(lColor);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenAlpha(LONG* lAlpha)
|
|
{
|
|
*lAlpha = m_oPen.Alpha;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenAlpha(LONG lAlpha)
|
|
{
|
|
m_oPen.Alpha = lAlpha;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenAlpha(lAlpha);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenSize(double* dSize)
|
|
{
|
|
*dSize = m_oPen.Size;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenSize(double dSize)
|
|
{
|
|
m_oPen.Size = dSize;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenSize(dSize);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenDashStyle(BYTE* val)
|
|
{
|
|
*val = m_oPen.DashStyle;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenDashStyle(BYTE val)
|
|
{
|
|
m_oPen.DashStyle = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenDashStyle(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenLineStartCap(BYTE* val)
|
|
{
|
|
*val = m_oPen.LineStartCap;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenLineStartCap(BYTE val)
|
|
{
|
|
m_oPen.LineStartCap = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenLineStartCap(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenLineEndCap(BYTE* val)
|
|
{
|
|
*val = m_oPen.LineEndCap;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenLineEndCap(BYTE val)
|
|
{
|
|
m_oPen.LineEndCap = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenLineEndCap(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenLineJoin(BYTE* val)
|
|
{
|
|
*val = m_oPen.LineJoin;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenLineJoin(BYTE val)
|
|
{
|
|
m_oPen.LineJoin = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenLineJoin(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenDashOffset(double* val)
|
|
{
|
|
*val = m_oPen.DashOffset;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenDashOffset(double val)
|
|
{
|
|
m_oPen.DashOffset = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenDashOffset(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenAlign(LONG* val)
|
|
{
|
|
*val = m_oPen.Align;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenAlign(LONG val)
|
|
{
|
|
m_oPen.Align = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenAlign(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_PenMiterLimit(double* val)
|
|
{
|
|
*val = m_oPen.MiterLimit;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_PenMiterLimit(double val)
|
|
{
|
|
m_oPen.MiterLimit = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_PenMiterLimit(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PenDashPattern(SAFEARRAY* pPattern)
|
|
{
|
|
if (NULL != pPattern)
|
|
{
|
|
m_oPen.SetDashPattern((double*)pPattern->pvData, pPattern->rgsabound[0].cElements);
|
|
}
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PenDashPattern(pPattern);
|
|
|
|
return S_OK;
|
|
}
|
|
// brush ------------------------------------------------------------------------------------
|
|
STDMETHODIMP CAVSEBOOKWriter::SetBrush(BSTR bsXML)
|
|
{
|
|
m_oBrush.FromXmlString((CString)bsXML);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->SetBrush(bsXML);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_BrushType(LONG* lType)
|
|
{
|
|
*lType = m_oBrush.Type;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_BrushType(LONG lType)
|
|
{
|
|
m_oBrush.Type = lType;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_BrushType(lType);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_BrushColor1(LONG* lColor)
|
|
{
|
|
*lColor = m_oBrush.Color1;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_BrushColor1(LONG lColor)
|
|
{
|
|
m_oBrush.Color1 = lColor;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_BrushColor1(lColor);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_BrushAlpha1(LONG* lAlpha)
|
|
{
|
|
*lAlpha = m_oBrush.Alpha1;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_BrushAlpha1(LONG lAlpha)
|
|
{
|
|
m_oBrush.Alpha1 = lAlpha;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_BrushAlpha1(lAlpha);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_BrushColor2(LONG* lColor)
|
|
{
|
|
*lColor = m_oBrush.Color2;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_BrushColor2(LONG lColor)
|
|
{
|
|
m_oBrush.Color2 = lColor;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_BrushColor2(lColor);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_BrushAlpha2(LONG* lAlpha)
|
|
{
|
|
*lAlpha = m_oBrush.Alpha2;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_BrushAlpha2(LONG lAlpha)
|
|
{
|
|
m_oBrush.Alpha2 = lAlpha;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_BrushAlpha2(lAlpha);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_BrushTexturePath(BSTR* bsPath)
|
|
{
|
|
*bsPath = m_oBrush.TexturePath.AllocSysString();
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_BrushTexturePath(BSTR bsPath)
|
|
{
|
|
m_oBrush.TexturePath = (CString)bsPath;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_BrushTexturePath(bsPath);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_BrushTextureMode(LONG* lMode)
|
|
{
|
|
*lMode = m_oBrush.TextureMode;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_BrushTextureMode(LONG lMode)
|
|
{
|
|
m_oBrush.TextureMode = lMode;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_BrushTextureMode(lMode);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_BrushTextureAlpha(LONG* lTxAlpha)
|
|
{
|
|
*lTxAlpha = m_oBrush.TextureAlpha;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_BrushTextureAlpha(LONG lTxAlpha)
|
|
{
|
|
m_oBrush.TextureAlpha = lTxAlpha;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_BrushTextureAlpha(lTxAlpha);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_BrushLinearAngle(double* dAngle)
|
|
{
|
|
*dAngle = m_oBrush.LinearAngle;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_BrushLinearAngle(double dAngle)
|
|
{
|
|
m_oBrush.LinearAngle = dAngle;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_BrushLinearAngle(dAngle);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::BrushRect(BOOL val, double left, double top, double width, double height)
|
|
{
|
|
m_oBrush.Rectable = val;
|
|
m_oBrush.Rect.X = (float)left;
|
|
m_oBrush.Rect.Y = (float)top;
|
|
m_oBrush.Rect.Width = (float)width;
|
|
m_oBrush.Rect.Height = (float)height;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->BrushRect(val, left, top, width, height);
|
|
|
|
return S_OK;
|
|
}
|
|
// font -------------------------------------------------------------------------------------
|
|
STDMETHODIMP CAVSEBOOKWriter::SetFont(BSTR bsXML)
|
|
{
|
|
m_oFont.FromXmlString((CString)bsXML);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->SetFont(bsXML);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_FontName(BSTR* bsName)
|
|
{
|
|
*bsName = m_oFont.Name.AllocSysString();
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_FontName(BSTR bsName)
|
|
{
|
|
m_oFont.Name = (CString)bsName;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_FontName(bsName);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_FontPath(BSTR* bsName)
|
|
{
|
|
*bsName = m_oFont.Path.AllocSysString();
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_FontPath(BSTR bsName)
|
|
{
|
|
m_oFont.Path = bsName;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_FontPath(bsName);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_FontSize(double* dSize)
|
|
{
|
|
*dSize = m_oFont.Size;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_FontSize(double dSize)
|
|
{
|
|
m_oFont.Size = dSize;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_FontSize(dSize);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_FontStyle(LONG* lStyle)
|
|
{
|
|
*lStyle = m_oFont.GetStyle();
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_FontStyle(LONG lStyle)
|
|
{
|
|
m_oFont.SetStyle(lStyle);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_FontStyle(lStyle);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_FontStringGID(BOOL* bGID)
|
|
{
|
|
*bGID = m_oFont.StringGID;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_FontStringGID(BOOL bGID)
|
|
{
|
|
m_oFont.StringGID = bGID;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_FontStringGID(bGID);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_FontCharSpace(double* dSpace)
|
|
{
|
|
*dSpace = m_oFont.CharSpace;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_FontCharSpace(double dSpace)
|
|
{
|
|
m_oFont.CharSpace = dSpace;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_FontCharSpace(dSpace);
|
|
|
|
return S_OK;
|
|
}
|
|
// shadow -----------------------------------------------------------------------------------
|
|
STDMETHODIMP CAVSEBOOKWriter::SetShadow(BSTR bsXML)
|
|
{
|
|
m_oShadow.FromXmlString((CString)bsXML);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->SetShadow(bsXML);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_ShadowDistanceX(double* val)
|
|
{
|
|
*val = m_oShadow.DistanceX;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_ShadowDistanceX(double val)
|
|
{
|
|
m_oShadow.DistanceX = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_ShadowDistanceX(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_ShadowDistanceY(double* val)
|
|
{
|
|
*val = m_oShadow.DistanceY;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_ShadowDistanceY(double val)
|
|
{
|
|
m_oShadow.DistanceY = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_ShadowDistanceY(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_ShadowBlurSize(double* val)
|
|
{
|
|
*val = m_oShadow.BlurSize;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_ShadowBlurSize(double val)
|
|
{
|
|
m_oShadow.BlurSize = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_ShadowBlurSize(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_ShadowColor(LONG* val)
|
|
{
|
|
*val = m_oShadow.Color;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_ShadowColor(LONG val)
|
|
{
|
|
m_oShadow.Color = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_ShadowColor(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_ShadowAlpha(LONG* val)
|
|
{
|
|
*val = m_oShadow.Alpha;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_ShadowAlpha(LONG val)
|
|
{
|
|
m_oShadow.Alpha = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_ShadowAlpha(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_ShadowVisible(BOOL* val)
|
|
{
|
|
*val = m_oShadow.Visible;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_ShadowVisible(BOOL val)
|
|
{
|
|
m_oShadow.Visible = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_ShadowVisible(val);
|
|
|
|
return S_OK;
|
|
}
|
|
// edge -------------------------------------------------------------------------------------
|
|
STDMETHODIMP CAVSEBOOKWriter::SetEdgeText(BSTR bsXML)
|
|
{
|
|
m_oEdge.FromXmlString((CString)bsXML);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->SetEdgeText(bsXML);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_EdgeVisible(LONG* val)
|
|
{
|
|
*val = m_oEdge.Visible;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_EdgeVisible(LONG val)
|
|
{
|
|
m_oEdge.Visible = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_EdgeVisible(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_EdgeColor(LONG* val)
|
|
{
|
|
*val = m_oEdge.Color;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_EdgeColor(LONG val)
|
|
{
|
|
m_oEdge.Color = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_EdgeColor(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_EdgeAlpha(LONG* val)
|
|
{
|
|
*val = m_oEdge.Alpha;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_EdgeAlpha(LONG val)
|
|
{
|
|
m_oEdge.Alpha = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_EdgeAlpha(val);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_EdgeDist(double* val)
|
|
{
|
|
*val = m_oEdge.Dist;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_EdgeDist(double val)
|
|
{
|
|
m_oEdge.Dist = val;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_EdgeDist(val);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------------------
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandDrawText(BSTR bsText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (c_nHyperlinkType == m_lCurrentCommandType)
|
|
return S_OK;
|
|
|
|
if ((abs(m_dTransformAngle) > 1) || (m_bIsMetafileDrawing == true))
|
|
{
|
|
PathCommandEnd();
|
|
BeginCommand(c_nPathType);
|
|
PathCommandText(bsText, fX, fY, fWidth, fHeight, fBaseLineOffset);
|
|
DrawPath(c_nWindingFillMode);
|
|
EndCommand(c_nPathType);
|
|
PathCommandEnd();
|
|
return S_OK;
|
|
}
|
|
|
|
double x = fX;
|
|
double y = fY;
|
|
m_oTransform.TransformPoint(x, y);
|
|
|
|
double r = fX + fWidth;
|
|
double b = fY + fHeight;
|
|
m_oTransform.TransformPoint(r, b);
|
|
|
|
r -= x;
|
|
b -= y;
|
|
|
|
double dInputBaseOffset = fBaseLineOffset;
|
|
m_oWriter.WriteText(bsText, NULL, x, y, r, b, fBaseLineOffset);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->CommandDrawText(bsText, fX, fY, fWidth, fHeight, dInputBaseOffset);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandDrawTextEx(BSTR bsUnicodeText, BSTR bsGidText, BSTR bsSourceCodeText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset, DWORD lFlags)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if ((abs(m_dTransformAngle) > 1) || (m_bIsMetafileDrawing == true))
|
|
{
|
|
PathCommandEnd();
|
|
BeginCommand(c_nPathType);
|
|
PathCommandTextEx(bsUnicodeText, bsGidText, bsSourceCodeText, fX, fY, fWidth, fHeight, fBaseLineOffset, lFlags);
|
|
DrawPath(c_nWindingFillMode);
|
|
EndCommand(c_nPathType);
|
|
PathCommandEnd();
|
|
return S_OK;
|
|
}
|
|
|
|
double x = fX;
|
|
double y = fY;
|
|
m_oTransform.TransformPoint(x, y);
|
|
|
|
double r = fX + fWidth;
|
|
double b = fY + fHeight;
|
|
m_oTransform.TransformPoint(r, b);
|
|
|
|
r -= x;
|
|
b -= y;
|
|
|
|
double dInputBaseOffset = fBaseLineOffset;
|
|
m_oWriter.WriteText(bsUnicodeText, bsGidText, x, y, r, b, fBaseLineOffset);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->CommandDrawTextEx(bsUnicodeText, bsGidText, bsSourceCodeText, fX, fY, fWidth, fHeight, dInputBaseOffset, lFlags);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::BeginCommand(DWORD lType)
|
|
{
|
|
m_lCurrentCommandType = lType;
|
|
SendBeginCommandsToFlags();
|
|
|
|
if ((c_nShapeGroup == m_lCurrentCommandType) || (c_nShape == m_lCurrentCommandType))
|
|
m_oWriter.BeginShape();
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->BeginCommand(lType);
|
|
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (c_nImageType == lType)
|
|
{
|
|
m_bIsMetafileDrawing = true;
|
|
}
|
|
|
|
if (c_nBlock == lType)
|
|
{
|
|
if (0 == m_lSrcType)
|
|
{
|
|
NSEBook::CLogicPageDOCX* page = dynamic_cast<NSEBook::CLogicPageDOCX*>(m_oWriter.m_pCurrentPage);
|
|
if (NULL != page)
|
|
page->BeginParagraph();
|
|
}
|
|
}
|
|
else if (c_nLine == lType)
|
|
{
|
|
if (0 == m_lSrcType)
|
|
{
|
|
NSEBook::CLogicPageDOCX* page = dynamic_cast<NSEBook::CLogicPageDOCX*>(m_oWriter.m_pCurrentPage);
|
|
if (NULL != page)
|
|
page->BeginLine();
|
|
}
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::EndCommand(DWORD lType)
|
|
{
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->EndCommand(lType);
|
|
|
|
if ((c_nShapeGroup == lType) || (c_nShape == lType))
|
|
m_oWriter.EndShape();
|
|
|
|
if (c_nPageType == lType)
|
|
{
|
|
m_oWriter.EndPage();
|
|
}
|
|
|
|
SendEndCommandsToFlags(lType);
|
|
m_lCurrentCommandType = -1;
|
|
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (c_nImageType == lType)
|
|
{
|
|
m_bIsMetafileDrawing = false;
|
|
}
|
|
|
|
if (c_nBlock == lType)
|
|
{
|
|
if (0 == m_lSrcType)
|
|
{
|
|
NSEBook::CLogicPageDOCX* page = dynamic_cast<NSEBook::CLogicPageDOCX*>(m_oWriter.m_pCurrentPage);
|
|
if (NULL != page)
|
|
page->EndParagraph();
|
|
}
|
|
}
|
|
else if (c_nLine == lType)
|
|
{
|
|
if (0 == m_lSrcType)
|
|
{
|
|
NSEBook::CLogicPageDOCX* page = dynamic_cast<NSEBook::CLogicPageDOCX*>(m_oWriter.m_pCurrentPage);
|
|
if (NULL != page)
|
|
page->EndLine();
|
|
}
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
// path commands ----------------------------------------------------------------------------
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandMoveTo(double fX, double fY)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (c_nSimpleGraphicType == m_lCurrentCommandType)
|
|
{
|
|
MoveTo(fX, fY);
|
|
}
|
|
else
|
|
{
|
|
double x = fX;
|
|
double y = fY;
|
|
m_oFullTransform.TransformPoint(x, y);
|
|
m_pSimpleGraphicsConverter->PathCommandMoveTo(x, y);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandMoveTo(fX, fY);
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandLineTo(double fX, double fY)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (c_nSimpleGraphicType == m_lCurrentCommandType)
|
|
{
|
|
LineTo(fX, fY);
|
|
}
|
|
else
|
|
{
|
|
double x = fX;
|
|
double y = fY;
|
|
m_oFullTransform.TransformPoint(x, y);
|
|
m_pSimpleGraphicsConverter->PathCommandLineTo(x, y);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandLineTo(fX, fY);
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandLinesTo(SAFEARRAY* pPoints)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
m_pSimpleGraphicsConverter->PathCommandLinesTo(pPoints);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandLinesTo(pPoints);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandCurveTo(double fX1, double fY1, double fX2, double fY2, double fX3, double fY3)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (c_nSimpleGraphicType == m_lCurrentCommandType)
|
|
{
|
|
CurveTo(fX1, fY1, fX2, fY2, fX3, fY3);
|
|
}
|
|
else
|
|
{
|
|
double x1 = fX1;
|
|
double y1 = fY1;
|
|
m_oFullTransform.TransformPoint(x1, y1);
|
|
|
|
double x2 = fX1;
|
|
double y2 = fY2;
|
|
m_oFullTransform.TransformPoint(x2, y2);
|
|
|
|
double x3 = fX3;
|
|
double y3 = fX3;
|
|
m_oFullTransform.TransformPoint(x3, y3);
|
|
|
|
m_pSimpleGraphicsConverter->PathCommandCurveTo(x1, y1, x2, y2, x3, y3);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandCurveTo(fX1, fY1, fX2, fY2, fX3, fY3);
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandCurvesTo(SAFEARRAY* pPoints)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
m_pSimpleGraphicsConverter->PathCommandCurvesTo(pPoints);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandCurvesTo(pPoints);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandArcTo(double fX, double fY, double fWidth, double fHeight, double fStartAngle, double fSweepAngle)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
m_pSimpleGraphicsConverter->PathCommandArcTo(fX, fY, fWidth, fHeight, fStartAngle, fSweepAngle);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandArcTo(fX, fY, fWidth, fHeight, fStartAngle, fSweepAngle);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandClose()
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (c_nSimpleGraphicType == m_lCurrentCommandType)
|
|
{
|
|
Close();
|
|
}
|
|
else
|
|
{
|
|
m_pSimpleGraphicsConverter->PathCommandClose();
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandClose();
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandEnd()
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (c_nSimpleGraphicType == m_lCurrentCommandType)
|
|
{
|
|
PathEnd();
|
|
}
|
|
else
|
|
{
|
|
m_pSimpleGraphicsConverter->PathCommandEnd();
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandEnd();
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandStart()
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (c_nSimpleGraphicType == m_lCurrentCommandType)
|
|
{
|
|
PathStart();
|
|
}
|
|
else
|
|
{
|
|
m_pSimpleGraphicsConverter->PathCommandStart();
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandStart();
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandGetCurrentPoint(double* fX, double* fY)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
m_pSimpleGraphicsConverter->PathCommandGetCurrentPoint(fX, fY);
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandText(BSTR bsText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
_SetFont();
|
|
m_pSimpleGraphicsConverter->PathCommandText(bsText, m_pFontManager, fX, fY, fWidth, fHeight, fBaseLineOffset);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandText(bsText, fX, fY, fWidth, fHeight, fBaseLineOffset);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::PathCommandTextEx(BSTR bsUnicodeText, BSTR bsGidText, BSTR bsSourceCodeText, double fX, double fY, double fWidth, double fHeight, double fBaseLineOffset, DWORD lFlags)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->PathCommandTextEx(bsUnicodeText, bsGidText, bsSourceCodeText, fX, fY, fWidth, fHeight, fBaseLineOffset, lFlags);
|
|
|
|
if (NULL != bsGidText)
|
|
{
|
|
m_oFont.StringGID = TRUE;
|
|
return PathCommandText(bsGidText, fX, fY, fWidth, fHeight, fBaseLineOffset);
|
|
}
|
|
|
|
m_oFont.StringGID = FALSE;
|
|
return PathCommandText(bsUnicodeText, fX, fY, fWidth, fHeight, fBaseLineOffset);
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::DrawPath(long nType)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->DrawPath(nType);
|
|
|
|
m_oWriter.DrawPath(nType);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
// transform commands -----------------------------------------------------------------------
|
|
STDMETHODIMP CAVSEBOOKWriter::GetCommandParams(double* dAngle, double* dLeft, double* dTop, double* dWidth, double* dHeight, DWORD* lFlags)
|
|
{
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::SetCommandParams(double dAngle, double dLeft, double dTop, double dWidth, double dHeight, DWORD lFlags)
|
|
{
|
|
ApplyTransform2(dAngle, dLeft, dTop, dWidth, dHeight, lFlags);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->SetCommandParams(dAngle, dLeft, dTop, dWidth, dHeight, lFlags);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::SetTransform(double dA, double dB, double dC, double dD, double dE, double dF)
|
|
{
|
|
ApplyTransform(dA, dB, dC, dD, dE, dF);
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->SetTransform(dA, dB, dC, dD, dE, dF);
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::GetTransform(double *pdA, double *pdB, double *pdC, double *pdD, double *pdE, double *pdF)
|
|
{
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::ResetTransform(void)
|
|
{
|
|
m_oTransform.Reset();
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->ResetTransform();
|
|
|
|
m_dTransformAngle = 0;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::get_ClipMode(LONG* plMode)
|
|
{
|
|
*plMode = m_lClipMode;
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::put_ClipMode(LONG lMode)
|
|
{
|
|
m_lClipMode = lMode;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->put_ClipMode(lMode);
|
|
|
|
return S_OK;
|
|
}
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::DrawImage(IUnknown* pInterface, double fX, double fY, double fWidth, double fHeight)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->DrawImage(pInterface, fX, fY, fWidth, fHeight);
|
|
|
|
m_oWriter.WriteImage(pInterface, fX, fY, fWidth, fHeight);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::DrawImageFromFile(BSTR bstrVal, double fX, double fY, double fWidth, double fHeight)
|
|
{
|
|
if (!CheckNeedCommands())
|
|
return S_OK;
|
|
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->DrawImageFromFile(bstrVal, fX, fY, fWidth, fHeight);
|
|
|
|
m_oWriter.WriteImage((CString)bstrVal, fX, fY, fWidth, fHeight);
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::SetAdditionalParam(BSTR ParamName, VARIANT ParamValue)
|
|
{
|
|
if (NULL != m_pRenderers)
|
|
m_pRenderers->SetAdditionalParam(ParamName, ParamValue);
|
|
|
|
CString sParamName = ParamName;
|
|
if (_T("EffectPainter") == sParamName && VT_UNKNOWN == ParamValue.vt)
|
|
{
|
|
RELEASEINTERFACE(m_oWriter.m_pPainter);
|
|
|
|
if (NULL != ParamValue.punkVal)
|
|
{
|
|
ParamValue.punkVal->QueryInterface(AVSGraphics::IID_IAVSEffectPainter, (void**)&m_oWriter.m_pPainter);
|
|
}
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::GetAdditionalParam(BSTR ParamName, VARIANT* ParamValue)
|
|
{
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::Initialize(BSTR bsXMLOptions)
|
|
{
|
|
BaseInitialize(bsXMLOptions);
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::SetMetadata(BSTR bsXMLOptions)
|
|
{
|
|
m_oWriter.m_oFormat.m_oMeta.Clear();
|
|
|
|
XmlUtils::CXmlNode oNodeMeta;
|
|
if (oNodeMeta.FromXmlString((CString)bsXMLOptions))
|
|
{
|
|
m_oWriter.m_oFormat.m_oMeta.m_strAuthor = oNodeMeta.ReadValueString(_T("author"));
|
|
m_oWriter.m_oFormat.m_oMeta.m_strName = oNodeMeta.ReadValueString(_T("name"));
|
|
m_oWriter.m_oFormat.m_oMeta.m_strPublisher = oNodeMeta.ReadValueString(_T("publisher"));
|
|
|
|
m_oWriter.m_bIsSrcCoverExist = (1 == oNodeMeta.ReadValueInt(_T("coverpage")));
|
|
|
|
XmlUtils::CXmlNode oNodeAnno;
|
|
if (oNodeMeta.GetNode(_T("annotation"), oNodeAnno))
|
|
{
|
|
XmlUtils::CXmlNodes oNodes;
|
|
if (oNodeAnno.GetChilds(oNodes))
|
|
{
|
|
int nCount = oNodes.GetCount();
|
|
|
|
for (int i = 0; i < nCount; ++i)
|
|
{
|
|
XmlUtils::CXmlNode oNodeS;
|
|
oNodes.GetAt(i, oNodeS);
|
|
|
|
CString sName = oNodeS.GetName();
|
|
|
|
if (_T("#text") == sName)
|
|
{
|
|
NSEBook::CEbookParagraph* pParagraph = new NSEBook::CEbookParagraph();
|
|
pParagraph->m_arLines.AddTail();
|
|
NSEBook::CEbookParagraph::CSpan oSpan;
|
|
oSpan.m_oText += oNodeS.GetXml();
|
|
pParagraph->m_arLines.GetTail().m_listSpans.AddTail(oSpan);
|
|
m_oWriter.m_oFormat.m_oMeta.m_listAnnotation.AddTail(pParagraph);
|
|
}
|
|
else if (_T("p") == sName)
|
|
{
|
|
NSEBook::CEbookParagraph* pParagraph = new NSEBook::CEbookParagraph();
|
|
pParagraph->m_arLines.AddTail();
|
|
NSEBook::CEbookParagraph::CSpan oSpan;
|
|
oSpan.m_oText += oNodeS.GetText();
|
|
pParagraph->m_arLines.GetTail().m_listSpans.AddTail(oSpan);
|
|
m_oWriter.m_oFormat.m_oMeta.m_listAnnotation.AddTail(pParagraph);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
STDMETHODIMP CAVSEBOOKWriter::CreateOfficeFile(BSTR bsFilePath, LONG lFileType)
|
|
{
|
|
m_lDstType = lFileType;
|
|
|
|
m_oWriter.m_oFormat.m_oImageManager.m_lDstFormat = m_lDstType;
|
|
m_oWriter.m_oFormat.m_oTempManager.m_strTempDirectory = m_strTempDirectory;
|
|
m_pRenderers = m_oWriter.CreateDocument(m_lSrcType, m_lDstType);
|
|
m_oWriter.SetParametres(&m_oPen, &m_oBrush, &m_oFont, &m_oShadow, &m_oEdge, m_pSimpleGraphicsConverter, &m_oTransform);
|
|
|
|
m_strDstFilePath = (CString)bsFilePath;
|
|
|
|
// ----------------cover-------------------------
|
|
if (!m_oWriter.m_bIsSrcCoverExist && m_oWriter.m_bIsSaveCover)
|
|
{
|
|
SaveCover();
|
|
}
|
|
// ----------------------------------------------
|
|
|
|
m_oWriter.InitWatermark();
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::CloseFile()
|
|
{
|
|
m_oWriter.EndFile();
|
|
if (false)
|
|
m_oWriter.m_oFormat.SaveToFile(m_oWriter.m_oFormat.m_oTempManager.m_strTempDirectory + _T("\\format.xml"));
|
|
|
|
if (_T("") == m_oWriter.m_oFormat.m_oMeta.m_strName)
|
|
{
|
|
CString strName = m_strDstFilePath;
|
|
int nEnd = strName.ReverseFind(TCHAR('.'));
|
|
int nStr1 = strName.ReverseFind(TCHAR('\\'));
|
|
int nStr2 = strName.ReverseFind(TCHAR('/'));
|
|
|
|
int nStr = max(nStr1, nStr2);
|
|
|
|
if ((-1 != nStr) && (-1 != nEnd) && (nStr < nEnd))
|
|
{
|
|
m_oWriter.m_oFormat.m_oMeta.m_strName = strName.Mid(nStr + 1, nEnd - nStr - 1);
|
|
}
|
|
}
|
|
|
|
switch (m_lDstType)
|
|
{
|
|
case 0:
|
|
{
|
|
NSEBook::CWriter_Epub epub;
|
|
epub.CreateDocument(&m_oWriter);
|
|
epub.CloseFile(m_strDstFilePath, &m_oWriter);
|
|
break;
|
|
}
|
|
case 1:
|
|
{
|
|
NSEBook::CWriter_Fb2 fb2;
|
|
fb2.CreateDocument(&m_oWriter);
|
|
fb2.CloseFile(m_strDstFilePath, &m_oWriter);
|
|
break;
|
|
}
|
|
case 2:
|
|
{
|
|
NSEBook::CWriter_Mobi mobi;
|
|
mobi.CreateDocument(&m_oWriter);
|
|
mobi.CloseFile(m_strDstFilePath, &m_oWriter);
|
|
break;
|
|
}
|
|
case 3:
|
|
{
|
|
NSEBook::CWriter_Docx docx;
|
|
docx.CreateDocument(&m_oWriter);
|
|
docx.CloseFile(m_strDstFilePath, &m_oWriter);
|
|
break;
|
|
}
|
|
default:
|
|
break;
|
|
}
|
|
|
|
m_oWriter.CloseFile();
|
|
|
|
return S_OK;
|
|
}
|
|
|
|
/*========================================================================================================*/
|
|
|
|
// AVSRenderer2
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandLong(LONG lCommand)
|
|
{
|
|
if (lCommand == c_nPageBreak)
|
|
{
|
|
if (NULL != m_oWriter.m_pCurrentPage)
|
|
{
|
|
m_oWriter.m_pCurrentPage->WritePagePreak();
|
|
}
|
|
}
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandDouble(double dCommand)
|
|
{
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandString(BSTR bsCommand)
|
|
{
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandVariant(VARIANT vCommand)
|
|
{
|
|
return S_OK;
|
|
}
|
|
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandLong2(LONG lType, LONG lCommand)
|
|
{
|
|
if (c_nBlockHeadingLevel == lType)
|
|
{
|
|
NSEBook::CLogicPageDOCX* page = dynamic_cast<NSEBook::CLogicPageDOCX*>(m_oWriter.m_pCurrentPage);
|
|
if (NULL != page)
|
|
page->SetParagraphStyle(lCommand);
|
|
}
|
|
else if (c_nBlockNumberingLevel == lType)
|
|
{
|
|
NSEBook::CLogicPageDOCX* page = dynamic_cast<NSEBook::CLogicPageDOCX*>(m_oWriter.m_pCurrentPage);
|
|
if (NULL != page)
|
|
page->SetParagraphNumLevel(lCommand);
|
|
}
|
|
else if (c_nBaselineShift == lType)
|
|
{
|
|
NSEBook::CLogicPageDOCX* page = dynamic_cast<NSEBook::CLogicPageDOCX*>(m_oWriter.m_pCurrentPage);
|
|
if (NULL != page)
|
|
page->SetBaselineOffset((double)lCommand);
|
|
}
|
|
else if (c_nBlockHorzAlign == lType)
|
|
{
|
|
NSEBook::CLogicPageDOCX* page = dynamic_cast<NSEBook::CLogicPageDOCX*>(m_oWriter.m_pCurrentPage);
|
|
if (NULL != page)
|
|
page->SetParTextAlign(lCommand);
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandDouble2(LONG lType, double dCommand)
|
|
{
|
|
if (c_nTableTop == lType)
|
|
{
|
|
NSEBook::CLogicPageDOCX* page = dynamic_cast<NSEBook::CLogicPageDOCX*>(m_oWriter.m_pCurrentPage);
|
|
if (NULL != page)
|
|
page->WriteTableTop(dCommand);
|
|
}
|
|
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandString2(LONG lType, BSTR bsCommand)
|
|
{
|
|
if (c_nTableXml == lType)
|
|
{
|
|
NSEBook::CLogicTable* pTable = new NSEBook::CLogicTable();
|
|
pTable->m_bIsEmbeddedFonts = m_oWriter.m_bIsEmbeddedFonts;
|
|
pTable->m_lDstFormat = m_lDstType;
|
|
pTable->m_pFormat = &m_oWriter.m_oFormat;
|
|
pTable->m_pFontManager = &m_oWriter.m_pCurrentPage->m_oFontManager;
|
|
pTable->m_pFontsDst = &m_oWriter.m_pCurrentPage->m_oFontsGen;
|
|
|
|
pTable->LoadFromXml((CString)bsCommand);
|
|
m_oWriter.WriteTable(pTable);
|
|
}
|
|
return S_OK;
|
|
}
|
|
STDMETHODIMP CAVSEBOOKWriter::CommandVariant2(LONG lType, VARIANT vCommand)
|
|
{
|
|
return S_OK;
|
|
} |