IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Aperçu d'une police de caractères avec Cairo


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut Aperçu d'une police de caractères avec Cairo
    Bonjour,

    Quelqu'un ici connaît ? A déjà utilisé ?

    Moi je m'interroge quand je vois que le README.txt dans Lazarus/version/component/cairocanvas est strictement le même que ce soit dans ma vieille 1.4.0 ou dans la presque dernière 2.0.12, et que je vois que les fichiers dans fpcsrc/packages/cairo/src sont tous datés de 2013, que le dossier tests y est vide et que le dossier examples ne propose qu'un seul fichier de 10 lignes en comptant les vides et n'est capable que de writeln(cairo_version());.
    Pour une librairie sensée révolutionner le graphisme, ça fait un peu léger, non ?

    Quant à la doc officielle, elle collectionne les liens morts, et pas un mot de (Free)Pascal ni de Lazarus...

  2. #2
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Bonjour JP. Te serais-tu levé du pied gauche ?

    Pour dessiner dans un fichier (PNG ou autre), c'est facile. J'ai proposé plusieurs exemples, comme celui-ci.

    Pour dessiner dans une fenêtre, le plus simple est d'utiliser le composant TCairoPaintBox. Il faut installer le paquet cairolcl_package.lpk. Le composant est accompagné de toute une collection d'exemples. Voir le dossier demos, et notamment demos/cairo_snippets.

    Sans ce composant, c'est possible aussi, mais jusqu'à présent je n'ai su le faire que sous Windows (exemple).

    Je suis justement en train de regarder comment utiliser Cairo dans une application X11 sous Linux. À suivre...

  3. #3
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Bonjour Roland,

    et grand merci pour ton retour.

    Plusieurs points :
    Citation Envoyé par Roland Chastain Voir le message
    Bonjour JP. Te serais-tu levé du pied gauche ?
    Oui, ce qui m'a énervé, c'est ce README qui n'a absolument pas évolué, comme si le projet était planté.

    Tu me diras, dans lcl/include/font.inc on trouve bien 5 fois (see http://wwwinfo.cern.ch/umtf/working-...s/hp_xlfd.html) qui est bien sûr un lien mort, et si j'ai tenté de contacter le cern à ce propos, je n'ai aucun retour. C'est merveilleux, internet...

    Car oui, je suis toujours intéressé par tout ce qui touche aux polices de caractères et étant tombé récemment sur une qui avait le mot "Slanted" dans sa dénomination (en français "penché, incliné", donc une police oblique), je l'ai testée avec LO Writer où ça fonctionne mais pas du tout avec le FontDialog de notre cher Lazarus...
    Normal, après de longues et laborieuses recherches, il semblerait qu'on aborde un autre monde qu'une bête police .ttf du temps de Windows 3.1, le monde xlfd que j'ai découvert il y a 3 jours et où je vais me perdre.

    Bref, je voulais juste un FontDialog performant qui prenne en compte les options supplémentaires proposées par xlfd et il semblerait que cairo le fasse.
    Mais pas moyen de trouver la moindre démo, et même en farfouillant avec le mot-clé FontChooser je n'arrive à rien.

    Autant dire que ton lien arrive à point nommé, le seul souci c'est que je n'ai pas trouvé où et comment télécharger le paquet cairo. Si tu as une idée, elle est la bienvenue car ce truc a l'air diablement intéressant !

    Citation Envoyé par Roland Chastain Voir le message
    Je suis justement en train de regarder comment utiliser Cairo dans une application X11 sous Linux. À suivre...
    Du coup je te propose ce lien https://www.cairographics.org/FAQ/ et tu penseras bien à lire les quelques lignes sous le code qui expliquent comment compiler, je me suis fait avoir hier !

  4. #4
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Autant dire que ton lien arrive à point nommé, le seul souci c'est que je n'ai pas trouvé où et comment télécharger le paquet cairo. Si tu as une idée, elle est la bienvenue car ce truc a l'air diablement intéressant !
    Réponse rapide sur ce point. Pour télécharger LuiPack, qui est une collection de composants, il faut ouvrir cette page, cliquer sur le bouton vert, puis sur "Download ZIP".

    Dans le ZIP en question, ouvrir le dossier cairo. C'est là que se trouve le paquet cairolcl_package.lpk. Ce paquet est à installer. Il contient le composant TCairoPaintBox. Une fois que tu as installé ce composant, tu peux essayer les différents exemples du dossier cairo/demos.

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Réponse rapide sur ce point. Pour télécharger LuiPack, qui est une collection de composants, il faut ouvrir cette page, cliquer sur le bouton vert, puis sur "Download ZIP".
    OK merci, je m'en doutais mais, adepte des vieux bouzins, mon navigateur ne m'affichait rien en cliquant sur le bouton vert...

    Heureusement que j'ai une seconde machine up-to-date mais pas encore en prod', je l'ai réveillée pour ça et tout s'est bien passé, encore merci à toi !

  6. #6
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Allez, premier essai et première déconvenue, après une install les doigts dans le nez :

    Nom : cairo-demos-tutorial-text_letterbyletter.png
Affichages : 392
Taille : 16,6 Ko

    En apportant une correction (car, oui, "courier" n'existe pas dans Linux, c'est "courier 10 pitch"), c'est bon (en ai profité pour agrandir un poil la largeur) :

    Nom : cairo_avec_courier-10-pitch.png
Affichages : 391
Taille : 27,8 Ko

    Mais cet aprème je n'ai pas trop le temps d'en faire plus...

    Un truc qui m'a surpris, dans le README.md (j'ai enlevé les lignes vides pour aller à l'essentiel) :
    Citation Envoyé par README.md
    # LuiPack
    Collection of Freepascal / Lazarus components and applications
    *by Luiz Américo*
    ## UniqueInstance
    Ensure only one instance of the application runs at same time
    __Usage__: http://wiki.freepascal.org/UniqueInstance
    __Download__: https://github.com/blikblum/luipack/...ueinstance-1.1
    > The code and components not mentioned in this document are not released to the public and can be removed, modified without previous notice
    Il n'y a qu'un composant dans ce readme, le "UniqueInstance" ! , et j'ai beau lire et relire cette dernière ligne, je ne la trouve pas en rapport avec les 16 dossiers du zip, dont le uniqueinstance.

  7. #7
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Bonjour JP.

    À propos de Cairo et de police de caractères, je viens de tomber sur cet exemple intéressant : https://www.lemoda.net/c/free-type/index.html

    J'ai pu trouver la police (.ttf) qui est utilisée dans l'exemple ici.

    Par contre pas trouvé grand chose sur le format xlfd dont tu parlais...

  8. #8
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Bonjour Roland,

    Citation Envoyé par Roland Chastain Voir le message
    À propos de Cairo et de police de caractères, je viens de tomber sur cet exemple intéressant : https://www.lemoda.net/c/free-type/index.html
    Intéressant pour ceux qui veulent écrire dessiner en japonais, ce qui n'est absolument pas mon cas,

    Non, moi je suis plutôt intéressé par un FontDialog qui supporte les options xlfd, regarde :
    Nom : fontdialogslanted.png
Affichages : 326
Taille : 30,5 Ko

    On voit bien que ça ne le fait pas, au propre et au figuré

    Et sinon, j'ai un peu joué avec les exemples, hier, et tout s'est bien passé, mais ce matin j'ai un gros souci avec le premier que j'attaque, dans demos/cairo_snippets/gui :
    Citation Envoyé par compilo_pas_content
    main.pas(36,20) Fatal: Impossible de trouver l'unité snippets utilisé par main de l'inspecteur de projet.
    et dans le code, j'ai ça en surbrillance (en gras ici) : uses Cairo, CairoLCL, snippets, InterfaceBase;,
    Et pas moyen de trouver un snippets.pas, tout ce que j'ai c'est un prepare_snippets.pas, pas sûr que ça colle...

  9. #9
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Et pas moyen de trouver un snippets.pas, tout ce que j'ai c'est un prepare_snippets.pas, pas sûr que ça colle...
    Si je ne me trompe, le code source en question est fabriqué par un deuxième projet qui se trouve dans le même dossier, et qu'il faut exécuter d'abord.

  10. #10
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    Si je ne me trompe, le code source en question est fabriqué par un deuxième projet qui se trouve dans le même dossier, et qu'il faut exécuter d'abord.
    Merci beaucoup.
    (verrai ça + tard...)

  11. #11
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Vu !

    Au niveau supérieur faut faire tourner prepare_snippets.lpi puis copier le snippets.pas généré dans le dossier du gui et ça roule.

    Les linuxiens modifieront dans gui/main.pas la ligne SetCurrentDir('..'); en SetCurrentDir(Application.Location+'..'); et la vie sera belle avec le binaire en stand-alone.

    Merci à toi, Roland,

  12. #12
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Bonsoir,

    alors j'ai regardé toutes les démos, ainsi que les snippets, et je ne suis guère avancé, concernant mes histoires de fonts...

    De plus, j'ai remarqué des choses franchement bizarres dans le code de snippets.pas, des trucs genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure do_xxx_clip_rectangle(cr: PCairo_t; width, height: Integer);
    (* This is intended to test the rectangle-based clipping support in
     * cairo.  On 2004-08-03, we noticed a bug in which this clipping
     * wasn't happening at all, so we disabled it in
     * cairo_gstate.c:extract_transformed_rectangle.
     *
     * When that works again, and is re-enabled, this test can be renamed
     * without the xxx_.
     *)
    Et comme le test s'appelle toujours do_xxx_clip_rectangle, j'en conclus qu'au bout de 18 ans, rien n'a évolué ? Ça fait peur, tout comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure do_xxx_dash(cr: PCairo_t; width, height: Integer);
    (* BUG: spline is not stroked, is it a bug that
       a negative offset for cairo_set_dash, causes
       no dashing to occur?
    *)
    ...
    begin
      //todo: properly set ndash
    et donc ce n'est pas fait ?
    Je pose la question car en activant ce snippet, une image s'affiche, mais rien ne nous dit si ce qu'on voit est correct ou faux.

    Si je rajoute qu'il n'y a strictement aucune aide (F1 ne renvoie rien) et que les Control-Clics ne propulsent nulle part, je ne vois pas trop comment avancer, et ma question dans le premier post est donc toujours valide : on va où si on suit la route de cairo ?
    (tiens, ça me rappelle une chanson de Julie Dricoll, ça !

  13. #13
    Rédacteur/Modérateur

    Avatar de Roland Chastain
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2011
    Messages
    4 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 173
    Billets dans le blog
    9
    Par défaut
    Tiens, j'ai trouvé un truc intéressant. Comment produire un aperçu d'une police de caractères avec ImageMagick. Apparemment ImageMagick supporte le système XLFD.

  14. #14
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 158
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 158
    Par défaut
    Citation Envoyé par Jipété Voir le message
    Je n'ai pas le temps (ni l'envie) ce soir, mais demain matin je creuse !
    J'aurais mieux fait de rester couché...

    ce matin dans une machine virtuelle Debian 10, j'installe la trinité fpc-laz + fpc-src + laz aux dernières versions (3.2.2 + 2.2.0), ça se passe bien, un premier test avec "hello world" c'est bon et donc, je configure l'edi pour bosser avec gtk3, je pose sur la fiche un TFontDialog, je rajoute dans unit1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    procedure TForm1.FormShow(Sender: TObject);
      fd.Execute;
    end;
    je fais F9 et voilà le résultat :

    Nom : erreur_fichier-présent-non-trouvé.png
Affichages : 296
Taille : 72,5 Ko

    en haut et à droite en fond le fichier non trouvé par l'edi mais quand même ouvert dans l'edi,
    en bas en bleu le message d'erreur et au milieu la fenêtre d'options pour le paramétrage du chemin où se cache le fichier non trouvé mais ouvert.

    Les yeux attentifs remarqueront que le nom du fichier mélange minuscules et majuscules alors que sous le trait rouge le nom est tout en minuscules, comme l'est le fichier sur le disque. Pour éviter une embrouille, j'ai recopié ce fichier aux minuscules en un autre comme ce qui est montré par l'edi, mais bien sûr ça ne change rien à cette erreur.

    Des trucs aussi embrouillés, ça m'épuise...

Discussions similaires

  1. recherche librairie graphique
    Par jollo dans le forum C
    Réponses: 6
    Dernier message: 03/10/2005, 21h39
  2. [SWT][Librairies graphiques]
    Par XristofGreek dans le forum SWT/JFace
    Réponses: 7
    Dernier message: 08/09/2005, 12h20
  3. Spécifier une nouvelle librairie graphique/jeu
    Par Montaigne dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 20/06/2005, 18h59
  4. Librairies graphiques que choisir pour la portabilité ?
    Par SamRay1024 dans le forum OpenGL
    Réponses: 8
    Dernier message: 03/02/2005, 17h22
  5. Utiliser une librairie graphique
    Par Troopers dans le forum Linux
    Réponses: 6
    Dernier message: 22/08/2003, 11h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo