Foxit PDF SDK

Public 类型 | Public 成员函数 | 所有成员列表
foxit::common::Bitmap类 参考
类 foxit::common::Bitmap 继承关系图:

## Public 类型
enum | DIBFormat { e_DIBInvalid = 0, e_DIB1bpp = 0x001, e_DIBRgb = 0x018, e_DIBRgb32 = 0x020, e_DIBArgb = 0x220, e_DIBCmyk = 0x420, e_DIB8bppMask = 0x108, e_DIB8bpp = 0x008, e_DIB8bppGray = 0x1008, e_DIBAbgr = 0x222, e_DIBRgb565 = 0x565 }
| DIB 格式的枚举。 更多...
enum | InterpolationFlag { e_Downsample = 0x01, e_Quadratic = 0x02, e_Bicubic = 0x04 }
| 位图插值标志的枚举。 更多...

## Public 成员函数
| Bitmap ()
| 构造函数，作为空位图对象。
| Bitmap (const Bitmap &other)
| 使用另一个位图对象的构造函数。 更多...
| Bitmap (int width, int height, DIBFormat format, uint8 *buffer=0, int pitch=0)
| 带参数的构造函数。 更多...
| ~Bitmap ()
| 析构函数。
RectI | CalculateBBoxByColor (ARGB backgroud_color)
| 根据给定的背景色计算边界框。 更多...
Bitmap | Clone (const RectI *clip_rect=0) const
| 克隆当前位图，使用指定的裁剪矩形。 更多...
Bitmap & | ConvertFormat (DIBFormat format, void *icc_transform=0)
| 将位图转换为另一种指定的DIB格式。 更多...
Bitmap | ConvertToMono ()
| 将位图转换为1位单色格式。 更多...
RectI | DetectBBoxByColorDiffer (int detection_size, int color_differ=64)
| 根据内容与边距之间的给定颜色差异检测内容的边界框。 更多...
void | FillRect (ARGB color, const RectI *rect=0)
| 用指定颜色填充当前位图。 更多...
Bitmap | Flip (bool is_flip_horz, bool is_flip_vert)
| 翻转位图。 更多...
int | GetBpp () const
| 获取位图每像素位数。 更多...
const uint8 * | GetBuffer () const
| 获取位图缓冲区。 更多...
DIBFormat | GetFormat () const
| 获取位图格式。 更多...
int | GetHeight () const
| 获取位图高度。 更多...
Bitmap | GetMask (const RectI *clip_rect=0)
| 如果位图有遮罩则获取该遮罩。 更多...
int | GetPitch () const
| 获取位图间距。 更多...
int | GetWidth () const
| 获取位图宽度。 更多...
bool | IsEmpty () const
| 检查当前对象是否为空。 更多...
bool | operator!= (const Bitmap &other) const
| 不相等操作符。 更多...
Bitmap & | operator= (const Bitmap &other)
| 赋值操作符。 更多...
bool | operator== (const Bitmap &other) const
| 相等操作符。 更多...
Bitmap | StretchTo (int dest_width, int dest_height, InterpolationFlag flag, const RectI *clip_rect=0)
| 按不同大小拉伸。 更多...
Bitmap | SwapXY (bool is_flip_horz, bool is_flip_vert, const RectI *clip_rect=0)
| 交换位图的X、Y坐标。交换后，图像还可以同时翻转。 更多...
Bitmap | TransformTo (const Matrix &matrix, InterpolationFlag flag, int &out_left, int &out_top, const RectI *clip_rect=0)
| 将当前位图（作为源位图）转换到目标位图。 更多...
Public 成员函数 继承自 foxit::Base
FS_HANDLE | Handle () const
| 获取当前对象的句柄。 更多...

## 详细描述

位图是Foxit PDF SDK中最重要的数据结构之一。它通常用于渲染。 此类可以构造一个新的位图对象（非从其他对象检索）并提供方法来 获取信息或操作位图。

## 成员枚举类型说明

## ◆ DIBFormat

enum foxit::common::Bitmap::DIBFormat

DIB 格式的枚举。

此枚举的值应单独使用。

枚举值
e_DIBInvalid | 无效的 DIB 格式。
e_DIB1bpp | DIB 格式：1bpp 格式，双色 RGB 位图。不支持位图之间的格式转换。
e_DIBRgb | DIB 格式：24bpp 格式，位顺序为"蓝、绿、红"。蓝色在最低位。
e_DIBRgb32 | DIB 格式：32bpp 格式，位顺序为"蓝、绿、红、未使用"。蓝色在最低位。
e_DIBArgb | DIB 格式：32bpp 格式，位顺序为"蓝、绿、红、Alpha"。蓝色在最低位。
e_DIBCmyk | DIB 格式：32bpp CMYK 格式，位顺序为"青、品红、黄、黑"。青色在最低位。
e_DIB8bppMask | DIB格式：8bpp Alpha遮罩。
e_DIB8bpp | DIB格式：8bpp格式，256色RGB位图。
e_DIB8bppGray | DIB格式：8bpp格式，256色灰度位图。
e_DIBAbgr | DIB格式：32bpp格式，位顺序为"红、绿、蓝、Alpha"。红色在最低位。
e_DIBRgb565 | 16bpp格式，位顺序：红色5位，绿色6位，蓝色5位。红色在最低位。

