/permissive

This commit is contained in:
Zihan Chen
2018-07-06 01:35:17 -07:00
parent 189ab6ff06
commit 9b508506c4
4 changed files with 122 additions and 111 deletions
+2 -1
View File
@@ -34165,7 +34165,8 @@ GuiResource
memoryStream.SeekFromBegin(0);
{
stream::StreamReader reader(memoryStream);
writer << reader.ReadToEnd();
WString xml = reader.ReadToEnd();
writer << xml;
}
}
List<WString> typeNames;
+10
View File
@@ -2138,6 +2138,11 @@ GuiResourceInstanceBinder (uri)
errors.Add(GuiResourceError({ resolvingResult.resource }, position, L"Precompile: \"" + code + L"\" is not a valid resource uri."));
return nullptr;
}
else if (!precompileContext.resolver->ResolveResource(protocol, path))
{
errors.Add(GuiResourceError({ resolvingResult.resource }, position, L"Precompile: Resource \"" + code + L"\" does not exist."));
return nullptr;
}
else
{
return Workflow_GetUriProperty(precompileContext, resolvingResult, loader, prop, propInfo, protocol, path, position, errors);
@@ -2152,6 +2157,11 @@ GuiResourceInstanceBinder (uri)
errors.Add(GuiResourceError({ resolvingResult.resource }, position, L"Precompile: \"" + code + L"\" is not a valid resource uri."));
return nullptr;
}
else if (!precompileContext.resolver->ResolveResource(protocol, path))
{
errors.Add(GuiResourceError({ resolvingResult.resource }, position, L"Precompile: Resource \"" + code + L"\" does not exist."));
return nullptr;
}
else
{
return Workflow_InstallUriProperty(precompileContext, resolvingResult, variableName, loader, prop, propInfo, protocol, path, position, errors);
+110 -106
View File
@@ -9090,101 +9090,103 @@ WindowsImage
formatGUID = GetGuidFromFormat(formatType);
}
IWICBitmapEncoder* bitmapEncoder = nullptr;
hr = factory->CreateEncoder(formatGUID, NULL, &bitmapEncoder);
if (!bitmapEncoder) goto FAILED;
IStream* pIStream = nullptr;
hr = CreateStreamOnHGlobal(NULL, TRUE, &pIStream);
if (!pIStream)
{
bitmapEncoder->Release();
goto FAILED;
}
IWICBitmapEncoder* bitmapEncoder = nullptr;
hr = factory->CreateEncoder(formatGUID, NULL, &bitmapEncoder);
if (!bitmapEncoder) goto FAILED;
hr = bitmapEncoder->Initialize(pIStream, WICBitmapEncoderNoCache);
if (hr != S_OK)
{
pIStream->Release();
bitmapEncoder->Release();
goto FAILED;
}
{
UINT actualCount = 0;
Array<IWICColorContext*> colorContexts(16);
hr = bitmapDecoder->GetColorContexts((UINT)colorContexts.Count(), &colorContexts[0], &actualCount);
if (hr == S_OK)
IStream* pIStream = nullptr;
hr = CreateStreamOnHGlobal(NULL, TRUE, &pIStream);
if (!pIStream)
{
if ((vint)actualCount > colorContexts.Count())
{
for (vint i = 0; i < colorContexts.Count(); i++) colorContexts[i]->Release();
colorContexts.Resize((vint)actualCount);
bitmapDecoder->GetColorContexts(actualCount, &colorContexts[0], &actualCount);
}
if (actualCount > 0)
{
bitmapEncoder->SetColorContexts(actualCount, &colorContexts[0]);
for (vint i = 0; i < (vint)actualCount; i++) colorContexts[i]->Release();
}
bitmapEncoder->Release();
goto FAILED;
}
}
{
IWICPalette* palette = nullptr;
hr = factory->CreatePalette(&palette);
if (palette)
hr = bitmapEncoder->Initialize(pIStream, WICBitmapEncoderNoCache);
if (hr != S_OK)
{
hr = bitmapDecoder->CopyPalette(palette);
pIStream->Release();
bitmapEncoder->Release();
goto FAILED;
}
{
UINT actualCount = 0;
Array<IWICColorContext*> colorContexts(16);
hr = bitmapDecoder->GetColorContexts((UINT)colorContexts.Count(), &colorContexts[0], &actualCount);
if (hr == S_OK)
{
bitmapEncoder->SetPalette(palette);
if ((vint)actualCount > colorContexts.Count())
{
for (vint i = 0; i < colorContexts.Count(); i++) colorContexts[i]->Release();
colorContexts.Resize((vint)actualCount);
bitmapDecoder->GetColorContexts(actualCount, &colorContexts[0], &actualCount);
}
if (actualCount > 0)
{
bitmapEncoder->SetColorContexts(actualCount, &colorContexts[0]);
for (vint i = 0; i < (vint)actualCount; i++) colorContexts[i]->Release();
}
}
palette->Release();
}
}
{
IWICBitmapSource* source = nullptr;
hr = bitmapDecoder->GetPreview(&source);
if (source)
{
bitmapEncoder->SetPreview(source);
source->Release();
IWICPalette* palette = nullptr;
hr = factory->CreatePalette(&palette);
if (palette)
{
hr = bitmapDecoder->CopyPalette(palette);
if (hr == S_OK)
{
bitmapEncoder->SetPalette(palette);
}
palette->Release();
}
}
}
{
IWICBitmapSource* source = nullptr;
hr = bitmapDecoder->GetThumbnail(&source);
if (source)
{
bitmapEncoder->SetThumbnail(source);
source->Release();
IWICBitmapSource* source = nullptr;
hr = bitmapDecoder->GetPreview(&source);
if (source)
{
bitmapEncoder->SetPreview(source);
source->Release();
}
}
}
CopyMetadata(bitmapDecoder.Obj(), bitmapEncoder);
{
IWICBitmapSource* source = nullptr;
hr = bitmapDecoder->GetThumbnail(&source);
if (source)
{
bitmapEncoder->SetThumbnail(source);
source->Release();
}
}
CopyMetadata(bitmapDecoder.Obj(), bitmapEncoder);
UINT frameCount = 0;
bitmapDecoder->GetFrameCount(&frameCount);
for (UINT i = 0; i < frameCount; i++)
{
IWICBitmapFrameDecode* frameDecode = nullptr;
IWICBitmapFrameEncode* frameEncode = nullptr;
hr = bitmapDecoder->GetFrame(i, &frameDecode);
hr = bitmapEncoder->CreateNewFrame(&frameEncode, NULL);
if (frameDecode && frameEncode)
UINT frameCount = 0;
bitmapDecoder->GetFrameCount(&frameCount);
for (UINT i = 0; i < frameCount; i++)
{
hr = frameEncode->Initialize(NULL);
CopyMetadata(frameDecode, frameEncode);
hr = frameEncode->WriteSource(frameDecode, NULL);
hr = frameEncode->Commit();
IWICBitmapFrameDecode* frameDecode = nullptr;
IWICBitmapFrameEncode* frameEncode = nullptr;
hr = bitmapDecoder->GetFrame(i, &frameDecode);
hr = bitmapEncoder->CreateNewFrame(&frameEncode, NULL);
if (frameDecode && frameEncode)
{
hr = frameEncode->Initialize(NULL);
CopyMetadata(frameDecode, frameEncode);
hr = frameEncode->WriteSource(frameDecode, NULL);
hr = frameEncode->Commit();
}
if (frameDecode) frameDecode->Release();
if (frameEncode) frameEncode->Release();
}
if (frameDecode) frameDecode->Release();
if (frameEncode) frameEncode->Release();
}
hr = bitmapEncoder->Commit();
bitmapEncoder->Release();
MoveIStreamToStream(pIStream, stream);
pIStream->Release();
hr = bitmapEncoder->Commit();
bitmapEncoder->Release();
MoveIStreamToStream(pIStream, stream);
pIStream->Release();
}
FAILED:;
}
@@ -9236,38 +9238,40 @@ WindowsBitmapImage
HRESULT hr = factory->CreateEncoder(formatGUID, NULL, &bitmapEncoder);
if (!bitmapEncoder) goto FAILED;
IStream* pIStream = nullptr;
hr = CreateStreamOnHGlobal(NULL, TRUE, &pIStream);
if (!pIStream)
{
bitmapEncoder->Release();
goto FAILED;
}
hr = bitmapEncoder->Initialize(pIStream, WICBitmapEncoderNoCache);
if (hr != S_OK)
{
pIStream->Release();
bitmapEncoder->Release();
goto FAILED;
}
{
IWICBitmapFrameEncode* frameEncode = nullptr;
hr = bitmapEncoder->CreateNewFrame(&frameEncode, NULL);
if (frameEncode)
IStream* pIStream = nullptr;
hr = CreateStreamOnHGlobal(NULL, TRUE, &pIStream);
if (!pIStream)
{
hr = frameEncode->Initialize(NULL);
hr = frameEncode->WriteSource(frame->GetFrameBitmap(), NULL);
hr = frameEncode->Commit();
frameEncode->Release();
bitmapEncoder->Release();
goto FAILED;
}
}
hr = bitmapEncoder->Commit();
bitmapEncoder->Release();
MoveIStreamToStream(pIStream, stream);
pIStream->Release();
hr = bitmapEncoder->Initialize(pIStream, WICBitmapEncoderNoCache);
if (hr != S_OK)
{
pIStream->Release();
bitmapEncoder->Release();
goto FAILED;
}
{
IWICBitmapFrameEncode* frameEncode = nullptr;
hr = bitmapEncoder->CreateNewFrame(&frameEncode, NULL);
if (frameEncode)
{
hr = frameEncode->Initialize(NULL);
hr = frameEncode->WriteSource(frame->GetFrameBitmap(), NULL);
hr = frameEncode->Commit();
frameEncode->Release();
}
}
hr = bitmapEncoder->Commit();
bitmapEncoder->Release();
MoveIStreamToStream(pIStream, stream);
pIStream->Release();
}
FAILED:;
}
-4
View File
@@ -16783,11 +16783,7 @@ CustomConstructorInfoImpl<R(TArgs...)>
Func<R(TArgs...)> proxy(
LAMBDA([](TArgs ...args)->R
{
#if defined VCZH_MSVC
R result = new TypeInfoRetriver<R>::Type(args...);
#elif defined VCZH_GCC
R result = new typename TypeInfoRetriver<R>::Type(args...);
#endif
return result;
})
);