做一个 UEFI 下的 EasyX 图形库(13)

继续增加 EasyX的功能,这次增加了如下功能:

/**
  旋转图像。

  @param[out]  DstImg   目标图像(使用前须清零)。
  @param[in]   SrcImg   源图像。
  @param[in]   Angle    旋转角度(0-359,单位度,顺时针为正)。

  @retval EFI_SUCCESS            旋转成功。
  @retval EFI_INVALID_PARAMETER  参数非法。
  @retval EFI_OUT_OF_RESOURCES   分配失败。
**/
EFI_STATUS
EFIAPI
rotateimage (
  OUT IMAGE        *DstImg,
  IN  CONST IMAGE  *SrcImg,
  IN  INT32        Angle
  );

/**
  翻转图像(水平或竖直)。

  @param[out]  DstImg    目标图像(使用前须清零)。
  @param[in]   SrcImg    源图像。
  @param[in]   Direction 翻转方向(0=水平翻转,1=竖直翻转)。

  @retval EFI_SUCCESS            翻转成功。
  @retval EFI_INVALID_PARAMETER  参数非法。
  @retval EFI_OUT_OF_RESOURCES   分配失败。
**/
EFI_STATUS
EFIAPI
flipimage (
  OUT IMAGE        *DstImg,
  IN  CONST IMAGE  *SrcImg,
  IN  INT32        Direction
  );

/**
  在指定角度绘制图像(绕图像中心旋转)。

  @param[in]  X      图像中心的 X 坐标。
  @param[in]  Y      图像中心的 Y 坐标。
  @param[in]  Img    要绘制的图像。
  @param[in]  Angle  旋转角度(0-359,单位度)。
**/
VOID
EFIAPI
putimageatangle (
  IN INT32        X,
  IN INT32        Y,
  IN CONST IMAGE  *Img,
  IN INT32        Angle
  );

/**
  设置渐变填充参数(BS_GRADIENT 风格)。

  @param[in]  Color1  渐变起始颜色。
  @param[in]  Color2  渐变结束颜色。
  @param[in]  Type    渐变类型(0=水平,1=竖直,2=从中心向外圆形)。
**/
VOID
EFIAPI
setgradientfill (
  IN COLORREF  Color1,
  IN COLORREF  Color2,
  IN INT32     Type
  );

/**
  获取当前 getpixel 的值。

  @param[in]  X  像素 X 坐标。
  @param[in]  Y  像素 Y 坐标。

  @return 像素颜色值(COLORREF 格式)。
**/

运行结果:

完整的代码和编译后的 EFI 在下面下载:

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注