Page 1 of 1

VectorSourceColor() and VectorSourceImage()

Posted: Wed Jan 11, 2017 2:01 pm
by Torp
Hello,
I do not know if this is possible or stupid, but it would be nice to be able to define separately before a VectorSourceColor () and VectorSourceImage () loop, without having to redefine at each iteration to use, while they are always the same. This is to avoid an unnecessary slowdown.

Code: Select all

If OpenWindow(0, 0, 0, 1500, 1000, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	CanvasGadget(0, 0, 0, 1500, 1000)
	
	LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")
	
	If StartVectorDrawing(CanvasVectorOutput(0))
		
		t=ElapsedMilliseconds()
		
		For i = 1 To 10000
			
			MovePathCursor(Random(1500), Random(1000))
			AddPathLine(Random(1500), Random(1000))
			VectorSourceColor(RGBA(255, 0, 0, 255))
			StrokePath(2)
			
			x = Random(1500) : y = Random(1000)
			AddPathBox(x, y, ImageWidth(0), ImageHeight(0))
			TranslateCoordinates(x, y)
			VectorSourceImage(ImageID(0), 255, ImageWidth(0), ImageHeight(0))
			FillPath()
			TranslateCoordinates(-x, -y)
			
		Next i
		
		Debug ElapsedMilliseconds()-t
		
		StopVectorDrawing()
	EndIf
        Repeat
		Event = WaitWindowEvent()
	Until Event = #PB_Event_CloseWindow
EndIf
Like This

Code: Select all

If OpenWindow(0, 0, 0, 1500, 1000, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	CanvasGadget(0, 0, 0, 1500, 1000)
	
	LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")
	
	If StartVectorDrawing(CanvasVectorOutput(0))
		
		VectorSourceColor(RGBA(255, 0, 0, 255))
		VectorSourceImage(ImageID(0), 255, ImageWidth(0), ImageHeight(0))
		
		t=ElapsedMilliseconds()
		
		For i = 1 To 10000
			
			MovePathCursor(Random(1500), Random(1000))
			AddPathLine(Random(1500), Random(1000))
			StrokePath(2,#Pb_VectorColor) <--------------------------------------
			
			x = Random(1500) : y = Random(1000)
			AddPathBox(x, y, ImageWidth(0), ImageHeight(0))
			TranslateCoordinates(x, y)
			FillPath(#Pb_VectorImage) <--------------------------------------
			TranslateCoordinates(-x, -y)
			
		Next i
		
		Debug ElapsedMilliseconds()-t
		
		StopVectorDrawing()
	EndIf
        Repeat
		Event = WaitWindowEvent()
	Until Event = #PB_Event_CloseWindow
EndIf

Re: VectorSourceColor() and VectorSourceImage()

Posted: Thu Jan 12, 2017 1:43 pm
by pf shadoko
you can do like this :

Code: Select all

If OpenWindow(0, 0, 0, 1500, 1000, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   CanvasGadget(0, 0, 0, 1500, 1000)
    
    LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")
    
    If StartVectorDrawing(CanvasVectorOutput(0))
        
        t=ElapsedMilliseconds()
        
        For i = 1 To 10000
            
            MovePathCursor(Random(1500), Random(1000))
            AddPathLine(Random(1500), Random(1000))
            VectorSourceColor(RGBA(255, 0, 0, 255))
            StrokePath(2)
            
            MovePathCursor(Random(1500), Random(1000))
            DrawVectorImage(ImageID(0))
            FillPath()
            
        Next i
        
        Debug ElapsedMilliseconds()-t
        
        StopVectorDrawing()
    EndIf
    Repeat
        Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
EndIf

Re: VectorSourceColor() and VectorSourceImage()

Posted: Fri Jan 13, 2017 5:22 pm
by Torp
Thank you, but I knew that. I use Fillpath () because it is much faster than DrawVectorImage ().
My suggestion was to be able to output VectorSourceColor and VectorSourceImage from the loop ;).

Re: VectorSourceColor() and VectorSourceImage()

Posted: Mon Jan 16, 2017 10:42 am
by pf shadoko
I use Fillpath () because it is much faster than DrawVectorImage ().
strange
on my computer the example with :
VectorSourceImage : 2400 ms
DrawVectorImage : 1500 ms

Re: VectorSourceColor() and VectorSourceImage()

Posted: Mon Jan 16, 2017 2:03 pm
by Torp
:shock:

Code: Select all

If OpenWindow(0, 0, 0, 1500, 1000, "VectorDrawing", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	CanvasGadget(0, 0, 0, 1500, 1000)
	    LoadImage(0, #PB_Compiler_Home + "examples/Sources/Data/PureBasicLogo.bmp")
	If StartVectorDrawing(CanvasVectorOutput(0))

		
		VectorSourceImage(ImageID(0), 255, ImageWidth(0), ImageHeight(0))

		t=ElapsedMilliseconds()
		
		For i = 1 To 10000
			x = Random(1500) : y = Random(1000)
			AddPathBox(x, y, ImageWidth(0), ImageHeight(0))
			TranslateCoordinates(x, y)
			FillPath()
			TranslateCoordinates(-x, -y)
		Next i
		
		MessageRequester("Time", Str(ElapsedMilliseconds()-t))
				
		t=ElapsedMilliseconds()
		
		For i = 1 To 10000
			MovePathCursor(Random(1500), Random(1000))
			DrawVectorImage(ImageID(0))
		Next i
		
		MessageRequester("Time", Str(ElapsedMilliseconds()-t))
		
		StopVectorDrawing()
	EndIf
	
	Repeat
		Event = WaitWindowEvent()
	Until Event = #PB_Event_CloseWindow
EndIf
For me (Windows10) :
FillPath (VectorSourceImage) : ~260ms
DrawVectorImage : ~770ms
With or Without Debugger i have the same time :?