What's new in SCAR Divi Portable 3.38.01
Mar 11, 2013
- Bugfixes:
- Target Client showed copies of it's rows
- TPAFromBox accepted invalid boxes
- TSCARBitmap.Resize, TSCARBitmap.Rotate(Ex) and TSCARBitmap.Skew(Ex) disabled AlphaBlend
- GetFiles and GetFolders did not behave correctly
- TPAFilterPoints throws a div by 0 error when an empty filter/extract array is passed
- New:
- TSCARBitmap.ResizeEx
- procedure AddPostFile(const iHttp: Integer; const FieldName, FileName, ContentType: string);
- procedure TPAExtractPoints(var TPA: TPointArray; const FilterTPA: TPointArray);
New in SCAR Divi Portable 3.38.00 (Mar 11, 2013)
- Bugfixes:
- Possibly critical fixes for several TIA functions: TIAIntersect, TIAUnique and TIAInTIA (+ TEA equivalents)
- Saving an untitled file doesn't update the program title
- Bug with certain data sets in several TIA and TEA functions
- New:
- procedure ReplaceColors(const Bmp: TSCARBitmap; const Colors: TIntArray; const NewColor: Integer);
- procedure ReplaceColorsTol(const Bmp: TSCARBitmap; const Colors: TIntArray; const NewColor, Tol: Integer);
- function RandomTIA(const Count, Range: Integer): TIntArray;
- function RandomTIAEx(const Count, Range: Integer; const AllowDuplicates: Boolean): TIntArray;
- procedure OffsetTEA(var TEA: TExtArray; const Offset: Extended);
- function TEAInsert(var TEA: TExtArray; const Index: Integer; const Ext: Extended): Integer;
- function InvertColor(const Color: Integer): Integer;
- TSCARBitmap.Invert
- function SpiralPoint(const Pos: Cardinal): TPoint;
- function SpiralPointEx(const Pos: Cardinal; const Origin: TPoint): TPoint;
- function SpiralPos(const Pt: TPoint): Cardinal;
- function SpiralPosEx(const Pt, Origin: TPoint): Cardinal;
- procedure SortTPASpiral(var TPA: TPointArray);
- procedure SortTPASpiralEx(var TPA: TPointArray; const Point: TPoint);
- function CopyTIA(const TIA: TIntArray): TIntArray;
- function CopyTIAEx(const TIA: TIntArray; const Index, Count: Integer): TIntArray;
- function ATPADelete(var ATPA: T2DPointArray; const Index: Integer): TPointArray;
- function ATIADelete(var ATIA: T2DIntArray; const Index: Integer): TIntArray;
- function ATPAContains(const ATPA: T2DPointArray; const TPA: TPointArray): Boolean;
- function ATIAContains(const ATIA: T2DIntArray; const TIA: TIntArray): Boolean;
- function PermuteTPA(const TPA: TPointArray): T2DPointArray;
- function PermuteTIA(const TIA: TIntArray): T2DIntArray;
- procedure TIAFreq(const TIA: TIntArray; out Values, Frequencies: TIntArray);
- procedure TIARelFreq(const TIA: TIntArray; out Values: TIntArray; out frequencies: TExtArray);
- procedure TPAFreq(const TPA: TPointArray; out Values: TPointArray; out Frequencies: TIntArray);
- procedure TPARelFreq(const TPA: TPointArray; out Values: TPointArray; out Frequencies: TExtArray);
- procedure TEAFreq(const TEA: TExtArray; out Values: TExtArray; out Frequencies: TIntArray);
- procedure TEARelFreq(const TEA: TExtArray; out Values, Frequencies: TExtArray);
- procedure TEARange(const TEA: TExtArray; out Lo, Hi: Extended);
- function CombineTEA(const TEA1, TEA2: TExtArray): TExtArray;
- procedure SortTEA(var TEA: TExtArray);
- procedure SortTEAEx(var TEA: TExtArray; const Ext: Extended);
- function TEAMean(const TEA: TExtArray): Extended;
- function TEASum(const TEA: TExtArray): Extended;
- procedure TEARemove(var TEA: TExtArray; const Ext: Extended);
- procedure TEARemoveEx(var TEA: TExtArray; const Ext: Extended; const All: Boolean);
- function CopyTEA(const TEA: TExtArray): TExtArray;
- function CopyTEAEx(const TEA: TExtArray; const Index, Count: Integer): TExtArray;
- procedure TIAAdd(var TIA: TIntArray; const Value: Integer); (Alias: OffsetTIA)
- procedure TIAAddEx(var TIA: TIntArray; const Values: TIntArray);
- procedure FillTIA(var TIA: TIntArray; const Int: Integer);
- procedure FillTIAEx(var TIA: TIntArray; const Values: TIntArray);
- procedure TIASubtract(var TIA: TIntArray; const Value: Integer);
- procedure TIASubtractEx(var TIA: TIntArray; const Values: TIntArray);
- procedure TIAMultiply(var TIA: TIntArray; const Value: Integer);
- procedure TIAMultiplyEx(var TIA: TIntArray; const Values: TIntArray);
- procedure TIADivide(var TIA: TIntArray; const Value: Integer);
- procedure TIADivideEx(var TIA: TIntArray; const Values: TIntArray);
- function TIAToTEA(const TIA: TIntArray): TExtArray;
- procedure TEAAdd(var TEA: TExtArray; const Value: Extended); (Alias: OffsetTEA)
- procedure TEAAddEx(var TEA: TExtArray; const Values: TExtArray);
- procedure FillTEA(var TEA: TExtArray; const Value: Extended);
- procedure FillTEAEx(var TEA: TExtArray; const Values: TExtArray);
- procedure TEASubtract(var TEA: TExtArray; const Value: Extended);
- procedure TEASubtractEx(var TEA: TExtArray; const Values: TExtArray);
- procedure TEAMultiply(var TEA: TExtArray; const Value: Extended);
- procedure TEAMultiplyEx(var TEA: TExtArray; const Values: TExtArray);
- procedure TEADivide(var TEA: TExtArray; const Value: Extended);
- procedure TEADivideEx(var TEA: TExtArray; const Values: TExtArray);
- procedure FillTPA(var TPA: TPointArray; const Value: TPoint);
- procedure FillTPAEx(var TPA: TPointArray; const Values: TPointArray);
- procedure Write(x);
- function RoundTEA(const TEA: TExtArray): TIntArray;
- function TruncTEA(const TEA: TExtArray): TIntArray;
- function FloorTEA(const TEA: TExtArray): TIntArray;
- function CeilTEA(const TEA: TExtArray): TIntArray;
- procedure TIAPush(var TIA: TIntArray; const Value: Integer);
- function TIAPop(var TIA: TIntArray): Integer;
- procedure TPAPush(var TPA: TPointArray; const Point: TPoint);
- function TPAPop(var TPA: TPointArray): TPoint;
- procedure TEAPush(var TEA: TExtArray; const Value: Extended);
- function TEAPop(var TEA: TExtArray): Extended;
- function TIAMedian(const TIA: Integer): Extended;
- function TEAMedian(const TEA: TExtArray): Extended;
- procedure SortTPAByColumn(var TPA: TPointArray);
- TIntegerArray = TIntArray (alias)
- TExtendedArray = TExtArray (alias)
- TStringArray = TStrArray (alias)
- TBooleanArray = TBoolArray (alias)
- procedure TIAReplace(var TIA: TIntArray; const OldValue, NewValue: nteger);
- procedure TIAReplaceEx(var TIA: TIntArray; const OldValues: TIntArray; const NewValue: Integer);
- procedure TEAReplace(var TEA: TExtArray; const OldValue, NewValue: Extended);
- procedure TEAReplaceEx(var TEA: TExtArray; const OldValues: TExtArray; const NewValue: Extended);
- procedure TPAReplace(var TPA: TPointArray; const OldPoint, NewPoint: TPoint);
- procedure TPAReplaceEx(var TPA: TPointArray; const OldPoints: TPointArray; const NewPoint: TPoint);
- procedure ReverseTEA(var TEA: TExtArray);
- function TPAZip(const XValues, YValues: TIntArray): TPointArray;
- procedure TPAUnzip(const TPA: TPointArray; out XValues, YValues: TIntArray);
- SCAR338-00_UP define (Where 00 is the minor version)
- function ReadFileLine(const FileNum: Integer; out Str: string): Boolean;
- function WriteFileLine(const FileNum: Integer; const Str: string): Boolean;
- Tweaks:
- TPAMiddle => TPAMean
- SortATPAByMiddle => SortATPAByMean
- SortATPAByMiddleEx => SortATPAByMeanEx
- Huge performance improvements for StrToTIA
- TIAMean now throws an exception when an empty array is passed
- Removed:
- procedure TPASort(var TPA: TPointArray); (alias: SortTPA)
- procedure TPASortEx(var TPA: TPointArray; const Point: TPoint); (alias: SortTPAEx)
- function AMax(const TIA: TIntArray): Integer; (alias: TIAMax)
- function AMin(const TIA: TIntArray): Integer; (alias: TIAMin)
- function TPAMiddleEx(const TPA: TPointArray; out x, y: Integer): Boolean;
- procedure BubbleSort(var Values: TIntArray);
- procedure BubbleSortB(var Values: TIntArray);
- procedure QuickSort(var Values: TIntArray);
- function Average(const Values: TExtArray): Extended; (alias: TEAMean)
New in SCAR Divi Portable 3.37.02 (Nov 26, 2012)
- Bugfixes:
- Possibly critical fixes for several TIA functions: TIAIntersect, TIAUnique and TIAInTIA (+ TEA equivalents)
- Saving an untitled file doesn't update the program title
- Bug with certain data sets in several TIA and TEA functions
- New:
- procedure ReplaceColors(const Bmp: TSCARBitmap; const Colors: TIntArray; const NewColor: Integer);
- procedure ReplaceColorsTol(const Bmp: TSCARBitmap; const Colors: TIntArray; const NewColor, Tol: Integer);
- function RandomTIA(const Count, Range: Integer): TIntArray;
- function RandomTIAEx(const Count, Range: Integer; const AllowDuplicates: Boolean): TIntArray;
- procedure OffsetTEA(var TEA: TExtArray; const Offset: Extended);
- function TEAInsert(var TEA: TExtArray; const Index: Integer; const Ext: Extended): Integer;
- function InvertColor(const Color: Integer): Integer;
- TSCARBitmap.Invert
- function SpiralPoint(const Pos: Cardinal): TPoint;
- function SpiralPointEx(const Pos: Cardinal; const Origin: TPoint): TPoint;
- function SpiralPos(const Pt: TPoint): Cardinal;
- function SpiralPosEx(const Pt, Origin: TPoint): Cardinal;
- procedure SortTPASpiral(var TPA: TPointArray);
- procedure SortTPASpiralEx(var TPA: TPointArray; const Point: TPoint);
- function CopyTIA(const TIA: TIntArray): TIntArray;
- function CopyTIAEx(const TIA: TIntArray; const Index, Count: Integer): TIntArray;
- function ATPADelete(var ATPA: T2DPointArray; const Index: Integer): TPointArray;
- function ATIADelete(var ATIA: T2DIntArray; const Index: Integer): TIntArray;
- function ATPAContains(const ATPA: T2DPointArray; const TPA: TPointArray): Boolean;
- function ATIAContains(const ATIA: T2DIntArray; const TIA: TIntArray): Boolean;
- function PermuteTPA(const TPA: TPointArray): T2DPointArray;
- function PermuteTIA(const TIA: TIntArray): T2DIntArray;
- procedure TIAFreq(const TIA: TIntArray; out Values, Frequencies: TIntArray);
- procedure TIARelFreq(const TIA: TIntArray; out Values: TIntArray; out Frequencies: TExtArray);
- procedure TPAFreq(const TPA: TPointArray; out Values: TPointArray; out Frequencies: TIntArray);
- procedure TPARelFreq(const TPA: TPointArray; out Values: TPointArray; out Frequencies: TExtArray);
- procedure TEAFreq(const TEA: TExtArray; out Values: TExtArray; out Frequencies: TIntArray);
- procedure TEARelFreq(const TEA: TExtArray; out Values, Frequencies: TExtArray);
- procedure TEARange(const TEA: TExtArray; out Lo, Hi: Extended);
- function CombineTEA(const TEA1, TEA2: TExtArray): TExtArray;
- procedure SortTEA(var TEA: TExtArray);
- procedure SortTEAEx(var TEA: TExtArray; const Ext: Extended);
- function TEAMean(const TEA: TExtArray): Extended;
- function TEASum(const TEA: TExtArray): Extended;
- procedure TEARemove(var TEA: TExtArray; const Ext: Extended);
- procedure TEARemoveEx(var TEA: TExtArray; const Ext: Extended; const All: Boolean);
- function CopyTEA(const TEA: TExtArray): TExtArray;
- function CopyTEAEx(const TEA: TExtArray; const Index, Count: Integer): TExtArray;
- procedure TIAAdd(var TIA: TIntArray; const Value: Integer); (Alias: OffsetTIA)
- procedure TIAAddEx(var TIA: TIntArray; const Values: TIntArray);
- procedure FillTIA(var TIA: TIntArray; const Int: Integer);
- procedure FillTIAEx(var TIA: TIntArray; const Values: TIntArray);
- procedure TIASubtract(var TIA: TIntArray; const Value: Integer);
- procedure TIASubtractEx(var TIA: TIntArray; const Values: TIntArray);
- procedure TIAMultiply(var TIA: TIntArray; const Value: Integer);
- procedure TIAMultiplyEx(var TIA: TIntArray; const Values: TIntArray);
- procedure TIADivide(var TIA: TIntArray; const Value: Integer);
- procedure TIADivideEx(var TIA: TIntArray; const Values: TIntArray);
- function TIAToTEA(const TIA: TIntArray): TExtArray;
- procedure TEAAdd(var TEA: TExtArray; const Value: Extended); (Alias: OffsetTEA)
- procedure TEAAddEx(var TEA: TExtArray; const Values: TExtArray);
- procedure FillTEA(var TEA: TExtArray; const Value: Extended);
- procedure FillTEAEx(var TEA: TExtArray; const Values: TExtArray);
- procedure TEASubtract(var TEA: TExtArray; const Value: Extended);
- procedure TEASubtractEx(var TEA: TExtArray; const Values: TExtArray);
- procedure TEAMultiply(var TEA: TExtArray; const Value: Extended);
- procedure TEAMultiplyEx(var TEA: TExtArray; const Values: TExtArray);
- procedure TEADivide(var TEA: TExtArray; const Value: Extended);
- procedure TEADivideEx(var TEA: TExtArray; const Values: TExtArray);
- procedure FillTPA(var TPA: TPointArray; const Value: TPoint);
- procedure FillTPAEx(var TPA: TPointArray; const Values: TPointArray);
- procedure Write(x);
- function RoundTEA(const TEA: TExtArray): TIntArray;
- function TruncTEA(const TEA: TExtArray): TIntArray;
- function FloorTEA(const TEA: TExtArray): TIntArray;
- function CeilTEA(const TEA: TExtArray): TIntArray;
- procedure TIAPush(var TIA: TIntArray; const Value: Integer);
- function TIAPop(var TIA: TIntArray): Integer;
- procedure TPAPush(var TPA: TPointArray; const Point: TPoint);
- function TPAPop(var TPA: TPointArray): TPoint;
- procedure TEAPush(var TEA: TExtArray; const Value: Extended);
- function TEAPop(var TEA: TExtArray): Extended;
- function TIAMedian(const TIA: Integer): Extended;
- function TEAMedian(const TEA: TExtArray): Extended;
- procedure SortTPAByColumn(var TPA: TPointArray);
- TIntegerArray = TIntArray (alias)
- TExtendedArray = TExtArray (alias)
- TStringArray = TStrArray (alias)
- TBooleanArray = TBoolArray (alias)
- procedure TIAReplace(var TIA: TIntArray; const OldValue, NewValue: Integer);
- procedure TIAReplaceEx(var TIA: TIntArray; const OldValues: TIntArray; const NewValue: Integer);
- procedure TEAReplace(var TEA: TExtArray; const OldValue, NewValue: Extended);
- procedure TEAReplaceEx(var TEA: TExtArray; const OldValues: TExtArray; const NewValue: Extended);
- procedure TPAReplace(var TPA: TPointArray; const OldPoint, NewPoint: TPoint);
- procedure TPAReplaceEx(var TPA: TPointArray; const OldPoints: TPointArray; const NewPoint: TPoint);
- procedure ReverseTEA(var TEA: TExtArray);
- function TPAZip(const XValues, YValues: TIntArray): TPointArray;
- procedure TPAUnzip(const TPA: TPointArray; out XValues, YValues: TIntArray);
- SCAR338-00_UP define (Where 00 is the minor version)
- function ReadFileLine(const FileNum: Integer; out Str: string): Boolean;
- function WriteFileLine(const FileNum: Integer; const Str: string): Boolean;
- Tweaks:
- TPAMiddle => TPAMean
- SortATPAByMiddle => SortATPAByMean
- SortATPAByMiddleEx => SortATPAByMeanEx
- Huge performance improvements for StrToTIA
- TIAMean now throws an exception when an empty array is passed
- Removed:
- procedure TPASort(var TPA: TPointArray); (alias: SortTPA)
- procedure TPASortEx(var TPA: TPointArray; const Point: TPoint); (alias: SortTPAEx)
- function AMax(const TIA: TIntArray): Integer; (alias: TIAMax)
- function AMin(const TIA: TIntArray): Integer; (alias: TIAMin)
- function TPAMiddleEx(const TPA: TPointArray; out x, y: Integer): Boolean;
- procedure BubbleSort(var Values: TIntArray);
- procedure BubbleSortB(var Values: TIntArray);
- procedure QuickSort(var Values: TIntArray);
- function Average(const Values: TExtArray): Extended; (alias: TEAMean)
New in SCAR Divi Portable 3.37.01 (Nov 23, 2012)
- Bugfixes:
- Small bug in TSCARWindowClient.Clone
- GetColor on occasion returned -1 when it shouldn't
- TPAFilterTriangle and TPAExtractTriangle didn't resize the TPA after modifying it
New in SCAR Divi Portable 3.37.00 (Nov 19, 2012)
- Bugfixes:
- Double clicking on a form element in the form designer will no longer assign an event internally
- SCAR process sometimes did not terminate
- Some selection features in color tools did not work properly
- Dragging color tools items from/to stored colors sometimes lagged or froze SCAR
- Small memory leak when loading png images
- The new FindColor(s)SpiralTol(Ex) and FindColor(s)TPATol(Ex) functions did not return the correct results
- Menu in DTM editor was detachable
- GetCurrentKeyState and GetToggleKeyState did not function correctly for TSCARWindowClient
- Some system colors were imported incorrectly
- Several dialog functions were malfunctioning
- TSCARBitmap.DC changed when TSCARBitmap.Flip() ot TSCARBitmap.Rotate() were called
- TSCARBitmap.LoadFromStr set the entire bitmap to transparent
- Error in firewall config when adding a rule
- Picked colors were added in reverse to the list
- Switching tabs in form designer didn't update the property editor
- Successfully executed/stopped execution was printed out before ScriptTerminate was called
- New:
- Rename button in color tools rightclick menu
- procedure TPAEdge(var TPA: TPointArray);
- Capture Client button in DTM editor Edit menu
- TTPAArtifacts = set of (taXAxis, taYAxis)
- function BmpFromTPA(const TPA: TPointArray; const FgCol, BgCol: Integer): TSCARBitmap;
- function BmpFromTPAEx(const TPA: TPointArray; const FgCol, BgCol, AfCol: Integer; const Scale: Single; const Artifacts: TTPAArtifacts): TSCARBitmap;
- function TSCARBitmap.GetPixels(const TPA: TPointArray): TIntArray;
- procedure TSCARBitmap.SetPixels(const TPA: TPointArray; const Color: Integer);
- procedure TSCARBitmap.Skew(const Horiz, Vert: Single);
- function LibsPath: string;
- function ScriptsPath: string;
- procedure TSCARBitmap.RotateEx(const Angle: Extended; const Resize: Boolean);
- procedure TSCARBitmap.SkewEx(const Horiz, Vert: Single; const Resize: Boolean);
- function StrToPoint(const Str: string): TPoint;
- function StrToPointDef(const Str: string; const Default: TPoint): TPoint;
- function PointToStr(const Point: TPoint): string;
- function StrToBox(const Str: string): TBox;
- function StrToBoxDef(const Str: string; const Default: TBox): TBox;
- procedure ExpandBox(var Box: TBox; const SizeChange: Integer);
- procedure OffsetBox(var Box: TBox; const XOffset, YOffset: Integer);
- function TPAEquals(const TPA1, TPA2: TPointArray): Boolean;
- function TIAEquals(const TIA1, TIA2: TIntArray): Boolean;
- function TEAEquals(const TEA1, TEA2: TExtArray): Boolean;
- Added all DateUtils routines
- function BoxCenter(const Box: TBox): TPoint;
- procedure TPADistToPoint(const TPA: TPointArray; const Point: TPoint; out MinDist, MaxDist: Extended);
- procedure TPADistToPointEx(const TPA: TPointArray; const Point: TPoint; out MinDist, MaxDist: Extended; out MinPoint, MaxPoint: TPoint);
- Option to toggle template completion
- TSCARWindowClient.Scancodes
- Tweaks:
- TSCARBitmap's SaveToBmp, SaveToJpeg and SaveToPng now creates the target folder if it does not exist
- It is now possible to ctrl+click to add an item to the selection in color tools
- Huge performance improvements for all TPAFilterX and TPAExtractX functions
- Huge performance improvements for TPAIntersect and TIAIntersect
- CreateMessageDialog tied into resource manager for forms
- Added thread-safety for CreateMessageDialog, MessageDlg, MessageDlgPos, TaskMessageDlg, TaskMessageDlgPos, ShowMessage, ShowMessageFmt, ShowMessagePos, InputBox and InputQuery
- Removed the HelpCtx parameter from MessageDlg, MessageDlgPos, TaskMessageDlg and TaskMessageDlgPos
- ImageBox/InputBox in Target Client renamed to ImageArea/InputArea for consistency
- More accurate rotation algorithm for TSCARBitmap.Rotate()
- The databox in the color picker is now wider to accommodate the large coordinates on modern screens
- Moved color squares in the color picker's databox to the left to be consistent with the datapicker
- Color picker magnifier now has red corners around the center pixel, the bitmap picker has been adjusted accordingly
- The databox in the color picker now repositions around your cursor when it reaches the edges of the monitor your cursor is currently on
- function Distance(const X1, Y1, X2, Y2: Integer): Extended; (now returns extended)
- Editing the name of items in color tools is no longer possible through clicking
- The delete key now allows you to delete items from color tools as well
- You can now group colors (and groups) together into groups in the color tools
- Tabs in the form designer are now draggable
- When a script is forcefully terminated, ScriptTerminate is no longer called
- SCAR will restart after 3 error dialogs in 1 minute
- Exceptions in a ThreadSafeCall will no longer crash SCAR
New in SCAR Divi Portable 3.36.00 (Oct 31, 2012)
- Bugfixes:
- The TEA functions were cut out of the engine
- InputQuery threw an access violation
- Some specific functions did not show up in the function list
- New:
- function FindColorsTPA(out X, Y: Integer; const Colors: TIntArray; const TPA: TPointArray): Boolean;
- function FindColorsTPATol(out X, Y: Integer; const Colors: TIntArray; const TPA: TPointArray; const Tol: Integer): Boolean;
- function FindColorsTPAEx(out Points: TPointArray; const Colors: TIntArray; const TPA: TPointArray): Boolean;
- function FindColorsTPATolEx(out Points: TPointArray; const Colors: TIntArray; const TPA: TPointArray; const Tol: Integer): Boolean;
- function GetActiveWindow: Hwnd;
- procedure InvertTPA(var TPA: TPointArray);
- function Odd(const Value: Int64): Boolean;
- function Even(const Value: Int64): Boolean;
- Color Tools with the ability to store colors, name them and more... (Replaces color history)
- Tweaks:
- procedure MoveMouseEx(const X, Y, MouseSpeed: Integer);
- InvertTPA => ReverseTPA
- InvertTIA => ReverseTIA
- InvertATPA => ReverseATPA
- Default mousespeed changed from 25 to 20
- Huge performance improvements for TPAUnique, TPAFilterPoints, TPAInTPA, TIAUnique, TIAInTIA, TEAUnique and TEAInTEA
- Tweaked ReverseTPA, ReverseATPA and ReverseTIA
- Holding Ctrl while picking a color lets you pick another one
- You can now change the order of open script tabs by dragging them
New in SCAR Divi Portable 3.35.03 (Oct 3, 2012)
- Improvements:
- New SQLite3 engine, full SQLite3 support is now available (FOREIGN KEY, VACUUM, ...)
New in SCAR Divi Portable 3.35.02 (Sep 7, 2012)
- Bugfixes:
- PregMatch was exported incorrectly
- Distance didn't return a correct value for large input values
- CountBitmap had a tolerance parameter
- StrToTPA caused a stack overflow on big strings
- StrToTPA didn't parse negative values correctly
- All new bitmap search functions skipped bitmaps aligned to the right and bottom of the client area
New in SCAR Divi Portable 3.35.01 (Jul 31, 2012)
- Bugfixes:
- GetKeyState didn't detect keys properly for TSCARWindowClient
- TSCARBitmap.Resize didn't change the size of the bitmap canvas
New in SCAR Divi Portable 3.35.00 (Jul 24, 2012)
- Bugfixes:
- The study modifier wasn't implemented correctly in the preg functions
- Picture to string tool sometimes shrunk a pasted bitmap
- Internal issue with the preprocessor
- "Update bitmaps" didn't show the script as modified when bitmaps were updated
- New:
- function BoxToStr(const Box: TBox): string;
- RESOURCE_MANAGEMENT preprocessor option (can only disable resourcemanagement for TSCARObject subclasses)
- TSCARClient = class(TSCARObject);
- TSCARWindowClient = class(TSCARClient);
- function GetClient: TSCARClient;
- function SetClient(const Client: TSCARClient): TSCARClient;
- procedure KeyDown(const Key: Char);
- procedure KeyUp(const Key: Char);
- procedure MoveMouseExpert(const X, Y, Gravity, Wind, MinWait, MaxWait, MaxStep, TargetArea: Extended);
- procedure MoveMouseEx(const X, Y, RX, RY, MouseSpeed: Integer);
- procedure MoveMouse(const X, Y: Integer); {MouseSpeed = 25}
- procedure ClickMouseEx(const X, Y: Integer; const Btn: TMouseButton; const Interval: Integer);
- procedure MoveMouseBox(const Box: TBox);
- procedure MoveMouseBoxEx(const Box: TBox; const MouseSpeed: Integer);
- procedure PressVKey(const VKey: Byte);
- procedure PressVKeyEx(const VKey: Byte; const Interval: Integer);
- procedure PressKey(const Key: Char);
- procedure PressKeyEx(const Key: Char; const Interval: Integer);
- procedure TypeTextEx(const Str: string; const UseNumpad, UseDelays: Boolean);
- procedure TypeText(const Str: string);
- VK_XBUTTON1, VK_XBUTTON2, VK_CAPITAL, VK_KANA, VK_HANGUL, VK_JUNJA, VK_FINAL, VK_HANJA, VK_KANJI, VK_CONVERT
- VK_NONCONVERT, VK_ACCEPT, VK_MODECHANGE, VK_LWIN, VK_RWIN, VK_APPS, VK_SLEEP, VK_NUMPAD0-VK_NUMPAD9
- VK_F13-VK_F24, VK_NUMLOCK, VK_SCROLL, VK_LSHIFT, VK_RSHIFT, VK_LCONTROL, VK_RCONTROL, VK_LMENU, VK_RMENU
- VK_BROWSER_BACK, VK_BROWSER_FORWARD, VK_BROWSER_REFRESH, VK_BROWSER_STOP, VK_BROWSER_SEARCH, VK_BROWSER_FAVORITES
- VK_BROWSER_HOME, VK_VOLUME_MUTE, VK_VOLUME_DOWN, VK_VOLUME_UP, VK_MEDIA_NEXT_TRACK, VK_MEDIA_PREV_TRACK
- VK_MEDIA_STOP, VK_MEDIA_PLAY_PAUSE, VK_LAUNCH_MAIL, VK_LAUNCH_MEDIA_SELECT, VK_LAUNCH_APP1, VK_LAUNCH_APP2
- function GetKeyState(const VKey: Byte): Boolean;
- function GetCurrentKeyState(const VKey: Byte): Boolean;
- function GetToggleKeyState(const VKey: Byte): Boolean;
- function FindColors(out X, Y: Integer; const Colors: TIntArray; const XS, YS, XE, YE: Integer): Boolean;
- function FindColorsTol(out X, Y: Integer; const Colors: TIntArray; const XS, YS, XE, YE, Tol: Integer): Boolean;
- function FindColorsEx(out Points: TPointArray; const Colors: TIntArray; const XS, YS, XE, YE: Integer): Boolean;
- function FindColorsTolEx(out Points: TPointArray; const Colors: TIntArray; const XS, YS, XE, YE, Tol: Integer): Boolean;
- function FindColorsSpiral(const SX, SY: Integer; out X, Y: Integer; const Colors: TIntArray; const XS, YS, XE, YE: Integer): Boolean;
- function FindColorsSpiralTol(const SX, SY: Integer; out X, Y: Integer; const Colors: TIntArray; const XS, YS, XE, YE, Tol: Integer): Boolean;
- function FindColorsSpiralEx(const SX, SY: Integer; out Points: TPointArray; const Colors: TIntArray; const XS, YS, XE, YE: Integer): Boolean;
- function FindColorsSpiralTolEx(const SX, SY: Integer; out Points: TPointArray; const Colors: TIntArray; const XS, YS, XE, YE, Tol: Integer): Boolean;
- function CountColors(const Colors: TIntArray; const XS, YS, XE, YE: Integer): Integer;
- function CountColorsTol(const Colors: TIntArray; const XS, YS, XE, YE, Tol: Integer): Integer;
- TSCARBitmap = class(TSCARObject);
- procedure FloodFill(const Bmp: TSCARBitmap; const X, Y, Color: Integer);
- procedure FloodFillTol(const Bmp: TSCARBitmap; const X, Y, Color, Tol: Integer);
- function FloodFillEx(const Bmp: TSCARBitmap; const X, Y: Integer): TPointArray;
- function FloodFillTolEx(const Bmp: TSCARBitmap; const X, Y, Tol: Integer): TPointArray;
- procedure TPAFilterTriangle(var TPA: TPointArray; const X1, Y1, X2, Y2, X3, Y3: Integer);
- procedure TPAExtractTriangle(var TPA: TPointArray; const X1, Y1, X2, Y2, X3, Y3: Integer);
- function TPAFromCircle(const Center: TPoint; const Radius: Integer): TPointArray;
- function TPAFromTriangle(const X1, Y1, X2, Y2, X3, Y3: Integer): TPointArray;
- function FindColorTPA(out X, Y: Integer; const Color: Integer; const TPA: TPointArray): Boolean;
- function FindColorTPATol(out X, Y: Integer; const Color: Integer; const TPA: TPointArray; const Tol: Integer): Boolean;
- function FindColorTPAEx(out Points: TPointArray; const Color: Integer; const TPA: TPointArray): Boolean;
- function FindColorTPATolEx(out Points: TPointArray; const Color: Integer; const TPA: TPointArray; const Tol: Integer): Boolean;
- function GetMouseBtnState(const Btn: TMouseButton): Boolean;
- function GetDesktopWindow: Hwnd;
- function GetShellWindow: Hwnd;
- function FindWindows(const Title: string): THwndArray;
- function FindWindowsEx(const ParentWnd: Hwnd; const Title, ClassName: string; const RecursiveSearch, CaseSensitive, PartialMatch: Boolean): THwndArray;
- function FindWindowsPreg(const ParentWnd: Hwnd; const TitlePattern, ClassNamePattern: string; const RecursiveSearch: Boolean): THwndArray;
- function GetParentWindow(const Wnd: Hwnd): Hwnd;
- function WrapText(const Str: string; const MaxColumnSize: Integer): string;
- function GetWindowBoxEx(const Wnd: Hwnd; const ClientArea: Boolean): TBox;
- function GetWindowBox(const Wnd: Hwnd): TBox;
- function GetWindowText(const Wnd: Hwnd): string;
- function GetWindowClass(const Wnd: Hwnd): string;
- procedure GetBoxSize(const Box: TBox; out Width, Height: Integer);
- procedure SetWindowText(const Wnd: Hwnd; const Text: string);
- function GetOuterWindow(const Wnd: Hwnd): Hwnd;
- function IsWindowTopMost(const Wnd: Hwnd): Boolean;
- function IsWindowValid(const Wnd: Hwnd): Boolean;
- function FindWindowsBySize(const ParentWnd: Hwnd; const Width, Height: Integer; const RecursiveSearch: Boolean): THwndArray;
- procedure SetWindowBox(const Wnd: Hwnd; const Box: TBox);
- procedure GetWindowSizeEx(const Wnd: Hwnd; out Width, Height: Integer; const ClientArea: Boolean);
- procedure GetWindowSize(const Wnd: Hwnd; out Width, Height: Integer);
- procedure SetWindowSize(const Wnd: Hwnd; const Width, Height: Integer);
- procedure ActivateWindow(const Wnd: Hwnd);
- TSCARBitmapClient = class(TSCARClient)
- function WrapTextEx(const Str, BreakStr, BreakChars: string; MaxColumnSize: Integer): string;
- TCharArray = array of Char;
- T2DCharArray = array of TCharArray;
- Target Client panel
- Added support for type 2 Simba library architecture (function exports only)
- New library architecture
- TSCARLibraryClient = class(TSCARClient);
- Tweaks:
- procedure MouseBtnDown(const X, Y: Integer; const Btn: TMouseButton);
- procedure MouseBtnUp(const X, Y: Integer; const Btn: TMouseButton);
- procedure ClickMouse(const X, Y: Integer; const Btn: TMouseButton);
- Renamed:
- FindBitmapIn -> FindBitmap
- FindBitmapToleranceIn -> FindBitmapTol
- HoldMouse -> MouseBtnDown
- ReleaseMouse -> MouseBtnUp
- KeyDown -> VKeyDown
- KeyUp -> VKeyUp
- GetKeyCode -> CharToVKey
- MoveMouse -> SetMousePos
- FindColorTolerance -> FindColorTol
- FindColors -> FindColorEx
- FindColorsTolerance -> FindColorTolEx
- FindColorSpiralTolerance -> FindColorSpiralTol
- FindColorsSpiralTolerance -> FindColorSpiralTolEx
- FindColorsSpiral -> FindColorSpiralEx
- CountColorTolerance -> CountColorTol
- BitmapFromString -> BmpFromStrLegacy
- MakeWindowTransparent -> SetWindowTransp
- SetOnTop -> SetWindowTopMost
- FastReplaceColor -> ReplaceColor
- FastReplaceColorTolerance -> ReplaceColorTol
- FindBitmaps -> FindBitmapEx
- FindBitmapsTolerance -> FindBitmapTolEx
- CountBitmapTolerance -> CountBitmapTol
- TBooleanArray -> TBoolArray
- T2DBooleanArray -> T2DBoolArray
- T2DExtendedArray -> T2DExtArray
- T2DStringArray -> T2DStrArray
- Performance tweak for GetCursorType
- function FindColorSpiral(const SX, SY: Integer; out X, Y: Integer; const Color, XS, YS, XE, YE: Integer): Boolean;
- function FindColorSpiralTol(const SX, SY: Integer; out X, Y: Integer; const Color, XS, YS, XE, YE, Tol: Integer): Boolean;
- function FindBitmap(out X, Y: Integer; const Bmp: TSCARBitmap; const XS, YS, XE, YE: Integer): Boolean;
- function FindBitmapTol(out X, Y: Integer; const Bmp: TSCARBitmap; const XS, YS, XE, YE, Tol: Integer): Boolean;
- procedure DebugBitmap(const Bmp: TSCARBitmap);
- procedure SafeDrawBitmap(const Source: TSCARBitmap; const Dest: TCanvas; const X, Y: Integer);
- function FindDeformedBitmapToleranceRotationIn(const Bmp: TSCARBitmap; var x, y: Integer; x1, y1, x2, y2: Integer; tolerance: Integer; Range: Integer; var accuracy: Extended; AngleIntervals: Extended; StartAngle, MaxAngle: Extended; var angle: Extended): Boolean;
- function FindDeformedBitmapToleranceIn(const Bmp: TSCARBitmap; var x, y: Integer; x1, y1, x2, y2: Integer; tolerance: Integer; Range: Integer; AllowPartialAccuracy: Boolean; var accuracy: Extended): Boolean;
- function FindBitmapRotated(const Bmp: TSCARBitmap; var x, y, Angle: Integer; x1, y1, x2, y2: Integer): Boolean;
- function FindBitmapSpiral(const Bmp: TSCARBitmap; var x, y: Integer; x1, y1, x2, y2: Integer): Boolean;
- function FindBitmapSpiralTolerance(const Bmp: TSCARBitmap; var x, y: Integer; x1, y1, x2, y2: Integer; Tolerance: Integer): Boolean;
- function CreateBitmapMaskFromText(Text: AnsiString; Chars: Integer): TSCARBitmap;
- function CreateBitmapFromText(Text: AnsiString; Chars: Integer; TextColor: Integer): TSCARBitmap;
- function FindBitmapMaskTolerance(const Mask: TSCARBitmap; var x, y: Integer; x1, y1, x2, y2: Integer; Tolerance, ContourTolerance: Integer): Boolean;
- procedure ReplaceColor(const Bmp: TSCARBitmap; const Color, NewColor: Integer);
- procedure ReplaceColorTol(const Bmp: TSCARBitmap; const Color, NewColor, Tol: Integer);
- function FindBitmapEx(out Points: TPointArray; const Bmp: TSCARBitmap; const XS, YS, XE, YE: Integer): Boolean;
- function FindBitmapTolEx(out Points: TPointArray; const Bmp: TSCARBitmap; const XS, YS, XE, YE, Tol: Integer): Boolean;
- function SimilarBitmaps(const Bmp1, Bmp2: TSCARBitmap; const Tol: Integer): Boolean;
- function SimilarBitmapsEx(const Bmp1, Bmp2: TSCARBitmap; const Tol: Integer; out Diff: TPointArray): Boolean;
- function CountBitmap(const Bmp: TSCARBitmap; const XS, YS, XE, YE, Tol: Integer): Integer;
- function CountBitmapTol(const Bmp: TSCARBitmap; const XS, YS, XE, YE, Tol: Integer): Integer;
- SaveScreenshot(Ex) now changes the file extension of teh path to bmp or png depending on the options
- Removed:
- procedure ClearDebugLine(const Line: Integer);
- procedure DeleteDebugLine(const Line: Integer);
- function GetDebugLineCount: Integer;
- function GetDebugLine(const Line: Integer): AnsiString;
- procedure ReplaceDebugLine(const Line: Integer; const Str: AnsiString);
- function GetDebugText: AnsiString;
- procedure GetClientDimensions(out Width, Height: Integer);
- function GetClientWindowHandle: Hwnd;
- procedure SetClientWindowHandle(const H: Hwnd);
- function GetTargetDC: HDC;
- procedure SetTargetDC(const DC: HDC);
- procedure ResetDC;
- procedure SetDesktopAsClient;
- procedure ClickMouseMid(x, y: Integer);
- procedure HoldMouseMid(x, y: Integer);
- procedure ReleaseMouseMid(x, y: Integer);
- function FindBitmap(Bitmap: Integer; var x, y: Integer): Boolean;
- function FindBitmapTolerance(Bitmap: Integer; var x, y: Integer; Tolerance: Integer): Boolean;
- procedure SendKeysVB(const Str: AnsiString; const Wait: Boolean);
- procedure SendArrow(const Key: Byte);
- procedure SendArrowWait(const Key: Byte; const WaitTime: Integer);
- procedure MoveMouseCC(x, y, range, segments, pcount, delay: Integer);
- procedure MoveMouseSmoothFrom(x1, y1, x2, y2: Integer);
- procedure MoveMouseSmoothFromEx(x1, y1, x2, y2: Integer; minsleeptime, maxsleeptime, maxdistance, gravity, forces: Integer);
- procedure MoveMouseSmoothEx(const X, Y, MinSleepTime, MaxSleepTime, MaxDistance, Gravity, Forces: Integer);
- procedure MoveMouseSmooth(const X, Y: Integer);
- procedure ClickWindMouse(X, Y, rx, ry: Integer; Btn: TMouseButton);
- procedure ClickMouseBox(x1, y1, x2, y2: Integer; Btn: TMouseButton);
- procedure MouseBox(x1, y1, x2, y2: Integer);
- procedure SendKeys(const Str: AnsiString);
- procedure TypeKeys(const Str: AnsiString);
- procedure SendKeysWait(const Str: AnsiString; const WaitTime, RndTime: Integer);
- function IsNumpadEnabled: Boolean;
- function IsCapsLockEnabled: Boolean;
- function IsArrowDown(const Num: Byte): Boolean;
- function IsNumpadKeyDown(const Key: Byte): Boolean;
- TMusic
- function CreateMusicPlayer: TMusic;
- function FreeMusicPlayer(const Player: TMusic): Boolean;
- function FindColorSpiral2(var X, Y: Integer; const Color, XS, YS, XE, YE: Integer): Boolean;
- function GetBitmapDC(const Bmp: Integer): HDC;
- function BitmapAssigned(const iBmp: Integer): Boolean;
- function CreateBitmap(const Width, Height, Color: Integer): Integer;
- procedure GetBitmapSize(const Bmp: Integer; out Width, Height: Integer);
- function BitmapToString(Bmp: Integer): AnsiString;
- function FindTransparentBitmap(Bitmap: Integer; var x, y: Integer; TranspCol, xs, ys, xe, ye: Integer): Boolean;
- function FindTransparentBitmapTolerance(Bitmap: Integer; var x, y: Integer; TranspCol, xs, ys, xe, ye, Tol: Integer): Boolean;
- function FreeBitmap(const Bmp: Integer): Boolean;
- function CreateMirroredBitmap(const Bmp: Integer): Integer;
- function ResizeBitmap(const Bmp, Width, Height: Integer): Integer;
- function FindColorCircle(out X, Y: Integer; const Color, CX, CY, R: Integer): Boolean;
- function FindColorCircleTolerance(out X, Y: Integer; const Color, CX, CY, R, Tol: Integer): Boolean;
- function FindColorTriangle(out X, Y: Integer; const Color, X1, Y1, X2, Y2, X3, Y3: Integer): Boolean;
- function FindColorTriangleTolerance(out X, Y: Integer; const Color, X1, Y1, X2, Y2, X3, Y3, Tol: Integer): Boolean;
- function FindColorSkipCoords(out X, Y: Integer; const Color, XS, YS, XE, YE: Integer; const TPA: TPointArray): Boolean;
- function FindColorSkipCoordsTolerance(out X, Y: Integer; const Color, XS, YS, XE, YE, Tol: Integer; const TPA: TPointArray): Boolean;
- function FindColorSkipBox(out X, Y: Integer; const Color, XS, YS, XE, YE: Integer; const Box: TBox): Boolean;
- function FindColorSkipBoxTolerance(out X, Y: Integer; const Color, XS, YS, XE, YE, Tol: Integer; const Box: TBox): Boolean;
- function FindColorSkipBoxArray(out X, Y: Integer; const Color, XS, YS, XE, YE: Integer; const TBA: TBoxArray): Boolean;
- function FindColorSkipBoxArrayTolerance(out X, Y: Integer; const Color, XS, YS, XE, YE, Tol: Integer; const TBA: TBoxArray): Boolean;
- function IsMouseButtonDown(LeftButton: Boolean): Boolean;
- function IsFunctionKeyDown(Key: Byte): Boolean;
- function IsFKeyDown(Num: Byte): Boolean;
- function IsKeyDown(C: Char): Boolean;
- function GetBitmapCanvas(bitmap: Integer): TCanvas;
- function LoadBitmap(path: AnsiString): Integer;
- procedure SaveBitmap(bitmap: Integer; path: AnsiString);
- function GetBitmapCanvas(bitmap: Integer): TCanvas;
- function RegexPos(const Subject, Pattern: AnsiString): Integer;
- function FindRegex(const Subject, Pattern: AnsiString): AnsiString;
- function ReplaceRegex(const Subject, Pattern, Replacement: AnsiString): AnsiString;
- function FindWindowTitlePart(Title: AnsiString; CaseSensitive: Boolean): Boolean;
- function TBitmapFromBmp(Bitmap: TBitmap; Bmp: Integer): Boolean;
- function GetBitmapAreaColors(xs, ys, xe, ye: Integer): T2DIntArray;
- procedure CopyClientToBitmap(bitmap: Integer; xs, ys, xe, ye: Integer);
- function FastGetPixel(const Bmp, x, y: Integer): Integer;
- procedure FastSetPixel(const Bmp, x, y, Color: Integer);
- procedure FastDrawClear(bitmap: Integer; Color: TColor);
- procedure SetTargetBitmap(bitmap: Integer);
- function RotateBitmap(bitmap: Integer; angle: Extended): Integer;
- procedure SetWindowText(const Wnd: Hwnd; const Text: string);
- function FindTransparentBitmaps(Bitmap: Integer; var Points: TPointArray; TranspCol, xs, ys, xe, ye: Integer): Boolean;
- function FindTransparentBitmapsTolerance(Bitmap: Integer; var Points: TPointArray; TranspCol, xs, ys, xe, ye, Tol: Integer): Boolean;
- procedure FastDrawTransparent(x, y: Integer; SourceBitmap, TargetBitmap: Integer);
- procedure FastDrawSizeTransparent(x1, y1, x2, y2: Integer; sourcebitmap, targetbitmap: Integer);
- procedure SetBitmapFastDrawTarget(bitmap: Integer);
- procedure SetTransparentColor(bitmap, color: Integer);
- procedure SetTransparencyFromBitmap(Bitmap, AlphaMaskBitmap: Integer);
- function CountTransparentBitmap(Bitmap: Integer; TranspCol, xs, ys, xe, ye: Integer): Integer;
- function CountTransparentBitmapTolerance(Bitmap: Integer; TranspCol, xs, ys, xe, ye, Tol: Integer): Integer;
- function FindWindowBySize(Width, Height: Integer): Boolean;
- TIntegerArray (alias)
- T2DIntegerArray (alias)
- TExtendedArray (alias)
- TStringArray (alias)
- function MiddleTPA(const TPA: TPointArray): TPoint; (alias)
- function MiddleTPAEx(const TPA: TPointArray; out x, y: Integer): Boolean; (alias)
- procedure TPARemoveDupl(var TPA: TPointArray); (alias)
- function GetTPABounds(const TPA: TPointArray): TBox; (alias)
- procedure TPAInvert(var TPA: TPointArray); (alias)
- function TPACombine(const TPA1, TPA2: TPointArray): TPointArray; (alias)
- function TPARandom(const Count, XRange, YRange: Integer): TPointArray; (alias)
- procedure TPARemovePointEx(var TPA: TPointArray; const Point: TPoint; const All: Boolean); (alias)
- procedure TPARemovePoint(var TPA: TPointArray; const Point: TPoint); (alias)
- function TPAChain(const TPA: TPointArray; const Dist: Integer): T2DPointArray; (alias)
- function TPAChainEx(const TPA: TPointArray; const XMax, YMax: Integer): T2DPointArray; (alias)
- procedure ATPASortBySize(var ATPA: T2DPointArray); (alias)
- function GroupTPA(const TPA: TPointArray; const Dist: Integer): T2DPointArray; (alias)
- function TPAToATPA(const TPA: TPointArray; const Dist: Integer): T2DPointArray; (alias)
- function TPAGroupEx(const TPA: TPointArray; const XMax, YMax: Integer): T2DPointArray; (alias)
- function TPAToATPAEx(const TPA: TPointArray; const XMax, YMax: Integer): T2DPointArray; (alias)
New in SCAR Divi Portable 3.34.00 (May 28, 2012)
- Bugfixes:
- TPAUnique and TIAUnique didn't always return a unique array
- Script could not be stopped when paused
- When pausing on a breakpoint the editor showed 2 icons in the gutter instead of 1
- Preprocessor had issues with single characters on a line or between directives
- The filetype filters for the save dialog on the debug and report boxes were broken
- Tweaks:
- TPAAppend now returns the index of the appended element
- TIAAppend now returns the index of the appended element
- RewriteFile, AppendFile and OpenFile now throw an error when a file can't be accessed
- SCAR now always uses a dot as decimal separator rather than the localized one
- New:
- function TPAEmpty(const TPA: TPointArray): Boolean;
- function TPAInsert(var TPA: TPointArray; const Index: Integer; const Point: TPoint): Integer;
- function TIAEmpty(const TIA: TIntArray): Boolean;
- function TIAMax(const TIA: TIntArray): Integer; (Alias for AMax)
- function TIAMaxEx(const TIA: TIntArray; out Index: Integer): Integer;
- function TIAMin(const TIA: TIntArray): Integer; (Alias for AMin)
- function TIAMinEx(const TIA: TIntArray; out Index: Integer): Integer;
- function TIAInsert(var TIA: TIntArray; const Index, Int: Integer): Integer;
- procedure OffsetTIA(var TIA: TIntArray; const Offset: Integer);
- TExtArray = array of Extended; (Alias for TExtendedArray)
- function TEAInTEA(const TEA1, TEA2: TExtArray): Boolean;
- function TEAEmpty(const TEA: TExtArray): Boolean;
- procedure TEAUnique(var TEA: TExtArray);
- function TEAToStr(const TEA: TIntArray): string;
- function StrToTEA(const Str: string): TExtArray;
- function TEAContains(const TEA: TExtArray; const Ext: Extended): Boolean;
- function TEAPos(const TEA: TExtArray; const Ext: Integer): Integer;
- function TEAPosEx(const TEA: TExtArray; const Ext: Extended; const From: Integer): Integer;
- function TEADelete(var TEA: TExtArray; const Index: Integer): Integer;
- function TEAAppend(var TEA: TExtArray; const Ext: Extended): Integer;
- TStrArray = array of string (Alias for TStringArray)
- function CountStr(const SubStr, Str: string): Integer;
New in SCAR Divi Portable 3.33.00 (Apr 23, 2012)
- Bugfixes:
- Memory leak in client system
- Bug in client system with multi-monitor setups
- FindColorSkipCoords(Tolerance) failed when a TPA with duplicate coordinates was entered
- Types were not exported correctly from plugins
- ScriptFile and TimeRunning did not function correctly when used with ThreadSafeCall
- LoadDebugBitmap always returned False
- FindColorSpiral2 was off by a few pixels
- Tweaks:
- Improved firewall system + now powered by SQLite3 rather than XML
- New library system
- Legacy libraries now support OnLoadLib and OnUnloadLib callbacks
- Legacy libraries once again receive all previously included functions though SetFunctions except for those removed from SCAR
- BitmapAssigned, CreateBitmap, GetBitmapSize, ResizeBitmap and FreeBitmap now export to legacy libraries
- Functions updated/improved and ported to new framework:
- FindColorSkipBox(Array)(Tolerance)
- FindColorSpiral(Tolerance)
- FindColorsSpiralTolerance
- FindColorSpiral2
- New:
- procedure SortTPAByRow(var TPA: TPointArray);
- procedure TPAExtractCircle(var TPA: TPointArray; const Center: TPoint; const Radius: Extended);
- procedure TPAFilterCircle(var TPA: TPointArray; const Center: TPoint; const Radius: Extended);
- Firewall rules editor
- function CreateBitmap(const Width, Height, Color: Integer): Integer;
- function FindColorsSpiral(const X, Y: Integer; out Points: TPointArray; const Color, XS, YS, XE, YE: Integer): Boolean;
- function TPACenter(const TPA: TPointArray): TPoint;
- Removed:
- FindColorComp
- TColorComp
- MakeScreenPath
- BitmapFromMem
New in SCAR Divi Portable 3.32.01 (Apr 2, 2012)
- Bug fixes:
- Undo was no longer Ctrl+Y
- Tab no longer indented on multiline selection
- Code completion only worked with clicking
- Small bug in new settingsmanager
- Tweaks:
- CTS 3 is now 40% faster
- Opening messages tab when message available now optional
- When opening messages option is enabled, debug will be opened when running with no messages
- TIADelete now throws an error when the Index parameter is out of bounds
- Functions updated/improved and ported to new framework:
- FindColor(s)(Tolerance)
- CountColor(Tolerance)
- FindColorCircle(Tolerance)
- FindColorTriangle(Tolerance)
- FindColorSkipCoords(Tolerance)
- SimilarColors
- GetTolerance
- GetClosestColor
- New: Option to clear debug box before compiling
New in SCAR Divi Portable 3.32.00 (Mar 27, 2012)
- Bugfixes:
- Small bug in the function parser
- Execution errors were mapped incorrectly
- Bug in code completion caused by 3rd party component
- TPAFromBox didn't calculate the box size correctly
- Incorrect handling of trying to open non-existing files
- TPADensity returned an incorrect result
- Small bug in stats system causing issues with offline devices on first run
- Italic or Underline types couldn't be toggled off once toggled on for a syntax style
- All click actions now have the same effect when the primary mouse buttons are swapped
- In rare cases FindColorSpiral(Tolerance) threw access violations
- ScriptPath returned an empty string when used in ThreadSafeCall
- Improvements:
- New code editor
- Ported to Delphi XE2
- New settings manager (based on SQLite3 rather than XML)
- WriteLn/AddToReport no longer open and set focus to the Debug/Report tabs
- Additions:
- Line states
- Regex searching/replacing
- Code folding
- New Defines: SCAR_PREALPHA, SCAR_ALPHA, SCAR_BETA, SCAR_RC, SCAR_FINAL
- Removed:
- Option to print without syntax
- GetDebugParams
- SetDebugParams
- TDebugParams