Syntax-Highlighting

Übersicht Sonstiges Portal

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen

YellowRider

Ehemaliger Admin

Betreff: Syntax-Highlighting

BeitragSo, Apr 19, 2009 18:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Gemeinde,

aufgrund von Performance-Problemen mussten wir vor ein paar Monaten die Highlighting-Engine (geshi) deaktivieren. Nun hab ich selber eine kleine Engine entwickelt und sie in das Portal integriert. Benutzt wird sie mit
Code: [AUSKLAPPEN]
[syntax="bb"] ... [/syntax]

für BlitzBasic Quelltexte und für BlitzMax Codes
Code: [AUSKLAPPEN]
[syntax="bmax"] ... [/syntax]


Beispiel:
BlitzBasic: [AUSKLAPPEN]
Global DrawPivot, DrawCam, GraphicsX, GraphicsY, CurrFont.TFont3D, LastDrawn.TImageClass3D, DrawZ#, AutoMidH = False
Global PrimitiveMesh, PrimitiveSurf, OriginX#, OriginY#
Global DrawR = 255, DrawG = 255, DrawB = 255, DrawA# = 1
Global CameraCount, Cameras[ 64 ]

Type TImageClass3D
Field Path$
Field TextureH
Field Width
Field Height
Field TexWidth
Field TexHeight
Field Mesh
Field Surface
Field HandleX#
Field HandleY#
Field Rotation#
Field ScaleX#
Field ScaleY#

Field FWidth
Field FHeight
Field FStart
Field FCount
Field FramesPerRow
Field FramesPerColumn
Field Animated
End Type

Type TFont3D
Field ImageClass.TImageClass3D
Field CharWidth[ 255 ]
Field Height
End Type

Function Init3D( Is3D = False )
GraphicsX = GraphicsWidth()
GraphicsY = GraphicsHeight()

DrawCam = CreateCamera()
CameraProjMode DrawCam, 2
CameraZoom DrawCam, 2/Float( GraphicsX )
CameraRange DrawCam, 1, 1001
If Is3D Then
CameraProjMode DrawCam, 0
CameraClsMode DrawCam, False, True
EndIf

DrawPivot = CreatePivot( DrawCam )
TurnEntity DrawPivot, 180, 0, 0
PositionEntity DrawPivot, -GraphicsX/2., GraphicsY/2., 1000, True

If Is3D Then PositionEntity DrawCam, -5000, -5000, -5000

PrimitiveMesh = CreateMesh( DrawPivot )
EntityFX PrimitiveMesh, 1 + 2 + 16
PrimitiveSurf = CreateSurface( PrimitiveMesh )

SetFont3D LoadFont3D( "", 15 )
End Function

Function LoadImage3D.TImageClass3D( Path$, AlphaEnabled = False, Flag = 4 )
ImageClass.TImageClass3D = New TImageClass3D

PrepareTexture( ImageClass, Path$, Flag )

If ImageClass\TextureH Then
ImageClass\Path$ = Path$
ImageClass\FWidth = ImageClass\Width
ImageClass\FHeight = ImageClass\Height
ImageClass\TexWidth = TextureWidth( ImageClass\TextureH )
ImageClass\TexHeight = TextureHeight( ImageClass\TextureH )
ImageClass\FramesPerRow = 1
ImageClass\FramesPerColumn = 1
ImageClass\Mesh = CreateMesh( DrawPivot )
ImageClass\Surface = CreateSurface( ImageClass\Mesh )
ImageClass\ScaleX# = 1
ImageClass\ScaleY# = 1

EntityTexture ImageClass\Mesh, ImageClass\TextureH
EntityFX ImageClass\Mesh, 1 + 2 + 16 + 32*AlphaEnabled

If AutoMidH Then MidHandle3D ImageClass

Return ImageClass
Else
RuntimeError "Texture " + Path$ + " doesn't exist"
EndIf
End Function

Function LoadAnimImage3D.TImageClass3D( Path$, FWidth, FHeight, FFirst, FCount, AlphaEnabled = False, Flag = 4 )
ImageClass.TImageClass3D = New TImageClass3D

PrepareTexture( ImageClass, Path$, Flag )

If ImageClass\TextureH Then
ImageClass\Path$ = Path$
ImageClass\FWidth = FWidth
ImageClass\FHeight = FHeight
ImageClass\TexWidth = TextureWidth( ImageClass\TextureH )
ImageClass\TexHeight = TextureHeight( ImageClass\TextureH )
ImageClass\Mesh = CreateMesh( DrawPivot )
ImageClass\Surface = CreateSurface( ImageClass\Mesh )
ImageClass\FCount = FCount
ImageClass\FramesPerRow = Floor( ImageClass\Width/Float( FWidth ) )
ImageClass\FramesPerColumn = Floor( ImageClass\Height/Float( FHeight ) )
ImageClass\Animated = True
ImageClass\ScaleX# = 1
ImageClass\ScaleY# = 1

EntityTexture ImageClass\Mesh, ImageClass\TextureH, 0
EntityFX ImageClass\Mesh, 1 + 2 + 16 + 32*AlphaEnabled

