PBtoHTML5 Compiler [pre-alpha]

Anwendungen, Tools, Userlibs und anderes nützliches.
Kevin
Beiträge: 236
Registriert: 11.06.2007 12:55

PBtoHTML5 Compiler [pre-alpha]

Beitrag von Kevin »

Hi,

ich entwickle gerade ein kleines Tool mit dem man PB-code in HTML5 + JavaScript umwandeln kann. Bis jetzt werden noch nicht sehr viele Funktionen unterstützt, für eine kleine Demo reicht es aber.

Alle unterstütze Funktionen/Schlüsselwörter sind in der Datei "INFO.pb" im Archiv aufgelistet

was zu beachten ist:
keine pointer (*ich_bin_ein_pointer)
Arrays dürfen maximal 3 Dimensionen haben
keine eigenen konstante
Repeat/ForEver funktionieren nicht in Proceduren
...

GUI:
Bild
1: welche Datei geöffnet werden soll
2: wo die Datei gespeichert werden soll
4: konvertiert und speichert die Datei
5: startet die Datei
6: zeigt Fehler und andere Informationen an
Tipp Dateien können auch durch Drag&Drop geöffnet werden

Zum testen einfach die Beispiele im Ordner "examples" öffnen und Konvertieren oder die fertigen ".html" Dateien öffnen.

Download (231 KB) (aktualisiert am 05.12.2012)
ChangeLog hat geschrieben:[r56] 16:27 05.12.2012 NEW
+ user "libs"
+ box2dweb simple example


[r55] 22:28 04.12.2012 NEW
R StringField
+ Val/ValF/ValD (ValD benutzt parseFloat)
+ GetDeltaTime() / GetFPS() / ChangeFPS()
+ FPS ist jetzt stabil (sofern Rechenleistung ausreicht)


[r54] 15:38 21.09.2012
R \R schon wieder
R "\" in strings werden zu "\\"
R => / =< fehler
R fehler bei Leerzeichen vor </>/=


[r53] 19:12 18.09.2012
R viele bugs
+ output ist jetzt kleiner


[r52] 16:23 15.09.2012
+ Binär-Zahlen z.B. %111110100
+ MouseWheel()
+ LoadFont() nur normal,Bold&Italic
+ DrawingFont()
+ FreeFont()
+ IsFont()


[r51] 23:44 14.09.2012
R \r \R repariert
+ SoundLib ohne channel unterstützung!
+ InitSound()/UseFLACSoundDecoder()/UseOGGSoundDecoder()
+ FreeSound(ID)
+ IsSound(ID)
+ LoadSound(ID,path$ [,flag])
+ PlaySound(ID,[Flag]) gibt immer 'true' zurück
+ SoundPan(ID,Pan)
+ SoundVolume(ID,Volume)
+ StopSound(ID)


[r50] 02:25 11.09.2012
R \R repariert - überschreibt datei ohne zu fragen
+ \q - beendet nach erfolgreicher compilierung automatisch


[r49] 00:23 11.09.2012
R programparameter bugs
+ Sprite3D repariert
+ "INFO.pb" wird jezt automatisch aktualisiert


[vor r49]
examples:
+ "gadget2.pb" zeigt neue gadgets
+ "global_static... test.pb" ...

intern:
+ Static/Global/Shared/Protected sollte jetzt mit variabeln funktionieren (nicht mit lists/arrays)

2D_Drawing:
R DrawAlphaImage - transparent angabe funktioniert jetzt

Sprite:
+ DisplayTranslucentSprite

Sprite3D:
+ CreateSprite3D
+ DisplaySprite3D
+ FreeSprite3D
+ InitSprite3D
+ IsSprite3D
+ RotateSprite3D(ID,Angle [,Mode])
+ Sprite3DQuality
+ ZoomSprite3D

Gadget:
+ TrackBarGadget (nur Chrome, Opera, Safari)
+ TextGadget
+ ProgressBarGadget (nur Opera, Chrome)
+ ImageGadget
+ Set-/GetGadgetState
+ UseGadgetList
+ HyperLinkGadget

