Option Explicit
Private Type SAFEARRAYBOUND
cElements As Long
lLbound As Long
End Type
Private Type SAFEARRAY2D
cDims As Integer
fFeatures As Integer
cbElements As Long
cLocks As Long
pvData As Long
Bounds(0 To 1) As SAFEARRAYBOUND
End Type
Private Type BITMAP '14 bytes
bmType As Long
bmWidth As Long
bmHeight As Long
bmWidthBytes As Long
bmPlanes As Integer
bmBitsPixel As Integer
bmBits As Long
End Type
Public Const SRCPAINT = &HEE0086 ' (DWORD) dest = source OR dest
Public Const SRCINVERT = &H660046 ' (DWORD) dest = source XOR dest
Public Const SRCERASE = &H440328 ' (DWORD) dest = source AND (NOT dest )
Public Const SRCCOPY = &HCC0020 ' (DWORD) dest = source
Public Const SRCAND = &H8800C6 ' (DWORD) dest = source AND dest
Public Const DSTINVERT = &H550009 ' (DWORD) dest = (NOT dest)
Public Const NOTSRCCOPY = &H330008 ' (DWORD) dest = (NOT source)
Public Const NOTSRCERASE = &H1100A6 ' (DWORD) dest = (NOT src) AND (NOT dest)
Public Const MERGECOPY = &HC000CA ' (DWORD) dest = (source AND pattern)
Public Const MERGEPAINT = &HBB0226 ' (DWORD) dest = (NOT source) OR dest
Public Const PATCOPY = &HF00021 ' (DWORD) dest = pattern
Public Const PATINVERT = &H5A0049 ' (DWORD) dest = pattern XOR dest
Public Const PATPAINT = &HFB0A09 ' (DWORD) dest = DPSnoo
Public Const WHITENESS = &HFF0062 ' (DWORD) dest = WHITE
Public Const BLACKNESS = &H42 ' (DWORD) dest = BLACK
'Public myPicture As New StdPicture
Private Declare Function VarPtrArray Lib "msvbvm50.dll" Alias "VarPtr" (Ptr() As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Declare Function GetObjectAPI Lib "gdi32" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, lpObject As Any) As Long
Public Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Public Declare Function CreateCompatibleBitmap Lib "gdi32" (ByVal hdc As Long, ByVal nWidth As Long, ByVal nHeight As Long) As Long
Public Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Public Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Public Function Transform(ByVal myPicture As StdPicture, NewColor As Long, TransColor As Long) As StdPicture
Dim lMax As Long, lMid As Long, lMin As Long
Dim p As Integer, q As Integer, t As Integer, z As Integer
Dim lDifference As Single
Dim Hue As Single
Dim Luminance As Single
Dim Saturation As Single
Dim pic() As Byte
Dim sa As SAFEARRAY2D
Dim bmp As BITMAP
Dim R As Long, G As Long, B As Long
Dim transR As Long, transG As Long, transB As Long
Dim i As Integer, j As Integer
' the code here
Set Transform = myPicture
End Function
Public Function ReplaceColor(ByVal myPicture As StdPicture, OldColor As Long, NewColor As Long, Similar As Long) As StdPicture
Dim pic() As Byte
Dim sa As SAFEARRAY2D
Dim bmp As BITMAP
Dim R_New As Long, G_New As Long, B_New As Long
Dim R_Old As Long, G_Old As Long, B_Old As Long
Dim R_Min As Long, G_Min As Long, B_Min As Long
Dim R_Max As Long, G_Max As Long, B_Max As Long
Dim R As Long, G As Long, B As Long
Dim i As Integer, j As Integer
'your code here
End Function