OSVR-Core
dibsize.h
Go to the documentation of this file.
1 
11 // Copyright 2015 Sensics, Inc.
12 //
13 // Licensed under the Apache License, Version 2.0 (the "License");
14 // you may not use this file except in compliance with the License.
15 // You may obtain a copy of the License at
16 //
17 // http://www.apache.org/licenses/LICENSE-2.0
18 //
19 // Unless required by applicable law or agreed to in writing, software
20 // distributed under the License is distributed on an "AS IS" BASIS,
21 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
22 // See the License for the specific language governing permissions and
23 // limitations under the License.
24 
25 #ifndef INCLUDED_dibsize_h_GUID_0D57E05D_AC88_44B5_8EB6_0FBD416AFFDA
26 #define INCLUDED_dibsize_h_GUID_0D57E05D_AC88_44B5_8EB6_0FBD416AFFDA
27 
28 // Internal Includes
29 // - none
30 
31 // Library/third-party includes
32 // - none
33 
34 // Standard includes
35 #include <cmath>
36 
37 #define WIN32_LEAN_AND_MEAN
38 #include <windows.h>
39 
41 inline DWORD dibsize(BITMAPINFOHEADER const &bi) {
42  // cf:
43  // https://msdn.microsoft.com/en-us/library/windows/desktop/dd318229(v=vs.85).aspx
44  auto stride = ((((bi.biWidth * bi.biBitCount) + 31) & ~31) >> 3);
45  return stride * std::abs(bi.biHeight);
46 }
47 
48 #endif // INCLUDED_dibsize_h_GUID_0D57E05D_AC88_44B5_8EB6_0FBD416AFFDA
DWORD dibsize(BITMAPINFOHEADER const &bi)
Computes bytes required for an UNCOMPRESSED RGB DIB.
Definition: dibsize.h:41