124 lines
4.0 KiB
C++
124 lines
4.0 KiB
C++
|
|
/*----------------------------------------------------------------------------------------------------
|
|||
|
|
#
|
|||
|
|
# Copyright (c) 2022 Yuankang Liang(XerolySkinner)
|
|||
|
|
#
|
|||
|
|
# <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD>ṩ,<2C><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>ʾ
|
|||
|
|
# <09><><EFBFBD>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD>߶<EFBFBD><DFB6><EFBFBD><EFBFBD>е<EFBFBD><D0B5>κ<EFBFBD><CEBA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>⳥<EFBFBD><E2B3A5><EFBFBD><EFBFBD>
|
|||
|
|
#
|
|||
|
|
# ʹ<>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
|
# 1. <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Դ,<2C>㲻<EFBFBD><E3B2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ԭʼ<D4AD><CABC><EFBFBD><EFBFBD>.
|
|||
|
|
# 2. <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>κ<EFBFBD>Ŀ<EFBFBD><C4BF>,ǰ<><C7B0><EFBFBD>ǰ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>и<EFBFBD><D0B8><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
# <09><><EFBFBD>Ұ<EFBFBD>Ȩ<EFBFBD><C8A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͬʱ<CDAC><CAB1><EFBFBD><EFBFBD>.
|
|||
|
|
# 3. <09><><EFBFBD><EFBFBD>ʹ<EFBFBD><CAB9>,<2C><><EFBFBD><EFBFBD>,<2C><EFBFBD>,<2C>ַ<EFBFBD>,<2C><><EFBFBD><EFBFBD><EFBFBD>۱<EFBFBD><DBB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
# 4. <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>Ʒ<EFBFBD><C6B7>ʹ<EFBFBD><CAB9>,<2C><>Ʒ<EFBFBD>ĵ<EFBFBD><C4B5>е<EFBFBD><D0B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͵ĵ<CDB5><C4B5><EFBFBD><EFBFBD>DZ<EFBFBD><C7B1><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
# 5. <09><>֪ͨ<CDA8><D6AA><EFBFBD>ô<EFBFBD><C3B4>κ<EFBFBD><CEBA><EFBFBD>Դɾ<D4B4><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
|
|||
|
|
#
|
|||
|
|
# Yuankang Liang(XerolySkinner)
|
|||
|
|
# E-mail:zabbcccbbaz@163.com
|
|||
|
|
# QQ:2715099320
|
|||
|
|
# Mobile Phone:13005636215
|
|||
|
|
#
|
|||
|
|
# All rights reserved.
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* @file bsp_BMP.cpp
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>BMPͼƬ
|
|||
|
|
* @mainpage <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD>Ϣ
|
|||
|
|
* @author Yuankang Liang(XerolySkinner)
|
|||
|
|
* @email zabbcccbbaz@163.com
|
|||
|
|
* @version V1.0.0
|
|||
|
|
* @date 2022-11-24 20:22
|
|||
|
|
*/
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
//----------------------------------------------------------------------------------------------------
|
|||
|
|
// ͷ<>ļ<EFBFBD>
|
|||
|
|
#include "bsp_BMP.h"
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
//----------------------------------------------------------------------------------------------------
|
|||
|
|
// <09>ຯ<EFBFBD><E0BAAF>
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @param x x<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @param y y<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
void bsp_BMP::pels(u32 x, u32 y) {
|
|||
|
|
bsp_BMP::BITMAPINFO.bmiHeader.biXPelsPerMeter = x;
|
|||
|
|
bsp_BMP::BITMAPINFO.bmiHeader.biYPelsPerMeter = y;}
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿռ<EFBFBD>
|
|||
|
|
* @return <EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|||
|
|
*/
|
|||
|
|
u32 bsp_BMP::giveData(void) {
|
|||
|
|
free(dat);
|
|||
|
|
dat = (u8*)malloc(Size);
|
|||
|
|
return (u32)dat;}
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD>ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݿռ<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
void bsp_BMP::delData(void) {
|
|||
|
|
free(dat);}
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD>ɫ<EFBFBD><EFBFBD>
|
|||
|
|
* @param R <EFBFBD><EFBFBD>ɫ
|
|||
|
|
* @param G <EFBFBD><EFBFBD>ɫ
|
|||
|
|
* @param B <EFBFBD><EFBFBD>ɫ
|
|||
|
|
* @param i <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
void bsp_BMP::ColorsSet(u8 R, u8 G, u8 B,u32 i) {
|
|||
|
|
BITMAPINFO.bmiColors[i].rgbBlue = B;
|
|||
|
|
BITMAPINFO.bmiColors[i].rgbGreen = G;
|
|||
|
|
BITMAPINFO.bmiColors[i].rgbRed = R;
|
|||
|
|
BITMAPINFO.bmiColors[i].rgbReserved = 0;}
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD>С
|
|||
|
|
* @param Width ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @param Height ͼƬ<EFBFBD>߶<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
void bsp_BMP::sizeSet(u32 x, u32 y) {
|
|||
|
|
free(dat);
|
|||
|
|
Size = x * y;
|
|||
|
|
BITMAPINFO.bmiHeader.biWidth = x; // ɫ<>ʿ<EFBFBD><CABF><EFBFBD>
|
|||
|
|
BITMAPINFO.bmiHeader.biHeight = y; // ɫ<>ʸ߶<CAB8>
|
|||
|
|
BITMAPINFO.bmfHeader.bfOffBits =
|
|||
|
|
sizeof(_BITMAPINFO); // λͼ<CEBB><CDBC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
|
|||
|
|
BITMAPINFO.bmfHeader.bfSize =
|
|||
|
|
x * y +
|
|||
|
|
BITMAPINFO.bmfHeader.bfOffBits; // <09>ļ<EFBFBD><C4BC><EFBFBD>С
|
|||
|
|
}
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|
|||
|
|
//----------------------------------------------------------------------------------------------------
|
|||
|
|
// <09><><EFBFBD>캯<EFBFBD><ECBAAF>
|
|||
|
|
/**
|
|||
|
|
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>BMP<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ
|
|||
|
|
* @param Width ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* @param Height ͼƬ<EFBFBD>߶<EFBFBD>
|
|||
|
|
*/
|
|||
|
|
bsp_BMP::bsp_BMP(u32 Width, u32 Height) {
|
|||
|
|
bsp_BMP::dat = NULL;
|
|||
|
|
bsp_BMP::Size = Width * Height;
|
|||
|
|
BITMAPINFO.bmiHeader.biWidth = Width; // ɫ<>ʿ<EFBFBD><CABF><EFBFBD>
|
|||
|
|
BITMAPINFO.bmiHeader.biHeight = Height; // ɫ<>ʸ߶<CAB8>
|
|||
|
|
BITMAPINFO.bmfHeader.bfType = 0x4D42; // <09><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BITMAPINFO.bmfHeader.bfReserved1 = 0; // <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BITMAPINFO.bmfHeader.bfReserved2 = 0; // <09><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BITMAPINFO.bmiHeader.biCompression = 0; // <09><>ѹ<EFBFBD><D1B9>
|
|||
|
|
BITMAPINFO.bmiHeader.biSizeImage = 0; // <09><>ѹ<EFBFBD><D1B9><EFBFBD><EFBFBD>Ϊ0
|
|||
|
|
BITMAPINFO.bmiHeader.biPlanes = 1; // <09><>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
BITMAPINFO.bmiHeader.biClrUsed = 0; // ʹ<><CAB9>ȫ<EFBFBD><C8AB><EFBFBD><EFBFBD>ɫ
|
|||
|
|
BITMAPINFO.bmiHeader.biClrImportant = 0; // ȫ<><C8AB><EFBFBD><EFBFBD>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>Ҫ
|
|||
|
|
BITMAPINFO.bmiHeader.biXPelsPerMeter = 0; // <09><><EFBFBD><EFBFBD>-<2D><>̫<EFBFBD><CCAB>Ҫ
|
|||
|
|
BITMAPINFO.bmiHeader.biYPelsPerMeter = 0; // <09><><EFBFBD><EFBFBD>-<2D><>̫<EFBFBD><CCAB>Ҫ
|
|||
|
|
BITMAPINFO.bmiHeader.biSize = 40; // <09><>Ϣͷ<CFA2><CDB7>С
|
|||
|
|
BITMAPINFO.bmfHeader.bfOffBits =
|
|||
|
|
sizeof(_BITMAPINFO); // λͼ<CEBB><CDBC><EFBFBD><EFBFBD>ƫ<EFBFBD><C6AB>
|
|||
|
|
BITMAPINFO.bmfHeader.bfSize =
|
|||
|
|
Width * Height+
|
|||
|
|
BITMAPINFO.bmfHeader.bfOffBits; // <09>ļ<EFBFBD><C4BC><EFBFBD>С
|
|||
|
|
BITMAPINFO.bmiHeader.biBitCount = 8; // ɫ<><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
}
|
|||
|
|
//----------------------------------------------------------------------------------------------------
|
|||
|
|
bsp_BMP::~bsp_BMP(void) {
|
|||
|
|
free(dat);}
|
|||
|
|
//////////////////////////////////////////////////////////////////////////////////////////////////////
|