Home | History | Annotate | Download | only in gfx
      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.
      4 
      5 #ifndef UI_GFX_GDI_UTIL_H_
      6 #define UI_GFX_GDI_UTIL_H_
      7 
      8 #include <vector>
      9 #include <windows.h>
     10 
     11 #include "ui/base/ui_export.h"
     12 #include "ui/gfx/rect.h"
     13 #include "ui/gfx/path.h"
     14 
     15 namespace gfx {
     16 
     17 // Creates a BITMAPINFOHEADER structure given the bitmap's size.
     18 UI_EXPORT void CreateBitmapHeader(int width, int height, BITMAPINFOHEADER* hdr);
     19 
     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);
     24 
     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);
     29 
     30 // Creates a monochrome bitmap header.
     31 void CreateMonochromeBitmapHeader(int width, int height, BITMAPINFOHEADER* hdr);
     32 
     33 // Modify the given hrgn by subtracting the given rectangles.
     34 UI_EXPORT void SubtractRectanglesFromRegion(
     35     HRGN hrgn,
     36     const std::vector<gfx::Rect>& cutouts);
     37 
     38 UI_EXPORT HRGN ConvertPathToHRGN(const gfx::Path& path);
     39 
     40 // Calculate scale to fit an entire page on DC.
     41 UI_EXPORT double CalculatePageScale(HDC dc, int page_width, int page_height);
     42 
     43 // Apply scaling to the DC.
     44 UI_EXPORT bool ScaleDC(HDC dc, double scale_factor);
     45 
     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);
     50 
     51 }  // namespace gfx
     52 
     53 #endif  // UI_GFX_GDI_UTIL_H_
     54