## ◆ InterpolationFlag

enum foxit::common::Bitmap::InterpolationFlag

位图插值标志的枚举。

此枚举的值可以单独使用或组合使用。

枚举值
e_Downsample | 如果设置，对于缩小或旋转不进行半色调处理。
e_Quadratic | 如果设置，对于拉伸或变换进行插值处理。
e_Bicubic | 如果设置，对于拉伸或变换进行双三次插值处理。

## 构造及析构函数说明

## ◆ Bitmap() [1/2]

foxit::common::Bitmap::Bitmap | ( | int | width,
|  | int | height,
|  | DIBFormat | format,
|  | uint8 * | buffer = `0`,
|  | int | pitch = `0`
| ) |  |

带参数的构造函数。

如果参数 buffer 不是 NULL，它应该由应用程序初始化； 如果参数 buffer 是 NULL，Foxit PDF SDK将在内部分配并 初始化像素缓冲区。
建议应用程序使用与Foxit PDF SDK内部使用的相同颜色来 初始化位图的像素缓冲区：

- 对于没有Alpha通道的位图，用0xFFFFFFFF初始化像素缓冲区。
- 对于有Alpha通道的位图，用0x00000000初始化像素缓冲区。

此外，加载图像有大小限制。图像大小应满足条件： width * height * (bits per pixel / 8) < 0x40000000（表示1 GB）。 图像大小是指图像的实际数据大小，而不是图像文件的大小。

参数

  [in] | width | 位图宽度，以像素为单位。应大于0。
  [in] | height | 位图高度，以像素为单位。应大于0。
  [in] | format | 位图格式类型。请参考从 Bitmap::e_DIBRgb 开始的值， 应为这些值之一，除了 Bitmap::e_DIBInvalid。
  [in] | buffer | 指定位图数据的缓冲区。 如果不是 NULL，此函数将使用参数 buffer 来初始化位图。在这种情况下，请不要在参数 bitmap 的生命周期结束之前释放参数 buffer。 如果是 NULL，将在内部创建新的位图缓冲区。 默认值：NULL。
  [in] | pitch | 每个扫描行的字节数。仅当参数 buffer 不是 NULL 时有用。如果此值为0，则假定4字节对齐。默认值：0。

## ◆ Bitmap() [2/2]

foxit::common::Bitmap::Bitmap | ( | const Bitmap & | other | ) |

使用另一个位图对象的构造函数。

参数

  [in] | other | 另一个位图对象。

## 成员函数说明

## ◆ CalculateBBoxByColor()

RectI foxit::common::Bitmap::CalculateBBoxByColor | ( | ARGB | backgroud_color | ) |

根据给定的背景色计算边界框。

此函数支持以下格式：
Bitmap::e_DIB8bppMask、Bitmap::e_DIB8bpp、 Bitmap::e_DIBRgb、Bitmap::e_DIBRgb32、 Bitmap::e_DIBArgb。

参数

  [in] | backgroud_color | 有效的背景色。格式：0xAARRGGBB。

返回
  内容边界框的矩形。

## ◆ Clone()

Bitmap foxit::common::Bitmap::Clone | ( | const RectI * | clip_rect = `0` | ) | const

克隆当前位图，使用指定的裁剪矩形。

参数

  [in] | clip_rect | 当前位图中的裁剪区域，用于指定要克隆的区域。 对于位图格式 Bitmap::e_DIBRgb565， 目前只支持克隆整个位图，所以此参数应始终为 NULL。 对于其他格式，此参数可以是 NULL 或有效值。如果是 NULL， 表示克隆整个位图。如果不是 NULL，它指定 要克隆的位图中的裁剪区域，克隆的位图将 具有与裁剪区域相同的大小。 默认值：NULL。

返回
  作为克隆结果的新位图。

## ◆ ConvertFormat()

Bitmap& foxit::common::Bitmap::ConvertFormat | ( | DIBFormat | format,
|  | void * | icc_transform = `0`
| ) |  |

将位图转换为另一种指定的DIB格式。

参数

  [in] | format | 新的位图格式类型。应为以下值之一： Bitmap::e_DIB8bppMask、Bitmap::e_DIB8bpp、 Bitmap::e_DIBRgb、Bitmap::e_DIBRgb32、 Bitmap::e_DIBArgb、Bitmap::e_DIBRgb565。
  [in] | icc_transform | 从源格式到目标格式的颜色映射上下文。 可以是 NULL，表示不使用颜色映射。 默认值：NULL。

