📄 windefs.h
字号:
//---------------------------------------------------------------------------
#ifndef _WINDEFS_H
#define _WINDEFS_H
//---------------------------------------------------------------------------
#include "wingal.h"
//---------------------------------------------------------------------------
typedef int BOOL;
typedef char bool;
typedef unsigned int UINT;
typedef unsigned char BYTE;
typedef unsigned short WORD;
typedef unsigned long DWORD;
typedef UINT WPARAM;
typedef long LPARAM;
typedef long HRESULT;
typedef const char *LPCSTR, *PCSTR;
typedef char *LPSTR, *PSTR;
typedef UINT64 TWndDateTime;
typedef void *HANDLE;
typedef HANDLE HDC;
typedef HANDLE HWND;
typedef DWORD TCOLOR;
//---------------------------------------------------------------------------
#define CALLBACK
#define WINAPI
//---------------------------------------------------------------------------
#ifndef NULL
#define NULL ((void *)0)
#endif
//---------------------------------------------------------------------------
#ifndef false
#define false 0
#endif
//---------------------------------------------------------------------------
#ifndef true
#define true 1
#endif
//---------------------------------------------------------------------------
#ifndef FALSE
#define FALSE 0
#endif
//---------------------------------------------------------------------------
#ifndef TRUE
#define TRUE 1
#endif
//---------------------------------------------------------------------------
#ifndef max
#define max(a,b) (((a) > (b)) ? (a) : (b))
#endif
//---------------------------------------------------------------------------
#ifndef min
#define min(a,b) (((a) < (b)) ? (a) : (b))
#endif
//---------------------------------------------------------------------------
#ifndef swap
#define swap(a,b) {a^=b;b^=a;a^=b;}
#endif
//---------------------------------------------------------------------------
#ifndef MAKEWORD
#define MAKEWORD(a, b) ((WORD)(((BYTE)(a)) | ((WORD)((BYTE)(b))) << 8))
#endif
//---------------------------------------------------------------------------
#ifndef MAKELONG
#define MAKELONG(a, b) ((long)(((WORD)(a)) | ((DWORD)((WORD)(b))) << 16))
#endif
//---------------------------------------------------------------------------
#ifndef LOWORD
#define LOWORD(L) ((WORD)(L))
#endif
//---------------------------------------------------------------------------
#ifndef HIWORD
#define HIWORD(L) ((WORD)((DWORD)(L)>>16))
#endif
//---------------------------------------------------------------------------
#ifndef LOBYTE
#define LOBYTE(w) ((BYTE)(w))
#endif
//---------------------------------------------------------------------------
#ifndef HIBYTE
#define HIBYTE(w) ((BYTE)((w)>>8))
#endif
//---------------------------------------------------------------------------
typedef struct
{ /*a、r、g、b地址由高至低,与像素值中RGB分量的排列顺序一致*/
unsigned char b; /*the red component of a RGB color*/
unsigned char g; /*the red component of a RGB color*/
unsigned char r; /*the red component of a RGB color*/
unsigned char a; /*the alpha component of a RGB color*/
}RGBQUAD;
//---------------------------------------------------------------------------
#if BITS_PER_PIXEL <= 8
typedef unsigned char PIXEL; /* 像素存储单位BYTE */
#elif BITS_PER_PIXEL <= 16
typedef unsigned short PIXEL; /* 像素存储单位WORD */
#elif BITS_PER_PIXEL <= 32
typedef unsigned long PIXEL; /* 像素存储单位DWORD*/
#endif
////////////////////////////////////////////////////////////////////////////////
#if(BITS_PER_PIXEL==1) // black and white LCD
////////////////////////////////////////////////////////////////////////////////////
#define UNIT_PIXEL_MASK 0x01 // (1<<BITS_PER_PIXEL)-1
#define PIXEL_UNIT 8 // 像素单位的比特数8/16/32 (2的整数次方) ==(BITS_PER_PIXEL+7) / 8 * 8
#define UNIT_BYTE 1 // PIXEL_UNIT/8
#define PIXELS_PER_UNIT 8 // PIXEL_UNIT/BITS_PER_PIXEL
#define LOG_PIXEL_BITS 0 // log2(BITS_PER_PIXEL)
#define LOG_UNIT 3 // log2(PIXEL_UNIT)
#define LOG_UNIT_BYTE 0 // log2(UNIT_BYTE)
#define LOG_PIXEL_NUM 3 // log2(PIXELS_PER_UNIT)
#define INDEX_RED_BITWIDTH 0 //INDEX_RED_BITWIDTH+INDEX_GREEN_BITWIDTH+INDEX_BLUE_BITWIDTH==BITS_PER_PIXEL
#define INDEX_GREEN_BITWIDTH 0
#define INDEX_BLUE_BITWIDTH 1
////////////////////////////////////////////////////////////////////////////////////
#elif(BITS_PER_PIXEL==2) // 4gray
////////////////////////////////////////////////////////////////////////////////////
#define UNIT_PIXEL_MASK 0x03 // (1<<BITS_PER_PIXEL)-1
#define PIXEL_UNIT 8 // 像素单位的比特数8/16/32
#define UNIT_BYTE 1 // PIXEL_UNIT/8
#define PIXELS_PER_UNIT 4 // PIXEL_UNIT/BITS_PER_PIXEL
#define LOG_PIXEL_BITS 1 // log2(BITS_PER_PIXEL)
#define LOG_UNIT 3 // log2(PIXEL_UNIT)
#define LOG_UNIT_BYTE 0 // log2(UNIT_BYTE)
#define LOG_PIXEL_NUM 2 // log2(PIXELS_PER_UNIT)
#define INDEX_RED_BITWIDTH 0 //INDEX_RED_BITWIDTH+INDEX_GREEN_BITWIDTH+INDEX_BLUE_BITWIDTH==BITS_PER_PIXEL
#define INDEX_GREEN_BITWIDTH 1
#define INDEX_BLUE_BITWIDTH 1
////////////////////////////////////////////////////////////////////////////////////
#elif(BITS_PER_PIXEL==4) // 16gray
////////////////////////////////////////////////////////////////////////////////////
#define UNIT_PIXEL_MASK 0x0F // (1<<BITS_PER_PIXEL)-1
#define PIXEL_UNIT 8 // 像素单位的比特数8/16/32
#define UNIT_BYTE 1 // PIXEL_UNIT/8
#define PIXELS_PER_UNIT 2 // PIXEL_UNIT/BITS_PER_PIXEL
#define LOG_PIXEL_BITS 2 // log2(BITS_PER_PIXEL)
#define LOG_UNIT 3 // log2(PIXEL_UNIT)
#define LOG_UNIT_BYTE 0 // log2(UNIT_BYTE)
#define LOG_PIXEL_NUM 1 // log2(PIXELS_PER_UNIT)
#define INDEX_RED_BITWIDTH 1 //INDEX_RED_BITWIDTH+INDEX_GREEN_BITWIDTH+INDEX_BLUE_BITWIDTH==BITS_PER_PIXEL
#define INDEX_GREEN_BITWIDTH 2
#define INDEX_BLUE_BITWIDTH 1
////////////////////////////////////////////////////////////////////////////////////
#elif(BITS_PER_PIXEL==8) // 256色 332默认调色板
////////////////////////////////////////////////////////////////////////////////////
#define UNIT_PIXEL_MASK 0xFF // (1<<BITS_PER_PIXEL)-1
#define PIXEL_UNIT 8 // 像素单位的比特数8/16/32
#define PIXEL_BYTE 1 // BITS_PER_PIXEL/8
#define UNIT_BYTE 1 // PIXEL_UNIT/8
#define INDEX_RED_BITWIDTH 3 //INDEX_RED_BITWIDTH+INDEX_GREEN_BITWIDTH+INDEX_BLUE_BITWIDTH==BITS_PER_PIXEL
#define INDEX_GREEN_BITWIDTH 3
#define INDEX_BLUE_BITWIDTH 2
////////////////////////////////////////////////////////////////////////////////////
#elif(BITS_PER_PIXEL==16) // 16位色 565默认调色板
////////////////////////////////////////////////////////////////////////////////////
#define UNIT_PIXEL_MASK 0xFFFF // (1<<BITS_PER_PIXEL)-1
#define PIXEL_UNIT 16 // 像素存储单位的比特数 8/16/32
#define PIXEL_BYTE 2 // BITS_PER_PIXEL/8
#define UNIT_BYTE 2 // PIXEL_UNIT/8
#define INDEX_RED_BITWIDTH 5 //INDEX_RED_BITWIDTH+INDEX_GREEN_BITWIDTH+INDEX_BLUE_BITWIDTH==BITS_PER_PIXEL
#define INDEX_GREEN_BITWIDTH 6
#define INDEX_BLUE_BITWIDTH 5
////////////////////////////////////////////////////////////////////////////////////
#elif(BITS_PER_PIXEL==24)
////////////////////////////////////////////////////////////////////////////////////
#define UNIT_PIXEL_MASK 0x00FFFFFF // (1<<BITS_PER_PIXEL)-1
#define PIXEL_UNIT 32 // 像素存储单位的比特数 8/16/32
#define PIXEL_BYTE 3 // BITS_PER_PIXEL/8
#define UNIT_BYTE 4 // PIXEL_UNIT/8
#define INDEX_RED_BITWIDTH 8
#define INDEX_GREEN_BITWIDTH 8
#define INDEX_BLUE_BITWIDTH 8
////////////////////////////////////////////////////////////////////////////////////
#elif( BITS_PER_PIXEL==32)
////////////////////////////////////////////////////////////////////////////////////
#define UNIT_PIXEL_MASK 0xFFFFFFFF // (1<<BITS_PER_PIXEL)-1
#define PIXEL_UNIT 32 // 像素存储单位的比特数 8/16/32
#define PIXEL_BYTE 4 // BITS_PER_PIXEL/8
#define UNIT_BYTE 4 // PIXEL_UNIT/8
#define INDEX_RED_BITWIDTH 8
#define INDEX_GREEN_BITWIDTH 8
#define INDEX_BLUE_BITWIDTH 8
////////////////////////////////////////////////////////////////////////////////////
#endif
//---------------------------------------------------------------------------
#if(BITS_PER_PIXEL==16 && INDEX_RED_BITWIDTH==5 && INDEX_GREEN_BITWIDTH==5 && INDEX_BLUE_BITWIDTH==5)
#define SYS_EFFECT_BPP 15
#else
#define SYS_EFFECT_BPP BITS_PER_PIXEL
#endif
//---------------------------------------------------------------------------
#define BITS_MASK(bitwidth) ((1L<<(bitwidth))-1)
//---------------------------------------------------------------------------
#if (PIXEL_BIG_ENDIAN==true)
#define MASK_OFFSET_OPT(bitwidth,bitoffset) ( ((1<<(bitwidth))-1) << ( PIXEL_UNIT - (bitoffset) - (bitwidth) ) )
#define PIXEL_OFFSET_OPT(value,bitwidth,bitoffset) value <<= ( PIXEL_UNIT - (bitoffset) - (bitwidth) )
#define OPT_OFFSET_PIXEL(value,bitwidth,bitoffset) ( value << ( PIXEL_UNIT - (bitoffset) - (bitwidth) ) )
#define PATTERN_SHIFT_LFFT(pattern,bitoffset) ( (pattern)<<(bitoffset) )
#define PATTERN_SHIFT_RIGHT(pattern,bitoffset) ( (pattern)>>(bitoffset) )
#define UNIT_GET_BITS(unitwidth,value,bitwidth,bitoffset) ( ((value)>>((unitwidth)-(bitwidth)-(bitoffset)))& BITS_MASK(bitwidth) )
#else
#define MASK_OFFSET_OPT(bitwidth,bitoffset) ( ((1<<(bitwidth))-1) << (bitoffset) )
#define PIXEL_OFFSET_OPT(value,bitwidth,bitoffset) value <<= (bitoffset)
#define OPT_OFFSET_PIXEL(value,bitwidth,bitoffset) ( value << (bitoffset) )
#define PATTERN_SHIFT_LFFT(pattern,bitoffset) ( (pattern)>>(bitoffset) )
#define PATTERN_SHIFT_RIGHT(pattern,bitoffset) ( (pattern)<<(bitoffset) )
#define UNIT_GET_BITS(unitwidth,value,bitwidth,bitoffset) ( ((value)>>(bitoffset))&BITS_MASK(bitwidth) )
#endif
//---------------------------------------------------------------------------
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -