Platforms to show: All Mac Windows Linux Cross-Platform
Required plugins for this example: MBS MacBase Plugin, MBS MacExtras Plugin, MBS Main Plugin, MBS MacCocoa Plugin, MBS MacControls Plugin
You find this example project in your Plugins Download as a Xojo project file within the examples folder: /MacExtras/Continuity Camera
This example is the version from Sat, 5th Apr 2019.
Project "Continuity Camera.xojo_binary_project"
Class App Inherits Application
Const kEditClear = "&Delete"
Const kFileQuit = "&Quit"
Const kFileQuitShortcut = ""
EventHandler Sub Open()
ContinuityCameraMBS.SetDelegate AddressOf gotData
ContinuityCameraMBS.InstallForWindow
End EventHandler
Sub WriteFile(name as string, data as string)
Dim f As FolderItem = SpecialFolder.Desktop.Child(name)
Dim b As BinaryStream = BinaryStream.Create(f, True)
b.Write data
b.Close
End Sub
Sub gotData(Data as MemoryBlock, Type as string)
Select Case type
Case "PDF"
WriteFile("import.pdf", data)
Dim doc As New PDFDocumentMBS(data)
// first page
Dim page As PDFPageMBS = doc.pageAtIndex(0)
Dim n As NSImageMBS = page.Render
Dim p As Picture = n.CopyPictureWithAlpha
MainWindow.setPicture p
Case "Tiff"
WriteFile("import.tif", data)
Dim p As Picture = Picture.FromData(data)
MainWindow.setPicture p
Case "JPEG"
WriteFile("import.jpg", data)
Dim p As Picture = Picture.FromData(data)
MainWindow.setPicture p
Case "PNG"
WriteFile("import.png", data)
Dim p As Picture = Picture.FromData(data)
MainWindow.setPicture p
Else
MsgBox "new type: "+type
End Select
End Sub
End Class
Class MainWindow Inherits Window
Control Canvas1 Inherits Canvas
ControlInstance Canvas1 Inherits Canvas
EventHandler Sub Paint(g As Graphics, areas() As REALbasic.Rect)
If pic <> Nil Then
Dim faktor As Double = Min( g.Height / Pic.Height, g.Width / Pic.Width)
// Calculate new size
Dim w As Integer = Pic.Width * faktor
Dim h As Integer = Pic.Height * faktor
// create new picture
// draw picture in the new size
g.DrawPicture Pic, 0, 0, w, h, 0, 0, Pic.Width, Pic.Height
End If
End EventHandler
End Control
Control ImportPicButton Inherits PushButton
ControlInstance ImportPicButton Inherits PushButton
EventHandler Sub Action()
ContinuityCamera.Import(0, Self)
End EventHandler
End Control
Control ImportDocButton Inherits PushButton
ControlInstance ImportDocButton Inherits PushButton
EventHandler Sub Action()
ContinuityCamera.Import(1, self)
End EventHandler
End Control
EventHandler Function ConstructContextualMenu(base as MenuItem, x as Integer, y as Integer) As Boolean
Dim m As New MenuItem
m.Text = "Hello World"
base.Append m
// system will add more entries to context menu
Return True
End EventHandler
EventHandler Sub Open()
#if Target32Bit then
MsgBox "Please build for Mac 64-bit"
#endif
ContinuityCamera = New ContinuityCameraMBS
If ContinuityCamera.Handle <> 0 Then
ImportPicButton.Enabled = True
ImportDocButton.Enabled = True
End If
End EventHandler
Sub setPicture(p as Picture)
pic = p
canvas1.Invalidate
End Sub
Property ContinuityCamera As ContinuityCameraMBS
Property pic As Picture
End Class
MenuBar MainMenuBar
MenuItem FileMenu = "&File"
MenuItem FileQuit = "#App.kFileQuit"
MenuItem EditMenu = "&Edit"
MenuItem EditUndo = "&Undo"
MenuItem EditSeparator1 = "-"
MenuItem EditCut = "Cu&t"
MenuItem EditCopy = "&Copy"
MenuItem EditPaste = "&Paste"
MenuItem EditClear = "#App.kEditClear"
MenuItem EditSeparator2 = "-"
MenuItem EditSelectAll = "Select &All"
End MenuBar
End Project
The items on this page are in the following plugins: MBS MacExtras Plugin.