Kardioide (PTCPas und Cairo Beispiel)

Vorstellungen von Programmen, welche mit Lazarus erstellt wurden.
Antworten
Benutzeravatar
Roland Chastain
Beiträge: 186
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Roland Chastain »

Hallo zusammen!

Ich möchte Ihnen ein Beispiel für eine Animation zeigen, die auf PTCPas und Cairo basiert.

Drücken Sie eine Taste, um das Programm zu schließen.
Dateianhänge
screenshot.png
screenshot.png (24.14 KiB) 371 mal betrachtet
ptcpas-cairo-example.zip
(1.73 KiB) 236-mal heruntergeladen
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Mathias
Beiträge: 7164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Mathias »

Ich habe es gerade probiert. Unter Linux läuft es in einem Fenster, mit wine geht es ins Vollbild,
Mit ptc habe ich noch nie etwas gemacht, aber sicher auch eine Möglichkeit um einen Framebuffer zu erzeugen.

Was ich echt cool finde, wie du die Schnittpunkte berechnest.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
AlterPascaler
Beiträge: 105
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von AlterPascaler »

Hallo,

kann mir mal jemand helfen?

nach dem Aufruf von make bekomme ich die Fehlermeldung:

Code: Alles auswählen

Fatal: Can't find unit system used by Cardioid1
Fatal: Compilation aborted
Error: /laza/4.fixes/fpc/bin/x86_64-linux/ppcx64 returned an error exitcode
Wenn ich das über die IDE kompiliere läuft es auch bei mir.
Bei mir fehlte noch die "libXxf86dga", nach installiert, fertig.

Wie macht ihr das über make.
Viele Grüße
AlterPascaler

Mathias
Beiträge: 7164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Mathias »

Wenn ich das über die IDE kompiliere läuft es auch bei mir.
Bei mir fehlte noch die "libXxf86dga", nach installiert, fertig.
Ich gebe es zu, habe die pas einfach in die IDE kopiert und F9 gedrückt.

make geht bei mir auch nicht.

Code: Alles auswählen

$ make
Free Pascal Compiler version 3.2.2+dfsg-32 [2024/01/05] for x86_64
Copyright (c) 1993-2021 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling cardioid1.pas
cardioid1.pas(12,13) Fatal: Can't find unit ptc used by Cardioid1
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode
make: *** [Makefile:8: cardioid1] Fehler 1
So nebenbei ist die lib ibXxf86dga ein Oldie.
Wen man schon cairo hat, wie in dem Beispiel, dann am besten mit GTK ausgeben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Roland Chastain
Beiträge: 186
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Roland Chastain »

AlterPascaler hat geschrieben: Mo 12. Jan 2026, 13:21 nach dem Aufruf von make bekomme ich die Fehlermeldung:
Mein erster Gedanke ist, dass der Compiler seine Konfigurationsdatei nicht finden kann.

Sind mehrere Versionen von FPC auf Ihrem Computer installiert?

Welchen Rückgabewert liefert der Befehl which fpc auf Ihrem System?

Bei mir:
$ which fpc
/usr/bin/fpc
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Mathias
Beiträge: 7164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Mathias »

Kommt bei mir auch. Aber ich verwende per default das fpc/lazarus was ich mit fpcupdeluxe installiert habe.

Code: Alles auswählen

 which fpc 
/usr/bin/fpc
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Roland Chastain
Beiträge: 186
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Roland Chastain »

Um zu überprüfen, ob es sich tatsächlich um das Problem handelt, das ich vermute (oder nicht), schlage ich vor, dass Sie das folgende Skript ausprobieren.

Code: Alles auswählen

FPC=~/Applications/lazarus-stable-251116/fpc/bin/x86_64-linux/fpc
CFG=$FPC.cfg
SRC=beispiel.pas

if [ ! -f $FPC ]; then
  printf "Existiert nicht: %s\n" $FPC
  exit 1
fi

if [ ! -f $CFG ]; then
  printf "Existiert nicht: %s\n" $CFG
  exit 1
fi

if [ ! -f $SRC ]; then
  printf "Existiert nicht: %s\n" $SRC
  exit 1
fi

