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

SvmFile

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@62776 954022d7-b5bf-4e40-9824-e11837661b57
parent f8ff1723
...@@ -44,6 +44,23 @@ namespace MetaFile ...@@ -44,6 +44,23 @@ namespace MetaFile
m_dScaleY = (nB - nT <= 0) ? 1 : m_dH / (double)(nB - nT); m_dScaleY = (nB - nT <= 0) ? 1 : m_dH / (double)(nB - nT);
m_bStartedPath = false; m_bStartedPath = false;
//int alpha = 0xff;
//m_pRenderer->put_BrushAlpha1(alpha);
//m_pRenderer->put_BrushType(c_BrushTypeSolid);
//m_pRenderer->put_BrushColor1(0xffffff);
//m_pRenderer->BeginCommand(c_nPathType);
//m_pRenderer->PathCommandStart();
//m_pRenderer->PathCommandMoveTo(pBounds->nLeft , pBounds->nTop);
//m_pRenderer->PathCommandLineTo(pBounds->nRight , pBounds->nTop);
//m_pRenderer->PathCommandLineTo(pBounds->nRight , pBounds->nBottom);
//m_pRenderer->PathCommandLineTo(pBounds->nLeft , pBounds->nBottom);
//m_pRenderer->PathCommandLineTo(pBounds->nLeft , pBounds->nTop);
//m_pRenderer->PathCommandClose();
//m_pRenderer->DrawPath(c_nWindingFillMode);
//m_pRenderer->EndCommand(c_nPathType);
//m_pRenderer->PathCommandEnd();
} }
~CMetaFileRenderer() ~CMetaFileRenderer()
{ {
......
...@@ -18,6 +18,15 @@ class CSvmFile : virtual public IMetaFileBase ...@@ -18,6 +18,15 @@ class CSvmFile : virtual public IMetaFileBase
m_currentCharset = 0; m_currentCharset = 0;
m_currentActionType = 0; m_currentActionType = 0;
}; };
CSvmFile(BYTE *Data, int DataSize): m_oPlayer(this)
{
m_oStream.SetStream(Data, DataSize);
m_pDC = m_oPlayer.GetDC();
m_currentActionVersion = 0;
m_currentCharset = 0;
m_currentActionType = 0;
}
~CSvmFile() ~CSvmFile()
{ {
...@@ -36,19 +45,34 @@ class CSvmFile : virtual public IMetaFileBase ...@@ -36,19 +45,34 @@ class CSvmFile : virtual public IMetaFileBase
} }
TRect* GetBounds() TRect* GetBounds()
{ {
return &m_oHeader.boundRect;//&m_oBoundingBox;// return &m_oBoundingBox;
} }
TRect* GetDCBounds() 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;
return &m_oDCRect;
//}
//else
{ {
return &m_oHeader.boundRect; return &m_oHeader.boundRect;
} }
}
double GetPixelHeight() double GetPixelHeight()
{ {
return m_pDC->GetPixelHeight(); return m_pDC->m_dPixelHeight;
} }
double GetPixelWidth() double GetPixelWidth()
{ {
return m_pDC->GetPixelWidth(); return m_pDC->m_dPixelWidth;
} }
int GetTextColor() int GetTextColor()
{ {
...@@ -147,9 +171,12 @@ class CSvmFile : virtual public IMetaFileBase ...@@ -147,9 +171,12 @@ class CSvmFile : virtual public IMetaFileBase
bool m_bFirstPoint; bool m_bFirstPoint;
TRect m_oBoundingBox; TRect m_oBoundingBox;
//TRect m_oRect;
TRect m_oDCRect;
friend class CSvmPlayer; friend class CSvmPlayer;
void Read_META_LINE();
void Read_META_RECTANGLE(); void Read_META_RECTANGLE();
void Read_SVM_HEADER(); void Read_SVM_HEADER();
void Read_META_POLYGON(); void Read_META_POLYGON();
...@@ -157,20 +184,24 @@ class CSvmFile : virtual public IMetaFileBase ...@@ -157,20 +184,24 @@ class CSvmFile : virtual public IMetaFileBase
void Read_META_POLYPOLYGON(); void Read_META_POLYPOLYGON();
void Read_META_TEXT(); void Read_META_TEXT();
void Read_META_ARRAYTEXT(); void Read_META_ARRAYTEXT();
void Read_META_TEXTALIGN();
void Read_META_TEXTRECT();
void Read_META_SETMAPMODE(); void Read_META_SETMAPMODE();
void Read_META_SETTEXTCOLOR(); void Read_META_SETTEXTCOLOR();
void Read_META_SETFILLCOLOR(); void Read_META_SETFILLCOLOR();
void Read_META_SETLINECOLOR(); void Read_META_SETLINECOLOR();
void Read_META_FONT(); void Read_META_FONT();
void Read_META_BMPSCALE(); void Read_META_BMPSCALE();
void Read_META_BMP();
void Read_META_RASTEROP(); void Read_META_RASTEROP();
void Read_META_PUSH(); void Read_META_PUSH();
void Read_META_POP(); void Read_META_POP();
void Read_META_GRADIENT(); void Read_META_GRADIENT();
void Read_META_GRADIENTEX(); void Read_META_GRADIENTEX();
void Read_META_TRANSPARENT(); void Read_META_TRANSPARENT();
void Read_META_FLOATTRANSPARENT();
void Read_META_POLYPOLYGON(std::vector<TSvmPolygon> & polygons); void Read_META_POLYPOLYGON(std::vector<TSvmPolygon> & polygons, std::vector<TSvmPolygon> & complexPolygons);
//------------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------------
...@@ -183,12 +214,13 @@ class CSvmFile : virtual public IMetaFileBase ...@@ -183,12 +214,13 @@ class CSvmFile : virtual public IMetaFileBase
TSvmWindow* pWindow = m_pDC->GetWindow(); TSvmWindow* pWindow = m_pDC->GetWindow();
TSvmWindow* pViewport = m_pDC->GetViewport(); TSvmWindow* pViewport = m_pDC->GetViewport();
dX = (double)((double)(nX - pWindow->lX) * m_pDC->GetPixelWidth()) + pViewport->lX; dX = (double)((double)(nX - pWindow->lX) * m_pDC->m_dPixelWidth) + pViewport->lX;
dY = (double)((double)(nY - pWindow->lY) * m_pDC->GetPixelHeight()) + pViewport->lY; dY = (double)((double)(nY - pWindow->lY) * m_pDC->m_dPixelHeight) + pViewport->lY;
// Координаты приходят уже с примененной матрицей. Поэтому сначала мы умножаем на матрицу преобразования, // Координаты приходят уже с примененной матрицей. Поэтому сначала мы умножаем на матрицу преобразования,
// вычитаем начальные координаты и умножаем на обратную матрицу преобразования. // вычитаем начальные координаты и умножаем на обратную матрицу преобразования.
TRect* pBounds = GetDCBounds(); TRect* pBounds = GetDCBounds();
double dT = pBounds->nTop; double dT = pBounds->nTop;
double dL = pBounds->nLeft; double dL = pBounds->nLeft;
...@@ -272,8 +304,6 @@ class CSvmFile : virtual public IMetaFileBase ...@@ -272,8 +304,6 @@ class CSvmFile : virtual public IMetaFileBase
} }
else else
{ {
RegisterPoint(nX, nY);
RegisterPoint(nX + nW, nY + nH);
} }
} }
void MoveTo(TSvmPoint& oPoint) void MoveTo(TSvmPoint& oPoint)
...@@ -303,7 +333,6 @@ class CSvmFile : virtual public IMetaFileBase ...@@ -303,7 +333,6 @@ class CSvmFile : virtual public IMetaFileBase
{ {
double dX = nX, dY = nY; double dX = nX, dY = nY;
TranslatePoint(nX, nY, dX, dY); TranslatePoint(nX, nY, dX, dY);
//RegisterPoint(nX, nY);
//if (m_pPath) //if (m_pPath)
//{ //{
...@@ -394,6 +423,42 @@ class CSvmFile : virtual public IMetaFileBase ...@@ -394,6 +423,42 @@ class CSvmFile : virtual public IMetaFileBase
if (m_pOutput) if (m_pOutput)
m_pOutput->UpdateDC(); m_pOutput->UpdateDC();
} }
void DrawText(std::wstring& wsString, unsigned int unCharsCount, TSvmRect& rect)
{
int nX = rect.l;
int nY = rect.t;
int nX1 = rect.r;
int nY1 = rect.b;
if (m_pDC->GetTextAlign() & TA_UPDATECP)
{
nX = m_pDC->GetCurPos().x;
nY = m_pDC->GetCurPos().y;
}
if (m_pOutput)
{
double dX = nX, dY = nY, dX1 = nX1, dY1 = nY1;
TranslatePoint(nX, nY, dX, dY);
TranslatePoint(nX1, nY1, dX1, dY1);
double* pdDx = new double[unCharsCount];
if (pdDx)
{
for (unsigned int unCharIndex = 0; unCharIndex < unCharsCount; unCharIndex++)
{
pdDx[unCharIndex] = (dX1 - dX)/unCharsCount;
}
}
m_pOutput->DrawString(wsString, unCharsCount, dX, dY, pdDx);
if (pdDx)
delete[] pdDx;
}
}
void DrawText(std::wstring& wsString, unsigned int unCharsCount, int _nX, int _nY, int* pnDx = NULL) void DrawText(std::wstring& wsString, unsigned int unCharsCount, int _nX, int _nY, int* pnDx = NULL)
{ {
int nX = _nX; int nX = _nX;
...@@ -439,24 +504,28 @@ class CSvmFile : virtual public IMetaFileBase ...@@ -439,24 +504,28 @@ class CSvmFile : virtual public IMetaFileBase
} }
TRect GetBoundingBox() TRect GetBoundingBox()
{ {
TRect oBB = m_oBoundingBox; TRect oBB = m_oHeader.boundRect;
if (abs(oBB.nRight - oBB.nLeft) <= 1) if (abs(oBB.nRight - oBB.nLeft) <= 1)
oBB.nRight = oBB.nLeft + 1024; oBB.nRight = oBB.nLeft + 1024;
if (abs(oBB.nBottom - oBB.nTop) <= 1) if (abs(oBB.nBottom - oBB.nTop) <= 1)
oBB.nBottom = m_oBoundingBox.nTop + 1024; oBB.nBottom = oBB.nTop + 1024;
return oBB; return oBB;
} }
void RegisterPoint(short shX, short shY) void RegisterPoint(short shX, short shY)
{ {
shX *= m_pDC->m_dPixelWidth;
shY *= m_pDC->m_dPixelHeight;
if (m_bFirstPoint) if (m_bFirstPoint)
{ {
m_oBoundingBox.nLeft = shX; m_oBoundingBox.nLeft = shX;
m_oBoundingBox.nRight = shX; m_oBoundingBox.nRight = shX;
m_oBoundingBox.nTop = shY; m_oBoundingBox.nTop = shY;
m_oBoundingBox.nBottom = shY; m_oBoundingBox.nBottom = shY;
m_bFirstPoint = false; m_bFirstPoint = false;
} }
else else
......
...@@ -141,7 +141,7 @@ TSvmRect::TSvmRect() ...@@ -141,7 +141,7 @@ TSvmRect::TSvmRect()
{ {
l = t = r = b = 0; l = t = r = b = 0;
} }
CDataStream& operator>>(CDataStream &stream, TSvmBitmapSize &s) CDataStream& operator>>(CDataStream &stream, TSvmSize &s)
{ {
stream >> s.cx; stream >> s.cx;
stream >> s.cy; stream >> s.cy;
...@@ -155,13 +155,7 @@ CDataStream& operator>>(CDataStream &stream, TSvmPoint &p) ...@@ -155,13 +155,7 @@ CDataStream& operator>>(CDataStream &stream, TSvmPoint &p)
return stream; return stream;
} }
CDataStream& operator>>(CDataStream &stream, TSvmBitmapPoint &p)
{
stream >> p.x;
stream >> p.y;
return stream;
}
CSvmBrush::CSvmBrush() : Color(255, 255, 255) CSvmBrush::CSvmBrush() : Color(255, 255, 255)
{ {
BrushStyle = BS_SOLID; BrushStyle = BS_SOLID;
...@@ -228,9 +222,10 @@ TSvmPolygon::TSvmPolygon(CDataStream &stream) ...@@ -228,9 +222,10 @@ TSvmPolygon::TSvmPolygon(CDataStream &stream)
} }
CDataStream& operator>>(CDataStream &stream, TSvmPolygon &p) CDataStream& operator>>(CDataStream &stream, TSvmPolygon &p)
{ {
stream >> p.count; unsigned short count;
stream >> count;
for (int i = 0; i < p.count; i++) for (int i = 0; i < count; i++)
{ {
TSvmPoint point; TSvmPoint point;
stream >> point; stream >> point;
......
...@@ -142,10 +142,10 @@ struct TSvmRect ...@@ -142,10 +142,10 @@ struct TSvmRect
struct TSvmPolygon struct TSvmPolygon
{ {
TSvmPolygon(){ count = 0; } TSvmPolygon(){}
TSvmPolygon(CDataStream &stream); TSvmPolygon(CDataStream &stream);
std::vector<TSvmPoint> points; std::vector<TSvmPoint> points;
unsigned short count;
}; };
struct TSvmColor struct TSvmColor
...@@ -339,6 +339,8 @@ class CSvmPen : public CSvmObjectBase, public IPen ...@@ -339,6 +339,8 @@ class CSvmPen : public CSvmObjectBase, public IPen
public: public:
CSvmPen() CSvmPen()
{ {
Width = 1;
PenStyle = PS_NULL;
} }
~CSvmPen() ~CSvmPen()
{ {
...@@ -372,8 +374,7 @@ CDataStream& operator>>(CDataStream &stream, VersionCompat &compat); ...@@ -372,8 +374,7 @@ CDataStream& operator>>(CDataStream &stream, VersionCompat &compat);
CDataStream& operator>>(CDataStream &stream, Fraction &fract); CDataStream& operator>>(CDataStream &stream, Fraction &fract);
CDataStream& operator>>(CDataStream &stream, MapMode &mm); CDataStream& operator>>(CDataStream &stream, MapMode &mm);
CDataStream& operator>>(CDataStream &stream, SvmHeader &header); CDataStream& operator>>(CDataStream &stream, SvmHeader &header);
CDataStream& operator>>(CDataStream &stream, TSvmBitmapSize &s); CDataStream& operator>>(CDataStream &stream, TSvmSize &s);
CDataStream& operator>>(CDataStream &stream, TSvmBitmapPoint &s);
CDataStream& operator>>(CDataStream &stream, TSvmPoint &p); CDataStream& operator>>(CDataStream &stream, TSvmPoint &p);
CDataStream& operator>>(CDataStream &stream, TSvmRect &p); CDataStream& operator>>(CDataStream &stream, TSvmRect &p);
CDataStream& operator>>(CDataStream &stream, TSvmPolygon &p); CDataStream& operator>>(CDataStream &stream, TSvmPolygon &p);
......
...@@ -268,11 +268,11 @@ void CSvmPlayer::Pop() ...@@ -268,11 +268,11 @@ void CSvmPlayer::Pop()
// else // else
// SetMapMode(); // SetMapMode();
//} //}
if ( m_nFlags & PUSH_CLIPREGION ) //if ( m_nFlags & PUSH_CLIPREGION )
{ //{
GetDC()->GetClip()->ClipOnRenderer(m_pFile->m_pOutput); // GetDC()->GetClip()->ClipOnRenderer(m_pFile->m_pOutput);
GetDC()->GetClip()->Reset(); // GetDC()->GetClip()->Reset();
} //}
m_nFlags = 0; m_nFlags = 0;
//if ( m_nFlags & PUSH_REFPOINT ) //if ( m_nFlags & PUSH_REFPOINT )
...@@ -341,11 +341,11 @@ void CSvmPlayer::Push(int nFlags) // ...@@ -341,11 +341,11 @@ void CSvmPlayer::Push(int nFlags) //
// else // else
// pData->mpMapMode = NULL; // pData->mpMapMode = NULL;
//} //}
if ( nFlags & PUSH_CLIPREGION ) //if ( nFlags & PUSH_CLIPREGION )
{ //{
GetDC()->GetClip()->Reset(); // GetDC()->GetClip()->Reset();
//new region // //new region
} //}
//if ( nFlags & PUSH_REFPOINT ) //if ( nFlags & PUSH_REFPOINT )
//{ //{
// if ( mbRefPoint ) // if ( mbRefPoint )
...@@ -405,8 +405,10 @@ CSvmDC::CSvmDC() ...@@ -405,8 +405,10 @@ CSvmDC::CSvmDC()
m_ulStretchMode = 0; m_ulStretchMode = 0;
m_oWindow.Init(); m_oWindow.Init();
m_oViewport.Init(); m_oViewport.Init();
m_dPixelHeight = 1;
m_dPixelWidth = 1; m_dPixelHeight = m_dPixelHeightPrefered = 1;
m_dPixelWidth = m_dPixelWidthPrefered = 1;
m_oCurPos.x = 0; m_oCurPos.x = 0;
m_oCurPos.y = 0; m_oCurPos.y = 0;
m_unArcDirection = AD_COUNTERCLOCKWISE; m_unArcDirection = AD_COUNTERCLOCKWISE;
...@@ -435,44 +437,76 @@ CSvmDC* CSvmDC::Copy() ...@@ -435,44 +437,76 @@ CSvmDC* CSvmDC::Copy()
pNewDC->m_ulFillMode = m_ulFillMode; pNewDC->m_ulFillMode = m_ulFillMode;
pNewDC->m_ulStretchMode = m_ulStretchMode; pNewDC->m_ulStretchMode = m_ulStretchMode;
pNewDC->m_ulRop2Mode = m_ulRop2Mode; pNewDC->m_ulRop2Mode = m_ulRop2Mode;
pNewDC->m_dPixelHeight = m_dPixelHeight; pNewDC->m_dPixelHeight = m_dPixelHeight;
pNewDC->m_dPixelWidth = m_dPixelWidth; pNewDC->m_dPixelWidth = m_dPixelWidth;
pNewDC->m_dPixelHeightPrefered = m_dPixelHeightPrefered;
pNewDC->m_dPixelWidthPrefered = m_dPixelWidthPrefered;
pNewDC->m_oWindow.Copy(&m_oWindow); pNewDC->m_oWindow.Copy(&m_oWindow);
pNewDC->m_oViewport.Copy(&m_oViewport); pNewDC->m_oViewport.Copy(&m_oViewport);
pNewDC->m_oCurPos = m_oCurPos; pNewDC->m_oCurPos = m_oCurPos;
pNewDC->m_oClip = m_oClip; //pNewDC->m_oClip = m_oClip;
pNewDC->m_unArcDirection = m_unArcDirection; pNewDC->m_unArcDirection = m_unArcDirection;
return pNewDC; return pNewDC;
} }
void CSvmDC::SetMapMode(MapMode & mapMode) ESvmMapUnit CSvmDC::GetMapMode()
{
return m_ulMapMode;
}
void CSvmDC::SetMapMode(MapMode & mapMode, bool prefered )
{ {
m_ulMapMode = (ESvmMapUnit)mapMode.unit; m_ulMapMode = (ESvmMapUnit)mapMode.unit;
double dPixel = 1.;//
switch (m_ulMapMode) switch (m_ulMapMode)
{ {
case MAP_MM: // 1 unit = 1 mm case MAP_MM: // 1 unit = 1 mm
{ {
double dPixel = 1. * 72 / 25.4; dPixel = 1. * 72 / 25.4;
SetPixelWidth(dPixel); SetPixelWidth(dPixel);
SetPixelHeight(dPixel); SetPixelHeight(dPixel);
}break; }break;
case MAP_CM: // 1 unit = 1 cm = 10 mm case MAP_CM: // 1 unit = 1 cm = 10 mm
{ {
double dPixel = 10. * 72 / 25.4; dPixel = 10. * 72 / 25.4;
SetPixelWidth(dPixel); SetPixelWidth(dPixel);
SetPixelHeight(dPixel); SetPixelHeight(dPixel);
}break; }break;
case MAP_100TH_MM: case MAP_100TH_MM:
{
dPixel = 1. * 72 / 2540.;
SetPixelWidth(dPixel);
SetPixelHeight(dPixel);
}break;
case MAP_10TH_MM: case MAP_10TH_MM:
{
dPixel = 1. * 72 / 254.;
SetPixelWidth(dPixel);
SetPixelHeight(dPixel);
}break;
case MAP_1000TH_INCH: case MAP_1000TH_INCH:
{
dPixel = 1. * 72 / 1000.;
SetPixelWidth(dPixel);
SetPixelHeight(dPixel);
}break;
case MAP_100TH_INCH: case MAP_100TH_INCH:
{
dPixel = 1.* 72 / 100.;
SetPixelWidth(dPixel);
SetPixelHeight(dPixel);
}break;
case MAP_10TH_INCH: case MAP_10TH_INCH:
// {
break; dPixel = 1. * 72 / 10.;
SetPixelWidth(dPixel);
SetPixelHeight(dPixel);
}break;
case MAP_INCH: // 1 unit = 1 inch case MAP_INCH: // 1 unit = 1 inch
{ {
double dPixel = 1. * 72; dPixel = 1. * 72;
SetPixelWidth(dPixel); SetPixelWidth(dPixel);
SetPixelHeight(dPixel); SetPixelHeight(dPixel);
}break; }break;
...@@ -488,7 +522,7 @@ void CSvmDC::SetMapMode(MapMode & mapMode) ...@@ -488,7 +522,7 @@ void CSvmDC::SetMapMode(MapMode & mapMode)
}break; }break;
case MAP_PIXEL: case MAP_PIXEL:
{ {
double dPixel = 1. * 3. /4.; dPixel = 0.5;// /72.; //todooo
SetPixelWidth(dPixel); SetPixelWidth(dPixel);
SetPixelHeight(dPixel); SetPixelHeight(dPixel);
}break; }break;
...@@ -502,6 +536,15 @@ void CSvmDC::SetMapMode(MapMode & mapMode) ...@@ -502,6 +536,15 @@ void CSvmDC::SetMapMode(MapMode & mapMode)
case MAP_LASTENUMDUMMY: case MAP_LASTENUMDUMMY:
break; break;
} }
if (prefered )
{
m_dPixelHeightPrefered = m_dPixelHeight;
m_dPixelWidthPrefered = m_dPixelWidth;
}
UpdatePixelMetrics();
} }
TXForm* CSvmDC::GetTransform() TXForm* CSvmDC::GetTransform()
...@@ -607,7 +650,8 @@ CSvmPen* CSvmDC::GetPen() ...@@ -607,7 +650,8 @@ CSvmPen* CSvmDC::GetPen()
} }
CSvmClip* CSvmDC::GetClip() CSvmClip* CSvmDC::GetClip()
{ {
return &m_oClip; return NULL;;
//return &m_oClip;
} }
void CSvmDC::SetStretchMode(unsigned int& oMode) void CSvmDC::SetStretchMode(unsigned int& oMode)
{ {
...@@ -617,14 +661,7 @@ unsigned int CSvmDC::GetStretchMode() ...@@ -617,14 +661,7 @@ unsigned int CSvmDC::GetStretchMode()
{ {
return m_ulStretchMode; return m_ulStretchMode;
} }
double CSvmDC::GetPixelWidth()
{
return m_dPixelWidth;
}
double CSvmDC::GetPixelHeight()
{
return m_dPixelHeight;
}
void CSvmDC::SetPixelWidth(double dPixelW) void CSvmDC::SetPixelWidth(double dPixelW)
{ {
m_dPixelWidth = dPixelW; m_dPixelWidth = dPixelW;
......
...@@ -63,7 +63,8 @@ public: ...@@ -63,7 +63,8 @@ public:
~CSvmDC(); ~CSvmDC();
CSvmDC* Copy(); CSvmDC* Copy();
void SetMapMode(MapMode &mapMode); ESvmMapUnit GetMapMode();
void SetMapMode(MapMode &mapMode, bool prefered = false);
TXForm* GetTransform(); TXForm* GetTransform();
TXForm* GetInverseTransform(); TXForm* GetInverseTransform();
void MultiplyTransform(TXForm& oForm, unsigned int ulMode); void MultiplyTransform(TXForm& oForm, unsigned int ulMode);
...@@ -91,8 +92,6 @@ public: ...@@ -91,8 +92,6 @@ public:
CSvmPen* GetPen(); CSvmPen* GetPen();
void SetStretchMode(unsigned int& oMode); void SetStretchMode(unsigned int& oMode);
unsigned int GetStretchMode(); unsigned int GetStretchMode();
double GetPixelWidth();
double GetPixelHeight();
void SetWindowOrigin(TSvmPoint& oPoint); void SetWindowOrigin(TSvmPoint& oPoint);
void SetWindowExtents(TSvmSize& oPoint); void SetWindowExtents(TSvmSize& oPoint);
TSvmWindow* GetWindow(); TSvmWindow* GetWindow();
...@@ -131,6 +130,12 @@ public: ...@@ -131,6 +130,12 @@ public:
UpdatePixelMetrics(); UpdatePixelMetrics();
} }
double m_dPixelWidth;
double m_dPixelHeight;
double m_dPixelWidthPrefered;
double m_dPixelHeightPrefered;
private: private:
void SetPixelWidth(double dPixelW); void SetPixelWidth(double dPixelW);
...@@ -152,12 +157,12 @@ private: ...@@ -152,12 +157,12 @@ private:
unsigned int m_ulFillMode; unsigned int m_ulFillMode;
unsigned int m_ulStretchMode; unsigned int m_ulStretchMode;
unsigned int m_ulRop2Mode; unsigned int m_ulRop2Mode;
double m_dPixelWidth;
double m_dPixelHeight;
TSvmWindow m_oWindow; TSvmWindow m_oWindow;
TSvmWindow m_oViewport; TSvmWindow m_oViewport;
TSvmPoint m_oCurPos; TSvmPoint m_oCurPos;
CSvmClip m_oClip; //CSvmClip m_oClip;
unsigned int m_unArcDirection; unsigned int m_unArcDirection;
}; };
......
...@@ -62,7 +62,10 @@ void ConvertFolder(CMetaFile &oMetaFile, std::wstring wsFolderPath, const int nT ...@@ -62,7 +62,10 @@ void ConvertFolder(CMetaFile &oMetaFile, std::wstring wsFolderPath, const int nT
if (oMetaFile.LoadFromFile(wsFilePath.c_str())) if (oMetaFile.LoadFromFile(wsFilePath.c_str()))
{ {
std::wstring wsDstFilePath = (wsFilePath.substr(0, wsFilePath.size() - 3)).append(L"bmp"); std::wstring wsDstFilePath = (wsFilePath.substr(0, wsFilePath.size() - 3)).append(L"bmp");
oMetaFile.ConvertToRaster(wsDstFilePath.c_str(), 1, 1980);
double w, h, x, y;
oMetaFile.GetBounds(&x, &y, &w, &h);
oMetaFile.ConvertToRaster(wsDstFilePath.c_str(), 1, w);
oMetaFile.Close(); oMetaFile.Close();
} }
......
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