# Version History

#### 13.2.2:

- Fixed issues with RawBitmap conversion from gg and ggAA color spaces to Xojo Picture.

#### 13.2:

- Added VariantResult to the EinhugurRuntime.Task class.
- Fixed non working cancel on CancelationToken usage with the RawBitmapConverter class.
- Added FloodFillTask method to the RawBitmap class.

#### 13.1.3:

- Fixed issue where the 13.1.2 changes did not make it into the Windows build of the plugin.

#### 13.1.2:

- Fixed memory leak in the Task.WaitFor routine.

#### 13.1:

- Fixed problem with RawBitmap auto convert from RRGGBBAA to RGBA in internal routine that other plugins use.
- Fixed crash with RawBitmap manual convert of RRGGBBAA to RGBA.

#### 13.0:

- Added Linux ARM 64 build. (Works for Xojo 2022r4 or later).

#### 12.0.1:

- Removed link to Gtk3 in the RawBitmpaConverterConsole.

#### 12.0:

- Added Windows Arm64 build support.

#### 11.5.2:

- All Constructors on the RawBitmap class can now throw OutOfMemoryException instead of silently failing.

#### 11.5.1:

- Fixed problem with the Windows segment.

#### 11.5:

- Added Advanced FloodFill method with tolerance support to the RawBitmap class.
- Added Fill method to the RawBitmap class.
- Added GenerateFloodFillMask for magic wand functionality to the RawBitmap class.
- Added DrawPixel method to the RawBitmap class (not to be confused with the existing Set Pixel where Set Pixel sets the pixel while DrawPixel will alpha blend with existing pixels as needed).
- FillRect on the RawBitmap class now supports alpha blending.
- FillRect on RawBitmap class now supports 16bits per channel RGB color spaces and 16 bit per channels Gray color spaces.
- DrawLine on RawBitmap class now supports alpha blending.
- DrawLine on RawBitmap class now supports 16bits per channel RGB color spaces and 16 bit per channels Gray color spaces.
- Added Bitmap property on the RawBitmapMask class.
- Added DrawRect method to the RawBitmap class.
- Added DrawEllipse method to the RawBitmap class.
- Added RawBitmapException class.

#### 11.3.2:

- Fixed bug in RawBitmap.Crop.

#### 11.3:

- Added CancellationToken class to the EinhugurRuntime module.
- Added SetCancellationToken method to the EinhugurRuntime.Task class.
- Added BooleanResult property to the EinhugurRuntim.Task class.
- Added IntegerResult property to the EinhugurRuntim.Task class.
- Added DoubleResult property to the EinhugurRuntim.Task class.

#### 11.2:

- Added Xojo thread space initialiser hook in the EinhugurRuntime.Task.
- EinhugurRuntime.Task can now throw Xojo exceptions.

#### 11.1:

- Added Crop method to the RawBitmap class.
- Fixed critical memory issue when Drawing RawBitmap into RawBitmap.

#### 11.0.5:

- Fixed problem where RawBitmapConverterConsole was not seen correctly by Xojo 2020r2 or later.

#### 11.0.4:

- iOS Simulator target is now Universal binary.

#### 11.0.2:

- Fixed crash issue with RawBitmapConverter.ToPicture.

#### 11.0.1:

- Fixed problem with Task.RunAsync.

#### 11.0:

- Added EinhugurRuntime.Task class.

#### 10.1.5:

- Retargeted iOS build to set same minimum version as Xojo sets (iOS 11 instead of iOS 13).

#### 10.1.3:

- Added missing Mac ARM segments.

#### 10.1.2:

- Fixed issue in RawBitmapConverter on iOS where Gray bitmap would come fully alpha when converting to Picture.

#### 10.1:

- Added iOS compile for the RawBitmapConverter class.

#### 10.0:

