續:
還是記錄一下, BltFuncs.cpp中的函數作用:
CONVERT_32BPP_TO_16BPP 是将32bit的pixel轉換成16bit的形式.
輸入是DWORD
32位中, BYTE 0,1,2分别是RGB分量, 而BYTE3則是不用的
為了不減少color的範圍, 是以,都是取RGB8,8,8的高RGB5, 6, 5位, 然後将這16位構成一個pixel.
CONVERT_16BPP_TO_32BPP是将16bit的pixel轉換成32bit的形式
輸入是WORD
16BIT中, 分解出5, 6, 5
然後, 将5, 6, 5 放入BYTE 0, 1, 2的位元組中, 低位用0補(同樣, 不能減少color的範圍)
CONVERT_32BPP_TO_8BPP
CONVERT_32BPP_TO_4BPP
不是特别明白它的轉換原理,
8PP,是從6級去考慮, 4PP,是從RGB所占的比例去考慮
CopyBits32_32
是從src copy 到 dst的函數
參數中除了src and dst還有需要copy的src表現中的矩形的個數,以及矩形的參數
是以, copy過程就是src中需要COPY的矩形的循環
GetPitches
GetRowStart
這兩個函數, 分别是
第一個,得出每一個像素, 每一行的位元組數
第二個,得出某一個矩形在表面的資料集中(pBits指向的一塊記憶體, 一個像素一個像素, 一行一行地存在記憶體中)的起始位置
它們都針對ROTATION, 90,180,270,0的情況分别給出結果
CopyBitsGeneric
是在各行不同BIT的像素間COPY的函數, 相對CopyBits32_32具有通用行
BltBits
就是調用
CopyBits32_32或者CopyBitsGeneric進行COPY的函數