Difference between revisions of "Media Plugin"

From GiderosMobile
m
m (Text replacement - "<source" to "<syntaxhighlight")
Line 7: Line 7:
 
=== A Complete Example ===
 
=== A Complete Example ===
 
'''It's rough but you have it all'''
 
'''It's rough but you have it all'''
<source lang="lua">
+
<syntaxhighlight lang="lua">
 
--require plugin
 
--require plugin
 
require "media"
 
require "media"

Revision as of 15:28, 13 July 2023

Here you will find various resources to help you use Gideros Media plugin.

note: you may have to provide your own assets (fonts, gfx, …)

A Complete Example

It's rough but you have it all <syntaxhighlight lang="lua"> --require plugin require "media"

local myappwidth = application:getContentWidth() local myappheight = application:getContentHeight() local mycallback = 0 local bmp

--just a function to create text button function createText(str, y, callback) local text = TextField.new(nil, str) text:setAnchorPoint(0.5, 0.5) text:setScale(5, 5) text:setPosition(1.75 * myappwidth / 4, y) stage:addChild(text)

text:addEventListener(Event.MOUSE_DOWN, function(self, e) if self:hitTestPoint(e.x, e.y) then callback() end end, text) end

-- create our "menu" createText("Check camera", 1 * 64, function() -- WORKS print("CHECK CAMERA") -- NO CALLBACK mycallback = 1 print(mediamanager:isCameraAvailable()) end)

createText("Take picture", 2.1 * 64, function() -- WORKS ONLY THUMBNAIL! print("TAKE PICTURE WITH CAMERA") mycallback = 2 mediamanager:takePicture() end)

createText("Take thumbnail", 3.1 * 64, function() -- WORKS print("MAKE THUMBNAIL FROM CAMERA") mycallback = 3 mediamanager:takePicture() end)

createText("Take screenshot", 4.1 * 64, function() -- WORKS NO PERMISSIONS NEEDED BUT SAVE TO GIDEROS APP FOLDER print("SCREENSHOT") mycallback = 4 mediamanager:takeScreenshot() end)

createText("Get picture", 5.1 * 64, function() -- WORKS NEED PERMISSIONS READ print("GET PICTURE") mycallback = 5 mediamanager:getPicture() end)

createText("Save picture", 6.1 * 64, function() -- WORKS NEED PERMISSIONS WRITE print("SAVE PICTURE") mycallback = 6 -- draw your gfx (here I draw a simple pixel) local source = Pixel.new(0xffff00, 0.75, 128, 128) -- create a render target and draw to it local rt = RenderTarget.new(source:getWidth(), source:getHeight()) rt:draw(source) -- save your render target to gideros documents folder local myfilepath = "|D|mysavedpicture2.png" rt:save(myfilepath) -- create a new media and save your gfx -- android saved path = internal storage/pictures -- NEED permission write external storage local media = Media.new(myfilepath) mediamanager:postPicture(myfilepath)

-- show your gfx on stage if bmp then -- remove previous Bitmap bmp:removeFromParent() bmp = nil end bmp = Bitmap.new(rt, true) bmp:setPosition(0, myappheight - bmp:getHeight()) stage:addChildAt(bmp, 1) end)

createText("Play Video", 7.1 * 64, function() -- WORKS? print("PLAY VIDEO") mycallback = 7 mediamanager:playVideo("videos/test.mp4", false)

--[[ pheora=require "Theora" local videoSource=pheora.new("videos/file_example_OGG_480_1_7mg.ogg") local videoStream=videoSource:play() local videoSprite=videoStream:getVideo() videoSprite:setPosition(0, 64) stage:addChild(videoSprite) ]] end)

