JcGraph (Demo v0.903 sur FredFish 671) (Demo v1.100 sur FredFish 760) Copyright 1992, Jean-Christophe Clément Internet: clemj00@dmi.usherb.ca Amiga, AmigaDos, WorkBench are a trademark of Commodore-Amiga Inc. PostScript is a trademark of Adobe system corp. Professionnal Page is a trademark of Gold Disk Inc. PageStream is a trademark of Soft-Logik corp. Saxon Publisher is a trademark of Saxon Industries Inc. AegisDraw2000 is a trademark of Oxxi/Aegis Inc. Advantage is a trademark of Gold Disk Inc. File requester: Copyright 1990 Khalid Aldosery. Systeme HyperTexte utilisant HyperText de Dominic Giampaolo. ATTENTION: Ce logiciel est librement distribuable mais est toujours sous la protection du copyright a son auteur: Jean-Christophe Clement. Table des matières: ------------------- 0.Introduction. 1.Configuration matérielle et logicielle requise. 2.Installation de JcGraph. 3.Exemple de création d'un graphique, étape par étape. 4.Sommaire des options de menu. 5.Fenêtre de contrôle. 6.Format de fichier en entrée de JcGraph. 7.Format de fichier en sortie de JcGraph. 8.Modification du graphique. 9.Equivalents clavier. 10.Sélécteur de palette de couleurs. 11.Options de TOOLTYPE et ligne de commande. 12.Interface ARexx. 13.Format des types de graphiques. 14.Indices sur les améliorations prevues pour JcGraph. 15.Histoire de JcGraph. 0.Introduction: --------------- a.Bref aperçu. Spécialisé dans les graphes d'affaires, JcGraph pourra, entre autres, représenter vos données sous formes de tartes,barres,lignes, barres 3D, plans, piles, etc...et permet la rotation en X, Y, Z autour du graphe créé ainsi que la sortie aux formats: PostScript Encapsulé, Geo 3D, AegisDraw2000 et IFF ILBM. b.Pourquoi avoir créé JcGraph ? Parce qu'après avoir tenté de trouver un programme commercial, shareware ou du domaine public qui ferait des graphiques de présentation de qualité comparable à ce qui se fait sur les compatibles IBM ou sur Macintosh, j'en suis venu à la conclusion qu'un tel programme n'existait pas pour l'Amiga. Et considérant l'orientation "MultiMédia" de notre machine, il est temps que ca change. c.La philosophie derrière JcGraph. Le but premier de JcGraph est de créer des graphiques de présentation d'affaire qui aient le plus grand impact visuel possible en un minimum d'efforts. Je me suis donc posé la question suivante: "Qu'est ce qui est le plus difficile à réaliser, sans outil autre qu'un programme de dessin, lors de la réalisation de graphiques d'affaire ?". La réponse est assez simple: Le graphique lui-même! En effet, une fois que le graphe est réalisé, il est très simple de rajouter un fond de couleurs graduées, des titres et annotations, et cela, avec n'importe quel programme de traitement d'images alors que le graphe lui-même (d'autant plus s'il est en perspective) peut exiger de nombreuses heures. Donc, JcGraph reflète cette philosophie de travail par la variété et la qualité des graphes produits et la flexibilité de ses formats en sortie qui accomoderont les besoins de la plupart de ses utilisateurs en permettant l'ajout de détails dans des programmes spécialisés. d. Conformité au standard de programmation de l'interface. J'ai essayé de me conformer le plus possible aux standards promus par Commodore. Compte tenu des ressources limitées que j'avais à investir dans JcGraph, je crois que l'objectif a été atteint. 1.Configuration matérielle et logicielle recquise: -------------------------------------------------- Minimale: N'importe quel modèle d'Amiga. 1meg de memoire RAM. WorkBench 1.3 et plus. 1 lecteur de disquettes. Recommandé: Amiga accéléré. 1.5+ meg RAM. WorkBench 2.0+. Disque-Rigide. JcGraph à été testé et jugé complètement fonctionnel sur les machines suivantes: -Amiga 500, 1 disque-souple, 1 meg RAM, WB 1.3, 68000. -Amiga 2000HD, 52 Megs HD, 3 megs RAM, WB 2.0, 68000. -Amiga 3000/16, 50 Megs HD, 2 megs RAM, WB 2.0, 68030/16Mhz -J'ai remarqué certains problèmes de fonctionnements avec les nouvelles puces AGA en 256 couleurs, veuillez donc prendre pour acquit que ces modes ne sont pas supportés. 2.Installation de JcGraph. -------------------------- A-Assignation logique requise: ------------------------------ Par exemple: Si vous copiez JcGraph dans le répertoire "Work:MyJcGraph", ajoutez cette ligne à votre fichier "s:startup-sequence": "assign JcGraph: Work:MyJcGraph". B-Répertoire et fichier requis (après avoir fait l'étape A) ----------------------------------------------------------- libs:icon.library :Sur le WB 1.3 (en ROM sous 2.0). libs:kd_freq.library :Librairie pour les requêtes de fichier. libs:IffParse.library ;Librairie pour les fichiers IFF ILBM. JcGraph:Graphtype :Répertoire des types de graphes. JcGraph:Template :Répertoire des "Templates". JcGraph:HelpFile :Répertoire des fichiers d'aide. JcGraph:Rexx :Répertoire des fichiers ARexx. JcGraph:HelpFile/ht :Programme d'aide en ligne. JcGraph:JcGraph :Le programme principal. Si vous ne l'avez pas encore fait, allez dans le répertoire jcgraph:libs et faites la commande "copy #?.library libs". Voilà, tout est prêt. Il est à noter que je ne peux (pour des raisons légales) distribuer la librairie "IffParse.library" et vous devrez donc vous la procurer autrement. 3.Exemple de création d'un graphique, étape par étape: ------------------------------------------------------ Nous allons créer un graphique fait de 3 rangées de 3 plans chacune et en faire la sortie au format AegisDraw2000. La première étape est la création des données. Pour ce faire, utilisez votre éditeur de textes préféré. Il est important de noter que celui-ci doit pouvoir produire un fichier exempt de tous caractères spéciaux d'édition qui ne seraient pas reconnus par JcGraph (ASCII international). Après avoir chargé votre éditeur, entrez tout de suite "1002," (les guillemets n'étant que des délimiteurs, ne les incluez pas. Cette séquence permet à JcGraph d'identifier le fichier comme étant bel et bien un fichier de données qui lui est compréhensible. Toutes les entréed doivent êtres séparées par des virgules. Ensuite, entrez le nombre de colonnes de données que contiendra votre fichier, dans notre exemple "3". Faites la même chose pour le nombre de lignes. Ensuite, vient un chiffre qui sert à déterminer l'espace séparant chaque cote de l'échelle des valeurs; par exemple, si vos données varient entre 0 à 100, une entrée de 25 résulterait en une échelle de cotes contenant les valeurs "0","25","50","75" et "100". Ce chiffre utilise la même unité de mesure que les données elles-mêmes. Le chiffre qui suivra indiquera (par un nombre en virgule flottante), la valeur par laquelle chaque cote doit être multipliée; par exemple, si vous entrez "1.24", chaque cote sera multipliée par 1.24. Ceci permet d'avoir accès à des valeurs en virgule flottante sans changer la représentation des données. Notez que seulement 3 décimales sont conservées après le point pour l'instant et qu'une valeur de 0 permet l'affichage des cotes sous la forme entière (i.e. pas de point décimal). Par la suite, vous entrez les valeurs de vos données. Dans l'exemple, nous avons décidé de produire un graphique de 3 lignes par 3 colonnes, il y aura donc, 9 valeurs consécutives (N.B. elles peuvent être sur la même ligne si vous le désirez). Les trois valeurs qui suivent sont des textes qui seront les identificateurs de vos colonnes (3 colonnes = toujours 3 identificateurs, même s'ils sont vides). Même procédure pour les 3 lignes avec trois nouveaux textes qui représenteront cette fois le type de produit de la ligne. Il est à noter que l'orientation est toujours la même: des ensembles de valeurs différentes sont sur des lignes différentes alors que leur variation est représentée en colonne. Voici le résultat de l'exemple créé: 1002, 3,3,10,0, 10,20,30, 50,60,60, 15,32,17, Jan,Fev,Mar, Gaz,Oil,Fer, Sauvegardez ce résultat sous le nom "test3X3.asc". La seconde étape consiste à charger les données. Pour ce faire, chargez JcGraph en mémoire. Il est à noter qu'une fois JcGraph démarré, il peut s'écouler 3 à 5 secondes avant que les fenêtres de contrôle apparaîssent; ceci est normal. Maintenant, allez choisir l'option "Open..." sous le menu "Project" (Ou tenez simplement enfoncées les touches Amiga de droite et "O" simultanément. IMPORTANT: Il est à noter que JcGraph n'accepte les commandes que depuis la fenêtre d'interface (celle avec les différents boutons), il est donc nécessaire de la sélectionner (si ce n'est déjà fait) avant de tenter d'exécuter quelqu'opération que ce soit qui nécéssite le travail sur le graphique en cours. Il faut aussi noter qui la fenêtre d'interface affiche la mention "No Data" dans sa barre titre lorsqu'aucune donnée n'a été chargée en mémoire. Une boîte de requête de fichier ayant la mention "Choose an ASCII data file" apparaîtra alors à votre écran. Son utilisation n'est pas décrite ici mais vous pouvez retrouver cette information en appuyant la touche HELP ou SHIFT-F1 lorsqu'elle est active. Retrouvez et sélectionnez le fichier "test3X3.asc" et sélectionnez ensuite l'option "Open" au bas de la fenêtre. Le pointeur de la souris ce transformera alors en horlogge pendant le chargement. Après un temps très court, il reviendra à son état inital, vous indiquant ainsi que les données ont été correctement chargées (La barre de titre de la fenêtre d'interface devrait alors indiquer le nom de votre fichier). La fenêtre titrée "Preview" nous donne un apperçu en fil de fer de ce que sera notre graphique une fois terminé. Bien entendu, la version finale ne sera pas transparente mais pour fin de rapidité d'affichage, cette représentation est nécéssaire. Comme vous pouvez le constater dans la fenêtre "Preview", le type de graphique par défaut représente les données sous forme de blocs tri-dimensionnels. Choisissons donc maintenant un type de graphique différent pour illustrer le processus de changement de type. Allez choisir l'option "Load..." sous le menu "GraphType" (Amiga+T). Un autre sélecteur de fichier apparaîtra à l'écran. Si tout va bien, une liste de fichier se terminant par l'extension ".grf" devrait être affichée à l'écran. Si aucune entrée sélectionnable n'apparaît dans la fenêtre, vous avez probablement fait une erreur en installant JcGraph, référez-vous alors à la section 2. Vous pouvez alors choisir le type de graphique qui vous convient. Pour fin d'exemple, selectionnez le fichier "3D_BrokenPlanes.grf" et poussez ensuite le bouton "Load". Après un petit moment d'attente, la fenêtre titrée "Preview" devrait affiché un graphique fait de plans tri-dimmensionnels. La perspective actuelle de l'image ne permet pas très bien d'apprécier l'effet 3D de la représentation graphique. Pour l'améliorer, nous utiliserons une des fonctions les plus puissantes de JcGraph, la rotation. Regardez maintenant dans la fenêtre d'interface; elle est divisée en 2 sections importantes: 1.à gauche, il y a deux boutons annotés "Undo" et "Render". Nous y reviendrons plus loin. 2.à droite, il y a 4 rangées de boutons, celles-ci contrôlent les valeurs de rotation de perspective de la représentation de votre graphique. Rangée 1: Rotation autour de l'axe des X. Rangée 2: Rotation autour de l'axe des Y. Rangée 3: Rotation autour de l'axe des Z. Rangée 4: Contrôle de la perspective. Pour fin d'exemple, nous ne nous étendrons pas plus sur ces fonctionnalités pour le moment (qui sont décrites dans la section 5). Pour le moment, selectionnez simplement le cadre dans lequel est écrit le chiffre 0 à la rangée 1. Entrez au clavier la valeur "-30". Appuyez sur la touche "Return". Sélectionnez ensuite le chiffre 0 à la rangée 2. Entrez au clavier la valeur "30". Appuyez sur la touche "Return". Vous pouvez dès maintenant voir dans la fenêtre "Preview", les changements effectués à la représentation de votre graphique. L'effet produit est beaucoup plus dynamique. Maintenant, vous pourriez désirer admirer le résultat final. Vous n'avez qu'à appuyer sur le bouton "Render" (Rendu final) de la fenêtre d'interface. Le pointeur se transformera en horloge plus longtemps cette fois-ci. Lorsqu'il reviendra à son état normal, ce sera l'indication que le graphique est prêt. Il se peut que la fenêtre titrée "Preview" obscurcisse celle titrée "Output Window" (qui contient le résultat final). Ecartez là simplement de votre vue. Mais n'oubliez pas de re-sélectionner la fenêtre d'interface si vous devez faire d'autres manipulations sur le graphe. Vous contaterez alors probablement 3 choses: 1. C'est joli (je l'espère :-) 2. C'est trop petit. 3. Les couleurs ne vous conviennent pas. Règlons les problèmes un par un. 1. C'est joli : Ce n'est pas un problème !!! 2. C'est trop petit: Vous n'avez qu'a "tirez" le bouton en bas, à droite de la fenêtre titrée "Output Window" et changez sa taille pour celle qui vous convient. Par la suite, refaites "Render". Voilà! 3. Les couleurs ne vous conviennent pas: C'est la prochaine étape! L'étape suivante est le choix des couleurs: Choisissez l'option "Color..." (Amiga+K) sous le menu "Edit". Une boite de dialogue vous apparaîtra, titrée "Data color selector". A gauche, vous verrez la représentation de toutes les couleurs disponibles alors qu'à droite, vous avez les ensembles de données à colorer. Vous reconnaîtrez dans cette dernière, les textes associés à chacunes de vos lignes. Il y à aussi deux entrées supplémentaires nommées "Background" et "Floor" permmetant respectivement de changer la couleur du fond et du plancher (comparez avec le résultat final et vous comprendrez mieux). Selectionnez "Floor". Un rectangle blanc encadrant la couleur et le texte devrait vous indiquer qu'il a bien été choisi. Par la suite, sélectionnez une couleur de votre choix dans l'ensemble des couleurs à gauche. La couleur immédiatement à gauche de l'inscription "Floor" devrait changer , indiquant que votre sélection à été retenue. Faites de même jusqu'à ce que les couleurs vous conviennent. Lorsque vous aurez terminé, poussez le bouton en haut à gauche de la fenêtre, ceci validera vos entrées. Pour voir le résultat, refaites "Render". La dernière étape consiste à sauvegarder le fichier au format "AegisDraw2000". Pour ce faire, choisissez l'option "Draw2000" du sous-menu "Format..." du menu "Project" (Amiga+4). Par la suite, choisissez l'option "Save as..." du menu "Project" (Amiga+A) qui appellera un sélecteur de fichier. Entrez un nom au clavier, appuyez sur "Return", et voilà! Après quelques temps, le fichier devrait être sauvegardé et maintenant disponible pour utilisation ultérieure. Pour plus de détail sur les fonctions particulières de JCGraph, consultez la section 4. IMPORTANT: Il est à noter que si vous possédez ARexx (ou le WB 2.0) et Advantage, un 'script' Arexx est inclu qui importera directement des données provenant de ce tableur. 4.Sommaire des options de menu. ------------------------------- PROJECT About... :Information sur JcGraph. Open... :Ouvre un fichier texte de données (Desciption à la section 6). Save :Sauvegarde le graphique au format spécifié par "Format" sans requête de nom. Save as... :Sauvegarde le graphique au format spécifié par "Format" en recquérant le nom de fichier. Format :Sélectionne le format de fichier en sortie: voir section 7. Print... :Permet l'impression du résultat final à l'imprimante. Vous aurez la possibilité d'annuler une seule fois avant l'impression, si vous choisissez "Print", l'impression se fera complètement. Quit... :Quitte JcGraph... EDIT Undo :Permet d'annuler la dernière rotation effectuée. Copy :Pas encore implantée. Color... :Permet la sélection des couleurs. Le bouton cyclique permet d'alterner entre les positions couleur et tons de gris, cette dernière donnant un aperçu du résultat à l'imprimante. Palette... :Vous permet de changer la palette de couleurs de l'écran. Voyez la section dédiée au Sélecteur de palette pour plus de détails. TEMPLATE Load... :Charge un fichier "Template" qui contient: -le type de graphique. -les positions de rotation. -la perspective. Save... :Sauvegarde un fichier "Template". GRAPHTYPE Load... :Charge un nouveau type de graphique 2D ou 3D. ENVIRONMENT Iconify :Pas encore implanté (mmmm). Notes... :Permet de laisser un commentaire sur un sujet qui vous est important. Si vous enfoncez l'icône de gauche. Le message laissé vous sera rappelé avant de quitter. Arrange :Organise logiquement les fenêtre à l'écran. Req. Flash ON/OFF :Allume/éteind le clignotement d'écran des boites de requêtes. Exec Rexx... :Permet l'éxécution d'un fichier ARexx. Preview OFF/ON :Ouverture/fermeture de la fenêtre PREVIEW. Output Back/Front :Lors de la modification de taille de la fenêtre OUTPUT, elle sera ré-ouverte à l'avant ou l'arrière selon le choix Back ou Front. HELP General... :Activera le système d'aide générale. On Help... :Activera le système d'aide sur l'aide. Start Help :Permet d'avoir de l'aide spécifique. Vous n'aurez par la suite qu'à selectionner un bouton ou une option de menu et vous obtiendrai de l'aide spécifique à cet item. Pour stopper, re-selectionner cette option (qui s'appellera maintenant Stop Helper). 5.Fenêtre de l'interface. ------------------------- Vous pouvez la reconnaitre au fait qu'elle contient tous les boutons-poussoirs qui controlent l'apparence de graphique. Prenons chaque "Gadget" (nous parlerons plutot de "gadget", terme emprunté de l'Anglais traduisant plus ou moins la notion de "Bouton-poussoir" ) en débutant par le haut: 1. La première ligne de "gadgets" contient (en partant de la droite); l'identificateur de rotation, 'X' dans le cas présent, un gadget "glissière" permettant de déterminer la valeur de la rotation autour de l'axe des 'X', et un gadget permettant l'entrée numérique de la valeur de rotation 'X'. La modification de l'un ou l'autre de ces "gadget" entraîne automatiquement une modification de l'apparence du graphique dans la fenêtre titrée "Preview". 2. et 3. La même chose pour l'axe des 'Y' et 'Z' respectivement. 4. Le gadget à glissière nommé "Perspective" permet , comme son nom l'indique, de changer la perspective du graphique; plus la glissière (le bouton en forme de flêche) sera tiré vers la gauche, plus la perspective déformera le graphique alors que la tirer vers la droite donnera un effet plus orthogonal.Il est à noter que cet effet n'est que visuel et n'est donc pas conservé lors d'une sauvegarde au type "3D GEO". 5. Le gadget titré "Undo" permet d'annuler la dernière rotation effectuée. L'option de menu "Undo" (Amiga+Z) effectue la même tâche. 6. Le gadget titré "Render" permet de visualiser le résultat final des modifications appliquées. 7. Il y a aussi un groupe de boutons à l'extrême gauche. Ils peuvent être programmés via le langage ARexx et exécuter un fichier ARexx lorsqu'ils sont pressés. Voyez les détails de leur programmation dans les fichiers ARexx eux-mêmes (dans l'entête) qui sont au format texte. 6.Format de fichier en entrée de JcGraph. ----------------------------------------- Pour l'instant, JcGraph accepte uniquement son propre format de fichier. Selon la réponse (le nombre d'enregistrements et les suggestions), je verrai s'il vaut la peine de faire des filtres d'importation et/ou une interface d'entrée de données. Voici la description de ce format: 1002, 1. Identifieur des données: Toujours 1002. 4,2,80,6.0, 2. #Colonnes,#Lignes,Espa. Cote, Multiplicateur 10,20,30,40, 3. Première ligne 50,60,60,80, 4. Deuxième line Jan,Feb,Mar,Apr, 5. Textes sous chaque colonnes Gaz,Oil, 6. Textes associés à chaque ligne. Notes: Toutes les valeurs peuvent varier de -1000 à 1000. Le fichier doit se terminer par une virgule. Quand le Multiplicateur prend la valeur 0, les chiffres prennent la forme entière (ie sans point flottant). Les données doivent être séparées par des virgules mais peuvent être organisées logiquement avec des "Return". 7.Format de fichier en sortie de JcGraph. ----------------------------------------- IFF ILBM: Fichier compatible avec la majorité des programmes de dessin non-structuré. EPSF COLOR & GRAY: Fichier PostScipt encapsulé. Pour l'instant, c'est le seul format où la légende sera générée automatiquement. A moins d'avoir un interpréteur PostScript, ce fichier ne peut être imprimé sur des imprimantes autres que celles supportant le protocole PostScript. par défaut, la fonte de caractère utilisée pour la légende est "Times-Roman". Si vous désirez, par la suite, imprimer ce fichier EPS et que vous possédez une imprimante PostScript, sauvegardez le résultat au format EPSF, puis , tapez, à partir du CLI/SHELL "copy Nom_de_fichier to SER:" si votre imprimante est branchée au port série ou "copy Nom_de_ficher to par:" si votre imprimnate est branchée au port parrallèle. Choisissez l'option COLOR ou GRAY selon le type de votre imprimante. 3D GEO: Format de fichier tridimensionnel compatible avec les programme de modélisation 3D suivant: 3DProfessionnal, VideoScape, LightWave, Vertex. Les textes sont sauvegardés aussi. Draw2000: Format de dessin structuré compatible avec les programmes suivants: PageStream 2.2, Professionnal Page 3.0, AegisDraw2000. Permet l'impression de grande qualité , même pour les imprimantes matricielles. Il est à noter que j'ai eu des problèmes à l'importation de fichier AegisDraw dans PageStream. Le problème ne semble pas provenir uniquement de JcGraph car des fichiers AegisDraw créés avec Multiplot et Advantage ont causés les mêmes problèmes. 8.Modification du graphique. ---------------------------- 8.1 La taille des fontes: Vous pouvez modifier la taille des fontes de caractères en éditant le fichier du type de graphique correspondant. La taille de la fonte des cotes est le troisième chiffre en partant de la fin du fichier .grf. La taille de la fonte des lignes est le quatrième, toujours en partant de la fin alors que celle des colonnes est le cinquième. Il y a aussi une facon plus directe pour changer la taille des fontes de caractères qui implique l'utilisation du langage ARexx; voyez la section 12 pour plus de détails (un fichier ARexx inclu permet ces changements directement à partir de l'interface). 9.Equivalents clavier. ---------------------- PROJECT Amiga Droite+O :Open... Amiga Droite+S :Save Amiga Droite+A :Save as... Amiga Droite+1 :Format IFF ILBM Amiga Droite+2 :Format EPSF Amiga Droite+3 :Format 3D Geo Amiga Droite+4 :Format Draw2000 Amiga Droite+P :Print... Amiga Droite+Q :Quit... EDIT Amiga Droite+Z :Undo Amiga Droite+K :Color... Amiga Droite+, :Palette... TEMPLATE Amiga Droite+L :Load... Amiga Droite+U :Save... GRAPHTYPE Amiga Droite+T :Load... ENVIRONMENT Amiga Droite+. :Notes... Amiga Droite+R :Arrange... HELP Amiga Droite+G :General... Amiga Droite+H :On Help... Amiga Droite+J :Start Helper/Stop Helper COLOR SELECTOR: Flêche droite: Sélectionne la couleur suivante. Flêche gauche: Sélectionne la couleur précédente. Flêche haut : Sélectionne la ligne précédante. Flêche bas : Sélectionne la ligne suivante. Autres: F1 :Ouvre/Ferme la fenêtre de PREVIEW. F6 a F10 :Controlle via ARexx. NB: La touche ESC permet de sortir de la plupart des boîtes de requête sans rien modifier. 10.Sélécteur de palette de couleurs. ------------------------------------ Cette fenêtre vous permettra de changer les couleurs par défaut de votre écran de travail en utilisant les modèles de couleur RGB et HSL. En haut de la fenêtre, vous retrouverez les boutons standard (ie Fermeture, profondeur , etc...) qui ne nécéssitent pas d'être commentés ici (référez-vous plutôt à votre manuel d'utilisation). Le premier "gadget", le plus à gauche, en haut, est un rectangle enfoncé qui contient la couleur actuellement active. Pressez sur n'importe quelle couleur au bas de la fenêtre pour qu'elle devienne active et qu'elle apparaîsse dans ce rectangle. Immédiatement à la droite de ce "gadget", se trouve les lettres RGB suivies par trois glissières. Cela signifie que vous êtes dans le mode de sélection de couleurs RGB et que chacune des composentes R (rouge), G (vert) et B (Bleu) peuvent être changées avec la glissière appropriée, à droite. Ce sélecteur de couleurs offre aussi la possibilité de travailler en mode HSL (hue, saturation, luminance), vous devez simplement cliquer sur l'inscription RGB, cliquez une deuxième fois pour retourner au mode RGB. Le gros "gadget" multicolore en bas, à gauche, se passe pratiquement d'explication, il sert à sélectionner la couleur active. À sa droite, on retrouve une grappe de boutons dont les fonctions sont les suivantes: COPY: Copie la couleur présentement active vers une autre choisie par la suite. RANGE: Définit une gradation de couleur entre deux couleurs de la palette que vous choisirez. OK: Accepte la nouvelle palette de couleurs. CANCEL: Cancelle les modifications effectuées à la palette. Le menu: Open... : Permet de charger une palette de couleurs sauvegardée au préalable. Notez bien que JcGRaph peut retrouver la palette de couleurs de tout fichier IFF contenant des CMAP comme les fichiers Imagine, DR2D, ILBM. Save as... : Permet de sauvegarder la palette de couleurs courante. Copy : Copie la palette de couleurs dans le "clipboard". Paste : Récupère la palette de couleurs du "clipboard". NB Si vous appuyez la touche ESC, cela aura le même effet que de pressez CANCEL. 11.Options de TOOLTYPE et ligne de commande. -------------------------------------------- SCREEN=custom :démarre JcGraph sur l'écran du WorkBench. SCREEN=workbench :démarre JcGraph sur son propre écran. HELPENGINE=file :Systeme d'aide en ligne utilise. TOOLPRI=-127 to 127 :Sélectionne la priorité de départ de JcGraph. PORTNAME=name :Nom du port ARexx au départ. STARTUP=scriptname :Fichier ARexx à exécuter au démarrage. 12.Interface ARexx. ------------------- JcGraph possède maintenant sa propre interface ARexx. Bien entendu, si vous possédez une version du Workbench inférieure à 2.0, vous devez vous procurer la version commerciale de ARexx de William Hawes ou , encore mieux, procurez-vous le WB 2.0. JcGraph se sert d'ARexx pour un nombre important de ses nouvelles fonctions comme la sauvegarde des positions des fenêtres, les boutons ARexx, les clefs programmables, etc... Je crois avoir implanté un bon nombre de commandes ARexx. Sentez-vous totalement libres de modifier et de distribuer les fichiers ARexx inclus avec JcGraph (si vous créez un 'script' qui pourrait revêtir un intérêt particulier pour plusieurs personnes, n'hésitez pas à me l'envoyer, je le distribuerai à mes utilisateurs enregistrés). Il y a plus de 40 commandes ARexx disponibles depuis JcGraph. Elles sont (en ordre alphabétique): ActivateWindow: Function: Selectionne la fenêtre courante. Input: INTERFACE/K,OUTPUT/K,PREVIEW/K. Output: Nil. Note: Nil. See also: Nil. Button: Function: Assigne un script a un des dix boutons à l'écran. Input: numero bouton (1 to 10),LABEL=,script répertoire et nom. Output: Nil. Note: ex:"button 7 label=Rend JcGraph:test/tess.rex" Les positions des paramètres ne peuvent être changées. See also: Keyboard. Close: Function: Quitte JcGraph. Input: FORCE/S. Output: Nil. Note: Même que Quit (Style guide) See also: Quit. Copy: Function: Input: Output: Note: Devrait être active dans la version 1.2. See also: GetDataColor: Function: Input: Output: Note: Devrait être active dans la version 1.2. See also: GetFormat: Function: Retourne le format de fichier courant. Input: Nil. Output: As string: 1- IFF ILBM 2- EPSF Gray 3- EPSF Color 4- 3D Geo 5- Draw 2000 Note: Nil. See also: SetFormat. GetGraphType: Function: Retourne le répertoire du type de graphe and filename. Input: Nil. Output: répertoire + nom de fichier. Note: Si la valeur retournée est DFLT, cela veut dire qu'aucun type de graphique n'a été chargé et que celui par défaut est utilisé. Si rien n'est retourné, alors aucun type de graphique n'est disponible. See also: LoadGraphType. GetRotation: Function: Retourne les valeurs de rotation X,Y et Z. Input: Nil. Output: Valeur X, Y et Z en format texte séparé par des espaces. Note: ex:"12 34 45". See also: SetRotation,GetX,GetY,GetZ,SetX,SetY,SetZ. GetScreenAddress: Function: Retourne le pointeur sur la structure écran JcGraph. Input: Nil. Output: Nil. Note: Permet l'intégration facile de code externe. See also: Nil. GetTypeValue: Function: Retourne une valeur spécifique au type de graphique. Input: Position de la donnée. Output: Sa valeur en format texte. Note: Aucune validation sur la valeur en entrée. See also: SetTypeValue. GetX: Function: Retourne la valeur présente de rotation en X. Input: Nil. Output: Valeur texte de rotation en X. Note: Nil. See also: SetRotation,GetRotation,GetY,GetZ,SetX,SetY,SetZ. GetY: Function: Retourne la valeur présente de rotation en Y. Input: Nil. Output: Valeur texte de rotation en Y. Note: Nil. See also: SetRotation,GetRotation,GetX,GetZ,SetX,SetY,SetZ. GetZ: Function: Retourne la valeur présente de rotation en Z. Input: Nil. Output: Valeur texte de rotation en Z. Note: Nil. See also: SetRotation,GetRotation,GetY,GetX,SetX,SetY,SetZ. Keyboard: Function: Assignation de 'script' ARexx a une touche F6 à F10. Input: KEY/K,CMD/K. Output: Nil. Note: ex:"Keyboard key=F6 cmd=rexx:test.rex" See also: Button. LoadGraphType: Function: Charge un nouveau type de graphique. Input: nom de fichier. Output: Nil. Note: ex:'LoadGraphType work:jcgraph/graphtype/gugusse3D.grf' Si aucun nom de fichier n'est spécifié, une boite de requête de fichier apparaîtra. See also: GetGraphType. MoveWindow: Function: Positionne la fenêtre active. Input: TOPEDGE/K,LEFTEDGE/K. Output: Retourne la position avant modification (LeftEdge et TopEdge). Note: Une valeur de -1 dans TopEdge ou LeftEdge résultera en une absence de changement de position dans ce champs particulier. See also: SizeWindow. Nop: Function: Ne fait absolument rien. Input: Nil. Output: Nil. Note: Nil. See also: Nil. Open: Function: Ouvre un fichier de données JcGraph ASCII. Input: FILENAME/K. Output: Nil. Note: Si aucun nom de fichier n'est donné, une boite de requête apparaîtra. See also: Close, Quit. Print: Function: Imprime le graphique sur imprimante. Input: Nil. Output: 10= si aucun graphique n'a été créé. Note: Nil. See also: Nil. Quit: Function: Quitte JcGraph. Input: FORCE/S. Output: Nil. Note: Force empêche l'affichage de la boîte de requête de projet modifié. See also: Close. Render: Function: Crée un graphique en utilisant les paramètres présents. Input: Nil. Output: Nil. Note: Si aucun type de graphe n'est choisi, JcGraph vous avertira. See also: Nil. RequestFile: Function: Affiche une boîte de requête de fichier. Input: TITLE/K,PATH/K,FILE/K,PATTERN/K. Output: RC=0->OK, RC=5->CANCEL, RESULT=répertoire + nom de fichier. Note: Nil. See also: RequestString,RequestNumber,RequestResponse,RequestNotify. RequestNotify: Function: Ouvre une fenêtre avec du texte et un bouton OK. Input: message. Output: Nil. Note: Légère différence ici avec le 'Style Guide'; ex: 'RequestNotify This is the message' See also: RequestString,RequestNumber,RequestResponse,RequestFile. RequestNumber: Function: Ouvre une fenêtre avec du texte, bouton entier, OK et CANCEL. Input: message. Output: if RC=0 -> OK, RC=5 -> CANCEL . Result=valeur en texte. Note: Légère différence ici avec le 'Style Guide'; ex: 'RequestNumber This is the message' See also: RequestString,RequestNotify,RequestResponse,RequestFile. RequestResponse: Function: Ouvre une fenêtre requérant une réponse OK ou CANCEL. Input: message. Output: RC=0 if OK, RC=5 si CANCEL. Note: Légère différence ici avec le 'Style Guide'; ex: 'RequestResponse This is the message' See also: RequestString,RequestNumber,RequestNotify,RequestFile. RequestString: Function: Ouvre une fenêtre avec du texte, gadget texte, OK et CANCEL. Input: message. Output: if RC=0 -> OK, RC=5 -> CANCEL . Result=texte. Note: Légère différence ici avec le 'Style Guide'; ex: 'RequestString This is the message' See also: RequestNumber,RequestNotify,RequestResponse,RequestFile. Rx: Function: Exécute un fichier ARexx de facon asynchrone. Input: Nom du fichier ARexx. Output: Nil. Note: Légère différence ici avec le 'Style Guide'; ex: 'Rx work:test.rex' See also: Nil. Save: Function: Sauve le graphique en utilisant les paramètres présents. Input: Nil. Output: Nil. Note: Nil. See also: SaveAs. SaveAs: Function: Sauve le graphique en utilisant le format de fichier présent et en spécifiant le nom de fichier. Input: NAME/K. Output: Nil. Note: Si aucun nom de fichier n'est spécifié, JcGraph le demande. See also: Save. ScreenToBack: Function: Pousse l'écran de JcGraph au fond. Input: Nil. Output: Nil. Note: Nil. See also: ScreenToFront. ScreenToFront: Function: Amène l'écran de JcGraph à l'avant plan. Input: Nil. Output: Nil. Note: Nil. See also: ScreenToBack. SetDataColor: Function: Input: Output: Note: Devrait être active dans la version 1.2. See also: SetDisplayBeepOn: Function: Active le clignotement d'écran lorsqu'une fenêtre s'ouvre. Input: Nil. Output: Nil. Note: Nil. See also: SetDisplayBeepOff. SetDisplayBeepOff: Function: Désactive le clignotement d'écran lorsqu'une fenêtre s'ouvre. Input: Nil. Output: Nil. Note: Nil. See also: SetDisplayBeepOn. SetFormat: Function: Sélectionne le format de fichier de JcGraph. Input: Numéro du format. Output: 0 = ok, 10 sinon. Note: Numéro format: 1- IFF ILBM 2- EPSF Gray 3- EPSF Color 4- 3D Geo 5- Draw 2000 See also: GetFormat. SetRotation: Function: Choisit les valeur X,Y et Z de rotation. Input: Valeur X, valeur Y, valeur Z. Output: Nil. Note: ex: "SetRotation 12 32 14" See also: SetX, SetY, SetZ, GetX, GetY, GetZ, GetRotation. SetTypeValue: Function: Permet de choisir une valeur particulière du type de graphe. Input: Index de la valeur à être changée, nouvelle valeur. Output: Nil. Note: La valeur et l'index ne sont absolument pas validés. See also: GetTypeValue. SetX: Function: Détermine la valeur de rotation en X. Input: valeur. Output: Nil. Note: ex: "SetX 10" See also: SetY, SetZ, GetX, GetY, GetZ, GetRotation, SetRotation. SetY: Function: Détermine la valeur de rotation en Y. Input: valeur. Output: Nil. Note: ex: "SetY 10" See also: SetX, SetZ, GetX, GetY, GetZ, GetRotation, SetRotation. SetZ: Function: Détermine la valeur de rotation en Z. Input: valeur. Output: Nil. Note: ex: "SetZ 10" See also: SetY, SetX, GetX, GetY, GetZ, GetRotation, SetRotation. SizeWindow: Function: Détermine la taille de la fenêtre active. Input: WIDTH/N,HEIGHT/N. Output: Taille de la fenêtre avant changement (Width et Height). Note: Une valeur de -1 dans WIDTH ou HEIGHT résultera en une absence de changement de taille dans ce champs particulier. See also: MoveWindow. Version: Function: Retourne le numéro de version de JcGraph. Input: Nil. Output: Numéro de version sous la forme 'NomDeProgramme 9.99 (DD/MM/YY)' Note: Nil. See also: Nil. WindowToFront: Function: Amène la fenêtre active de JcGraph à l'avant plan. Input: Nil. Output: Nil. Note: Nil. See also: WindowToBack, ActivateWindow. WindowToBack: Function: Pousse la fenêtre active de JcGraph au fond. Input: Nil. Output: Nil. Note: Nil. See also: WindowToFront, ActivateWindow. 13.Format des types de graphiques: ---------------------------------- Je crois que c'est là une des parties les plus intéressantes (du point de vue programmation) de JcGraph. Cela remonte à environ 2 ans: j'ai vu plusieurs programmes Amiga, IBM et Mac qui avaient le même but; la création de graphiques d'affaire, mais ce qui m'a frappé, c'était l'apparente nécessité qu'avaient leurs développeurs d'avoir une partie de code pour chaque type de graphique, quel gaspillage de ressources. Il y avait sûrement une facon de généraliser la création de la plupart des graphes et après quelque heures de réflexion sur la base d'une idée originale, j'en suis venu à ce format de fichier graphique: 1001, : Identifieur "Type de graphique" toujours présent. Points d'un bloc du type de graphe: ----------------------------------- Les points sont organisés en deux groupes successifs de valeur X et Y. Le premier groupe est pour les points de la base d'un bloc alors que le second est pour le dessus. 4, : Nombre total de points dans un bloc. 0,0, : 1. X,Y de la base. 0,20, : 1. X,Y du dessus. 40,0, : 2. X,Y de la base. 40,20, : 2. X,Y du dessus. 40,40, : 3. X,Y de la base. 40,20, : 3. X,Y du dessus. 0,40, : 4. X,Y de la base. 0,20, : 4. X,Y du dessus. Liens inter-blocs: ------------------ 2,3,1,4, : Si le drapeau de lien est allumé (1), le point 2 d'un bloc sera lié avec le point 1 du suivant en X. Le 3 avec le 4. Seulement 2 liens par côté sont permis. 3,4,2,1, : Si le drapeau de lien est allumé (1), le point 3 d'un bloc sera lié avec le point 2 du suivant en Y. Le 4 avec le 1. Seulement 2 liens par côté sont permis. Drapeaux: --------- 2,2, : X , Y colonnes et lignes du PREVIEW. 70, : Espacement de la prochaine colonne. 70, : Espacement de la prochaine ligne. 2, : Facteur multiplicatif en Y. 0, : Join en X ? (0 ou 1) 0, : Join en Y ? (0 ou 1) 0, : Empilés ? (0 ou 1) 1, : 3-D ? (0 ou 1) 0, : Pourcent (tarte) ? (0 ou 1) 0, : Dessus du bloc uniquement ? (0 ou 1) 0, : Dessus de l'inter-bloc uniquement ? (0 ou 1) 0, : Rotation 90 degré du dessus ? (0 ou 1) 0, : Glissement de la prochaine ligne (valeur). 0, : TOUJOURS 0. 0, : Cote-à-cote ( 0 ou 1) 0, : Glissement en Y (valeur). 0, : Non-défini. 40, : Taille maximale du bloc en X. 40, : Taille maximale du bloc en Y. 15, : Taille du "font" en X. 15, : Taille du "font" en Y. 15, : Taille du "font" en Z. 10, : Espace texte-graphe en Z 20, : Espace texte-graphe en X. Je crois que cette implantation du type de graphe est un bon compromis entre la flexibilité, la simplicité et la taille. Faites quelques expériences de modifications sans toutefois oublier qu'aucune validation n'est faite sur le type de graphe (vous devriez savoir ce que vous faites). Bien entendu, tout ceci est bien loin de la perfection et je vois plusieurs améliorations possibles qui requéreraient toutefois une ré-écriture sévère de JcGraph et ,à moins qu'une immense compagnie de logiciel me paie une fortune pour le faire, je laisserai cet exercice à l'attention du lecteur. Bien entendu, vous ne pouvez utiliser tout ceci dans du code commercial mais, si vous désirez partager des idées, vous pouvez toujours m'écrire et il me fera grand plaisir de vous répondre. 14.Indices sur les améliorations prévues pour JcGraph: ------------------------------------------------------ FUTUR SOMBRE: ------------- C'est très malheureux car je n'aie pas eu suffisamment d'enregistrements pour qu'il me soit motivant de continuer d'améliorer JcGraph. Peut-être n'ai-je pas utilisé tous les moyens nécessaires pour sa distribution mais je ne crois pas que ce soit dû uniquement à cela. J'espère uniquement que les utilisateurs entregistrés comprendront que ce n'est pas par malhonneteté que je cesserai les améliorations prévue pour JcGraph mais uniquement par manque de temps et d'argent. JcGraph est maintenant librement distribuable et je ne compte pas y repasser du temps vu le peut d'interet que semble y porter le monde Amiga. Je m'excuse aupres de mes utilisateurs enregistres que j'aurais bien voulu rembourser si mon compte en banque n'etait pas de -0.13$... La partie triste est que le developpement de future application se fera probablement sur PC, en ce qui me concerne en tout cas... pour survivre... MAIS, si vous utilisez regulierement JcGraph et croyez qu'il en vaut la peine (ou si vous tenez simplement a me dire bonjour), vous pouvez envoyer une carte postale representant votre ville ou village (... bien entendu, je ne refuse absolument pas l'argent qu'on m'envoie ;-). Considerez donc JcGraph comme du CartePostale-ware! Jean-Christophe Clément 921, rang 3 St-Simon Québec, CANADA J0H-1Y0 12.Histoire de JcGraph: ------------------------ 23 avril 1992:(v0.90) -Sortie officiel du premier Beta. -Pas complètement à mon goût mais veux d'abord voir la réponse des utilisateurs pour évaluer l'énergie à investir dans les prochaines versions. 27 avril 1992:(v0.901) -Corrigé un petit bug de désallocation en sortie. -J'ai définitivement sorti le Beta trop tôt!!! 30 avril 1992:(v0.902) -Agmentation de la précision graphes 2D. -Support nombres negatifs et graphiques à étages. -Meuilleur support point flottant. 14 mai 1992:(v0.903) -Corrige un bug avec la perspective. 10 octobre 1992:(v1.100) Améliorations majeures: -Correction de plusieurs erreurs simples. -Ajout d'un port ARexx (plus de 40 commandes) presque entièrement bâti selon les normes standard Commodore. -Support de la boîte de requêtes de fichiers standard de Commodore sous WB 2.0. KD_freq sous 1.3. -Plus robuste. -JcGraph est maintenant livré avec une superbe :-) étiquette sur le disque. -Un joli sélecteur de couleurs à été ajouté basé sur le travail de RJ Mical avec certains ajouts au niveau de l'esthétique et de l'ergonomie. -Le problème avec les plus gros "font" à été réglé. -La fenêtre PREVIEW peut maintenant changer de taille. -Plusieurs scripts ARexx intéressant sont fournis. -JcGraph fait maintenant plus de validation sur les fichiers en entrée. -Plus d'options au démarrage. -plein de nouveaux avantages que vous découvrirez lors de l'utilisation. 07 janvier 1993:(v1.110) -Sauve les objets 3D Geo avec les polygones à double-face. -Nouveau 'script' ARexx pour "hotlink" Advantage. 27 fevrier 1993:(v1.12) -petite "patch" d'allocation de memoire. 15 aout 1993:(v1.13) -distribution libre. -optimisation simple (passe de 176k a 164k). Remerciements a: Richard Loubier,Pierre-Louis Constantin, Steve Davis, Dominic Giampaolo, et tous ceux qui m'ont supporté durant mon travail sur JcGraph. Remerciement tout particuliers a: Francis Lai et Claude Lelouch pour "La belle histoire", Vangelis et Ridley Scott pour "1492: La conquete du paradis" pour m'avoir aider a traverser les periodes d'examens a l'Universite.