Graphical Subprograms

<< Click to Display Table of Contents >>

Navigation:  3. Script Language > ! User-Macros >

Graphical Subprograms

Graphics & Pixel-Processing Library

Previous Top Next


Sample Code

 

Graphics-Library

 

These Macro-Commands can be used to do Pixel-Processing.

 

This Command will Scan a Line in an Image-Register until a specified Color is found.

The specification is the Color as RGB and the Minimum and/or Maximum Color-Difference.

The Command will return whether -1 (="no such color found") or the X-Position of the found color.

 

 

VAN.$$COA=&HFF00FF

VAN.$$COB=&H00FF00

VAN.$$STO=100

VAN.$$CST=25

%Calculate_Color_between $$COA|$$COB|$$STO|$$CST

POP.$$RES

VTH.$$RES|$$REA|6

PRT.Erg. -- $$REA

MBX.!

ENR.

 

Result: 

193.8 -- 61.2 -- 193.8

C23DC2

 

 

 

'-----------------------------------------------------------

'

'-----------------------------------------------------------

'

' Parameter:

' 1 - Number of the IR

' 2 - Start-Pos X 

' 3 - Pos Y 

' 4 - End-Pos X

' 5 - Color to Scan for

' 6 - Colordif - Max (or -1)

' 7 - Colordif - Min (or -1)

' If 6/7 do fit, result is returned on TOS

' 000 - X-Pos

' or -1 if not found

'

: %Find_Block_of_Color_X 6

SAV.Save|$$LOP|$$E01|$$E02|$$E03|$$E04|$$E05|$$E06|$$E07|$$ERM|$$ERC|$$ERD|$$ERA|$$XPA

#IF PARAMS<6

MBX.Not enough Parameter.

#EIF.

' IR - Number

VAN.$$E01=§§§01

' Startpos X

VAN.$$E02=§§§02

' Y-Pos

VAN.$$E03=§§§03

' X-Pos End

VAN.$$E04=§§§04

' Color to scan for

VAN.$$E05=§§§05

VAN.$$E06=§§§06

#IF PARAMS=6

VAN.$$E07=-1

#ELS

VAN.$$E07=§§§07

#EIF

'-----------------------------------------------------------

' The Loop-Initialization is necessary because we jump out of the Loop many times.

VAN.$$LOP=$$E02

FOR.$$LOP|$$E02|$$E04

  ANA.GetPixelColor|$$E01|$$LOP|$$E03|$$C01

'-----------------------------------------------------------

  IVV.$$E06!-1

' This Command will return only the largest Color-Distance of the 3 values: Red, Green and Blue

    ANA.Color_Diff_Max|$$C01|$$E05|$$ERA

    IVV.$$ERA<$$E06      

      VAN.$$ERC=1

    ELS.

      VAN.$$ERC=0

    EIF.

  ELS.

    VAN.$$ERC=1

  EIF.

'-----------------------------------------------------------

  IVV.$$E07!-1

' This Command will return only the largest Color-Distance of the 3 values: Red, Green and Blue

    ANA.Color_Diff_MIN|$$C01|$$E05|$$ERA

    IVV.$$ERA<$$E07

      VAN.$$ERD=1

    ELS.

      VAN.$$ERD=0

    EIF.

  ELS.

    VAN.$$ERD=1

  EIF.

'-----------------------------------------------------------

  CAL.$$ERM=$$ERC+$$ERD

  IVV.$$ERM=2       

    VAN.$$XPA=$$LOP

    GTO.Leave_Macro_§§§98

  EIF.    

NEX.

'-----------------------------------------------------------

VAN.$$XPA=-1

:Leave_Macro_§§§98

PUV.$$XPA

'-----------------------------------------------------------

SAV.Restore

END%

'-----------------------------------------------------------

'

'-----------------------------------------------------------

'

' Parameter:

' 1 - Number of the IR

' 2 - Start-Pos X 

' 3 - Pos Y 

' 4 - End-Pos X

' 5 - Colordif - Min (or 0)

'

' If 5 matches, result is returned on TOS

' 000 - X-Pos End of Color-Block

' or -1 if not found

'

: %Find_End_of_Color_Block_X 4

SAV.Save|$$LOP|$$E01|$$E02|$$E03|$$E04|$$E05|$$E06|$$ERM|$$ERC|$$ERD|$$ERA|$$XPA

#IF PARAMS<4

MBX.Not enough Parameter.

#EIF.

' IR - Number

VAN.$$E01=§§§01

' Startpos X

VAN.$$E02=§§§02

' Y-Pos

VAN.$$E03=§§§03

' X-Pos End

VAN.$$E04=§§§04

' Maximum Color Diff to end Block

VAN.$$E05=§§§05

#IF PARAMS=4

VAN.$$E05=0

#ELS

VAN.$$E05=§§§05

#EIF

'-----------------------------------------------------------

' Get Block Color

ANA.GetPixelColor|$$E01|$$E02|$$E03|$$E06