-- EVENT LISTENERS mediamanager:addEventListener(Event.MEDIA_RECEIVE, function(e) print("mycallback:", mycallback)

local path = ""

if mycallback == 1 then -- is camera available? -- nothing here

elseif mycallback == 2 then -- take picture (thumbnail) local media = Media.new(e.path) path = media:getPath() if bmp then -- remove previous Bitmap bmp:removeFromParent() bmp = nil end bmp = Bitmap.new(Texture.new(path, true)) bmp:setPosition(0, myappheight - bmp:getHeight()) stage:addChildAt(bmp, 1)

elseif mycallback == 3 then -- make thumbnail local media = Media.new(e.path) path = media:getPath() if bmp then -- remove previous Bitmap bmp:removeFromParent() bmp = nil end bmp = Bitmap.new(Texture.new(path, true)) bmp:setPosition(0, myappheight - bmp:getHeight()) stage:addChildAt(bmp, 1)

elseif mycallback == 4 then -- take screenshot and save local media = Media.new(e.path) media:resize(myappwidth / 2, myappheight / 2, true) media:save() -- print("media size", media:getWidth(), media:getHeight()) path = media:getPath() if bmp then -- remove previous Bitmap bmp:removeFromParent() bmp = nil end bmp = Bitmap.new(Texture.new(path, true)) bmp:setPosition(0, myappheight - bmp:getHeight()) stage:addChildAt(bmp, 1)

elseif mycallback == 5 then -- get picture from file explorer / gallery local media = Media.new(e.path) media:resize(myappwidth / 2, myappheight / 2, true) media:save() path = media:getPath() if bmp then -- remove previous Bitmap bmp:removeFromParent() bmp = nil end bmp = Bitmap.new(Texture.new(path, true)) bmp:setPosition(0, myappheight - bmp:getHeight()) stage:addChildAt(bmp, 1)

elseif mycallback == 6 then -- save picture to file / gallery -- nothing here

elseif mycallback == 7 then -- play video -- nothing here

else -- nothing here end end)

--user canceled selecting image mediamanager:addEventListener(Event.MEDIA_CANCEL, function() print("User cancelled media input") end)



--[[ -- FLOOD FILL local text = TextField.new(nil, "Click on ball to floodFill it") text:setScale(2) text:setPosition(100, 50) stage:addChild(text)

--delete previos copy (path = .../Local/Temp/gideros/Media/documents/ball.png) local media = Media.new("gfx/ball.png") --print(media:getPath()) mediamanager:deleteFile(media:getPath())

-- create a new media from our image path local media = Media.new("gfx/ball.png") media:resize(256, 256, false) media:save() local bmp = Bitmap.new(Texture.new(media:getPath(), true)) bmp:setPosition(256, 320) stage:addChild(bmp)

stage:addEventListener(Event.MOUSE_DOWN, function(e) if bmp:hitTestPoint(e.x, e.y) then print("flood") -- media:floodFill(e.x, e.y, 0xff0000, 0.5, 100, true) -- media:floodFill(e.x, e.y, 0xffff00, 1, 8, true) media:floodFill(e.x, e.y, 0xffff00, 1, 8, false) media:save() print(media:getPath()) -- where on android? bmp:removeFromParent() bmp = Bitmap.new(Texture.new(media:getPath(), true)) -- bmp:setPosition(256, 320) stage:addChild(bmp) end end) ]]



--[[ -- EVENT LISTENERS mediamanager:addEventListener(Event.MEDIA_RECEIVE, function(e)

print("callback")

--print path print("path 01: "..e.path)

local path = ""

local media = Media.new(e.path) print("media sizes", media:getWidth(), media:getHeight()) media:flipVertical() media:flipHorizontal() media:trim(0xffffff) media:drawText(8, 8, "Test Text", 0xff0000, 32) media:drawLine(4, 4, 16, 16, 0xff0000) media:resize(200, 200, false) print(media:getPixel(1, 1)) for x = 50, 100 do for y = 50, 100 do media:setPixel(x, y, 255, 0, 0, 0.5) -- change color to semi transparent red end end media:drawImage(100, 100, "gfx/ball.png") media:save() path = media:getPath() print("path 02: "..path)

--remove previous Bitmap if bmp then bmp:removeFromParent() bmp = nil end

--add selected image to the stage bmp = Bitmap.new(Texture.new(path, true)) bmp:setPosition(10, 10) stage:addChildAt(bmp, 1) application:setBackgroundColor(0xff0000) end) ]] </source>

Template:Welcome!