Window:
+ ResizeWindow


r40 [21.08.2012]
+ Commandline (1.Source 2.Destination)
+ OpenWindow();alles bis auf "title" wird ignoriert
+ WindowEvent() nur #PB_Event_Gadget
+ GadgetEvent()
+ EventType() nur #PB_EventType_LeftClick,#PB_EventType_LeftDoubleClick #PB_EventType_Focus,#PB_EventType_LostFocus,#PB_EventType_Change
+ StringGadget()
+ ButtonGadget()
+ Set/GetGadgetText()
Viel Spaß


----- ----- ----- ----- ----- ----- ----- ----- ----- -----
hier mal eine liste aller PB-Libraries und in wie weit ich diese umsetzen könnte:
(Ideen/Verbesserungen/Anregungen/.... dürfen gerne gepostet werden)

Allgemeines:
*pointer/memory wären dank "typed arrays" möglich

  • gibt es/-teilweise:
  • Array: gibt es teilweise
  • Font: geht schon teilweise
  • Gadget: gibt es schon ein paar
  • Image/ImagePlugin laden und bearbeiten sollte gehen
  • Linked List: geht
  • Map: geht
  • Math: ist fast komplett
  • Misc: gibt es teilweise
  • Sprite & Screen: teilweise
  • Sprite3D: teilweise
  • Sound&SoundPlugin: teilweise
  • Requester: einige gehen andere könnte man nachbilden
  • String: ist fast komplett
  • Window: geht teilweise schon
  • wäre möglich (teilweise):
  • 2D Drawing: (canvas)
  • Date
  • Http: sollte möglich sein :D
  • Memory: möglich durch typed arrays
  • Joystick (Gamepad API)
  • Keyboard: geht
  • Mouse: geht
  • Thread: WebWorker?
  • Sort
  • Movie: sollte gehen
  • Network: websocket?
  • Menu
  • Toolbar
  • Database (PHP)
  • StatusBar
  • Regular Expression peer JS oder PHP
  • Clipboard (für FF)
  • Desktop: statt Desktop gibt es die Browserfenster -Eigenschaften zurück
  • Drag & Drop
  • Ftp (mit PHP)
  • wäre über JavaScript-Libraries möglich:
  • 3D zeug: webgl/three.js?
  • Scintilla: ? da gibt es einen Editor der html5+JS nutzt
  • Cipher
  • wäre sehr eingeschränkt möglich:
  • File: ReadFile könnte durch XMLHttpRequest simuliert werden... man könnte auch die Daten in JS reinkloppen
  • Mail: über PHP
  • Rest / keine Ahnung / nicht möglich:
  • AudioCD
  • Console (eventuell simuliert)
  • FileSystem (mal schauen wie ich die FileLib realisiere)
  • Help
  • Library
  • Packer
  • OnError
  • Preference
  • Printer (peer JS (eingeschränkt))
  • Process
  • Serial Port
  • SysTray
  • XML
  • Module
  • Palette
Zuletzt geändert von Kevin am 08.03.2013 22:47, insgesamt 14-mal geändert.
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PBtoHTML5 Konverter

Beitrag von STARGÅTE »

Hallo Kevin,

sehr coole Idee, vorallem gut zu gebrauchen, wenn man Code-Demos auch ausführen lassen will, ohne das jemand PB hat.

Aber bitte änder den Titel deines Programms und des Thema hier.

Es gibt nämlich schon viele PBtoHTML Converter, allerdings übersetzen diese nur das Syntaxhighlighting in HTML.
Das dachte ich hier nämlich auch erst.

Du musst noch irgendwie Compiler in den Namen bringen!
zB PBWebCompiler

PS: testgame.pb.html hängt sich bei mir auf, wenn ich SPACE drücke.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Kevin
Beiträge: 236
Registriert: 11.06.2007 12:55

Re: PBtoHTML5 Konverter

Beitrag von Kevin »

STARGÅTE hat geschrieben:Hallo Kevin,

