diff --git a/Import/GacUI.cpp b/Import/GacUI.cpp index 06291926..d7ac52ac 100644 --- a/Import/GacUI.cpp +++ b/Import/GacUI.cpp @@ -34165,7 +34165,8 @@ GuiResource memoryStream.SeekFromBegin(0); { stream::StreamReader reader(memoryStream); - writer << reader.ReadToEnd(); + WString xml = reader.ReadToEnd(); + writer << xml; } } List typeNames; diff --git a/Import/GacUICompiler.cpp b/Import/GacUICompiler.cpp index c7bfccb5..3efb8f47 100644 --- a/Import/GacUICompiler.cpp +++ b/Import/GacUICompiler.cpp @@ -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); diff --git a/Import/GacUIWindows.cpp b/Import/GacUIWindows.cpp index 136bd9f3..5af71613 100644 --- a/Import/GacUIWindows.cpp +++ b/Import/GacUIWindows.cpp @@ -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 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 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:; } diff --git a/Import/Vlpp.h b/Import/Vlpp.h index c5c69972..ed46dda3 100644 --- a/Import/Vlpp.h +++ b/Import/Vlpp.h @@ -16783,11 +16783,7 @@ CustomConstructorInfoImpl Func proxy( LAMBDA([](TArgs ...args)->R { -#if defined VCZH_MSVC - R result = new TypeInfoRetriver::Type(args...); -#elif defined VCZH_GCC R result = new typename TypeInfoRetriver::Type(args...); -#endif return result; }) );