home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gold Fish 2
/
goldfish_vol2_cd2.bin
/
bbs
/
gfx
/
coppercontrol-1.0.lha
/
CopperControl
/
CC-ED.doc.fr
< prev
next >
Wrap
Text File
|
1993-11-29
|
44KB
|
889 lines
_______________________________________________________________________________
-------------------------------------------------------------------------------
____ ____ ____ ____ ____ ____ ____ ____ __ __ _____ ____ ____ __
/\___\\___\\___\\___\\___\\___\ /\___\\___\\_\/\_\\____\\___\ \___\\_\
/ / __// // _ // _ // __//__ / / / __// // \/ //_ _//__ / / // /_
/ / /\ / / // __// __// __// / / / /\ / / // /\ // / / / / / / // /__\
\/___//___//_/ \/_/ \/___//_/\_\ \/___//___//_/\/_/ \/_/\/_/\_\/___//_____/
-=* L'EDITEUR *=-
_______________________________________________________________________________
-------------------------------------------------------------------------------
Version 1.0, compatible tout OS (testé sur 1.3, 2.0+, 3.0)
SHAREWARE ©1993 par Nadir Boussoukaia
>>> AUTEUR <<< >>> DISTRIBUTEUR <<<
Ecrivez à: /--------------------------\ /----------------------------\
| Nadir Boussoukaia | | SILICONE-DP |
| 1 Rue Des Romanesques | | 5 Bld des Arceaux |
| 13015 Marseille (France) | | 34000 Montpellier (France) |
\--------------------------/ \----------------------------/
---> commentaires/Hellos ---> Achat du programme:
suggestions/Bugs report 30 Francs Francais par
échange de Demos disk (shareware compensé).
========================================================================
TOUTE PROPOSITION SERIEUSE DE TRAVAIL EST CHALEUREUSEMENT ACCUEILLIE
========================================================================
-------------------------------------------------------------------------------
Introduction
-------------------------------------------------------------------------------
Copper Control Editor (appelons-le CC-ED) est un éditeur de copperlist à usage
général, n'ayant pratiquement aucune limitation (il est possible par exemple
d'avoir plus d'une couleur par ligne raster). Vous pouvez grâce à lui éditer et
sauver des copperlists pour vos programmes en langage machine et autres.
Une autre possibilité intéressante est que vous pouvez sauver vos copperlists
pour Copper Control: Ce petit programme (3844 Octets) vous offre la possibilité
d'utiliser votre propre copperlist à la place de n'importe quel nombre de
couleurs, dans n'importe quel écran Intuition, comme par exemple l'écran du
Workbench. Voir l'autre doc.
CC-ED est un éditeur convivial du style DeluxePaint, avec un grand nombres de
fonctions originales pour ce type de programme (comme UNDO).
Il a été fait dans l'optique d'une totale simplicité et fonctionnalité à
l'utilisation, afin que les non-spécialistes puissent l'utiliser sans maux de
tête (Vous ne trouverez aucun message ou fonction ésotérique !)
Toutefois, il n'impose aucune restriction et les coders peuvent l'utiliser et
avoir à leur disposition pratiquement toute les possibilités du COPPER.
Une version Française et Allemande peuvent être disponibles.
Caractéristiques
----------------
- Copper Control codé en court & rapide assembleur
- L'éditeur CC-ED codé en AMOS 1.3 (peut-être une version 2.0 en C)
- Interface Intuitive (j'espère!)
- Vous pouvez choisir le registre couleur de la copperlist
- Plus d'une couleur par ligne possible (tout les 8 pixels)
- Possibilité de copperlists multi-registre couleur
- Sauvegarde des Copperlists en fichiers RAW ou ASCII pour les coders
- Tables de Couleurs générées en fichiers RAW et ASCII
Non-Caractéristiques
--------------------
- AGA support (pour l'instant ?)
- 100% débuggé ! (Disons qu'il l'est à 99%...)
-------------------------------------------------------------------------------
Désistement juridique
-------------------------------------------------------------------------------
CE PROGRAMME EST FOURNI SUR UNE BASE `TEL QUEL', AUCUNE GARANTIE N'EST FAITE,
EXPLICITE OU IMPLICITE. L'AUTEUR N'ASSUME AUCUNE RESPONSABILITE JURIDIQUE ET
TOUTE UTILISATION DE CE PROGRAMME EST A VOS PROPRES RISQUES.
-------------------------------------------------------------------------------
Distribution & Donation ShareWare
-------------------------------------------------------------------------------
Cette production est SHAREWARE: Si vous l'utilisez, c'est que vous avez déjà
payé la maigre CONTRIBUTION de 30 Francs Français. Dans le cas contraire, elle
a été fixée si bas que vous n'avez aucune excuse: Vous devriez le faire dès à
présent (Vous trouverez l'adresse du distributeur au début du texte).
Après cela, vous pourrez l'utiliser comme bon vous semble, y compris dans une
production commerciale, sous réserve toutefois qu'il n'en soit pas l'objet
principal.
Le futur de cette production dépend de vous.
Si vous me soutenez, je continuerai à travailler dessus et à l'améliorer.
J'ai aussi quelques autres projets à l'esprit.
Mais tout dépend de mon moral... et mon moral dépend de mon portefeuille.
-------------------------------------------------------------------------------
Installation
-------------------------------------------------------------------------------
Copper Control Editor peut être placé n'importe où.
Il recherche un fichier de configuration optionnel dans le directory courant
(Sous Workbench c'est le même directory que celui de CC-ED) ou en S:
Notez que ce fichier est OPTIONNEL. CC-ED n'a besoin d'aucun fichier, mis à
part une librairie: J'ai pu éviter l'utilisation de la `Mathtrans.Library', mais
je n'ai pu éviter celle de la `Diskfont.Library'. Bien que je ne règle que la
ROM font 8, AMOS utilise cette librairies. Elle doit donc être dans votre LIBS:
CC-ED a été compilé pour le Workbench, mais il peut aussi être lancé depuis le
CLI. Pensez alors à utiliser un `Run >NIL:' pour garder la main.
-------------------------------------------------------------------------------
Utilisation de Copper Control Editor
-------------------------------------------------------------------------------
Préalable: J'appelle `Registre Couleur' une des 32 cases mémoires utilisées
pour stocker les couleurs de la palette.
Une fois le programme chargé, vous pouvez voir à l'écran:
- Un panneau avec un assez grand nombre de gadgets,
- Un curseur composé de deux sprites sur l'écran noir de gauche,
- Votre beau pointeur souris rose.
Vous pouvez déplacer le curseur avec:
- Le Clavier: Les flèches haut & bas sur l'édition principale. Vous pouvez
accélérer le mouvement avec les touches Shift (Il y a un pas
différent pour chaque touche shift).
Les flèches droite & gauche quand vous éditez une ligne. Les
touches Shift sont utilisées ici pour aller directement au
début ou à la fin de la ligne éditée.
- La Souris: Clickez simplement à l'endroit où vous voulez placer le curseur.
Si vous maintenez pressé le bouton souris sur le haut ou le bas
de l'écran, la copperlist se met à scroller.
- Le Slider: Agrippez la barre du slider et déplacez la vers le haut ou le
bas pour aller la où vous voulez. Si vous ne cliquez pas sur la
barre la copperlist fait seulement un petit saut.
La philosophie du programme est que tout doit être aussi simple & intuitif que
possible. Il y a trois façons de modifier la copperlist:
- Avec les fonctions du curseur:
La plupart sont dans le panneau `Current Line' comme
par exemple Delete, modifier la couleur, Edit, Insert..
- Avec les fonctions de Bloc:
Comme Spread, Paste, Clr, Roll. La plupart sont dans le
panneau `Block'. L'utilisation en est assez logique:
Vous devez d'abord spécifier les limites de la fonction
puis clicker sur le gadget de la fonction que vous
voulez utiliser.
- Avec les fonctions du Pointeur Souris:
Pour l'instant elles sont au nombre de deux, Pick Color
et Smooth. Vous clickez en premier sur le gadget, puis
l'utilisez aussi longtemps que nécessaire. Pour sortir,
clickez le bouton droit de la souris ou alors allez
vers le Panneau des fonctions.
Copper Control Editor vous permet d'afficher seulement une couleur par ligne
raster sur l'écran principal, pour la rapidité (utilisation de fonctions AMOS)
et pour la simplicité dans le codage comme dans l'utilisation. Imaginez Par
exemple avec la fonction Spread : Si on fait un Spread sur quelques lignes,
Comment peut-on déterminer simplement si on prend en compte l'intérieur d'une
ligne ou pas ?
J'ai décidé Pour ces raisons de séparer l'édition verticale et horizontale de
la copperlist. Ainsi en utilisant la fonction `EDIT LINE', vous pouvez éditer
horizontalement et afficher beaucoup plus de couleurs par lignes (44 en règle
générale !). Vous aurez aussi besoin de l'utiliser en combinaison avec la
fonction TEST pour voir le résultat réel (Voir ci-dessous pour plus de détails).
Vous pouvez utiliser la fonction MIX pour avoir des copperlists multi-registre
couleur (ceci signifie des copperlists sur les couleurs 00 plus 01 plus 03 par
exemple). J'expliquerai totalement son utilisation plus loin.
Pratiquement toute les fonctions ont un raccourci clavier.
En utilisant la touche HELP, vous pouvez changer la couleur du curseur.
Vous devez savoir qu'il y a un nombre limité d'instructions COPPER. Il est en
général d'environ 3000 sous Workbench, ce qui correspond à 66 lignes éditées de
44 couleurs. Vous pouvez avoir plus d'instructions dans un programme codé en
assembleur, mais le Workbench en utilise beaucoup pour l'affichage des écrans,
etc... De toute façon, vous ne pouvez en aucun cas avoir 44 couleur par ligne
sur 256 lignes. Oubliez ça !
De plus, le nouveau COPPER dans l'AGA chipset étant plus puissant, il pourrait
avoir un plus grand nombre d'instructions disponible.
Ainsi, étant donné que ce nombre maximum peut varier selon l'objectif pour
lequel la copperlist est dessinée, J'ai décidé de NE PAS la contrôler.
C'est donc VOUS qui devez tester le nombre maximum d'instructions que vous
pouvez utiliser. Pour le savoir sache que quand le nombre maximum est dépassé,
l'affichage plante. Par conséquent sauvez tout avant d'utiliser une grosse
copperlist (un fichier de plus de 10k) non testée auparavant. Vous êtes
averti !
Pour une utilisation de copperlist sous Workbench SANS RISQUE, évitez
simplement d'utiliser des lignes éditées, ou très peu.
Notez que la fonction TEST contrôle le dépassement du maximum: essayez de
l'utiliser...
Je pense que le programme est assez simple à utiliser, et le mieux que je
puisse faire maintenant est simplement d'expliquer ce que chaque gadget fait.
Dernier conseil: sauvez aussi souvent que possible pour éviter les surprises !
-------------------------------------------------------------------------------
Sommaire des fonctions des Gadgets
-------------------------------------------------------------------------------
Notez que clicker sur un gadget numérique vous permets de l'éditer au clavier.
S'il existe un raccourci clavier, il est spécifié entre parenthèses.
NB: aucun ordre d'explication...
Nom du Gadget Description
-------------- ---------------------------------------------------------------
X (Esc) Quitte le programme, après confirmation.
CC-ED Informations générales du programme et de l'auteur.
WB (Amiga+M) Retourne au Workbench ou au CLI.
Une petite fenêtre est ouverte. vous devez la fermer pour
retourner dans l'éditeur CC-ED.
Hide (H) Cache le Panneau des fonctions pour avoir une vue plus générale
de la copperlist courante. Clickez à nouveau pour le faire
réapparaître.
Test (T) Construit une autre copperlist pour voir le résultat réel de
votre travail, et ceci dans la section affichée de la
copperlist.
La différence avec `Hide' est qu'il prend en compte les lignes
éditées, et aussi les réelles positions X des lignes.
S'il n'y a aucune ligne éditée les réelles positions X des
lignes seront pratiquement la seule différence.
`Pratiquement' parce qu'il y a la fonction interlace:
Quand l'écran est entrelacé, le Workbench n'affiche que les
lignes impaires de la copperlist. C'est ce que fait la fonction
interlace.
Ainsi, si vous double-clickez sur ce gadget, un requester vous
permet de simuler l'interlace du workbench.
(Un truc: Sous Workbench, si vous décalez d'une ligne vers le
bas l'écran entrelacé, les lignes paires apparaissent à la
place des impaires.)
RMB Avec ceci vous pouvez simuler un click `normal' sur n'importe
quel gadget par un simple appuie sur le bouton droit de la
souris.
Clickez sur ce gadget, puis clickez sur le gadget que vous
voulez simuler. Après cela, chaque fois que vous cliquerez sur
le bouton droit de la souris, le gadget sélectionné sera appuyé
comme si vous l'aviez clické en positionnant le pointeur dessus
et en clickant avec le gauche.
Vous n'avez pas compris ? Testez-le, c'est plus simple.
Et si vous trouvez cette fonction inutile, ne l'utilisez pas !
UNDO (U) Permets d'annuler la dernière modification.
Notez que Undo restaure les couleurs mais aussi les positions X.
Toutefois Undo NE RESTAURE PAS une ligne éditée effacée, ou sa
précédente position Y. Faîtes attention !
CLR (C) Clear: un requester vous demande ce que vous voulez effacer:
Soit toute la copperlist, soit seulement le bloc marqué.
Si sélectionné, remets aussi les positions X à $28 (40 en
décimale).
Config Sauvegarde vos réglages courants dans un fichier de
configuration, qui sera relu au prochain chargement du
programme. Un filerequester apparaît: le nom du fichier doit
être `CC-ED.config'.
Au Chargement, CC-ED le recherchera d'abord dans le directory
courant, puis dans le directory logique S: s'il ne l'a pas
trouvé. Donc si vous n'aimez pas les fichiers config placés en
`S:', vous devez le sauver dans le même directory que CC-ED
pour un chargement à partir du Workbench. Par CLI, n'oubliez
pas d'utiliser la commande `CD' si vous voulez que CC-ED le
trouve!
Lignes (L) C'est un gadget numérique utilisé pour afficher la longueur de
la copperlist. Clickez dessus et un requester vous permet de
régler la taille de la copperlist. Il y a sur sur la gauche de
ce requester quelques gadgets pré-réglés (256, 512, 313),
permettant de régler les tailles usuelles par un simple click
(313 est pour les coders).
Si la nouvelle taille est plus petite que la précédente alors
la copperlist courante est tronquée à la nouvelle taille, sinon
des lignes vides sont ajoutées.
Notez que vous pouvez régler le nombre de lignes sur n'importe
quel nombre entre 0 and 999 (J'ai choisi 999 arbitrairement).
Ceci inclue les tailles inférieures à 256.
Color Règle le registre couleur de la copperlist. Pour l'instant seul
un nombre entre 0 et 31 est valable.
---------------------------------------------------------------
Panneau Bloc Marks
---------------------------------------------------------------
Un dessin vaut mieux qu'un long discours:
-------------------
| Blk Marks |
| --------------- |
| | [1] | |
| --------------- |
| ------- ------- |
[3]-->| 000 | | <-1 |<--[2]
| ------- ------- |
| --------------- |
| | [1] | |
| --------------- |
| ------- ------- |
[3]-->| 999 | | <-2 |<--[2]
| ------- ------- |
-------------------
[1] Vous affiche la couleur de la ligne marquée. C'est utile pour
être sûr de ce qu'on fait. De plus, quand on clique ce gadget,
le curseur est placé sur la ligne correspondante.
[2] ([ and ]) Marque une limite du bloc. Ceci sera utilisé par les fonctions
de bloc. Raccourcis claviers:`[' et `]' sur le pavé numérique.
[3] Affiche le numéro de ligne de la marque de bloc.
Note: Aucun ordre n'est nécessaire dans le placement des
----- marques. La marque n°1 peut être placée sur une ligne
plus basse que la marque n°2 aussi bien que l'inverse.
Exemple d'utilisation:
Placer la marque n°1 sur la ligne 0 et la marque n°2 sur la
ligne 255 en plaçant le curseur sur ces lignes et en cliquant
sur les gadgets [2] (les numéros 0 et 255 doivent apparaître
dans les gadgets [3]). Vous pouvez aussi éditer directement les
gadgets [3]. Ensuite cliquez sur le gadget de la fonction que
vous voulez utiliser, par exemple Spread ou RollUp.
---------------------------------------------------------------
Panneau Block
---------------------------------------------------------------
Spread (S) Ceci fera un spread normal entre les lignes marquées.
(En fait, il fait un spread séparé sur chaque composante
couleur Rouge, Vert et Bleu).
Si sélectionné, Cela spreadera aussi les positions X.
Si vous double-cliquez sur ce gadget, un petit panneau vous
permet de choisir quelle composante couleur (Rouge, Vert et
Bleu) doit être inclue dans le Spread suivant.
C'est un Spread paramétrable. Cliquez `OK' pour l'exécuter.
Que fait-il ?
Il Spread normalement les composantes sélectionnées, et
n'affecte pas les valeurs dans la copperlist des composantes
non sélectionnées.
Si aucune composante n'est sélectionnée, rien ne se passe.
Si toute sont sélectionnée, le résultat est exactement le même
que le Spread normal.
Pourquoi l'utiliser ? En fait, c'est utile si vous devez
modifier les couleurs d'un motif complexe. C'est assez dur à
expliquer, alors si vous n'avez pas compris, essayez de le
tester avec des copperlists complexes (pas avec des Spreads
simples), et le résultat sera évident.
Sur le côté droit du gadget, J'ai ajouté un second Spread qui
utilise une autre méthode. Je l'appelle Smoothed Spread. Il
donne de meilleurs résultats sur les Spreads larges, et
spécialement quand les composantes RGB ne sont pas
proportionnelles. Toutefois, sur les petits Spreads (moins de
32 lignes environ), l'autre spread a de meilleurs résultats.
Paste (P) Copie le bloc marqué en mémoire, puis le recopie dans la
copperlist en commençant par la ligne courante (fait un coupé
et un collé).
Si sélectionné, fera de même avec les positions X.
Si sélectionné, fera de même avec les lignes éditées.
Si vous double-cliquez ce gadget, un Panneau avec deux
fonctions apparaît: `Halve & Paste' et `Double & Paste'.
Celles-ci sont auto-explicatives, je les ai ajoutées pour
simplifier les conversions entre les copperlists pour les
écrans normal ou entrelacé.
Invert (I) Inverse les couleurs entre les marques de bloc.
Les couleurs sous la marque n°1 et sous la marque n°2 seront
échangées, et ainsi de suite...
Si sélectionné, fera de même avec les positions X.
Si sélectionné, fera de même avec les lignes éditées.
Roll UP Fait une rotation des couleurs jusqu'à ce que vous relâchiez le
Roll DOWN bouton de la souris. La couleur sur la ligne la plus haute
apparaîtra sur la ligne la plus basse, ou l'inverse, et ainsi
de suite...
Si sélectionné, fera de même avec les positions X.
Si sélectionné, fera de même avec les lignes éditées.
---------------------------------------------------------------
Panneau Current line
---------------------------------------------------------------
Note: La ligne courante est la ligne où est placé le curseur !
-----
[1]
T
---------------|-------------
| Current | ------- |
| ------- | | 028 | |
| | 000 |<--+ === === <---[2]
| ------- |<|X|>| |
| --- --- |
| ------- ------- ------- |
| | 001 | | 015 | | 007 | |
| === === === === === === |
| |<|R|>| |<|G|>| |<|B|>| |
| --- --- --- --- --- --- |
----/\-------/\--------/\----
\________\_________\________[3]
[1] Vous donnes le numéro de la ligne courante.
[2] Vous donnes la position Horizontale de départ (la position X)
de la ligne courante. vous pouvez avoir une précision de 4
pixels (hardware).
Si vous double-cliquez ce gadget, vous avez à disposition un
panneau avec des fonctions spécifiques sur les postions X.
Ce Panneau est détaillé ci-dessous.
[3] (|) Ce sont les valeurs RGB (les composantes) de la couleur de la
| copperlist qui est sous la ligne courante. Vous pouvez les
| modifier en utilisant les flèches. Notez que les valeurs
| bouclent.
| Quand vous double-cliquez les gadgets numériques, la valeur
| correspondante est remise à zéro au lieu d'être éditée.
|
+---> raccourcis claviers:
7 - RED=RED+1 8 - RED=RED-1 9 - RED=0
4 - GREEN=GREEN+1 5 - GREEN=GREEN-1 6 - GREEN=0
1 - BLUE=BLUE+1 2 - BLUE=BLUE-1 3 - BLUE=0
vous pouvez noter que c'est juste comme dans Dpaint..
---------------------------------------------------------------
Panneau Pos X Parameters
---------------------------------------------------------------
Ce panneau vous offre la possibilité de copier la valeur de la
position X de la ligne courante dans le Bloc ou dans toute la
copperlist. Vous trouverez sûrement ceci utile (comme moi).
Vous pouvez aussi choisir Si les opérations suivantes
affecterons les positions X. Cela veut dire par exemple que
quand vous faîtes un Spread, les valeurs des positions
horizontales seront aussi Spreadée.
Vous pouvez faire un Spread seulement sur les positions X.
Enfin, vous pouvez choisir la position X par défaut pour les
lignes éditées. Ainsi chaque fois que vous éditerez une ligne
pour la première fois, cette valeur sera mise automatiquement.
Je pense que ces petites fonctions peuvent épargner beaucoup de
travail répétitif.
---------------------------------------------------------------
Panneau Line
---------------------------------------------------------------
Comme toujours, Un dessin vaut mieux qu'un long discours.
---------------------
| ----------------- |
| | E D I T |<---[1]
| ----------------- |
| ---- --[2]-- ---- |
[3]--->|/\| | 000 | |\/|<---[3]
| ---- ------- ---- |
| ------- ------- |
[4]--->| Ins | | Del |<---[5]
| ------- ------- |
---------------------
[1] Edit (E) Avec ce gadget vous pouvez éditer la ligne courante. Si la
ligne est déjà éditée, la fenêtre edit apparaît normalement,
sinon le gadget numérique en [2] est incrémenté au préalable.
Vous pouvez ne pas prendre en compte la couleur sous la ligne
courante, car elle sera remplacée par les définitions couleurs
de la ligne éditée.
Vous pouvez déplacer la fenêtre edit avec le bouton gauche de
la Souris sur le drag bar (comme sous Workbench), mais aussi la
replacer automatiquement près du curseur avec le bouton droit.
[2] Vous indique le nombre total de lignes éditées.
En cliquant ce gadget vous pouvez appeler le panneau des
paramètres des lignes éditées (Edited Lines Parameters), qui
est détaillé ci-dessous.
[3] (+ or -) Recherche la ligne éditée suivante vers le haut ou vers le bas
et s'il y en a une, place le curseur dessus. Quand la fenêtre
d'édition de ligne est ouverte, vous pouvez aussi utiliser les
flèches Haut et Bas qui sont équivalentes aux touches + et -
(plus intuitif).
[4] Ins Insère une ligne sur la ligne courante. Comme dans n'importe
(Enter ou CR) quel éditeur de texte, décale toute les lignes sous la ligne
courante vers le bas. Toutefois, la dernière ligne est perdue.
[5] Efface la ligne courante. Comme dans n'importe quel éditeur de
(Del ou Bkspc) texte, décale toute les lignes sous la ligne courante vers le
haut. Une ligne vide est ajoutée à la fin.
Si la ligne courante est éditée et si sélectionné, ses
définitions seront aussi effacées, et le compteur de lignes
éditée décrémenté dans le gadget [2].
note: Si les définitions de la ligne éditée ne vont pas
----- jusqu'au bord droit de l'écran, c'est la dernière
couleur de la ligne qui remplira le reste.
---------------------------------------------------------------
Panneau Edited Lines Parameters
---------------------------------------------------------------
Parce que l'allocation mémoire était assez grosse pour stocker
les définitions pour les 999 lignes possibles (90 Ko) et que
objectivement on ne peut avoir 999 lignes composées de 44
couleurs, j'ai décidé finalement de rendre configurable ce
buffer. (En fait c'est aussi parce que j'ai ajouté l'édition de
de ligne à la fin...).
par conséquent, c'est l'objet de ce panneau:
- vous pouvez régler le maximum de lignes pouvant être éditées
- et vous pouvez régler le nombre de couleurs par ligne qui
seront réservées.
Il y a un indicateur de mémoire utilisé pour un control total.
De plus, Il y a un gadget qui vous permet de choisir Si les
opérations à venir affecterons les lignes éditées, Si elles
le peuvent (par exemple Del peut effacer une ligne éditée..)
---------------------------------------------------------------
Panneau Smooth
---------------------------------------------------------------
Beaucoup de gens utilisent cela dans leur dessins ou leurs
copperlist et le font manuellement, et étant donné que je le
fais aussi, j'ai décidé de l'inclure parce que c'est une
procédure répétitive.
Il y a trois préréglages du Smooth, Vous permettant d'adoucir
les transitions entre couleurs.
Tout ce qu'il fait est simplement d'échanger les bonnes lignes
en dessous et au dessus de la ligne pointée par le pointeur
souris. Pour Stopper, cliquez le bouton droit de la souris ou
allez sur le panneau des fonctions.
Peut être y aura-t'il un Smooth totalement configurable dans
une future version, ou peut-être pas à cause de l'AGA (c'est
totalement inutile !). Toutefois Tous le monde n'a pas l'AGA.
Je ne l'ai pas fait à cause des tests de couleurs et de
- Ma Paresse -
Un gadget en plus vous permet de doubler la portée du Smooth.
Je l'ai ajouté pour les écrans entrelacés. Sur ce type d'écran,
les Smooth doublés apparaîtrons comme des Smooth `normaux'
(Hello Adam !). Sinon ils apparaîtrons REELLEMENT doublés !
---------------------------------------------------------------
Panneau Pick
---------------------------------------------------------------
Pour stopper, clickez le bouton droit de la souris ou allez
vers le Panneau des fonctions.
Get (G) Vous permets de mémoriser une couleur dans la copperlist. Elle
apparaîtra à l'intérieur du pointeur spécial carré.
Put (F) Vous permets de placer dans la copperlist la dernière couleur
mémorisée (cette couleur est à l'intérieur du pointeur carré),
jusqu'à ce que vous quittiez.
Je ne pouvait pas utiliser P en raccourcis parce qu'il est
utilisé pour Paste, et F est près de G dans la plupart des
claviers.
---------------------------------------------------------------
Panneau Disk
---------------------------------------------------------------
Load (Amiga+L) Un FileRequester vous permet de choisir le fichier. S'il peut
être chargé, c'est à dire si c'est un fichier CopCon, alors
CC-ED le charge. Si c'est un fichier mixé CC-ED vous demande
avant quel registre couleur il doit charger.
Si la taille de la copperlist courante est différente de celle
du fichier, il vous sera aussi demandé si vous voulez la
changer. Si vous ne la changez pas il y a deux cas:
- Soit la courante est plus petite que celle du fichier,
auquel cas la copperlist du fichier est tronquée.
- ou c'est la taille de la copperlist du fichier qui est plus
petite, elle est alors insérée dans la copperlist courante,
dans sa position de sauvegarde.
Save (Amiga+S) Après avoir cliqué dessus, un assez grand panneau apparaît.
Pas de panique, je vais vous l'expliquer en détails.
Dans ce Panneau, vous pouvez choisir:
- Quelle section de la copperlist vous voulez sauver. Ce peut
être toute la copperlist ou seulement le block que vous avez
précédemment marqué.
Une caractéristique en plus est que si vous choisissez de
sauver seulement le block marqué, il sera sauvé à sa réelle
position Y, et ainsi la copperlist commencera depuis la
ligne la plus basse du block. Ceci entraîne qu'elle sera
chargée et affichée en commençant sur cette ligne par Copper
Control et CC-ED (Par exemple si vous sauvez le block entre
les lignes 200 & 255 alors quand il sera chargé, son
affichage affectera seulement ces lignes).
- Le format de sauvegarde:
1 - Format CopCon: Sauvegarde en fichier Copper Control.
-------------- sauve votre copperlist dans un format
que peuvent lire Copper Control Editor et Copper
Control. C'est bien sûr le premier format de sauvegarde
implementé. Même si vous ne dessinez pas une copperlist
spécialement pour copper control, il est conseillé de
la sauver aussi dans ce format parce que vous aurez
probablement à la recharger plus tard.
2 - Format Asm: Sauve en fichier assembleur. Je le nomme
----------- ainsi bien que la sauvegarde Raw puisse
être utilisée dans d'autres langages. Sauve votre
copperlist en copperlist réelle directement exécutable
par le Copper. Je tiens compte des problèmes pour les
lignes en dessous de la 255e (les coders savent ce que
je veux dire).
Vous pouvez sauver en fichier Raw (réellement
directement exécutable) ou en fichier ASCII avec
l'opcode assembleur `dc.w' (que vous devez assembler).
Vous pouvez aussi choisir si le fichier doit contenir
la commande de fin de copperlist (le $FFFFFFFE !).
Ce format de sauvegarde a été implémenté pour les
utilisateurs avancés, sinon il est assez inutile.
3 - Format Tabcol: Sauvegarde en table de couleurs, c'est à
-------------- dire seulement les valeurs des couleurs.
Vous pouvez aussi choisir entre les formats Raw et
ASCII `dc.w', et en plus un format ASCII `data' pour
les utilisateurs BASIC.
Le switcher `Full' vous permets de choisir si CC-ED
sauvegarde toutes les couleurs (une pour chaque ligne)
ou seulement les différences de couleur. Par exemple,
si on a du Rouge entre les lignes 0 & 9, et du vert
entre les lignes 10 & 19, `Full' sauvera 20 couleurs,
10 rouges suivis de 10 verts. `Not full' sauvera
seulement deux couleurs, un rouge et un vert.
Vous pouvez trouver cela assez inutile, mais -JE-
l'utilise et ce n'était pas dur à implémenter.
Notes:
-----
Pour les lignes éditées, Il n'y a AUCUNE optimisation sur la
copperlist sauvée. Ceci veut dire que pour chaque ligne éditée,
par exemple de 44 couleurs, 44 moves seront ajouté même s'ils
copient tous la même couleur.
Ceci à cause de ma paresse (c'était assez dur & long pour
modifier les algorithmes, les recoder et les tester, et je
pense que ce supplément de travail n'était pas justifié parce
que je suis pratiquement sûr que je ne serais PAS remercié
pour mon travail), donc je l'implanterais peut-être dans une
hypothétique future version. Pour l'instant, vous devrez
l'optimiser à la main. Cependant, s'il n'y a pas de ligne
éditée, la copperlist est sauvée à sa taille minimale.
Mix Cette fonction a été implanté pour permettre à l'utilisateur
d'avoir des copperlists multi-registre couleur.
Je pense qu'il était trop lourd d'éditer directement les
copperlists sur plus d'un registre couleur, à cause de
l'occupation mémoire proportionnelle, et de maux de têtes
possibles pour l'utilisateur (!). De plus il y a le problème de
l'affichage des couleurs: un écran spécial devrait être ouvert
dans la bonne profondeur divisé en aires horizontales &
verticales pour chaque couleur, ou au moins un système de
switching pour chaque copperlist de chaque registre. J'ai
finalement décidé qu'il était plus simple de faire les
copperlists séparément puis de les fusionner dans un second
temps. C'est ce que réalise la fonction Mix.
Ainsi notez que cette fonction est en fait indépendante du
reste du programme (c'est à dire qu'elle aurait pu être un
programme séparé). Elle fusionne deux réelles copperlists en
seulement une. j'ai choisis que les deux copperlists doivent
toujours porter sur des registres couleur différents, bien que
ce ne soit en fait pas obligatoire (Il était possible de mixer
une copperlist entre les lignes 1 et 10 sur la couleur00 avec
une autre entre les lignes 240 et 255 sur le même registre
couleur. Mais cela est aussi réalisable en utilisant Load !).
Quand le panneau Mix apparaît, vous pouvez choisir:
- La Source 1: Le premier fichier CopCon à Mixer
- La Source 2: Le second fichier CopCon à mixer
- La Destination: Le nom du fichier destination
Chaque fois que vous cliquez l'un de ces gadgets, le
filerequester apparaît. Le petit gadget `?' sur leur gauches
vous rappelle le chemin d'accès complet du fichier
sélectionné correspondant.
- Priority: Soit Source 1, Soit Source 2.
Désolé mais je suis forcé d'être précis pour l'explication:
Quand on Mixe des fichiers, les seuls problèmes apparaissent
quand Il y a des WAITs sur la même ligne dans chaque source.
On doit alors utiliser seulement un WAIT et copier les deux
suites de MOVEs qui suivent. En donnant la priorité à la
source 1 par exemple copiera en premier les MOVEs de la
source 1.
Pourquoi utiliser cela ?
Parce que les MOVEs copiés en second seront décalés de 8
pixels sur la droite, à cause du hardware. Cela peut être
assez ennuyeux !
- Mode: Ceci règle le mode de Copie dans le problème
précédemment expliqué: Soit on copie tout les moves (Normal
mode), soit il y a le mode best matching: La différence dans
ce mode est que celui-ci essaye autant que possible de
copier les MOVEs à leur position originale.
Ce mode à utiliser quand il y a des lignes éditées dans au
moins une source, sinon vous DEVEZ utiliser l'autre mode de
copie.
un petit dessin pour clarifier les fonctions Priority et Mode:
--------------------------------------------------------------
W=Wait, M=Move. Les Wait sont les même: Y et X sont égaux.
------------------------------
ligne dans source 1: | W | M 1.1 | M 1.2 | M 1.3 | etc...
------------------------------
: : : : :
------------------------------
ligne dans source 2: | W | M 2.1 | M 2.2 | M 2.3 | etc...
------------------------------
Résultat: ==============:======================================================
: : : : :
Mode `Copy All' ------------------------------------------------------
Priorité source 1: | W | M 1.1 | M 2.1 | M 1.2 | M 2.2 | M 1.3 | M 2.3 |..
------------------------------------------------------
: : : : :
Mode `Copy All' -----------------------------------------------------
Priorité source 2: | W | M 2.1 | M 1.1 | M 2.2 | M 1.2 | M 2.3 | M 1.3 |..
-----------------------------------------------------
: : : : :
Mode `Best Match' ------------------------------
Priorité source 1: | W | M 1.1 | M 2.2 | M 1.3 |...
------------------------------
: : : : :
Mode `Best Match' ------------------------------
Priorité source 2: | W | M 2.1 | M 1.2 | M 2.3 |...
------------------------------
Après avoir tout réglé, cliquez sur le gadget start pour
commencer le Mix. Deux vu-mètres apparaissent vous montrant le
progrès du fusionnement.
Après cela, Le panneau Save vous permet de choisir le format de
sauvegarde. Notez que les gadgets `All/Bloc' et Color Table ne
sont pas utilisables.
Pour avoir une copperlist avec plus de deux registres couleur,
re-mixez simplement le fichier destination avec un autre
fichier sur un registre couleur différent des deux précédents,
et ainsi de suite jusqu'à ce que vous ayez le nombre de
registres que vous voulez.
-------------------------------------------------------------------------------
Histoire du programme
-------------------------------------------------------------------------------
Coder ce programme a demandé une semaine de mes vacances scolaires pour la
première version utilisable. Il m'a fallut environ trois mois pour ajouter
toutes les améliorations que je voulais ! (bien sûr pas à plein temps, comme
je vous l'ai dit je suis étudiant). Il à été fait en tant qu'exercice
Assembleur et programmation structurée. Dans un second temps, ce fut une
optimisation du code intensive et un DUR debugging. Je n'ai pas assez de temps
pour le debugging et Il y a sûrement encore quelques some BUGS. Vous devez
savoir qu'aucun gros programme ne peut être certifié à 100% sans bug. Donc
soyez indulgent, et s'il vous plais envoyez-moi vos bug(s!) report.
Le progrès dans le travail était gêné par l'idée que c'était en grande partie
pour rien. Prouvez-moi le contraire, pensez SERIEUSEMENT à contribuer.
J'espère aussi que c'est aussi une contribution dans la démonstration de la
puissance du COPPER & de l'OS Amiga.
Une version Française ou Allemande peuvent être demandées.
Toute Suggestions et idée sont bienvenues.
-------------------------------------------------------------------------------
ACHETER LA SOURCE DU CODE
-------------------------------------------------------------------------------
Le code de ce programme est très structuré et optimisé pour une taille minimale
du code et de l'utilisation mémoire. Si vous êtes un débutant en programmation,
ou si vous voulez voir comment ce truc tourne, je peux vous vendre les sources
complètes (AMOS et Assembleur). Elles sont très commentées (Je fais cela pour
moi!) et sont très facile à lire grâce à cela, à une programmation structurée
et à des noms de variables extensifs. Si cela vous intéresse, je peux vous les
céder pour $30 (ou 150 Francs).
-------------------------------------------------------------------------------
Suggestions à Francois Lionet
-------------------------------------------------------------------------------
Voici mes humbles suggestions. Elles peuvent être sans objet maintenant (J'ai
la v1.3):
- `Param': Pourquoi ne pas avoir fait de Fonctions, comme en C ou en Pascal.
C'est plus facile à lire et un peu plus élégant.
- 'Data' prend trop de place: pour environ 3000 octets de données réelle (sur
des Words), environ 30000 sont pris sur l'exécutable! Cela m'a forcé à éviter
de l'utiliser et de faire le stockage & la lecture des données à la main.
- Les tableaux semblent ne pas retourner les bonnes valeurs quand ils sont gros
(plus de 1700 éléments).
- Il n'y a aucune possibilité pour le programmeur de contrôler la taille des
variables. Pourquoi ?
- 'Polygon' est amusant, mais quand vous avez un polygone de 30 cotés à
dessiner... Pourquoi ne pas penser à ajouter une fonction ARRAYFILL, c'est
à dire une fonction qui remplit un polygone définit par un tableau.
- Je pense que l'Auto-ScreenSwap dans Bob Update n'as lieu d'être. Par exemple,
quand on affiche un écran à double-buffer avec 'autoback 2' (pour pour un
contrôle total des frames) plus un autre écran sans double-buffer avec un
programme AMAL sur un Bob: On ne peut pas utiliser 'Bob Update off' à cause
de ça, et vous ne pouvez avoir un contrôle total des frames. Je pense que il
est préférable de laisser l'utilisateur choisir où et quand il échange les
écrans.
- Je trouve le filerequester AMOS trop lent, horrible et irritant car il n'a
pas de buffer et qu'aucun paramètre n'est possible. Voyez la célèbre
`Req.library'...
- je pense que AMOS devrait être un peu plus tourné vers le WORKBENCH.
- Pourquoi y a t'il deux modes de compilation (CLI ou Workbench). Je pense que
vous pouvez facilement rassembler les deux en un seule. Je pourrais le
comprendre s'il y avait une gestion des paramètres CLI et des tooltypes
Workbench, mais ce n'est pas le cas..?
- Pourquoi n'y a t'il pas de commande Interlace dans SCREEN OPEN, bien qu'on
puisse charger une image entrelacée avec LOAD IFF ? Personnellement, pour
utiliser ces écrans,j'UNPACK un écran noir entrelacé: Ca ne fait pas sérieux.
- Les fonctions de directory (dir first$,dir next$..) cachent les fichiers info
mais pas les fichiers du type 'filename.doc.fr.info'...
- Pourquoi AMOS crée un viewport vide dans le workbench quand on y retourne par
'Amos to back' (Il est placé à partir de la ligne 245-250) ?
Avec l'espoir que vous tiendrez compte de ceci.
-------------------------------------------------------------------------------
A FAIRE
-------------------------------------------------------------------------------
- convertisseur IFF pic <-> copperlist: Déjà codé (voyez les exemples) mais
sortie dans une future version car il n'y a aucun interface.
- AGA support ? (Je n'ai aucune documentation pour l'instant)
- Un éditeur plus puissant en C (ou AMOS Pro ?)
- Chargement de copperlists ASM et ASCII `dc.w'
- Optimisation des lignes éditées
- Ajouts de primitives graphiques comme draw, ligne, fill...
- Encore plus paramétrable
- Copperlists Animées & morphing (est-ce possible ?)
- Chargement Workbench pour CopCon, avec tooltypes, filerequester...
- Installation de copperlist au chargement d'autre programmes ?
(Par exemple quand vous chargez DirOpus, CopCon le détecte et installe la
copperlist utilisateur correspondante. Hello Adam ! )
- Toute suggestion et idée est bienvenue...
-------------------------------------------------------------------------------
Remerciements & Greetings
-------------------------------------------------------------------------------
- Operating System Amiga: LUI fait tout le boulot, je ne fais que l'utiliser..
- Encore plus notre merveilleux COPPER !
- Adam CARANO : Pour son patient soutient pendant la programmation & le
débugage (recevant une douzaine de version `finale'),
pour beaucoup d'idées et de suggestions, et pour être
un REEL utilisateur et supporter Amiga.
- Mourad BELHOUCHET : Pour ses (très) nombreuses bonnes idées, les livres de
C, les livres de Maths, et par dessus tout pour les
livres de H.P Lovecraft. Et d'être mon ami.
- Joseph COSTAGLIOLA : Pour son absence de soutient.
- Stephane EISENLHOR : D'être, simplement...
- Jean-Louis LESIEUR : Pour être si méchant et agressif avec moi. Ca fait du
bien un peu de franchise... J'aime vraiment ton album
musical `Lands of Pain'. (VRAIMENT !)
- MICKAEL SERKIS : Pour avoir perdu un peu de son temps à corriger la doc
Anglaise.
- FINAL COPY II : Pour avoir corrigé le version française de la doc avec
l'aide de Adam CARANO.
-------------------------------------------------------------------------------
Autres greetings
-------------------------------------------------------------------------------
- Ivan TRUJAS (Iron Man), Christophe HERNANDEZ (l'homme invisible),
- Loïc DUPUY, Zef & son groupe de Trash `ETHERIZE', Fred P., Arthur,
- Celine, Eric & Cecile, Fred M., Alain,
- Ahmed Rehiel, Eric S., Michel, Nordine, Laurence, Rachid, Nadia, Christine,
Sandrine, Sandra, Sabrina, Angelique, Nacer, Valerie, Youssef, Marese,
Claude, Brigitte & Beatrice, Pio, Boule, Nadjib,
- BATHORY,VENOM,BOLTHROWER,SEPULTURA,METALLICA,GODFLESH,CARCASS,NAPALM DEATH,
- KLAUS SCHULZE,
- E.M. CIORAN:
`Exister serait une entreprise totalement impraticable
Si on cessait d'accorder de l'importance à ce qui n'en a pas.'
J'adore votre travail GENIAL, demos coders :
-------------------------------------------
The Spy(Silents), Slayer(Scoopex), Azatoth(Phenomena), Delta(Red Sector),
Tec(CryptoBurners), Thomas Landspurg, Chaos(Sanity), Mosh(Anarchy),
Mediator(Anarchy), Deftronic(Crionics), Lone Starr(Spaceballs), MCD(Rebels),
Corto(quartex?), Cocy (PMC).