Xojo iOS / EncodeBase64

XojoのiOSにはEncodeBase64がない。

仕方がないので,UIKitのbase64EncodedStringWithOptionsを使う

Function EncodeBase64(t As Text) As Text

Declare Function dataWithBytes Lib “UIKit” Selector “dataWithBytes:length:” (class_id As Ptr, bytes As Ptr, length As UInt32) As Ptr
Declare Function base64EncodedStringWithOptions Lib “UIKit” Selector “base64EncodedStringWithOptions:” (class_id As Ptr, options As UInt32) As CFStringRef

// Create NSData pointer to be point of reference.
Dim data As Ptr
data = NSClassFromString(“NSData”)

// Create global ASCII TextEncoding
Dim te As Xojo.Core.TextEncoding
te = Xojo.Core.TextEncoding.FromIANAName(“ISO-8859-1”)

// Convert Text to MemoryBlock
Dim tmb As Xojo.Core.MemoryBlock
tmb = te.ConvertTextToData(t)

// Create NSData object using MemoryBlock
Dim dataRef as Ptr = dataWithBytes(data, tmb.Data, tmb.Size)

// Create Text object to hold Base64 encoded string.
Dim x As Text
x = base64EncodedStringWithOptions(dataRef, 0)

// Return Base64 encoded string
Return x

End Function

Posted in iOS, Xojo | Xojo iOS / EncodeBase64 はコメントを受け付けていません

Xojo iOS / QRコード生成

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
Posted in iOS, Xojo, メモ | Xojo iOS / QRコード生成 はコメントを受け付けていません

Yosemite FTP Server機能のON

YosemiteをクリーンインストールするとFTP Server機能がONならないので,以下のおまじないをTerminalから実行する。

 

sudo launchctl load -w /System/Library/LaunchDaemons/ftp.plist

 

これでよしw

Posted in OS X, メモ | Yosemite FTP Server機能のON はコメントを受け付けていません

Xojo – iOSImageの表示 【その後】

Dim I’m As iOSImage

im  = iOSImage.FromFile(SpecialFolder.Documents.Child(“test.png”))

 

上記でファイルをImageに取り込めるぞ。

取り敢えず,Declareの嵐から解放されたわ \(^O^)/

Posted in iOS, Xojo, メモ | Xojo – iOSImageの表示 【その後】 はコメントを受け付けていません

Xojo – iOSImageの表示

任意の画像をiOSImageに表示するには:

Dim f As xojo.IO.FolderItem.IO.FolderItem
Dim st As xojo.IO.BinaryStream
Dim m As MemoryBlock

f = SpecialFolder.Documents.Child(“test.png”)

st = BinaryStream.Open(f, xojo.IO.BinaryStream.LockMode.Read)

m = st.Read(f.Length)

declare function NSClassFromString lib “Foundation” (aClassName as CFStringRef) as Ptr
Declare Function dataWithBytes lib “Foundation” selector “dataWithBytes:length:” (c as Ptr,d as Ptr,s as UInteger) as Ptr
dim data as Ptr=dataWithBytes(NSClassFromString(“NSData”),m.Data,m.Size)
declare Function imageWithData lib “UIKit” selector “imageWithData:” (c as Ptr,d as Ptr) as Ptr
dim im as Ptr=imageWithData(NSClassFromString(“UIImage”),data)
dim img as iOSImage=iOSImage.FromHandle(Ptr(im))

ImageView1.Image = img

 

尚,Declareで使用するFrame Workの名称に.Frameworkを入れておくと,実機用ビルドでLink errorが発生するので,要注意!

Posted in iOS, Xojo, メモ | Xojo – iOSImageの表示 はコメントを受け付けていません

Web App FullScreenにおけるStatus Barの表示

Xojoで作成したWeb ApplicationのURLをホーム画面に追加するとiOSデバイス上でフルスクリーンモードとして表示されるが,Status Barが表示されない。

