Manu's Blitz Basic HTML Render Engine
Übersicht

![]() |
TheMatrixBetreff: Manu's Blitz Basic HTML Render Engine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi BB Freunde,
ich wollt endlich auch mal ein Projekt von mir vorstellen undzwar eine HTML Render Enigne. Erstellt habe ich diese, weil man in BB kein HTML darstellen kann und ich sowas für mein letztes Projekt brauchte(und weil es einen heiden Spaß macht, mal sowas selbst zu proggen ![]() ![]() So, nun genug der Vorworte und nun die Erklärung der Engine: Unterstützte Befehle: <b> - Fettschrift <br> - Zeilenumbruch <br /> - Zeilenumbruch (diesen Befehl gibt es nur in XML) <center> - Schrift zentrieren <h1-6> - Überschrift in 6 Größen <hr> - Eine Linie <hr size=""> - Größe der Linie <hr width=""> - Breite der Linie <hr color=""> - Farbe des Balken <html> - Derzeit keine Funktion <font> - Gibt Schriftfarbe und Schriftgröße vor <font color="xxx"> - Legt die Schriftfarbe fest z.B. color="#FF0000"Rot color="green"Grün <font size="xxx"> - Legt die Schriftgröße fest z.B. size=7 : Schriftgröße 7 size=+12 : Schrift um +12 vergrößert <i> - Schrägschrift <img src="Quelle"> - Zeigt ein Bild an <p> - Macht einen Absatz <u> - Schrift unterstrichen <title> - Setzt den Titel der BB-Applikation Fehlertoleranz Die HTML-Render Engine ist recht Fehlertolerant, beim validieren einer HTML-Datei. Beispielsweise werden auch Code Stücke wie: Code: [AUSKLAPPEN] <h1>Hui <fONT COLOR ="yellow">123 TEST TEST<br> <font size 7> Wichtige Funktionen, zum Anzeigen einer HTML-Datei DrawHtmlDocument(HTML_Datei$) - Dieser Befehl stellt eine HTML-Datei da. Sollte zur Laufzeit "DrawHtmlDocument" eine andere HTML-Datei übergeben werden, so merkt dass die Funktion und rendert sofort, die neue HTML-Datei neu. Sollte die HTML-Datei nicht existieren, so wird eine weiße Fläche angezeigt. HTML_setpos(x, y) - Positioniert die HTML-Datei am Bildschirm HTML_setSize(x, y) - Setzt die Größe der HTML-Anzeige HTML_setOffset(x, y) - Setzt den Offset der HTML-Anzeige. Dadurch kann z.B. ein scrollen innerhalb des Views ermöglicht werden HTML_getOffsetX() HTML_getOffsetY() - Holt sich den Offset der HTML-Anzeige HTML_getWidth() HTML_getHeight() - Ermittel die gesamte Breite und Höhe der HTML-Datei. HTML_Refresh() - Lädt die HTML-Datei komplett neu. Z.b. kann während der Laufzeit die HTML-Datei ausserhalb geändert werden. Durch HTML_Refresh kann man auf diese Änderungen reagieren. Anwendungsbeispiel: Simpel: Code: [AUSKLAPPEN] drawHTMLDocument("test.html")
Größe und Position festlegen: Code: [AUSKLAPPEN] HTML_setPos(100,100)
HTML_setSize(400,400) drawHTMLDocument("test.html") HTML positionieren und scrollen: Code: [AUSKLAPPEN] ;Grafik einstellen height = 480 Graphics 640, height,32 SetBuffer BackBuffer() ;Core integrieren Include "HTMLCore.bb" ;HTML Posistion setzen HTML_setpos(0,0) ;Hauptschleife While Not KeyHit(1) ClsColor 200,200,200 : Cls ;::::::::::::::::::::::::::::::::::::::::::::: ;: Grafische Darstellung eines Scrollbalkens : ;::::::::::::::::::::::::::::::::::::::::::::: Rect 0, 0, MouseX(), height,0 multi# = (HTML_getHeight() / Float(height)) Color 0,160,0 Rect MouseX(),0,10,height Color 0,200,0 Rect MouseX(),0,10,height,0 size# = height / multi# Rect MouseX()+2, HTML_getOffsetY() / multi#, 6, size ;:::::::::::::::::::::::::::::::::::::::::::::: ;:::::::::::::::::::::::::::::::::::::::::::::: ; Scrollbalken bewegen If MouseDown(1) HTML_setOffset(0,(MouseY()-size/2) * multi#) ; HTML rendern DrawHTMLDocument("TestHTML.html") ; HTML-Größe mit der Mouse festlegen HTML_setSize(MouseX(),height) ; HTML mit dem Mausrad rauf und runter scrollen speed = MouseZSpeed() If speed<>0 HTML_setOffset(0,HTML_getOffsetY()-speed*20) ; HTML auf dem Bildschirm zeichnen Flip 0 : Delay 20 ; Bei drücken von F5 die HTML-Datei neu laden If KeyHit(63) HTML_Refresh() Wend Darstellung einer HTML-Seite: Download der Engine: http://www.manuel-beck.dyndns....Engine.rar (~15KB) (Der Core selber ist entpackt 46.1kb groß) Download der .decls-Datei: http://www.manuel-beck.dyndns.org/HTML_Decls.zip (Zu kopieren unter BB-Ordner/userlibs - Färbt die HTML-Befehle ein.) Nachwort: Es wäre nett, wenn ihr eurer Feedback niederschreibt. Für Wünsche bin ich gerne offen. Falls ihr die Engine benutzt, wäre es sehr nett, wenn ihr mich eventuell in euren Credits erwähnt bzw. mir das wenigstens vielleicht mitteilen könnt. Es steht jedem zur Verfügung. Gruß an alle, Manu |
||
- Zuletzt bearbeitet von TheMatrix am Mo, Jul 30, 2007 19:00, insgesamt 3-mal bearbeitet
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
nicht schlecht... jetzt mach nen browser draus und cih würd ihn verwenden... | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
He, das ist ja mal was feines. Wenn noch Links funzen würden könnte man Seiten verknüpfen und so komplexe Beschreibungen aufbauen zb zusammen mit OpenOffice.
Hintergrund kann man selbst realisieren. Links, Rechts, Mittig und das Teil wäre gekauft. ![]() Schreib noch eine decls für die Syntax. Code: [AUSKLAPPEN] .lib " "
HTML_setSize(x%, y%) : "" etc cu |
||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey danke erstmal für das Feedback ![]() @DAK: Das mit den Browser istn bizel hard, weil es gibt ein wenig viele HTML-Befehle, die man erstmal meiner Engine beibringen müsste und das würd recht lang dauern ^^(z.B. Buttons, Checkboxen, Tabellen, JavaScript etc...). @Abrexxes: Also das mit den Links is kein großes Problem. Da kann ich mich mal die nächsten Tage ransetzen. Nur wie die Decls aufgebaut sind, weiß ich nicht so recht :/. Kann man das irgendwo nachlesen? Ich selbst kann nämlich in BB keine verwenden ![]() Gruß, Manu |
||
°_° °.° °~° °v° .. -.- |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
genauso wie ich es oben vormache. Füge alle anderen Befehle hinzu mit parameter und am besten : "" dahinter. Das speicherst du dann zb als html.decls ..fertig Im Notfall mach ich sie schnell, ist ja kein Problem.
cu |
||
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
center in html ist übrigens "deprecated" | ||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, habe jetzt die .decls-Datei ebenfalls zum Download bereitgestellt.
@TheShadow Is ja nicht weiter schlimm, wie heißt denn der neue Befehl für <center>? Kann den neuen Code dann in mein Core mit einpflegen, wenn du ihn weißt. Gruß, Manu |
||
°_° °.° °~° °v° .. -.- |
![]() |
TheShadowModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
center soll per DIV und CSS gemacht werden:
etwa <div style="text-align:center"> |
||
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2 |
![]() |
D2006Administrator |
![]() Antworten mit Zitat ![]() |
---|---|---|
So gesehen sollte er auch < font > weglassen, aber das CSS nicht implementiert ist, ist ja offensichtlich. Und das mal eben mit reinzunehmen ist glaub ich auch nich so leicht. Von daher kann er wohl < center > drinlassen, | ||
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2 |
Phlox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Nun erstmal:ein ganz großes Lob.
Hier ein kleiner Verbesserungsvorschlag: Starte diesen HTML-Code mal in deinem Browser und einmal mit deinem Code: Code: [AUSKLAPPEN] <html>
<head> <title>TESTFORMULAR</title> </head> <body> <h1>Formular</h1> <form action="index.html" method="get"> <input type="checkbox" name="check1"> Absenden! <br><br><br> <select name="select1"> <option>TEST1</option> <option>TEST2</option> <option>TEST3</option> <option>TEST4</option> </select> <hr> <input type="submit" value="Senden!"> </form> </body> </html> Ich finde es schade, dass keine Formulare unterstützt werden. Und <hr> funzt auch net!(Das zieht eine waagerechte Linie) |
||
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
@TheShadow
Gut vielleicht irgendwann später bestimmt einmal. Aber solange HTML noch von so vielen Menschen genutzt wird denke ich, dass es noch ein wenig dauern wird, bis die Standard-HTML-Sprache ganz versackt ist. Bis dahin kann man ja noch viel coden ![]() Dennoch wäre es jetzt kein Problem für mich, ein Befehl wie <div style="text-align:center"> zum Anzeigen zu bringen. Jedoch die Logik die hinter CSS steckt, ist schwer umzusetzen... @QWertz Ich könnte Formulare darstellen, aber dann müsste ich meine eigene GUI-Engine mitausliefern und ich weiß nicht, ob das gewollt ist. Diese könnte sich dann nämlich mit anderen GUI-Systemen die ihr verwendet beißen, da diese zu viele Variabeln verwendet, die auch in euren Codes vorkommen könnten... So ein Update. Die Engine rendert nun den Befehl <hr>, sowie einige seiner Parameter, wie z.B. size, width und color. Gruß, Manu |
||
°_° °.° °~° °v° .. -.- |
E. Urbachehemals "Basicprogger" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
TheShadow hat Folgendes geschrieben: center soll per DIV und CSS gemacht werden:
etwa <div style="text-align:center"> Das ist die Methode vom IE, für alle Browser muss folgendes eingesetzt werden: Code: [AUSKLAPPEN] .centered {
margin-left:auto; margin-right:auto; text-align:center; } Siehe CSS: Wie kann ich ein Element zentrieren? und Codearchiv: Elemente zentrieren TheMatrix hat Folgendes geschrieben: Jedoch die Logik die hinter CSS steckt, ist schwer umzusetzen...
Für das style-Attribut kannst du bei einer simplen Rendering-Engine so vorgehen: 1. GetToken nach Semikolon suchen lassen. 2. Jedes Token in "Key" und "Value" über den Doppelpunkt aufteilen. 3. Schleife erstellen und durch jede CSS-Expression iterieren, so ähnlich wie ForEach. 4. Prüfen, ob der Key sich irgendwie auf das Element auswirken kann. Das color-Attribut hat bei Bildern (img) beispielsweise wenig Sinn. Hier würde sich C++ lohnen, aber darauf will ich nicht weiter eingehen, außer du willst eine DLL schreiben... 5. Wenn es sich auf das Element auswirken kann, den entsprechenden Wert setzen. 6. Zurück zur Schleife (Next). Auch wenn ich nicht daran glaube, dass deine Rendering Engine (X)HTML vollständig umsetzen wird (vielleicht willst du das auch gar nicht), trotzdem viel Glück ![]() |
||
The box said, "Requires Windows XP or better", so I installed Ubuntu | Linux is NOT Windows
Flua :: Profiler für BB und BMax :: Partikel-Engine für BMax :: Lyphia-Projekt Quellcode (BMax) :: Automatische Parallelisierung :: Meine Musik |
Phlox |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab noch einen Verbesserungsvorschlag:
<h1></h1> ist nur die erste Überschrift. Das geht weiter bis <h6></h6>. Hehe, es ist doch praktisch, wenn man gerade HTML, PHP und MySQL lernt! |
||
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Eine super Sache Matrix, ich hoffe Du bleibst dran. HTML und Konsorten muss ja auch nicht vollständig umgesetzt werden, es gibt ja bereits genügend Browser...
Interessant ist das Ganze um z.B. Newsseiten anzuzeigen. Da wäre natürlich noch ein entsprechendes Framework zum Download der Bilder/Html-Seiten praktisch. |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
![]() |
Jan_Ehemaliger Admin |
![]() Antworten mit Zitat ![]() |
---|---|---|
sieht recht gut aus.
ich bin auf weitere Updates gespannt. |
||
between angels and insects |
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
@Basicprogger
Nette Idee, aber ich mich jetzt eigentlich nur auf HTML konzentriert. Zwar wäre es möglich die Werte der Parameter wie z.B.<div style="text-align:center">, nochmals in Parameter und Wert aufzuspalten (Parameter: text-align, Wert: center), doch müsste ich die Intelligenz meiner Render Engine neu proggen und dazu fehlt mir einfach die Zeit ^^. Werd mich wohl erstmal weiter auf der HTML-Ebene bewegen. @QWertz Wenns weiter nichts als <h1>-<h6> zu implementieren. Da setz ich mich heut nachmittag mal für 5 min ran ![]() @Big Bug Deine Idee gefällt mir, werde das auch mit reinbauen. Werd das so machen, dass man einfach schreibt: drawHTMLDocument("http://www.google.de"). Mal gucken, bis zum Donnerstag krieg ich das wohl locker fertig ![]() Gruß, Manu |
||
°_° °.° °~° °v° .. -.- |
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
So, kleines Update. <h2> bis <h6> werden nun vollständig gerendert.
Gruß, Manu |
||
°_° °.° °~° °v° .. -.- |
![]() |
CypressArt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: @Big Bug Deine Idee gefällt mir, werde das auch mit reinbauen. Werd das so machen, dass man einfach schreibt: drawHTMLDocument("http://www.google.de"). Mal gucken, bis zum Donnerstag krieg ich das wohl locker fertig ![]() Gruß, Manu Konntest du den Vorschlag von BigBug schon realisieren? Diese Funktion kämme mir genau richtig, um bilder von meinem Webspace innerhalb von BB anzeigen zu lassen!!!! ![]() |
||
(no comment) -> Google Search Bot!! |
![]() |
TheMatrix |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ne, hab leider keine Zeit mehr für BB :/. Bin momentan sehr mit meiner Ausbildung beschäftigt und prog eigentlich nur noch mit Java.
Werd warsch. auch nich mehr mit BB proggen, d.h. die Funktion bleibt aus.. Aber trotzdem viel Erfolg mit deinem Prog. |
||
°_° °.° °~° °v° .. -.- |
Appart |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hat vlt. noch jemand die datei ? | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group