- Added Apple Silicon compile for the CMYKColor class. (Not tested).
- Added Apple iOS compile for the CMYKColor class.
- Added Apple Silicon compile for the GenericColor class. (Not tested).
- Added Apple iOS compile for the GenericColor class.
- Added Apple Silicon compile for the Point class. (Not tested).
- Added Apple iOS compile for the Point class.
- Added Apple Silicon compile for the RGBColor class. (Not tested).
- Added Apple iOS compile for the RGBColor class.
- Added Apple Silicon compile for the RawBitmap class. (Not tested).
- Added Apple iOS compile for the RawBitmap class.
- Added Apple Silicon compile for the RawBitmapDescription class. (Not tested).
- Added Apple iOS compile for the RawBitmapDescription class.
- Added Apple Silicon compile for the RawBitmapMask class. (Not tested).
- Added Apple iOS compile for the RawBitmapMask class.
- Added Apple Silicon compile for the Rectangle class. (Not tested).
- Added Apple iOS compile for the Rectangle class.
- Added Apple Silicon compile for the UInt8Range class. (Not tested).
- Added Apple iOS compile for the UInt8Range class.
- Added Apple Silicon compile for the ZipEngineHandle class. (Not tested).
- Added Apple iOS compile for the ZipEngineHandle class.
- Added Apple Silicon compile for the RawBitmapConverter class. (Not tested). - Note no iOS yet.
- Added Apple Silicon compile for the RawBitmapConverterConsole class. (Not tested). - Note no iOS yet.

#### 9.8.3:

- Creating RawBitmap now gracefully reports out of memory issue by setting the IsValid property to False after creating the RawBitMap.

#### 9.8.2:

- Fixed bug in IRawBitmapWriterV2 interface where UTIConformsTo had no return value.
- Fixed bug in IRawBitmapReaderV2 interface where UTIConformsTo had no return value.

#### 9.8:

- Added ProgressDelegate to the RawBitmap class.
- Added LossyFormat property to the RawBitmapDescription class.

#### 9.7:

- Added IRawBitmapReaderV2 interface.
- Added IRawBitmapWriterV2 interface.
- Added RawBitmapDescription class.

#### 9.6:

- Changed Rect class to Rectangle and put in the namespace EinhugurGeometry.
- Added EinhugurGeometry namespace to the Point class.
- Added SetPixelComponents method to the RawBitmap class.
- Added GetPixelComponents function to the RawBitmap class.

#### 9.5:

- Added Unpremultiply method to support images with alpha channel coming from CGImage.
- Added support for the soon to come Plugins Pro application from Tim Parnell.
- Added Premultiplied property to the RawBitmap class.
- Added Unknown constant to the ColorSpaces enum.

#### 9.4:

- Added IRawBitmapWriter interface.
- Added IRawBitmapReader interface.
- Added preliminary support for RGBf (float) pixel maps in the RawBitmap class.
- Added IsFloatPixelmap property to the RawBitmap class.
- Added ICCColorProfileData property to the RawBitmap class.

#### 9.3.4:

- Fixed problem with RawBitmapConverter when dealing with immutable Pictures in newer Xojo versions and high resolution sittuations.

#### 9.3.2:

- Fixed problem in the RawBitmapConverter class where it was loosing DPI settings of the image when converting to RawBitmap.
- Fixed problem in the RawBitmapConverterConsole class where it was loosing DPI settings of the image when converting to RawBitmap.

#### 9.3:

- Fixed memory leak in RawBitmapConverter.FromPicture method when converting Xojo picture that has mask.
- Fixed memory leak in RawBitmapConverterConsole.FromPicture method when converting picture that has mask.
- Improved Alpha channel handling in RawBitmapConverter.FromPicture method when Xojo picture has Alhpa channel.
- Added Convert method to the RawBitmap class to convert between RawBitmap formats.

#### 9.2.2:

- Added some internal structures to the RawBitmap class to prepare for supporting new things in the PictureEffects plugin.

#### 9.2:

- Updated the drawing API for next generation of Xojo.
- Fixed drawing for some types of 16 bit per channel RawBitmap's.

#### 9.1

- Added IRawBitmapProcessorAsync interface

#### 9.0:

