📄 bmpdata.cpp
字号:
/*++
Copyright (c) 2005 Microsoft Corporation
All rights reserved.
THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
PARTICULAR PURPOSE.
File Name:
bmpdata.cpp
Abstract:
This file supplies various look-up tables for use in converting and color matching
input bitmaps via WCS/ICM and WIC
--*/
#include "precomp.h"
#include "globals.h"
#include "bmpdata.h"
/*
Look up table between WIC pixel format enumeration and WIC pixel format GUID
*/
CONST WICPixelFormatGUID g_lutPixFrmtGuid[kWICPixelFormatMax] = {
GUID_WICPixelFormatDontCare,
GUID_WICPixelFormat1bppIndexed,
GUID_WICPixelFormat2bppIndexed,
GUID_WICPixelFormat4bppIndexed,
GUID_WICPixelFormat8bppIndexed,
GUID_WICPixelFormatBlackWhite,
GUID_WICPixelFormat2bppGray,
GUID_WICPixelFormat4bppGray,
GUID_WICPixelFormat8bppGray,
GUID_WICPixelFormat16bppBGR555,
GUID_WICPixelFormat16bppBGR565,
GUID_WICPixelFormat16bppGray,
GUID_WICPixelFormat24bppBGR,
GUID_WICPixelFormat24bppRGB,
GUID_WICPixelFormat32bppBGR,
GUID_WICPixelFormat32bppBGRA,
GUID_WICPixelFormat32bppPBGRA,
GUID_WICPixelFormat32bppGrayFloat,
GUID_WICPixelFormat48bppRGBFixedPoint,
GUID_WICPixelFormat16bppGrayFixedPoint,
GUID_WICPixelFormat32bppBGR101010,
GUID_WICPixelFormat48bppRGB,
GUID_WICPixelFormat64bppRGBA,
GUID_WICPixelFormat64bppPRGBA,
GUID_WICPixelFormat96bppRGBFixedPoint,
GUID_WICPixelFormat128bppRGBAFloat,
GUID_WICPixelFormat128bppPRGBAFloat,
GUID_WICPixelFormat128bppRGBFloat,
GUID_WICPixelFormat32bppCMYK,
GUID_WICPixelFormat64bppRGBAFixedPoint,
GUID_WICPixelFormat64bppRGBFixedPoint,
GUID_WICPixelFormat128bppRGBAFixedPoint,
GUID_WICPixelFormat128bppRGBFixedPoint,
GUID_WICPixelFormat64bppRGBAHalf,
GUID_WICPixelFormat64bppRGBHalf,
GUID_WICPixelFormat48bppRGBHalf,
GUID_WICPixelFormat32bppRGBE,
GUID_WICPixelFormat16bppGrayHalf,
GUID_WICPixelFormat32bppGrayFixedPoint,
GUID_WICPixelFormat64bppCMYK,
GUID_WICPixelFormat24bpp3Channels,
GUID_WICPixelFormat32bpp4Channels,
GUID_WICPixelFormat40bpp5Channels,
GUID_WICPixelFormat48bpp6Channels,
GUID_WICPixelFormat56bpp7Channels,
GUID_WICPixelFormat64bpp8Channels,
GUID_WICPixelFormat48bpp3Channels,
GUID_WICPixelFormat64bpp4Channels,
GUID_WICPixelFormat80bpp5Channels,
GUID_WICPixelFormat96bpp6Channels,
GUID_WICPixelFormat112bpp7Channels,
GUID_WICPixelFormat128bpp8Channels,
GUID_WICPixelFormat40bppCMYKAlpha,
GUID_WICPixelFormat80bppCMYKAlpha,
GUID_WICPixelFormat32bpp3ChannelsAlpha,
GUID_WICPixelFormat40bpp4ChannelsAlpha,
GUID_WICPixelFormat48bpp5ChannelsAlpha,
GUID_WICPixelFormat56bpp6ChannelsAlpha,
GUID_WICPixelFormat64bpp7ChannelsAlpha,
GUID_WICPixelFormat72bpp8ChannelsAlpha,
GUID_WICPixelFormat64bpp3ChannelsAlpha,
GUID_WICPixelFormat80bpp4ChannelsAlpha,
GUID_WICPixelFormat96bpp5ChannelsAlpha,
GUID_WICPixelFormat112bpp6ChannelsAlpha,
GUID_WICPixelFormat128bpp7ChannelsAlpha,
GUID_WICPixelFormat144bpp8ChannelsAlpha
};
/*
Look-up table between WICPixelFormat enumeration and conversion information
The aim of this table is to assist us in transforming the input WCS data into a format acceptable
to WCS/ICM TranslateBitmapBits call. The sort of problems this aims to resolve are:
1. The lack of S7DOT24FIXED format support in WCS/ICM.
2. The lack of half format support in WCS/ICM.
3. The lack of support for > 8bpc in WCS/ICM for channel counts > 4
The table is used in the following way:
1. Look-up the most appropriate WIC pixel format for color conversion by indexing into
the table using the matching WIC pixel format enumeration then using WIC to convert
to this format.
2. Identify the matching BMFORMAT enumeration to process with WCS/ICM
3. Identify where we need to process alpha data seperately and using an intermediate
transform buffer to pass to ICM/WCS where necessary
Additionally the table also provides useful look-up information for use when processing
intermediate transform buffers: channel count, alpha channel placement and color data type.
*/
CONST WICToBMFORMAT g_lutWICToBMFormat[kWICPixelFormatMax] = {
{kWICPixelFormat24bppRGB, kBM_RGBTRIPLETS, FALSE, 3, 0, COLOR_BYTE}, // kWICPixelFormatDontCare
{kWICPixelFormat24bppRGB, kBM_RGBTRIPLETS, FALSE, 3, 0, COLOR_BYTE}, // kWICPixelFormat1bppIndexed
{kWICPixelFormat24bppRGB, kBM_RGBTRIPLETS, FALSE, 3, 0, COLOR_BYTE}, // kWICPixelFormat2bppIndexed
{kWICPixelFormat24bppRGB, kBM_RGBTRIPLETS, FALSE, 3, 0, COLOR_BYTE}, // kWICPixelFormat4bppIndexed
{kWICPixelFormat24bppRGB, kBM_RGBTRIPLETS, FALSE, 3, 0, COLOR_BYTE}, // kWICPixelFormat8bppIndexed
{kWICPixelFormat8bppGray, kBM_GRAY, FALSE, 1, 0, COLOR_BYTE}, // kWICPixelFormatBlackWhite
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -