Manu's Blitz Basic HTML Render Engine

Übersicht Sonstiges Projekte

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

TheMatrix

Betreff: Manu's Blitz Basic HTML Render Engine

BeitragDo, Jul 26, 2007 20:57
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile ). Die Render Engine unterstüzt zwar nicht alle Befehle, aber für meine Zwecke hat es gereicht. Zu Not ist es reicht einfach für mich, die HTML-RenderEngine zu erweitern, aber ich will erstmal sehen, ob sich überhaupt jemand dafür interessiert Surprised .

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>
richtig darfestellt. Leerzeichen, Groß- und Kleinschreibung, fehlerhafte Tags. Alles wird sauber gerendert. Fehlerhafte oder nicht existierende Befehle, werden einfach überlesen.

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:
user posted image

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

BeitragDo, Jul 26, 2007 23:26
Antworten mit Zitat
Benutzer-Profile anzeigen
nicht schlecht... jetzt mach nen browser draus und cih würd ihn verwenden...
Gewinner der 6. und der 68. BlitzCodeCompo

Abrexxes

BeitragDo, Jul 26, 2007 23:45
Antworten mit Zitat
Benutzer-Profile anzeigen
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. Smile

Schreib noch eine decls für die Syntax.

Code: [AUSKLAPPEN]
.lib " "

HTML_setSize(x%, y%) : ""
etc


cu

TheMatrix

BeitragFr, Jul 27, 2007 0:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey danke erstmal für das Feedback Smile

@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 Confused .

Gruß,

Manu
°_° °.° °~° °v° .. -.-

Abrexxes

BeitragFr, Jul 27, 2007 0:34
Antworten mit Zitat
Benutzer-Profile anzeigen
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

TheShadow

Moderator

BeitragFr, Jul 27, 2007 18:16
Antworten mit Zitat
Benutzer-Profile anzeigen
center in html ist übrigens "deprecated"
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

TheMatrix

BeitragSa, Jul 28, 2007 0:19
Antworten mit Zitat
Benutzer-Profile anzeigen
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° .. -.-

TheShadow

Moderator

BeitragSa, Jul 28, 2007 12:57
Antworten mit Zitat
Benutzer-Profile anzeigen
center soll per DIV und CSS gemacht werden:

etwa

<div style="text-align:center">
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2

D2006

Administrator

BeitragSa, Jul 28, 2007 13:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jul 28, 2007 13:22
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jul 28, 2007 16:17
Antworten mit Zitat
Benutzer-Profile anzeigen
@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 Wink .
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. Urbach

ehemals "Basicprogger"

BeitragSo, Jul 29, 2007 10:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Wink
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

BeitragSo, Jul 29, 2007 11:38
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSo, Jul 29, 2007 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragMo, Jul 30, 2007 9:30
Antworten mit Zitat
Benutzer-Profile anzeigen
sieht recht gut aus.

ich bin auf weitere Updates gespannt.
between angels and insects

TheMatrix

BeitragMo, Jul 30, 2007 13:18
Antworten mit Zitat
Benutzer-Profile anzeigen
@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 Smile.

@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 Smile .

Gruß, Manu
°_° °.° °~° °v° .. -.-

TheMatrix

BeitragMo, Jul 30, 2007 18:59
Antworten mit Zitat
Benutzer-Profile anzeigen
So, kleines Update. <h2> bis <h6> werden nun vollständig gerendert.

Gruß, Manu
°_° °.° °~° °v° .. -.-

CypressArt

BeitragDi, Nov 27, 2007 11:35
Antworten mit Zitat
Benutzer-Profile anzeigen
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 Smile .

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!!!! Rolling Eyes
(no comment) -> Google Search Bot!!

TheMatrix

BeitragDi, Nov 27, 2007 23:17
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragSa, Jan 10, 2009 11:07
Antworten mit Zitat
Benutzer-Profile anzeigen
hat vlt. noch jemand die datei ?

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Projekte

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group