Win10 - Can't load C:\test.png

Monkey Targets Forums/Desktop/Win10 - Can't load C:\test.png

Ratchet(Posted 2016) [#1]
I want to load external images into my app using RequestFile. On Windows 10 this doesn't work. So I made a sample app, trying to load an image located at C:\
It's not working. But on Mac OS X I can load files from anywhere. So what's wrong here?

Import mojo2

Class MyApp Extends App

	Field canvas: Canvas
	Field img: Image
	
	Method OnCreate()
		SetUpdateRate 60
		canvas = New Canvas
		img = Image.Load("C:\test.png")
	End
	
	Method OnRender()
		canvas.Clear 0,0,1	
		If img Then
			canvas.DrawImage(img, MouseX, MouseY)
		End	
		canvas.Flush
	End
End

Function Main()
	New MyApp
End



skid(Posted 2016) [#2]
After testing and reading this I suspected it wasn't possible.

http://www.monkey-x.com/docs/html/Programming_Resource%20paths.html

But then checking modules/mjo/data.monkey it turns out there is a special check for :/ so this code does work for me:

   		img = Image.Load("C:/spam.png")



DruggedBunny(Posted 2016) [#3]
Ratchet's code fails on 7 here, but that forward-slash path does indeed work. Weird!


Ratchet(Posted 2016) [#4]
The problem is under Windows RequestFile gives you path with \
In mojo2/graphics.monkey the function KludgePath don't hande path with \ only with /
This will cause your path from Request file ends up in "monkey://C:\test.png"
I modified KludgePath like this and it works anytime:

Function KludgePath:String( path:String )
	Local i: Int
	If path.StartsWith( "." ) Or path.StartsWith( "/" ) Return path
	
	i=path.Find( ":\\" )
	If i<>-1 Then Return path
	
	i = path.Find( ":/" )
	If i<>-1 And path.Find("/")=i+1 Return path
	
	Return "monkey://data/"+path
End