Fixed part macOS...
Code: Select all
CompilerIf #PB_Compiler_OS = #PB_OS_MacOS
; Addition of mk-soft
Procedure OSX_NSColorToRGBA(NSColor)
Protected.cgfloat red, green, blue, alpha
Protected nscolorspace, rgba
nscolorspace = CocoaMessage(0, nscolor, "colorUsingColorSpaceName:$", @"NSCalibratedRGBColorSpace")
If nscolorspace
CocoaMessage(@red, nscolorspace, "redComponent")
CocoaMessage(@green, nscolorspace, "greenComponent")
CocoaMessage(@blue, nscolorspace, "blueComponent")
CocoaMessage(@alpha, nscolorspace, "alphaComponent")
rgba = RGBA(red * 255.9, green * 255.9, blue * 255.9, alpha * 255.)
ProcedureReturn rgba
EndIf
EndProcedure
Procedure OSX_NSColorToRGB(NSColor)
Protected.cgfloat red, green, blue
Protected r, g, b, a
Protected nscolorspace, rgb
nscolorspace = CocoaMessage(0, nscolor, "colorUsingColorSpaceName:$", @"NSCalibratedRGBColorSpace")
If nscolorspace
CocoaMessage(@red, nscolorspace, "redComponent")
CocoaMessage(@green, nscolorspace, "greenComponent")
CocoaMessage(@blue, nscolorspace, "blueComponent")
rgb = RGB(red * 255.0, green * 255.0, blue * 255.0)
ProcedureReturn rgb
EndIf
EndProcedure
Procedure OSX_NSColorByNameToRGB(NSColorName.s)
Protected.cgfloat red, green, blue
Protected nscolorspace, rgb
nscolorspace = CocoaMessage(0, CocoaMessage(0, 0, "NSColor " + NSColorName), "colorUsingColorSpaceName:$", @"NSCalibratedRGBColorSpace")
If nscolorspace
CocoaMessage(@red, nscolorspace, "redComponent")
CocoaMessage(@green, nscolorspace, "greenComponent")
CocoaMessage(@blue, nscolorspace, "blueComponent")
rgb = RGB(red * 255.0, green * 255.0, blue * 255.0)
ProcedureReturn rgb
EndIf
EndProcedure
Procedure.i OSX_BlendColor(Color1.i, Color2.i, Scale.i = 50) ; Thanks to Thorsten
Protected.f R1, G1, B1, R2, G2, B2
Protected.f Blend1 = Scale / 100
Protected.f Blend2 = 1.0 - Blend1
R1 = Red(Color1): G1 = Green(Color1): B1 = Blue(Color1)
R2 = Red(Color2): G2 = Green(Color2): B2 = Blue(Color2)
ProcedureReturn RGB(R1*Blend1 + R2 * Blend2, G1*Blend1 + G2 * Blend2, B1*Blend1 + B2 * Blend2)
EndProcedure
Procedure OSX_GadgetColor(Type = #PB_Gadget_BackColor)
Protected UserDefaults, NSString
Select Type
Case #PB_Gadget_FrontColor
ProcedureReturn OSX_NSColorByNameToRGB("controlTextColor")
Case #PB_Gadget_BackColor
UserDefaults = CocoaMessage(0, 0, "NSUserDefaults standardUserDefaults")
NSString = CocoaMessage(0, UserDefaults, "stringForKey:$", @"AppleInterfaceStyle")
If NSString And PeekS(CocoaMessage(0, NSString, "UTF8String"), -1, #PB_UTF8) = "Dark"
ProcedureReturn OSX_BlendColor(OSX_NSColorByNameToRGB("controlBackgroundColor"), #White, 87)
Else
ProcedureReturn OSX_BlendColor(OSX_NSColorByNameToRGB("windowBackgroundColor"), #White, 87)
EndIf
Case #PB_Gadget_LineColor
ProcedureReturn #Gray
EndSelect
EndProcedure
CompilerEndIf