- Added GenericColor abstract class, so that effects can now take in either RGBColor or CMYKColor.
- RGBColor class now inherits from GenericColor.
- CMYKColor class now inherits from GenericColor.
- Fixed RawBitmapConverter.ToPicture for XRGB or XBGR and RGBX pixel formats.
- Fixed RawBitmapConverterConsole.ToPicture for XRGB or XBGR and RGBX pixel formats.

#### 8.9:

- Did minor fix in the RawBitmap.DrawBitmap method.
- Added EinhugurColors.RGBColor class, that supports 8 bit per channel and 16 bit per channel RGB colors and has automatic conversion to and from Xojo color.
- Added EinhugurColors.CMYKColor class, that supports 8 bit per channel and 16 bit per channel CMYK colors.

#### 8.8:

- Added CreateHorizontalFadingMask shared method to the RawBitmapMask class.
- Added CreateVerticalFadingMask shared method to the RawBitmapMask class.
- Added RawBitmapConverterConsole class.
- Updated the DrawBitmap method on the RawBitmap class to support properly alpha channels.
- Updated the DrawBitmap method on the RawBitmap class to support 16 bit per channel RawBitmap's.
- Updated the DrawBitmap method on the RawBitmap class to support CMYK color spaces.
- The RawBitmapMask class now supports 16bit masks. (works on both 8 bit per channel and 16 bit per channel image processing).

#### 8.7:

- Fixed the FillRectAlpha method on the RawBitmap class.
- Added support for CMYKA color space on the RawBitmap class.
- Added support for CCMMYYKK color space (16 bit per channel CMYK) on the RawBitmap class.
- Added support for CCMMYYKKAA color space (16 bit per channel CMYKA) on the RawBitmap class.
- Added support for RRGGBB (16 bit per channel RGB) color space on the RawBitmap class.
- Added support for RRGGBBAA (16 bit per channel RGBA) color space on the RawBitmap class.
- Added support for gg color space (16 bit per channel Gray) on the RawBitmap class.
- Added support for ggAA color space (16 bit per channel Gray alpha) on the RawBitmap class.
- Added Depth property to the RawBitmap class that returns the depth per channel of the RawBitmap.
- RawBitmapConverter class can now convert 16 bit per channel RGB and RGBA RawBitmap to Xojo picture.
- Added Clone method to the RawBitmap class which optionally can add a Alpha channel.

#### 8.6.2:

- Fixed critical memory error with CMYK RawBitmap's.

#### 8.6:

- The RawBitmap class has now support to contain images with CMYK color spaces.
- Added CMYK constant to the RawBitmapFormat enum on the RawBitmap class.
- Added ColorSpaces enum to the RawBitmap class.
- Added ColorSpace as ColorSpaces property to the RawBitmap class.
- Updated drawing base methods on the RawBitmap class to either support CMYK or do nothing when getting CMYK color space.
- Changed RawBitmapConverter.ToPicture to know about CMYK RawBitmaps, the ToPicture will return null when encountering such as CMYK needs to be first converted to RGB with correct ICC profiles using the Color Management plugin.
- Added HasAlphaChannel property to the RawBitmap class.

#### 8.5:

- RawBitmap's now can have ICC Color profile.
- Added HasICCColorProfile property to the RawBitmap class.
- Added ICCColorProfileName property to the RawBitmap class.
- Added ClearICCColorProfile method to the RawBitmap class.
- Added CopyICCColorProfileFrom method to the RawBitmap class.
- Added PixelAlpha getter / setter function to the RawBitmap class.
- Added FillRectAlpha function to the RawBitmap class.

#### 8.2:

- Added supporting for Picture type: pictureD2DPBGRAPtr in the RawBitMapConverter class for the ToPicture and FromPicture functions. Supporting this is very important since Xojo 2017 uses mostly this type on Windows systems for Pictures.

#### 8.1:

- The plugin now comes in two versions one for Xojo 2017r1 and older (GTK2 on Linux systems) and one for Xojo 2017r2 and newer (GTK3 on Linux systems).
- Added DrawBitmap method to the RawBitmap class.
- Added two new constructors to the RawBitmapMask class that add Polygon masking feature.

#### 8.0.2:

