DataSection : IncludeBinary => using Data URI

Got an idea for enhancing SpiderBasic? New command(s) you'd like to see?
User avatar
eddy
Posts: 124
Joined: Thu Mar 27, 2014 8:34 am

DataSection : IncludeBinary => using Data URI

Post 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 
Fred
Site Admin
Posts: 1820
Joined: Mon Feb 24, 2014 10:51 am

Re: DataSection : IncludeBinary => using Data URI

Post 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 :)
User avatar
J. Baker
Posts: 30
Joined: Tue Dec 23, 2014 11:58 pm
Location: USA
Contact:

Re: DataSection : IncludeBinary => using Data URI

Post 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
User avatar
eddy
Posts: 124
Joined: Thu Mar 27, 2014 8:34 am

Re: DataSection : IncludeBinary => using Data URI

Post 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
User avatar
SinisterSoft
Posts: 77
Joined: Sun Apr 06, 2014 11:41 pm
Location: Preston, UK
Contact:

Re: DataSection : IncludeBinary => using Data URI

Post 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)...
Post Reply