SCAR Code:
VAR
bitmap:tbitmap;
form:Tform;
canvas: TCanvas;
v: TVariantArray;
bool:boolean;
B:TBOX;
TPA:tpointarray;
A1,A2:tintegerarray;
BMP,X,Y,X1,Y1,X2,Y2,A,I:INTEGER;
_0,_1,_2,_3,_4,_5,_6,_7,s,c,e,w,h:integer;
FUNCTION REMOVEDUPLICATEARRAY(ARR:TINTEGERARRAY):TINTEGERARRAY;
VAR
TEMP:TINTEGERARRAY;
BEGIN
FOR _0:=0 TO LENGTH(ARR)-1 DO
BEGIN
BOOL:=FALSE
FOR _1:=0 TO LENGTH(TEMP)-1 DO
BEGIN
IF TEMP[_1]=ARR[_0] THEN
BOOL:=TRUE;
END;
IF BOOL=FALSE THEN
BEGIN
SETLENGTH(TEMP,LENGTH(TEMP)+1)
TEMP[LENGTH(TEMP)-1]:=ARR[_0]
END;
END;
RESULT:=TEMP
END;
FUNCTION BOXTOTPA(Arr:TPOINTARRAY;bx:tbox):Boolean;
BEGIN
_0:=0
_1:=0
_2:=0
_3:=0
setlength(TPA,((bx.x2-bx.x1)+1)*((bx.y2-bx.y1)+1))
_0:=BX.X1
WHILE _0<=BX.X2 DO
BEGIN
_1:=BX.Y1
WHILE _1<=BX.Y2 DO
BEGIN
TPA[_2].x:=_0
TPA[_2].y:=_1
_2:=_2+1
_1:=_1+1
END;
_0:=_0+1
END;
END;
FUNCTION DRAWCOLORSQUARE:BOOLEAN;
BEGIN
SetTargetBitmap(bmp)
GetMousePos(X,Y)
C:=GetColor(X,Y)
Y:=0
REPEAT
X:=-1+(W-40)
REPEAT
FastSetPixel(BMP,X,Y,C)
X:=X+1
UNTIL X=W
Y:=Y+1
UNTIL Y=40
SAFEDRAWBITMAP(BMP,FORM.CANVAS,0,0)
END;
FUNCTION init:boolean;
BEGIN
form.Show
FORM.CANVAS.Pen.Color:=16777215;
END;
BEGIN ClearDebug
SetDesktopAsClient
GetClientDimensions(w,h)
bmp:=BitmapFromString(w,h,'');
CopyClientToBitmap(bmp,0,0,w-1,h-1)
form:=CreateForm
form.BorderStyle:=bsNone
form.Width:=w
form.Height:=h
ThreadSafeCall('init',v)
SafeDrawBitmap(bmp,form.Canvas,0,0)
WHILE IsMouseButtonDown(TRUE)=FALSE DO
DRAWCOLORSQUARE;
GetMousePos(X1,Y1)
WHILE IsMouseButtonDown(TRUE)DO
BEGIN
DRAWCOLORSQUARE
GetMousePos(X,Y)
form.Canvas.MoveTo(X1,Y1)
form.Canvas.LineTo(X,Y1)
Form.Canvas.LineTo(X,Y)
form.Canvas.LineTo(X1,Y)
form.Canvas.LineTo(X1,Y1)
END;
GetMousePos(X2,Y2)
IF(X1>X2)AND(Y2>Y1)THEN b:=inttobox(X2,Y1,X1,Y2);
IF(X2>X1)AND(Y1>Y2)THEN b:=inttobox(X1,Y2,X2,Y1);
IF(X1>X2)AND(Y1>Y2)THEN b:=inttobox(X2,Y2,X1,Y1);
IF(X2>X1)AND(Y2>Y1)THEN b:=inttobox(X1,Y1,X2,Y2);
BOXTOTPA(TPA,B)
A1:=GetColors(TPA)
A2:=REMOVEDUPLICATEARRAY(A1)
FOR _0:=0 TO LENGTH(A2)-1 DO
BEGIN
IF FindColorSkipBox(X,Y,A2[_0],0,0,W,H,B)=FALSE THEN
BEGIN
IF COUNTCOLOR(A2[_0],B.X1,B.Y1,B.X2,B.Y2)>A THEN
BEGIN
A:=COUNTCOLOR(A2[_0],B.X1,B.Y1,B.X2,B.Y2)
I:=A2[_0]
END;
END;
END;
WRITELN(INTTOSTR(A))
WRITELN(INTTOSTR(I))
END.
its written in scar but should work in simba