Status Barを表示するにはSessionのPrepareSessionに以下のコードを記載する。

 

HTMLHeader = “<meta name=””viewport”” content=””initial-scale=1.0″” />”+EndOfLine+”<meta name=””apple-mobile-web-app-status-bar-style”” content=””black-translucent””>”

 

iPhoneStatusBar

Posted in iOS, Xojo | Web App FullScreenにおけるStatus Barの表示 はコメントを受け付けていません

Xojo 2014R2.1…

Xojo 2014R2.1を日本語環境で起動してみたらIDEが英語版になってる。

これはこれでいいけど,なんでXojo/Contents/Resourcesにja.lprojを入れるのを止めたんだろう。

謎だw

Posted in Xojo | Xojo 2014R2.1… はコメントを受け付けていません

iMac 27″ Late 2012のターゲットディスプレイモード

iMac 27" Late 2012を導入し,iMac 27" Mid 2009をターゲットディスプレイモードで使おうとThunderboltケーブルでつないだわけです。しかし,iMac 27" Late 2012はiMac 27" Mid 2009を認識してくれませんでした。もしやと思って,mini Displayケーブルで繋いでみたら,見事に認識!いやぁ,27”連結は使いやすい。難点は,首が痛くなる(笑)

Mac 27″ Late 2012を導入し,iMac 27″ Mid 2009をターゲットディスプレイモードで使おうとThunderboltケーブルでつないだわけです。

しかし,iMac 27″ Late 2012はiMac 27″ Mid 2009を認識してくれませんでした。

もしやと思って,mini Displayケーブルで繋いでみたら,見事に認識!

いやぁ,27”連結は使いやすい。難点は,首が痛くなる(笑)

 27″ Displayを導入するよりはるかに安くすんだことは内緒だ(苦笑因みに,使用したケーブルはランサーリンク ミニディスプレイポートケーブル 1m MDPC-100。

 

そういえば,Appleのサポートに電話したら「iMac 27″ Late 2012とiMac 27″ Mid 2009はターゲットディスプレイモードで使えません。サポートページにも記載があります」とけんもほろろだった。

 

Posted in 未分類 | iMac 27″ Late 2012のターゲットディスプレイモード はコメントを受け付けていません

RealStudio 2012R2以降におけるKeyScriptの変更

RealStudio 2012R2からSystem.KeyScriptがRemoveされてしまった。

このため,OS X 10.5以降を対象足したアプリケーションにおいて,System.KeyScriptを

使用したRoman ←→ Japaneseの切替が出来なくなってしまった。

あれこれ調べたらTISSelectInputSourceを使用すると変更出来ることが判明。

ってことで,以下のコードで変更出来るようになりました。

めでたし,めでたし。

Declare Function TISCopyCurrentASCIICapableKeyboardInputSource Lib “Carbon” () As Integer
Declare Function TISCopyInputSourceForLanguage Lib “Carbon” (InputSource As CFStringRef) As Integer
Declare Sub TISSelectInputSource Lib “Carbon” (source As Integer)

Dim ID As Integer
Dim inputSource As String

if script = 0 Then
// Romanに切り換え
ID = TISCopyCurrentASCIICapableKeyboardInputSource()
TISSelectInputSource(ID)
Return
else
// ja-JPに切り換え
inputSource = “ja”
end if

ID = TISCopyInputSourceForLanguage(inputSource)
TISSelectInputSource(ID)

Posted in 未分類 | RealStudio 2012R2以降におけるKeyScriptの変更 はコメントを受け付けていません

RealStudio Web Deploymentについて

Web AppのAppクラス・Aplication Identifierがユニークな文字列でない場合,Web Appの起動に失敗する。

Aplication Identifierは jp.co.clair.AppNameの様な文字列とし,起動中のWeb Appに使用しているAplication Identifierと異なるものでなければならない。

Posted in Xojo, メモ | RealStudio Web Deploymentについて はコメントを受け付けていません