返回
  转换后的位图。

## ◆ ConvertToMono()

Bitmap foxit::common::Bitmap::ConvertToMono | ( |  | ) |

将位图转换为1位单色格式。

生成的单色位图使用1位像素深度格式。

返回
  作为单色结果的新位图。

注解
  保存为jpeg时无法保留1位单色格式。

## ◆ DetectBBoxByColorDiffer()

RectI foxit::common::Bitmap::DetectBBoxByColorDiffer | ( | int | detection_size,
|  | int | color_differ = `64`
| ) |  |

根据内容与边距之间的给定颜色差异检测内容的边界框。

此函数支持以下格式：
Bitmap::e_DIB8bppMask、Bitmap::e_DIB8bpp、 Bitmap::e_DIBRgb、Bitmap::e_DIBRgb32、 Bitmap::e_DIBArgb。

参数

  [in] | detection_size | 用于分析背景的检测大小。
  [in] | color_differ | 用于检测边距的颜色差异。值应在0到255之间， 建议值为64。默认值：64。

返回
  内容边界框的矩形。

## ◆ FillRect()

void foxit::common::Bitmap::FillRect | ( | ARGB | color,
|  | const RectI * | rect = `0`
| ) |  |

用指定颜色填充当前位图。

对于 Bitmap::e_DIBCmyk 格式的位图，用户可以填充CMYK颜色值，参数 rect 一定要传 NULL。

参数

  [in] | color | 用于填充位图的颜色值。格式：0xAARRGGBB
  [in] | rect | 表示位图中区域的矩形，用于指定颜色填充位置。 可以是 NULL，表示填充整个位图。默认值：NULL。

返回
  无。

## ◆ Flip()

Bitmap foxit::common::Bitmap::Flip | ( | bool | is_flip_horz,
|  | bool | is_flip_vert
| ) |  |

翻转位图。

此函数支持以下格式：
Bitmap::e_DIB8bppMask、Bitmap::e_DIB8bpp、 Bitmap::e_DIBRgb、Bitmap::e_DIBRgb32、 Bitmap::e_DIBArgb。

参数

  [in] | is_flip_horz | 布尔值，指示是否在水平方向翻转位图： true 表示位图将在水平方向翻转， false 表示不翻转。
  [in] | is_flip_vert | 布尔值，指示是否在垂直方向翻转位图： true 表示位图将在垂直方向翻转， false 表示不翻转。

返回
  翻转后的新位图。

## ◆ GetBpp()

int foxit::common::Bitmap::GetBpp | ( |  | ) | const

获取位图每像素位数。

返回
  位图每像素位数值。

## ◆ GetBuffer()

const uint8* foxit::common::Bitmap::GetBuffer | ( |  | ) | const

获取位图缓冲区。

位图数据以扫描行组织，从上到下。

返回
  位图缓冲区。

## ◆ GetFormat()

DIBFormat foxit::common::Bitmap::GetFormat | ( |  | ) | const

获取位图格式。

返回
  格式值。请参考从 Bitmap::e_DIBInvalid 开始的值， 返回值将是这些值之一。

## ◆ GetHeight()

int foxit::common::Bitmap::GetHeight | ( |  | ) | const

获取位图高度。

返回
  位图高度。

## ◆ GetMask()

Bitmap foxit::common::Bitmap::GetMask | ( | const RectI * | clip_rect = `0` | ) |

如果位图有遮罩则获取该遮罩。

参数

  [in] | clip_rect | 当前位图（作为源位图）的裁剪区域。 可以为 NULL。默认值：NULL。

返回
  作为遮罩位图的新位图。如果返回的位图对象的函数 Bitmap::IsEmpty 返回值为 true，则表示当前位图没有遮罩。

## ◆ GetPitch()

int foxit::common::Bitmap::GetPitch | ( |  | ) | const

获取位图间距。

返回
  位图间距。

## ◆ GetWidth()

int foxit::common::Bitmap::GetWidth | ( |  | ) | const

获取位图宽度。

返回
  位图宽度。

## ◆ IsEmpty()

bool foxit::common::Bitmap::IsEmpty | ( |  | ) | const

检查当前对象是否为空。

当前对象为空时，表示当前对象无效。

返回
  true 表示当前对象为空，false 表示非空。

## ◆ operator!=()

bool foxit::common::Bitmap::operator!= | ( | const Bitmap & | other | ) | const

不相等操作符。

参数

  [in] | other | 另一个位图对象。此函数将检查当前对象是否与该对象不相等。

返回
  true 表示不相等，false 表示相等。

## ◆ operator=()

Bitmap& foxit::common::Bitmap::operator= | ( | const Bitmap & | other | ) |

