Re: TextSuite will nicht
Zitat:
Eine andere möglichkeit sehe ich da nicht. Der einzigste unterschied ist doch zu deiner ausführung vom Sample das ich über eine procedure gehe damit meine Render procedure nicht zu unübersichtlich wird. Versteh das nicht :wall: Im Sample gehts in der vis sehe ich nur Quader anstelle der Buchstaben. EDIT: Grrrr... konnte nicht gehn :wall: :wall: :wall: :mrgreen: Für Bitmaps reicht ein glEnable(GL_BLEND); Bei der TextSuite wohl nicht. Mußte also noch die glBlendfunc addieren.
Delphi-Quellcode:
gruss Emil
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND); |
Re: TextSuite will nicht
Bitmaps: Wenn es normale Bitmaps sind. Also wie die klassischen Bitmapfonts. Dann sollte es eigentlich auch ohne Blending gehen. Und für Texturen sollte man die blendfunc immer angeben.
|
Re: TextSuite will nicht
Liste der Anhänge anzeigen (Anzahl: 3)
Zitat:
dann noch eine frage denke das es dann soweit funktioniert. kann es sein das hier noch was fehlt ?
Delphi-Quellcode:
ohne werden die buchstaben richtig angezeigt
tsPostAddBorder4f(1, 1, 1, 1, 1, 0);
tsPostAddFillColor3f(1, 1, 1, TS_CHANNELS_RGB); mit werden diese überlagert .. abgeschnitten. Habe es mal mit einer anderen glBlendFunc versucht dann habe ich aber wieder blöcke anstelle der Buchstaben.
Delphi-Quellcode:
EDIT:
glBlendFunc(GL_SRC_COLOR, GL_ONE_MINUS_SRC_COLOR);
noch ein bild EDIT2: Noch zwei Bilder addiert Unbenannt.jpg kleine Font Fehler .. Und da kannst sehn warum ich nach deiner komponente gefragt hatte ;) klein.jpg da geht das mit dem Font. gruss Emil |
Re: TextSuite will nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Noch eine frage bzgl. TextBlock
Delphi-Quellcode:
Hier ist alles schön aufgeräumt
//** HELP SCREEN
procedure GLHelpScreen(); begin glTranslatef(0, 0, -100); glScalef(1, -1, 1); glScalef(0.1, 0.1, 0.1); glTranslatef(-520, -400, 0); // set align to center tsTextColor3f(1, 1, 1); tsSetParameteri(TS_ALIGN, TS_ALIGN_BLOCK); tsSetParameteri(TS_VALIGN, TS_VALIGN_TOP); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); tsTextBeginBlock(20, 20, 760, 560, TS_BLOCKFLAG_WORD_WRAP); tsFontBind(fHelpFontID); tsTextOutA('KEY - COMMAND'#13#10); tsTextOutA('--------------------------------------- '#13#10); tsTextOutA('F1 : This Helpscreen'#13#10); tsTextOutA('ESC : Exit FullScreen'#13#10); tsTextOutA('Space : Colorswitch on/off '#13#10); tsTextOutA('+ : Set Color'#13#10); tsTextOutA('P : Polygone on/off'#13#10); tsTextOutA('Left : Previous Title'#13#10); tsTextOutA('Right : Next Title'#13#10); tsTextOutA('Up : Decrease Volume'#13#10); tsTextOutA('Down : Increase Volume'); tsTextEndBlock; glDisable(GL_BLEND); end; Beim rendern wird jedoch alles vor dem Doppelpunkt verschoben Wie kann ich das verhindern ? Wieder ein Pic zur vorschau des Fehlers gruss Emil |
Re: TextSuite will nicht
Blockmodus: Ganz klar. Du hast in deinem Editor eine Monospace Schrift. Dort haben alle Zeichen die gleiche Breite. Mit der TextSuite aber nicht. Entsprechend ist das Leerzeichen schmaler als andere Zeichen.
Unbekannt.jpg: Ja diese kleinen Linien meinte ich mit mit den Fehlern. Und dafür war auch der Code. Warum der allerdings woanders so komisch wirkt ist mir ein Rätsel. Zur Not spiel mal mit mit den Parametern rum. Mach mal einen echten Schatten testweise. Teste auch mal eine andere Schrift und evtl. eine andere größe. [edit] Und nö. So recht seh ich das nicht. Das sind doch alles englische Buchstaben. ;) |
Re: TextSuite will nicht
Zitat:
Nur wie kann ich erreichen das der Formatierte Block auch so angezeigt wird. EDIT: Denke mal das kann man nicht fixen daher verwende ich für die Hilfe lieber wieder BitmapFonts und verwerfe das mit dem TextBlock. Zitat:
gruss Emil |
Re: TextSuite will nicht
Liste der Anhänge anzeigen (Anzahl: 2)
Also hier bei mir läuft nun alles
Habe aber gesehen das es auf einen koreanischen System nicht geht. Woran könnte das liegen und kann ich das überhaupt fixen ? gruss Emil |
Re: TextSuite will nicht
Zitat:
Ich habe für später auch noch geplannt Tabulatoren zu unterstützen, damit so etwas auch bei allen anderen Schriften möglich ist. Aber da habe ich vorher noch genügend andere Dinge zu erledigen. Weswegen du darauf vermutlich nicht warten solltest. Zitat:
Ansi hat nur 1 Byte pro Zeichen und kann somit nur 256 Werte annehmen. Deswegen wurden Codepages eingeführt. Diese bieten für unterschiedliche Gebietsschemen unterschiedliche Belegungen der 256 Werte. Per Default ist in der TextSuite Latin-1 (Westeuropäisch) eingestellt. Um wirklichen Unicode support zu bekommen solltest du aber keine Codepages benutzen sondern du solltest entweder mit WideStrings oder UTF-8 arbeiten. Dann hat jedes Zeichen einen eigenen Wert. Und du kannst auch koreanisch, japanisch, russisch und tai direkt mischen. UTF-8 ist da eine spezielle Codierung. Die läuft in der TextSuite über eine pseudo Codepage und die Ansi Funktionen. Ist aber trotzdem in der Lage Zeichen mit bis zu 24 Bit zu speichern. Was mehr als ausreichend ist. Es gibt auch eine Variante von tsTextOut die direkt mit WideStrings (2 Byte pro Zeichen) klar kommt. Die Windowsapi arbeitet direkt mit Widestrings. Dann musst du aber darauf achten, dass du überall auch mit WideStrings arbeitest. Sonst gehen dir die Zeichen vorher schon verlohren. Und meine Bibliothek kann ja nur das darstellen was da auch ankommt. Im Web bzw. bei Dateien kommt aber eher UTF-8 zum Einsatz. Musst du entscheiden was du da lieber benutzen willst. Im Zweifel kann man es immer irgendwie konvertieren. |
Re: TextSuite will nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
anstatt SongName: string; diesen als Widestring zu deklarieren ? Das sollte dann reichen ? Meine vermutung ist eine etwas andere das es nicht am Fontset sondern am Charset liegt oder ist es das was du mit Widestring korrigieren willst ? 2 byte. Was ich meine .... Anstelle von {ANSI_CHARSET} OEM_CHARSET zu verwenden hätte dann aber nichts mit Widestring zu tun oder geht das nur wenn beides zusammen arbeitet ? Kann es ja nicht testen hab kein koreanisches System Kannst du mir ein Beispiel zeigen wie ich den richtigen Charset verwenden soll mit TextSuite ? Am besten das nach deiner meinung sinnvollste. Zitat:
Bin halt auf das zeichnen über BitmapFonts zurückgegangen da ich kein lösung für mein minor problem gefunden habe. Denke aber doch das es besser aussieht wenn der Block richtig formatiert angezeigt wird. EDIT: das mit dem Block geht nun mit der Courier New Nur eine frage kann man den Block nach vorne setzen ? Wird im moment überzeichnet Siehe Bild gruss Emil |
Re: TextSuite will nicht
Font: Das sind ganz normale Quads. Wenn du beim Zeichnen den Tiefentest deaktivierst werden sie über alles andere gezeichnet. Der Tiefentest könnte im übrigen auch dafür sorgen, dass einige Zeichen (wie in "COMMAND" zu sehen) links abgeschnitten werden. Falls dir Courier nicht gefällt musste mal im System schauen. Ich glaube "Lucida Console" sieht freundlicher aus.
Du kannst mit der Bibliothek auch abfragen ob du ein Monospace Font hast oder nicht. Wenn du es erstellt hast rufst du tsGetParateri(TS_FONT_FIXED_WIDTH) auf. Kommt TS_TRUE zurück ist es eines. Bei TS_FALSE nicht. Zitat:
Eine Codepage setzten kannst du mit tsSetParameteri(TS_CODEPAGE, TS_CODEPAGE_8859_8);. Allerdings wird das für dich nicht viel bringen, da Koreanisch Codepages hat die ich noch gar nicht unterstütze (andere typ codepages). Und wegen dem Abschnitt weiter oben. Ich würde dir von daher empfehlen es lieber gleich richtig zu machen. Also Widestrings. Denn in denen hat jedes Zeichen einen eigenen Wert und du keine Einschränkung in gebietsschemen. ABER. Du MUSST auch komplett mit WideStrings arbeiten. Also vom Anfang bis zum Ende. Ich weiß jetzt nicht wo du die Texte herbekommst aber wenn das Dateinamen aus Delphi sind, dann funktioniert es nicht einen String zu einem WideString zuzuweisen, da bereits in dem String schon fehlerhafte Texte enthalten sein dürften. Das ist etwas wessen du dir bewusst sein musst. Die TextSuite kann die dann nur darstellen, wenn sie lückenlos weitergereicht werden. Selbes würde im übrigen auch für die Windows GDI gelten, wenn du damit Unicode Texte ausgeben würdest. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz