[Geändert] Andorra Textout, verschrumpelt..

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Displaced
Beiträge: 83
Registriert: So 12. Jul 2009, 10:08

[Geändert] Andorra Textout, verschrumpelt..

Beitrag von Displaced »

Hallo leute, ich versuche gerade Andorra 2D mit Lazarus zum laufen zu kriegen.
Bislang ging alles gut allerdings hab ich ein Problem, ich benötige für eine Funktion innerhalb Andorra "GetObject" und das gibts i-wie nicht, bzw ich weiß nicht wo.
Kann mir da wer helfen?
Oder gibt es zu Andorra alternativen, außer direkt OGL? Amsonsten bleibt mir wohl nix anderes über.

PS: Hab den Titel geändert, da das Hauptproblem, dann doch ein anderes ist.

Crosspost: http://www.delphi-forum.de/viewtopic.ph ... 931#597931
Zuletzt geändert von Displaced am Do 4. Mär 2010, 18:05, insgesamt 2-mal geändert.

Stoney
Beiträge: 19
Registriert: Mo 14. Sep 2009, 15:16
OS, Lazarus, FPC: Mac OS (Lazarus 0.9.31, FPC 2.5.1)
CPU-Target: 32Bit & 64Bit
Wohnort: Königsbrunn
Kontaktdaten:

Re: GetObject fehlt

Beitrag von Stoney »

Beschreib doch mal bitte dein Problem ein bisschen genauer. Was möchtest du genau machen und wozu brauchst du ein "getObject"? Eventuell ein bisschen Beispielcode wäre ganz hilfreich.
Alternativen gibt es jede Menge, aber setz doch erstmal noch etwas mit Andorra 2D etwas mehr auseinander, bevor du das ganze Konzept über den Haufen wirst. Notfalls kannst du ja auch selber eine "getObject" implementieren. Solltest du dich mit OpenGL direkt beschäftigen wollen, musst du viel mehr Handarbeit anlegen. Andorra nimmt dir da schon einiges ab.

Displaced
Beiträge: 83
Registriert: So 12. Jul 2009, 10:08

Re: GetObject fehlt

Beitrag von Displaced »

Code: Alles auswählen

procedure SetFontQuality (aFont: TFont;  aQuality: Byte);
var
  LF : TLogFont;
begin
  GetObject(aFont.Handle, SizeOf(TLogFont), @LF);
  LF.lfQuality := aQuality;
  aFont.Handle := CreateFontIndirect(LF);
end;

Sinn des ganzen ist, die Textausgabe ohne Antialiasing zu erstellen, weil das in Lazarus komplett grausam aussah.
Also man konnte nix erkennen.
Btw: Ich finde Andorra toll, es funktioniert auch einwandfrei mit TurboDelphi auf Win..

pluto
Lazarusforum e. V.
Beiträge: 7096
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: GetObject fehlt

Beitrag von pluto »

Ich würde darauf tippen, dass es eine API Funktion ist und somit in den Unit: LCLType, LCLProc und / oder LCLInft zu finden ist.

PS: Ich nutzte zwischendurch Andorra Linux, die Schrift geht bei mir recht zufriedenstellen. Vielleicht ist das ein Windows Fehler in Andorra ?
Schon mal den Autoren von der Engine gefragt ? Der ist hier auch angemeldet: Igel
MFG
Michael Springwald

Displaced
Beiträge: 83
Registriert: So 12. Jul 2009, 10:08

Re: GetObject fehlt

Beitrag von Displaced »

Das mit LCLInft hat funktioniert.
Ich hab mich mal mit Igel unterhalten...
Ich hab ihm ein Screenshot gezeigt und ihm gesagt, dass es immer gleich aussieht egal welchen Font ich nehme.
Er meinte dann, Zitat: "Die Fonts werden mit der Hilfe von LCL/VCL Funktionen erstellt - also eher ein Bug dort. ".
Vllt ein neues Thema dafür auf machen, oder weiß da was wer drüber?

pluto
Lazarusforum e. V.
Beiträge: 7096
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: GetObject fehlt

Beitrag von pluto »

Bei mir klappt das ganz gut. Kannst du mal die Code Ausschnitte Zeigen wie du die Schrift Art erstellt und Anwendest ?
MFG
Michael Springwald

Displaced
Beiträge: 83
Registriert: So 12. Jul 2009, 10:08

Re: GetObject fehlt

Beitrag von Displaced »

Code: Alles auswählen

program Project1;
 
{$mode DELPHI}
 
uses
  {$IFDEF UNIX}{$IFDEF UseCThreads}
  cthreads,
  {$ENDIF}{$ENDIF}
  Classes
  { you can add units after this }, LazOpenGLContext,
  AdClasses, AdEvents, AdTypes, AdDraws, AdStdWindow, AdDLLExplorer,
  Graphics, AdConsts;
 
type
 
  { TAdAppl }
 
  TAdAppl = class
    public
      AdDraw : TAdDraw;
      procedure Run;
      procedure Idle(Sender:TObject; var Done:boolean);