If AutoMidH Then MidHandle3D ImageClass

Return ImageClass
Else
RuntimeError "Texture " + Path$ + " doesn't exist"
EndIf
End Function

Function LoadFont3D.TFont3D( Path$, Height = 12, Bold = False, Italic = False, Underline = False, AlphaEnabled = False, Flags = 4 )
Font.TFont3D = New TFont3D

FontH = LoadFont( Path$, Height, Bold, Italic, Underline )
SetFont FontH

For i = 0 To 255
Font\CharWidth[ i ] = StringWidth( Chr( i ) )
Next

Font\Height = FontHeight()

Image = CreateImage( 512, 512 )
SetBuffer ImageBuffer( Image )

For i = 0 To 255
X = ( i Mod 16 )*32
Y = Floor( i/16. )*32
Text X, Y, Chr( i )
Next

SetBuffer BackBuffer()

Add = MilliSecs() Mod 100
SaveImage Image, "__Temp" + Add + ".bmp"
Font\ImageClass = LoadAnimImage3D( "__Temp" + Add + ".bmp", 32, 32, 0, 256, AlphaEnabled, Flags )
HandleImage3D Font\ImageClass, 0, 0
DeleteFile "__Temp" + Add + ".bmp"
FreeImage Image

FreeFont FontH

Return Font
End Function

Function SetFont3D( Font.TFont3D )
CurrFont = Font
End Function

Function FontHeight3D()
Return CurrFont\Height
End Function

