Jump to content

Search the Community

Showing results for tags 'release'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • General
    • Forum Rules
    • Announcements
    • General Discussion
    • Forum Discussion
  • Support
    • Download SCAR Divi
    • SCAR Divi Manual
    • General Help
    • Scripting Help
    • Script Help
    • Tutorials and FAQ
  • Scripts
    • Scripts For Games
    • Game Scripts
    • Other Scripts
    • Requests
  • Include Libraries
    • OSI
    • MSSL
    • GMRL
    • SSIL
    • Archive
  • Code Bin
    • Mouse & Keyboard
    • Screen & Client
    • Color, Bitmap, DTM & OCR
    • Points & Boxes
    • Files & Networking
    • Math
    • Other Snippets
  • Development
    • Development Roadmap
    • Bugtracker
    • Development Discussion
  • Games
    • RuneScape
    • Seafight
    • Other Games
  • Misc
    • Native Corner
    • Programming
    • Graphics
    • Music
    • Movies & TV

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


Location


Interests


Occupation


Studies


Skype

  1. SCAR Divi 3.41.00 has been released. This is a (seriously) overdue maintenance release. I've finally gotten around to publishing it. All affiliate installers have been removed from SCAR as well, as it seems the company providing them is no longer screening these software packages properly to exclude malware products. Downloads: SCAR Divi - Download Changelog: Bugfixes: - ReverseATPA did not function correctly - Large memory leak in the script engine - & characters in filenames were not displayed correctly in tab captions Tweaks: - Updated PascalScript engine to newer build (5d00e6cfb950a3c898d2d6813862199e5c5142c6) Enjoy! ~Freddy
  2. SCAR Divi 3.40.00 has been released. As usual, lots of new stuff, bug fixes, tweaks, ... Some of the major changes are the new added support for loading GIF files and exporting animated PNG/GIF. Lots of additions and changes were made to TSCARBitmap. SCAR Divi now also comes with a new program icon! Downloads: SCAR Divi - Download Changelog: Bugfixes: - ActivateClient restored window when maximized - TPAUnique didn't function properly - A bug in Delphi's VCL framework prevented palette based PNG imaged to be loaded correctly by TSCARBitmap - Several png formats were unsupported or lost transparency - FloodFill(Tol)(Ex) threw exceptions due to an implementation flaw - Code in form designer wasn't being highlighted - Fixed possible bugs in LoadFromJpeg and SaveToJpeg New: - procedure SortTPAByX(var TPA: TPointArray); - procedure SortTPAByY(var TPA: TPointArray); - TChrono class to measure time intervals - TObject.ClassName - procedure ClampInt(var Value: Integer; const Min, Max: Integer); - procedure ClampExt(var Value: Extended; const Min, Max: Extended); - procedure ClampTIA(var TIA: TIntArray; const Min, Max: Integer); - procedure ClampTEA(var TEA: TExtArray; const Min, Max: Extended); - function MoveFile(const OldPath, NewPath: string): Boolean; - TSCARBitmap.ClearEx - function CopyFile(const OldPath, NewPath: string): Boolean; - function IsValidPath(const Path: string): Boolean; - TBmpResampler = (brNearest, brBilinear, brBicubic, brSuperSample); - procedure TSCARBitmap.ResizeEx(const NewWidth, NewHeight: Integer; const Resampler: TBmpResampler); - procedure TSCARBitmap.ClearAlpha; - procedure TSCARBitmap.ClearAlphaEx(const Alpha: Byte); - procedure TSCARBitmap.SetAlpha(const Color: Integer; const Alpha: Byte); - procedure TSCARBitmap.SetAlphaEx(const Colors: TIntArray; const Alpha: Byte); - property TSCARBitmap.Alpha[const X, Y: Integer]: Byte; - procedure TSCARBitmap.Reduce(const MaxColors: Integer); - procedure TSCARBitmap.SetPixelsEx(const TPA: TPointArray; const Colors: TIntArray); - TFile = class(TPersistent) - TImageFile = class(TFile) - TAnimImageFile = class(TImageFile) - TPNGFile = class(TAnimImageFile) - TGIFFile = class(TAnimImageFile) - TResizeAnchor = (raCenter, raTop, raTopRight, raRight, raBottomRight, raBottom, raBottomLeft, raLeft, raTopLeft); - procedure TSCARBitmap.ResizeCanvas(const NewWidth, NewHeight: Integer; const ResizeAnchor: TResizeAnchor); - TJPEGFile = class(TImageFile) - New program icon - New about window Tweaks: - Optimized TPASpread, SortTPA(Ex) and TPARemoveEx - Rewritten SplitTPA(Ex) for added performance - TPADelete now raises an exception when the index fall outside of the array boundaries - TPARemove now removes the first point instead of the last when removing just one - Editor now shows icon to indicate modifications in tab - New clean look - Improved TSCARBitmap.SaveToPng performance - Merged in changes from official PascalScript codebase: * Support Include/Exclude for sets * Support iterating over enum types - Proper alpha channel support in TSCARBitmap - TSCARBitmap.Pixels renamed to TSCARBitmap.Pixel - TSCARBitmap.DrawTo(Ex) now has the "Blend" parameter for alpha blending - Significant performance tweaks for the PascalScript compiler - TSCARBitmap is now a descendant of TPersistent Removed: - TSCARObject - Automated resource freeing for (previous) TSCARObject descendants - function BmpFromStrLegacy(const W, H: Integer; const Str: AnsiString): TSCARBitmap; - Update Bitmaps tool - function rs_GetTextAt(const Font, x, y: Integer): AnsiString; - function rs_LoadChars(const Path: AnsiString): Integer; Enjoy! ~Freddy
  3. SCAR Divi 3.39.00 has been released. This version adds various new functions, as well as improvements to increase the performance of several functions. On top of that, there's the usual dose of bugfixes. Downloads: SCAR Divi - Download Changelog: Bugfixes: - [#2] Bug in CTS2 algoritm - [#15] FindBitmap(Tol) with bitmap larger than area did not always return False - SCAR's process didn't always terminate on some occasions - [#13] Code hints and code completion leaked memory - Small bugs in TPAFromCircle and TPAFromTriangle - TSCARBitmap.Resize occasionally lost image data when resizing transparent images - TIAPop, TEAPop and TPAPop removed the item from the front of the array rather than from the back New: - TSCARBitmap.Crop - procedure TPADeleteEx(var TPA: TPointArray; const Indexes: TIntArray); - procedure TIADeleteEx(var TIA: TIntArray; const Indexes: TIntArray); - procedure TEADeleteEx(var TEA: TExtArray; const Indexes: TIntArray); - function Diff(const Value1, Value2: Integer): Integer; - function DiffE(const Value1, Value2: Extended): Extended; - function InPolygon(const X, Y: Integer; const Points: TPointArray): Boolean; - function TPAFromPolygon(const Polygon: TPointArray): TPointArray; - function TIAPopEx(var TIA: TIntArray; const Front: Boolean): Integer; - function TEAPopEx(var TEA: TExtArray; const Front: Boolean): Extended; - function TPAPopEx(var TPA: TPointArray; const Front: Boolean): TPoint; Tweaks: - Greatly improved Explode(Ex) performance - Format uses string instead of AnsiString - Inc(Ex) and Dec(Ex) now accept Single, Double and Extended values (Increments are still integer) - TPAFromTriangle now takes TPoints rather than integers for coordinates - Optimized TSCARBitmap.Clone - Optimized TIAInsert, TEAInsert and TPAInsert Removed: - procedure TIAPush(var TIA: TIntArray; const Int: Integer); - procedure TEAPush(var TEA: TExtArray; const Value: Extended); - procedure TPAPush(var TPA: TPointArray; const Point: TPoint); Enjoy! ~Freddy
  4. SCAR Divi 3.38.01 has been released! This version comes with some bugfixes and a few useful additions. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - Target Client showed copies of it's rows - TPAFromBox accepted invalid boxes - TSCARBitmap.Resize, TSCARBitmap.Rotate(Ex) and TSCARBitmap.Skew(Ex) disabled AlphaBlend - [#197] GetFiles and GetFolders did not behave correctly - [#191] TPAFilterPoints throw 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); Enjoy! ~Freddy
  5. SCAR Divi 3.38.00 has been released. This version was scheduled to be released on the 21st and has not gone through the RC stage, however, due to a critical bug in several TIA/TEA functions (#187), I've decided to push the release as soon as possible. If any more bugs should surface, they will be fixed in 3.38.01. This build offers a huge amount of new functions which are now part of SCAR's scripting API. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - Possibly critical fixes for several TIA functions: TIAIntersect, TIAUnique and TIAInTIA (+ TEA equivalents) - [#175] Saving an untitled file doesn't update the program title - [#187] 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) Enjoy! ~Freddy
  6. SCAR Divi 3.37.02 has been released! Some more bugfixes. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - SortTPA(Ex) did not work properly for larger coordinate values - TPAEquals, TIAEquals and TEAEquals didn't work correctly Enjoy! ~Freddy
  7. SCAR Divi 3.37.01 has been released! This release fixes a couple of bugs in the 3.37.00 build. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: 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 Enjoy! ~Freddy
  8. SCAR Divi 3.37.00 has been released! I dumped 3.36 on you guys only just over 2 weeks ago, but this release features a big amount of bugfixes, tweaks and new stuff. Even though 3.36 was developed in 2 months, the changes in this new release are at least 4 times as extensive. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - [#127] Double clicking on a form element in the form designer will no longer assign an event internally - [#136] 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 - [#133] The new FindColor(s)SpiralTol(Ex) and FindColor(s)TPATol(Ex) functions did not return the correct results - [#139] Menu in DTM editor was detachable - GetCurrentKeyState and GetToggleKeyState did not function correctly for TSCARWindowClient - [#142] Some system colors were imported incorrectly - [#143] Several dialog functions were malfunctioning - TSCARBitmap.DC changed when TSCARBitmap.Flip() ot TSCARBitmap.Rotate() were called - TSCARBitmap.LoadFromStr set the entire bitmap to transparant - Error in firewall config when adding a rule - Picked colors were added in reverse to the list - [#152] 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: http://docwiki.embarcadero.com/Libraries/XE2/en/System.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 Enjoy! ~Freddy
  9. SCAR Divi 3.35.04 has been released, this release fixes a bug that managed to sneak in during the database engine change. The bug caused an exception when closing SCAR if you had files in your recenrly opened files list. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - Exception when saving recently opened files list due to database engine change Enjoy! ~Freddy
  10. SCAR Divi 3.35.03 has been released, this very minor update brings the full power of SQLite3 to SCAR (there were some limitations previously). Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Improvements: - New SQLite3 engine, full SQLite3 support is now available (FOREIGN KEY, VACUUM, ...) Enjoy! ~Freddy
  11. SCAR Divi 3.35.02 has been released, this is a bugfix release for 3.35.00. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - [#114] PregMatch was exported incorrectly - [#119] Distance didn't return a correct value for large input values - [#117] CountBitmap had a tolerance parameter - [#80] StrToTPA caused a stack overflow on big strings - StrToTPA didn't parse negative values correctly - [#116] All new bitmap search functions skipped bitmaps aligned to the right and bottom of the client area Enjoy! ~Freddy
  12. SCAR Divi 3.35.01 has been released, this is a minor bugfix release for 3.35.00. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - GetKeyState didn't detect keys properly for TSCARWindowClient - TSCARBitmap.Resize didn't change the size of the bitmap canvas Enjoy! ~Freddy
  13. The final version of SCAR Divi 3.35 has been released. This version is one of the largest updates as of yet, with numerous changes and some major overhauling of large segments of the scripting API. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: 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) Enjoy! ~Freddy
  14. The final version of SCAR Divi 3.34 has been released. This version includes a lot of new functions, tweaks and bugfixes, check the changelog for more details! Downloads: http://www.scar-divi.com/index.php?page=download Changelog: 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; Enjoy! ~Freddy
  15. The final version of SCAR Divi 3.33 is here! Finally, a firewall rules editor! Of course also a lot of other changes, check the changelog! Downloads: http://www.scar-divi.com/index.php?page=download Changelog: 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 Enjoy! ~Freddy
  16. I'm releasing SCAR Divi 3.32.01, the first bugfix release for 3.32. This version is aimed at tweaking the new editor which was introduced in 3.32. The release also has a decent amount of colorfinding functions updated to the new framework which is part of the 3.33 branch. I've integrated the framework into this version as well because the framework has extensive unit tests which seriously reduces the changes of bugs sneaking into the functions. The functions have of course also been cleaned up, some even rewritten from scratch to ensure good performance and stability. More functions will be proted to the new framework in the 3.33 release, or 3.32.02 if another bugfix release is required. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - 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 * SimilarBitmaps(Ex) New: - Option to clear debug box before compiling Enjoy! ~Freddy
  17. The final version of SCAR Divi 3.32 is here! This version offers many bugfixes and on top of that a new editor control with a lot of new features! The full changelog can be found below. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - Small bug in the function parser - [#46] Execution errors were mapped incorrectly - [#40, #42] Bug in code completion caused by 3rd party component - [#49] TPAFromBox didn't calculate the box size correctly - Incorrect handling of trying to open non-existing files - [#52] 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 - [#55] All click actions now have the same effect when the primary mouse buttons are swapped - [#37, #38] In rare cases FindColorSpiral(Tolerance) threw access violations - [#45, #50] 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 - [#48] New Defines: SCAR_PREALPHA, SCAR_ALPHA, SCAR_BETA, SCAR_RC, SCAR_FINAL Removed: - Option to print without syntax - GetDebugParams - SetDebugParams - TDebugParams Enjoy! ~Freddy
  18. SCAR Divi 3.31 Final has been released! This is a pretty giant release, featuring an entirely new system to wrap the script engine offering better performance and stability, support for ZLib compression, HEX/Base64 encoding, SQLite3 databases and more! I'm also releasing the format for encoding SCAR bitmap strings, which will make it easier to create 3rd party tools to generate, use and store the bitmap strings. I will put up specifications in the wiki soon, currently you can check out this post: http://forums.scar-divi.com/showthread.php?914-Bitmap-Encoding The post contains a script to decode the new bitmap encoding format I added which differs little from the old one aside from some small details, but is more convenient to use. Note that you can use the appropriate tool in the tools menu to update the bitmaps using an older encoding in your scripts to this new encoding. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - Small bug in loading toolbars/docks - ReadLn didn't return the result - Bug in the settingsmanager caused issues when changing the editor format - CallProc didn't return the proper result - Local variables were bugged in code completion - Bitmap updater tool had some issues with converting the b format - [#37] Bug in FindColorSpiral(Tolerance) threw access violation when initial x and y were outside of search bounds Improvements: - New interface for script engine - Improved compile/running time measurement - Vastly improved speed for displaying variable content while debugging - Updated bitmap encoding Additions: - function FileAge(const Path: string): TDateTime; - function ScriptFile: AnsiString; - function Base64ToStr(const Str: AnsiString): AnsiString; - function StrToBase64(const Str: AnsiString): AnsiString; - function HexToStr(const Str: AnsiString): AnsiString; - function StrToHex(const Str: AnsiString): AnsiString; - function ZLibCompress(const Str: AnsiString): AnsiString; - function ZLibDecompress(const Str: AnsiString): AnsiString; - function WorkspacePath: AnsiString; - const SQL_OK, SQL_ERROR, SQL_INTERNAL, SQL_PERM, SQL_ABORT, SQL_BUSY, SQL_LOCKED, SQL_FULL, SQL_ROW, SQL_DONE - function SQLOpen(const Path: string; const CreateIfNotFound: Boolean): Integer; - function SQLFree(const DBIndex: Integer): Boolean; - function SQLAssigned(const DBIndex: Integer): Boolean; - function SQLLastID(const DBIndex: Integer): Integer; - procedure SQLStart(const DBIndex: Integer; const TransactionType: TSQLTransactionType); - procedure SQLCommit(const DBIndex: Integer); - procedure SQLRollback(const DBIndex: Integer); - procedure SQLQuery(const DBIndex: Integer; const Query: string); - function SQLQueryEx(const DBIndex: Integer; const Query: string): Integer; - function SQLQueryFree(const QueryIndex: Integer): Boolean; - function SQLQueryAssigned(const QueryIndex: Integer): Boolean; - function SQLQueryStep(const QueryIndex: Integer): Integer; - function SQLQueryReset(const QueryIndex: Integer): Integer; - procedure SQLBindStr(const QueryIndex, ParamIndex: Integer; const Str: string); - procedure SQLBindInt(const QueryIndex, ParamIndex: Integer; const Int: Integer); - procedure SQLBindInt64(const QueryIndex, ParamIndex: Integer; const Int: Int64); - procedure SQLBindByte(const QueryIndex, ParamIndex: Integer; const _Byte: Byte); - procedure SQLBindBool(const QueryIndex, ParamIndex: Integer; const Bool: Boolean); - function SQLColumnStr(const QueryIndex, ColumnIndex: Integer): string; - function SQLColumnInt(const QueryIndex, ColumnIndex: Integer): Integer; - function SQLColumnInt64(const QueryIndex, ColumnIndex: Integer): Int64; - function SQLColumnByte(const QueryIndex, ColumnIndex: Integer): Byte; - function SQLColumnBool(const QueryIndex, ColumnIndex: Integer): Boolean; Removed: - BitmapFromString2 Enjoy this release! ~Freddy
  19. SCAR Divi 3.30 Final has been released! The more important changes in this release are the new library (plugin system which loads libraries with the $L directive. Next there's the updated IDE interface, new directives ($ERROR, $WARN, $HINT), SimilarBitmaps(Ex) functions and much more! Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - Small bug in the preprocessor - Bug when saving a file to a location that is no longer accessible - Bug in overloading for legacy plugins - Script exported from form designer did not show up as unsaved - Compiler errors sometimes moved the cursor to the end of a line rather than the correct position on that line - Runtime errors didn't display the correct position on the line of an error - Run To Line threw an internal error Improvements: - rs_LoadUpChars renamed to rs_LoadChars - rs_GetUpTextAt renamed to rs_GetTextAt - New plugin system (use $L(IB(RARY)) to load, supports relative paths) - Plugins folder renamed to Libraries - More customizable main GUI Additions: - New menu to add tabs or close all tabs next to existing tabs in script editor - $HINT, $WARN(ING) and $ERROR directives - function SimilarBitmaps(const Bmp1, Bmp2, Tol: Integer): Boolean; - function SimilarBitmapsEx(const Bmp1, Bmp2, Tol: Integer; out Diff: TPointArray): Boolean; Removed: - rs_GetCustomSizeUpText - rs_GetUpText Enjoy this release! ~Freddy
  20. SCAR Divi 3.28 Final is here! This version marks a great milestone in the history of SCAR, it will be the first to host the upcoming OSI include and it is one of the largest updates ever in regards to functionality. Download: http://www.scar-divi.com/?page=download Changelog: Bugfixes: - Define not closed on code completion error - Loading toolbar positions could throw an error - GetCursorType was not working properly - TPAGroup(Ex) duplicated every first entry - A bug in Floor/Ceil introduced in 3.26 [Mantis:0000029] - GroupTPA(Ex) didn't perform it's intended task - ISM API was broken - Internal bug could cause SCAR to get stuck in the memory for a while after closing - Workaround for occasional error on closing - DebugBitmap did not resize the debugwindow Improvements: - Dock positions are no longer saved - TPARemove is now an alias of TPARemovePoint, TPADelete is now the original TPARemove - Revamped SendKeysWait Additions: - function Ln(const X: Extended): Extended; - function Gauss(const x, Mean, Variance: Extended): Extended; - function RandG(const Variance: Extended): Extended; - function RandomG(const Range: Integer; const Variance: Extended): Integer; - function RandomRangeG(const AFrom, ATo: Integer; const Variance: Extended): Integer; - function RndCirclePoint(const mx, my, r: Integer): TPoint; - function RndCirclePointG(const mx, my, r: Integer; const Variance: Extended): TPoint; - function RndBoxPoint(const b: TBox): TPoint; - function RndBoxPointG(const b: TBox; const Variance: Extended): TPoint; - function GroupTPA(const TPA: TPointArray; const Dist: Integer): T2DPointArray; (Alias: TPAGroup) - function GroupTPAEx(const TPA: TPointArray; const XMax, YMax: Integer): T2DPointArray; (Alias: TPAGroupEx) - procedure OffsetTPA(var TPA: TPointArray; const XOffset, YOffset: Integer); - function RandomTPA(const Count, XRange, YRange: Integer): TPointArray; (Alias: TPARandom) - procedure SortTPA(var TPA: TPointArray); (Alias: TPASort) - procedure SortTPAEx(var TPA: TPointArray; const Point: TPoint); (Alias: TPASortEx) - function CopyTPA(const TPA: TPointArray): TPointArray; - function CopyTPAEx(const TPA: TPointArray; const Index, Count: Integer): TPointArray; - procedure SortATPABySize(var ATPA: T2DPointArray); (Alias: ATPASortBySize) - function TPAInTPARel(const TPA1, TPA2: TPointArray): Boolean; - function MergeATPA(const ATPA: T2DPointArray): TPointArray; - procedure TPAAppend(var TPA: TPointArray; const Point: TPoint); - function TPAInTPARelEx(const TPA1, TPA2: TPointArray; var TPAFound: TPointArray): Boolean; - function TIAInTIA(const TIA1, TIA2: TIntArray): Boolean; - procedure TIARange(const TIA: TIntArray; out Lo, Hi: Integer); - procedure InvertTIA(var TIA: TIntArray); - function CombineTIA(const TIA1, TIA2: TIntArray): TIntArray; - function TIAToStr(const TIA: TIntArray): AnsiString; - function StrToTIA(const Str: AnsiString): TIntArray; - procedure TIAUnique(var TIA: TIntArray); - function ATPABounds(const ATPA: T2DPointArray): TBox; - procedure ATPADimensions(const ATPA: T2DPointArray; out Width, Height: Integer); - function ATPAArea(const ATPA: T2DPointArray): Integer; - function ATPADensity(const ATPA: T2DPointArray): Extended; - function MergeATIA(const ATIA: T2DIntArray): TIntArray; - procedure SortTIA(var TIA: TIntArray); - procedure SortTIAEx(var TIA: TIntArray; const Int: Integer); - procedure SortATIABySize(var ATIA: T2DIntArray); - procedure InvertATPA(var ATPA: T2DPointArray); - procedure SortATPA(var ATPA: T2DPointArray); - procedure SortATPAEx(var ATPA: T2DPointArray; const Point: TPoint); - procedure SortATPAByMiddleEx(var ATPA: T2DPointArray; const Point: TPoint); - procedure SortATPAByMiddle(var ATPA: T2DPointArray); - function TIAContains(const TIA: TIntArray; const Int: Integer): Boolean; - function TIAPos(const TIA: TIntArray; const Int: Integer): Integer; - function TIAPosEx(const TIA: TIntArray; const Int, From: Integer): Integer; - procedure SortATPAByFirstEx(var ATPA: T2DPointArray; const Point: TPoint); - procedure SortATPAByFirst(var ATPA: T2DPointArray); - procedure TPAUnique(var TPA: TPointArray); (Alias: TPARemoveDupl) - procedure TPARemoveEx(var TPA: TPointArray; const Point: TPoint; const All: Boolean); (Alias: TPARemoveEx) - function TIADelete(var TIA: TIntArray; const Index: Integer): Integer; - procedure TIAAppend(var TIA: TIntArray; const Int: Integer); - function TIASum(const TIA: TIntArray): Integer; - procedure OffsetATPA(var ATPA: T2DPointArray; const XOffset, YOffset: Integer); - procedure TIARemoveEx(var TIA: TIntArray; const Int: Integer; const All: Boolean); - procedure TIARemove(var TIA: TIntArray; const Int: Integer); - function TIAIntersect(const TIA1, TIA2: TIntArray): TIntArray; - Clear history menu button for color history - function AppendFile(Path: AnsiString; const Shared: Boolean): Integer; - procedure TPAExtractBoxes(var TPA: TPointArray; const Boxes: TBoxArray); - procedure TPAExtractPie(var TPA: TPointArray; const Center: TPoint; const RMin, RMax, AStart, AEnd: Extended); - procedure TPAFilterPie(var TPA: TPointArray; const Center: TPoint; const RMin, RMax, AStart, AEnd: Extended); - procedure RotatePoint(var Point: TPoint; const Center: TPoint; const Angle: Extended); - procedure RotateTPA(const TPA: TPointArray; const Center: TPoint; const Angle: Extended); Most of you will notice that this version of SCAR will prompt you to install additional software at the end of the installation. This service is provided by InstallMonetizer and will provide additional revenue for me to invest in hosting, software and the upcoming scripting contests. The installation is of course fully optional, so if you don't want to install it, just decline and that'll be the end of it. I've made quite an effort to find a good company that would provide clean and decent software though, so as far as I'm aware, you won't be installing any spyware or w/e if you go through with it. I really hope everyone will enjoy this release as much as I've enjoyed coding it for you! ~Freddy
  21. SCAR Divi 3.29.02 has been released. This minor release contains a set of bugfixes and tweaks as usual. Download: http://www.scar-divi.com/?page=download Changelog: Bugfixes: - Bug in breakpoint system - Uncommon error on closing - Uptext didn't recognise 1 "random" char + tweaks Enjoy! ~Freddy
  22. SCAR Divi 3.29.01 has been released. This is a minor bugfix release with just 2 bugfixes, however, due to a critical bug in the includes manager this release was pushed as fast as possible. Download: http://www.scar-divi.com/?page=download Changelog: Bugfixes: - Bug in breakpoint system - Includes manager froze up after performing an action Have fun! ~Freddy
  23. SCAR Divi 3.29 Final has been released! The biggest changes in this version aside from bugfixes are a brand new preprocessor which will both speed up the compiling process, clean up the preprocessing and allow for new features in the future. Aside from this also a new system that gathers anonymous statistics about SCAR's usage. These will be posted 24 hours from now when the first day post release stats are in. Downloads: http://www.scar-divi.com/index.php?page=download Changelog: Bugfixes: - Client width and height was off by 1 pixel when refreshing - Bug when opening unexisting file - Stability fixes for uncommon errors - Dialog when file not found on opening displayed incorrectly Improvements: - New custom preprocessor - New much faster FindColoredAreaTolerance function Additions: - function FindColoredArea(out x, y: Integer; const Color: Integer; const xs, ys, xe, ye, MinPix: Integer): Boolean; - TByteArray = array of Byte; - T2DByteArray = array of TByteArray; - Opt-out anonymous usage data collection system - Auto-updater (downloads new setup) for the non-portable version Enjoy this release! ~Freddy
  24. The final version of SCAR Divi 3.28.01 is available for download now. Not many changes in there, 1 bugfix is all really, was a slow bug week . I held off on the release to see if any other major bugs would pop up, but so far no luck. Click here to download. Changelog: Bugfixes: - TPAFilterPie and TPAExtractPie generated wrong results for certain values Enjoy ~Freddy
  25. As promised I've released the final build of SCAR Divi 3.27. This version does not contain many big changes, mostly behind the scenes changes to increase stability and some other thing. Some new functions and such have been included. I've also recorded a video review of the changes which you can view by clicking . Changelog: Bugfixes: - TPAChain and TPAChainEx did not always return the correct result - LastPos and LastPosEx did not work properly Improvements: - Some noob-proofing - Tweaked parts of the core library - Additional stability - Settings manager was overhauled Additions: - Shortkey for the bitmap picker - SCAR327_UP directive - Deprecated keyword for regular functions - Icons for bottom tabs (lamp icon for messages lights up when messages are available) - function SplitTPA(const TPA: TPointArray; const Dist: Integer): T2DPointArray; (Alias for TPAChain) - function SplitTPAEx(const TPA: TPointArray; const XMax, YMax: Integer): T2DPointArray; (Alias for TPAChainEx) - T2DBoxArray = array of TBoxArray; - TIntArray = array of Integer; - function LastDelimiter(const Delimiters, Str: AnsiString): Integer; - function FindDelimiter(const Delimiters, Str: AnsiString): Integer; - function FindDelimiterEx(const Delimiters, Str: AnsiString; const Offset: Integer): Integer; Enjoy ~Freddy
×
  • Create New...