'-----------------------------------------------------------

' The Loop-Initialization is necessary because we jump out of the Loop many times.

VAN.$$LOP=$$E02

FOR.$$LOP|$$E02|$$E04

  ANA.GetPixelColor|$$E01|$$LOP|$$E03|$$C01

  

' This Command will return only the largest Color-Distance of the 3 values: Red, Green and Blue

  ANA.Color_Diff_Max|$$C01|$$E06|$$ERA

  IVV.$$ERA>$$E05

    VAN.$$XPA=$$LOP      

    GTO.Leave_Macro_§§§98

  EIF.

NEX.

'-----------------------------------------------------------

VAN.$$XPA=-1

:Leave_Macro_§§§98

PUV.$$XPA

'-----------------------------------------------------------

SAV.Restore

END%

'-----------------------------------------------------------

'

'-----------------------------------------------------------

' Calculate a Color between two Colors in steps

'

' 1 - Color A

' 2 - Color B

' 3 - Steps total

' 4 - Aktueller Step von 0 ... P3

' Resulting Color is on TOS 000 

'

: %Calculate_Color_between 4

SAV.Save|$$E01|$$E02|$$E03|$$E04|$$E05|$$RST|$$GST|$$BST|$$RAA|$$GAA|$$BAA

#IF PARAMS<4

MBX.Not enough Parameter.

#EIF.

' Color A

VAN.$$E01=§§§01

' Color B

VAN.$$E02=§§§02

' Steps total

VAN.$$E03=§§§03

' Current Step, First step is "0"

VAN.$$E04=(§§§04-1)

IVV.$$E01=$$E02

  VAR.$$E05=$$E01

  GTO.Leave_Macro_§§§98

EIF.

'-----------------------------------------------------------

ANA.Split_RGB|$$E01|$$R01|$$G01|$$B01

ANA.Split_RGB|$$E02|$$R02|$$G02|$$B02

 

CAL.$$RST=($$R01-$$R02)/$$E03

CAL.$$GST=($$G01-$$G02)/$$E03

CAL.$$BST=($$B01-$$B02)/$$E03

 

CAL.$$RAA=$$RST*$$E04|a

IVV.$$R01>$$R02

  CAL.$$RAA=&HFF-$$RAA   

EIF.

 

CAL.$$GAA=$$GST*$$E04|a

IVV.$$G01>$$G02

  CAL.$$GAA=&HFF-$$GAA   

EIF.

 

CAL.$$BAA=$$BST*$$E04|a

IVV.$$B01>$$B02

  CAL.$$BAA=&HFF-$$BAA

EIF.

 

ANA.Combine_RGB|$$RAA|$$GAA|$$BAA|$$E05

'-----------------------------------------------------------

:Leave_Macro_§§§98

PUV.$$E05

'-----------------------------------------------------------

SAV.Restore

END%

'-----------------------------------------------------------

'

'-----------------------------------------------------------

' Calculate a Color between two Pixels in Steps

' 1 - IR

' 2 - XPos - Pixel A 

' 3 - XPos - Pixel B

' 4 - YPos

' 5 - Actual X-Pos

' Resulting Color is on TOS 000 

'

: %Calculate_Color_between_X 4

SAV.Save|$$E01|$$E02|$$E03|$$E04|$$E05|$$C01|$$C02|$$STO|$$CST

#IF PARAMS<5

MBX.Not enough Parameter.

#EIF.

' IR

VAN.$$E01=§§§01

' XPos A

VAN.$$E02=§§§02

' XPos B

VAN.$$E03=§§§03

' YPos

VAN.$$E04=§§§04

' Current Pos

VAN.$$E05=§§§05

'-----------------------------------------------------------

ANA.GetPixelColor|$$E01|$$E02|$$E04|$$C01

ANA.GetPixelColor|$$E01|$$E03|$$E04|$$C02

' Error-Conditions

IVV.$$E01=$$E02

  GTO.Leave_MacroA_§§§98

EIF.

IVV.$$C01=$$C02

  GTO.Leave_MacroA_§§§98

EIF.

' Swap variables if needed (P1 needs to be > P2)

IVV.$$E01>$$E02

  VAR.$$E04=$$E01

  VAR.$$E01=$$E02

  VAR.$$E02=$$E04

EIF.

' Calc total Steps

CAL.$$STO=$$E03-$$E02

' Current Step

CAL.$$CST=$$E05-$$E02

%Calculate_Color_between $$C01|$$C02|$$STO|$$CST

POP.$$E05

'-----------------------------------------------------------

GTO.Leave_MacroB_§§§98

:Leave_MacroA_§§§98

VAR.$$E05=$$C01

:Leave_MacroB_§§§98

'PRT.Leaving with $$E05

PUV.$$E05

'-----------------------------------------------------------

SAV.Restore

END%

'-----------------------------------------------------------

'

'-----------------------------------------------------------

 

 

'-----------------------------------------------------------

'

'-----------------------------------------------------------