sehr coole Idee, vorallem gut zu gebrauchen, wenn man Code-Demos auch ausführen lassen will, ohne das jemand PB hat.

Aber bitte änder den Titel deines Programms und des Thema hier.

Es gibt nämlich schon viele PBtoHTML Converter, allerdings übersetzen diese nur das Syntaxhighlighting in HTML.
Das dachte ich hier nämlich auch erst.

Du musst noch irgendwie Compiler in den Namen bringen!
zB PBWebCompiler
werde ich machen.
PS: testgame.pb.html hängt sich bei mir auf, wenn ich SPACE drücke.
funktionieren die anderen Beispiele? Unter welchem Browser+Version hat es nicht funktioniert?
Ich selber hab es bis jetzt nur auf Opera 11.64 und 12.50 getestet und IE7 unterstützt kein canvas.
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PBtoHTML5 Konverter

Beitrag von Kiffi »

@Kevin: :allright:

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
Rings
Beiträge: 977
Registriert: 29.08.2004 08:48

Re: PBtoHTML5 Konverter

Beitrag von Rings »

@Kevin: Klasse, ein richtiger schritt richtung html5 .

Ich hab auch zuerst gedacht es wäre nur ein syntax highlighter.
Das aber ein 'web-Compiler' bei rausgekommen ist (oder wird)
ist umso interresanter.
Weiter so, das wird was.


Ganz wichtig wäre auch noch aus dem Prg ein richtiges Commandline-Tool zu machen
das man es in die Purebasic-IDE (TOOLS) einbinden kann.

Also Aufruf über zum Bseispiel:

'PB2Html5.exe Sourcecode.pb Destination.html

Dann kann man auch schneller in der PB-Ide testen ohne immer erst in deinem Tool
mühsam eine Datei auszuwählen zu müssen.

Damit du ein wenig mehr quellcode bekommts, hier einer
der gar nicht funktioniert:

Code: Alles auswählen

;Umlaute wandeln

EnableExplicit


Procedure.s Umlautewandeln(Instring.s)
  Protected I.i 
  Protected o.s
  For I=1 To Len(Instring)
    Select Mid(instring,i,1)
        
      Case "ö"
        o +"oe"
        
      Default
        o +  Mid(instring,i,1)
    EndSelect
  Next  
  ProcedureReturn o
EndProcedure

Procedure.s UmlautewandelnA(Instring.s)
  Protected I.i 
  Protected o.s
  For I=1 To Len(Instring)
    Select Asc(Mid(instring,i,1))
        
      Case 'ö'
        o +"oe"
        
      Default
        o +  Mid(instring,i,1)
    EndSelect
  Next  
  ProcedureReturn o
EndProcedure
Global tt.s
tt="Hallo umlaute ö Ö ü Ü ä Ä ? "
tt=UmlautewandelnA(tt)

MessageRequester("Info",tt,0)
Rings hat geschrieben:ziert sich nich beim zitieren
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: PBtoHTML5 Konverter

Beitrag von STARGÅTE »

Kevin hat geschrieben:
STARGÅTE hat geschrieben:PS: testgame.pb.html hängt sich bei mir auf, wenn ich SPACE drücke.
funktionieren die anderen Beispiele? Unter welchem Browser+Version hat es nicht funktioniert?
Ich selber hab es bis jetzt nur auf Opera 11.64 und 12.50 getestet und IE7 unterstützt kein canvas.
Die anderen Beispiele funktionieren, nur beim schießen mit SPACE bleibt er hängen.
IE 9.0 (x64) unter Win 7 x64
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PBtoHTML5 Konverter

Beitrag von Kiffi »

Rings hat geschrieben:@Kevin: Klasse, ein richtiger schritt richtung html5 .
korrekt! Und wenn jetzt auch mal irgendwann Windows- und Gadget-Befehle
hinzukommen würden: Mjam, Mjam! :D

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: PBtoHTML5 Konverter

Beitrag von RSBasic »

Gute Idee. :allright:
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Kevin
Beiträge: 236
Registriert: 11.06.2007 12:55

Re: PBtoHTML5 Compiler