Function Text3D( X#, Y#, SourceString$, CenteredX = False, CenteredY = False )
X# = X# - Int( CenteredX*StringWidth3D( SourceString$ )*0.5 )
Y# = Y# - Int( CenteredY*FontHeight3D()*0.5 )

Local DrawX# = X#
For i = 1 To Len( SourceString$ )
DrawImage3D CurrFont\ImageClass, DrawX#, Y#, Asc( Mid( SourceString$, i, 1 ) )
DrawX# = DrawX# + CurrFont\CharWidth[ Asc( Mid( SourceString$, i, 1 ) ) ]
Next
End Function

(Code von Noobody, gekürzt, siehe https://www.blitzforum.de/foru...hp?t=30549)

Bei BlitzMax Codes werden noch nicht alle Keywords hervorgehoben und dann auch nur verlinkt, wenn der Befehl auch von BlitzBasic unterstützt wird.

Danke für die Aufmerksamkeit,
YellowRider

Noobody

BeitragSo, Apr 19, 2009 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist ja grossartig!

Grosses Lob dafür, scheint ja ziemlich viel Arbeit gekostet zu haben.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

ozzi789

BeitragSo, Apr 19, 2009 19:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn das nicht cool ist Cool
Tolle Arbeit!
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

DaysShadow

BeitragSo, Apr 19, 2009 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Prima, jetzt werden Codes noch besser lesbar und diskutierbar sein, wenn das nichts ist Smile
Blessed is the mind too small for doubt

Eingeproggt

BeitragSo, Apr 19, 2009 20:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Sehr gut gemacht!
Aber Bugreports nimmst du noch entgegen?

Also in dem Thread https://www.blitzforum.de/foru...hp?t=31498 bei Noobodys Antwort wo man 2 Codezeilen in getrennten Tags hat... Da erschien bei mir (Opera 9.27) beim unteren "Ausklappen". Als ich draufging, weil ich wissen wollte was passiert erschien beim oberen "Einklappen".
Obwohl das jeweils nur eine Zeile Code ist.

EDIT: Screenshot:
user posted image

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

ozzi789

BeitragSo, Apr 19, 2009 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Ehm wieso sieht das ganze in der Hilfe anderst aus?
bei FF 3.0.8 siehts so aus
user posted image


bei IE siehts wie immer aus



mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

TimBo

BeitragSo, Apr 19, 2009 20:46
Antworten mit Zitat
Benutzer-Profile anzeigen
also der IE 8 macht das bei mir ohne Probs.

Vielleicht solltest du ihm mal wieder updaten ? Confused

echt komisch

Grüße
TimBo

Edit: NICE WORK !!
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31
hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht.

YellowRider

Ehemaliger Admin

BeitragSo, Apr 19, 2009 21:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Beide Bugs sind behoben. Im IE wäre der Fehler auch aufgetreten, hättest nur den Cache löschen müssen Wink

aMul

Sieger des Minimalist Compo 01/13

BeitragSo, Apr 19, 2009 22:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine tolle Sache, YR!
Auch wenn die Farben vielleicht Geschmacksache sind. Wink
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver
 

#Reaper

Newsposter

BeitragSo, Apr 19, 2009 22:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Finde ich toll, Danke! Smile

Nur noch ein kleiner Fehler ist mir aufgefallen: Bei dem oben verlinkten Code von Noobody wird im Quelltext ein Smily angezeigt.


@aMul: Kannst ja User-CSS verwenden. Wenn man CSS beherscht, ist es echt toll. Smile
(Nein, ich kann es kaum... Sad )
AMD Athlon 64 3500+, ATI AX800 Pro/TD, 2048 MB DRR 400 von Infineon, ♥RIP♥ (2005 - Juli 2015 -> sic!)
Blitz3D, BlitzMax, MaxGUI, Monkey X; Win7

Xeres

Moderator

BeitragSo, Apr 19, 2009 23:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Woa, cool Exclamation

Interessehalber: Wie schnell ist das denn bei längeren Codes?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Xaymar

ehemals "Cgamer"

BeitragSo, Apr 19, 2009 23:07
Antworten mit Zitat
Benutzer-Profile anzeigen
vlt mal testen. nice wäre so eine anzeige der zeit die der scriptparser gebraucht hat zum färben
Warbseite

Ironstorm

Erstklassiger Contest-Veranstalter

BeitragSo, Apr 19, 2009 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Also ich hab mich mal nach längeren Codes umgeschaut und keine Ladezeit gemerkt. Scheint ja doch recht flott zu sein.

Lob an dich YR. Wieder einmal ein tolles Feature für das Portal.

MfG
Ironstorm
..:: blackbird design : blackbird photography : Futuro Verde : X-Commander ::..
MacBook | Intel Core 2 Duo 2,1 GHz | 2048 MB RAM | 80 GB HDD | Mac OS X 10.6.2 (Snow Leopard) | Adobe CS4 Design Premium

YellowRider

Ehemaliger Admin

BeitragMo, Apr 20, 2009 0:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke.

Bei extrem langen Codes kann es doch schon mal langsamer werden (vielleicht so 5 Sekunden pro 100KB). Aber da die gerenderten Quelltexte in einen Cache geschrieben werden, fällt das für jeden Code nur einmal ins Gewicht.

Noobody

BeitragMo, Apr 20, 2009 6:51
Antworten mit Zitat
Benutzer-Profile anzeigen
#Reaper hat Folgendes geschrieben:
Nur noch ein kleiner Fehler ist mir aufgefallen: Bei dem oben verlinkten Code von Noobody wird im Quelltext ein Smily angezeigt.

Das ist in der Tat so, liegt aber wohl daran, dass ich in einem Kommentar ein Smiley gemacht habe. Man kann sich nun darüber streiten, was in dem Fall geschehen soll, aber ein Smiley hier und da finde ich nicht schlimm.
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun

aMul

Sieger des Minimalist Compo 01/13

BeitragMo, Apr 20, 2009 7:31
Antworten mit Zitat
Benutzer-Profile anzeigen
#Reaper hat Folgendes geschrieben:
@aMul: Kannst ja User-CSS verwenden. Wenn man CSS beherscht, ist es echt toll. Smile
(Nein, ich kann es kaum... Sad )

Ich kann es, bin aber zu faul dazu. Mr. Green
Obwohl das hier wirklich ein guter Grund wäre mal ein bisschen damit herumzuspielen.
Panic Pong - ultimate action mashup of Pong and Breakout <= aktives Spiele-Projekt, Downloads mit vielen bunten Farben!
advASCIIdraw - the advanced ASCII art program <= aktives nicht-Spiele-Projekt, must-have für ASCII/roguelike/dungeon-crawler fans!
Alter BB-Kram: ThroughTheAsteroidBelt - mit Quelltext! | RGB-Palette in 32²-Textur / Farbige Beleuchtung mit Dot3 | Stereoskopie in Blitz3D | Teleport-Animation Screensaver

Skabus

BeitragMo, Apr 20, 2009 14:33
Antworten mit Zitat
Benutzer-Profile anzeigen
An sich ja ne wirklich wunderbare Sache....Very Happy

Allerdings wird es bei mir nich korrekt angezeigt, bzw. wird direkt über die gesamte
Seite gelegt....
Confused


MfG Ska
"In einer so verrückten Welt, kann man um in ihr zu überleben nur eines tun, nämlich eben jenes werden: Ein Verrückter!" -Selbstzitat

aktuelles Projekt: Aves Certim - Der Galgen ist nicht weit!
Ein SNES-RPG mit Handels- und Wirtschaftselemente.
Infos?Hier: http://www.blitzforum.de/worklogs/234/
Besucht meine Seite:
www.seelenfriedhof.de.vu

ZaP

BeitragMo, Apr 20, 2009 15:20
Antworten mit Zitat
Benutzer-Profile anzeigen
Mir wäre von den Farben her eher der Visual Studio Stil lieber, also blaue Keywords, Orange/Rote Strings.
Starfare: Worklog, Website (download)

Geeecko

BeitragMo, Apr 20, 2009 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Tolle Sache!

*Test*
BlitzMax: [AUSKLAPPEN]
Global piep:String = "Hallo"
....

the FR3AK

BeitragMo, Apr 20, 2009 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
wuhu gefällt mir! Gute Sache :>

*test*

BlitzBasic: [AUSKLAPPEN]

eier=eier+1
Print "Hans hat "+eieranzahl+" Eier!"

Gehe zu Seite 1, 2, 3  Weiter

Neue Antwort erstellen


Übersicht Sonstiges Portal

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group