Conversion Given an ICM Profile (Visual Basic)
1. |
Define the following global variables: |
Dim ClrHandle As Long
Dim cnvParam As CONVERSION_PARAMS
Dim wtPoint As WHITEPOINT 'this needs to be defined in VB, because its member in CONVERSION_PARAMS can't be accessed since it is a pointer and not a structure
Dim RGBColor(3) As Byte
Dim ColorSpace(4) As Byte
2. |
Set the conversion options by filling a CONVERSION_PARAMS structure: |
wtPoint.nWhitePoint = CIELAB_D50
wtPoint.xWhite = 0
wtPoint.yWhite = 0
cnvParam.uStructSize = Len(cnvParam)
cnvParam.nQuantization = 8
cnvParam.nMethod = USE_CUSTOM_ICC
cnvParam.nActiveMethod = USE_CUSTOM_ICC
cnvParam.pCmykParams = 0
cnvParam.pLabParams = 0
cnvParam.pYuvParams = 0
cnvParam.sDstInputTable(0) = 0
cnvParam.pWpoint = VarPtr(wtPoint)
cnvParam.pMemInputProfile = 0
cnvParam.pMemOutputProfile = 0
Dim str1 As String
str1 = "C:\\MyRGBProfile.ICM"
Dim i As Integer
For i = 0 To Len(str1) – 1
cnvParam.sInputProfile(i) = Asc(Right(str1, Len(str1) - i))
Next i
str1 = "C:\\MyRGBProfile.ICM"
For i = 0 To Len(str1) – 1
cnvParam.sOutputProfile(i) = Asc(Right(str1, Len(str1) - i))
Next i
3. |
Initialize the color conversion handle with L_ClrInit (): |
L_ClrInit ClrHandle, CCS_CMYK, CCS_RGB, cnvParam
4. |
Now, do the conversion: |
ColorSpace(0) = 100
ColorSpace(1) = 100
ColorSpace(2) = 100
ColorSpace(3) = 100
L_ClrConvert ClrHandle, ColorSpace(0), RGBColor(0), 1, 1, 0, 0
5. |
At the end, free the color conversion handle: |
L_ClrFree ClrHandle