&&
------------------------------------------------------------------------------
                CURSUS AMIGABASIC  -  SUBROUTINES  -  RGB-Copy
------------------------------------------------------------------------------

Deze routine kopieert een kleur naar een andere kleur. Twee kleuren krijgen zo
dezelfde waarden. U hoeft daarbij niet de waarden van de kleuren te weten. De
routine zoekt zelf naar de waarden.

Het programma is als een SUB geschreven en heeft 2 parameters nodig. Hieronder
staat de sub met een demo waar kleuren worden gekopieerd.

SYNTAX :

CALL RGBCopy (n%,m%)

n% = De kleur die gekopieerd moet worden.
m% = De kleur waarheen gekopieerd moet worden.

Er zijn twee libraries nodig, en dus ook twee BMap-files.

VOORBEELD :

   DECLARE FUNCTION viewportaddress& LIBRARY
   DECLARE FUNCTION getrgb4& LIBRARY
   LIBRARY "graphics.library"
   LIBRARY "intuition.library"
&&
   REM DEMO

   LINE (50,100)-(100,200),1,bf               :REM Een vlak in kleur 1.
   LINE (50,50)-(100,100),3,bf                :REM Een vlak in kleur 3.
   FOR I=1 TO 5000 : NEXT I                   :REM Even wachten.
   n%=1                                       :REM Kleur 1.
   m%=3                                       :REM Kleur 3.
   CALL RGBCopy (n%,m%)                       :REM Kopieer ze.
   FOR I=1 TO 5000 : NEXT I                   :REM Even wachten.
   PALETTE 3,1,0,0                            :REM Zet originele kleur terug.
   END                                        :REM Einde demo.

DE EIGENLIJKE SUB :

   SUB RGBCopy (n%,m%) STATIC

We moeten testen of de opgegeven kleuren niet negatief zijn en niet groter dan
het aantal kleuren dat het scherm heeft.

       IF n%<0 OR n%>WINDOW(6) THEN EXIT SUB
       IF m%<0 OR m%>WINDOW(6) THEN EXIT SUB 

Om de kleuren te kunnen vinden moeten we de kleuren-map van het scherm zien te
vinden. Deze vinden we met een ingewikkelde PEEK in het geheugen.

       cm&=PEEKL(viewportaddress&(WINDOW(7))+4)
&&
Nu kunnen we de routine GETRGB4 gebruiken om de kleuren op te zoeken. Deze ko-
men als 2 bytes met als hex-waarde 0XXX. De drie X-en staan voor de waarden
Rood, Groen en Blauw. We moeten die uit de bytes halen met wat kommando's.

       rgb=getrgb4&(cm&,n%)                   :REM Pak de kleuren.
       r1%=INT(rgb/2^8)                       :REM De ROOD-waarde.
       rgb=rgb MOD 2^8
       g1%=INT(rgb/2^4)                       :REM De GROEN-waarde.
       b1%=rgb MOD 2^4                        :REM De BLAUW-waarde.

Via een palette-kommando zetten we de kleur.

       PALETTE m%,r%,g%,b%
   END SUB











Het programma staat op diskette onder de naam RGBCopy in de Basic-directory.

- EINDE ----------------------------------------------------------------------
&&
