1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #ifndef UI_GFX_GDI_UTIL_H_
6 #define UI_GFX_GDI_UTIL_H_
11 #include "ui/base/ui_export.h"
12 #include "ui/gfx/rect.h"
13 #include "ui/gfx/path.h"
17 // Creates a BITMAPINFOHEADER structure given the bitmap's size.
18 UI_EXPORT
void CreateBitmapHeader(int width
, int height
, BITMAPINFOHEADER
* hdr
);
20 // Creates a BITMAPINFOHEADER structure given the bitmap's size and
21 // color depth in bits per pixel.
22 void CreateBitmapHeaderWithColorDepth(int width
, int height
, int color_depth
,
23 BITMAPINFOHEADER
* hdr
);
25 // Creates a BITMAPV4HEADER structure given the bitmap's size. You probably
26 // only need to use BMP V4 if you need transparency (alpha channel). This
27 // function sets the AlphaMask to 0xff000000.
28 UI_EXPORT
void CreateBitmapV4Header(int width
, int height
, BITMAPV4HEADER
* hdr
);
30 // Creates a monochrome bitmap header.
31 void CreateMonochromeBitmapHeader(int width
, int height
, BITMAPINFOHEADER
* hdr
);
33 // Modify the given hrgn by subtracting the given rectangles.
34 UI_EXPORT
void SubtractRectanglesFromRegion(
36 const std::vector
<gfx::Rect
>& cutouts
);
38 UI_EXPORT HRGN
ConvertPathToHRGN(const gfx::Path
& path
);
40 // Calculate scale to fit an entire page on DC.
41 UI_EXPORT
double CalculatePageScale(HDC dc
, int page_width
, int page_height
);
43 // Apply scaling to the DC.
44 UI_EXPORT
bool ScaleDC(HDC dc
, double scale_factor
);
46 UI_EXPORT
void StretchDIBits(HDC hdc
,
47 int dest_x
, int dest_y
, int dest_w
, int dest_h
,
48 int src_x
, int src_y
, int src_w
, int src_h
,
49 void* pixels
, const BITMAPINFO
* bitmap_info
);
53 #endif // UI_GFX_GDI_UTIL_H_