getEditor()
for getting assigned editor(if exists) into IApplication and corresponding implementations.Refresh()
method in IControl and all implementations where it is required to allow to force control to clear their internal drawing buffers.Refresh()
method in IBuiltInControl and all implementations where it is required to allow to force built-in control to clear their internal drawing buffers.Refresh()
methods in IForm and all implementations where it is required to allow to force all form controls to clear their internal drawing buffers.<<
for convenient output as source code.dTolerance
, dPI
, dDoublePI
, and dHalfPI
. Please note that dTolerance
is not equal to Tolerance
.double
, long long
, PointL, PointD, RectL, RectD arguments.long long
, double
, PointL, PointD, RectL, RectD respectively.getPixelFast()
and setPixelFast()
into ITextureData interface and corresponding platform implementations. This methods work faster for reading and writing pixel values but they are not safe. You should be sure you are not trying to access data outside of a texture.ITexture **clip
in Render()
method. It is being used for more optimal creation/destroying of clipping textures.ShowHint()
methods to IForm and IControl which can be used to show hints immediately at the desired position.Scale
property for CheckerMaterial control of OpenGL package.setLeftBorderColor()
, setTopBorderColor()
, setRightBorderColor()
, and setBottomBorderColor()
were setting color incorrectly.is_empty()
.isEmpty()
.begin()
, end()
and other methods similar to the ones in std::vector
.LeftTop
.Tolerance
global constant to compare variants storing floating point values.IEditor *Editor;
.Translate()
, Scale()
, RotateX()
, RotateY()
, and RotateZ()
.^
to *.Variant::vtChar
, Variant::vtAnsiChar
, and Variant::vtAnsiString
variant types have been removed as they are never were used. Corresponding constructors and operators were removed as well. Also element access operator with String
argument has been removed because there is wchar_t*
argument method which acts the same way. And finally Variant get(const String &key) const
method was replaced with Variant get(const wchar_t *key) const
one(argument type has been changed).getPreview()
from class CProperty. They should be overriden by derived classes.PROPERTY
and PROPERTY_STATE
.CaptionColor
, CaptionShadowColor
, CaptionShadowShift
, and CaptionShadowRadius
of ProgressBar control.double
type variables has been replaces with float
type. It is done for optimization and avoid unnecessary data type conversion as all graphics engines use float instead of double and OpenGL one in paticular is used as main rendering engine in the framework. The float
type accuracy is more than enough for drawing user interfaces which is a primary goal of the Nitisa framework.Point
type has been replaced with Point union with similar members.PointB
type has been replaced with PointB union with similar members.PointF
type has been replaced with PointF union with similar members.Rect
type has been replaced with Rect union with similar members.RectF
type has been replaced with RectF union with similar members.RectB
type has been replaced with RectB union with similar members.RectC
type has been replaced with RectC union with similar members.Vector
type has been replaced with Vector union with similar members.Matrix
type has been replaced with Matrix union with similar members.Color
type has been replaced with Color union with similar members.Bitmap
type has been replaced with Bitmap class with similar members.BitmapMask
type has been replaced with BitmapMask class with similar members.isEqual()
and isNotEqual()
.POINT's
comparison operators were replaced with methods is_equal()
and is_not_equal()
.
You cannot use Editor
global variable in your code anymore. Instead you may get it from Application
instance by its getEditor()
method. This change also affect GetPackage()
function which should be exported by packages in order to allow Form Builder to manage the package. The second argument(which was the editor instance) is also removed.
Such types as Point
, PointF
, PointB
, Rect
, RectF
, RectB
, RectC
, Vector
, Matrix
, Color
, Bitmap
, BitmapMask
are now separate classes as mentioned above. To use them you may need to include their own header files. Which one you can find at the corresponding pages. Thease new classes are equivalent to the former ones but there are some little changes. Here they are.
LeftTop()
in rectangles anymore. Instead there is a member LeftTop
.Width()
is now width()
.Height()
is now height()
.Validate()
is now validate()
.is_equal()
and is_not_equal()
you need to use global functions IsEqual and IsNotEqual.
Instead of removed global functions Translate()
, Scale()
, RotateX()
, RotateY()
, and RotateZ()
use Matrix class corresponding methods.
When multiplying vector on matrix and matrix on matrix use operators *
and *=
instead of former ^
and ^=
. They are described at Matrix class documentation page. If you want for some reason former functionality, you still may use TTensor template which was formely used as Vector
and Matrix
aliases.
As many property and argument types has been changed from integer to floating point types you have to do the same adjustments in your code. This change is usually simple but may take a while. Most often you only have to change int
to float, Point
to PointF
, and Rect
to RectF
and use proper constant values as well. Please also pay attension on comparison. Using operators ==
and !=
is not correct for floating point values. For objects like PointF
and RectF
you will get compilation error as we removed those operators from them and thus adjusting your code will be very easy. But for the simple float
data type those operators still exists and you have to check every place where you compare floats. For comparison of floating point values and objects please use IsEqual(), IsNotEqual() and other similar global comparison functions.
Instead of removed comparison operators of TRANSFORM structure please use comparison functions IsEqual() and IsNotEqual().
Instead of default implementation of methods getPreview()
of class CProperty you have to implement them in your derived property classes(if you have your own custom properties). This methods should return the string which will be displayed in property editor of the Form Builder so these methods implementation is very easy.
Instead of using removed templates PROPERTY
and PROPERTY_STATE
you now have to derive your properties from CProperty and CPropertyState classes and implement all abstract methods yourself. Those methods are really simple and their meaning is quite clear from their names and comments. All existing properties have already been adapted to the change and you only need to change your custom properties if you have ones.
Instead of removed Software Renderer and coresponding Windows GDI Renderer use usual Windows OpenGL Renderer. The removed renderer was to slow to be used in production environments and proved to be rarely used. That is why it was removed. If your project highly depends on it and migrating to OpenGL renderer is not an option you may postpone upgrading your project(s) to this version. Anyway, you can write to our support center if you think the Software Renderer should not be deleted and we will consider restoring it and further maintaining.
You can pass nullptr as clip
argument value in IListItemService's Render()
method. In this case it will work as it was before introducing new argument. But if you draw several list items of the same size it is better to use it as it omits several texture creation/destruction commands. You may use it in the following way
ITexture **clip{ nullptr };
...
for (int i = 0; i < list_item_count; i++)
{
...
list_item[i]->QueryService()->Render(matrix, block, last_pass, clip);
...
}
if (clip)
clip->Release();
...
As the Bitmap and BitmapMask data order was changed you have to change all you inline images you put into a source code. Previously data was arranged as array of rows. Now it is arranged as array of columns. The change is really easy. For example, if before you had 3x2 image set as following:
const Color IconData[3 * 2]{
CColors::Red, CColors::Red, CColors::Red,
CColors::Green, CColors::Green, CColors::Green
};
const Color IconData[3 * 2]{
CColors::Red, CColors::Green,
CColors::Red, CColors::Green,
CColors::Red, CColors::Green
};
Instead of removed caption properties of ProgressBar control use its Font
property.