Skip to content

ez.PutPictFile(x, y, file) sometimes draws image at the incorrect x location. #77

@JacobChrist

Description

@JacobChrist

Describe the bug
Sometimes when using the ez.PutPictFile(x, y, file) function the image is drawing at the wrong x location. At the time of the creation of this issue, issue #72 still exists and is unaddressed and is probably related.

Screenshots
image

To Reproduce
Steps to reproduce the behavior:

  1. Run the program and click on the different plants, a failure is emanate

Expected behavior
Image should always be rendered at the correct X,Y location.

MANDATORY: Attachments
Image files:
PlanetScale.zip

----------------------------------------------------------------------
-- ezLCD Planetary Scale application note example
--
-- Created  03/14/2023  -  Jacob Christ
----------------------------------------------------------------------

function printBox(x1, y1, x2, fg, bg, font_height, str) -- Show a title sequence for the program
	-- Erase Old Weight
	local y2 = y1 + font_height

	ez.BoxFill(x1,y1, x2,y2, bg) -- X, Y, Width, Height, Color

	-- Display Line
	ez.SetColor(fg)
	ez.SetFtFont(fn, font_height * 0.70) -- Font Number, Height, Width
	ez.SetXY(x1, y1)
	print(str)
end

function titleScreen(fn) -- Show a title sequence for the program
	local result
	ez.Cls(ez.RGB(0,0,0))

	ez.SetAlpha(255)
	ez.SetXY(0, 0)
	result = ez.PutPictFile(0, 0, "/PlanetScale/planet-menu-grid-onlineconverter.jpg")
	ez.SerialTx("result=".. tostring(result) .. "\r\n", 80, debug_port) -- doesn't work
end

debug_port = 0
-- Event Handelers
-- Serial Port Event
function DebugPortReceiveFunction(byte)
	ez.SerialTx(byte, 1, debug_port)
end

-- Define the Button Event Handler
function ProcessButtons(id, event)
	-- TODO: Insert your button processing code here

	if id >= 1 and id <= 9 and event == 2 then
		new_planet = true
		planet = id
	end

	ez.Button(id, event)
	str = "id=" .. tostring(id) ..  ", event=" .. tostring(event)
	ez.SerialTx(str .. "\r\n", 80, debug_port)
	printBox(400, 0, 800, ez.RGB(0xff, 0xff, 0xff), ez.RGB(0x00, 0x00, 0x80), font_height, str)

end 

function deviceData()
	ez.SerialTx("**********************************************************************\r\n", 80, debug_port)
	ez.SerialTx("* EarthLCD Planetary Scale\r\n", 80, debug_port)
	ez.SerialTx("**********************************************************************\r\n", 80, debug_port)
	ez.SerialTx(ez.FirmVer .. "\r\n", 80, debug_port)
	ez.SerialTx(ez.LuaVer .. "\r\n", 80, debug_port)
	ez.SerialTx("S/N: " .. ez.SerialNo .. "\r\n", 80, debug_port)
	ez.SerialTx(ez.Width .. "x" .. ez.Height .. "\r\n", 80, debug_port)

	str = ez.FirmVer
	printBox(400, 1 * font_height, 800, ez.RGB(0xff, 0xff, 0xff), ez.RGB(0x00, 0x00, 0x80), font_height, str)
	str = ez.LuaVer
	printBox(400, 2 * font_height, 800, ez.RGB(0xff, 0xff, 0xff), ez.RGB(0x00, 0x00, 0x80), font_height, str)
	str = "S/N: " .. ez.SerialNo 
	printBox(400, 3 * font_height, 800, ez.RGB(0xff, 0xff, 0xff), ez.RGB(0x00, 0x00, 0x80), font_height, str)
	str = ez.Width .. "x" .. ez.Height
	printBox(400, 4 * font_height, 800, ez.RGB(0xff, 0xff, 0xff), ez.RGB(0x00, 0x00, 0x80), font_height, str)
end

-----------------------------------------------------------------------------
-- Globals
-----------------------------------------------------------------------------
fn = 14
font_height = 240 / 8 -- = 30

new_planet = true
planet = 1

-----------------------------------------------------------------------------
-- Setup Button(2)
-----------------------------------------------------------------------------
-- ez.Button( id, ?, ?, ?, ?, X, Y, W, H)

ez.Button(0, 1, -1, -11, -1,   0,   0,  50,  50) -- 0 - Menu
ez.Button(1, 1, -1, -11, -1,   0, 320,  50, 280) -- 1 - Sun
ez.Button(2, 1, -1, -11, -1,  50, 320,  50, 280) -- 2 - Mercury
ez.Button(3, 1, -1, -11, -1, 100, 320,  75, 280) -- 3 - Venus
ez.Button(4, 1, -1, -11, -1, 175, 320,  55, 280) -- 4 - Earth
ez.Button(5, 1, -1, -11, -1, 230, 320,  60, 280) -- 5 - Mars
ez.Button(6, 1, -1, -11, -1, 290, 320, 160, 280) -- 6 - Jupiter
ez.Button(7, 1, -1, -11, -1, 450, 320, 150, 280) -- 7 - Saturn
ez.Button(8, 1, -1, -11, -1, 600, 320, 100, 280) -- 8 - Uranus
ez.Button(9, 1, -1, -11, -1, 700, 320, 100, 280) -- 9 - Neptune

-- Start to receive button events
ez.SetButtonEvent("ProcessButtons")

-----------------------------------------------------------------------------
-- Main
-----------------------------------------------------------------------------
-- open the RS-232 port
ez.SerialOpen("DebugPortReceiveFunction", debug_port)

titleScreen(fn)
deviceData()

while 1 do

	-- Test Loop
	if new_planet == true then
		-- ez.SetAlpha(255)
		local planet_x = 53 -- 50
		local planet_y = 21 -- 25
		ez.SetXY(planet_x, planet_y)
		if planet == 1 then ez.PutPictFile(planet_x, planet_y, "/PlanetScale/1-sun.jpg") end
		if planet == 2 then ez.PutPictFile(planet_x, planet_y, "/PlanetScale/2-mercury.jpg") end
		if planet == 3 then ez.PutPictFile(planet_x, planet_y, "/PlanetScale/3-venus.jpg") end
		if planet == 4 then ez.PutPictFile(planet_x, planet_y, "/PlanetScale/4-earth.jpg") end
		if planet == 5 then ez.PutPictFile(planet_x, planet_y, "/PlanetScale/5-mars.jpg") end
		if planet == 6 then ez.PutPictFile(planet_x, planet_y, "/PlanetScale/6-jupiter.jpg") end
		if planet == 7 then ez.PutPictFile(planet_x, planet_y, "/PlanetScale/7-saturn.jpg") end
		if planet == 8 then ez.PutPictFile(planet_x, planet_y, "/PlanetScale/8-uranus.jpg") end
		if planet == 9 then ez.PutPictFile(planet_x, planet_y, "/PlanetScale/9-neptune.jpg") end
		new_planet = false
	end

end

Note from Randy:
Product: PROD_EZLCD_105B (passed) or PROD_EZLCD_5104 (failed)

Metadata

Metadata

Assignees

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions