summaryrefslogtreecommitdiff
path: root/ldmicro/componentimages.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ldmicro/componentimages.cpp')
-rw-r--r--ldmicro/componentimages.cpp253
1 files changed, 0 insertions, 253 deletions
diff --git a/ldmicro/componentimages.cpp b/ldmicro/componentimages.cpp
deleted file mode 100644
index 2026c7f..0000000
--- a/ldmicro/componentimages.cpp
+++ /dev/null
@@ -1,253 +0,0 @@
-
-#include <windows.h>
-#include <commctrl.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <wincodec.h>
-
-#include "ldmicro.h"
-#include "componentlist.h"
-#include "components/componentimages.h"
-
-static int temp = 1;
-
-void InitializeComponentImage(int Component, HIMAGELIST *il)
-{
- int i;
- // char a[4];
- // MessageBox(ComponentList, (LPCTSTR)itoa(rgCompData[Component], a, 10),
- // "Info", MB_OK | MB_ICONEXCLAMATION);
- // test=LoadComponentImage(rgCompData[Component].Images[0]);
- // if(test ==NULL){
- // MessageBox(ComponentList, "Could not load Bitmap!",
- // "Error", MB_OK | MB_ICONEXCLAMATION);
- // }
- // HDC hdc=GetDC(AdvancedWorkspace);
- // HdcMem = CreateCompatibleDC(hdc);
- // HBITMAP bm = (HBITMAP)SelectObject(HdcMem, test);
- // BitBlt(hdc, 10 * temp, 10 * temp, COMPONENT_WIDTH,
- // COMPONENT_HEIGHT, HdcMem, 0, 0, SRCCOPY);
- // temp++;
- // DeleteDC(hdc);
- // if(ComponentDiagrams == NULL){
- // InitializeImageList();
- // }
- HBITMAP bm = LoadComponentImage(Component);
- // HBITMAP mask = CreateBitmapMask(bm, CLR_NONE);
- // HDC hdc = GetDC(AdvancedWorkspace);
- ImageList_RemoveAll(*il);
- i = ImageList_AddMasked(*il, bm, CLR_NONE);
- if(bm==NULL)
- {
- MessageBox(NULL,"Could not add image",
- "Info", MB_OK | MB_ICONEXCLAMATION);
- }
- /*char vx[4],vy[4];
- _itoa(10,vy,10);
- _itoa(ImageStack[i].Image->Images,vx,10);
- MessageBox(NULL,
- (vx), (vy), MB_OK | MB_ICONWARNING);*/
- // _itoa(Component, a, 10);
- // MessageBox(ComponentList,a,
- // "Info", MB_OK | MB_ICONEXCLAMATION);
-
- // ImageList_Draw(ComponentDiagrams, i, hdc, 100*temp, 100*temp, ILD_TRANSPARENT);
- // temp ++;
- // DeleteDC(hdc);
-}
-
-//-----------------------------------------------------------------------------
-// Creates a stream object initialized with the data from an executable resource.
-//-----------------------------------------------------------------------------
-
-IStream * CreateStreamOnResource(LPCTSTR lpName, LPCTSTR lpType)
-{
-
- // initialize return value
- IStream * ipStream = NULL;
-
- // find the resource
- HRSRC hrsrc = FindResource(NULL, lpName, lpType);
- if (hrsrc == NULL)
- {
- return ipStream;
- }
-
- // load the resource
- DWORD dwResourceSize = SizeofResource(NULL, hrsrc);
- HGLOBAL hglbImage = LoadResource(NULL, hrsrc);
- if (hglbImage == NULL)
- {
- return ipStream;
- }
-
- // lock the resource, getting a pointer to its data
- LPVOID pvSourceResourceData = LockResource(hglbImage);
- if (pvSourceResourceData == NULL)
- {
- return ipStream;
- }
-
- // allocate memory to hold the resource data
- HGLOBAL hgblResourceData = GlobalAlloc(GMEM_MOVEABLE, dwResourceSize);
- if (hgblResourceData == NULL)
- {
- return ipStream;
- }
-
- // get a pointer to the allocated memory
- LPVOID pvResourceData = GlobalLock(hgblResourceData);
- if (pvResourceData == NULL)
- {
- // couldn't create stream; free the memory
- GlobalFree(hgblResourceData);
- return ipStream;
- }
-
- // copy the data from the resource to the new memory block
- CopyMemory(pvResourceData, pvSourceResourceData, dwResourceSize);
- GlobalUnlock(hgblResourceData);
-
- // create a stream on the HGLOBAL containing the data
- if (SUCCEEDED(CreateStreamOnHGlobal(hgblResourceData, TRUE, &ipStream)))
- {
- return ipStream;
- }
- GlobalFree(hgblResourceData);
- return ipStream;
-}
-
-//-----------------------------------------------------------------------------
-// Loads a PNG image from the specified stream
-// (using Windows Imaging Component)
-//-----------------------------------------------------------------------------
-IWICBitmapSource * LoadBitmapFromStream(IStream * ipImageStream)
-{
- // initialize return value
- IWICBitmapSource * ipBitmap = NULL;
-
- // load WIC's PNG decoder
- IWICBitmapDecoder * ipDecoder = NULL;
- if(CoInitialize(NULL) == RPC_E_CHANGED_MODE)
- {
- MessageBox(ComponentList, "Could not Initialize COM Library!",
- "Error", MB_OK | MB_ICONEXCLAMATION);
- }
- if (FAILED(CoCreateInstance(CLSID_WICPngDecoder, NULL, CLSCTX_INPROC_SERVER,
- __uuidof(ipDecoder), reinterpret_cast<void**>(&ipDecoder))))
- {
- MessageBox(ComponentList, "Could not Create Object!",
- "Error", MB_OK | MB_ICONEXCLAMATION);
- goto Return;
- }
-
- // load the PNG
- if (FAILED(ipDecoder->Initialize(ipImageStream, WICDecodeMetadataCacheOnLoad)))
- goto ReleaseDecoder;
-
- // check for the presence of the first frame in the bitmap
- UINT nFrameCount = 0;
- if (FAILED(ipDecoder->GetFrameCount(&nFrameCount)) || nFrameCount != 1)
- goto ReleaseDecoder;
-
- // load the first frame (i.e., the image)
- IWICBitmapFrameDecode * ipFrame = NULL;
- if (FAILED(ipDecoder->GetFrame(0, &ipFrame)))
- goto ReleaseDecoder;
-
- // convert the image to 32bpp BGRA format with pre-multiplied alpha
- // (it may not be stored in that format natively in the PNG resource,
- // but we need this format to create the DIB to use on-screen)
- WICConvertBitmapSource(GUID_WICPixelFormat32bppPBGRA, ipFrame, &ipBitmap);
- ipFrame->Release();
-
-ReleaseDecoder:
- ipDecoder->Release();
-
-Return:
- return ipBitmap;
-
-}
-
-//-----------------------------------------------------------------------------
-// Creates a 32-bit DIB from the specified WIC bitmap.
-//-----------------------------------------------------------------------------
-
-HBITMAP CreateHBITMAP(IWICBitmapSource * ipBitmap)
-{
- // initialize return value
- HBITMAP hbmp = NULL;
-
- // get image attributes and check for valid image
- UINT width = 0;
- UINT height = 0;
- if (FAILED(ipBitmap->GetSize(&width, &height)) || width == 0 || height == 0)
- {
- return hbmp;
- }
-
- // prepare structure giving bitmap information
- // (negative height indicates a top-down DIB)
- BITMAPINFO bminfo;
- ZeroMemory(&bminfo, sizeof(bminfo));
- bminfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
- bminfo.bmiHeader.biWidth = width;
- bminfo.bmiHeader.biHeight = -((LONG) height);
- bminfo.bmiHeader.biPlanes = 1;
- bminfo.bmiHeader.biBitCount = 32;
- bminfo.bmiHeader.biCompression = BI_RGB;
-
- // create a DIB section that can hold the image
- void * pvImageBits = NULL;
- HDC hdcScreen = GetDC(NULL);
- hbmp = CreateDIBSection(hdcScreen, &bminfo, DIB_RGB_COLORS, &pvImageBits, NULL, 0);
- ReleaseDC(NULL, hdcScreen);
- if (hbmp == NULL)
- {
- return hbmp;
- }
-
- // extract the image into the HBITMAP
- const UINT cbStride = width * 4;
- const UINT cbImage = cbStride * height;
- if (FAILED(ipBitmap->CopyPixels(NULL, cbStride, cbImage, static_cast<BYTE *>(pvImageBits))))
- {
- // couldn't extract image; delete HBITMAP
- DeleteObject(hbmp);
- hbmp = NULL;
- }
-
- return hbmp;
-}
-
-//-----------------------------------------------------------------------------
-// Loads the PNG containing the splash image into a HBITMAP.
-//-----------------------------------------------------------------------------
-
-HBITMAP LoadComponentImage(int resource)
-{
- HBITMAP hbmpSplash = NULL;
-
- // load the PNG image data into a stream
- IStream * ipImageStream = CreateStreamOnResource(
- MAKEINTRESOURCE(resource), _("PNG"));
- if (ipImageStream == NULL)
- {
- return hbmpSplash;
- }
-
- // load the bitmap with WIC
- IWICBitmapSource * ipBitmap = LoadBitmapFromStream(ipImageStream);
- if (ipBitmap == NULL)
- {
- ipImageStream->Release();
- return hbmpSplash;
- }
-
- // create a HBITMAP containing the image
- hbmpSplash = CreateHBITMAP(ipBitmap);
- ipBitmap->Release();
-
- ipImageStream->Release();
- return hbmpSplash;
-} \ No newline at end of file