赋值操作符。

参数

  [in] | other | 另一个位图对象，其值将被赋给当前对象。

返回
  对当前对象自身的引用。

## ◆ operator==()

bool foxit::common::Bitmap::operator== | ( | const Bitmap & | other | ) | const

相等操作符。

参数

  [in] | other | 另一个位图对象。此函数将检查当前对象是否与该对象相等。

返回
  true 表示相等，false 表示不相等。

## ◆ StretchTo()

Bitmap foxit::common::Bitmap::StretchTo | ( | int | dest_width,
|  | int | dest_height,
|  | InterpolationFlag | flag,
|  | const RectI * | clip_rect = `0`
| ) |  |

按不同大小拉伸。

如果参数 dest_width 或参数 dest_height 为负值，位图将被翻转。 如果拉伸在下采样模式下进行，速度会比非下采样模式快得多， 特别是将大位图拉伸为小位图时。 可选地，可以指定结果位图坐标中的裁剪区域来限制结果位图的大小。 此函数不支持以下格式：
Bitmap::e_DIBCmyk。

参数

  [in] | dest_width | 目标位图的宽度。
  [in] | dest_height | 目标位图的高度。
  [in] | flag | 拉伸标志，应为 Bitmap::e_Downsample 或 Bitmap::e_Quadratic 值。
  [in] | clip_rect | 目标位图的裁剪区域。可以为 NULL。 默认值：NULL。

返回
  拉伸后的新位图。

## ◆ SwapXY()

Bitmap foxit::common::Bitmap::SwapXY | ( | bool | is_flip_horz,
|  | bool | is_flip_vert,
|  | const RectI * | clip_rect = `0`
| ) |  |

交换位图的X、Y坐标。交换后，图像还可以同时翻转。

此函数支持以下格式：
Bitmap::e_DIB8bppMask、Bitmap::e_DIB8bpp、 Bitmap::e_DIBRgb、Bitmap::e_DIBRgb32、 Bitmap::e_DIBArgb。 可选地，可以指定一个裁剪区域（在目标位图坐标系中）来限制结果的大小。
假设原始图像有以下4个像素：

             +---+---+
             | 1 | 2 |
             +---+---+
             | 3 | 4 |
             +---+---+

那么，根据参数 is_flip_horz 和 is_flip_vert，结果如下： 如果参数 is_flip_horz = false，参数 is_flip_vert = false：

             +---+---+
             | 1 | 3 |
             +---+---+
             | 2 | 4 |
             +---+---+

如果参数 is_flip_horz = true，参数 is_flip_vert = false：

             +---+---+
             | 3 | 1 |
             +---+---+
             | 4 | 2 |
             +---+---+

如果参数 is_flip_horz = false，参数 is_flip_vert = true：

             +---+---+
             | 2 | 4 |
             +---+---+
             | 1 | 3 |
             +---+---+

如果参数 is_flip_horz = true，参数 is_flip_vert = true：

             +---+---+
             | 4 | 2 |
             +---+---+
             | 3 | 1 |
             +---+---+

参数

  [in] | is_flip_horz | 布尔值，指示是否在水平方向翻转位图： true 表示位图将在水平方向翻转， false 表示不翻转。
  [in] | is_flip_vert | 布尔值，指示是否在垂直方向翻转位图： true 表示位图将在垂直方向翻转， false 表示不翻转。
  [in] | clip_rect | 目标位图的裁剪区域。可以为 NULL， 表示整个位图。默认值：NULL。

返回
  交换后的新位图。

## ◆ TransformTo()

Bitmap foxit::common::Bitmap::TransformTo | ( | const Matrix & | matrix,
|  | InterpolationFlag | flag,
|  | int & | out_left,
|  | int & | out_top,
|  | const RectI * | clip_rect = `0`
| ) |  |

将当前位图（作为源位图）转换到目标位图。

返回的位图尺寸始终与矩阵的尺寸匹配。 如果转换在下采样模式下进行，速度会比非下采样模式快得多， 特别是将大图像转换为小图像时。 可选地，可以指定结果位图坐标中的裁剪区域来限制结果位图的大小。 结果位图左上角的位置（在目标坐标系中）也会一并返回。 此函数不支持以下格式：
Bitmap::e_DIBCmyk。

参数

  [in] | matrix | 变换矩阵。
  [in] | flag | 变换标志。应为 Bitmap::e_Downsample 或 Bitmap::e_Quadratic 值。
  [out] | out_left | 输出参数，接收结果位图左上角在目标坐标系中的x坐标。
  [out] | out_top | 输出参数，接收结果位图左上角在目标坐标系中的y坐标。
  [in] | clip_rect | 目标位图的裁剪区域。可以为 NULL。 默认值：NULL。

返回
  转换后的新位图。