summaryrefslogtreecommitdiff
path: root/Source/ThirdParty/ANGLE/util/windows/win32/Win32Pixmap.cpp
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-06-27 06:07:23 +0000
commit1bf1084f2b10c3b47fd1a588d85d21ed0eb41d0c (patch)
tree46dcd36c86e7fbc6e5df36deb463b33e9967a6f7 /Source/ThirdParty/ANGLE/util/windows/win32/Win32Pixmap.cpp
parent32761a6cee1d0dee366b885b7b9c777e67885688 (diff)
downloadWebKitGtk-tarball-master.tar.gz
Diffstat (limited to 'Source/ThirdParty/ANGLE/util/windows/win32/Win32Pixmap.cpp')
-rw-r--r--Source/ThirdParty/ANGLE/util/windows/win32/Win32Pixmap.cpp59
1 files changed, 59 insertions, 0 deletions
diff --git a/Source/ThirdParty/ANGLE/util/windows/win32/Win32Pixmap.cpp b/Source/ThirdParty/ANGLE/util/windows/win32/Win32Pixmap.cpp
new file mode 100644
index 000000000..801513163
--- /dev/null
+++ b/Source/ThirdParty/ANGLE/util/windows/win32/Win32Pixmap.cpp
@@ -0,0 +1,59 @@
+//
+// Copyright (c) 2015 The ANGLE Project Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+//
+
+// Win32Pixmap.cpp: Implementation of OSPixmap for Win32 (Windows)
+
+#include "windows/win32/Win32Pixmap.h"
+
+Win32Pixmap::Win32Pixmap() : mBitmap(nullptr)
+{
+}
+
+Win32Pixmap::~Win32Pixmap()
+{
+ if (mBitmap)
+ {
+ DeleteObject(mBitmap);
+ }
+}
+
+bool Win32Pixmap::initialize(EGLNativeDisplayType display, size_t width, size_t height, int depth)
+{
+ BITMAPINFO bitmapInfo;
+ memset(&bitmapInfo, 0, sizeof(bitmapInfo));
+
+ if (depth != 24 && depth != 32)
+ {
+ return false;
+ }
+
+ bitmapInfo.bmiHeader.biSize = sizeof(bitmapInfo);
+ bitmapInfo.bmiHeader.biWidth = static_cast<LONG>(width);
+ bitmapInfo.bmiHeader.biHeight = static_cast<LONG>(height);
+ bitmapInfo.bmiHeader.biPlanes = 1;
+ bitmapInfo.bmiHeader.biBitCount = static_cast<WORD>(depth);
+ bitmapInfo.bmiHeader.biCompression = BI_RGB;
+ bitmapInfo.bmiHeader.biSizeImage = 0;
+ bitmapInfo.bmiHeader.biXPelsPerMeter = 1;
+ bitmapInfo.bmiHeader.biYPelsPerMeter = 1;
+ bitmapInfo.bmiHeader.biClrUsed = 0;
+ bitmapInfo.bmiHeader.biClrImportant = 0;
+
+ void *bitmapPtr = nullptr;
+ mBitmap = CreateDIBSection(display, &bitmapInfo, DIB_RGB_COLORS, &bitmapPtr, nullptr, 0);
+
+ return mBitmap != nullptr;
+}
+
+EGLNativePixmapType Win32Pixmap::getNativePixmap() const
+{
+ return mBitmap;
+}
+
+OSPixmap *CreateOSPixmap()
+{
+ return new Win32Pixmap();
+}