Commit 937677d0 authored by Oleg.Korshul's avatar Oleg.Korshul Committed by Alexander Trofimov

(1.0.1.171) ASC version

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@52480 954022d7-b5bf-4e40-9824-e11837661b57
parent 9cc2703b
......@@ -127,7 +127,7 @@
>
<Tool
Name="VCPreBuildEventTool"
CommandLine="..\..\..\Redist\VersionControl.exe &quot;$(ProjectDir)\version.h&quot;"
CommandLine="..\..\Redist\VersionControl.exe &quot;$(ProjectDir)\version.h&quot;"
/>
<Tool
Name="VCCustomBuildTool"
......@@ -153,7 +153,7 @@
<Tool
Name="VCCLCompilerTool"
InlineFunctionExpansion="1"
AdditionalIncludeDirectories="..\..\..\..\Common;..\Common;Objects\Font\FreeType;agg\include;Interfaces\"
AdditionalIncludeDirectories="..\..\..\..\Common;..\Common;Objects\Font\FreeType;agg\include;Interfaces\;..\ASCGraphics;..\..\Common"
PreprocessorDefinitions="WIN32;_WINDOWS;NDEBUG;_USRDLL;_ATL_ATTRIBUTES;_CRT_SECURE_NO_WARNINGS;_CRT_NON_CONFORMING_SWPRINTFS"
StringPooling="true"
RuntimeLibrary="2"
......
......@@ -81,38 +81,6 @@ public:
return 0;
}
IUnknown* ISLoadImage(BSTR filename)
{
ImageStudio::IImageTransforms* pTransforms = NULL;
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL, CLSCTX_INPROC, ImageStudio::IID_IImageTransforms, (void**)&pTransforms);
if (NULL == pTransforms)
return NULL;
IUnknown* pResult = NULL;
CStringW strXml = L"<ImageFile-LoadImage sourcepath='";
strXml += CStringW(filename);
strXml += L"'/>";
VARIANT_BOOL vbRes = VARIANT_FALSE;
BSTR bsXml = strXml.AllocSysString();
pTransforms->SetXml(bsXml, &vbRes);
pTransforms->Transform(&vbRes);
SysFreeString(bsXml);
VARIANT var;
pTransforms->GetResult(0, &var);
pResult = var.punkVal;
var.punkVal = NULL;
RELEASEINTERFACE(pTransforms);
return pResult;
}
void DrawOnRenderer(IASCRenderer* pRenderer, BSTR strFile, double dX, double dY, double dW, double dH, BOOL bIsFromFileUse = TRUE)
{
if (NULL == pRenderer)
......@@ -154,7 +122,7 @@ public:
}
else
{
IUnknown* pImage = ISLoadImage(strFile);
IUnknown* pImage = ImageStudio::ISLoadImage(strFile);
pRenderer->DrawImage(pImage, dX, dY, dW, dH);
RELEASEINTERFACE(pImage);
}
......
......@@ -178,7 +178,7 @@ void CASCFontManager::DumpToJSEditor(CString strDirectory, bool bIsUnionFamily)
while (NULL != pos)
{
const CAtlMap<CString, LONG>::CPair* pPair = mapFontFiles.GetNext(pos);
DumpJSFontFile6(pPair->m_key, strDirectory, pPair->m_value);
DumpJSFontFile(pPair->m_key, strDirectory, pPair->m_value);
}
// -------------------------------------------
......@@ -445,25 +445,11 @@ void CASCFontManager::DumpToJSEditor(CString strDirectory, bool bIsUnionFamily)
#endif
//
ImageStudio::IImageTransforms* pTransform = NULL;
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL, CLSCTX_ALL, ImageStudio::IID_IImageTransforms, (void**)&pTransform);
VARIANT var;
var.vt = VT_UNKNOWN;
var.punkVal = (IUnknown*)pFrame;
CString strThumbnailPath = strDirectory + _T("\\Fonts_JS") + _T("\\thumbnail.png");
VARIANT_BOOL vbSuccess = VARIANT_FALSE;
CString _dst = _T("<ImageFile-SaveAsPng destinationpath=\"") + strThumbnailPath + _T("\" format=\"8888\"/>");
BSTR bs_dst = _dst.AllocSysString();
pTransform->SetSource(0, var);
pTransform->SetXml(bs_dst, &vbSuccess);
pTransform->Transform(&vbSuccess);
ImageStudio::SaveImageAsPNG((IUnknown*)pFrame, strThumbnailPath);
RELEASEINTERFACE(pRenderer);
RELEASEINTERFACE(pFrame);
RELEASEINTERFACE(pTransform);
CFile oImageFile;
oImageFile.OpenFile(strThumbnailPath);
......
......@@ -1837,365 +1837,6 @@ protected:
{
CString strFontId = strPath;
strFontId.Replace(_T("\\\\"), _T("\\"));
strFontId.Replace(_T("/"), _T("\\"));
int nStart = strFontId.ReverseFind('\\');
int nEnd = strFontId.ReverseFind('.');
strFontId = strFontId.Mid(nStart + 1, nEnd - nStart - 1);
CFile oFileFontFile;
oFileFontFile.OpenFile(strPath);
DWORD dwCount = (DWORD)oFileFontFile.GetFileSize();
BYTE* pBuffer = new BYTE[dwCount];
oFileFontFile.ReadFile(pBuffer, dwCount);
oFileFontFile.CloseFile();
CStringWriter oWriter;
oWriter.WriteString(_T("gFontArraysObj[\"") + strFontId + _T("\"] = ["));
bstr_t b = L",";
for (DWORD lIndexByte = 0; lIndexByte < dwCount; ++lIndexByte)
{
if (0 != lIndexByte)
oWriter.WriteString(b);
CString strNum = _T("");
strNum.Format(_T("%d"), pBuffer[lIndexByte]);
oWriter.WriteString(strNum);
}
CString str2 = _T("];\ngFontNamesObj[gFontNamesObj.length - 1] = \"") + strFontId +
_T("\";\n_STDIO.prepare(\"") + strFontId + _T("\", gFontArraysObj[\"") + strFontId + _T("\"]);");
oWriter.WriteString(str2);
RELEASEARRAYOBJECTS(pBuffer);
CString sFilePathDst = strDirectory + _T("\\") + strFontId + _T(".js");
CFile oFileFontFileJS;
oFileFontFileJS.CreateFile(sFilePathDst);
CStringA strA = (CStringA)oWriter.GetCString();
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
oFileFontFileJS.CloseFile();
}
void DumpJSFontFile2(const CString& strPath, CString strDirectory, LONG lFontIndex)
{
CString strFontId = strPath;
strFontId.Replace(_T("\\\\"), _T("\\"));
strFontId.Replace(_T("/"), _T("\\"));
int nStart = strFontId.ReverseFind('\\');
int nEnd = strFontId.ReverseFind('.');
strFontId = strFontId.Mid(nStart + 1, nEnd - nStart - 1);
CFile oFileFontFile;
oFileFontFile.OpenFile(strPath);
DWORD dwCount = (DWORD)oFileFontFile.GetFileSize();
BYTE* pBuffer = new BYTE[dwCount];
oFileFontFile.ReadFile(pBuffer, dwCount);
oFileFontFile.CloseFile();
CString strFileLen = _T("");
strFileLen.Format(_T("%u"), dwCount);
CString strFontID = _T("gFontArraysObj[\"") + strFontId + _T("\"]");
CStringWriter oWriter;
CString _t1 = strFontID + _T(" = CreateFontArray(") + strFileLen + _T(");");
oWriter.WriteString(_t1);
bstr_t b = L",";
CString strFontNum = _T("");
strFontNum.Format(_T("%d"), lFontIndex);
CString _t2 = _T("function createFont") + strFontNum + _T("(){var p = ") + strFontID + _T(".data;var i = 0;\n");
oWriter.WriteString(_t2);
CString sFilePathDst = strDirectory + _T("\\") + strFontId + _T(".js");
CFile oFileFontFileJS;
oFileFontFileJS.CreateFile(sFilePathDst);
LONG lCurrentCount = 0;
for (DWORD lIndexByte = 0; lIndexByte < dwCount; ++lIndexByte)
{
++lCurrentCount;
CString strWrite = _T("");
strWrite.Format(_T("p[i++]=%d;"), pBuffer[lIndexByte]);
oWriter.WriteString(strWrite);
if (lCurrentCount > 1000000)
{
lCurrentCount = 0;
CStringA strA = (CStringA)oWriter.GetCString();
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
oWriter.ClearNoAttack();
}
}
CString _t3 = _T("}\ncreateFont") + strFontNum + _T("();\ngFontNamesObj[gFontNamesObj.length - 1] = \"") + strFontId +
_T("\";\n_STDIO.prepare(\"") + strFontId + _T("\", gFontArraysObj[\"") + strFontId + _T("\"]);");
oWriter.WriteString(_t3);
RELEASEARRAYOBJECTS(pBuffer);
CStringA strA = (CStringA)oWriter.GetCString();
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
oFileFontFileJS.CloseFile();
}
void DumpJSFontFile3(const CString& strPath, CString strDirectory, LONG lFontIndex)
{
CString strFontId = strPath;
strFontId.Replace(_T("\\\\"), _T("\\"));
strFontId.Replace(_T("/"), _T("\\"));
int nStart = strFontId.ReverseFind('\\');
int nEnd = strFontId.ReverseFind('.');
strFontId = strFontId.Mid(nStart + 1, nEnd - nStart - 1);
CFile oFileFontFile;
oFileFontFile.OpenFile(strPath);
DWORD dwCount = (DWORD)oFileFontFile.GetFileSize();
LONG __lcount = (LONG)(dwCount + 3) / 4;
double __dcount = (double)__lcount;
double __dcountsize = sqrt(__dcount);
LONG lSizeX = (LONG)sqrt(__dcount) + 1;
LONG lSizeY = lSizeX;
//if (lSizeX * lSizeY < __lcount)
// lSizeY += 1;
MediaCore::IAVSUncompressedVideoFrame* pUnkFrame = NULL;
CoCreateInstance(MediaCore::CLSID_CAVSUncompressedVideoFrame, NULL, CLSCTX_ALL, MediaCore::IID_IAVSUncompressedVideoFrame, (void**)&pUnkFrame);
pUnkFrame->put_ColorSpace( ( 1 << 6) ); // CPS_BGRA | CPS_FLIP
pUnkFrame->put_Width( lSizeX );
pUnkFrame->put_Height( lSizeY );
pUnkFrame->put_AspectRatioX( lSizeX );
pUnkFrame->put_AspectRatioY( lSizeY );
pUnkFrame->put_Interlaced( VARIANT_FALSE );
pUnkFrame->put_Stride( 0, 4 * lSizeX );
pUnkFrame->AllocateBuffer( -1 );
BYTE* pBuffer = NULL;
pUnkFrame->get_Buffer(&pBuffer);
memset(pBuffer, 0, 4 * lSizeX * lSizeY);
oFileFontFile.ReadFile(pBuffer, dwCount);
oFileFontFile.CloseFile();
ImageStudio::IImageTransforms* pTransform = NULL;
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL, CLSCTX_ALL, ImageStudio::IID_IImageTransforms, (void**)&pTransform);
VARIANT var;
var.vt = VT_UNKNOWN;
var.punkVal = (IUnknown*)pUnkFrame;
VARIANT_BOOL vbSuccess = VARIANT_FALSE;
pTransform->SetSource(0, var);
pTransform->SetXml(L"<ImageFile-SaveAsPng destinationpath=\"C:\\1.png\" format=\"8888\"/>", &vbSuccess);
pTransform->Transform(&vbSuccess);
RELEASEINTERFACE(pUnkFrame);
RELEASEINTERFACE(pTransform);
if (TRUE)
{
if (_T("arial") == strFontId)
{
CopyFile(_T("C:\\1.png"), _T("C:\\arial.png"), FALSE);
}
}
CFile oImageFile;
oImageFile.OpenFile(_T("C:\\1.png"));
int nInputLen = (int)oImageFile.GetFileSize();
BYTE* pData = new BYTE[nInputLen];
oImageFile.ReadFile(pData, nInputLen);
oImageFile.CloseFile();
int nOutputLen = Base64EncodeGetRequiredLength(nInputLen, ATL_BASE64_FLAG_NOCRLF);
BYTE* pOutput = new BYTE[nOutputLen];
Base64Encode(pData, nInputLen, (LPSTR)pOutput, &nOutputLen, ATL_BASE64_FLAG_NOCRLF);
/*
BYTE* pMemory = new BYTE[2 * nOutputLen];
BYTE* pCurrentMemory = pMemory;
BYTE* pCurrentOutput = pOutput;
BYTE* pEnd = pOutput + nOutputLen;
BYTE dump[3];
dump[0] = BYTE('\\');
dump[1] = 0x0D;
dump[2] = 0x0A;
int n = 0;
while (true)
{
if ((pCurrentOutput + 76) >= pEnd)
{
memcpy(pCurrentMemory, pCurrentOutput, (pEnd - pCurrentOutput));
pCurrentMemory += (pEnd - pCurrentOutput);
break;
}
memcpy(pCurrentMemory, pCurrentOutput, 76);
pCurrentMemory += 76;
pCurrentOutput += 76;
memcpy(pCurrentMemory, dump, 3);
pCurrentMemory += 3;
pCurrentOutput += 2;
}
*/
CString sFilePathDst = strDirectory + _T("\\") + strFontId + _T(".js");
CFile oFileFontFileJS;
oFileFontFileJS.CreateFile(sFilePathDst);
CString strNum = _T("");
strNum.Format(_T("%d"), lFontIndex);
strNum = _T("__font_image") + strNum;
CString strNumF = _T("");
strNumF.Format(_T("g_fontFiles[%d].IsLoaded = true;}\n"), lFontIndex);
CString str = _T("var ") + strNum + _T("=new Image();\n") + strNum + _T(".onload=function(){\ngFontArraysObj[\"") + strFontId + _T("\"] = CreateFontData(") + strNum + _T(");\n");
str += (_T("delete ") + strNum + _T(";\ngFontNamesObj[gFontNamesObj.length - 1] = \"") + strFontId + _T("\";\n_STDIO.prepare(\""));
str += (strFontId + _T("\", gFontArraysObj[\"") + strFontId + _T("\"]);\n") + strNumF);
CStringA strA = (CStringA)str;
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
str = strNum + _T(".src = \"data:image/png;base64,");
strA = (CStringA)str;
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
//oFileFontFileJS.WriteFile((void*)pMemory, (DWORD)(pCurrentMemory - pMemory));
oFileFontFileJS.WriteFile((void*)pOutput, (DWORD)(nOutputLen));
str = _T("\";");
strA = (CStringA)str;
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
oFileFontFileJS.CloseFile();
//RELEASEARRAYOBJECTS(pMemory);
RELEASEARRAYOBJECTS(pOutput);
RELEASEARRAYOBJECTS(pData);
}
void DumpJSFontFile4(const CString& strPath, CString strDirectory, LONG lFontIndex)
{
CString strFontId = strPath;
strFontId.Replace(_T("\\\\"), _T("\\"));
strFontId.Replace(_T("/"), _T("\\"));
int nStart = strFontId.ReverseFind('\\');
int nEnd = strFontId.ReverseFind('.');
strFontId = strFontId.Mid(nStart + 1, nEnd - nStart - 1);
CFile oFileFontFile;
oFileFontFile.OpenFile(strPath);
int nInputLen = (int)oFileFontFile.GetFileSize();
BYTE* pData = new BYTE[nInputLen];
oFileFontFile.ReadFile(pData, (DWORD)nInputLen);
int nOutputLen = Base64EncodeGetRequiredLength(nInputLen, ATL_BASE64_FLAG_NOCRLF);
BYTE* pOutput = new BYTE[nOutputLen];
Base64Encode(pData, nInputLen, (LPSTR)pOutput, &nOutputLen, ATL_BASE64_FLAG_NOCRLF);
CString sFilePathDst = strDirectory + _T("\\") + strFontId + _T(".js");
CFile oFileFontFileJS;
oFileFontFileJS.CreateFile(sFilePathDst);
CString strNum = _T("");
strNum.Format(_T("%d"), lFontIndex);
strNum = _T("__font_data") + strNum;
CStringA strA;
CString t1 = _T("var ") + strNum + _T("=\"");
strA = (CStringA)t1;
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
oFileFontFileJS.WriteFile((void*)pOutput, (DWORD)(nOutputLen));
CString strNumF = _T("");
strNumF.Format(_T("g_fontFiles[%d].IsLoaded = true;\n"), lFontIndex);
CString strDecodeLen = _T("");
strDecodeLen.Format(_T(",%d);\n"), nInputLen);
CString t2 = _T("\";\ngFontArraysObj[\"") + strFontId + _T("\"] = CreateFontData2(") + strNum + strDecodeLen;
t2 += (_T("delete ") + strNum + _T(";\ngFontNamesObj[gFontNamesObj.length - 1] = \"") + strFontId + _T("\";\n_STDIO.prepare(\""));
t2 += (strFontId + _T("\", gFontArraysObj[\"") + strFontId + _T("\"]);\n") + strNumF);
strA = (CStringA)t2;
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
oFileFontFileJS.CloseFile();
RELEASEARRAYOBJECTS(pOutput);
RELEASEARRAYOBJECTS(pData);
}
void DumpJSFontFile5(const CString& strPath, CString strDirectory, LONG lFontIndex)
{
CString strFontId = strPath;
strFontId.Replace(_T("\\\\"), _T("\\"));
strFontId.Replace(_T("/"), _T("\\"));
int nStart = strFontId.ReverseFind('\\');
int nEnd = strFontId.ReverseFind('.');
strFontId = strFontId.Mid(nStart + 1, nEnd - nStart - 1);
CFile oFileFontFile;
oFileFontFile.OpenFile(strPath);
int nInputLen = (int)oFileFontFile.GetFileSize();
BYTE* pData = new BYTE[nInputLen];
oFileFontFile.ReadFile(pData, (DWORD)nInputLen);
int nOutputLen = Base64EncodeGetRequiredLength(nInputLen, ATL_BASE64_FLAG_NOCRLF);
BYTE* pOutput = new BYTE[nOutputLen];
Base64Encode(pData, nInputLen, (LPSTR)pOutput, &nOutputLen, ATL_BASE64_FLAG_NOCRLF);
CString sFilePathDst = strDirectory + _T("\\") + strFontId + _T(".js");
CFile oFileFontFileJS;
oFileFontFileJS.CreateFile(sFilePathDst);
CString strNum = _T("");
strNum.Format(_T("%d"), lFontIndex);
strNum = _T("__font_data") + strNum;
CStringA strA;
CString t1 = _T("var ") + strNum + _T("=\"");
strA = (CStringA)t1;
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
oFileFontFileJS.WriteFile((void*)pOutput, (DWORD)(nOutputLen));
CString strRes = _T("");
strRes.Format(_T("\";\nvar __font_data%d_idx = g_fonts_streams.length;\n\
g_fonts_streams[__font_data%d_idx] = CreateFontData2(__font_data%d,%d);\n\
__font_data%d = null;\n\
g_font_files[%d].SetStreamIndex(__font_data%d_idx);"), lFontIndex, lFontIndex, lFontIndex, nInputLen, lFontIndex, lFontIndex, lFontIndex);
strA = (CStringA)strRes;
oFileFontFileJS.WriteFile((void*)strA.GetBuffer(), (DWORD)strA.GetLength());
oFileFontFileJS.CloseFile();
RELEASEARRAYOBJECTS(pOutput);
RELEASEARRAYOBJECTS(pData);
}
void DumpJSFontFile6(const CString& strPath, CString strDirectory, LONG lFontIndex)
{
CString strFontId = strPath;
strFontId.Replace(_T("\\\\"), _T("\\"));
strFontId.Replace(_T("/"), _T("\\"));
int nStart = strFontId.ReverseFind('\\');
......
......@@ -2569,26 +2569,7 @@ namespace SVG
}
BOOL PatternImage::SaveImage(IUnknown* punkFrame, CString file)
{
ImageStudio::IImageTransforms* pTransform = NULL;
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL ,CLSCTX_INPROC_SERVER, ImageStudio::IID_IImageTransforms, (void**)&pTransform);
VARIANT var;
var.vt = VT_UNKNOWN;
var.punkVal = punkFrame;
pTransform->SetSource(0, var);
CString strXml = _T("<transforms><ImageFile-SaveAsPng destinationpath=\"") + file + _T("\" format=\"888\"/></transforms>");
VARIANT_BOOL vbSuccess = VARIANT_FALSE;
BSTR bsXml = strXml.AllocSysString();
pTransform->SetXml(bsXml, &vbSuccess);
SysFreeString(bsXml);
pTransform->Transform(&vbSuccess);
RELEASEINTERFACE(pTransform);
return TRUE;
return ImageStudio::SaveImageAsPNG(punkFrame, file);
}
Point PatternImage::GetNormalizeFactor()
{
......
#ifndef _RENDERER_OUTPUT_H
#define _RENDERER_OUTPUT_H
#include "../../../stdafx.h"
#include "..\..\..\Interfaces\ASCRenderer.h"
#include "..\..\Structures.h"
#include "WmfUtils.h"
......@@ -1492,15 +1494,6 @@ private:
pBufferPtr += 4;
}
//
ImageStudio::IImageTransforms *pTransform = NULL;
CoCreateInstance( __uuidof( ImageStudio::ImageTransforms ), NULL, CLSCTX_INPROC_SERVER, __uuidof(ImageStudio::IImageTransforms), (void **)(&pTransform) );
if ( !pTransform )
{
RELEASEINTERFACE( pInterface );
return false;
}
FILE *pTempFile = NULL;
CString wsTempFileName;
if ( !WmfOpenTempFile( &wsTempFileName, &pTempFile, _T("wb"), _T(".wmf0"), NULL ) )
......@@ -1510,43 +1503,12 @@ private:
}
::fclose( pTempFile );
VARIANT vSource;
vSource.vt = VT_UNKNOWN;
vSource.punkVal = (IUnknown *)(pInterface);
pTransform->SetSource( 0, vSource );
CString sXml("<transforms><ImageFile-SaveAsPng destinationpath=\"");
sXml += wsTempFileName.GetBuffer();
sXml += "\"></ImageFile-SaveAsPng></transforms>";
BSTR bsXML = sXml.AllocSysString();
VARIANT_BOOL vbSuccess = VARIANT_FALSE;
pTransform->SetXml( bsXML, &vbSuccess );
if ( VARIANT_TRUE != vbSuccess )
{
::SysFreeString( bsXML );
RELEASEINTERFACE( pInterface );
RELEASEINTERFACE( pTransform );
_wunlink( wsTempFileName.GetBuffer() );
return false;
}
pTransform->Transform( &vbSuccess );
if ( VARIANT_TRUE != vbSuccess )
{
::SysFreeString( bsXML );
RELEASEINTERFACE( pInterface );
RELEASEINTERFACE( pTransform );
_wunlink( wsTempFileName.GetBuffer() );
BOOL bRet = ImageStudio::SaveImageAsPNG(pInterface, wsTempFileName);
if (!bRet)
return false;
}
::SysFreeString( bsXML );
RELEASEINTERFACE( pInterface );
RELEASEINTERFACE( pTransform );
m_oBrush.TexturePath = wsTempFileName;
m_oBrush.TextureMode = c_BrushTextureModeTile;
m_oBrush.Type = c_BrushTypeTexture;
......@@ -1714,43 +1676,16 @@ private:
::fwrite( pBuffer, 1, unImageSize, pTempFile );
::fclose( pTempFile );
ImageStudio::IImageTransforms *pTransform = NULL;
CoCreateInstance( __uuidof( ImageStudio::ImageTransforms ), NULL, CLSCTX_INPROC_SERVER, __uuidof(ImageStudio::IImageTransforms), (void **)(&pTransform) );
if ( !pTransform )
return false;
CString sXml("<transforms><ImageFile-LoadImage sourcepath=\"");
sXml += wsTempFileName.GetBuffer();
sXml += "\"></ImageFile-LoadImage>";
BSTR bsXML = sXml.AllocSysString();
VARIANT_BOOL vbSuccess = VARIANT_FALSE;
pTransform->SetXml( bsXML, &vbSuccess );
if ( VARIANT_TRUE != vbSuccess )
{
::SysFreeString( bsXML );
RELEASEINTERFACE( pTransform );
_wunlink( wsTempFileName.GetBuffer() );
return false;
}
pTransform->Transform( &vbSuccess );
if ( VARIANT_TRUE != vbSuccess )
{
::SysFreeString( bsXML );
RELEASEINTERFACE( pTransform );
_wunlink( wsTempFileName.GetBuffer() );
return false;
}
BSTR bsFilePath = wsTempFileName.AllocSysString();
IUnknown* punkFrame = ImageStudio::ISLoadImage(bsFilePath);
SysFreeString(bsFilePath);
// TO DO:
RELEASEINTERFACE(punkFrame);
//VARIANT oVar;
//pTransform->GetResult( 0, &oVar );
::SysFreeString( bsXML );
RELEASEINTERFACE( pTransform );
::_wunlink( wsTempFileName.GetBuffer() );
......
......@@ -53,29 +53,16 @@ void Aggplus::CImage::Create(const WCHAR *filename)
void Aggplus::CImage::CreateFromImageStudio(const WCHAR *filename)
{
Destroy();
ImageStudio::IImageTransforms* pTransforms = NULL;
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL, CLSCTX_INPROC, ImageStudio::IID_IImageTransforms, (void**)&pTransforms);
if (NULL == pTransforms)
return;
CStringW strXml = L"<ImageFile-LoadImage sourcepath='";
strXml += CStringW(filename);
strXml += L"'/>";
VARIANT_BOOL vbRes = VARIANT_FALSE;
BSTR bsXml = strXml.AllocSysString();
pTransforms->SetXml(bsXml, &vbRes);
pTransforms->Transform(&vbRes);
CString s = (CString)filename;
BSTR bsFile = s.AllocSysString();
IUnknown* punkResult = ImageStudio::ISLoadImage(bsFile);
SysFreeString(bsFile);
VARIANT var;
pTransforms->GetResult(0, &var);
if (NULL != var.punkVal)
if (NULL != punkResult)
{
var.punkVal->QueryInterface(MediaCore::IID_IAVSUncompressedVideoFrame, (void**)&m_pFrame);
RELEASEINTERFACE((var.punkVal));
punkResult->QueryInterface(MediaCore::IID_IAVSUncompressedVideoFrame, (void**)&m_pFrame);
RELEASEINTERFACE(punkResult);
}
if (NULL != m_pFrame)
......@@ -93,8 +80,6 @@ void Aggplus::CImage::CreateFromImageStudio(const WCHAR *filename)
m_Status = Ok;
}
RELEASEINTERFACE(pTransforms);
}
void Aggplus::CImage::CopyFrom(const CImage *pSource)
......
......@@ -43,7 +43,7 @@
#include <atlctl.h>
#include <atlhost.h>
#include <atlcoll.h>
#include <atldefine.h>
#include "../../Common/atldefine.h"
#include "Gdiplus.h"
#pragma comment(lib, "gdiplus.lib")
......@@ -65,10 +65,100 @@
using namespace ATL;
#include "../../Common/ASCUtils.h"
#include "../../Common/Config.h"
#ifdef BUILD_CONFIG_OPENSOURCE_VERSION
#import "../../Redist/OfficeCore.dll" named_guids raw_interfaces_only rename_namespace("OfficeCore")
namespace MediaCore
{
typedef OfficeCore::IUncompressedFrame IAVSUncompressedVideoFrame;
const GUID CLSID_CUncompressedVideoFrame = OfficeCore::CLSID_CUncompressedFrame;
const GUID IID_IUncompressedVideoFrame = OfficeCore::IID_IUncompressedFrame;
}
#else
#import "../../Redist/ASCMediaCore3.dll" named_guids raw_interfaces_only rename_namespace("MediaCore")
#import "../../Redist/ASCImageStudio3.dll" named_guids raw_interfaces_only rename_namespace("ImageStudio")
#endif // BUILD_CONFIG_OPENSOURCE_VERSION
namespace ImageStudio
{
static IUnknown* ISLoadImage(BSTR filename)
{
#ifdef BUILD_CONFIG_OPENSOURCE_VERSION
OfficeCore::IImageGdipFilePtr pImageFile;
pImageFile.CreateInstance(OfficeCore::CLSID_CImageGdipFile);
pImageFile->OpenFile(filename);
IUnknown* punkFrame = NULL;
pImageFile->get_Frame(&punkFrame);
return punkFrame;
#else
ImageStudio::IImageTransforms* pTransforms = NULL;
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL, CLSCTX_INPROC, ImageStudio::IID_IImageTransforms, (void**)&pTransforms);
if (NULL == pTransforms)
return NULL;
IUnknown* pResult = NULL;
CStringW strXml = L"<ImageFile-LoadImage sourcepath='";
strXml += CStringW(filename);
strXml += L"'/>";
VARIANT_BOOL vbRes = VARIANT_FALSE;
BSTR bsXml = strXml.AllocSysString();
pTransforms->SetXml(bsXml, &vbRes);
pTransforms->Transform(&vbRes);
SysFreeString(bsXml);
VARIANT var;
pTransforms->GetResult(0, &var);
pResult = var.punkVal;
var.punkVal = NULL;
RELEASEINTERFACE(pTransforms);
return pResult;
#endif // BUILD_CONFIG_OPENSOURCE_VERSION
}
static BOOL SaveImageAsPNG(IUnknown* punkFrame, CString file)
{
#ifdef BUILD_CONFIG_OPENSOURCE_VERSION
OfficeCore::IImageGdipFilePtr pImageFile;
pImageFile.CreateInstance(OfficeCore::CLSID_CImageGdipFile);
pImageFile->put_Frame(punkFrame);
BSTR bsFile = file.AllocSysString();
HRESULT hr = pImageFile->SaveFile(bsFile, 4);
return (hr == S_OK);
#else
ImageStudio::IImageTransforms* pTransform = NULL;
CoCreateInstance(ImageStudio::CLSID_ImageTransforms, NULL ,CLSCTX_INPROC_SERVER, ImageStudio::IID_IImageTransforms, (void**)&pTransform);
VARIANT var;
var.vt = VT_UNKNOWN;
var.punkVal = punkFrame;
pTransform->SetSource(0, var);
CString strXml = _T("<transforms><ImageFile-SaveAsPng destinationpath=\"") + file + _T("\" format=\"888\"/></transforms>");
VARIANT_BOOL vbSuccess = VARIANT_FALSE;
BSTR bsXml = strXml.AllocSysString();
pTransform->SetXml(bsXml, &vbSuccess);
SysFreeString(bsXml);
pTransform->Transform(&vbSuccess);
RELEASEINTERFACE(pTransform);
return TRUE;
#endif // BUILD_CONFIG_OPENSOURCE_VERSION
}
}
......@@ -2,6 +2,6 @@
//1
//0
//1
//170
#define INTVER 1,0,1,170
#define STRVER "1,0,1,170\0"
//171
#define INTVER 1,0,1,171
#define STRVER "1,0,1,171\0"
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