Jump to content
Sign in to follow this  
ofLight

Find All PixelCheckSums

Recommended Posts

ofLight

Search for all instances of a CheckSum and return Total and all of thier CoOrds.

Im sure there are many versions of this, but here is my attempt.

PixelCheckSumFindAll.au3

;===============================================================================
; Function Name:    _PixelCheckSumFindAll
; Description:      Finds all instances of Checksum within a given area and returns array with Total and all locations X and Y.
; Parameters:       $Pixel          Colour value of pixel to find (in decimal or hex).
;                   $chksum         Previously generated checksum value of the region per(PixelChecksum)
;                   $CS_l           left coordinate of rectangle. (amount to subtract)
;                   $CS_t           Top coordinate of rectangle. (amount to subtract)
;                   $CS_r           Right coordinate of rectangle. (amount to add)
;                   $CS_b           Bottom coordinate of rectangle. (amount to add)
;                   $SB_l           left coordinate of total area to search. Default is 0 (far left side of screen)
;                   $SB_t           top coordinate of total area to search. Default is 0 (top most Side of screen)
;                   $SB_r           Right coordinate of total area to search. Default is @DesktopWidth (Far Right side of screen)
;                   $SB_b           Bottom coordinate of total area to search. Default is @DesktopHeight (Bottom most side of screen)
; Syntax:           _PixelCheckSumFindAll($pixel, $chksum, $CS_l, $CS_t, $CS_r, $CS_b[, $SB_l, $SB_t, $SB_r, $SB_b])
; Author(s):        ofLight
; Returns:          $Array[0][0] = 0 on failure, $Array on success
;===============================================================================
Func _PixelCheckSumFindAll($pixel,$chksum,$CS_l,$CS_t,$CS_r,$CS_b,$SB_l=0,$SB_t=0,$SB_r=@DesktopWidth,$SB_b=@DesktopHeight)
    $SB_b_Max = $SB_b
    $SB_l_Max = $SB_l
    Dim $Array[2][2]
    $Array[0][0] = "0"
    $Count = "0"
    While 1
        $xy = PixelSearch($SB_l,$SB_t,$SB_r,$SB_b,$pixel, 0)
        If @error And $SB_b = $SB_b_Max Then
            SetError(1)
            Return $Array
        ElseIf @error Then
            $SB_t = $SB_b + 1
            $SB_b = $SB_b_Max
            $SB_l = $SB_l_Max
        ElseIf $chksum = PixelCheckSum($xy[0]-$CS_l, $xy[1]-$CS_t, $xy[0]+$CS_r, $xy[1]+$CS_B) Then 
            $Count = $Count+1
            $Array[0][0] = $Count
            ReDim $Array[$Count+1][2]
            $Array[$Count][0] = $xy[0]
            $Array[$Count][1] = $xy[1]
            
            $SB_t = $xy[1]
            $SB_b = $SB_t
            $SB_l = $xy[0] + 1
        Else
            $SB_t = $xy[1]
            $SB_b = $SB_t
            $SB_l = $xy[0] + 1
        EndIf
    WEnd
EndFuncoÝ÷ ØLZ^RǺÚ"µÍÚ[ÛYH   Ø^K]LÉÝÂÚ[ÛYH Ô^[ÚXÚÔÝ[Q[[]LÉÝÂÝÙ^TÙ]
    ][ÝÉÎMÉ][ÝË   ][Ý×ÑÛÉ][ÝÊBÝÙ^TÙ]
    ][Ýß][ÝË    ][Ý×ÜXÛÜ   ][ÝÊBÝÙ^TÙ]
    ÌÎNÞÙØßIÌÎNË   ÌÎN×Ñ^] ÌÎNÊBØØ[   ÌÍÛÙÈHI][ÝÔÜÈÚY
Ý[HÈXÛÜ ][ÝÈ  [È [ÈÂBBBI][ÝÔÜÈ[HÈ[    ][ÝÈ  [È [ÈÂBBBI][ÝÚ[ÈØ]Y[^[[I][ÝÈØØ[  ÌÍÞK ÌÍØÝ[^[Ú[HBIÌÍÞHH[ÝÙQÙ]ÜÊ
BIÌÍØÝ[^[H^[Ù]ÛÛÜ   ÌÍÞVÌK  ÌÍÞVÌWJBUÛÛ
    ][ÝÔ^[ÛÛÜH ][ÝÈ  [È ÌÍØÝ[^[ [È [È ÌÍÛÙÊBTÛY
L
BÑ[[ÈÑÛÊ
BIÌÍÜ^[H[
[TXY
    ][ÝËÌLÔ^[[I][ÝË   ][ÝÓXZ[][ÝË ][ÝÔ^[ÛÛÜ][ÝË    ][ÝËLI][ÝÊJBIÌÍØÚÜÝ[HH[
[TXY
    ][ÝËÌLÔ^[[I][ÝË   ][ÝÓXZ[][ÝË ][ÝÔ^[ÚXÚÔÝ[I][ÝË   ][ÝËLI][ÝÊJBIÌÍÐ^HHÔ^[ÚXÚÔÝ[Q[[
    ÌÍÜ^[    ÌÍØÚÜÝ[K
K
K
K
JBWÐ^QÜ^J ÌÍÐ^JB[[Â[ÈÜXÛÜ

BR[UÜ]J    ][ÝËÌLÔ^[[I][ÝË   ][ÝÓXZ[][ÝË ][ÝÔ^[ÛÛÜ][ÝË    ÌÍØÝ[^[
BSØØ[ ÌÍØÚÜÝ[HH^[ÚXÚÜÝ[J    ÌÍÞVÌKMK    ÌÍÞVÌWKMK   ÌÍÞVÌJÍK   ÌÍÞVÌWJÍJBR[UÜ]J  ][ÝËÌLÔ^[[I][ÝË   ][ÝÓXZ[][ÝË ][ÝÔ^[ÚXÚÔÝ[I][ÝË   ÌÍØÚÜÝ[JBUÛÛ
    ÌÎNÈ ÌÎNÉ[ÐÔ[ÉÌÎNÈÐUQ  ÌÎNÉ[ÐÔ[ÉÌÎNÈ  ÌÎNÊBTÛY
L
B[[Â[ÈÑ^]

BUÛÛ
    ÌÎNÈ ÌÎNÉ[ÐÔ[ÉÌÎNÈVUSÈ ÌÎNÉ[ÐÔ[ÉÌÎNÈ  ÌÎNÊBTÛY
L
BQ^][[
Edited by ofLight

There is always a butthead in the crowd, no matter how hard one tries to keep them out.......Volly

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×