Example: /MacCF/ColorSync/Colorsync Transform

Online Documentation   -   Statistics   -   FAQ   -   Plugin Parts (All, Dependencies)   -   Class hierarchy

New in Version 22.2 22.3 22.4 22.5 23.0 23.1 23.2 23.3 23.4 23.5 24.0 24.1

The list of the   topics,   classes,   interfaces,   controls,   modules,   global methods by category,   global methods by name,   screenshots,   licenses   and   examples.

Platforms to show: All Mac Windows Linux Cross-Platform

/MacCF/ColorSync/Colorsync Transform


Required plugins for this example: MBS MacCF Plugin, MBS Main Plugin

You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacCF/ColorSync/Colorsync Transform

This example is the version from Thu, 29th May 2019.

Project "Colorsync Transform.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Löschen"
Const kFileQuit = "Beenden"
Const kFileQuitShortcut = ""
End Class
Class Window1 Inherits Window
Control Canvas1 Inherits Canvas
ControlInstance Canvas1 Inherits Canvas
End Control
Control Canvas2 Inherits Canvas
ControlInstance Canvas2 Inherits Canvas
End Control
EventHandler Sub Open() Dim p As Picture = LogoMBS(500) // Xojo pictures are in Generic RGB usually. // as we convert here, we assume we correct from sRGB to GenericRGB Dim SourceProfileFile As FolderItem = GetFolderItem("/System/Library/ColorSync/Profiles/sRGB Profile.icc", FolderItem.PathTypeShell) Dim DestinProfileFile As FolderItem = GetFolderItem("/System/Library/ColorSync/Profiles/Generic RGB Profile.icc", FolderItem.PathTypeShell) 'SourceProfileFile = DestinProfileFile If SourceProfileFile.Exists = False Then break MsgBox "Failed to locate source profile." Return end if if DestinProfileFile.Exists = false then break MsgBox "Failed to locate destination profile." Return end if dim SourceProfile as new CSProfileMBS(SourceProfileFile) dim DestinProfile as new CSProfileMBS(DestinProfileFile) if SourceProfile.Handle = 0 then break MsgBox "Failed to load source profile." Return end if if DestinProfile.Handle = 0 then break MsgBox "Failed to load destination profile." Return end if dim options as new Dictionary dim profilesequence(-1) as Dictionary dim SourceProfileDic as new Dictionary dim DestinProfileDic as new Dictionary SourceProfileDic.Value(CSTransformMBS.kColorSyncProfile) = SourceProfile DestinProfileDic.Value(CSTransformMBS.kColorSyncProfile) = DestinProfile SourceProfileDic.Value(CSTransformMBS.kColorSyncRenderingIntent) = CSTransformMBS.kColorSyncRenderingIntentRelative DestinProfileDic.Value(CSTransformMBS.kColorSyncRenderingIntent) = CSTransformMBS.kColorSyncRenderingIntentRelative SourceProfileDic.Value(CSTransformMBS.kColorSyncTransformTag) = CSTransformMBS.kColorSyncTransformDeviceToPCS DestinProfileDic.Value(CSTransformMBS.kColorSyncTransformTag) = CSTransformMBS.kColorSyncTransformPCSToDevice SourceProfileDic.Value(CSTransformMBS.kColorSyncBlackPointCompensation) = True DestinProfileDic.Value(CSTransformMBS.kColorSyncBlackPointCompensation) = true profilesequence.Append SourceProfileDic profilesequence.Append DestinProfileDic dim t as new CSTransformMBS(profilesequence, options) if t.Handle = 0 then MsgBox "Failed to initialize the transformation." else dim toptions as new Dictionary toptions.Value(t.kColorSyncConvertQuality) = t.kColorSyncBestQuality dim q as new Picture(500, 500, 32) if t.Convert(q, p, toptions) then canvas1.Backdrop = p canvas2.Backdrop = q Dim f As FolderItem = SpecialFolder.Desktop.Child("debug.png") q.Save(f, q.SaveAsPNG) else canvas1.Backdrop = p MsgBox "Failed to convert." end if end if End EventHandler
Private Function CopyCMYKChannel(m as MemoryBlock, width as integer, height as integer, offset as integer) As Picture dim p as new Picture(width, height, 32) dim h as integer = height-1 dim w as integer = width-1 dim r as RGBSurface = p.RGBSurface dim c as color dim n as integer for y as integer = 0 to h for x as integer = 0 to w n = m.UInt8Value(width*4*y+x*4+offset) c = rgb(n,n,n) r.Pixel(x,y)=c next next Return p End Function
End Class
MenuBar MenuBar1
MenuItem FileMenu = "&Ablage"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Bearbeiten"
MenuItem EditUndo = "&Rückgängig"
MenuItem UntitledMenu1 = "-"
MenuItem EditCut = "&Ausschneiden"
MenuItem EditCopy = "&Kopieren"
MenuItem EditPaste = "&Einfügen"
MenuItem EditClear = "#App.kEditClear"
MenuItem UntitledMenu0 = "-"
MenuItem EditSelectAll = "&Alles auswählen"
End MenuBar
End Project

See also:

The items on this page are in the following plugins: MBS MacCF Plugin.


💬 Ask a question or report a problem