Xojo iOS にてQRコード生成をShift JIS形式で生成するモジュール
Function generateQR(qrString As Text, width As Single, height As Single) As iOSImage
Declare Function NSClassFromString Lib "Foundation" (aClassName as CFStringRef) as Ptr
// - (CIImage *)createQRForString:(NSString *)qrString
// {
// // Need to convert the string to a UTF-8 encoded NSData object
// NSData *stringData = [qrString dataUsingEncoding:NSUTF8StringEncoding];
Declare Function dataUsingEncoding Lib "Foundation" Selector "dataUsingEncoding:" (str As CFStringRef, enc As Integer) As Ptr
Const NSShiftJISStringEncoding As Integer = 8
Dim stringData As = dataUsingEncoding(qrString, NSShiftJISStringEncoding)
// // Create the filter
// CIFilter *qrFilter = [CIFilter filterWithName:@"CIQRCodeGenerator"];
Declare Function filterWithName Lib "UIKit" Selector "filterWithName:" (obj_ID As Ptr, filtername As CFStringRef) As Ptr
Dim qrFilter As Ptr = filterWithName(NSClassFromString("CIFilter"), "CIQRCodeGenerator")
// // Set the message content and error-correction level
Declare sub setValue Lib "Foundation" Selector "setValue:forKey:" (obj_ID As Ptr, data As Ptr, Key As CFStringRef)
setValue(qrFilter, stringData, "inputMessage")
// [qrFilter setValue:@"M" forKey:@"inputCorrectionLevel"];
Declare sub setValue1 Lib "Foundation" Selector "setValue:forKey:" (obj_ID As Ptr, data As CFStringRef, Key As CFStringRef)
setValue1(qrFilter, "M", "inputCorrectionLevel")
Declare Function valueForKey Lib "Foundation" Selector "valueForKey:" (obj_ID As Ptr, key As CFStringRef) As Ptr
Dim qrCIImage As Ptr = valueForKey(qrFilter, "outputImage") // ← CIImageを取得
Declare Function imageWithCIImage Lib "UIKit" Selector "imageWithCIImage:" (obj_ID As Ptr, ciimage As Ptr) As Ptr
Dim qrCodeImage As Ptr = imageWithCIImage(NSClassFromString("UIImage"), qrCIImage)
Dim qrImageData As iOSBitmap = New iOSBitmap(width, height, 1.0, False)
CGContextSetInterpolationQuality(qrImageData.Graphics.Handle, 1)
'qrImageData.Graphics.Alpha = 0
qrImageData.Graphics.DrawImage iOSImage.FromHandle(qrCodeImage), 0, 0, width, height
Return qrImageData.Image
End Function