⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bmpconv.h

📁 WDK 自带的xpsdrv filter之 color
💻 H
字号:
/*++

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:

   bmpconv.h

Abstract:

   WIC bitmap conversion class definition. This class provides a wrapper to a bitmap
   stream that uses WIC to access bitmap data and provide conversion functionality.

--*/

#pragma once

#include "bmpdata.h"

class CBmpConverter
{
public:
    CBmpConverter();

    CBmpConverter(
        __in CONST EWICPixelFormat& ePixFormat,
        __in CONST UINT&            cWidth,
        __in CONST UINT&            cHeight,
        __in CONST DOUBLE&          dpiX,
        __in CONST DOUBLE&          dpiY
        );

    CBmpConverter(
        __in IStream* pStream
        );

    CBmpConverter(
        __in CONST CBmpConverter& converter
        );

    virtual ~CBmpConverter();

    HRESULT
    Initialize(
        __in CONST EWICPixelFormat& ePixFormat,
        __in CONST UINT&            cWidth,
        __in CONST UINT&            cHeight,
        __in CONST DOUBLE&          dpiX,
        __in CONST DOUBLE&          dpiY
        );

    HRESULT
    Initialize(
        __in IStream* pStream
        );

    HRESULT
    Initialize(
        __in IWICBitmapSource* pSource
        );

    HRESULT
    Write(
        __in    REFGUID  guidContainerFormat,
        __inout IStream* pStream
        );

    HRESULT
    Convert(
        __in  EWICPixelFormat ePixFormat,
        __out BOOL*           pbCanConvert
        );

    HRESULT
    LockSurface(
        __in  WICRect*    prcLock,
        __in  CONST BOOL& bReadOnly,
        __out UINT*       pcbStride,
        __out UINT*       pcWidth,
        __out UINT*       pcHeight,
        __out UINT*       pcbData,
        __out PBYTE*      ppbData
        );

    HRESULT
    UnlockSurface(
        VOID
        );

    HRESULT
    GetColorContext(
        __deref_out IWICColorContext** ppColorContext
        );

    BOOL
    HasAlphaChannel(
        VOID
        ) CONST;

    BOOL
    HasColorContext(
        VOID
        ) CONST;

    BOOL
    HasColorProfile(
        VOID
        ) CONST;

    EWICPixelFormat
    GetPixelFormat(
        VOID
        );

    HRESULT
    GetSize(
        __out UINT* pcWidth,
        __out UINT* pcHeight
        );

    HRESULT
    GetResolution(
        __out DOUBLE* pDpiX,
        __out DOUBLE* pDpiY
        );

    HRESULT
    SetProfile(
        __in_z LPWSTR szProfile
        );

    CBmpConverter&
    operator=(
        __in CONST CBmpConverter& converter
        );

private:
    HRESULT
    CreateImagingFactory(
        VOID
        );

    HRESULT
    PixelFormatFromGUID(
        __in  REFGUID          pixelFormat,
        __out EWICPixelFormat* pPixFormat
        );

protected:
    CComPtr<IWICImagingFactory>    m_pImagingFactory;

    CComPtr<IWICBitmap>            m_pBitmap;

    CComPtr<IWICColorContext>      m_pColorContext;

    CComPtr<IWICBitmapLock>        m_pCurrentLock;

    EWICPixelFormat                m_ePixelFormat;
};


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -