SUB GreyType
'**** stop stuff on TIMER
StillWorking = 1

uint CSHold

INT RGInt
INT Red
INT Green
INT Blue
INT ISVInt02
INT ISVInt01
INT ISVInt03

uint CPUint[20]
INT CBCountLoop
INT GTControl
INT GTSumat
INT GTOne
INT GTTwo
INT GTSen:'sensitivty var
STRING GTStr
INT GTDevide:'holds the intersection value
INT CBBit[11]:'represents 9 bits
INT CBBitVal:'the number of bit
STRING CBOut
INT GTFlip
INT GTFlop
char GTControlBits[10]
INT GTVert:'holds nuumber of vertical found
INT GTHoz:'holds number of horizontals found
INT GTAlong:'used for code storage
INT GTACount:'count
INT GTHold6:'hold the cell number

Get NNExpandedFile,1610,NNExpandedFields
MiscVar = NNExpandedFields.InputCode
IF LEN(MiscVar)<>9 THEN MiscVar = "111111111"
GTHold6 = SendToCreateAReply06
Get NNExpandedFile,GTHold6,NNExpandedFields


FOR ISVInt01 = 1 to 19
	CBBit[ISVInt01] = 0
NEXT ISVInt01
FOR ISVInt01 = 1 to 9
	IF MID$(MiscVar,ISVInt01,1)="1" 
		GTControlBits[ISVInt01] = 1
	ELSE
		GTControlBits[ISVInt01] = 0
	ENDIF
NEXT ISVInt01

GTDevide = NNExpandedFields.Translation4
Red = 0
Green = 0
Blue = 0
GTControl = 0
ISVInt01 = 1
ISVInt02 = 1
GTSen = NNExpandedFields.Translation3
GTStr = "GreyType...GTSen:"+str$(GTSen)
Notifications(GTStr)
GTVert = 0
GTHoz = 0


FOR GTControl = 1 to 76800
	CPUint[1] = SIFInt04[ISVInt01,ISVInt02]

	IF GTControlBits[1] = 1
		CPUint[2] = SIFInt04[(ISVInt01+1),ISVInt02]
		CPUint[3] = SIFInt04[(ISVInt01+2),ISVInt02]
	ELSE
		CPUint[2] = SIFInt04[ISVInt01,ISVInt02]
		CPUint[3] = SIFInt04[ISVInt01,ISVInt02]
	ENDIF
	IF GTControlBits[2] = 1
		CPUint[4] = SIFInt04[(ISVInt01+3),ISVInt02]
		CPUint[5] = SIFInt04[(ISVInt01+4),ISVInt02]
	ELSE
		CPUint[4] = SIFInt04[ISVInt01,ISVInt02]
		CPUint[5] = SIFInt04[ISVInt01,ISVInt02]
	ENDIF
	IF GTControlBits[3] = 1
		CPUint[6] = SIFInt04[(ISVInt01+5),ISVInt02]
		CPUint[7] = SIFInt04[(ISVInt01+6),ISVInt02]
	ELSE
		CPUint[6] = SIFInt04[ISVInt01,ISVInt02]
		CPUint[7] = SIFInt04[ISVInt01,ISVInt02]
	ENDIF
	IF GTControlBits[4] = 1
		CPUint[8] = SIFInt04[(ISVInt01+7),ISVInt02]
		CPUint[9] = SIFInt04[(ISVInt01+8),ISVInt02]
	ELSE
		CPUint[8] = SIFInt04[ISVInt01,ISVInt02]
		CPUint[9] = SIFInt04[ISVInt01,ISVInt02]
	ENDIF
