Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 16:33

Foren-Übersicht » DGL » Feedback
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Okt 28, 2006 08:49 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
hi Phobeus, iOnOs und Flo und weitere ..

in diesem Thread über Speicherleaks (von Shaddow) hat sich ein Fehler in der DGLSDK herausgestellt.
Die Lösung und Erklärung dazu, befindet sich in dem folgendem Posting von mir.
Shaddow hats dann anschließend getestet und bestätigt.
Nun stellt sich die Frage , "wer ändert das dann ab?"
Ihr 3 taucht als Authoren/Verantwortliche auf, also werdet ihr es wissen.

Danke von mir und Shaddow (und weiteren Usern die es gebrauchen werden )

Gruß Uweq

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Zuletzt geändert von uweq am Sa Okt 28, 2006 12:24, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 28, 2006 09:49 
Offline
DGL Member
Benutzeravatar

Registriert: Do Jun 19, 2003 10:44
Beiträge: 991
Wohnort: Karlsfeld (nahe München)
Werde es beheben wenn das Repository wieder online ist. Übrigens schreibt man mich ohne h ;)

_________________
Danke an alle, die mir (und anderen) geholfen haben.
So weit... ...so gut


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 28, 2006 10:40 
Offline
DGL Member

Registriert: So Aug 20, 2006 23:19
Beiträge: 564
Hatte ionos auch schon mal eine kleine Funktion geschickt für die EasySDLFonts, er wollte es wohl einbauen, aber ich weiss net, obs schon drin ist.
Mit der Funktion bekommt man die Höhe und Breite aller Buchstaben, wodurch man dann sehr einfach Textlaengen und -hoehen ohne lästiges Rechnen oder die Windowsfunktion TextLength herausbekommt. Funkt alles über die SDL_TTF
Code:
  1.  
  2.   TFontSizes          = Array[0..255] of record
  3.                           CharWidth   : Word;
  4.                           CharHeight  : Word;
  5.                         end;
  6.  
  7. function  CalculateFontSizes (Font: TFont): TFontSizes;
  8. var minX, maxX, minY, maxY, advance, nWidth, i: Integer;
  9.     pFont : PTTF_Font;
  10.     FontSize: TFontSizes;
  11. begin
  12.   pFont := TTF_OpenFont(PChar(Font.Name), Font.Height);
  13.   TTF_SetFontStyle(pFont, Font.Style);
  14.  
  15.   for i:=0 to 255 do
  16.   begin
  17.     TTF_GlyphMetrics(pFont, i, minX, maxX, minY, maxY, advance);
  18.     FontSize[i].CharWidth  := maxX-minX;
  19.     FontSize[i].CharHeight := maxY-minY;
  20.   end;
  21.   Result:=FontSize;
  22.   TTF_CloseFont(pFont);
  23. end;

Natuerlich kann man den Typ nach Belieben aendern, man muss eben dann auch den Code angleichen.

die Funktion DARF nur einmal pro Font aufgerufen werden. Denn es wird bei jedem Aufruf eine neue Font erstellt und das ist bei regelmaessigem Aufruf speicherintensiv. Ich hatte es mal im OnIdle drin, und hatte dadruch dann jede Sekunde 6mb speicherzuwachs. Aber einmaliges aufrufen bemerkt man kaum. Glaube das kostet 5 - 10kb.

Ich habe zb eine klasse Fonts in meinem Fontmanager und diese Fonts haben eben als Variable die Fontsizes, die im Oncreate des Fonts mithilfe dieser Funktion bestimmt werden und abgespeichert werden.

Errechen - auch wenn ich denke, dass man das grad noch selbst hinbekommt - ginge dann zb so:
Code:
  1. function TFontManager.GetTextWidth(const FontName, Text: string): Integer;
  2. var nWidth, i: Integer;
  3. begin
  4.   nWidth:=0;
  5.   try
  6.     for i:=0 to Length(text)-1 do
  7.     begin
  8.       nWidth := nWidth+FontSizes[FontNames.IndexOf(FontName)][ORD(text[i])].CharWidth;
  9.     end;
  10.     Result:=nWidth;
  11.   except
  12.     Result:=-1;
  13.   end;
  14. end;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 28, 2006 12:26 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
@Flo

habe das "tierische" h aus deinem Namen entfernt 8)

Sorry dafür, war wohl auf die schnelle mit reingerutscht
Gruß Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Mo Okt 30, 2006 13:00 
Offline
Ernährungsberater
Benutzeravatar

Registriert: Sa Jan 01, 2005 17:11
Beiträge: 2068
Programmiersprache: C++
uweq hat geschrieben:
...
in diesem Thread über Speicherleaks (von Shaddow) hat sich ein Fehler in der DGLSDK herausgestellt.
Die Lösung und Erklärung dazu, befindet sich in dem folgendem Posting von mir.
...

Ich leite das mal per Mail an Phobeus weiter, damit er es ändert. Begründung für dieses Weiterleiten s.u..

Shaddow hat geschrieben:
Hatte ionos auch schon mal eine kleine Funktion geschickt für die EasySDLFonts, er wollte es wohl einbauen, aber ich weiss net, obs schon drin ist.

Nein, denn ich habe dank der Telekom nur an der Uni Internet und dort ist kein SVN installiert...
Ansonsten ist noch ein weitere Sachen an EasySDLFonts zu tuhen, was mit den Rendermethoden zu tun hat:
Bei der richtigen Blendfunktion kann man alle weiteren Rendermethoden wegschmeissen.
Dies wird auch alles passieren, !sobald! ich daheim Internet habe.

Desweiteren speichert TFont diese Informationen schon, es gibt aktuell nur noch keine Möglichkeit um auf sie zuzugreifen.

_________________
Steppity,steppity,step,step,step! :twisted:
❆ ❄ ❄ ❄ ❅ ❄ ❆ ❄ ❅ ❄ ❅ ❄ ❅ ❄ ❄
❄ ❄ ❄ ❅ ❄ ❄ ❄ ❅ ❄ ❄ ❆ ❄ ❄


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Okt 30, 2006 13:59 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Jul 14, 2006 13:08
Beiträge: 117
Wohnort: Berlin
sinnlos nur die Versionsnummer hochzutreiben wenn mal ein Fehler gefunden wurde, bringt ja nix.
Und daß ein Bug-Hinweis nicht verloren geht, ist auch klar. Also, wenn's dann soweit ist, werdet ihr schon das Richtige daraus machen. Es ging halt nur um die Mitarbeit. Schließlich ist das OGL-Forum mehr als nur Team-Arbeit. :lol:

Gruß Uwe
(der leider momentan überhaupt nicht zum proggen kommt) :oops:

Uwe

_________________
Die 3 Totfeinde eines Programmierers ?
a) Tageslicht
b) frische Luft
c) ..und das ständige Gebrüll der Vögel


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 6 Beiträge ] 
Foren-Übersicht » DGL » Feedback


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 14 Queries | GZIP : On ]