Seite 1 von 9

PBtoHTML5 Compiler [pre-alpha]

Verfasst: 19.08.2012 23:26
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

Re: PBtoHTML5 Konverter

Verfasst: 20.08.2012 02:23
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.

Re: PBtoHTML5 Konverter

Verfasst: 20.08.2012 12:45
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.

Re: PBtoHTML5 Konverter

Verfasst: 20.08.2012 15:14
von Kiffi
@Kevin: :allright:

Grüße ... Kiffi

Re: PBtoHTML5 Konverter

Verfasst: 20.08.2012 16:06
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)

Re: PBtoHTML5 Konverter

Verfasst: 20.08.2012 16:22
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

Re: PBtoHTML5 Konverter

Verfasst: 20.08.2012 16:30
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

Re: PBtoHTML5 Konverter

Verfasst: 20.08.2012 22:34
von RSBasic
Gute Idee. :allright:

Re: PBtoHTML5 Compiler

Verfasst: 21.08.2012 22:26
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)

Re: PBtoHTML5 Compiler

Verfasst: 22.08.2012 00:09
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