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

в целом закончено

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@62841 954022d7-b5bf-4e40-9824-e11837661b57
parent 52f22ef3
......@@ -4,6 +4,8 @@
#include <string>
#include "../Common/MetaFileTypes.h"
#include "../Common/MetaFileRenderer.h"
#include "../../../../ASCOfficeUtils/ASCOfficeUtilsLib/OfficeUtils.h"
#ifdef _DEBUG
#include <iostream>
......@@ -133,7 +135,7 @@ void CSvmFile::PlayMetaFile()
case META_LINECOLOR_ACTION: Read_META_SETLINECOLOR(); break;
case META_FILLCOLOR_ACTION: Read_META_SETFILLCOLOR(); break;
case META_TEXTFILLCOLOR_ACTION:
case META_TEXTFILLCOLOR_ACTION: Read_META_SETTEXTFILLCOLOR(); break;
case META_TEXTCOLOR_ACTION: Read_META_SETTEXTCOLOR(); break;
case META_GRADIENT_ACTION: Read_META_GRADIENT(); break;
case META_GRADIENTEX_ACTION: Read_META_GRADIENTEX(); break;
......@@ -207,7 +209,7 @@ void CSvmFile::PlayMetaFile()
name = L"(out of bounds)";
std::wcout << name << L"\t(" << actionType << L") " << L"\tversion = " << m_currentActionVersion << L"\t; totalSize = " << m_unRecordSize << L"\n";
} */
}*/
#endif
m_currentActionType = actionType;
......@@ -262,7 +264,6 @@ void CSvmFile::Read_SVM_HEADER()
{
m_oStream >> m_oHeader;
m_oBoundingBox = m_oHeader.boundRect;
m_pDC->SetWindowExt ( m_oHeader.boundRect.nRight - m_oHeader.boundRect.nLeft,
m_oHeader.boundRect.nBottom - m_oHeader.boundRect.nTop);
......@@ -272,6 +273,7 @@ void CSvmFile::Read_SVM_HEADER()
m_pDC->SetMapMode(m_oHeader.mapMode, true);
m_oBoundingBox = m_oHeader.boundRect;
m_oBoundingBox.nRight *= m_pDC->m_dPixelWidthPrefered;
m_oBoundingBox.nBottom *= m_pDC->m_dPixelHeightPrefered;
......@@ -326,7 +328,7 @@ void CSvmFile::Read_META_POLYLINE()
LineTo(polygon.points[i].x, polygon.points[i].y);
}
ClosePath();
DrawPath(true, true);//false);
DrawPath(true, false);
}
void CSvmFile::Read_META_POLYGON()
......@@ -410,27 +412,27 @@ void CSvmFile::Read_META_POLYPOLYGON()
}
ClosePath();
}
for (unsigned short ushPolygonIndex = 0; ushPolygonIndex < complexPolygons.size(); ushPolygonIndex++)
{
unsigned short ushPointsCount = complexPolygons[ushPolygonIndex].points.size();
//for (unsigned short ushPolygonIndex = 0; ushPolygonIndex < complexPolygons.size(); ushPolygonIndex++)
//{
// unsigned short ushPointsCount = complexPolygons[ushPolygonIndex].points.size();
if (ushPointsCount <= 0)
continue;
// if (ushPointsCount <= 0)
// continue;
MoveTo(complexPolygons[ushPolygonIndex].points[0].x, complexPolygons[ushPolygonIndex].points[0].y);
for (int i = 1; i < ushPointsCount; i++)
{
LineTo(complexPolygons[ushPolygonIndex].points[i].x, complexPolygons[ushPolygonIndex].points[i].y);
}
ClosePath();
}
// MoveTo(complexPolygons[ushPolygonIndex].points[0].x, complexPolygons[ushPolygonIndex].points[0].y);
// for (int i = 1; i < ushPointsCount; i++)
// {
// LineTo(complexPolygons[ushPolygonIndex].points[i].x, complexPolygons[ushPolygonIndex].points[i].y);
// }
// ClosePath();
//}
DrawPath(true, true);
}
}
void CSvmFile::Read_META_SETMAPMODE()
{
MapMode mapMode;
TSvmMapMode mapMode;
m_oStream >> mapMode;
m_pDC->SetMapMode(mapMode);
......@@ -484,11 +486,12 @@ void CSvmFile::Read_META_ARRAYTEXT()
m_oStream >> nArrayLen;
int *mpDXAry = NULL;
if( nArrayLen > 0 )
{
// #i9762#, #106172# Ensure that DX array is at least mnLen entries long
const unsigned int nIntAryLen = (std::max)(nArrayLen, (unsigned int)nLen) ;
int *mpDXAry = new int[ nIntAryLen ];
mpDXAry = new int[ nIntAryLen ];
int i=0;
for( i = 0; i < nArrayLen; i++ )
......@@ -512,7 +515,10 @@ void CSvmFile::Read_META_ARRAYTEXT()
tempBuffer += (wchar_t)nTemp;
}
}
DrawText(sText, sText.length(), startPoint.x, startPoint.y);
DrawText(sText, sText.length(), startPoint.x, startPoint.y, mpDXAry);
if (mpDXAry)
delete []mpDXAry;
}
void CSvmFile::Read_META_TEXTRECT()
{
......@@ -554,6 +560,15 @@ void CSvmFile::Read_META_SETTEXTCOLOR()
m_pDC->SetTextColor(oColor);
UpdateOutputDC();
}
void CSvmFile::Read_META_SETTEXTFILLCOLOR()
{
TSvmColor oColor;
m_oStream >> oColor;
m_pDC->SetTextBgColor(oColor);
UpdateOutputDC();
}
void CSvmFile::Read_META_SETFILLCOLOR()
{
if (m_currentActionType == META_GRADIENT_ACTION ||
......@@ -901,12 +916,13 @@ void CSvmFile::Read_META_BMPSCALE()
m_oStream.Skip(bitmap_info.nSizeImage);
delete Header;
}
if (bitmap_info.nHeight > m_oBoundingBox.nRight &&
bitmap_info.nWidth > m_oBoundingBox.nBottom)
if (bitmap_info.nHeight > m_oBoundingBox.nBottom &&
bitmap_info.nWidth > m_oBoundingBox.nRight)
{
m_oBoundingBox.nRight = bitmap_info.nWidth;
m_oBoundingBox.nBottom = bitmap_info.nHeight;
}
TSvmSize size;
TSvmPoint point;
......@@ -914,40 +930,17 @@ void CSvmFile::Read_META_BMPSCALE()
m_oStream >> size.cx;
m_oStream >> size.cy;
MapMode aMapMode_new, aMapMode_old;
TSvmMapMode aMapMode_new, aMapMode_old;
//
aMapMode_old.unit = m_pDC->GetMapMode();
aMapMode_old = m_pDC->m_oMapMode;
aMapMode_new.unit = MAP_RELATIVE;
m_pDC->SetMapMode(aMapMode_new);
if (pBgraBuffer && m_pOutput)
{
double w = m_oHeader.boundRect.nRight-m_oHeader.boundRect.nLeft;
double h = m_oHeader.boundRect.nBottom-m_oHeader.boundRect.nTop;
w /= size.cx;
h /= size.cy;
double dX = point.x, dY = point.y, dX1 = point.x + size.cx, dY1 = point.y + size.cy;
dX *= w;
dX1 *= w;
dY *= h;
dY1 *= h;
//dX /= w;
//dX1 /= w;
//
//dY /= h;
//dY1 /= h;
//dX *= bitmap_info.nWidth;
//dX1 *= bitmap_info.nWidth;
//
//dY *= bitmap_info.nHeight;
//dY1 *= bitmap_info.nHeight;
TranslatePoint(dX, dY, dX, dY);
TranslatePoint(dX + dX1, dY + dY1, dX1, dY1);
......
......@@ -49,22 +49,16 @@ class CSvmFile : virtual public IMetaFileBase
}
TRect* GetDCBounds()
{
//if ( MAP_RELATIVE == m_pDC->GetMapMode())
//{
TSvmWindow* pViewport = m_pDC->GetViewport();
m_oDCRect.nLeft = pViewport->lX;
m_oDCRect.nTop = pViewport->lY;
m_oDCRect.nRight = pViewport->ulW + pViewport->lX;
m_oDCRect.nBottom = pViewport->ulH + pViewport->lY;
//if (m_oHeader.mapMode.isSimple)
if (m_pDC->m_oMapMode.isSimple)
{
m_oDCRect = m_oBoundingBox;
return &m_oDCRect;
//}
//else
}
else
{
return &m_oHeader.boundRect;
}
}
double GetPixelHeight()
{
......@@ -113,8 +107,8 @@ class CSvmFile : virtual public IMetaFileBase
}
int GetTextBgColor()
{
TSvmColor& oColor = m_pDC->GetBgColor();
return oColor.color; //METAFILE_RGBA(oColor.r, oColor.g, oColor.b);
TSvmColor& oColor = m_pDC->GetTextBgColor();
return METAFILE_RGBA(oColor.r, oColor.g, oColor.b);
}
unsigned int GetFillMode()
{
......@@ -187,6 +181,7 @@ class CSvmFile : virtual public IMetaFileBase
void Read_META_TEXTALIGN();
void Read_META_TEXTRECT();
void Read_META_SETMAPMODE();
void Read_META_SETTEXTFILLCOLOR();
void Read_META_SETTEXTCOLOR();
void Read_META_SETFILLCOLOR();
void Read_META_SETLINECOLOR();
......@@ -211,14 +206,16 @@ class CSvmFile : virtual public IMetaFileBase
}
void TranslatePoint(int nX, int nY, double& dX, double &dY)
{
TSvmWindow* pWindow = m_pDC->GetWindow();
TSvmWindow* pViewport = m_pDC->GetViewport();
if (m_pDC->m_oMapMode.isSimple ) return;
//TSvmWindow* pWindow = m_pDC->GetWindow();
//TSvmWindow* pViewport = m_pDC->GetViewport();
dX = (double)(nX) * m_pDC->m_dPixelWidth ;
dY = (double)(nY) * m_pDC->m_dPixelHeight ;
dX = (double)((double)(nX - pWindow->lX) * m_pDC->m_dPixelWidth) + pViewport->lX;
dY = (double)((double)(nY - pWindow->lY) * m_pDC->m_dPixelHeight) + pViewport->lY;
//dX = (double)((double)(nX - pWindow->lX) * m_pDC->m_dPixelWidth) + pViewport->lX;
//dY = (double)((double)(nY - pWindow->lY) * m_pDC->m_dPixelHeight) + pViewport->lY;
// Координаты приходят уже с примененной матрицей. Поэтому сначала мы умножаем на матрицу преобразования,
// вычитаем начальные координаты и умножаем на обратную матрицу преобразования.
TRect* pBounds = GetDCBounds();
double dT = pBounds->nTop;
......@@ -326,7 +323,6 @@ class CSvmFile : virtual public IMetaFileBase
{
m_pOutput->MoveTo(dX, dY);
}
m_pDC->SetCurPos(nX, nY);
}
void LineTo(int nX, int nY)
......@@ -344,7 +340,6 @@ class CSvmFile : virtual public IMetaFileBase
{
m_pOutput->LineTo(dX, dY);
}
m_pDC->SetCurPos(nX, nY);
}
void LineTo(TSvmPoint& oPoint)
......@@ -368,7 +363,6 @@ class CSvmFile : virtual public IMetaFileBase
{
m_pOutput->CurveTo(dX1, dY1, dX2, dY2, dXe, dYe);
}
m_pDC->SetCurPos(nXe, nYe);
}
void CurveTo(TSvmPoint& oPoint1, TSvmPoint& oPoint2, TSvmPoint& oPointE)
......@@ -451,9 +445,16 @@ class CSvmFile : virtual public IMetaFileBase
pdDx[unCharIndex] = (dX1 - dX)/unCharsCount;
}
}
TSvmMapMode aMapMode_new, aMapMode_old;
//
aMapMode_old = m_pDC->m_oMapMode;
aMapMode_new.unit = MAP_RELATIVE;
m_pDC->SetMapMode(aMapMode_new);
m_pOutput->DrawString(wsString, unCharsCount, dX, dY, pdDx);
m_pDC->SetMapMode(aMapMode_old);
if (pdDx)
delete[] pdDx;
}
......@@ -472,6 +473,7 @@ class CSvmFile : virtual public IMetaFileBase
if (m_pOutput)
{
double dX = nX, dY = nY;
TranslatePoint(nX, nY, dX, dY);
......@@ -484,11 +486,16 @@ class CSvmFile : virtual public IMetaFileBase
int nCurX = nX;
double dCurX = dX;
int nCurXFirst = nX;
double dCurXFirst = dX;
for (unsigned int unCharIndex = 0; unCharIndex < unCharsCount; unCharIndex++)
{
int nX1 = nCurX + pnDx[unCharIndex];
int nX1 = nCurXFirst + pnDx[unCharIndex];
double dX1 = nX1, dY1;
TranslatePoint(nX1, nY, dX1, dY1);
pdDx[unCharIndex] = dX1 - dCurX;
nCurX = nX1;
dCurX = dX1;
......@@ -496,51 +503,20 @@ class CSvmFile : virtual public IMetaFileBase
}
}
TSvmMapMode aMapMode_new, aMapMode_old;
//
aMapMode_old = m_pDC->m_oMapMode;
aMapMode_new.unit = MAP_RELATIVE;
m_pDC->SetMapMode(aMapMode_new);
m_pOutput->DrawString(wsString, unCharsCount, dX, dY, pdDx);
m_pDC->SetMapMode(aMapMode_old);
if (pdDx)
delete[] pdDx;
}
}
TRect GetBoundingBox()
{
TRect oBB = m_oHeader.boundRect;
if (abs(oBB.nRight - oBB.nLeft) <= 1)
oBB.nRight = oBB.nLeft + 1024;
if (abs(oBB.nBottom - oBB.nTop) <= 1)
oBB.nBottom = oBB.nTop + 1024;
return oBB;
}
void RegisterPoint(short shX, short shY)
{
shX *= m_pDC->m_dPixelWidth;
shY *= m_pDC->m_dPixelHeight;
if (m_bFirstPoint)
{
m_oBoundingBox.nLeft = shX;
m_oBoundingBox.nRight = shX;
m_oBoundingBox.nTop = shY;
m_oBoundingBox.nBottom = shY;
m_bFirstPoint = false;
}
else
{
if (shX < m_oBoundingBox.nLeft)
m_oBoundingBox.nLeft = shX;
else if (shX > m_oBoundingBox.nRight)
m_oBoundingBox.nRight = shX;
if (shY < m_oBoundingBox.nTop)
m_oBoundingBox.nTop = shY;
else if (shY > m_oBoundingBox.nBottom)
m_oBoundingBox.nBottom = shY;
}
}
};
......
......@@ -57,16 +57,16 @@ Fraction::Fraction(CDataStream &stream)
stream >> denominator;
}
MapMode::MapMode()
TSvmMapMode::TSvmMapMode()
: version()
, unit(0)
, scaleX()
, scaleY()
, isSimple(true)
, isSimple(false)
{
}
MapMode::MapMode(CDataStream &stream)
TSvmMapMode::TSvmMapMode(CDataStream &stream)
{
stream >> *this;
}
......@@ -85,7 +85,7 @@ CDataStream& operator>>(CDataStream &stream, Fraction &fract)
return stream;
}
CDataStream& operator>>(CDataStream &stream, MapMode &mm)
CDataStream& operator>>(CDataStream &stream, TSvmMapMode &mm)
{
stream >> mm.version;
stream >> mm.unit;
......
......@@ -103,10 +103,11 @@ enum ESvmLineStyle
LINE_SOLID = 1,
LINE_DASH = 2
};
struct MapMode
struct TSvmMapMode
{
MapMode();
MapMode(CDataStream &stream);
TSvmMapMode();
TSvmMapMode(CDataStream &stream);
VersionCompat version;
unsigned short unit;
......@@ -123,7 +124,7 @@ struct SvmHeader
VersionCompat versionCompat;
unsigned int compressionMode;
MapMode mapMode;
TSvmMapMode mapMode;
TRect boundRect;
unsigned int actionCount;
};
......@@ -372,7 +373,7 @@ void parseString(CDataStream &stream, std::wstring &string, unsigned short versi
CDataStream& operator>>(CDataStream &stream, VersionCompat &compat);
CDataStream& operator>>(CDataStream &stream, Fraction &fract);
CDataStream& operator>>(CDataStream &stream, MapMode &mm);
CDataStream& operator>>(CDataStream &stream, TSvmMapMode &mm);
CDataStream& operator>>(CDataStream &stream, SvmHeader &header);
CDataStream& operator>>(CDataStream &stream, TSvmSize &s);
CDataStream& operator>>(CDataStream &stream, TSvmPoint &p);
......
......@@ -390,14 +390,14 @@ void CSvmPlayer::InitStockPen(bool bNull, unsigned char r, unsigned char g, u
//----------------------------------------------------------------------------------------
CSvmDC::CSvmDC()
{
m_ulMapMode = MAP_POINT;
m_oMapMode.unit = MAP_POINT;
m_pBrush = NULL;
m_pPen = NULL;
m_pFont = NULL;
m_oTransform.Init();
m_oInverseTransform.Init();
m_oTextColor.Init();
m_oBgColor.Init();
m_oTextBgColor.Init();
m_ulTextAlign = TA_TOP | TA_LEFT | TA_NOUPDATECP;
m_ulBgMode = TRANSPARENT;
m_ulMiterLimit = 0;
......@@ -422,7 +422,7 @@ CSvmDC* CSvmDC::Copy()
if (!pNewDC)
return NULL;
pNewDC->m_ulMapMode = m_ulMapMode;
pNewDC->m_oMapMode = m_oMapMode;
pNewDC->m_pBrush = m_pBrush;
pNewDC->m_pPen = m_pPen;
pNewDC->m_pFont = m_pFont;
......@@ -430,7 +430,7 @@ CSvmDC* CSvmDC::Copy()
pNewDC->m_oTransform.Copy(&m_oTransform);
pNewDC->m_oInverseTransform.Copy(&m_oInverseTransform);
pNewDC->m_oTextColor.Copy(m_oTextColor);
pNewDC->m_oBgColor.Copy(m_oBgColor);
pNewDC->m_oTextBgColor.Copy(m_oTextBgColor);
pNewDC->m_ulTextAlign = m_ulTextAlign;
pNewDC->m_ulBgMode = m_ulBgMode;
pNewDC->m_ulMiterLimit = m_ulMiterLimit;
......@@ -451,16 +451,16 @@ CSvmDC* CSvmDC::Copy()
return pNewDC;
}
ESvmMapUnit CSvmDC::GetMapMode()
ESvmMapUnit CSvmDC::GetMapModeUnit()
{
return m_ulMapMode;
return (ESvmMapUnit)m_oMapMode.unit;
}
void CSvmDC::SetMapMode(MapMode & mapMode, bool prefered )
void CSvmDC::SetMapMode(TSvmMapMode & mapMode, bool prefered )
{
m_ulMapMode = (ESvmMapUnit)mapMode.unit;
m_oMapMode = mapMode;
double dPixel = 1.;//
switch (m_ulMapMode)
switch (GetMapModeUnit())
{
case MAP_MM: // 1 unit = 1 mm
{
......@@ -561,6 +561,7 @@ void CSvmDC::SetTextColor(TSvmColor& oColor)
{
m_oTextColor.Copy(oColor);
}
TSvmColor& CSvmDC::GetTextColor()
{
return m_oTextColor;
......@@ -607,17 +608,17 @@ unsigned int CSvmDC::GetBgMode()
{
return m_ulBgMode;
}
void CSvmDC::SetBgColor(TSvmColor& oColor)
void CSvmDC::SetTextBgColor(TSvmColor& oColor)
{
m_oBgColor.Copy(oColor);
m_oTextBgColor.Copy(oColor);
}
void CSvmDC::SetBgColor(TSvmColor* oColor)
void CSvmDC::SetTextBgColor(TSvmColor* oColor)
{
m_oBgColor.Copy(*oColor);
m_oTextBgColor.Copy(*oColor);
}
TSvmColor& CSvmDC::GetBgColor()
TSvmColor& CSvmDC::GetTextBgColor()
{
return m_oBgColor;
return m_oTextBgColor;
}
void CSvmDC::SetMiterLimit(unsigned int ulMiter)
{
......@@ -670,35 +671,22 @@ void CSvmDC::SetPixelHeight(double dPixelH)
{
m_dPixelHeight = dPixelH;
}
void CSvmDC::SetWindowOrigin(TSvmPoint& oPoint)
{
m_oWindow.lX = oPoint.x;
m_oWindow.lY = oPoint.y;
UpdatePixelMetrics();
}
void CSvmDC::SetWindowExtents(TSvmSize& oPoint)
{
m_oWindow.ulW = oPoint.cx;
m_oWindow.ulH = oPoint.cy;
UpdatePixelMetrics();
}
TSvmWindow* CSvmDC::GetWindow()
{
return &m_oWindow;
}
void CSvmDC::SetViewportOrigin(TSvmPoint& oPoint)
void CSvmDC::SetViewportOff(int lX, int lY)
{
m_oViewport.lX = oPoint.x;
m_oViewport.lY = oPoint.y;
m_oViewport.lX = lX;
m_oViewport.lY = lY;
UpdatePixelMetrics();
}
void CSvmDC::SetViewportExtents(TSvmSize& oPoint)
void CSvmDC::SetViewportExt(int lX, int lY)
{
m_oViewport.ulW = oPoint.cx;
m_oViewport.ulH = oPoint.cy;
m_oViewport.ulW = lX;
m_oViewport.ulH = lY;
UpdatePixelMetrics();
}
......@@ -708,10 +696,10 @@ TSvmWindow* CSvmDC::GetViewport()
}
bool CSvmDC::UpdatePixelMetrics()
{
if (m_ulMapMode == MAP_RELATIVE)
if (GetMapModeUnit() == MAP_RELATIVE)
{
double dPixelX = (double)m_oViewport.ulW / (double)m_oWindow.ulW;
double dPixelY = (double)m_oViewport.ulH / (double)m_oWindow.ulH;
double dPixelX = 1;//(double)m_oViewport.ulW / (double)m_oWindow.ulW;
double dPixelY = 1;//(double)m_oViewport.ulH / (double)m_oWindow.ulH;
SetPixelWidth(dPixelX);
SetPixelHeight(dPixelY);
......
......@@ -63,8 +63,8 @@ public:
~CSvmDC();
CSvmDC* Copy();
ESvmMapUnit GetMapMode();
void SetMapMode(MapMode &mapMode, bool prefered = false);
ESvmMapUnit GetMapModeUnit();
void SetMapMode(TSvmMapMode &mapMode, bool prefered = false);
TXForm* GetTransform();
TXForm* GetInverseTransform();
void MultiplyTransform(TXForm& oForm, unsigned int ulMode);
......@@ -80,9 +80,11 @@ public:
unsigned int GetTextAlign();
void SetBgMode(unsigned int ulBgMode);
unsigned int GetBgMode();
void SetBgColor(TSvmColor& oColor);
void SetBgColor(TSvmColor* oColor);
TSvmColor& GetBgColor();
void SetTextBgColor(TSvmColor& oColor);
void SetTextBgColor(TSvmColor* oColor);
TSvmColor& GetTextBgColor();
void SetMiterLimit(unsigned int ulMiter);
unsigned int GetMiterLimit();
void SetFillMode(unsigned int ulFillMode);
......@@ -92,11 +94,7 @@ public:
CSvmPen* GetPen();
void SetStretchMode(unsigned int& oMode);
unsigned int GetStretchMode();
void SetWindowOrigin(TSvmPoint& oPoint);
void SetWindowExtents(TSvmSize& oPoint);
TSvmWindow* GetWindow();
void SetViewportOrigin(TSvmPoint& oPoint);
void SetViewportExtents(TSvmSize& oPoint);
TSvmWindow* GetViewport();
void SetRop2Mode(unsigned int& nMode);
unsigned int GetRop2Mode();
......@@ -111,6 +109,9 @@ public:
void SetArcDirection(unsigned int unDirection);
unsigned int GetArcDirection();
void SetViewportOff(int lX, int lY);
void SetViewportExt(int lX, int lY);
void SetWindowOff(short shX, short shY)
{
m_oWindow.lX += shX;
......@@ -136,21 +137,24 @@ public:
double m_dPixelWidthPrefered;
double m_dPixelHeightPrefered;
TSvmMapMode m_oMapMode;
private:
void SetPixelWidth(double dPixelW);
void SetPixelHeight(double dPixelH);
bool UpdatePixelMetrics();
ESvmMapUnit m_ulMapMode;
CSvmBrush* m_pBrush;
CSvmPen* m_pPen;
CSvmFont* m_pFont;
//CSvmLogPalette* m_pPalette;
TXForm m_oTransform;
TXForm m_oInverseTransform;
TSvmColor m_oTextColor;
TSvmColor m_oBgColor;
TSvmColor m_oTextBgColor;
unsigned int m_ulTextAlign;
unsigned int m_ulBgMode;
unsigned int m_ulMiterLimit;
......
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