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

Flash Pascal Discussion :

Nouvelle version 12.06.21 disponible !


Sujet :

Flash Pascal

  1. #1
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut Nouvelle version 12.06.21 disponible !
    Au menu de cette nouvelle version, quelques corrections de bug, mais surtout la possibilité d'intégrer des polices de caractères dans l'animation.

    c'est important pour:
    intégrer un titre dans une police particulière pas forcément disponible sur le PC destination

    pour pouvoir appliquer des transformations (notamment la rotation) sur le texte.

    Voir le menu "Versions" pour le détail et l'application "Police.fpr" pour un exemple.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  2. #2
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    J'ai trouvé l'exemple "Police" très instructif. Il y a une seule chose que je n'ai pas bien saisie. A quoi servent donc les chaînes de caractère placées dans les accolades ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par Roland Chastain Voir le message
    J'ai trouvé l'exemple "Police" très instructif. Il y a une seule chose que je n'ai pas bien saisie. A quoi servent donc les chaînes de caractère placées dans les accolades ?
    ok, alors si tu n'indiques rien, tous les caractères disponibles dans la police sont inclus dans l'animation...en réalité unique entre #0 et #255, je n'accepte pas les caractères unicode.

    si tu précises des caractères, seuls ces caractères sont inclus.

    en pratique, si tu veux mettre un titre "Bonjour le Monde !" dans une police particulière qui ne sera utilisée que pour ce titre, tu as intérêt de limite le $FONT aux lettres " !BMejlnoru"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$FONT titre 'Arial' [bold] ' !BMejlnoru'}
    ...mais pour te simplifier la tâche tu peux tout simplement taper le texte "Bonjour le Monde !" , le compilateur fera le tri.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {$FONT titre 'Arial' [bold] 'Bonjour le monde !'}
    Et pour intégrer des séries de caractères j'ai ajouté une syntaxe ".." de type 'A'..'Z0'..'9' qui correspond aux lettres A à Z et 0 à 9. Les deux points prennent la lettre qui précède et celle qui suit et complète la chaîne avec toutes les lettres présentes entre les deux.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Pour essayer de faire le tour de la question des polices.

    Y a-t-il un code d'erreur renvoyé par le constructeur TextFormat.Create(), quelque chose qui permette de savoir si la police système qu'on veut utiliser est disponible ?
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Pas à ma connaissance, comme n'importe quelle application Windows, une police de substitution est sélectionnée automatiquement.

    Flash est multiplateforme, mais on peut raisonnablement penser que les polices classiques du web (Arial, Verdana, Times, Courier) sont présentes...pour les autres, rien n'est moins sur
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    Pas à ma connaissance, comme n'importe quelle application Windows, une police de substitution est sélectionnée automatiquement.

    Flash est multiplateforme, mais on peut raisonnablement penser que les polices classiques du web (Arial, Verdana, Times, Courier) sont présentes...pour les autres, rien n'est moins sur
    Tout cela est très bon à savoir. Merci pour le lien.
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  7. #7
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    J'ai écrit un petit exemple qui permet de se faire une idée des différentes polices.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    program Exemple;
     
    uses
      Flash8;
    {$FRAME_WIDTH 640}
    {$FRAME_HEIGHT 300}
     
    function UCase(s: string): string;
    var
      i: integer;
      temp: string;
    begin
      temp := '';
      for i := 1 to length(s) do
      begin
        if (Ord(s[i]) >= 97) and (Ord(s[i]) <= 122) then
          temp := temp + Chr(Ord(s[i]) - 32) else
          temp := temp + s[i];
      end;
      result := temp;
    end;
     
    const
      alphabet = "abcdefghijklmnopqrstuvwxyz";
     
    begin
      with TextField.Create(nil, '', 1, 10, 10, 640 - 2 * 10, 300 - 2 * 10) do
      begin
        Text := alphabet + #10 + UCase(alphabet) + #10 +
                alphabet + #10 + UCase(alphabet) + #10 +
                alphabet + #10 + UCase(alphabet) + #10 ;
        setTextFormat(0, 53, TextFormat.Create('Arial', 24));
        setTextFormat(54, 107, TextFormat.Create('Times', 24));
        setTextFormat(108, 161, TextFormat.Create('Courier', 24));
      end;
      Stage.scaleMode := 'noScale';
    end.
    Au fait quelle différence entre #10 et #13 ? Car je constate qu'on emploie tantôt l'un tantôt l'autre pour le retour à la ligne.
    Fichiers attachés Fichiers attachés
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  8. #8
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    J'ai en effet constaté que #10 et #13 font passer tous les deux à la ligne...mais je n'ai pas trouvé la confirmation officielle.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut Polices embarquées
    Je m'étais imaginé que les polices "embarquables" étaient contenues, en nombre limité, dans le compilateur. Ça me paraissait trop beau que, sans que je fasse rien, le compilateur aille chercher dans ma machine la police à embarquer et l'intègre dans le fichier Flash. Mais le concepteur de FlashPascal a plus d'un tour dans son sac.

    Du coup j'ai commencer à creuser la question des polices pour le jeu d'échecs. En fait c'est simple comme tout, sauf que toutes les polices n'utilisent pas les mêmes conventions et qu'elles ne sont pas toujours documentées, ce qui fait qu'on perd du temps à chercher les bonnes combinaisons de caractères.

    Ce qui est intéressant dans ces polices, outre la simplicité du format (tout l'échiquier dans une simple chaîne de caractère), c'est qu'elles sont redimensionnables (si ce mot existe), ce qui s'accorde bien avec la nature de FlashPascal.

    Voici un exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    program embed_fonts; (* Police intégrée *)
     
    uses
      Flash8;
     
    {$FRAME_HEIGHT 488}
    {$FRAME_WIDTH  488}
    {$BACKGROUND $F5F5DC} (* beige *)
     
    {$FONT Utrecht 'Chess Utrecht'}
     
    var
      f: textFormat;
    begin
      f := textFormat.Create('Utrecht', 48); f.color := $000088;
     
      with textField.Create(nil, '', 0, 0, 0, Stage.width, Stage.height) do
      begin
        embedFonts := True;
        setNewTextFormat(f);
        Text := '5111111116'#10+
                '3RMBWKVNT2'#10+
                '3OPOPOPOP2'#10+
                '3 / / / /2'#10+
                '3/ / / / 2'#10+
                '3 / / / /2'#10+
                '3/ / / / 2'#10+
                '3popopopo2'#10+
                '3TNVQLBMR2'#10+
                '7444444448';
      end;
     
    end.
    Images attachées Images attachées  
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  10. #10
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    et oui ! c'est magique

    alors pour préciser les choses, FlashPascal exploite une fonction de l'API Windows qui permet de récupérer la forme des lettres en vectoriel: GetGlyphOutline.

    Ces informations sont exploitées pour créer la police vectorielle Flash dans son format natif à base de LineTo et CurveTo. Il peut donc y avoir un décalage entre l'original et la version Flash.

    Contrairement aux polices Windows, la polices Flash ont une résolution unique de 20480 pixels qui est mise à l'échelle au besoin. Il en résulte un dessin généralement plus joli, sauf pour des tailles inférieures à 12 pixels. Les polices TrueType peuvent en effet avoir des formes différentes en fonction de la taille demandée, ce qui n'est pas le cas sous Flash.

    Or donc, n'importe quelle police True Type présente sur le PC qui compile l'application peut être incorporée dans l'animation.

    Et pour rappel, par défaut, tous les caractères entre #0 et #255 sont intégrés (s'ils sont disponible dans la police évidemment), mais il est possible de n'intégrer qu'un petit nombre d'entre eux en les spécifiant après le nom de la police.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Membre éprouvé
    Avatar de neilbgr
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2004
    Messages
    651
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 651
    Points : 1 177
    Points
    1 177
    Par défaut
    Bonjour,

    Citation Envoyé par Roland Chastain Voir le message
    Au fait quelle différence entre #10 et #13 ? Car je constate qu'on emploie tantôt l'un tantôt l'autre pour le retour à la ligne.
    #13 => Retour chariot
    #10 => Nouvelle ligne

    C'est un héritage historique des machines à écrire et autres imprimantes ancestrales à qui il fallait leur dire gentiment de mettre le chariot à gauche puis de sauter une ligne pour être prêt à écrire.

    Par la suite le monde Unix a préféré garder que le #10 (\n), Apple lui le #13 (\r), et Microsoft a gardé les 2.
    Or le but de chacun étant d'aller à la ligne à gauche, aussi bien en Delphi qu'en C#, l'un ou l'autre ou les deux sont interprétés de la même manière.

    Le mieux est d'utiliser la constante sLineBreak déclaré dans System.pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const
      sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF} 
                   {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
    C'est plus parlant et ça se débrouille...
    "Si vous voulez être l’esclave des banques et payer pour financer votre propre esclavage, alors laissez les banquiers créer la monnaie" - Josiah Stamp, 1920, Gouverneur de la Banque d’Angleterre
    "Qui ne peut acheter ruine qui voudrait vendre" - Jacques Duboin.
    "Nous n'héritons pas la terre de nos parents, nous l'empruntons à nos enfants." - Antoine de Saint Exupéry

  12. #12
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    Citation Envoyé par neilbgr Voir le message
    Bonjour,



    #13 => Retour chariot
    #10 => Nouvelle ligne

    C'est un héritage historique des machines à écrire et autres imprimantes ancestrales à qui il fallait leur dire gentiment de mettre le chariot à gauche puis de sauter une ligne pour être prêt à écrire.

    Par la suite le monde Unix a préféré garder que le #10 (\n), Apple lui le #13 (\r), et Microsoft a gardé les 2.
    Or le but de chacun étant d'aller à la ligne à gauche, aussi bien en Delphi qu'en C#, l'un ou l'autre ou les deux sont interprétés de la même manière.

    Le mieux est d'utiliser la constante sLineBreak déclaré dans System.pas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    const
      sLineBreak = {$IFDEF LINUX} AnsiChar(#10) {$ENDIF} 
                   {$IFDEF MSWINDOWS} AnsiString(#13#10) {$ENDIF};
    C'est plus parlant et ça se débrouille...
    tout à fait...mais là on parle de FlashPascal ... et donc de Flash
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  13. #13
    Rédacteur/Modérateur

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

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 4 072
    Points : 15 462
    Points
    15 462
    Billets dans le blog
    9
    Par défaut
    Voici un autre essai. Cette fois j'ai cherché les caractères à partir de leur numéro, et j'ai eu soin de spécifier l'ensemble des caractères à intégrer. Il y en a encore en trop, puisque je me suis contenté de spécifier un intervalle, mais enfin le principe est là. Résultat, un fichier compilé de 12,4 Ko au lieu de 20,4 en intégrant toute la police.

    Cette histoire de police intégrée m'a donné des idées. Après tout, qu'est-ce qui empêcherait de faire une page web entièrement avec FlashPascal ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    program chess_font;
    uses
      Flash8;
    {$FRAME_HEIGHT 488}
    {$FRAME_WIDTH  488}
    {$BACKGROUND $F5F5DC}
     
    {$FONT alpha 'Chess Alpha' #32..#119}
     
    var
      f: textFormat;
    begin
      f := textFormat.Create('alpha', 48); f.color := $000088;
      with textField.Create(nil, '', 0, 0, 0, Stage.width, Stage.height) do
      begin
        embedFonts := True;
        setNewTextFormat(f);
        Text := #049#050#050#050#050#050#050#050#050#051#10+
                #052#116#074#110#087#108#078#106#084#053#10+
                #052#079#111#079#119#076#111#079#111#053#10+
                #052#032#043#032#043#032#043#032#043#053#10+
                #052#043#032#043#032#043#032#043#032#053#10+
                #052#032#043#032#043#032#043#032#043#053#10+
                #052#043#032#043#032#043#032#043#032#053#10+
                #052#112#080#112#081#107#080#112#080#053#10+
                #052#082#104#066#113#075#098#072#114#057#10+
                #054#055#055#055#055#055#055#055#055#056;
      end;
    end.
    Images attachées Images attachées  
    Mon site personnel consacré à MSEide+MSEgui : msegui.net

  14. #14
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    oui tu peux tout à fait faire une page entièrement en FlashPascal
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. [Flash Pascal] Nouvelle version 12.07.07 disponible !
    Par Paul TOTH dans le forum Flash Pascal
    Réponses: 1
    Dernier message: 07/07/2012, 20h02
  2. [Flash Pascal] Nouvelle version 12.07.02 disponible !
    Par Paul TOTH dans le forum Flash Pascal
    Réponses: 11
    Dernier message: 04/07/2012, 11h37
  3. [Flash Pascal] Nouvelle version 12.06.25 disponible !
    Par Paul TOTH dans le forum Flash Pascal
    Réponses: 7
    Dernier message: 27/06/2012, 17h10
  4. Nouvelle version de Rave Reports disponible
    Par Pedro dans le forum Outils
    Réponses: 1
    Dernier message: 02/04/2009, 10h38
  5. [Dojo] Nouvelle version 1.3 RC2 disponible
    Par emmanuel.remy dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 30/03/2009, 09h27

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