Files
MicrochipFor32/bsp_Device/bsp_math/bsp_BMP.cpp

124 lines
4.0 KiB
C++
Raw Normal View History

2022-11-24 23:56:57 +08:00
/*----------------------------------------------------------------------------------------------------
#
# 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);}
//////////////////////////////////////////////////////////////////////////////////////////////////////