Beitrag von Kevin »

Rings hat geschrieben:@Kevin: Klasse, ein richtiger schritt richtung html5 .

Ich hab auch zuerst gedacht es wäre nur ein syntax highlighter.
Das aber ein 'web-Compiler' bei rausgekommen ist (oder wird)
ist umso interresanter.
Weiter so, das wird was.


Ganz wichtig wäre auch noch aus dem Prg ein richtiges Commandline-Tool zu machen
das man es in die Purebasic-IDE (TOOLS) einbinden kann.

Also Aufruf über zum Bseispiel:

'PB2Html5.exe Sourcecode.pb Destination.html

Dann kann man auch schneller in der PB-Ide testen ohne immer erst in deinem Tool
mühsam eine Datei auszuwählen zu müssen.
wird eingebaut
Damit du ein wenig mehr quellcode bekommts, hier einer
der gar nicht funktioniert:

Code: Alles auswählen

;Umlaute wandeln

EnableExplicit


Procedure.s Umlautewandeln(Instring.s)
  Protected I.i 
  Protected o.s
  For I=1 To Len(Instring)
    Select Mid(instring,i,1)
        
      Case "ö"
        o +"oe"
        
      Default
        o +  Mid(instring,i,1)
    EndSelect
  Next  
  ProcedureReturn o
EndProcedure

Procedure.s UmlautewandelnA(Instring.s)
  Protected I.i 
  Protected o.s
  For I=1 To Len(Instring)
    Select Asc(Mid(instring,i,1))
        
      Case 'ö'
        o +"oe"
        
      Default
        o +  Mid(instring,i,1)
    EndSelect
  Next  
  ProcedureReturn o
EndProcedure
Global tt.s
tt="Hallo umlaute ö Ö ü Ü ä Ä ? "
tt=UmlautewandelnA(tt)

MessageRequester("Info",tt,0)
funktioniert in der neues Version alles bis auf das '
STARGÅTE hat geschrieben:
Kevin hat geschrieben:
STARGÅTE hat geschrieben:PS: testgame.pb.html hängt sich bei mir auf, wenn ich SPACE drücke.
funktionieren die anderen Beispiele? Unter welchem Browser+Version hat es nicht funktioniert?
Ich selber hab es bis jetzt nur auf Opera 11.64 und 12.50 getestet und IE7 unterstützt kein canvas.
Die anderen Beispiele funktionieren, nur beim schießen mit SPACE bleibt er hängen.
IE 9.0 (x64) unter Win 7 x64
kann man das eigene Schiff bewegen(WASD) und werden die gegnerische "Raumschiffe" angezeigt?
kann es leider nicht selber testen da ich IE9 bei mir nicht installieren kann..



@all Die neue Version ist jetzt verfügbar
ChangeLog hat geschrieben: r40 [21.08.2012]
+ Commandline (1.Source 2.Destination)
+ OpenWindow();alles bis auf "title" wird ignoriert
+ WindowEvent() nur #PB_Event_Gadget
+ GadgetEvent()
+ EventType() nur #PB_EventType_LeftClick,#PB_EventType_LeftDoubleClick #PB_EventType_Focus,#PB_EventType_LostFocus,#PB_EventType_Change
+ StringGadget()
+ ButtonGadget()
+ Set/GetGadgetText()
Download (81 KB)
Benutzeravatar
Kiffi
Beiträge: 10711
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: PBtoHTML5 Compiler

Beitrag von Kiffi »

Hallo Kevin,

danke für die neue Version!

gadget.pb funktioniert leider nicht wie gewünscht.

In Chrome und Firefox passiert nach Klick auf 'Swap' nichts

Im IE (9) wird erst gar nichts angezeigt:
IE Entwicklertools hat geschrieben:SCRIPT1002: Syntaxfehler
gadget.pb.html, Zeile 39 Zeichen 1
SCRIPT5009: "_pbh5i" ist undefiniert
gadget.pb.html, Zeile 347 Zeichen 1
Grüße ... Kiffi
a²+b²=mc²
Antworten