- Improved the ZipEngineHandle object internally to prepare for supporting the soon to be released ExcelWriter plugin.

#### 8.0:

- Added IRawBitmapProcessor interface.
- Added RawBitmapMask class.
- Added DrawLine method to the RawBitmap class.
- Added DrawLineAntialiased method to the RawBitmap class.

#### 7.9.1:

- Fixed Linux linker error in the new RawBitmapConverter class that caused the Plugin to not load at all in the Xojo Linux IDE.

#### 7.9:

- Added IProgressHandlerV2 interface.

#### 7.8:

- Added a ZipEngineHandle for plugins to be able to share the internal Zip engine from the e-CryptIt Engine. (This is for example used when enabling compression in the PDF Plugin)

#### 7.7:

- Fixed memory leak in one of the constructors for RawBitmap. (This affected for example Barcode reading and PDF generation).
- Added new class called RawBitmapConverter.

#### 7.6:

- Changed compiler on Linux 32 bit to Clang.
- Changed compiler on Linux 64 bit to Clang.
- Changed the compiler on Linux ARM 32 bit to Clang.

#### 7.5:

- Added 64 bit compile support for Mac targets.
- Added 64 bit compile support for Windows targets.
- Added 64 bit compile support for Linux targets.
- Added ARM compile support for Linux targets.
- Added a IEncryptionBlockAlgorithm interface.

#### 7.0:

- Redesigned the RawBitmap class which has been re-purposed to do high accuracy image manipulations on memory block level on Desktop and console platforms with no dataloss in mind and interoperability with other 3rd party plugins.
- Greatly reduced dependencies on Linux so the plugin can work in Linux console application where no GUI libraries are installed in the Linux system.

#### 6.5.1:

- Fixed the plugin to work with more modern Linux distros.

#### 6.5:

- Now also ships with a Xojo plugin. The Xojo plugin comes in the new Xojo format and is compiled with newer SDK.
- Plugin segments come code signed on MacOS X systems.
- Documentation now also ships as docset for the awesome Dash viewer from http://kapeli.com/dash.

#### 6.2:

- Added a UInt8Range class (used for example internally in PictureEffects plugins).
- Changed runtime libraries on Windows systems.
- Replaced some old and depreciated REALbasic plugin API's for newer ones.

#### 6.1:

- Added Cocoa compile support to all segments of the plugin.

#### 6.0:

- Fixed windows link error.
- Plugin is now linked against and dependent on libstdc++6 instead of libstdc++5 on Linux systems.

#### 5.9:

- Added support for next generation of REALbasic.

#### 5.8:

- Improved console support.

#### 5.7:

- Added a new constant - ScrollbarWidth to the GridMeasure module.
- The Universal Binary is now compiled as Bundle instead of dylib to support the new mechanism in REALbasic to load Mach-O plugins directly into memory.

#### 5.6.5:

- Added a PopUpMenu constant to the CellFactoryType module.

#### 5.6:

- Added HorizontalResolution property to the RawBitmap class.
- Added VerticalResolution property to the RawBitmap class.

#### 5.5.2:

- Fixed a problem with Rect.Union.
- Fixed a problem with Rect.Inset when the y parameter was negative value.

#### 5.5:

- Added support for MacOS X Universal Build.
- Each field in the Point class is now 32 bits on all platforms.
- Added a Operator_Add to the Point class.
- The Clone function on the Point class now returns strongly typed result.
- Removed the IntPtr property on the Point class.
- Each field in the Rect class is now 32 bits on all platforms.
- Added a Height (Read and Write) property to the Rect class.
- Added a Width (Read and Write) property to the Rect class.
- Added a new Constructor to the Rect class that takes two points.
- Added two variations of a Contains function to the Rect class.
- Added a Equal function to the Rect class.
- Added a Inset method to the Rect class.
- Added a Offset method to the Rect class.
- Added a Union method to the Rect class.
- Removed the IntPtr property on the Rect class.
- Removed the legacy DisposeGWorld global function.
- Removed the legacy KillPicture global function.
- Removed the legacy DisposePixPat global function.
- Removed the legacy QDDrawPicture global function.
- Removed the legacy UsesMenuTypeClasses global function.
- Removed the legacy DisposeRgn global function.
- Removed the legacy KillPoly global function.
- Removed legacy QuickDraw based classes such as: BitMapPtr, CIconHandle, GDHandle, GrafPtr, Handle, MenuHandle, PicHandle, PixMapHandle, PixPatHandle, PolyHandle, RgnHandle.

