local function stop_capture(self) if self.cameraframe == nil then return end self.cameraframe = nil camera.stop_capture() label.set_text("logo#status", "Capture Status: OFF") end local function start_capture(self) if not camera then label.set_text("logo#status", "Capture Status: UNAVAILABLE") return end local sysinfo = sys.get_sys_info() local quality = camera.CAPTURE_QUALITY_HIGH local type = camera.CAMERA_TYPE_FRONT if sysinfo.system_name == 'iPhone OS' then type = camera.CAMERA_TYPE_BACK quality = camera.CAPTURE_QUALITY_MEDIUM end camera.start_capture(type, quality, function(self, status) if status == camera.STATUS_STARTED then self.cameraframe = camera.get_frame() self.camerainfo = camera.get_info() self.cameratextureheader = {width=self.camerainfo.width, height=self.camerainfo.height, type=resource.TEXTURE_TYPE_2D, format=resource.TEXTURE_FORMAT_RGB, num_mip_maps=1 } label.set_text("logo#status", "Capture Status: ON") else label.set_text("logo#status", "Capture Status: ERROR") end end) end function init(self) msg.post(".", "acquire_input_focus") local logosize = 128 local screen_width = sys.get_config("display.width", 600) local screen_height = sys.get_config("display.height", 800) local scale_width = screen_width / logosize local scale_height = screen_height / logosize go.set("#sprite", "scale", vmath.vector3(scale_width, scale_height, 1) ) start_capture(self) end function final(self) if self.cameraframe ~= nil then camera.stop_capture() end end function update(self, dt) if self.cameraframe ~= nil then local pathmodelcamera = go.get("#sprite", "texture0") resource.set_texture(pathmodelcamera, self.cameratextureheader, self.cameraframe) end end function on_input(self, action_id, action) if (action_id == hash("space") or action_id == hash("touch")) and action.pressed then if self.cameraframe == nil then start_capture(self) else stop_capture(self) end end end