• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright 2015 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 // Win32Pixmap.cpp: Implementation of OSPixmap for Win32 (Windows)
8 
9 #include "util/windows/win32/Win32Pixmap.h"
10 
Win32Pixmap()11 Win32Pixmap::Win32Pixmap() : mBitmap(nullptr) {}
12 
~Win32Pixmap()13 Win32Pixmap::~Win32Pixmap()
14 {
15     if (mBitmap)
16     {
17         DeleteObject(mBitmap);
18     }
19 }
20 
initialize(EGLNativeDisplayType display,size_t width,size_t height,int depth)21 bool Win32Pixmap::initialize(EGLNativeDisplayType display, size_t width, size_t height, int depth)
22 {
23     BITMAPINFO bitmapInfo;
24     memset(&bitmapInfo, 0, sizeof(bitmapInfo));
25 
26     if (depth != 24 && depth != 32)
27     {
28         return false;
29     }
30 
31     bitmapInfo.bmiHeader.biSize          = sizeof(bitmapInfo);
32     bitmapInfo.bmiHeader.biWidth         = static_cast<LONG>(width);
33     bitmapInfo.bmiHeader.biHeight        = static_cast<LONG>(height);
34     bitmapInfo.bmiHeader.biPlanes        = 1;
35     bitmapInfo.bmiHeader.biBitCount      = static_cast<WORD>(depth);
36     bitmapInfo.bmiHeader.biCompression   = BI_RGB;
37     bitmapInfo.bmiHeader.biSizeImage     = 0;
38     bitmapInfo.bmiHeader.biXPelsPerMeter = 1;
39     bitmapInfo.bmiHeader.biYPelsPerMeter = 1;
40     bitmapInfo.bmiHeader.biClrUsed       = 0;
41     bitmapInfo.bmiHeader.biClrImportant  = 0;
42 
43     void *bitmapPtr = nullptr;
44     mBitmap = CreateDIBSection(display, &bitmapInfo, DIB_RGB_COLORS, &bitmapPtr, nullptr, 0);
45 
46     return mBitmap != nullptr;
47 }
48 
getNativePixmap() const49 EGLNativePixmapType Win32Pixmap::getNativePixmap() const
50 {
51     return mBitmap;
52 }
53 
CreateOSPixmap()54 OSPixmap *CreateOSPixmap()
55 {
56     return new Win32Pixmap();
57 }
58