#### 5.1:

- Added two new constructors to the RawBitmap class.
- Added RowBytes property to the RawBitmap class.
- Added Channels property to the RawBitmap class.

#### 5.0:

- Added GridMarkerPositon constants.
- Added a RawBitmap class (undocumented and unsupported at this time, it will be documented when other plugins start using it)
- The Point and Rect classes as well as their methods and properties have been marked as console safe.
- All Mach-O segments in the plugin are now compiled with a different compiler to support future roadmap and long term goals for the plugin.
- All Windows segments in the plugin are now compiled with a different compiler to support future roadmap and long term goals for the plugin.
- Changed internal segmentation of the plugin.
- Improved the documentation.

#### 4.8:

- Added GridMeasure constant module to support the Einhugur Grid controls.
- The Grid constant modules are now also compiled into the Linux target to support future REALbasic Linux IDE.

#### 4.7:

- * The plugin was altered so it could pass preliminary unit tests for next generation of REALbasic.
- * Changed the name of the WindowPtr class to WindowPointer to avoid a conflict with a REALbasic reserved Keyword.

#### 4.6:

- Added the IProgressHandler interface.

#### 4.5:

- The Mach-O target was re-linked without flat namespace to enable multiple Mach-O plugins to run in the same project.
- The plugin now comes with high quality HTML documentation instead of RB Plugin Plunger documentation.

#### 4.4:

- Added Grid constants modules to support the Einhugur Grid controls.

#### 4.3:

- Added Mach-O compile support. (Feature for REALbasic 5.5.2 and later)

#### 4.2:

- Version info not available.

#### 4.1:

- Version info not available.

#### 4.0:

- Added Linux support.

#### 3.3:

- Fixed class offsets to make the TypeLib fully compatible with REALbasic 5.5

#### 2.6.5:

- Added support for REALbasic 5.1.

#### 2.6.1:

- Added a empty default constructor to the Rect class.
- Added a empty default constructor to the Point class.

#### 2.6:

- SetRect was removed
- Constructur was added new Rect(x1,y1,x2,y2)
- SetPt was removed
- Constructor was added new Point(x,y)
- h property on Point was be changed to x.
- v property on Point was be changed to y.
- Added UseMenuTypeClasses method
- Rect is now 16 bytes instead of 8 (Only 8 usable on MacOS for Toolbox compatibility)
- Point is now 8 bytes instead of 4 (Only 4 usable on MacOS for Toolbox compatibility)

#### 2.5.5:

- Fixed a problem that could sometimes make Carbon REALbasic, crash on launch when running Classic OS.
- Added lots of info to the built in documentation.

#### 2.5.4:

- Fixed Illegal Carbon accessor to rgnBBox
- rgnSize will now always return 0 on Carbon size Carbon has no concept for this.

#### 2.5.3:

- Internal testing version which was only released to few users.

#### 2.5.2:

- Version info not available.

#### 2.5.1:

- Fixed a problem under OS X 10.1 with Handle.IntPtr (also goes for all classes that inherit from Handle)

#### 2.5:

- Added MacOS X support
- A small segment was moved from QuickDrawLib to increase stability. (This means that TypeLib 2.5 may not be used together with QuickDrawLib older than version 3.5)
- Added UsesCoreTypeClasses method, which is there to avoid a REALbasic compile bug where REALbasic sometimes forgets to compile plugins segments into built applications. (See the documentation for more detail on usage)

#### 2.2:

- Changed the segment order to fool the RB link error bug with Class extensions. (This enables projects that could not compile because of this bug to compile properly)
- Linked with a newer version of the Carbon headers.

#### 2.1:

- MacOS Xb1 support added.

####