$FPC @$CFG -n $SRC
Das Skript startet FPC mit dem Pfad zur Konfigurationsdatei und der Option -n, sodass FPC alle anderen möglicherweise im System vorhandenen Konfigurationsdateien ignoriert.

Vergessen Sie nicht, die Variablenwerte zu ersetzen!

Ich habe dieses Skript test.sh genannt und führe es folgendermaßen aus:

Code: Alles auswählen

$ sh test.sh
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Soner
Beiträge: 772
Registriert: Do 27. Sep 2012, 00:07
OS, Lazarus, FPC: Win10Pro-64Bit, Immer letzte Lazarus Release mit SVN-Fixes
CPU-Target: x86_64-win64
Wohnort: Hamburg

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Soner »

Also wer das als Windows-Benutzer mal anschauen möchte, dann kann er das fertiges Programm in den Ordner "Inkscape/bin" verschieben und dort starten, natürlich wenn man Inkscape installiert hat. Dann braucht man keine Cairo- oder GTK-Libs zu suchen.

Mathias
Beiträge: 7164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Mathias »

Ich sehe nicht, was Inkscape für einen Vorteil gegenüber cairo haben soll, ausser man hat eine statische Vektor Grafik.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7062
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von af0815 »

Ich gehe davon aus, das bei der Methode von Soner einfach die nötigen Libs einfach vorhanden sind, da Inkscape die installiert hat. Für einen schnellen Test sicher ganz Ok.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Roland Chastain
Beiträge: 186
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Roland Chastain »

Ja, die Installation von Inkscape ist eine Möglichkeit, die Cairo-DLL(s) unter Windows zu erhalten.

Um unter Windows (von einem USB-Laufwerk) zu arbeiten, verwende ich persönlich dieses kleine Skript, das den Speicherort der benötigten DLLs zur PATH-Variable hinzufügt und ein Terminal öffnet:

Code: Alles auswählen

@echo off

set PATH=%~d0\path\to\inkscape\bin;%PATH%

%COMSPEC%
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Mathias
Beiträge: 7164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Mathias »

Ja, die Installation von Inkscape ist eine Möglichkeit, die Cairo-DLL(s) unter Windows zu erhalten.
Da gibt es mehrere Varianten. GIMP kann man ach installieren.
Oder eine professionelle Variante, über MSYS2, da bekommt man fast alle DLL, welche opensource sind.
Oder ein fedora Linux in einer Distrobox ist auch ein guter DLL Lieferant.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
AlterPascaler
Beiträge: 105
Registriert: Mo 26. Jun 2023, 18:56
OS, Lazarus, FPC: Linux, Lazarus, Free Pascal
CPU-Target: xxBit
Wohnort: Deutschland, NRW

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von AlterPascaler »

Moin,
Roland Chastain hat geschrieben: Mo 12. Jan 2026, 20:20 Um zu überprüfen, ob es sich tatsächlich um das Problem handelt, das ich vermute (oder nicht), schlage ich vor, dass Sie das folgende Skript ausprobieren.
das Script funktioniert, guter Hinweis.

Und so geht's auch mit make.
Meine Installation ist unter Linux mit fpcupdeluxe. Habe den Pfad nach "fpc" in "$PATH" (~MyLazaInstall/4.fixes/fpc/bin/x86_64-linux/) gespeichert.
In der make Datei eine kleine Änderung vorgenommen.

Code: Alles auswählen

SOURCES := $(wildcard *.pas)
TARGETS := $(SOURCES:%.pas=%)

all: $(TARGETS)

%: %.pas
	@fpc.sh -Mobjfpc -Sh -ghl $<

Aus "fpc" wurde "fpc.sh".
In "fpc.sh" steht der Pfad zur "fpc.cfg".

Wenn man es fertig hat, ist es oft so einfach!
Viele Grüße
AlterPascaler

Benutzeravatar
Roland Chastain
Beiträge: 186
Registriert: Sa 7. Jul 2012, 21:50
Wohnort: Saargemünd
Kontaktdaten:

Re: Kardioide (PTCPas und Cairo Beispiel)

Beitrag von Roland Chastain »

@AlterPascaler

Gut! Danke für den Tipp bezüglich der fpc.sh-Datei.
Petit poisson deviendra grand,
Pourvu que Dieu lui prête vie.

Antworten