Page 1 of 1

DataSection : IncludeBinary => using Data URI

Posted: Fri Jan 16, 2015 11:16 pm
by eddy
Spiderbasic IncludeBinary command could use Data URI.

Here is a test of Data URI:

Code: Select all


Procedure.i CreateInstance2D(Sprite,x,y,Angle=0,Intensity=255,Color=$FFFFFF)
  !var a,sp;
  !if(a=spider.sprite.objects.Get(v_Sprite)) sp=new PIXI.Sprite(a.texture), sp.position.x=v_x, sp.position.y=v_y;
  !spider.screen.stage.addChild(sp)
  !return sp;
EndProcedure

CompilerIf #PB_Compiler_IsMainFile
  ; *************************
  ; EXAMPLE 
  ; *************************
  
  Procedure DrawScreenContent()
    ClearScreen(RGB(0, 0, 0))
    FlipBuffers() ; continue the rendering
  EndProcedure
  
  Procedure Loading(Type, Filename$)
    Static NbLoadedElements  
    Debug Filename$ + " loaded"
    
    NbLoadedElements+1
    If NbLoadedElements = 1 
      For i=1 To 100 
        x=Random(ScreenWidth()-SpriteWidth(1),SpriteWidth(1))
        y=Random(ScreenHeight()-SpriteHeight(1),SpriteHeight(1))
        CreateInstance2D(1,x,y)
      Next
      FlipBuffers() ; start the rendering
    EndIf
  EndProcedure
  
  
  OpenScreen(800, 600, 32, "Sprite Instances - persistent 2D entities")
  BindEvent(#PB_Event_Loading, @Loading())
  BindEvent(#PB_Event_RenderFrame, @DrawScreenContent())
  
    
  DataSection   
     SpaceInvaders:
     ;IncludeBinary "Space_Invaders-32x32.png"     
     !v_IncludeBinary_SpaceInvaders$='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAHtUlEQVRYw8WXaYxeVRnHf2d577vNO9POdN6ZdmiD0NI2JAUaLIJCwDYEYiQGIxgiJmqMxi2aaAIS4oKgEpcYlwRN/GDEpU0gMVRsRUJKJewgYDst7XQK05lpZ'+
     !'323+97lLH640+kMM6MSNZ7kfDn33Of5P8//2Q78n5dY6cNra267BfgUcBGg35ZQKRFaIXMalQ/QpQK60kGwqssV+qrP5qvVLxXuu2GY5QS/tuY2CXwf+OLbN0cglERqhczlUIUAXS6Rq3QQdK8mX+1FVyofMI3GGuDqJQAGL/5MKb+h+ltv3U1vT6/IlEuBUJnlMsihCnmU1KhYkq/2IpTC1Gqkjeb'+
     !'2s//OA7AHj/Uz1donErsN41bW5j3eefAeROZuhFjRI5QDfDlP9OcjJKenMM0mptmSSwD4Q2N34vw2v5Je63BRjA0jXGLwzoEQGc/FPKqYR+SWCZXZFuQUcnM3yeBxbKuFCdssAeDa8baVjLZRgqk1MY0QG0a0bUJS0qjEUUoFulxEdxTRXR2ociGjZOGKwVcC0lod225j2/EyAKJkqdVz5+l0nbTWZ'+
     !'CYwNK/fSGX7JgqFAkmScOr4KfRjh6meapBrtcmt7kR3FJeAcNJiGk1sFGPjZCmAhYfzAIwlmaqTztSZ6JHoT+/igoF1aK3xziOVpK+vj+kt5zOy+wDrnh7HpwZsF7KYXwxAaUwrxCYpLkmX8UCcLgFg6i3SmTqNtI25fRd91V7OvD7K6ESMq3SikphulbD+0vMxN1/FxMm9VMcbIAS57s4sQM/K1x7'+
     !'TjnFpijN2/lwuBLBw2zDC1FuYRsjMJX10rulmavgMr+95js7pBHlkmMp4g9rLYxzZ/xKlUon2tRtJ6y1MvYVtthfLTFNsnOBSg18WQJIs2jaMMGEWMOkFPUgpObznr1RHGuz+zQO0BxKmcxOsGppg+MEnEUIg1vcQe5P922ovlpnaTLldnOIrUuCiBBeluCSBUoD3nsaJ07jBBk+cOchz3ztJ2GzxQ'+
     !'38dzdoM1lqklBgFLklxUYxbkJbeqKx2vGUt8EC6ZHszh3i8hjGG8ua1TI5N8ol0K/HB17n2cI54eBLO68IYg4li5FSYWZuYzPXzstyi7PqXALyxmXLnkU+fIAxDLr39Wo6vL9BPN9/tupFdwWYO65jL7ryZMAwxTx1DOQ/O4a3NAu6sPGvx3uO8wzizDAXJW7LAugyrgPIzJ6n9bYjgnVt4/+4v8+r'+
     !'ugwwfOkWhfxXXfPg9BKuLTI6MUdjzIkIGcwL9IpnCWoy3pN5ivV0KwCdm2W4thKBULBDe9yhTdzg6Lr2QrbdciVIK5xxRFDFx/A3sPY/QHTlEWYAgK9ULZDpriVxC4g3Wu2U8kJplmo7LGo8QdOfyzH71D8xevp7G1ZtQfV24Rhvz/DD5x4+yplREFfN47/HWZRQKtwCAIXQxsUtXAPAWClw7xlqLa'+
     !'0X41CC0YlVPJx2Dk7SfH8Eag1SSQqlAUCmDkFmNb8d4KbCtCF0pgcxKsjGGlo2IXYpbEIbnKFjgAWcs6XQdVe3CxxIzG6HyOVSpQK4QoIPcuXYsBCiJi1JsFIOS5HrKJIOn8N6hy8UspKyhaSNil+A454JlKchqQEJ6ZATvPbneLlwzQnqPDDQd119G6YbtJMfGqP98Hz61eGtBScDTevYoMsghwhi'+
     !'Z0yAExhoatp0B8O6PS9LQG2u8sXPpl6XM2Wg2k/Vzk08+YGpbP5VrLqb8wXcxWzw3kPh2gq23F/A4FwvGksQRDRPStNEbLRd/fikFxuzDs2semVb4nMoaihQIrUBk0bzno3dTvuNHRNMNrtlwEZ1BB0JJRE6dpRyhFULJ+bp/8shhIhHSW6j84h3BumlqJxZPxccu+ULgnd8D3HR2AvJJincum3IDj'+
     !'VAKgDdNyKun3zR9lS5zefdApsT7bFIyViJAaOW8FgUhBOPhaV4cfYGBXC8DQT+revoO5c9fu3Pj/nvGF00Nv9zykY9vXN39QGm8ppcWTfFvjqh+/r4sBHDleRx54nGq0wE9HVWK/b3o7goIcfuF+77563kKDn/ovh+7E+Ofs2P1BcrEf/bUaKeIJ9/kqvfejF5Vpv3iELIY4J3/ia2Fv1t0e3DjJ9v'+
     !'eusL/6gXUcd02nLGjZnTqYxc+du/+ZeqA/QbwNeC/DsJ7z8hrxw4dSEbe95dq6429e/fS29vLjh07MgD79+/nhTNn7u98+JWf9R2a2l5q2TuV89f/M5ZHwyZ9xbLRQqz4bJtNYv5em2YmiRgbi47u29Q0t7771oIQwuTzeTM6OuokQD6fl0opffTKqvv9jV0vnw7SB7CO5ba3jmdmxmZ/UHvpO4+0j'+
     !'n/WWRetdHd8oMKppDn7crn2rQPb7Fd27twZrlu3Tnrvcc7hvUcPDQ0xNjYmRWaJnJyc1CNRbUvZlScFaJVltJYIaXDmQDz+1LeT5386YZuDj84OGeDuXfnz7gpQJYd3c6XMeDBpT+fgw/2n7129ef0rO7ZujarVqvHeG+ecSZLEDQwMoJVScm6Gd4Dx3nN/59CvarXaQ8aYwBijrbXSGIO1ljRN69b'+
     !'aJmAAeVftqYe+nsv9SSklpZQopVBKGa21KR8rhxs2bQjXrl1rtNZuTnkSx7G74oorAPgHa3DAKxCUqagAAAAASUVORK5CYII=';
  EndDataSection 
  
  LoadSprite(1, IncludeBinary_SpaceInvaders$,#PB_Sprite_AlphaBlending)
  
CompilerEndIf 

Re: DataSection : IncludeBinary => using Data URI

Posted: Mon Jan 19, 2015 10:41 am
by Fred
Good idea. I don't know how to implement it, as we can't use label and such in JS. May be by an extra API ? Like:

Code: Select all

IncludeResource #ResourceNumber, "sprite.png" [, Format] ; Format could be some mime type like UTF8/URL encode etc.

a$ = GetResource(#ResourceNumber)
Suggestions are welcome :)

Re: DataSection : IncludeBinary => using Data URI

Posted: Mon Jan 19, 2015 2:00 pm
by J. Baker
I've seen a data section in javascript/html5 game before that used something similar to labels. It worked basically just like Pure Basic's data section. If I remember where I seen it, I'll post

Re: DataSection : IncludeBinary => using Data URI

Posted: Mon Jan 19, 2015 2:27 pm
by J. Baker

Re: DataSection : IncludeBinary => using Data URI

Posted: Thu May 14, 2015 11:58 pm
by eddy
Fred wrote:Good idea. I don't know how to implement it, as we can't use label and such in JS. May be by an extra API ? Like:

Code: Select all

IncludeResource #ResourceNumber, "sprite.png" [, Format] ; Format could be some mime type like UTF8/URL encode etc.

a$ = GetResource(#ResourceNumber)
Suggestions are welcome :)
+1

Re: DataSection : IncludeBinary => using Data URI

Posted: Mon May 25, 2015 7:54 am
by SinisterSoft
Maybe when you parse the program you can create a file called 'datasection' (or possibly a definable name in compiler settings), this would hold the data in order - like it would in memory when running a program in PureBasic.

On loading the javascript program this data could also be loaded (if present) as binary data - maybe with an event when loading has finished and/or how much is left to load?

The restore command could also have been pre parsed as a pointers to within the data file.

Read$, read.b, read.l, could just move a pointer along and present the data.

Is this not possible?

If so then includebinary, catchImage, etc could also be implemented in the same way (and in the same file)...