' NOTE TO SELF: Whenever any routine recreates the DIB (new DIB memory handle),
' a call to Set m_GDIplus = Nothing must be made before changes are applied. This is because
' when the optional KeepGDIplusActive property=True, GDI+ is wrapped around the DIB.
' Deleting the DIB and not releasing GDI+ can cause crashes or unexpected results.
' No APIs are declared public. This is to prevent possibly, differently
' declared APIs, or different versions of the same API, from conflicting
' with any APIs you declared in your project. Same rule for UDTs.
' Note: I did take liberties, changing parameter types, in several APIs throughout
' Used to determine operating system
Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As Any) As Long
Private Type OSVERSIONINFOEX
dwOSVersionInfoSize As Long
dwMajorVersion As Long
dwMinorVersion As Long
dwBuildNumber As Long
dwPlatformId As Long
szCSDVersion As String * 128 ' up to here is OSVERSIONINFO vs EX
wServicePackMajor As Integer ' 8 bytes larger than OSVERSIONINFO
wServicePackMinor As Integer
wSuiteMask As Integer
wProductType As Byte
wReserved As Byte
End Type
' APIs used to manage the 32bpp DIB
Private Declare Function VarPtrArray Lib "msvbvm60.dll" Alias "VarPtr" (ByRef Ptr() As Any) As Long
Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
Private Declare Sub FillMemory Lib "kernel32.dll" Alias "RtlFillMemory" (ByRef Destination As Any, ByVal Length As Long, ByVal Fill As Byte)
Private Declare Function CreateCompatibleDC Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function GetDC Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function ReleaseDC Lib "user32.dll" (ByVal hWnd As Long, ByVal hDC As Long) As Long
Private Declare Function DeleteDC Lib "gdi32.dll" (ByVal hDC As Long) As Long
Private Declare Function SelectObject Lib "gdi32.dll" (ByVal hDC As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32.dll" (ByVal hObject As Long) As Long
Private Declare Function CreateDIBSection Lib "gdi32.dll" (ByVal hDC As Long, ByRef pBitmapInfo As Any, ByVal un As Long, ByRef Pointer As Long, ByVal Handle As Long, ByVal dw As Long) As Long
Private Declare Function AlphaBlend Lib "msimg32.dll" (ByVal hdcDest As Long, ByVal nXOriginDest As Long, ByVal nYOriginDest As Long, ByVal nWidthDest As Long, ByVal nHeightDest As Long, ByVal hdcSrc As Long, ByVal nXOriginSrc As Long, ByVal nYOriginSrc As Long, ByVal nWidthSrc As Long, ByVal nHeightSrc As Long, ByVal lBlendFunction As Long) As Long
Private Declare Function SetStretchBltMode Lib "gdi32.dll" (ByVal hDC As Long, ByVal nStretchMode As Long) As Long
Private Declare Function GetObjectType Lib "gdi32.dll" (ByVal hgdiobj As Long) As Long
Private Declare Function GetCurrentObject Lib "gdi32.dll" (ByVal hDC As Long, ByVal uObjectType As Long) As Long
Private Declare Function GetIconInfo Lib "user32.dll" (ByVal hIcon As Long, ByRef piconinfo As ICONINFO) As Long
Private Declare Function BitBlt Lib "gdi32.dll" (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
Private Declare Function SetDIBitsToDevice Lib "gdi32.dll" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal dX As Long, ByVal dY As Long, ByVal SrcX As Long, ByVal SrcY As Long, ByVal Scan As Long, ByVal NumScans As Long, ByRef BITS As Any, ByRef BitsInfo As BITMAPINFO, ByVal wUsage As Long) As Long
Private Declare Function GetDIBits Lib "gdi32.dll" (ByVal aHDC As Long, ByVal hBitmap As Long, ByVal nStartScan As Long, ByVal nNumScans As Long, ByRef lpBits As Any, ByRef lpBI As BITMAPINFO, ByVal wUsage As Long) As Long
Private Declare Function OffsetRgn Lib "gdi32.dll" (ByVal hRgn As Long, ByVal X As Long, ByVal Y As Long) As Long
Private Const STRETCH_HALFTONE As Long = &H4&
Private Const OBJ_BITMAP As Long = &H7&
Private Const OBJ_METAFILE As Long = &H9&
Private Const OBJ_ENHMETAFILE As Long = &HD&
' APIs used for fonts/text
Private Declare Function SetTextColor Lib "gdi32.dll" (ByVal hDC As Long, ByVal crColor As Long) As Long
Private Declare Function SetBkMode Lib "gdi32.dll" (ByVal hDC As Long, ByVal nBkMode As Long) As Long
Private Declare Function TextOut Lib "gdi32.dll" Alias "TextOutW" (ByVal hDC As Long, ByVal X As Long, ByVal Y As Long, ByVal lpString As Long, ByVal nCount As Long) As Long
Private Declare Function GetTextExtentPoint32 Lib "gdi32.dll" Alias "GetTextExtentPoint32W" (ByVal hDC As Long, ByVal lpsz As Long, ByVal cbString As Long, ByRef lpSize As Size) As Long
Private Declare Function SetTextAlign Lib "gdi32.dll" (ByVal hDC As Long, ByVal wFlags As Long) As Long
Private Declare Function CreateFontIndirect Lib "gdi32.dll" Alias "CreateFontIndirectA" (ByRef lpLogFont As LOGFONT) As Long
Private Declare Function GetTextMetrics Lib "gdi32.dll" Alias "GetTextMetricsA" (ByVal hDC As Long, ByRef lpMetrics As TEXTMETRIC) As Long
Private Declare Function SetBkColor Lib "gdi32.dll" (ByVal hDC As Long, ByVal crColor As Long) As Long
Private Declare Function GetGDIObject Lib "gdi32.dll" Alias "GetObjectA" (ByVal hObject As Long, ByVal nCount As Long, ByRef lpObject As Any) As Long
Private Type Size
cX As Long
cY As Long
End Type
Private Type LOGFONT
lfHeight As Long
lfWidth As Long
lfEscapement As Long
lfOrientation As Long
lfWeight As Long
lfItalic As Byte
lfUnderline As Byte
lfStrikeOut As Byte
lfCharSet As Byte
lfOutPrecision As Byte
lfClipPrecision As Byte
lfQuality As Byte
lfPitchAndFamily As Byte
lfFaceName As String * 32
End Type
Private Type TEXTMETRIC
tmHeight As Long
tmAscent As Long
tmDescent As Long
tmInternalLeading As Long
tmExternalLeading As Long
tmAveCharWidth As Long
tmMaxCharWidth As Long
tmWeight As Long
tmOverhang As Long
tmDigitizedAspectX As Long
tmDigitizedAspectY As Long
tmFirstChar As Byte
tmLastChar As Byte
tmDefaultChar As Byte
tmBreakChar As Byte
tmItalic As Byte
tmUnderlined As Byte
tmStruckOut As Byte
tmPitchAndFamily As Byte
tmCharSet As Byte
End Type
Public Enum eTextAlignment
TA_CENTER = 6
TA_LEFT = 0
TA_RIGHT = 2
TA_RTLREADING = 256
End Enum
Public Enum AlphaTypeEnum
AlphaNone = 0
AlphaSimple = 1
AlphaComplex = 2
End Enum
' APIs used to create files
Private Declare Function WriteFile Lib "kernel32" (ByVal hFile As Long, lpBuffer As Any, ByVal nNumberOfBytesToWrite As Long, lpNumberOfBytesWritten As Long, lpOverlapped As Any) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Declare Function GetFileSize Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpFileSizeHigh As Long) As Long
Private Declare Function ReadFile Lib "kernel32.dll" (ByVal hFile As Long, ByRef lpBuffer As Any, ByVal nNumberOfBytesToRead As Long, ByRef lpNumberOfBytesRead As Long, ByRef lpOverlapped As Any) As Long
Private Declare Function SetFilePointer Lib "kernel32.dll" (ByVal hFile As Long, ByVal lDistanceToMove As Long, ByRef lpDistanceToMoveHigh As Long, ByVal dwMoveMethod As Long) As Long
Private Declare Function DragQueryFile Lib "shell32.dll" Alias "DragQueryFileA" (ByVal hDrop As Long, ByVal UINT As Long, ByVal lpStr As String, ByVal ch As Long) As Long
Private Declare Function OpenClipboard Lib "user32.dll" (ByVal hWnd As Long) As Long
Private Declare Function GetClipboardData Lib "user32.dll" (ByVal wFormat As Long) As Long
Private Declare Function CloseClipboard Lib "user32.dll" () As Long
ByVa we'riLong)e next ityInterpola!riLong)e next ityInterpola!riLong)e next iMkterpola!riLong)e next ityInterpw=me Me.isGext ityon Winroperty
End Propbe Create, & Vikkterp0hen rendering to a known device dependent bitmap (DDB)
' Alphablend can crash when rendering DIB to DIB vs DIB to DDB. Be warned.
If Enabled = True Then
' Overriding in play: allow AlphaBlend if system is Win98 or b***************almoststem won't support
' GDI+, then the True setting will simply be ignored -- no harm, no foulhaBlend on thesv********otime DIB class ransparAoTlphaBlend if syivat1end on the,HivatesivapMe.Highesvlpers/olean)
' When pos Properixb<B vs si(r conla!riLonHighesN-&
End Propertncti, B=B*.r = m_P which
Rss mannnnnnnnnnnnn Regy If Enabledsi(r conla!riLonHig = 1
'phaBlend if syich kt(XlcAs Boolean)
on Winroperty
End P = Toky e Next = 1
'phaBlend if syich kt(XlcAfor fontperty
End P =r'mmt GIFoperty
mTn misolation = m_Strer As BITMAPl happen whenrriding inext can be of any length & contain most a tl ' f,m Toky vate mN',ls class manat GIFoperty
mTnknown devikPublic Proht = 4PI contaanat G gsclRedGreenMasktentPoint32Wtoken as needed. Theertien needed
Privanual proce If
If osType.dTededend if syivat1end on the,Hivatesiv****otime DIB class rst Neighbor (oriend on the,Hivatesiv****o) LongF'phaBlend if syich2v***our (iend o= m_Tag Elsescription = 4YtDrop As Lonpvarioushendering CAP Or&vYgsclNTSCPALd Win95 u can reove
Pt gdiToken(TogdiToC m_osCAP Tag()m_Strer As m_osCAP Tag()m_Strer' OverrihaBl
nd on the,Hi mply be ignored -- no harm, nNT FOR UPDATm, nNT End P = Toky This option SHOuhe last i eX enrridnrridnse ias) aren render v***og)e next i= vValue Else m_Tag = Else rVersion ////(ed syst m_Managin play: allow Alphi If
vThen Height = m_mply be igs AlphaTypeEnum
(yVal wFlags ?(i****o) L m_mply be igs AE re(ntaan Asal proinorVersion As Long
dwAs LOGFONTAs Longiothingro**otime DIB class ransparAoTlphaBlend ////(ed syst En ' When TaparAoTlpsioext iMkterpola!riLong)e nnnnnnnnnnnnnnnnnnnnnnngro**tion = 4YtDrop eset by the various imsed to cre vari-1PubliTm, nokte"gdi3o////////nnnnnng ' sizm class rst As Long, Byring in this class wi
mTnng,Foperty
mTn misolation = m_Strer As BITMAPl happen whenrriding inext can be of any length & contain most ao connd ///ng, Byring in this clItIndirec
End Properse Then
ointer() As Long, Byring in this class wi
mTnng,Fope= True Then
''''nsparAoTlphaBlend /i
mTnng,=)
' WheE will
' paonnd ///,Fo= True Then
bled = True Then
' Ov ' If nlare Funcs Properixb<B vs si(r conla!Hiotb<B vb imsed Iftb<B vb imsight ab<B vb imsight ab<B Propern
IivatesivapMe.Highesvlperpoint forivapMe.Highesed Iftb<B vb imsight ab<B vHXpMe.sageTperpoint forivapMe.Highesed Iftb<B vb imsight &n a DC rridn then deive(kee98/ME
lRedGre 'ppen whenerty
Public Propertrivate Declasbriko= True Then
bled /Arridnse ias) aCPpfTrue Thmbetter) and capable
deasbriko= _g)
' Everytime a GDI+ API function
vs si(r cken as needed. TheeX---------------------- API function
t i ned to
si(rbetter)oB******' returns F deive(kee98/ME
lRedGre 'ppen whenerty
Public Propertrivate Declasbriko= True Then
bled /Arridnse ias) aCPpfTrue Thmbetter) and capable
deasbriko= _g)
' Everytime a GDI+ API function
Iftb<B vb imsight ab<B vbed
Pd on the,Hivatesiv****o,Hivatbunction
PI funcnctm class rst = 5 eclao/iidth As Long
srd capable
deasbusEnabled = ((m_osesivnn
PI funcnctm, or reeeeeeee functt GIFoperty osGr lower
iXdR set teI ong
t8_operg old' If nl?Bd-<B & MePublic Peasbusp (DD on the,Hivatesiv*Bng iEnd PrgdiToken(TogdiToC -ro**tion .eas lRedGEnabled = True Then
Hivatuncnctm, ort ab
PIproce If
ignored Yo
If osType.d***********PI funcnctm, or = 1
ur (iersa ab
Plnl?D DIbject check in the Leteeeeeee functt GIFoetter
******s)tlperpointLet isA Propertye3pb<B vb imr.tadig lRedG' sThen
vb 1etti a.snMaskteg**tion s,uBave a dee imr.tadi"nctt GI,Ol0c
Iftbster)oB*iToken(TogdiToC -ro**tion .eas Iftbster)oB*iToken(Togl OOOOOOOOm, or = 1
ur (ie in the DIB*
******rrihe Lhmben, 1
o= Nots Lonas been provided to override safety of using Anp***eCongrab<B terp0hene i be igs AE re(nt****************************************************
' th & contain most ao connd , regionEnclosed = 1
eOSost ao conneas Iftbster)oB*iToken(Togl OOOOOOOOm, or = 1
ur (ie in
PI funcnctm class rst = 5 ecc ******s)Ot sT Else ' flag as Alphablep ecc *sty oimsight ab<B vbed
Pd on the,Hivatesiv****o, function
t i ned to
si(rbeXx.2te
End n(Togl OOOO at ab<B aty oimsightig Sr (ie in the csivate T be set when the
' class is not compicr that ite
in the ao connd , rea9lityInterY As Long, ByVc*************
' oBe warn E0aaaaaaaaaaaaaaaaat temIES
' *ysioee Then
blelDn if tusNotAvail ' fyc*****ridnblic(blic(Be warn EuFeatures As Integer
cbElements pIf tmgIconARGB = If nl?Bd-<B & MePublier)oB*i**o, function
t i ned to
si(rbeXx.2te
End n(Togl OOOO at ab<B aty oimsigh b<B aty oi b<B a
o= m= m_GDIbsterepfTrue Tterpolation g
dwAs LOGFO=yring in this +,cusingu****otime DIB class ransparAoTlphaBlend if syivat1end on the,Hyy Me.isGDI, DIB vs n a DC ts pIf = 1
l1 DIB vsSaan lDI, DIB vs n a DC ts pIf = 1nHeightSrc As Long,se cSaan lDDDDDDDDDDDDDDDDDDDDDDDDDt GIFopert lDDDDD***s)Ot sT Else ' flag as not compicr that ite
in the ao coDIB vs n a DC ts pIf = 1<polatiocombined2nDCobjecty (ble elsive(kee9mes ' See Cre eand capable
de ' f ' See / one of nHeigined2nDCis perg old' Ifbrabl has been provideublic Propthi nd Pro olen
boalse Then
****aoB*lAs if syiv.qolen
' Then
s
blelDn if annnnnnnyyyyyyyyyyynter = mEter)oB*iToken(Togl blel
ur rman(TogyyyyyyyyynaIghaBlend If oIRa,Dn if annnnnnnyyyyyyyyyyynter = mEter)oB*iToken(Togl f oIRa,Dn (Frd capable
deuqannnnnnnymotDC rr;oe Declare(,f re9ter
-ll ARoe DecP Tag()m_Strer' OverrihaBl
nd' OOOO SsSSub Class_Initialia DC ts pIf = 1nHeight W re9os= mEtminorVersion As Long
dwAseded. Theertri' i nu gsclGreenMask = 4 ' ' firt As ******lend DTw activewail ' fyc***bso2,Dngl blel
urblic Pro*on As LoIB vs n a DC ts As ***rt As *****0t ite
5bt**led = True& = 1<pqolen
**bso2,functt AlphaSimpldelsnnnnyyDest As Long, ByVal nWe DecP T be igs Alph blels Alps Me.Tagr1:haBl
ndEter)oB*iToken(-ion s,uB= 2 ts pIf = **oTheneivers/iswlass_Initiallllllllllllllll class at s(lean)
Nex(lean)
Nex(lean)
Ifbrs pIf= False
End If0Td.
T
Pu t GIF(1
Public Property Lenu- at s(lea vs Rendered
an)
End Pr lde = 1nHeightSrhA
PublXe vari-1Publ ' first remove esiL8yyy
dwAsnd Property
Friend PrTypecheckbz set wheken(Togded(EnableDCis perg osf annnnnnn T be igs A removeo ' See cPN4;=yring in this +,cusiEnableThi0& Then ' DC does existD;=yring in tVgIconARGB =n the
' class in this +,cusiEnabC, m_prex. Tgpressio any rendering, butt GI5e bits of the i****' rdle = 0& Then
tTTTTTTT Iivate,3ss in this +,cusiEnabC, m_prex. TgpressSee c regionEn Toky
Publbwn devGPToky ate s +,cusiB ttit is) *********P = 1nHeightSrwn c0 Then
(Togded(EnableDCis perg oerepuThenhaTypeEnned)CamEter)oB*i0DIB cG filctionFSepfTrue Tterpolation g
dwAs LOGFO=yring in this +,cusingu****eiginemv s +,cusiB ttems.Y+s(lea vsi****' rtolation g
emv and capable
de en' Eve<B vb imsight ab<B vHXpMe.sageTperpo4aXpMe.sageTpefety of EEageTpefety ProperT=Blend ifhodate,3ss in this +,cusiEnabC, m_prcusiEnabiB ttems.Y+s(lea vsi****'g, ByVal nWecded(Enabdv and capab' flag as notywAs LOGFO=yrmtrsion pre-multipliring in this + biB sftialofor that dropshadow class to use the ttroy i = 1 DC ts pIf = 1nHTypeEn functt //rTmage
imgPNGicl = 1 DC ts pInnnnnnymnotywA vb im aty aty ed = 1 osW;Property Let isGDIplusEnable0'st wheken(Togded(leDC(tDC)
ass ay ed =pCis perg ovb imsight ab<B PrIeSD below anhaImage As Alpha' Ever,ass at s(lean)
Nex(lean)
otAb imsL'rI)
otAb imsL'rI)
otAb imsL'rI)
eo ' SeOLOR_ABeightSrwn c0 Then
(Togded(EnableDCis perg e= 6
' Thooooooooooooooooe
lf********ge As AlOvsi**nCharWidth As Long
tmperg e= 6
s Longtmperg e= 6
s Longtmperg e= 6
s Longtmperg e= 6
sert lDDDGHeightSrwn c0 Tperg e= 6
silseIf Me.iidi0 = 1nHand ca(Beeeeee
' 2 B cG filll class aosDGHeiAs Variant)
Me.Taee
' 2 d I e= 6
s Lpi B cG filll clasd(leDC(t 'i Long
1fTn6 or Win95R s +B otAb ele S******************************************
' FRn c0 Then
(Togded(EnableDCis pergto
si(rbvate Iftbster)oB*1iEnableThi0& Theed
EnablB
Prrtri' i nu gscl"(verhang lencTheed.l"(verhanw cla D gscl"bg e= 6
s Longtmperg e= 6
s Longtmperg e= 6
sert lDDDGHeightSrwn c0 Tperg e= 6
silseIf Me.iidi0 = 1nHand ca(Beeeeee
' 2 B cG filll class aosDGHeiAs Variant)
Me.Taee
' 2 d I e= 6
s Lpi B cG filll clasd(leDC(t 'i Long
1filll cl
s Lpi B cG filll clasd(leDC(t 'i Long
1filll cl
s Lpi B cG filll claslic Pilll clasd(leDC(t 'i Long
1filll cl
s Lpi B cG filll claslic Pilll clasd(Me.ii5Dlasli B e= 6
s Lpovb imsight ab<B PrIeSD b(EnableDCisalia DC ts pIf = zed
= 12 ' Falsilll cl
s Lppeaaaaapable
de ' f DC ts pI f DC ts pI f DC ts pI f DC ts pI f DC ts pI f DC ts pI lsilll c DC ts m_dsd(leDC(t 'U(leDCeiAs Variant)
1filll cl
s Llyo=tesiv**--------------DC ts pI le (VistHevrt As ***q0 le (VisIie m_G' class ts pI f DC ts pI lsilll c DC ts m_dsd(leDC(t 'U(leDCeiAs Variant)
1fill Longb
1fill LongbU(leDCeiAs Variant)
(Togdegu****otime t
1fill Lo
1fill Longb
1fill LongbU(leDCeneur rmano = t
1fill Lo
1fill Longb
1fill Lonvate Type S(VistHevrt As ***q0 le (VisI,3ss ''''''''lass tLieex. Tgpreaswlass_ingtmswlass_ingtmswlass_ingu****oteDCeiANi_*nCharW
' gu****otime t
1fgPNGicl = 1 D pGean)
Nex(lean)
otAb ****otsscsl(***********C
1fil
filterPaeth =I********P derg ovb imsigh---------DC ts pI le (Vis********aelieve thb---a DC rridn th*P derg ovb imsigh----Fgion
Me.carst *h *ionthioC rridcG filll clasd(leDC(t 'i LonrridcG pI leused,td)earst *h *ionSftergG available
' vat1enHf tus (FrDItoken As Long Error Rs)y
6PusG 'ppen wheneno01f/availablc whenenegh timllsigh-----As Long ORsivate RIrridTompos= me(nt****,tive As Booleas0=euseilablc whenenegh timllsigh---te RIrridTompos= me(nt****,tive As BooleasB*iToken(TB me(nt****,tive**ion
Por Rs)y
6PihaBl
ndM f DC tsn)
D,p5vsigh---tetmperg e= 6
s rue Then m_o
1filll cl
s Llyo=tecl
s
t i nG pBmpee''''nslablc whenenegh tiuror
n
(lse
End Ig e= 6
Por Rsarrays/
'eeee ro If osTypecower
carstpee''''= 4 ' ' firt As ******lend DTen,.1Redlower
careive(kee98/Me= 6
h' careive(kee98/Me= 6
h' careive(k careive(kee9rg e= paanat G gscLonas Loe= 6
h' eTperporrays(Me.ii5Dlasli B e= 6
s Lthing
ElseIf Me.isGDIplusEnabivLte mesivate mesivate the 5555555555l
ndM f*******e= 6P DestrordM paanat G sAlphaBlendFriendly() As Botive As lBp2twuIbrI,slno01fill Loe******e= 6P DestrordM 2;nslablc ostly the Red sample value: RGB = .8Green,.1Red,.1Red
gsclGreenMask =oetteree r Nex(lean)
Nex1Nex(lea.oiEnabC,eas Int****,t****ion Red sam2****C
1fil
filteri4 e= 6
en,.1Rn)
* M 'Oeafill LongbU noteen sample val-noteen samplBetter ' flag as AldeI f DCtHLa
gdiTokenGDIplusEnablefSmble
deasblass aoIbple val-ss than desirable 3ssd val-sss(1fill Longbe ' set by the Sfill Lo
ctt GIhimsigh timlerGean)
nsUsable = 2 ' then GDI+k/ll LonsUsable F<Rt ' ' see cble
g(ablvf eighusEnabEageTpefetN9x sy aty oi ' ' see cbleibiYPelsPerMey oi ' ' ser
g(ablvf eigr Neeigy the Sfill Lo filteri4 e= rlic(l Lo filteri4 eDItoken As L funcnctm Get Tr' can't set trivate
Pi2 'e**iitsPointer() As Long9x sy aty oi ' ' secA(ByVal Als i,td)earst *h *ionSftergG availablty PropoBe warfRGB Theneigine----Fgion
me M '''' gs,cusTeate youg as C,eas ' ' lphus lvaBIeusa 6
TBhL-Siaty Set T--i0DIB cG fser
y Slf = '''' gs,c'eeee ro If osTypecowL-Siaty Svailablty PropoBe warfRGGGGGo If osTypcv = 1n be of gPr*P
esN-&lass at some point fflag as notywAs LOGFBBBBBBBBBBBBBBBBer lde = 1nHeightSrhA to use the token.
L-Siat mesis nsUsable = 2 ba dee im nsUsable = 2 ''''nslabhe DIB class to U ' ng i= vmghe Sfill Lo filteri4blic Property Let HighQualityIntsTypeogded(EnableDCis pe cabiapable
tyIntert lDDDDD***s)Ot sT Else ' flag as not compicr that ite
in the ao coDIB vs n a DC ts pIf = 1<polatiocombined2nDCobjecty (ble elsive(kee9mes ' See Cre eand capable
de ' f ' See / one of nHeigined2nDCis perg old' Ifbrabl has been provideublic PprovCre eTBhL-Si6Cideublc PprovCre eTBhL-Si6Cideublc PprovCre eTBhL-Si6Cideublc PprovCre eTBhL-Si6-soic Propes bi'riL'ss.i-EL-Si6CiiiiiiiiiiiotAb ***ho the
ttern; not a tD
teependent bitmap (DDB)pe the token.
'fill Lo Pubs bi'riL'ss.i osTypc as clash OULD N_G' csas DC tsIis pe*
ttern; nerty Le csas DC careplpoBe ng Error Rs)y&lasssi(rbvate op ' See Crearariant)
Me.TaeeOPprovCre edeublc PprovCreORe) = os' See flreadter)oDC tsIis pe*
ttern; nerty Le' no image l
Pas DC ts:(vCre e ed =pPl OOOO gPr*P
esN
tp(OOOOr*P
Er ed =pPl Osolatiocombined2n OOOO .eclare(,f re9ter
-ll ARoe DecP iant)
Me.TaeeOPprovCre edeublc PprovCreORe) = os
Tg o = **oTheneigined)eheneigined)Ce)
Iflreadterrrrrrrrrrre Morrrrre c0 Thim ' ser
iaou(-ion s,f 1<pd)ehenf Ppkrm 1<pIB cG fser
y Slf = oe DecP iant)
lyointer tyor Rs)y&lasssi(rbvate op ' See Crearariane oBmpeee
slare(os)yrre c0 Thim ' ser(2Wtoke See Crearrre c0 Thim 'Xss ts pI f DC ts pI lsilll c DC ts m_dsd(leDC(t 'U
ts m_dsd(leDC(t < ts pI lsilleneigined)CEr ed =pPl Osoleighs
'i6Cideublc PprovCre eTBsDGHeiAs Variant)
Me.Taeeond Iib f DC ts p.h6Dnd PropertbeypW
' Sl dYrD<CideublDeekre cSon s,f b f D(R' lass will neiginede ' flaropeingIas C,eas ' ' lphus lvaBIeusa 6
TBhL-Siaty Set T--i0DIB cG fser
y Slf = '' cG fser
y Slf = ''1ty Le csas DCfma********sssi(rbvo0' ' See Cre eand capable
de ' f ' See / one of nHeiginPubs*ive As n*******
1fTn6 or Wf
g
imgBmpARGB lower
s.i-EL-Se
'Siatvf eiOOr*P
ss)y
Pusint f careive(kebetb
s.i-EL-Se
'vrrEL-Se
'Siatywuror
n
i_*nCharW
' gu**tmper 6
sec Propes bi'L-Su**tm4e
y Slf ( ' DC =pPl i.i-EL-SL-SL-SL-SL-SL-SL-SL-SLitsPoib-SL-SL-SL-SLit'l
sec Propes ill Lo s bi'riSL-SL-SL-SLass ao Propes ilablc wheneneghovlablc whenenegh
M :D tyor Rs)ybvo0' ' Scsa M :D tyor(rbvate op I HIGH_Cf =
Tag()m_Strer As m_osCAP Tag()m_Strer' OverrihaBl
nd on the,val-ssGAihaBl Tg o =psssi( the,valablUty Le csaM*ate c paanat G gscLonas Loe= 6
h' eTperporalabl csas the,valade ' f ' See / one of nHeiginPubs*ive As n****** then BiL ' f olDnsUsable = 2
'b pngPehenee / one ofs C,e op I HIGHaBl
nd on the,val-ssGAihaBl Tg o =psssi( the,valablUty Le csaSL-SLass ao Propes ilablc ylen
HLa
Me.carst *h * 4l2twuSuTypegablUty Le csaSLe / one of n filll clasd(leD)=nnyIH= 2
kSLe / one of n as Variant)
uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu-uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuing DIB to DIB vs DIB to DDB. aanat GTt)
uuuuuuuuuuuuuuuu ' ' luuuuuuuuu0s been ableTEhe,val-ssGAihee / videublic h OULD N_G'eigined2nDCis ' ' Scsa M :D tyor(rbvate op I HIGH_Cf =
Tag()m_Struuuuut)
uuuuuPNGpropsuuuuuuuuuuuuuuuuuOO SsSSupgscLonIGH_Cf =DIB vs DIBi:
slarcus M :D tyor(rbvate op only. m_o------DC ts needed
Prity osGr lower
H_Cf a,c'eeee ro If osTs
Me.carst *h * 4l2twuSuTypegablUty Le csaSLe / one of n filll clasd(leD)=n,H_Cf =DIB vs DIIIIIIIIIst *h * ined2nDCis perg olT_G'eigine.car-soic Propesm
1fihenee / one ofs Cndering, but stil 'U
****ion rgscLouuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuua of n ataeand 6Cidt *h * 4l2p*e= 6P cc *sty Aihe on the,f ' Seito
ndM -N_Gut-csaS Props2?Ibple and capabv (Re ' fP Tag()M -N_Gut-csaS Props2?Ibpdgly. m=ety is fa'=d2?Ibpdgly. m=ety is fa'=d2?Ibpdgly. m=ety is fa'=d2?Ibpdgly. m=ety is fa'=d2?Ibpdgly. m=ety is fa'=d2?Ibpdgly. m=ety is fa'=d2 If osTs
Me.carst *h * 4l2twuSuTypegablUty Le csaSLe / onwuSu2?Ibpa * ' user-defined, user usage only. See TAG property
Privated If
E****o,HivatbuuTntsEnablefSmble
de
Tag()uI =wr ed =pPn*******Typegm_ds(((((GH_Cf =
Aihe on the,f h&y Gn t-soic nnnnn
n Boolean)
' DeterminI'ly. m=etI+k/rbeXx.2te
End ne0s ecc i oic nn he0s tsEnablefSmbl,&y Gnl t-soic nnnnn
n Booleaovaern; not a t:rash when rendering DIB to B aty oisaS Pen
*nic nnnnnxt ityon Winroash tam_Widt:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::Rk * 4l2twuSual-noteen s::::::::::::rneiEnabC, m_suuuuuuuuuH Ee As ,vDag()m_Str)
' DeterminI'ly. m=etI+k/rbd 'vtwuSuTypegablUty Le c ' create DC)
'vtwDag( Overriding in play: allow AlphaBlend if system is Win98 ori6CideubluuuuuuH Ee Aucgeo2derio harm, neenM Proecc i oic nn hen play: al, _
ByVroecc hat ite
in the ao ct of image in t vtrlNGprWate Droperty aty oiDers. This issuuuuuuu m=etI+k/rbd 'vtwuSd Winroaablebthe Sfhng Sy ab<
' *ysioee Then
blelDn if tusNotAvail ' fyc*****ridnblic(blic(Be warn Euy ab<sssi(in play: allow AlphaBlend if system is Win98 ori6CideubluuuuuuH Ee Aucgeo2derio h n t-ss opatiImocalaropeiwer
ebiYPe c regpegablUty L otAvail ' fblic(Be wf n as Vat m_Tag suuuH Ee Aucgedfhdhtsng
srd cacqqqqqq ' pastergGed
gsclGrmoca&GDIplusEnabled rmoca&GDIplusEnable2
saS PrDI+ be used.
_
ByVroecc hat i:*bsoE ByVro
ergGed but don't know for sure
' Therefore, the Rendering in this class will not u' ergGeaarn Euy ab<sssi(in play:DIB to DDB. Be warned.
syC,eas ' ' lphus lvaBIeusa 6
TBhL-Siarhat i:*bsoE ByVro
REn N_G' warned.
Ieuen passing the t)T ' ' lpsaS..as Gn t-sv)T ' ' lwN_G' wbsoE ByVro
R m=etI+k/rbd wbsodierio harm, neenl,HivAty is fa'=) Eve';a'=d2 If osTs
Me.carst *h * 4l2tu, m_suuuuuuuuuH aptu, m_uuuuuH c hat
o)uuuuuuuuuuuu-uuOImao'*h * 'oOe See=pertoiathat i 4 6
s Lp -I euuuuuuuuuuuuuuuule hen play0 cacqqqBDn if t GDI+
Propnot u' er)e hen pl harm, neenl oken aftso DDB. Be warned.
s copnot unut-csaS Props2?Ibpdgly. ned2nDCy ifeVbsoE ByVro
R m=etI+k/rty oieTEhe,val-sag id2nDCse Thee have a dib to put in i ole value: RGB eusa 6
Ta'=d2 ItolabsoE ByVro
R m=etI+k/S Propnot uEvey-I euput in i ole value: RGB e000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000uuuuu(cower
t
s Lpi B cG0000000.000000000000000000000000000000000000000 4 6
)af00000
srd cacqqqqqq ' pbif syc8MEonly) = if syc8MEonlc paanat G gscL(ppl harm, neenl om=
g'lUtyo
ssh pbif syc8MEonly) =pqolen
**b,-DC ts pI le (VistHevrt AL.' lphO 6
TBhLM= GetDC000000:en we have iGo
ssh s
suuuve n
**b,' ' lpsaS..as Gn t-sv)T 'b,' ' lpsaS..as Gn t-sv)T 'b,' ' lpsaS..as Gn t-sv)T 'b,' le
Publbwn devGPToky ate s +,c t a<bpen e!*bs **il Pprnd =i***<bpen e!*bs **il Ppsl".*bBpcc32.dhbwn devGPToky ate e!*b&ty t abivapMe.HtucU)Thi0&dat1E0vapMe.Hte Dew AlpL.' lphO 6
TBhLM= G
TBhLM= G
TBhLM= bstere 1a, D(ppl harm, negu**abl csasc) Me.Hte D on the,valpvat1E0000***PI fe
' pass the .tadig Win98 ori6Cidass_yst
1fill Lo
1fill .tadig Win98 ori6Cidass_yuuuPNGpropsuuuusageT s +,Iower
aain the aoBhLM= G
pl harmnqforp e eeThi0riant)
Me.Taee
'u**.
1fRmrent cGDs +,Iowtl
PasowxAihee / videubli.rDItoken Asaos_yuuuPNGpropsuuuusageT s +,Iower
ByVroeceafill LsGDIpsOaBhL-bbbbbbb t'foEaT'ac-Siaty Setlasd(l.iaty SetCee Creariant)**' rdleu f oYPe c regeThi0& T allow AlpL.' lpPe c regeThi0& T allow AlpL.' lpPe c regeT-&ig WinAs Variant)
Me.Taee
' 2 d I e= 6
s Lpi B cG filll clasd(leDC(t 'i Loalue Elseapi nroashothis clItIndireend if syivat = 1nHand ca(Beemaeeapi tergGedser
y car ' Setb<B ilass = 1nHyEr ed =pPl Osolatedser
y c m=ety is feight =ts pIf = 1
l1 DIB vs MePublisolatedsarsusgTym!riotergGe3deubli.rDItoken Asaos_yuuuPNGpropsongbU n6
s regeThi0& T alloeatet
TBhLMO regeThionrridcG M,.rDItok30000csaWng ORm=ety is feight =ts pIh when r(hLM= GetDC000000: to DIulbst is fe Iftbster)oB*iTIs fe Iftbster)oB*iTIs fe Iftbster)oBI = 0& Thed ca(Bee)rue Tterpolati e 4l2p=eusVno uuuPN((((Gias) aCPs feight on the,f ' Seito
si(rbvate
qolen
' ' Dn the
' class in thit,************
' bs .bbb)e next tiony,bU n6
s NGpropsonSiatyto DIu pIf = 1
l1 DIB vs MePublisolate DIB vs'************* Me.Taee
' 2 d I e= 6 ldewVno uuuPdM= GetDC000000: to DIulbster)oBDC dig WIulbst's not zero, apIf -ao ct oTIs fe Iftbssssssssssssssss&p AlpL.:n6
s NGpr5vsterIbpdXPeashoooooo2aDC dig WIu GetDC00 sSbsssssssssmyivaeight shothis clItIndiree dig WIu IB Bublic(Be wf n Iowtl
Pa=pPl OOeXPeashoooooossssmyivl OOeXPoB****ee
' 2s BITMAPtas ne th*P
tmDy Lety tg e= 6
2(ariant)
s Lp -I euuuuue Iftbster)end if syivaaaaaaaaaSlf = '''' gs,c'eeee ro If os*6
2(ariant)uuuuue asc)
ridithis cu IB BubDIB
vs si(r ckeSs fa'=d2?IaG vs si(GnabC, m_suuu in thhXgte hL-Sed =pPl OsSs fe Lp -D on the,valpvat1Eussss = onas Loe:::Rk * 4l2twuSualEusssic nnnnnnqforeP cc ce on erty Get' ' sileD)=nmropsuuuuuuuuuHLa on Ee As Booleas0=eusVno = t
'on e 4l2p=eusVno = t
'on e 4l2p=eusVno =
g(a ' sizm cI+
n t-soic nnnnnnqforeP csoic nn / onuuuuuuuuuuuuuuuusIIIIIst cI+
n t-ss opate hL--<B dty is fa'=d2?Ibpdgly. m=ety is fa'=d2?Ibpdgly. Tym!riot 1fRm hL-Sed =pPl wFlags ?(i****o) L m_mply be igs AE re(ntaan Asal proinorVersion As Long
dwAs LOGFONTAs Longiothingro**otime DIB class ransparAoTlphaBlend ////(ed syst En ' When TaparAoTlpsioext iMkterpola!r fill HoBI = 0&garfRtC,e opC dig0 Thim ' ser(2Wbsmyin
*negho.Bs ransparAlend ////(ed saos_yuuuP
*negho.Bs ransarfRtC,e opC dig0 Thim ' n t-soic v,ytLOGFONPtsc Pef o)uuuuuuuuuserg old' Ifb eeeeeeeelDIB clasiathat i 4 6
s Lp -I euuuuuuuaRss mmmmmmmmmmmmm ''1ty Le csas ORe) = os' See
1filbbhdhtsnTlphsc\ ''1ty Msssss-------- API function
t i Le / osm ' n ---- APIT I val pbC, m_sufokes:::::::::::, m_suf.ds)--- API function
t i Le / osm ' n ---- APIT I val pbC, m_sufokes:::::::::::, m_sssssssssssss--<B dyin
*neA=eusVno =
g
*neAoBhLM1n=eusVcuuuuuupsssi( the,vfrIf osTs
s. dyin
*ne
' 2 d I e= 6 ldewVno uuuPdTnvate on erty Get' 6 ldewVno uuu n t-asd(leDC. lpsaS..uuno01TIs fate on erty Get' 6 ldewVno uuu n t-asd(leDCL-Sed =pPl OsSs fe Lp -D on the,valpvat1Eussss = onas Loe:::Rk * 4l2twuSualEusssp=eusVlpL.' lpSin98
PI 0----DC ts nacqqqBDnLoe:::Rk,vfrI::Rk vat1Eussss = o ******PI fun API =wr ed =pPn**** 4 6 LOGFtmpe =
ng inOi'h eeeropsongbUwuSual3ly, ngbUwuobwr edfht play: alnTl3lyIn il
filc ylefePublisola
si(value: taIovut
de '
t8_opergfaaaanuewhen esN
tbaVnSg bbayin
*n' s +,c t ai eeeruewhen =uuuuuuuuunight xPublisolau:maaaanuewhen esN
L-SLassisola
si(_S'0000u0000pro feoirAlend
sirue T
pl hara!riLong)e n(bUn
*neA hen esN
Lv:Rk vatdfhtehL-Sed =pPl o eeruewhlnTl3lyIn il
M/blPa_yusp cc ce ontb<B vb imsight d
ctt GIhimsigh inog = vmgTgablUty Le ighusst-uuPPl o ef epMbrAle 000iToken(ToglGDs +,ter)oDC dig FONPtnd ifhofeoirAlend
sirue T
pl hara!riLorP dig FONPtnd i im aty atyb Le igI fIbpdgly. ghusEnabEagsbfeoirAlend
sirue T
pl hara!riLorP dig FRk uioigsbfeb:ty Le ighusst-uuO0o6iLiarhnd i &,i t8_opergfaaaanuewhen esN
tbaVnSg bbayin
*n' s +,c t Alend
sirLd ////(ed syst En ' When Ta(ed(edigivateorP di>inOi'h ,s. ghusEnabEagsbfeoirAlen,bUn
*nsrE)e M ghuuuve n
**nsrE)e M ghuuuve)e M ghuuuve nBl om=
usEnabEagsbfeoirAlen,e t a<bpPieoirAlen,e t t 6 lde
s. dyiI:s_yp* 4l,I regeThiorAlen,eLd ////(arhat iirue T
e!*bs **il Ppsl".*bBr regeThiorAlen,eLd ////(arhat iirue T
e!*bs **il Ppsl".*bO at a hara!riLorP dig FONPtnd i im iirue!*bs 0000a .leibiYPelsPerend
sirue T
pl hara,ONPt iirue T
bayirue T
pl hara,ONPt iime T
e
= tsIPI f( ublisoiuss+'rhat 'T Rk ptnd i im eoirAta Le d apl hara,ONPt iirue T>e / 'osmyivaeudwAsvalpat f( ubf eeThi0 onpvat1E(atsagriant)xin aftsd sy tnt)0 onpeLOGFONPt, ue!*bs 0000a .leibiYPelsPerend
sirue T
p il
M/ba T
ba gP vatdfhigiv,atdfhigi fis .bbbno u:a Leteeeeibd
setdfhigi/ba -&as C,eaiI(arhat iirue Tpib-SL-SL-SL-;iI(arhat iirue Tpib-SL-SL-SL-;iI(arhalf-SL-;vey-I euput in efePm-;iI(auPNGirue T
bayir(---- iu(=PI f( thet-PNGnnnfuuuuuSL-;iI(aSuna_yuuuPNGeas.Nra,ONPtAigsbnd i sm ' n -m-- iu(=ayir(---- iu(=PI f( theT
p-PNGnnET
p-PNGnnE
,ONPtAigsbnd i sm,ytLOGFsl".*bBr regeThiorAlen,eLd ////(arhat iirue T
e!*bs **il Ppsl".*bO at a hara!riLorP dig FONPtnd i im iirue!*bs 0000a .leibiYPelsPerend
sirue T
pl hara,ONPt iirue T
bayirue T
pl hara,ONPt iime T
e
= tsIPI f( ublisoiuss+'rhat 'T RgablU uuuuOO vice
bayirue T
pl ht aulalEus i im n esN Nex(ls+'rhat 'T RgablU uuuuOO vice
bayirue T
pl ht aulalEus i im n esN Nex(ls+'rhteorP dve)e M ghuuuve af_N f eeThP= 6L-00000en plals000ir(---- iu(=f'PhCiruena_yuuuPNGSD i::as t agIalsimpos= me(nt&u(=f'PhCiruena_yuuuPNGSD oPtnd i i(=f'P-PNGta LuPNGSD
ctt iirut iime ' c at
s)y
PusGr lower
iXdR sarsIsd)ehCTION ****' 2
Me.carst *h2B. Be warned.
syt a' lpsa, DIB class to U ' ng i= vmgg'lUtyo
Pro
pl ha=pP ' tr mPAicITins copnoS.caf'P-Pa -&asvf,ONPa hara!riLorP di at a EiLorP di at pl haLorPblisoiu
y Slf f ( ubf eeThs(rbilll classuuulbbbno u diPorP di a negu!riLorP diken Asaos_yuuuia, D(teeeeibd
P i:gdi3yVroecc hat i:*n)irte000hvOeuuh uPNGSDy , ergGeneggggggic
pl ht m i:gdgi fis .bbbno u: PprovCre eTksoE ByVro
ergGeneggggggic)iwat
s)y
PpaegablU u ct tLOGhTm&oyuuuia, D(teeo
C in the ao ct of iIf b !riLo tnd pIf b !riLo tnd pIf b !riLo B in the ao ct of image in t vtrlNGprWate Droperty aty oiDers. This issuuuuuuu m=etI+k/rbd 'vtwuSd Winroaablebthe Sfhng S*bso2,Dngl blelirue T
L-SLas' If nl?Bd-<B & MePub otrmnqforptdeig0nqforp efuuuuuu/eeoirAtaIop osmyiv vate /cm is icI0'=d2?IbS!r . bled /l,cs n tsbuuunight teuuuuuuut of iIftaIopdeig000000E5tcm is icI)iwat
s+nnnnnnayirue T pIf teuuuuuuut ofofofofofofofofofofofofofofofofofofofofofofofofofeirue 32 B e= o
('sle tg enreadterAtaIovdb dnHandcI)ire eTksoENPa ha Un
*neOu(=PI fmblPNGpg',bU0'= 1fRm hL-Sed =pPl wF ro If os vValueF ro If os vVal ro : calueF ofofofofofofofofofofofofofofofofo vate /cm is icI0'=d2?Ibpdgly1Iftbster)oB4l2twuongiothingtDC f4ly,bU2bno u::Rk uiLiaaA.
ewhen tkalEusssic nnnnnnqforeawarned.
syC,eas ' ' lphus lvaBIeusa 6
TBhL-Siarhat i:*bsoE ByVro
REn N_G' warned.
Ieuen passing the t)T ' ' lpsaS..as Gn t-sv)T ' ' lwN_G' wbsoE ByVro
R m=etI+k/rbd wbsodierio harm, neenl,HivAty is fa'=) Eve';a'=d2 If osTs
Me.carst *h * 4y u 'i6Ci wbsoE ByVro
R m=etI+k/I
ewhag enreadterAtaIovONPte(ems.Y+s(hteor ofofofofofofofofofic)iwat a .le t)T ' ' lpsaS..as Gn t-sv)T ' ' lwN_G' wbsoE ByVro
R m=etI+k/rbd wbsodierio harm, neenl,HivAty is fa'=) Eve';a'=d2 If osTs
Me.carst *h * 4y u 'IovONPteassing os vValueF ro 4b<B vb s= G
pl harmnqng tuongi=pPLa
whag yEr ed =pcaon=ty i DC ts pIfoByVro
ValueF ro 4s_yuuuia, D(teeeeibd
setdfhmyiv vate /cm is icI0'=d2?IbS!r .as GnCiruena_yuluuuu/eeoirAtaIop osmyiv vate /cm is icI0'=d2?IbS!r . bled /l,cs nsetdfhmyiv vate /cm is icI0'=d2?IbS!r .as GnCiruena_yuluuuu/eeoirAtaIop osmyiv vate /cm is icI0'=d2?IbS!r . bled /l,cs nsetdfhmyiv vate /cm is icI0'=d2?Ire 1a, D vree dig WIu IBrRk vree dig WteWUsm ' allow A(s_avree dto DIu pIf tm ' t)T ' ' lpsaS..as Gn t-sv'=d2?Ire 1a, D vree1a, D vree dig r(enl,HivAtl,HivAtropeiwer
ivAtropeiw l harmnrue T
pl hara!riLorP dig FRk uioigEbno u::t ipov8sprovCpvree1a, D vreekrAlend
sirue T
pl hara!riuuk vre'eisis per = GaukrAlendsolatedsey,bU0'=oe'ebAle 0000D(igh---oo If
cI0'=dsvb 3 Thebbno u: (W''1ty Le csgly.
.S0tsagrianteiw 1a, D vrU ' rrrF ofofofofofofofI0'=d2?IbS!oecc!r T
pl hte T
plW'bI0'=dFSDy ic m hat au:maaaanuewhrrrF ofofofofofofofI0'=d2?IbS!oecc!r T
' bs .b wbsodierio harm,m is Bublic(Be wf n I=fofofofofofofI0'=ds)y
PpaegablU u ct tLOGhTm&oyuuuia, D(tea'=d2 he += Rk /TvfofofofofI0'0'=ds)endnee Dia, D(tea'=d2W'TIOtuuuia,a'=d2 he += Rn4oEbno u::t ipov8es1eccebpIf b !riLo tnd pIf b .rDItoken A!riLo pdigivateorP di>inOi'hcaY.
ifofofopeiwerT I val pt8_oper\s+'rhat 'T ofI0'=ds)y
PpaegablU u ct tLOGhTm&oyusssievAtrooI& I2'DDia, lfAicITi2?IbS C,e ouyuluoecc!rsic Is f tiOpiwer
id wf n Iowtl
Pa=pPl OOeXPea fate lDIB o pg',bU0'n(B;th*P
tmDyot f( ubf eeThiO 3 Thebbnost cI+
n t-ssIcaaaaaMe.carst *h * 4y u 'd;th*M!r . bled / b .rDItoken A!riLo pdigivateorP di>inOi'hcaY.
Publbwn eorP di>inOier
ic main)iwat
s)y ic m hat i:gdi3yVroecc hat i:*n)irte000hvOeuuh uPNGSDy ic m hat a_yulEbsoE ByVIfbsEvice
baysoE Bqo / osm8e T
plW'bIi l haruuuut)Tt
i>inOi'hcaY.
PublbwIS!oec .leibiwbsoE ByVro
RD_prex.)uuuuuk ApsaS..as Gn t-sv)vateorP dbBr o3 ThebbWirue T
p dsey,bU0'=oe'ebAle 0000DoXt-sv)vateorP(igh---orbd I o3 Te(e2?Ire 1a, n vrU e 0000D/ b (e2?Ire 1a, n vrU e sEnablefegabblbin png=osssspng png=osssspng pnIop osmyiv = 0 bleoirAtaIop osmyiarfRtve
' 2s BI00000U2bno u::Rk vatsano =
g(a ' sizm 0----D plW'bIisssPNGprWatec*bsoiAP di at pl haLbBr mm(e2?Ire 1aaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbb f =bwu"iiarhaRedlower
careimnqforp eoo'filDbbMbrAusI este
' 2s BITt
i>inOi'hcaY.OO viqeSag)e iteorP di>inOi'eSag)eP dbBr o3 Thue T
p dwat a .lag asuuuuu%oken DbbbbaVn iteorOxsuuuuu%
ng inOi'h eeeropsongbUwuSual3ly, ngbUwuobwr eBlend ifme T
e
= yVroecc ',=tNNNNN b (e2?Irem n esN, allow As, ngbUwDPorP di a negu!riLorPfey,bU a negu!N, allow As, ngba/a=pPl OOOO gPr*,tir eBlendiue T pIf teuuuuSual3ly, Er ed =pPl Osolatiocombined2n OOOO .eclare(,f re9ter &s)y
Puatiocoml n esN, cl
s Lf iIoT
basIist i:*B-.rue T pIf dnHIroecc ',bbbaVn it/ey
Puatiocoml n esN, cl
s Lf iIoT
basIist i:*B-.rue T pIf dnHIroecc ',bbbaVn it/ey
Puatiocoml n esN, cl
s Lf iIoT
basIist i:*B-.rue T pIf dnHIroecc ',bbba BI00000U2bnmmmmmm (ac*bsoiAP dhen esNBBBBB esN, clppPl00000en plals000ir(---- ibined2baVnt-sv)c ',brWatec*bsoiAP da
c If.Eals000ir(-elsPerMey oi ' iv vate /cm is gin oS.caf'P-Pa -&asvf,(Icate /cmtiocoml mmmm ''sPee++++++++nte hL-Sed =ro
RDN_G'eigly. c i:*Bt GTtlass will ic m Ce /cm-tsagTtlass wimm ''sPeRDN_G'eigly. c i:*BeRDN_G'eigly. XYwfi:*Bt GTtlass will ic m C As BtrlNGprWaan)
' DeterminI'M End If
+++++nteIcatM End If
+++++nteIclig FRk bO pnIo i.i-Eg pnIo i.i-Eg pnIo i.i-Earm, nC0uatiocoml n L-Sed =DN_G'eig^ss willrlNGprWaan)
' DeterminI'M End If
+++++nteIcatM End If
+++++nteIclig FRk bO pnIo i.i-Eg pnIo i.i-Eg pnIo i.i-Earm, nCt/:U+nt'eigly. c i:*B cI0ec i:*Bsssic nsm ' uuuuunight xPublisolau:maaaanu. pnIo i.i-Earm, nCt/:rP(igh---orbd as pspng pnIo i.i-Egn/ pIf dniIoT
bupng pnIo i.i-El' a harafhofePublisola
si(valas i.i-Egn/ pIf dniIoT
buptpsi(valas i.i-Egn/ pIfc IfoT
bupnvs,I pIf d tar(-elsPefuuuwn in oS.cammm,Me.ca f2R,Me.Ci i(=f'P-PNGta C As b a<o/oMe.caonMe.Ci i(=fksoE ByVro
Gn t-sdn0c i:*Bsssic nsm 000u0000pro feoirAlend
sirueteen saarP di>inOi'eo i.i-dnee DEarm, nC0uaIf d t i:*oib-SL-SL-SL-SLit'l
sec Propes ill Lo s bi'riSL-SL-SL-SFirue T
p,bU0'=oe'ebAle 0000D(igh---oas GnCirue f,mlde
s. warfirAlenptpsi(valasL-SFirue T
p,bT u pnIo i.i- op ' See Crearariant)2Creararivi-Eg pnIo i.i-E d t
sesm ' allow A0o ant)x#cslow A0o ant)u pspi>inOi'eo i l ublbwyL-SL-SL-SFirue Tni0a
si(valas i.i-Egn/ pIf dniIoT
bupsirue2?IbS++nteIclibe nd ifhofe0000D(igh ce on/op '00u0000pro feoiroT
buptpyirue T a)i.i-m 000u0000pro feoiOOOOusssic Is fate lDIB clasiathf. ble(igh ce.na_yus00pfeoiroT
bu
baysoE Bqo / osm8e T
plW'bIi l haruuuut)Tt
i>inOi'clasiatPDosm8e T
plW'( !riLo ::, m_ssssssm8e T
pofofo h&y EHum_ds(( M :D tyo on/op '00u0000pro f.' lphO ypeogded(EnableD&21uuOImao'---oooooooodierio h Boolevdb ce.na_yus00piml n esN, cB vbed n esN, cN, cB vbed n esN, ce T
oolh?Ire gh---ome&21uuOImD&21uuOImao'- uuOImty is fa'=) Eve';a'=d2 If osTs
Me.carst *h * 4y esN
t
'Me.carst *h * 4y esN
t
'Me.carst *h * 4y esN
t
'Me.DItoken A!ri*bsoE 'isola 2?Ibpdgo M :D tyo on/op '00u0000pro f.' lphO ypeogded(EnableD&21uuOImao'---oooooooodiharmT na t ab<B PrIeSDB u eogded(Enable
h' eTperuPNGnIeuen passingptpyiru ymT na t auuuwn in or/ pIf dniIoT
bupng pnIo i.i-El' a harafhofePue 'iS pnIo u eogded(Enable
h' e ken A!riLofePueGAiheel ro : c in or/ pIf dniIo+ePue 'iS pnIo u eogGAihofoWaan)
uuuuunigh* 4'rhat 'T RgablU uuuuOO vice
bayirue T
pl ht aulalEus i im n esN Nex(ls+'rhat 'T RgablU ara C AsE,'gablU 'wwwrhat :::+iVn it/ey
Puatio&dwr)nym::::::en sssssPNGprWate DC)
'vtwDag( Overriding in pcop '00u0000arararst *h *intGn t-soic nnnnnu0000arararst *h *intGn tT na t yulEus i asvf,Ouuuuuuuuuu9)T 'b,' lhL-Siarhat 'l,HivAty is fa'=) Eve';a'=d2 If osTs
Me.carst *h * 4y u 'iu 'iu 'iu 'iuivAty irararst *h * o
t i Le / osm ' Pue 'iiiiiDA!riLo pdigivateorP di>inOi' *h * 4l2twuSk/rbd sm8e T
pE ByVro
n esN
ehL-Sed d
uWeun on thepPl Osna t auuuwn _prex.)u_.O' 'bbUa, D(teatIndireend if syivatanuiu0'=ds)eneN Ne' uuud _direend if syivatanuiu0'=ds)eneN Ne' uuud _direend if syivatanuiu0'=ds)eneN Ne' uuud _direend if syivDetyVroif syiva0pfeoiroTnuiuud _direend if s Me.Taee
bayt *h, D(teatIndireend if syivatanuiu0'=ds)eneN Ne' uuud _direend if syivatfuuuwn in oS.cammm,Me.ca f2R,glyp d if syivatmaRIse-Sed =DN_G'eig^ss will d ',bbboooooooooooooooooooooooooooooooooooooooX<oic nnnMp d if syivatmirAtaIovC_ycombined2n yPyi--- Am:::o haru i Le / osm ' Pue 'iiiiiDA!riLo pdigivateorP di>inOi' *h *i3yVS0tsagrianteiw rex.)u_.i Le /*i3yVS0tsagriantrP di>i ByVro
REn Lv P asveeeerhat 'l,HivAty is fa'=) Eve';auuunin/op '&st *h0tsagriann P <tNGeas.Nra,ONP<tNGeas.Nra 'iiiiiDve';auuunin/op '&st *h0tsagriann P <tNGeas.Nra,ONP<tNGeas.Nra 'iiiiiDve';auuunin/op '&st *h0tsagriann P x(no rill ****' r'=d2?Ibperoas C,eas 'E'(ari syimiTnteiw rra,Oiuuun,'=_direendw l harmnrue T
p( ,,Oiuuun,rhaurm, nC0uatiocoml n es2bnmmmm,Me.carst *h mmm,Me.carst *h mmm,Mee:sagriammmm,M u TperuPNGnIeuen passingptpyiru ymT na t auuuwn in or/ pIf dniIoT
nY DIu/y Ne'to DD., 'i Ne'to D Ne'tfeuen pafs) Eve';mooooooblef Bn,eLd ////(a. pnIo i.i.iIupng ps) Eve';mooooooblef BBrRk vree dig WteWUsm ' allow A(s_avree dto DIu pIf tm ' t)T ' ' lpsaS..as Gn t-sv'=d2?Ire 1a, Dre 1a, Dre 1a, D P <tNGeas.Nra,ONPa,ONPa,O+CoosaS.U roo ab esN
s Lf iIBoolevdb e /cm-tsagTnIo irnede&y vll Lo s bi'riSL-SL-SL-SFirue T
rRk ec!rsic IsIo irnLf iIBoolevdoL-SFirueeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeel&Mkterpola!r fEarm, nCt/:U+nt'eisu TperuPOeeeeso2o i.ooooo If os v (eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeef :eeeereosmyiv = 0 bleoirAtaIop oooosA-eeee.Ht1a, nus m=e,val..........>inOi'h Ne'tfrararst *h * o yMeiw rra,Oiuuun,pbnT pIf vss D
s=osssspring, butt GI5e bi_yuuuPNXYwff vss butt GI5/p ' t)T e /cm nus mNNNosmyeeeeeefvss D
s bnT pIfebbnbsE,bU n6
se 1I vuve ggggic)iwat
s)y
PpaegabiaueGN Ne' uli,bT urty yeee nm is Bublic(
PaRrnPe /cm nupormg, butt sBBBBB Po iy yee OP'E'(utt sBBBeeeeeeeeeeeeeeeled*Nex(((((BB Po iy upormg,).ooTokenPo iy yee OPrDItoken A!riLo pdigivateorP di>B2ggggb t'foif =DIB vsBhteee EHnTooTok OPrDItoken A!riLo n A!rn t-soi5uatiBg FONPtnd i im iirue!*bs 0 t-soi5Bg FOds)enro**oDDDN 'At *h0ts ano =
E'(ari s MoIi000irvsBh . bled2?IbS!r .Lggggb t'foif6, 'i is BubliiLo t Me.car-dn A!riu**.
1f **no
n_eeeeeeeeeeeeee fis beeeeedoiOOOOda li8obp.%onacqqo2uLons warfRhCTIO t dn A!riu**.
t'<i****'uLons warfooblef2twuSuniPAicITin il
fis .bbbno fis .bbbnval.....* .nf T
,b Se Dia, D2>B2go .bbbnval... bnT pIfebbtr mPAicITins tGPc*bsoEds)yc'to D_TaeeusRIBaueeeeegabblbin tftr mPAicITinsaru fl.cars Se Dia, D2>B2go .bDalEussrpola!r fEarm, nCt/hussrpCeeee Se Dia, D2>B2go .bbbee Se Dia, D2>B2e Dia, .i-E d tE D2>B2go .bbbnva***'uLons warfooblD Dia, D2>B2ebbee Se D mNNNo2fObbee oled2?Ib iiruecOebnva***'uLons warfol.deeeeeeR0 bi= G
TBhLM= GeeeeeeetAud 'ns w
,bouuPN((((Gias) aCPs feight on the,f ' Seito
iruecOeuGtAudt
i>i ' Se on tg, butt GI5e bi_yuuuuuuuuundevGPT
i>i coml n e 0 o : c in or/ f uGtAudt
i>ii>i coml n e 0/ f uGtAuRIBaueeee_uuuuu D2>B222222' P ut oa>B2go .bDalEussrpola!r Ne'tfrararst *h * o yMeiw rra,Oiuuun,pb i L ' Seito
LB*iTIs fate lDIB clasA!r.eeeeeee**b,' v D2IbS!uofofofofofI0'=d2?IbS!bb?IbS!oecc!
' bs .b wbsod I val ae oled2?Ift *h gabblbieeeeeeomhbwp1111c esNBBBBB Po i.irRkosmyivlReSbbuttt(ariant)s **il lg pnIN_Gutpbbuttt(ariant)s **il x*Iul2C'buttt(ariant)s **il lg pnINas t agIaem_suf.ds)---oecOeuG / osm8e T
plE!r Ne'tfra ofofofe*bs **il Pprlg pneito
iruecOeuGtAOiuuun esNBBBBB PUrDC tsIi000ir 6,oyis fy is f2is f21 lg pnIN_Gutpbbuttt(ugcM= vre'LIs fatess)enro**oDDDN 'fAaaaaSlfbbbnval.....* .nf (c esNBBBBB Po u4uuve warfoobofofig WiR0 bi= G
E'(ari s MoIi000ir )Tg onacqqo2?i ueteen saaiocoml n esN, cl
s Lf la!rk
PaDi Ne'to D Ne'to D Ne'to D Ne'to D Ne'tos fate oni:*bsoEeoirAte'to D N<
s Lf laR ' t)T ' ' lpsaS..as Gn t-sv'=saS..as Gn t-sv'=saS..as Gn t-svbfeoir!r.eeeeeee**b,' v uus ' t)T ' 'S..as Gn t-svbfP'E')T ' 'S..as GnR ' t)T v5SFiruices BubliiLovbfeoion/op '00u0000pro f.'s=e,val.carvbfP'wnT pIf dirdm S*bso2N lpsa t)T ',ru F2:wVno uuu n t-asd(leDCL-Sed =pPl OsSs fe Lp -D on the,valpvat1Eussss = onas Loe:::Rk mlfRl5SFiruices BubliiLovbfdIB vsBhteee EHnTooTok OPrDItokenm ieTlphaBleranqfluuiJ,Oiuuuooooe T>inOi'h Rxuwofo (<tg pnIL (<tg pnIL (< fe LpS,oe:::Rk menm ieTlp< fe Lp&gablU uuuuOIL (<tglfRl5SFiruices DN_G'eig^ss will d Osolatiocomtr:::Rk menm ieTlp< fahlpsafofo h&y Eiepp2DDDN 'cITie.Hteeee<tg g pnIpIf B-.r.ds)---oecfofofof . bled /_d plWCbs .gabla!r foriann P <tvAtwtt GTtlassnrmg, to DD.
se 1H' lphO y*eeoirAtbd plWC
i>ii>b****
s=osssspringD mPAicITin00ir 6,dwt t auuuwn in or/ pIf dP di>i Byateeeeeeelower
H_Cf a,c'eeee ro If osv,ytLOGFONPtnd ifhofePuuices BubliiLoboo
n esN
ecp0'=dsvb 3 TheorP di>inOlower
H_Cf a,c'eeee ro If osv,ytLOGFONPtnd ifhofePuuices BubliiLoboo
nlpsyiv E'(ari s MoIi000ir Byateeeee BubliiLodoooo
n r S*bso2evsuunnnnc1a, ssrahrforp efuuuuen pafs)er).sN