'**** test
'	IF GTControlBits[6] = 1
'		CPUint[10] = SIFInt04[(ISVInt01+1),(ISVInt02+1)]
'		CPUint[11] = SIFInt04[(ISVInt01+2),(ISVInt02+2)]
'	ELSE
'		CPUint[10] = SIFInt04[ISVInt01,ISVInt02]
'		CPUint[11] = SIFInt04[ISVInt01,ISVInt02]
'	ENDIF
'**** horizontal
	IF GTControlBits[6] = 1
		CPUint[10] = SIFInt04[ISVInt01,(ISVInt02+1)]
		CPUint[11] = SIFInt04[ISVInt01,(ISVInt02+2)]
	ELSE
		CPUint[10] = SIFInt04[ISVInt01,ISVInt02]
		CPUint[11] = SIFInt04[ISVInt01,ISVInt02]
	ENDIF
	IF GTControlBits[7] = 1
		CPUint[12] = SIFInt04[ISVInt01,(ISVInt02+3)]
		CPUint[13] = SIFInt04[ISVInt01,(ISVInt02+4)]
	ELSE
		CPUint[12] = SIFInt04[ISVInt01,ISVInt02]
		CPUint[13] = SIFInt04[ISVInt01,ISVInt02]
	ENDIF
	IF GTControlBits[8] = 1
		CPUint[14] = SIFInt04[ISVInt01,(ISVInt02+5)]
		CPUint[15] = SIFInt04[ISVInt01,(ISVInt02+6)]
	ELSE
		CPUint[14] = SIFInt04[ISVInt01,ISVInt02]
		CPUint[15] = SIFInt04[ISVInt01,ISVInt02]
	ENDIF
	IF GTControlBits[9] = 1
		CPUint[16] = SIFInt04[ISVInt01,(ISVInt02+7)]
		CPUint[17] = SIFInt04[ISVInt01,(ISVInt02+8)]
	ELSE
		CPUint[16] = SIFInt04[ISVInt01,ISVInt02]
		CPUint[17] = SIFInt04[ISVInt01,ISVInt02]
	ENDIF
	'**** find grey type of central pixel
	CSHold = CPUint[1]
	RGInt = (CSHold / 256)
	Red = CSHold
	Red = Red - (RGInt * 256)
	Blue = (RGInt / 256)
	Green = RGInt
	Green = Green - (Blue * 256)
	CBCountLoop = Red + Green + Blue
	GTOne = (CBCountLoop / 3)
	GTFlip = 255
	GTFlop = 0
	FOR GTSumat = 2 TO 17
		CSHold = CPUint[GTSumat]
		RGInt = (CSHold / 256)
		Red = CSHold
		Red = Red - (RGInt * 256)
		Blue = (RGInt / 256)
		Green = RGInt
		Green = Green - (Blue * 256)
		CBCountLoop = Red + Green + Blue
		GTTwo = (CBCountLoop / 3)
		IF GTTwo > (GTOne-GTSen) AND GTTwo < (GTOne+GTSen) 

		ELSE
			IF ISVInt02 > GTDevide
				CBBitVal = (ISVInt01 / 31):'35 was the original number but 31 seems to work best
				IF CBBitVal > 0 AND CBBitVal < 11
					CBBit[CBBitVal] = CBBit[CBBitVal] + 1
				ENDIF
				DrawLine ISVInt01,GTDevide-5,ISVInt01,GTDevide+5,RGB(255,255,0),BackBuffer
			ENDIF
			IF GTSumat < 9:'used to set up vars for isf code
				GTVert = GTVert + 1
			ELSE
				GTHoz = GTHoz + 1
			ENDIF
			CSHold = RGB(0,255,0)
			IF d1CheckBox91to96[5] = 1 THEN WritePixel ISVInt01,ISVInt02,CSHold,BackBuffer
		ENDIF
	NEXT GTSumat
	ISVInt01 = ISVInt01 + 1
	IF  ISVInt01 > 301
		ISVInt01 = 1
		ISVInt02 = ISVInt02 + 1
	ENDIF
	IF ISVInt02 > 221
		GTControl = 76900
	ENDIF
NEXT GTControl

CBOut = ""
FOR ISVInt01 = 1 to 9
	IF CBBit[ISVInt01] > NNExpandedFields.Translation2
		CBOut = CBOut + "1"
		ISVInt02 = (ISVInt01*31)
		IF d1CheckBox91to96[5] = 1 THEN DrawLine ISVInt02,GTDevide-10,ISVInt02,GTDevide+10,RGB(255,0,0),BackBuffer
	ELSE
		CBOut = CBOut + "0"
	ENDIF
	if DeBugControl = 1 then DEBUGPRINT "[Ai " + d1EditBox8 + "] " +  "ColourProcessor...CBBit:" + STR$(CBBit[ISVInt01])
NEXT ISVInt01

IF d1CheckBox91to96[5] = 1 THEN MiscInt = FLIP(false)

'Get NNExpandedFile,SendToCreateAReply06,NNExpandedFields
Get NNExpandedFile,GTHold6,NNExpandedFields
NNExpandedFields.InputCode = CBOut
PUT NNExpandedFile,GTHold6,NNExpandedFields
NNExpandedFields.InputCode = ""


'***************************************************************
CBOut = "isf"+LTRIM$(str$(NNExpandedFields.Translation1))+"m"+LTRIM$(str$(NNExpandedFields.Translation3))+"o"

IF GTVert > 999
	DO
		GTVert = (GTVert / 2)
	UNTIL GTVert < 1000
ENDIF


ISVInt01 = GTVert + GTHoz
IF ISVInt01 > 0 
	CBOut = CBOut + LTRIM$(str$(GTHoz))+"h"+LTRIM$(str$(GTVert))+"v"
ENDIF
IF ISVInt01 < 0 THEN ISVInt01 = 0
GTACount = ISVInt01
GTAlong	= 0
ScroleWords = "K:   ISF:   " + "code: " + CBOut
ISVInt01 = VAL(CPCodes[1])
IF ISVInt01 < 1 THEN ISVInt01 = 0
ISVInt03 = 0
FOR ISVInt02 = 2 to ISVInt01
	IF CBOut = CPCodes[ISVInt02]

		CPCodesInt[ISVInt02] = CPCodesInt[ISVInt02] + 1
		ISVInt03 = CPCodesInt[ISVInt02]
		IF CPCodesInt[ISVInt02] > 10000 THEN CPCodesInt[ISVInt02] = 1

		ScroleWords = "K:   ISF:   " + "match position:" + STR$(ISVInt02) + ", code: " + CBOut
		GTAlong	= 1
	ENDIF
NEXT ISVInt02
IF GTAlong = 0:'only do something if something has been found
	IF GTACount > 0 
		ISVInt01 = ISVInt01 + 1
		IF ISVInt01 > 9998 THEN ISVInt01 = 2
		CPCodes[1] = STR$(ISVInt01)
		CPCodes[ISVInt01] = CBOut
	ENDIF
ELSE:'look for in bd and activate cell if  match found do i want this will it slow thing down
	IF GTACount > 0:'only do something if something has been found

		GET NNExpandedFile,1611,NNExpandedFields
		NNExpandedFields.InputCode = ConvertToBinary09(ISVInt03)
		PUT NNExpandedFile,1611,NNExpandedFields

		SwopVar = CBOut
		NNActivateCell(1611,"CPGreyType"):'rebuild	
	ENDIF
ENDIF
'***************************************************************
gosub Scrole

Notifications("Finnished")

StillWorking = 0

RETURN
ENDSUB