end;
 
procedure TAdAppl.Run;
var
  AdDLLExplorer: TAdDLLExplorer;
begin
  AdDraw := TAdDraw.Create(nil);
 
  AdDraw.DllName := './libAndorraOGL.so'; //Function in the AdDLLExplorer unit
 
  AdDraw.Display.Width := 800;
  AdDraw.Display.Height := 600;
  AdDraw.Display.BitDepth := Ad32Bit;
 
  if AdDraw.Initialize then
  begin
    AdDraw.Window.Events.OnIdle := Idle;
    AdDraw.Window.Title := 'Andorra 2D';
    AdDraw.Run;
  end;
  AdDraw.Free;
end;
 
procedure TAdAppl.Idle(Sender: TObject; var Done: boolean);
begin
AdDraw.ClearSurface(clWhite);
 
AdDraw.BeginScene;
 
  with AdDraw.Canvas do
  begin
    Pen.Color := AdCol32_Black;
    Font := AdDraw.Fonts.GenerateFont('Comic Sans MS',32, []);
    Textout(20,20,'Halloooo');
  end;
 
AdDraw.EndScene;
 
AdDraw.Flip;
done := false;
end;
 
var
  Appl:TAdAppl;
 
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
 
begin
  Appl := TAdAppl.Create;
  try
    Appl.Run;
  finally
    Appl.Free;
  end;
end.

Das ist mein Code zum testen.
Ich benutz Andorra_531 glaub ich also das letzte was man downloaden kann, welches nicht CVS ist.
Und mit der kleinen änderung wegen dem Antialiasing, welches auch nicht klappt.
Klappt mit der normalen version nicht, und mit meiner Veränderung, auf Windows klappts ja.
Lazarus: 0.9.26.2-2
FPC: 2.2.4-3
Von Synaptics (Ubuntu 9.10) runtergeladen.
//EDIT
Habe gerade Lazarus 0.9.28.2 runtergeladen, und es hat sich nichts geändert, außer dass alle Buchstaben gleich verschrümpelt aussehen...

Hitman
Beiträge: 512
Registriert: Mo 25. Aug 2008, 18:17
OS, Lazarus, FPC: ArchLinux x86, WinVista x86-64, Lazarus 0.9.29, FPC 2.4.1
CPU-Target: x86
Wohnort: Chemnitz

Re: GetObject fehlt

Beitrag von Hitman »

Vorsicht - was du da machst, ist keine LCL Anwendung! Die LCL muss vor der Verwendung initialisiert werden. Erstell mal ein neues Projekt und probier deinen Code dort aus (also in einem Projekt, das ein Formular hat). Dort kannst du dir auch gleich anschauen, wie und wann die LCL initialisiert wird.

Displaced
Beiträge: 83
Registriert: So 12. Jul 2009, 10:08

Re: GetObject fehlt

Beitrag von Displaced »

Hm mit einer LCL anwedung hatte ich aber immer wieder fehler bekommen, diese tollen Zugriffsfehler, beim schließen dann.
Joah und ändern tut es an der Schrift auch nichts..

pluto
Lazarusforum e. V.
Beiträge: 7096
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: [Geändert] Andorra Textout, verschrumpelt..

Beitrag von pluto »

Deine Vorgehensweise ist etwas Untypisch. Auf der Andorra Hompage gibt es ein Tutorial, was genau beschreibt wie du Andorra in Lazarus nutzen kannst: http://andorra.sourceforge.net/index.php?bb=lazarus1ger
MFG
Michael Springwald

Displaced
Beiträge: 83
Registriert: So 12. Jul 2009, 10:08

Re: [Geändert] Andorra Textout, verschrumpelt..

Beitrag von Displaced »

Ja genau das hab ich gemacht, und da ist es genau das selbe, außerdem gibt es dort noch ein anderes Tutorial für Lazarus & das ist eben ohne LCL, und da ist es ebenfalls das selbe.
Der einzige Unterschied ist, dass ich mit einem LCL projekt immer nen SIGSEGV bekomme und mit NonLCL nicht. (Kann ich mir auch nicht erklären).

pluto
Lazarusforum e. V.
Beiträge: 7096
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: [Geändert] Andorra Textout, verschrumpelt..

Beitrag von pluto »

Ich hatte am Anfang auch Probleme, dass lag meistens an der DLL / SO Datei bzw. die Art und weise wie sie Andorra übergeben wurde. Jetzt geht es Problemlos.
MFG
Michael Springwald

Displaced
Beiträge: 83
Registriert: So 12. Jul 2009, 10:08

Re: [Geändert] Andorra Textout, verschrumpelt..

Beitrag von Displaced »

Ja gut, das Problem mit dem Text besteht aber ja weiterhin und das hilft mir hier alles nichts x_X
Ich hab auch keine Idee woher das kommen könnte, selbst mit ner "clean" version von andorra ist das ja so..
ich werd nochmal versuchen andere fpc sources zu bekommen und wenns dann auch nicht besser ist, dann weiß ich auch nimmer weiter =(

Antworten